Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Ткните носом пожалуйста

-

Общение разработчиков

- Программирование для Perfect World, общение и обсуждене разработок

Ответ
 
Опции темы
Старый 30.07.2013, 23:55   #61
 Разведчик
Аватар для Xantrax
 
Xantrax никому не известный тип
Регистрация: 13.04.2013
Сообщений: 5
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Ткните носом пожалуйста

Цитата:
то бежишь к заданной точке.

Вот тут-то и нужна ассемблерная вставка перемещения перса к точке с координатами, пока у меня этого ни разу не получилось. Конкретно в данный момент, сижу переписываю своего недоделанного бота с VS в C++Builder6. Думаю, как восстановлю исходную функциональность, то сначала попробую простую Асм вставку снятия моба с таргета, а потом уже буду смотреть как переместить перса в координаты...
Ну, и скромно надеюсь на вашу моральную и кодовую поддержку!))

Добавлено через 1 час 51 минуту
+036C BuffsArray /Список баффов/

+ [I*0x12] Buffs, word

Ммм, word==Word==WORD==unsigned short? Список бафов - это массив бафов? А он динамически расширяется с добавлением новых бафов или он имеет статический размер? Как понять что на тебе, допустим, бафф формы лисы?

Последний раз редактировалось Xantrax; 31.07.2013 в 01:47. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 31.07.2013, 19:44   #62
 Сержант
Аватар для BritishColonist
 
BritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауру
Регистрация: 11.12.2010
Сообщений: 110
Популярность: 541
Сказал(а) спасибо: 5
Поблагодарили 66 раз(а) в 39 сообщениях
 
По умолчанию Re: Ткните носом пожалуйста

Xantrax, чтоб VS ничего не добавлял к функции инжекта, нужно описывать функцию так:

__declspec(naked) void Func()
________________
Принимаю реквесты на статьи, программы. Всё будет запилено в лучшем виде :3
  Ответить с цитированием
Старый 31.07.2013, 21:53   #63
 Разведчик
Аватар для Xantrax
 
Xantrax никому не известный тип
Регистрация: 13.04.2013
Сообщений: 5
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Ткните носом пожалуйста

Цитата:
__declspec(naked) void Func()

Где ж вы все были, когда я тут, на страницах форума Войну и Мир в 4 томах писал о моих попытках внедрить асм код?
Сейчас уже поздно, я переписываю бота под С++ Builder 6, но за информацию все равно спасибо.
  Ответить с цитированием
Старый 01.08.2013, 03:08   #64
 Сержант
Аватар для BritishColonist
 
BritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауруBritishColonist излучает ауру
Регистрация: 11.12.2010
Сообщений: 110
Популярность: 541
Сказал(а) спасибо: 5
Поблагодарили 66 раз(а) в 39 сообщениях
 
По умолчанию Re: Ткните носом пожалуйста

Цитата:
Сообщение от XantraxПосмотреть сообщение
я переписываю бота под С++ Builder 6

И что, пролог у функций, состоящих из асм-кода, билдер не делает?
В смысле, здесь будет точно такая же проблема. Скорее всего.
________________
Принимаю реквесты на статьи, программы. Всё будет запилено в лучшем виде :3
  Ответить с цитированием
Старый 01.08.2013, 08:02   #65
 Разведчик
Аватар для Xantrax
 
Xantrax никому не известный тип
Регистрация: 13.04.2013
Сообщений: 5
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Ткните носом пожалуйста

Пока без понятия, не пробовал. Но люди с этого форума под C Builder не жалуются, а значит наверное не делает.
  Ответить с цитированием
Старый 28.08.2013, 00:43   #66
 Разведчик
Аватар для Xantrax
 
Xantrax никому не известный тип
Регистрация: 13.04.2013
Сообщений: 5
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Ткните носом пожалуйста

Люди, поделитесь алгоритмом действий, помогите оживить бревно.
Я делаю так:
PHP код:
EnableFox GetFormaPersa();
        if(
EnableFox == 0)
        {
                
inject.TransformToFox();
                
inject.SayHelloPet();
                
Sleep(4000);
                
PetID GetActivePetID();
                
CallAttackTimer->Enabled true;
        }
        else if(
EnableFox == 1)
        {
                
CallAttackTimer->Enabled false;
                
inject.TransformToFox();
                
inject.SayGoodByePet();
                
inject.TargetMobOff();
        } 
1) смотрю форму перса, если на двух ногах, то превращаюсь в лису + вызываю пета + получаю его ID, далее запускаю таймер, который с каждым тиком (раз в 5 сек)) проверяет состояние переменной int
PHP код:
NomerDeistvij:
void __fastcall TForm1::CallAttackTimerTimer(TObject *Sender)
{
                switch(
NomerDeistvij)
                {
                        case 
0:
                        {
                                
NomerDeistvij 1;
                                break;
                        }
                        case 
1:
                        {
                                
SelectTargetMob();
                                
NomerDeistvij 3;
                                break;
                        }
                        case 
2:
                        {
                                
//inject.DeselectTarget();
                                
inject.MyPetHeal(PetID);
                                
NomerDeistvij 3;
                                break;
                        
//inject.DeselectTarget();
                        
}
                        case 
3:
                        {
                                if(
PetHPProc 95)
                                       {
                                                
NomerDeistvij 2;

                                       }
                                if(
CurrentPersTarget()!= 0)
                                {
                                        
inject.NormalAttack();
                                        if(
PersChi()>2)
                                                {
                                                        
UseSkillLvl1();
                                                }
                                        
NomerDeistvij 3;
                                }
                                else
                                {
                                        
NomerDeistvij 1;
                                }
                                break;
                        }
                }

Но у меня проблемы с хилом пета, всегда тик приходит либо когда значение равно 2-м и перс только и делает, что хилит, либо не хилит в бою, либо спец атаку не проводит.... (( В общем беда, поделитесь идеей, мыслью, если возможно кодом...
Спасибо...

Добавлено через 11 часов 57 минут
Ну, неужели никто не поделится даже мыслью?

Последний раз редактировалось Xantrax; 28.08.2013 в 12:41. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 28.08.2013, 16:26   #67
 Пехотинец
Аватар для dwa83
 
dwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личностьdwa83 определенно авторитетная личность
Регистрация: 21.03.2012
Сообщений: 83
Популярность: 1178
Сказал(а) спасибо: 18
Поблагодарили 101 раз(а) в 53 сообщениях
 
По умолчанию Re: Ткните носом пожалуйста

Я оживлял "полешко" таким вот способом клац
Там же есть ссылка от vogel на другой способ
Цитата:
Сообщение от vogelПосмотреть сообщение
реализация действий [Ссылки могут видеть только зарегистрированные пользователи. ] с нормальным полиморфизмом - правильнее.

________________
╔═╗
ˑ ˑ ╬ ╬
╚═╝
  Ответить с цитированием
Старый 28.08.2013, 17:48   #68
 Разведчик
Аватар для Xantrax
 
Xantrax никому не известный тип
Регистрация: 13.04.2013
Сообщений: 5
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Ткните носом пожалуйста

Цитата:
Сообщение от dwa83Посмотреть сообщение
реализация действий шаблоном "Command" с нормальным полиморфизмом - правильнее.

Ссылка битая!

Добавлено через 7 минут
Цитата:
Tекстовое описание работы бота от dwa83

У меня фактически делается тоже самое, только вот срабатывание таймера иногда приходит не вовремя, в результате выполняется тоже действие, т.е. переменной не успевает присвоиться следующее значение...

Добавлено через 9 минут
Цитата:
// Стек действий
struct ACTION_STACK

А нужен ли он вообще? Пусть каждая функция, выполняющая что-либо будет сама по себе...
Моя проблема заключается в том что во время убийства моба(в котором принимает участие и пет) нужно отслеживать здоровье пета и хилить его. Здоровье пета я отслеживаю отдельным таймером и соотвественно, когда оно ниже определенного значения должна включаться функция отхила. Но время выполнения операций разное, а тик таймера может придти в любой момент, иногда он приходит чисто когда переменная (по которой переключаются режимы) равна 2, а значит она опять хилит пета, ну и так далее....

Последний раз редактировалось Xantrax; 28.08.2013 в 18:08. Причина: Добавлено сообщение
  Ответить с цитированием
Старый 28.08.2013, 18:39   #69
 Разведчик
Аватар для fds255
 
fds255 скоро будет известенfds255 скоро будет известенfds255 скоро будет известенfds255 скоро будет известенfds255 скоро будет известен
Регистрация: 23.06.2012
Сообщений: 43
Популярность: 427
Сказал(а) спасибо: 18
Поблагодарили 59 раз(а) в 35 сообщениях
 
По умолчанию Re: Ткните носом пожалуйста

Цитата:
Сообщение от XantraxПосмотреть сообщение
Моя проблема заключается в том что во время убийства моба(в котором принимает участие и пет) нужно отслеживать здоровье пета и хилить его. Здоровье пета я отслеживаю отдельным таймером и соотвественно, когда оно ниже определенного значения должна включаться функция отхила. Но время выполнения операций разное, а тик таймера может придти в любой момент, иногда он приходит чисто когда переменная (по которой переключаются режимы) равна 2, а значит она опять хилит пета, ну и так далее....

таймеры не синхронизированы, лучший выход завязать все действия на один таймер
________________
MultiXBot
MultiX_POT
  Ответить с цитированием
Старый 28.08.2013, 19:23   #70
 Разведчик
Аватар для Xantrax
 
Xantrax никому не известный тип
Регистрация: 13.04.2013
Сообщений: 5
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Ткните носом пожалуйста

Цитата:
таймеры не синхронизированы, лучший выход завязать все действия на один таймер

1-й таймер считывает информацию с интервалом 10 мс, так что я думаю расхождение не большое.
А если я объединю все в одном таймере и поставлю интервал срабатывания 10 мс, так у меня ни одно действие выполняться не будет, просто не будет успевать (так я думаю...)....
  Ответить с цитированием
Старый 28.08.2013, 19:42   #71
 Разведчик
Аватар для fds255
 
fds255 скоро будет известенfds255 скоро будет известенfds255 скоро будет известенfds255 скоро будет известенfds255 скоро будет известен
Регистрация: 23.06.2012
Сообщений: 43
Популярность: 427
Сказал(а) спасибо: 18
Поблагодарили 59 раз(а) в 35 сообщениях
 
По умолчанию Re: Ткните носом пожалуйста

Xantrax,

можно сделать по другому:

Код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin

CB1:=CB1+300;
if CB1>=... then
begin
CB1:=0;
......................
end;

CB2:=CB2+300;
if CB2>=... then
begin
CB2:=0;
......................
end;

end;

тайминг таймера 300мс поэтому и +300, можно изменить.

В этом случае у тебя не будет пересечения, а действия будут выполняться последовательно.
________________
MultiXBot
MultiX_POT
  Ответить с цитированием
Старый 28.08.2013, 19:51   #72
 Разведчик
Аватар для Xantrax
 
Xantrax никому не известный тип
Регистрация: 13.04.2013
Сообщений: 5
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Ткните носом пожалуйста

Цитата:
можно сделать по другому:

Что-то я не понял идею... Что за CB? Чему равно CB до изменения его значения в функции.
CB = 0 - это остановка таймера?
  Ответить с цитированием
Старый 28.08.2013, 19:57   #73
 Разведчик
Аватар для fds255
 
fds255 скоро будет известенfds255 скоро будет известенfds255 скоро будет известенfds255 скоро будет известенfds255 скоро будет известен
Регистрация: 23.06.2012
Сообщений: 43
Популярность: 427
Сказал(а) спасибо: 18
Поблагодарили 59 раз(а) в 35 сообщениях
 
По умолчанию Re: Ткните носом пожалуйста

Цитата:
Сообщение от XantraxПосмотреть сообщение
Что за CB?

CB - это переменная которая при каждом тике таймера увеличивается на время тайминга, таким образом можно контролировать обработку разных действий в разное время на одном таймере.

Да, кстати, зачем делать тайминг 10мс, т.е. 100 тиков в секунду, вполне можно обойтись и таймингом в 100-200мс, стабильнее будет работать, поверь.
________________
MultiXBot
MultiX_POT
  Ответить с цитированием
Старый 28.08.2013, 20:06   #74
 Разведчик
Аватар для Xantrax
 
Xantrax никому не известный тип
Регистрация: 13.04.2013
Сообщений: 5
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Ткните носом пожалуйста

Цитата:
Сообщение от fds255Посмотреть сообщение
CB - это переменная которая при каждом тике таймера увеличивается на время тайминга

Почему на именно на время таймера, можно и на 1 увеличивать. И все равно задумку не понял...
PHP код:
int i 0;
void TForm::Timer()
{
i+=1;
if(
i>0)
{
выбираем таргет;
0;
}

А если какое-либо действие не успеет за это время выполниться? А если мне два раза нужно выполнить это действие? Логику по прежнему не понял. Он у меня на отрез отказывается хилить пета (( Проверяю, HPProc(проценты хп) пета и если меньше 95 (для теста), скидываю флаг на тот в котором должен выполняться хил, но 0 эмоций при запуске, хотя сама функция работает...
А если поставить break; после перехода на действие "хил пета", он только и делает, что хилит пета. Я не понимаю, почему он в коде проскакивает условие:
PHP код:
 if(PetHPProc 95)
                                {
                                        
NomerDeistvij 2;
                                } 

Последний раз редактировалось Xantrax; 28.08.2013 в 20:13.
  Ответить с цитированием
Старый 28.08.2013, 20:24   #75
 Разведчик
Аватар для fds255
 
fds255 скоро будет известенfds255 скоро будет известенfds255 скоро будет известенfds255 скоро будет известенfds255 скоро будет известен
Регистрация: 23.06.2012
Сообщений: 43
Популярность: 427
Сказал(а) спасибо: 18
Поблагодарили 59 раз(а) в 35 сообщениях
 
По умолчанию Re: Ткните носом пожалуйста

Цитата:
Сообщение от XantraxПосмотреть сообщение
Он у меня на отрез отказывается хилить пета ((

Ок, давай разберем твою функцию:


Код:
NomerDeistvij:
void __fastcall TForm1::CallAttackTimerTimer(TObject *Sender)
{
                switch(NomerDeistvij)
                {
                        case 0:
                        {
                                NomerDeistvij = 1;
                                break;
                        }
                        case 1:
                        {
                                SelectTargetMob();
                                NomerDeistvij = 3;
                                break;
                        }
                        case 2:
                        {
                                //inject.DeselectTarget();
                                inject.MyPetHeal(PetID);
                                NomerDeistvij = 3;
                                break;
                        //inject.DeselectTarget();
                        }
                        case 3:
                        {
                                if(PetHPProc < 95)
                                       {
                                                NomerDeistvij = 2;

                                       }
                                if(CurrentPersTarget()!= 0)
                                {
                                        inject.NormalAttack();
                                        if(PersChi()>2)
                                                {
                                                        UseSkillLvl1();
                                                }
                                        NomerDeistvij = 3;
                                }
                                else
                                {
                                        NomerDeistvij = 1;
                                }
                                break;
                        }
                }
}
Смотри когда case=3, что делает прога:

1) проверяет хп пета, и если оно меньше 95% то должна хилить пета, НО ДАЛЬШЕ ИДЕТ:

2) условие, что если в таргете кто либо есть, то атаковать и если есть более 2х чи то использовать скилл, это действие перебивает хилл пета,
поэтому в бою пет не хилится.

Как вариант, можно заслипить на время хилла пета последующие действия, т.е.

извиняюсь немного не так ), попробуй следующее

Код:
 if(PetHPProc < 95)
                                       {
                                                NomerDeistvij = 2;
                                                break;
                                       }
если не будет хилить, добавь слип в case=2

прочитал предыдущий пост и понял что ты так уже сделал )

тогда просто вместо 95 установи значение поменьше, 60 например, т.к. первый же удар моба сносит пету более 5% хп, поэтому прога только и хилит.
________________
MultiXBot
MultiX_POT

Последний раз редактировалось fds255; 28.08.2013 в 20:35.
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Гм Инновы у нас под носом О_о .NextTarget Общение и обсуждение, архив Point Blank 4 10.03.2011 13:16

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 00:11.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net