Регистрация Главная Сообщество
Сообщения за день Справка Регистрация
Навигация
Zhyk.org LIVE! Реклама на Zhyk.org Правила Форума Награды и достижения Доска "почета"

Делаем задержку между пакетами

-

Статьи и руководства по Aion

- Статьи и описания мира Aion в этом разделе

Ответ
 
Опции темы
Старый 05.02.2012, 16:33   #1
 Сержант
Аватар для happytorn
 
happytorn лучик света в грозовом небеhappytorn лучик света в грозовом небеhappytorn лучик света в грозовом небеhappytorn лучик света в грозовом небеhappytorn лучик света в грозовом небеhappytorn лучик света в грозовом небеhappytorn лучик света в грозовом небе
Регистрация: 12.11.2009
Сообщений: 110
Популярность: 748
Сказал(а) спасибо: 68
Поблагодарили 104 раз(а) в 46 сообщениях
Отправить сообщение для happytorn с помощью Skype™
 
Post Делаем задержку между пакетами

По многочисленным просьбам попытаюсь доходчиво изложить как сделать задержку между посылаемыми пакетами, на примере скрипта автоатаки несколькими скилами(для сина).
Для начала покажу сам скрипт со всевозможными комментариями:
PHP код:
    //Timer by happytorn
const
name 'borrov'//имя соединения
var
Timer:TTimer;
TimerStep:integer;
TargetID:integer
StartSkill:word;
    
    
procedure DoTheSkill(SkillID:wordLevel:byte); //Формируем пакет нового скила
        
begin
        buf 
:= HStr('D0 00 57 6F FF CC CC DD 00 60 CA 00 00 00 00 79 8D 00 00'); //Начальный пакет на скил
        
WriteH(SkillID6);     //Вставляем в начальный пакет ID скила 
        
WriteC(Level8);       //Всталяем в начальный пакет уровень скила
        
WriteD(TargetID10);   //Вставляем в начальный пакет ID таргета 
        
SendToServerEx(name);
        
end;
    
    
procedure Init;
        
begin
        TimerStep
:=1;                //Шаг
        
Timer:=TTimer.Create(nil);   //выделяем память
        
Timer.OnTimer:=@OnTimer;     //привязываем процедуру к событию 
        
Timer.enabled:=false;        //начальное положение выключен(false)
        
Timer.interval:=900;         //интервал(в миллисекундах) как часто таймер срабатывает
        
end;
        

    
procedure Free;
        
begin
        Timer
.free;
        
end;

procedure OnTimer(SenderTObject);
    
begin
        
case TimerStep of
        1

            
begin
                DoTheSkill
(5809);   //Рассекающий удар V         
                
Inc(TimerStep);       
            
end;
        
2:
            
begin
                DoTheSkill
(9329);  //Нанесение древнего клейма III         
                
Inc(TimerStep);
            
end;
        
3:    
            
begin 
                DoTheSkill
(5819);              //Контратака V
                
Inc(TimerStep);        
            
end
        
4:
            
begin 
                DoTheSkill
(8759);              //Рев Зверя IV
                
Inc(TimerStep);        
            
end
        
5:    
            
begin 
                DoTheSkill
(8609);     //Удар Зверя IV      
                
Inc(TimerStep); 
                
            
end;
        
6:    
            
begin 
                DoTheSkill
(21109);     //Бросок зверя II       
                
Timer.enabled:=false;   //выключаем таймер
                
Inc(TimerStep); 
                
TimerStep:=1;
            
end;
        
        
end;
         
        
        
    
end;

    
begin
    
        StartSkill 
:= 578;  //Стремительный удар V
            
if (FromClient) and (ReadC(1) = $D0) and (ReadH(6) = StartSkillthen
        begin
        TargetID 
:= ReadD(10);
        
Timer.enabled:=true;   //включаем таймер   
        
end;
    
end
И так, на что следует обратить внимание если наша задача переделать скрипт "под себя".

PHP код:
name 'borrov'
-Здесь меняем borrov на свое имя соединения(логин)
PHP код:
Timer.interval:=900
-Здесь меняем 900 миллисекунд на желаемое время задержки
PHP код:
DoTheSkill(5809); 
-580 это ID скила,9-это уровень скила.ID скила узнать можно в базе.Например [Ссылки могут видеть только зарегистрированные пользователи. ]580
PHP код:
begin 
                DoTheSkill
(21109);     //Бросок зверя II       
                
Timer.enabled:=false;   //выключаем таймер
                
Inc(TimerStep);
                
TimerStep:=1
В последнем из списка добавленных скилов не забываем выключить таймер и добавить TimerStep:=1;.В моем случае последний скил это Бросок Зверя II

PHP код:
StartSkill := 578
- Это начальный скил активатор.В моем случае это Стремительный удар V

ЗЫ. Если кто-то желает протестировать именно этот скрипт,то менять в нем нужно только Имя соединения(логин)

ЗЫЫ. Если хотите чтобы у вас между определенными скилами был какой-то свой отдельный интервал,то
добавляем строку Timer.interval:=600;
600 меняем на желаемое время задержки
Например:
Цитата:
begin
Timer.interval:=600;
DoTheSkill(580, 9); //Рассекающий удар V
Inc(TimerStep);
end;


Последний раз редактировалось happytorn; 05.02.2012 в 17:32.
  Ответить с цитированием
5 пользователя(ей) сказали cпасибо:
freshinin-aion (05.02.2012), Giperion (07.02.2012), manyunya (05.02.2012), rtghf (05.03.2013), vs23 (11.02.2012)
Старый 05.02.2012, 16:48   #2
Заблокирован
 Пехотинец
Аватар для manyunya
 
manyunya на правильном пути
Регистрация: 29.08.2010
Сообщений: 87
Популярность: 82
Сказал(а) спасибо: 99
Поблагодарили 51 раз(а) в 28 сообщениях
 
По умолчанию Re: Делаем задержку между пакетами

немного подправлю
If (TimerStep=7) then TimerStep:=1 это лишнее
делаееш так
вместо этого:
Код:
 6:    
            begin 
                DoTheSkill(2110, 9);     //Бросок зверя II       
                SendToServerEx(name);  это не нужно-есть в процедуре, нужно только подправить.
                Timer.enabled:=false;   //выключаем таймер// таймер выключен, но зачем дальше идет зацикливание атаки?
                Inc(TimerStep);
               end;
пишем:
Код:
 6:       
                   begin         
                   DoTheSkill(2110, 9);       
                   TimerStep:=1;  //зацикливаем-идет на первый шаг.
                   end; 
правим процедуру
Код:
 procedure DoTheSkill(SkillID:word; Level:byte); //Формируем пакет нового скила
        begin
        buf := HStr('D0 00 57 6F FF CC CC DD 00 60 CA 00 00 00 00 79 8D 00 00'); //Начальный пакет на скил
        WriteH(SkillID, 6);     //Вставляем в начальный пакет ID скила 
        WriteC(Level, 8);       //Всталяем в начальный пакет уровень скила
        WriteD(TargetID, 10);   //Вставляем в начальный пакет ID таргета 
        SendToServer;  в таймере не будет работать меняем на SendToServerEx(name);
        end;
будет так:
Код:
 procedure DoTheSkill(SkillID:word; Level:byte); //Формируем пакет нового скила
        begin
        buf := HStr('D0 00 57 6F FF CC CC DD 00 60 CA 00 00 00 00 79 8D 00 00'); //Начальный пакет на скил
        WriteH(SkillID, 6);     //Вставляем в начальный пакет ID скила 
        WriteC(Level, 8);       //Всталяем в начальный пакет уровень скила
        WriteD(TargetID, 10);   //Вставляем в начальный пакет ID таргета 
        SendToServerEx(name);
        end;
и еще у тебя атака скилами зациклена, но вто же время таймер выключается
я сделал зацикливание, терь нужно в проверку где нить вставить выключение таймера, и атака пркуратится.

а так скрип отличный, нужно только отшлифовать его
скрипт практически 1 в 1 как я сделал)
еще можно добавить задержку для следующего удара(задержка может быть произвольная
примерно так:
Код:
   1:                      //начало первой серии
                begin  
                timer.interval:=300;//  след удар полетит через 0.3 сек
                   DoTheSkill(1260, 4);   
                    Inc(TimerStep);
                end; 
            2:                     
                begin  
                timer.interval:=500;// след удар полетит через 0.5 сек
                   DoTheSkill(1276, 4);   
                    Inc(TimerStep);
                end;                                          
            3:

Последний раз редактировалось manyunya; 05.02.2012 в 17:05.
  Ответить с цитированием
3 пользователя(ей) сказали cпасибо:
freshinin-aion (08.02.2012), happytorn (05.02.2012), vs23 (11.02.2012)
Старый 05.02.2012, 16:59   #3
Заблокирован
 Сержант
Аватар для freshinin-aion
 
freshinin-aion скоро будет известенfreshinin-aion скоро будет известенfreshinin-aion скоро будет известен
Регистрация: 28.10.2011
Сообщений: 159
Популярность: 255
Сказал(а) спасибо: 128
Поблагодарили 146 раз(а) в 40 сообщениях
Отправить сообщение для freshinin-aion с помощью ICQ Отправить сообщение для freshinin-aion с помощью Skype™
 
По умолчанию Re: Делаем задержку между пакетами

Цитата:
Сообщение от happytornПосмотреть сообщение
-

Работа хорошая. Постарался на славу.
  Ответить с цитированием
Старый 05.02.2012, 17:00   #4
 Разведчик
Аватар для cocomoco
 
cocomoco никому не известный тип
Регистрация: 14.08.2011
Сообщений: 12
Популярность: 10
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Делаем задержку между пакетами

это все на 2.7 ?
  Ответить с цитированием
Старый 05.02.2012, 17:05   #5
 Сержант
Аватар для happytorn
 
happytorn лучик света в грозовом небеhappytorn лучик света в грозовом небеhappytorn лучик света в грозовом небеhappytorn лучик света в грозовом небеhappytorn лучик света в грозовом небеhappytorn лучик света в грозовом небеhappytorn лучик света в грозовом небе
Регистрация: 12.11.2009
Сообщений: 110
Популярность: 748
Сказал(а) спасибо: 68
Поблагодарили 104 раз(а) в 46 сообщениях
Отправить сообщение для happytorn с помощью Skype™
 
По умолчанию Re: Делаем задержку между пакетами

Пару моментов провтыкал.Щас уберу лишнее.Но скрипт работает.

Цитата:
Сообщение от cocomocoПосмотреть сообщение
это все на 2.7 ?

да
  Ответить с цитированием
Старый 05.02.2012, 17:14   #6
 Разведчик
Аватар для cocomoco
 
cocomoco никому не известный тип
Регистрация: 14.08.2011
Сообщений: 12
Популярность: 10
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Делаем задержку между пакетами

а можешь сделать скрипт. что бы. когда юзаешь "засаду" срабатывали бафы "око гнева" "точный расчет" "ритуал" "штурмовая стойка" после бафоф "атака ядом" "клинок обморока" ?
  Ответить с цитированием
Старый 05.02.2012, 17:33   #7
 Сержант
Аватар для happytorn
 
happytorn лучик света в грозовом небеhappytorn лучик света в грозовом небеhappytorn лучик света в грозовом небеhappytorn лучик света в грозовом небеhappytorn лучик света в грозовом небеhappytorn лучик света в грозовом небеhappytorn лучик света в грозовом небе
Регистрация: 12.11.2009
Сообщений: 110
Популярность: 748
Сказал(а) спасибо: 68
Поблагодарили 104 раз(а) в 46 сообщениях
Отправить сообщение для happytorn с помощью Skype™
 
По умолчанию Re: Делаем задержку между пакетами

Цитата:
Сообщение от cocomocoПосмотреть сообщение
а можешь сделать скрипт. что бы. когда юзаешь "засаду" срабатывали бафы "око гнева" "точный расчет" "ритуал" "штурмовая стойка" после бафоф "атака ядом" "клинок обморока" ?

А руководство я зачем писал?
  Ответить с цитированием
Старый 05.02.2012, 19:31   #8
Подпольщик Aion
 Лейтенант-командор
Аватар для talala
 
talala сломал счётчик популярности :(talala сломал счётчик популярности :(talala сломал счётчик популярности :(talala сломал счётчик популярности :(talala сломал счётчик популярности :(talala сломал счётчик популярности :(talala сломал счётчик популярности :(talala сломал счётчик популярности :(talala сломал счётчик популярности :(talala сломал счётчик популярности :(talala сломал счётчик популярности :(
Регистрация: 17.07.2009
Сообщений: 683
Популярность: 11669
Золото Zhyk.Ru: 100
Сказал(а) спасибо: 567
Поблагодарили 1,011 раз(а) в 383 сообщениях
Отправить сообщение для talala с помощью ICQ
 
По умолчанию Re: Делаем задержку между пакетами

А вот в одной теме нельзя обо всем рассказать? Уже третья тема посвященная разработке скриптов, но инфа разрозненная и скудная. Если есть возможность, то создайте полноценную тему от начала и до конца.
________________
подполье Аион - для суровых подпольщиков
Восстановлена работоспособность одного из лучших радаров для Аион. Спасибо автору(ам) =)
Path of Exile - в настоящее время там.
  Ответить с цитированием
Старый 05.02.2012, 21:16   #9
 Сержант
Аватар для happytorn
 
happytorn лучик света в грозовом небеhappytorn лучик света в грозовом небеhappytorn лучик света в грозовом небеhappytorn лучик света в грозовом небеhappytorn лучик света в грозовом небеhappytorn лучик света в грозовом небеhappytorn лучик света в грозовом небе
Регистрация: 12.11.2009
Сообщений: 110
Популярность: 748
Сказал(а) спасибо: 68
Поблагодарили 104 раз(а) в 46 сообщениях
Отправить сообщение для happytorn с помощью Skype™
 
По умолчанию Re: Делаем задержку между пакетами

Цитата:
Сообщение от talalaПосмотреть сообщение
А вот в одной теме нельзя обо всем рассказать? Уже третья тема посвященная разработке скриптов, но инфа разрозненная и скудная. Если есть возможность, то создайте полноценную тему от начала и до конца.

Какие именно темы нужно объединить?
  Ответить с цитированием
Старый 07.02.2012, 15:54   #10
Заблокирован
 Пехотинец
Аватар для manyunya
 
manyunya на правильном пути
Регистрация: 29.08.2010
Сообщений: 87
Популярность: 82
Сказал(а) спасибо: 99
Поблагодарили 51 раз(а) в 28 сообщениях
 
По умолчанию Re: Делаем задержку между пакетами

кому интересен процесс написания скриптов и так все сам нашел, а кто ждет только готового, то и подробная тема не поможет.

а подробная тема - это книга по обджект паскаль будет)

скажи какие темы ты имел ввиду и думаю happytorn все подробненько распишет
  Ответить с цитированием
Пользователь сказал cпасибо:
happytorn (07.02.2012)
Старый 07.02.2012, 23:30   #11
Подпольщик Aion
 Лейтенант-командор
Аватар для talala
 
talala сломал счётчик популярности :(talala сломал счётчик популярности :(talala сломал счётчик популярности :(talala сломал счётчик популярности :(talala сломал счётчик популярности :(talala сломал счётчик популярности :(talala сломал счётчик популярности :(talala сломал счётчик популярности :(talala сломал счётчик популярности :(talala сломал счётчик популярности :(talala сломал счётчик популярности :(
Регистрация: 17.07.2009
Сообщений: 683
Популярность: 11669
Золото Zhyk.Ru: 100
Сказал(а) спасибо: 567
Поблагодарили 1,011 раз(а) в 383 сообщениях
Отправить сообщение для talala с помощью ICQ
 
По умолчанию Re: Делаем задержку между пакетами

Цитата:
Сообщение от manyunyaПосмотреть сообщение
кому интересен процесс написания скриптов и так все сам нашел, а кто ждет только готового, то и подробная тема не поможет.

а подробная тема - это книга по обджект паскаль будет)

скажи какие темы ты имел ввиду и думаю happytorn все подробненько распишет

Не надо про паскаль. =)
Желательно объединить в теме это, это и данную тему. И поддерживать ее, отвечая на вопросы. Думаю, авторам тем лучше объединиться в группу - допустим "Скриптеры Аион" (название временное =) ).
________________
подполье Аион - для суровых подпольщиков
Восстановлена работоспособность одного из лучших радаров для Аион. Спасибо автору(ам) =)
Path of Exile - в настоящее время там.

Последний раз редактировалось talala; 07.02.2012 в 23:36. Причина: Добавлено сообщение
  Ответить с цитированием
2 пользователя(ей) сказали cпасибо:
happytorn (07.02.2012), Usilok77 (22.02.2012)
Старый 07.02.2012, 23:43   #12
 Сержант
Аватар для happytorn
 
happytorn лучик света в грозовом небеhappytorn лучик света в грозовом небеhappytorn лучик света в грозовом небеhappytorn лучик света в грозовом небеhappytorn лучик света в грозовом небеhappytorn лучик света в грозовом небеhappytorn лучик света в грозовом небе
Регистрация: 12.11.2009
Сообщений: 110
Популярность: 748
Сказал(а) спасибо: 68
Поблагодарили 104 раз(а) в 46 сообщениях
Отправить сообщение для happytorn с помощью Skype™
 
По умолчанию Re: Делаем задержку между пакетами

Окей,завтра-послезавтра запилю тему.
  Ответить с цитированием
Пользователь сказал cпасибо:
manyunya (07.02.2012)
Старый 08.02.2012, 14:15   #13
 Разведчик
Аватар для cocomoco
 
cocomoco никому не известный тип
Регистрация: 14.08.2011
Сообщений: 12
Популярность: 10
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Делаем задержку между пакетами

подскажи happytorn. чем отличается посылание пакетов с скиллами от стандартного скила (конечно если скилы подогнать под нужные)
Цитата:
var
TargetID:integer;
StartSkill:word;

procedure DoTheSkill(SkillID:word; Level:byte);
begin
buf := HStr('D0 00 57 6F FF CC CC DD 00 60 CA 00 00 00 00 79 8D 00 00');
WriteH(SkillID, 6);
WriteC(Level, 8);
WriteD(TargetID, 10);
SendToServer;
end;

begin
StartSkill := 2273;
if (FromClient) and (ReadC(1) = $D0) and (ReadH(6) = StartSkill) then
begin
TargetID := ReadD(10);

DoTheSkill(674, 1);
DoTheSkill(704, 1);
DoTheSkill(652, 1);
end;
end.

и как можно сделать так что бы после

TargetID := ReadD(10);

DoTheSkill(674, 1); след скил полетел через опред время. т.к слишком уж палевно как все скиллы без анимации летят.




и что значит цифра 8 (бывает 10) в строке TargetID := ReadD(8);
  Ответить с цитированием
Старый 08.02.2012, 14:39   #14
 Разведчик
Аватар для Levapishe
 
Levapishe никому не известный тип
Регистрация: 09.09.2010
Сообщений: 21
Популярность: 10
Сказал(а) спасибо: 12
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Делаем задержку между пакетами

Цитата:
Сообщение от cocomocoПосмотреть сообщение




и что значит цифра 8 (бывает 10) в строке TargetID := ReadD(8);

Цифра - это номер байта в пакете . DO, CF, 23, 60 - это байты. 8 - значит начиная с 8го байта в пакете будет начинаться TargetID. если 10 то с 10го соответственно. цифра эта не постоянная. В нашем случае это 60
buf := HStr('D0 00 57 6F FF CC CC DD 00 60 CA 00 00 00 00 79 8D 00 00');

WriteD(TargetID, 10);

Последний раз редактировалось Levapishe; 08.02.2012 в 14:42.
  Ответить с цитированием
Старый 08.02.2012, 14:48   #15
 Разведчик
Аватар для cocomoco
 
cocomoco никому не известный тип
Регистрация: 14.08.2011
Сообщений: 12
Популярность: 10
Сказал(а) спасибо: 2
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Делаем задержку между пакетами

Levapishe. Тогда посмотри в этом случае что нужно подправить


Цитата:
var
TargetID:integer;
StartSkill:word;

procedure DoTheSkill(SkillID:word; Level:byte);
begin
buf := HStr('D0 00 57 6F FF CC CC DD 00 60 CA 00 00 00 00 79 8D 00 00');
WriteH(SkillID, 6);
WriteC(Level, 8);
WriteD(TargetID, 10);
SendToServer;
end;

begin
StartSkill := 1987;
if (FromClient) and (ReadC(1) = $CF) and (ReadH(4) = StartSkill) then
begin
TargetID := ReadD(8);

DoTheSkill(1988, 1);
DoTheSkill(850, 1);
DoTheSkill(839, 1);
DoTheSkill(577, 1);
DoTheSkill(913, 1);
DoTheSkill(1987, 1);
DoTheSkill(1990, 1);
DoTheSkill(2125, 3);
end;
end.

Спасибо
  Ответить с цитированием
Ответ


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отсчёт времени. ma_za_xa_ka С/С++ 1 30.08.2011 18:50
[Помогите!] Как поставить задержку на покупку? Lukac Lineage 2 3 18.12.2010 17:44
[Статья] Делаем невидимый ник,или делаем ник с пробелами в конце .AsTex. Баги, читы и статьи по Point Blank 14 15.12.2010 22:23
Голосование пакетами sosni Вопросы и ответы: RF Online 7 26.09.2010 22:57

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

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

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