Здесь я постараюсь объединить наиболее популярные вопросы по скриптам. Так как почти на всех серверах пакеты 2.7 и 3.0,затрагивать пакеты ранних версий не буду. И так, приступим.
1) Как сделать скрипт автоатаки для своего класса?
Пример скрипта тут
Цитата:
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); //Вставляем в начальный пакет ID скила
WriteC(Level, 8); //Всталяем в начальный пакет уровень скила
WriteD(TargetID, 10); //Вставляем в начальный пакет ID таргета
SendToServer;
end;
begin
StartSkill := 578; //Стремительный удар V
if (FromClient) and (ReadC(1) = $D0) and (ReadH(6) = StartSkill) then
begin
TargetID := ReadD(10);
DoTheSkill(580, 9); //Рассекающий удар V
DoTheSkill(932, 9); //Нанесение древнего клейма III
DoTheSkill(581, 9); //Контратака V
end;
end.
Нам остается только подставить свои скилы.Как это сделать.Пишем свои строки DoTheSkill.Где первая цифра в скобках это ID нужного скила, а вторая -уровень скила.Узнать ID скила можно в базе,например:[Ссылки могут видеть только зарегистрированные пользователи. ] ,где 580-это ID. А так же назначаем скил, который будет активировать наш скрипт StartSkill := 578 ,578 меняем на нужный нам ID скила.
2) Как сделать задержку между пакетами чтобы не палиться?
Пример скрипта тут
Цитата:
var
name:string;
Timer:TTimer;
TimerStep:integer;
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); //Вставляем в начальный пакет ID скила
WriteC(Level, 8); //Всталяем в начальный пакет уровень скила
WriteD(TargetID, 10); //Вставляем в начальный пакет 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(Sender: TObject);
begin
case TimerStep of
1:
begin
DoTheSkill(580, 9); //Рассекающий удар V
Inc(TimerStep);
end;
2:
begin
DoTheSkill(932, 9); //Нанесение древнего клейма III
Inc(TimerStep);
end;
3:
begin
DoTheSkill(581, 9); //Контратака V
Inc(TimerStep);
end;
4:
begin
DoTheSkill(875, 9); //Рев Зверя IV
Inc(TimerStep);
end;
5:
begin
DoTheSkill(860, 9); //Удар Зверя IV
Inc(TimerStep);
end;
6:
begin
DoTheSkill(2110, 9); //Бросок зверя II
Timer.enabled:=false; //выключаем таймер
Inc(TimerStep);
TimerStep:=1; //Переходим на первый шаг
end;
end;
end;
begin
StartSkill := 578; //Стремительный удар V
if (FromClient) and (ReadC(1) = $D0) and (ReadH(6) = StartSkill) then
begin
name:=ConnectName;
TargetID := ReadD(10);
Timer.enabled:=true; //включаем таймер
end;
end.
В строке Timer.interval:=900; меняем по желанию 900 на любое нужное вам время задержки.
Время задержки между скилами будет одинаковое.
3) Как сделать скрипт для ТП по локации?
Пример скрипта тут
Цитата:
begin
If FromClient and (pck=Hstr('B2 00 57 71 FF 00 67 00 67 00 00 00')) // gg
then
begin
buf:=HStr('C2 00 57 61 FF 04 CC DB A7 44 A4 20 F9 44 00 80 2A 42 36');
SendToServer;
pck:='';
end;
If FromClient and (pck=Hstr('B2 00 57 71 FF 00 57 00 67 55 45 00 00 00'))
then
begin
buf:=HStr('C2 00 57 61 FF 04 DC GB A9 44 A4 20 F9 44 00 80 2A 42 36');
SendToServer;
pck:='';
end;
end.
В моем примере две точки телепорта. Рассмотрим на примере первой точки.
И так, что делать чтобы создать свои точки ТП. 1) Идем в нужную нам точку локации.Ловим последний пакет 9F. Например 9F 00 57 5C FFCC DB A7 44 A4 20 F9 44 00 80 2A 426E 00 CC DB A7 44 A4 20 F9 44 00 80 2A 42- это координаты нашего местоположения.Запоминаем их.
Делаем новый пакет телепорта с нашими координатами: C2 00 57 61 FF 04CC DB A7 44 A4 20 F9 44 00 80 2A 4236 2) Создаем команду для активации ТП. Придумываем название для точки ТП. Например:gg .Пишем его в чат и ловим пакет B2.
Получилось B2 00 57 71 FF 00 67 00 67 00 00 00
Подставляем в скрипт полученные пакеты.
1) Как сделать скрипт автоатаки для своего класса?
Пример скрипта тут
Цитата:
var
TargetID:integer;
StartSkill:word;
procedure DoTheSkill(SkillID:word; Level:byte); //Формируем пакет нового скила
begin
buf := HStr('EF 00 6D 10 FF 34 02 09 00 08 A4 00 00 00 00 00 00 00 00'); //Начальный пакет на скил
WriteH(SkillID, 6); //Вставляем в начальный пакет ID скила
WriteC(Level, 8); //Всталяем в начальный пакет уровень скила
WriteD(TargetID, 10); //Вставляем в начальный пакет ID таргета
SendToServer;
end;
begin
StartSkill := 578; //Стремительный удар V
if (FromClient) and (ReadC(1) = $EF) and (ReadH(6) = StartSkill) then
begin
TargetID := ReadD(10);
DoTheSkill(580, 9); //Рассекающий удар V
DoTheSkill(932, 9); //Нанесение древнего клейма III
DoTheSkill(581, 9); //Контратака V
end;
end.
Нам остается только подставить свои скилы.Как это сделать.Пишем свои строки DoTheSkill.Где первая цифра в скобках это ID нужного скила, а вторая -уровень скила.Узнать ID скила можно в базе,например:[Ссылки могут видеть только зарегистрированные пользователи. ] ,где 580-это ID. А так же назначаем скил, который будет активировать наш скрипт StartSkill := 578 ,578 меняем на нужный нам ID скила.
2) Как сделать задержку между пакетами чтобы не палиться?
Пример скрипта тут
Цитата:
var
name:string;
Timer:TTimer;
TimerStep:integer;
TargetID:integer;
StartSkill:word;
procedure DoTheSkill(SkillID:word; Level:byte); //Формируем пакет нового скила
begin
buf := HStr('EF 00 6D 10 FF 34 02 09 00 08 A4 00 00 00 00 00 00 00 00'); //Начальный пакет на скил
WriteH(SkillID, 6); //Вставляем в начальный пакет ID скила
WriteC(Level, 8); //Всталяем в начальный пакет уровень скила
WriteD(TargetID, 10); //Вставляем в начальный пакет 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(Sender: TObject);
begin
case TimerStep of
1:
begin
DoTheSkill(580, 9); //Рассекающий удар V
Inc(TimerStep);
end;
2:
begin
DoTheSkill(932, 9); //Нанесение древнего клейма III
Inc(TimerStep);
end;
3:
begin
DoTheSkill(581, 9); //Контратака V
Inc(TimerStep);
end;
4:
begin
DoTheSkill(875, 9); //Рев Зверя IV
Inc(TimerStep);
end;
5:
begin
DoTheSkill(860, 9); //Удар Зверя IV
Inc(TimerStep);
end;
6:
begin
DoTheSkill(2110, 9); //Бросок зверя II
Timer.enabled:=false; //выключаем таймер
Inc(TimerStep);
TimerStep:=1; //Переходим на первый шаг
end;
end;
end;
begin
StartSkill := 578; //Стремительный удар V
if (FromClient) and (ReadC(1) = $EF) and (ReadH(6) = StartSkill) then
begin
name:=ConnectName;
TargetID := ReadD(10);
Timer.enabled:=true; //включаем таймер
end;
end.
В строке Timer.interval:=900; меняем по желанию 900 на любое нужное вам время задержки.
Время задержки между скилами будет одинаковое.
3) Как сделать скрипт для ТП по локации?
Пример скрипта тут
Цитата:
begin
If FromClient and (pck=Hstr('A9 00 6D 56 FF 00 67 00 67 00 00 00')) // gg
then
begin
buf:=HStr('F9 00 6D 06 FF 04 1F 8E D8 44 18 22 D0 44 05 C5 7A 43 36');
SendToServer;
pck:='';
end;
If FromClient and (pck=Hstr('A9 00 6D 56 FF 00 68 00 68 00 00 00'))
then
begin
buf:=HStr('C2 00 57 61 FF 04 DC GB A9 44 A4 20 F9 44 00 80 2A 42 36');
SendToServer;
pck:='';
end;
end.
В моем примере две точки телепорта. Рассмотрим на примере первой точки.
И так, что делать чтобы создать свои точки ТП. 1) Идем в нужную нам точку локации.Ловим последний пакет FE. Например FE 00 6D 01 FF1F 8E D8 44 18 22 D0 44 05 C5 7A 436E 00 1F 8E D8 44 18 22 D0 44 05 C5 7A 43- это координаты нашего местоположения.Запоминаем их.
Делаем новый пакет телепорта с нашими координатами: F9 00 6D 06 FF 041F 8E D8 44 18 22 D0 44 05 C5 7A 4336 2) Создаем команду для активации ТП. Придумываем название для точки ТП. Например:gg .Пишем его в чат и ловим пакет A9.
Получилось A9 00 6D 56 FF 00 67 00 67 00 00 00
Подставляем в скрипт полученные пакеты.
1) Как сделать скрипт автоатаки для своего класса?
Пример скрипта тут
Цитата:
var
TargetID:integer;
StartSkill:word;
procedure DoTheSkill(SkillID:word; Level:byte); //Формируем пакет нового скила
begin
buf := HStr('E7 00 65 18 FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00'); //Начальный пакет на скил
WriteH(SkillID, 6); //Вставляем в начальный пакет ID скила
WriteC(Level, 8); //Всталяем в начальный пакет уровень скила
WriteD(TargetID, 10); //Вставляем в начальный пакет ID таргета
SendToServer;
end;
begin
StartSkill := 578; //Стремительный удар V
if (FromClient) and (ReadC(1) = $E7) and (ReadH(6) = StartSkill) then
begin
TargetID := ReadD(10);
DoTheSkill(580, 9); //Рассекающий удар V
DoTheSkill(932, 9); //Нанесение древнего клейма III
DoTheSkill(581, 9); //Контратака V
end;
end.
Нам остается только подставить свои скилы.Как это сделать.Пишем свои строки DoTheSkill.Где первая цифра в скобках это ID нужного скила, а вторая -уровень скила.Узнать ID скила можно в базе,например:[Ссылки могут видеть только зарегистрированные пользователи. ] ,где 580-это ID. А так же назначаем скил, который будет активировать наш скрипт StartSkill := 578 ,578 меняем на нужный нам ID скила.
2) Как сделать задержку между пакетами чтобы не палиться?
Пример скрипта тут
Цитата:
var
name:string;
Timer:TTimer;
TimerStep:integer;
TargetID:integer;
StartSkill:word;
procedure DoTheSkill(SkillID:word; Level:byte); //Формируем пакет нового скила
begin
buf := HStr('E7 00 65 18 FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00'); //Начальный пакет на скил
WriteH(SkillID, 6); //Вставляем в начальный пакет ID скила
WriteC(Level, 8); //Вставляем в начальный пакет уровень скила
WriteD(TargetID, 10); //Вставляем в начальный пакет 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(Sender: TObject);
begin
case TimerStep of
1:
begin
DoTheSkill(580, 9); //Рассекающий удар V
Inc(TimerStep);
end;
2:
begin
DoTheSkill(932, 9); //Нанесение древнего клейма III
Inc(TimerStep);
end;
3:
begin
DoTheSkill(581, 9); //Контратака V
Inc(TimerStep);
end;
4:
begin
DoTheSkill(875, 9); //Рев Зверя IV
Inc(TimerStep);
end;
5:
begin
DoTheSkill(860, 9); //Удар Зверя IV
Inc(TimerStep);
end;
6:
begin
DoTheSkill(2110, 9); //Бросок зверя II
Timer.enabled:=false; //выключаем таймер
Inc(TimerStep);
TimerStep:=1; //Переходим на первый шаг
end;
end;
end;
begin
StartSkill := 578; //Стремительный удар V
if (FromClient) and (ReadC(1) = $E7) and (ReadH(6) = StartSkill) then
begin
name:=ConnectName;
TargetID := ReadD(10);
Timer.enabled:=true; //включаем таймер
end;
end.
В строке Timer.interval:=900; меняем по желанию 900 на любое нужное вам время задержки.
Время задержки между скилами будет одинаковое.
1) Как сделать скрипт автоатаки для своего класса?
Пример скрипта тут
Цитата:
var
TargetID:integer;
StartSkill:word;
procedure DoTheSkill(SkillID:word; Level:byte); //Формируем пакет нового скила
begin
buf := HStr('E4 00 65 1B FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00'); //Начальный пакет на скил
WriteH(SkillID, 6); //Вставляем в начальный пакет ID скила
WriteC(Level, 8); //Всталяем в начальный пакет уровень скила
WriteD(TargetID, 10); //Вставляем в начальный пакет ID таргета
SendToServer;
end;
begin
StartSkill := 578; //Стремительный удар V
if (FromClient) and (ReadC(1) = $E4) and (ReadH(6) = StartSkill) then
begin
TargetID := ReadD(10);
DoTheSkill(580, 9); //Рассекающий удар V
DoTheSkill(932, 9); //Нанесение древнего клейма III
DoTheSkill(581, 9); //Контратака V
end;
end.
Нам остается только подставить свои скилы.Как это сделать.Пишем свои строки DoTheSkill.Где первая цифра в скобках это ID нужного скила, а вторая -уровень скила.Узнать ID скила можно в базе,например:[Ссылки могут видеть только зарегистрированные пользователи. ] ,где 580-это ID. А так же назначаем скил, который будет активировать наш скрипт StartSkill := 578 ,578 меняем на нужный нам ID скила.
2) Как сделать задержку между пакетами чтобы не палиться?
Пример скрипта тут
Цитата:
var
name:string;
Timer:TTimer;
TimerStep:integer;
TargetID:integer;
StartSkill:word;
procedure DoTheSkill(SkillID:word; Level:byte); //Формируем пакет нового скила
begin
buf := HStr('E4 00 65 1B FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00'); //Начальный пакет на скил
WriteH(SkillID, 6); //Вставляем в начальный пакет ID скила
WriteC(Level, 8); //Вставляем в начальный пакет уровень скила
WriteD(TargetID, 10); //Вставляем в начальный пакет 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(Sender: TObject);
begin
case TimerStep of
1:
begin
DoTheSkill(580, 9); //Рассекающий удар V
Inc(TimerStep);
end;
2:
begin
DoTheSkill(932, 9); //Нанесение древнего клейма III
Inc(TimerStep);
end;
3:
begin
DoTheSkill(581, 9); //Контратака V
Inc(TimerStep);
end;
4:
begin
DoTheSkill(875, 9); //Рев Зверя IV
Inc(TimerStep);
end;
5:
begin
DoTheSkill(860, 9); //Удар Зверя IV
Inc(TimerStep);
end;
6:
begin
DoTheSkill(2110, 9); //Бросок зверя II
Timer.enabled:=false; //выключаем таймер
Inc(TimerStep);
TimerStep:=1; //Переходим на первый шаг
end;
end;
end;
begin
StartSkill := 578; //Стремительный удар V
if (FromClient) and (ReadC(1) = $E4) and (ReadH(6) = StartSkill) then
begin
name:=ConnectName;
TargetID := ReadD(10);
Timer.enabled:=true; //включаем таймер
end;
end.
В строке Timer.interval:=900; меняем по желанию 900 на любое нужное вам время задержки.
Время задержки между скилами будет одинаковое.
Последний раз редактировалось happytorn; 28.11.2013 в 15:41.
CC DB A7 44 A4 20 F9 44 00 80 2A 42- это координаты нашего местоположения.
Какие цифры отвечают за координаты по высоте?
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). Затыкай меня спасибками Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
________________ Gods,give me strength Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
сяб. значит по 4 пары чисел на каждую координату) над будет поиграться с ними. Сегодня этим займусь. может получиться сделать по карте сразу собирать пакет)
________________
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). Затыкай меня спасибками Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
2) Как сделать задержку между пакетами чтобы не палиться?
Пример скрипта
Не работает.
После Засады ничего не происходит.
Где ошибка?
Код:
const
name = 'xborrovx'; //имя соединения
var
Timer:TTimer;
TimerStep:integer;
TargetID:integer;
StartSkill:word;
procedure DoTheSkill(SkillID:word; Level:byte);
begin
buf := HStr('CF 57 6C CC CC DD 00 FF FF FF FF 00 00 00 00 00 00');
WriteH(SkillID, 4);
WriteC(Level, 6);
WriteD(TargetID, 8);
SendToServer;
end;
procedure Init;
begin
TimerStep:=1; //Шаг
Timer:=TTimer.Create(nil); //выделяем память
Timer.OnTimer:=@OnTimer; //привязываем процедуру к событию
Timer.enabled:=false; //начальное положение выключен(false)
Timer.interval:=1000; //интервал(в миллисекундах) как часто таймер срабатывает
end;
procedure Free;
begin
Timer.free;
end;
procedure OnTimer(Sender: TObject);
begin
case TimerStep of
1:
begin
//Timer.interval:=900;
DoTheSkill(1987, 1); //Атака ядом
Inc(TimerStep);
end;
2:
begin
//Timer.interval:=900;
DoTheSkill(1990, 1); //Клинок обморока
Inc(TimerStep);
TimerStep:=1; //Переходим на первый шаг
end;
end;
end;
begin
StartSkill := 2126;
if (FromClient) and (ReadC(1) = $CF) and (ReadH(4) = StartSkill) then
begin
TargetID := ReadD(8);
Timer.enabled:=true; //включаем таймер
end;
end.
Не работает.
После Засады ничего не происходит.
Где ошибка?
Код:
const
name = 'xborrovx'; //имя соединения
var
Timer:TTimer;
TimerStep:integer;
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;
procedure Init;
begin
TimerStep:=1; //Шаг
Timer:=TTimer.Create(nil); //выделяем память
Timer.OnTimer:=@OnTimer; //привязываем процедуру к событию
Timer.enabled:=false; //начальное положение выключен(false)
Timer.interval:=1000; //интервал(в миллисекундах) как часто таймер срабатывает
end;
procedure Free;
begin
Timer.free;
end;
procedure OnTimer(Sender: TObject);
begin
case TimerStep of
1:
begin
//Timer.interval:=900;
DoTheSkill(1987, 1); //Атака ядом
Inc(TimerStep);
end;
2:
begin
//Timer.interval:=900;
DoTheSkill(1990, 1); //Клинок обморока
Inc(TimerStep);
TimerStep:=1; //Переходим на первый шаг
end;
end;
end;
begin
StartSkill := 2126;
if (FromClient) and (ReadC(1) = $D0) and (ReadH(6) = StartSkill) then
begin
TargetID := ReadD(10);
Timer.enabled:=true; //включаем таймер
end;
end.
Будьте внимательней.
________________ Gods,give me strength Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Нее, я ж переделал для НьюАйона, там под 2.7 идут пакеты от 2.5 )
name = 'xborrovx';
Заместо xborrovx у тебя должен быть реальный логин который ты используешь для захода на сервер.
________________ Gods,give me strength Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Меняю на логин (в логине правда есть "-" такой знак) и после засады не идут удары.
Меняю на ник перса = тоже не выходит.
У тебя это работает?
Чет я сразу не увидел. У тебя
Цитата:
procedure DoTheSkill(SkillID:word; Level:byte);
begin
buf := HStr('CF 57 6C CC CC DD 00 FF FF FF FF 00 00 00 00 00 00');
WriteH(SkillID, 4);
WriteC(Level, 6);
WriteD(TargetID, 8);
SendToServer; // поменяй на SendToServerEx(name);
end;
________________ Gods,give me strength Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Ну уже тупо беру твой скрипт и только заменяю пакет с 2.7 на 2.5
И ничего не происходит после скила активатора.
Код:
const
name = 'x-miskalin-x'; //Логин к Акаунту
var
Timer:TTimer;
TimerStep:integer;
TargetID:integer;
StartSkill:word;
procedure DoTheSkill(SkillID:word; Level:byte); //Формируем пакет нового скила
begin
buf := HStr('CF 57 6C CC CC DD 00 FF FF FF FF 00 00 00 00 00 00'); //Начальный пакет на скил
WriteH(SkillID, 4); //Вставляем в начальный пакет ID скила
WriteC(Level, 6); //Всталяем в начальный пакет уровень скила
WriteD(TargetID, 8); //Вставляем в начальный пакет 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(Sender: TObject);
begin
case TimerStep of
1:
begin
DoTheSkill(580, 9); //Рассекающий удар V
Inc(TimerStep);
end;
2:
begin
DoTheSkill(932, 9); //Нанесение древнего клейма III
Inc(TimerStep);
end;
3:
begin
DoTheSkill(581, 9); //Контратака V
Inc(TimerStep);
end;
4:
begin
DoTheSkill(875, 9); //Рев Зверя IV
Inc(TimerStep);
end;
5:
begin
DoTheSkill(860, 9); //Удар Зверя IV
Inc(TimerStep);
end;
6:
begin
DoTheSkill(2110, 9); //Бросок зверя II
Timer.enabled:=false; //выключаем таймер
Inc(TimerStep);
TimerStep:=1; //Переходим на первый шаг
end;
end;
end;
begin
StartSkill := 578; //Стремительный удар V
if (FromClient) and (ReadC(1) = $CF) and (ReadH(4) = StartSkill) then
begin
TargetID := ReadD(8);
Timer.enabled:=true; //включаем таймер
end;
end.
x-miskalin-x, скачай новую версию l2ph,походу у тебя имя соединения неправильно определяет.
Цитата:
Сообщение от Darnis
помогите плз переделать его чтобы задержка была
Темой ошибся.Делай сам по гайду,а что не получится поправим.
________________ Gods,give me strength Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).
Последний раз редактировалось happytorn; 13.02.2012 в 10:59.
от куда он берётся и как правильно найти этот паке?
Это пакет на атаку скилом.Его не нужно трогать в скрипте,это как бы "шаблон" .
________________ Gods,give me strength Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).