Вернуться   CoderX :: Forums > Lineage II > L2PacketHack > Скриптинг
Войти через OpenID

Скриптинг Форум посвещенный созданию скриптов для L2PacketHack

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 03.05.2008, 22:56   #1
Новичок
 
Регистрация: 03.05.2008
Адрес: Тула
Сообщений: 7
Сказал Спасибо: 2
Имеет 3 спасибок в 2 сообщенях
cat пока неопределено
По умолчанию

2F EF 03 00 00 00 00 00 00 00 chant of battle
48 A0 C7 00 00 9B 98 02 00 91 EC FF FF C1 92 00 00 00 00 00 00 chant of sheilding
это из пакета реквест меджик скилл юс... то это или я где то ошибся?

Добавлено через 8 часов 23 минуты
всё понял ошибку , для начинающих , каждый скил начинаеться с "2F", затем в 16-ом код скила

Последний раз редактировалось cat, 03.05.2008 в 22:56. Причина: Добавлено сообщение
cat вне форума   Ответить с цитированием
Старый 04.05.2008, 10:13   #2
Рыцарь
 
Аватар для Grinch
 
Регистрация: 29.02.2008
Сообщений: 928
Сказал Спасибо: 127
Имеет 130 спасибок в 93 сообщенях
Grinch пока неопределено
По умолчанию

cat,
delphi Код:
const        PPbafer = 'НИК';// ник бафера        buff =        ['2F 3D 04 00 00 00 00 00 00 00 ',   //Acumen         '2F 26 04 00 00 00 00 00 00 00  ',   //BtS         '2F 15 04 00 00 00 00 00 00 00 ',   //BtB         '2F 2C 04 00 00 00 00 00 00 00 ',   //Might         '2F 10 04 00 00 00 00 00 00 00 ',   //Shield         '2F 36 04 00 00 00 00 00 00 00 ',   //concentration         '2F 35 04 00 00 00 00 00 00 00 ',   //Focus         '2F DA 04 00 00 00 00 00 00 00 ',   //DW         '2F D8 04 00 00 00 00 00 00 00 ',   //Точночть         '2F B4 04 00 00 00 00 00 00 00 ',   //WW         '2F 0C 04 00 00 00 00 00 00 00 ',   //   MB         '2F 0B 04 00 00 00 00 00 00 00 ',   //   Mental         '2F 3E 04 00 00 00 00 00 00 00 ',   //   Haste         '2F 48 05 00 00 00 00 00 00 00 ',   // EP         '2F DB 04 00 00 00 00 00 00 00 '];  // щит         SS=0;     var         prof,x,y, SkilID, SkilHIT,PPbaferID : integer;         timer1, timer2: TTimer;         Target: string;     procedure Say(msg:string);     begin     buf:=hstr('4A 00 00 00 00');     WriteD(2);     WriteS(PPbafer);     WriteS(msg);     SendToClientEx(PPbafer);     end;     procedure Init; //Вызывается при включении скрипта     begin     //делаем таймер     timer1:=TTimer.Create(nil);     timer1.OnTimer:=@OnTimer1;     timer1.enabled:=false;//по начал не баффаемся, толко по команде     timer1.interval:=200;// 0,2 секунды - начальный интервал таймера     end;     procedure InitStats;     begin         PPbaferID:=ReadD(18);        //Say('ID'+inttostr(PPbaferID));     end;      procedure OnTimer1(Sender: TObject);     begin     if x = 1 then     Say('Начинаем баффаццо');     buf:=hstr(buff[x]);             //берем нужный элемент из массива     SendToServerEx(PPbafer);     inc(x);                        //увеличиваем х на 1     if x = 15 then     begin Say('Баффаццо вроде закончили');           Timer1.Enabled:=False;    //закончили баффаццо - таймер отключили           x:=0;     end;   //  Say('x='+inttostr(x))// так что б мониторить измение в чате     end;     procedure Free; //Вызывается при выключении скрипта     begin     timer1.enabled:=false;     timer1.Free;     x:=0;     end;     //основная часть скрипта     //вызывается при приходе каждого пакета если скрипт включен     begin     if pck='' then exit;     if FromServer and (ConnectName=PPbafer) and (pck[1]=#$04)  then InitStats;     if FromServer and (ConnectName=PPbafer) and ((pck[1]=#$48) and (ReadD(18)=SS)) then exit ;     if FromServer and (ConnectName=PPbafer) and (pck[1]=#$48)and (ReadD(2)=PPbaferID) then        begin        SkilHIT:=ReadD(18);        SkilID:= ReadD(10);        Timer1.Interval:=SkilHit+100;      //ставим время отката скила   +100 константа смешения тупо что б паузу сделать маленькую      //  Say('Скил='+inttostr(SkilID)); // иди скрипта так для самопроверке кстате можно тестить бафы на ускорение каста и шмот     //   Say('Откат='+inttostr(SkilHIT)); //время каста скила        end;     if FromClient and (pck[1]+pck[2]=#$38#$31) and (ConnectName=PPbafer)and(pck[3]=#$00) and (pck[4]=#$00) and (pck[5]=#$00)and (pck[6]=#$09) then  //1- нажимаем в любой чат окуратней я пакет не убил     begin     pck:='';       prof:=1;       Timer1.Enabled:=True//врубаем таймер     end;     //  if prof=1 then begin       //    y:=1;       //    prof:=0;      // end;     end.
вот тут каст сдлан по изменению скорости каста скилов варк не самый быстрый но не надо парится с таймером

Последний раз редактировалось NLObP, 07.05.2008 в 01:11. Причина: вставил тэги [HIGHLIGHT="delphi"]...[/HIGHLIGHT]
Grinch вне форума   Ответить с цитированием
За это сообщение Grinch нажился 5 спасибками от:
Старый 04.05.2008, 14:53   #3
Новичок
 
Регистрация: 03.05.2008
Адрес: Тула
Сообщений: 7
Сказал Спасибо: 2
Имеет 3 спасибок в 2 сообщенях
cat пока неопределено
По умолчанию

ну вообщем то бафает , хилит , теперь бы реализовать баф каждые 20 мин возможно ли ?
cat вне форума   Ответить с цитированием
Старый 04.05.2008, 21:54   #4
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

типа этого добавь:
delphi Код:
var   timer3: TTimer; procedure Init; begin   //баффы   timer3:=TTimer.Create(nil);   timer3.OnTimer:=@OnBuff; //   timer3.enabled:=false; // таймер по умолчанию выключен   timer3.interval:=60000; // первый баф через 60 сек end; procedure OnBuff(Sender: TObject); //баффы begin   if (MyID<>0) and (sit=false) then begin     timer3.interval:=1 200 000; //каждые 20 мин (за вычетом времени самих бафов)     timer1.enabled:=true; //вкл. бафы   end; end;

Последний раз редактировалось NLObP, 04.05.2008 в 22:01.
NLObP вне форума   Ответить с цитированием
За это сообщение NLObP нажился спасибкой от:
Старый 06.05.2008, 15:28   #5
Рыцарь
 
Аватар для Grinch
 
Регистрация: 29.02.2008
Сообщений: 928
Сказал Спасибо: 127
Имеет 130 спасибок в 93 сообщенях
Grinch пока неопределено
По умолчанию

Цитата:
Сообщение от forseek Посмотреть сообщение
Нужен скрипт на спойлера, чтобы сам бегал спойлил и свипал мобов один, а не в парти с командиром.
напиши... или попробуй поиском воспользоваться ну так для разнообразия
Grinch вне форума   Ответить с цитированием
Старый 06.05.2008, 15:42   #6
Новичок
 
Регистрация: 03.05.2008
Адрес: Тула
Сообщений: 7
Сказал Спасибо: 2
Имеет 3 спасибок в 2 сообщенях
cat пока неопределено
По умолчанию

20 мин баф так и не хочет работать, может кто подскажет где косячу
delphi Код:
var     Bot1X,Bot1Y,Bot1Z:string; //координаты варки     IDAssistTarget:string; //таргет командира     rnd:integer// вспомогательная для случайного события     bafWC: array [1..100] of string; //список бафов WС     NameKom,NameBot1:string; //имена чаров учавствующих в процессе     MaxHPKom,MaxHPBot1:integer; //максимальные уровни ХП (лимиты)     CurHPKom,CurHPBot1:integer; //текущие значения ХП     IDKomandos,IDbot1:string; // идешники командира и варки     timer4,timer3:TTimer; //таймеры бафа     i,x:integer;     tempS:String;     ///////////////////////////////////////// buff's////////////////////////////////////////////// procedure OnTimer4 (Sender: TObject); begin case x of 1: begin //выделяем командира, эмулируя щелчек мыши buf:=hstr('04') + IDKomandos + Bot1X + Bot1Y + Bot1Z + hstr('00'); SendToServerEX(NameBot1); buf:=bafWC[6]; SendToServerEx(NameBot1); x:=x+1; end; 2: begin buf:=bafWC[1]; SendToServerEx(NameBot1); x:=x+1; end; 3: begin buf:=bafWC[2]; SendToServerEx(NameBot1); x:=x+1; end; 4: begin buf:=bafWC[3]; SendToServerEx(NameBot1); x:=x+1; end; 5: begin buf:=bafWC[4]; SendToServerEx(NameBot1); x:=x+1; end; 6: begin buf:=bafWC[5]; SendToServerEx(NameBot1); x:=x+1; end; 7: begin buf:=bafWC[7]; SendToServerEx(NameBot1); x:=0; timer4.enabled:=false; end; end; end; ///////////////////////// // buff 20min procedure OnTimer3 (Sender: TObject); //баффы через 20 мин begin     timer3.interval:=1150000; //каждые 20 мин (за вычетом времени самих бафов)     timer4.enabled:=true;//вкл. бафы   end;     //*************************БЕЖИМ ЗА ЛИДЕРОМ*******************************************     //процедура заставляет бежать ботов за лидером     procedure BotBeg;     begin     //проверяем условие чтоб координаты ботов небыли равными '' и ИД был перехвачен     if  IDKomandos <> '' then         begin        //выделяем командира, эмулируя щелчек мыши         buf:=hstr('04') + IDKomandos + Bot1X + Bot1Y + Bot1Z + hstr('00');         if IDBot1<>'' then SendToServerEX(NameBot1);         //бежим за командиром эмулируя повторный щелчек мыши по таргету         buf:=hstr('04') + IDKomandos + Bot1X + Bot1Y + Bot1Z + hstr('00');         if IDBot1<>'' then SendToServerEX(NameBot1);         end;      end;     procedure Init; //Вызывается при включении скрипта     begin     NameKom:='XXX';              //командир     NameBot1:='XXX';       //варка         //список бафов:     //само собой вы его можете расширить новыми бафами которых тут нет..     //это те бафы кторые я использую от ПП      bafWC[1]:=hstr('2F EF 03 00 00 00 00 00 00 00')//chant of battle      bafWC[2]:=hstr('2F E5 04 00 00 00 00 00 00 00')//chant of rage      bafWC[3]:=hstr('2F F1 03 00 00 00 00 00 00 00')//chant of sheilding      bafWC[4]:=hstr('2F E4 04 00 00 00 00 00 00 00')//chant of evansion      bafWC[5]:=hstr('2F EE 03 00 00 00 00 00 00 00')//chant of fire ( m def )      bafWC[6]:=hstr('2F EA 03 00 00 00 00 00 00 00')//flame chant ( acum )      bafWC[7]:=hstr('2F 1E 05 00 00 00 00 00 00 00')// vampiric  //при старте скрипта значения переменных =0     //поетому скрипт подумает что у всех 0 ХП и начнется хаос.. все начнут друг друга хилить без остановки     //чтоб избежать етого выставим начальные значения.. то что ХП у нас- дожопы.. много.. 15к.. т.е. хилить ненадо.     //а потом скрипт сам захватит текущее знасение.. и всё коректно будет...     CurHPKom:=15000;     CurHPBot1:=15000;         //дело в том что скрипт расчитывает хилить или нет в зависимости от % от шкалы.. если вся шкала =0 (по дефолту)     //то ето както некоректно там будет хотя вроде пофиг..     //но для коректности понимания процесса мы пишем что максимальная шкала ХП у нас оч маленькая а текущие значения- оч большие..     //поетому никакие хилы небудут происходить при старте скрипта..     MaxHPKom:=10;     MaxHPBot1:=10;    //новый баф кастовать через 4 секунды       timer4:=TTimer.Create(nil);       timer4.OnTimer:=@OnTimer4; //       timer4.enabled:=false; //       timer4.interval:=5300//5300 для варки       // добавляем функцию что бы бафал сам каждые 20 мин ( NLobP )        //баффы   timer3:=TTimer.Create(nil);   timer3.OnTimer:=@OnTimer3; //   timer3.enabled:=true; // таймер по умолчанию выключен   timer3.interval:=60000; // первый баф через 60 сек     // ЗАПРОС НА ОТКРЫТИЕ ИНВЕНТОРЯ!!!! ДЛЯ ЗАХВАТА ИДЕШНИКА!     // чтобы принудительно вызвать от сервера пакет ЮЗЕР ИНФО в котором ИД указан     //а также для того чтобы захвватить ИД банок для питья         buf:=hstr('0F');         SendToServerEX(NameKom);         SendToServerEX(NameBot1);     end;     procedure Free; //Вызывается при выключении скрипта     begin     timer4.Free;     end;     //основная часть скрипта     //вызывается при приходе каждого пакета если скрипт включен     begin     //для тго чтоб 2-3 скрипта коректно работали  одновременно..     if pck='' then exit// нех пустые пакеты обрабатывать типа       //*******************ЗАХВАТ КООРДИНАТ***************************************************     //если принят пакет от клиента с кординатами бота то     if FromClient then     if ConnectName=NameBot1 then     if pck[1]=#$48 then         begin     //запоминаем координаты         Bot1X:= pck[2] + pck[3] + pck[4] + pck[5];         Bot1Y:= pck[6] + pck[7] + pck[8] + pck[9];         Bot1Z:= pck[10] + pck[11] + pck[12] + pck[13];         end;       //********************ОСТСЛЕЖИВАЕМ ТРУПАКИ********************************************************     //если кто то умер то приходит пакет DIE.. то хилить его ненадо...     //нефиг трупы хилить...     //для того чтоб трупяков боты не хилили ставим кодом то что ХП (текущее) у них до жопы... т.е. 15к     if FromServer then     if ConnectName=NameKom then     if pck[1]=#$06 then     if pck[2] + pck[3] + pck[4] + pck[5] = IDKomandos then       CurHPKom:=15000;     if FromServer then     if ConnectName=NameBot1 then     if pck[1]=#$06 then     if pck[2] + pck[3] + pck[4] + pck[5] = IDBot1 then       CurHPBot1:=15000;           //*************************УЗНАЕМ ЛИМИТЫ ХП и МП и ИД***********************************************     //из пакета UserInfo который приходит во время бафа и не только     //как тока скрипт начинает свою работу то он на все аки отправляет запрос на открытие ИНВЕНТОРЯ     //вместе с ответом сервера всегда приходит пакет ЮЗЕР ИНФО.. из етого замечательного пакета мы считываем  максимальные значения ХП и МП     //а так жэ  ИД чара (бота- бафера)     //КОМАНДИР     if FromServer then     if ConnectName = NameKom then     if pck[1]=#$04 then       begin       IDKomandos:=pck[18]+pck[19]+pck[20]+pck[21]; //тут выдергиваем ИД чара       i:=22;       tempS:=readS(i); // ето используем для удобства.. имя типа пропускаем.. потому как каждый раз оно из разного кол-ва букв состоит.. в скобках переменная автоматом увеличивается на кол-во букв (ну там по формуле.. в юникоде 1 буква=2 байта, и символ окончания строки еще 00 00)       i:=i+48; // через 48 байтофъ после имени указывается лимиты и текущие значения для ХП и МП     //запоминаем их.. тут нам не особо важны текущие значения.. хотя лишний раз не помешают     //но важно- максимальное значение- ЛИМИТЫ       MaxHPKom:=readD(i);       CurHPKOM:=readD(i);       end;     //1-й бот     if FromServer then     if ConnectName = NameBot1 then     if pck[1]=#$04 then       begin       IDBot1:=pck[18]+pck[19]+pck[20]+pck[21];       i:=22;       tempS:=readS(i);       i:=i+48;       MaxHPBot1:=readD(i);       CurHPBot1:=readD(i);       end;     //*************************СЛЕДИМ ЗА ХП и МП******************************************           if FromServer then       if ConnectName = NameKom then       if pck[1]=#$0e then       if (pck[2] + pck[3] + pck[4] + pck[5] + pck[6] = IDKomandos + #$04) then       begin     //считываем текущее состояние ХП!!-)         CurHPKom:=ReadD(14);     //ну собственно ето уже можно править под желания каждого:     //если жизни текущие меньше 0,5 от шкалы (50%) то..          if (CurHPKom < round(MaxHPKom*0.5)) then          begin           buf:=hstr('04') + IDKomandos + Bot1X + Bot1Y + Bot1Z + hstr('00');           SendToServerEX(NameBot1);           buf:=hstr('2F CD 04 00 00 00 00 00 00 00'); // chant of life           SendToServerEX(NameBot1);          end;          end;               //socialHELLO буф Война не по ассисту а по ИДкомандира т.е самого его      if FromClient then       if ConnectName=NameKom then       if pck[1]+pck[2]=hstr('1B 02') then    // 02 -   socialHELLO       begin  //убиваем этот пакет, чтоб сервер его не получил   pck:=''; // бафы timer4.enabled:=true; x:=1; exit; end;         end.
P.S велосипед не изобретал --> VORON, Grinch, NLOpP (c)

Последний раз редактировалось NLObP, 07.05.2008 в 01:10. Причина: вставил тэги [HIGHLIGHT="delphi"]...[/HIGHLIGHT]
cat вне форума   Ответить с цитированием
За это сообщение cat нажился спасибкой от:
Старый 07.05.2008, 01:00   #7
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию

cat, проверь скрипт плиз
delphi Код:
var     Bot1X,Bot1Y,Bot1Z:string; //координаты варки     IDAssistTarget:string; //таргет командира     rnd:integer// вспомогательная для случайного события     bafWC: array [1..100] of string; //список бафов WС     NameKom,NameBot1 : string; //имена чаров учавствующих в процессе     MaxHPKom,MaxHPBot1 : integer; //максимальные уровни ХП (лимиты)     CurHPKom,CurHPBot1 : integer; //текущие значения ХП     IDKomandos,IDbot1:string; // идешники командира и варки     timer1,timer2 : TTimer; //таймеры бафа     i,x:integer;     tempS:String; procedure Init; //Вызывается при включении скрипта begin   NameKom:='XXX';        //командир   NameBot1:='XXX';       //варка   //список бафов:   //само собой вы его можете расширить новыми бафами которых тут нет..   //это те бафы кторые я использую от ПП   bafWC[1]:=hstr('2F EF 03 00 00 00 00 00 00 00')//chant of battle   bafWC[2]:=hstr('2F E5 04 00 00 00 00 00 00 00')//chant of rage   bafWC[3]:=hstr('2F F1 03 00 00 00 00 00 00 00')//chant of sheilding   bafWC[4]:=hstr('2F E4 04 00 00 00 00 00 00 00')//chant of evansion   bafWC[5]:=hstr('2F EE 03 00 00 00 00 00 00 00')//chant of fire ( m def )   bafWC[6]:=hstr('2F EA 03 00 00 00 00 00 00 00')//flame chant ( acum )   bafWC[7]:=hstr('2F 1E 05 00 00 00 00 00 00 00')//vampiric   //при старте скрипта значения переменных =0   //поэтому скрипт подумает что у всех 0 ХП и начнется хаос.. все начнут друг друга хилить без остановки   //чтоб избежать етого выставим начальные значения.. то что ХП у нас- дожопы.. много.. 15к.. т.е. хилить ненадо.   //а потом скрипт сам захватит текущее знасение.. и всё коректно будет...   CurHPKom:=15000;   CurHPBot1:=15000;   //дело в том что скрипт расчитывает хилить или нет в зависимости от % от шкалы.. если вся шкала =0 (по дефолту)   //то ето както некоректно там будет хотя вроде пофиг..   //но для коректности понимания процесса мы пишем что максимальная шкала ХП у нас оч маленькая а текущие значения- оч большие..   //поетому никакие хилы небудут происходить при старте скрипта..   MaxHPKom:=10;   MaxHPBot1:=10;   // добавляем функцию что бы бафал сам каждые 20 мин ( NLobP )   //баффы   timer1:=TTimer.Create(nil);   timer1.OnTimer:=@Ontimer1;   timer1.enabled:=true; // таймер по умолчанию выключен   timer1.interval:=60000; // первый баф через 60 сек   //новый баф кастовать через 4 секунды   timer2:=TTimer.Create(nil);   timer2.OnTimer:=@Ontimer2; //   timer2.enabled:=false; //   timer2.interval:=5300//5300 для варки   // ЗАПРОС НА ОТКРЫТИЕ ИНВЕНТОРЯ!!!! ДЛЯ ЗАХВАТА ИДЕШНИКА!   // чтобы принудительно вызвать от сервера пакет ЮЗЕР ИНФО в котором ИД указан   //а также для того чтобы захвватить ИД банок для питья   buf:=hstr('0F');   SendToServerEX(NameKom);   SendToServerEX(NameBot1); end; procedure Free; //Вызывается при выключении скрипта begin   timer1.Free;   timer2.Free; end; ///////////////////////// // buff 20min procedure Ontimer1 (Sender: TObject); //баффы через 20 мин begin   timer1.interval:=1200000; //каждые 20 мин (за вычетом времени самих бафов)   x:=1;   timer2.enabled:=true;//вкл. бафы end; ///////////////////////////////////////// buff's////////////////////////////////////////////// procedure Ontimer2 (Sender: TObject); begin   case x of     1: begin       //выделяем командира, эмулируя щелчек мыши       buf:=hstr('04')+IDKomandos+Bot1X+Bot1Y+Bot1Z+hstr('00');       SendToServerEX(NameBot1);       buf:=bafWC[6];       SendToServerEx(NameBot1);       inc(x);     end;     2: begin       buf:=bafWC[1];       SendToServerEx(NameBot1);       inc(x);     end;     3: begin       buf:=bafWC[2];       SendToServerEx(NameBot1);       inc(x);     end;     4: begin       buf:=bafWC[3];       SendToServerEx(NameBot1);       inc(x);     end;     5: begin       buf:=bafWC[4];       SendToServerEx(NameBot1);       inc(x);     end;     6: begin       buf:=bafWC[5];       SendToServerEx(NameBot1);       inc(x);     end;     7: begin       buf:=bafWC[7];       SendToServerEx(NameBot1);       x:=0;       timer2.enabled:=false;     end;   end; end; //*************************БЕЖИМ ЗА ЛИДЕРОМ******************************************* //процедура заставляет бежать ботов за лидером procedure BotBeg; begin   //проверяем условие чтоб координаты ботов небыли равными '' и ИД был перехвачен   if  IDKomandos <> '' then  begin     //выделяем командира, эмулируя щелчек мыши     buf:=hstr('04') + IDKomandos + Bot1X + Bot1Y + Bot1Z + hstr('00');     if IDBot1<>'' then SendToServerEX(NameBot1);     //бежим за командиром эмулируя повторный щелчек мыши по таргету     buf:=hstr('04') + IDKomandos + Bot1X + Bot1Y + Bot1Z + hstr('00');     if IDBot1<>'' then SendToServerEX(NameBot1);   end; end; //основная часть скрипта //вызывается при приходе каждого пакета если скрипт включен begin   //****************************************************************************   //для того чтоб 2-3 скрипта коректно работали  одновременно..   if pck='' then exit// нех пустые пакеты обрабатывать типа   //****************************************************************************   if (ConnectName=NameBot1) and FromClient then begin     case pck[1] of       //*******************ЗАХВАТ КООРДИНАТ***************************************************       //если принят пакет от клиента с кординатами бота то       #$48: begin         //запоминаем координаты         Bot1X:= pck[2] + pck[3] + pck[4] + pck[5];         Bot1Y:= pck[6] + pck[7] + pck[8] + pck[9];         Bot1Z:= pck[10] + pck[11] + pck[12] + pck[13];       end;       #$1B: begin         case ReadD(2) of           //социальное действие Hello для начала ловли           2: begin             //вкл. бафы             timer1.enabled:=true;             //убиваем этот пакет, чтоб сервер его не получил             pck:='';             exit;           end;         end;       end;     end;   end;   //****************************************************************************   if (ConnectName=NameKom) and FromServer then begin     case pck[1] of       //********************ОСТСЛЕЖИВАЕМ ТРУПАКИ********************************************************       //если кто то умер то приходит пакет DIE.. то хилить его ненадо...       //нефиг трупы хилить...       //для того чтоб трупяков боты не хилили ставим кодом то что ХП (текущее) у них до жопы... т.е. 15к       //КОМАНДИР       #$06: begin         if pck[2]+pck[3]+pck[4]+pck[5]=IDKomandos then CurHPKom:=15000;       end;       //*************************УЗНАЕМ ЛИМИТЫ ХП и МП и ИД***********************************************       //из пакета UserInfo который приходит во время бафа и не только       //как тока скрипт начинает свою работу то он на все аки отправляет запрос на открытие ИНВЕНТОРЯ       //вместе с ответом сервера всегда приходит пакет ЮЗЕР ИНФО.. из етого замечательного пакета мы считываем  максимальные значения ХП и МП       //а так жэ  ИД чара (бота- бафера)       //КОМАНДИР       #$04: begin         IDKomandos:=pck[18]+pck[19]+pck[20]+pck[21]; //тут выдергиваем ИД чара         i:=22;         tempS:=readS(i); //ето используем для удобства.. имя типа пропускаем.. потому как каждый раз оно из разного кол-ва букв состоит.. в скобках переменная автоматом увеличивается на кол-во букв (ну там по формуле.. в юникоде 1 буква=2 байта, и символ окончания строки еще 00 00)         i:=i+48; //через 48 байтофъ после имени указывается лимиты и текущие значения для ХП и МП         //запоминаем их.. тут нам не особо важны текущие значения.. хотя лишний раз не помешают         //но важно- максимальное значение- ЛИМИТЫ         MaxHPKom:=readD(i);         CurHPKOM:=readD(i);       end;       //*************************СЛЕДИМ ЗА ХП и МП******************************************       #$0E: begin         if (pck[2]+pck[3]+pck[4]+pck[5]+pck[6]=IDKomandos+#$04) then begin           //считываем текущее состояние ХП!!-)           CurHPKom:=ReadD(14);           //ну собственно ето уже можно править под желания каждого:           //если жизни текущие меньше 0,5 от шкалы (50%) то..           if (CurHPKom < round(MaxHPKom*0.5)) then begin             buf:=hstr('04') + IDKomandos + Bot1X + Bot1Y + Bot1Z + hstr('00');             SendToServerEX(NameBot1);             buf:=hstr('2F CD 04 00 00 00 00 00 00 00'); //chant of life             SendToServerEX(NameBot1);           end;         end;       end;     end;   end;   //****************************************************************************   if (ConnectName=NameBot1) and FromServer then begin     case pck[1] of       //********************ОСТСЛЕЖИВАЕМ ТРУПАКИ********************************************************       //если кто то умер то приходит пакет DIE.. то хилить его ненадо...       //нефиг трупы хилить...       //для того чтоб трупяков боты не хилили ставим кодом то что ХП (текущее) у них до жопы... т.е. 15к       //БОТ1       #$06: begin         if pck[2]+pck[3]+pck[4]+pck[5]=IDBot1 then CurHPBot1:=15000;       end;       //*************************УЗНАЕМ ЛИМИТЫ ХП и МП и ИД***********************************************       //из пакета UserInfo который приходит во время бафа и не только       //как тока скрипт начинает свою работу то он на все аки отправляет запрос на открытие ИНВЕНТОРЯ       //вместе с ответом сервера всегда приходит пакет ЮЗЕР ИНФО.. из етого замечательного пакета мы считываем  максимальные значения ХП и МП       //а так жэ  ИД чара (бота- бафера)       //БОТ1       #$04: begin         if pck[1]=#$04 then begin           IDBot1:=pck[18]+pck[19]+pck[20]+pck[21];           i:=22;           tempS:=readS(i);           i:=i+48;           MaxHPBot1:=readD(i);           CurHPBot1:=readD(i);         end;       end;     end;   end; end.
NLObP вне форума   Ответить с цитированием
Старый 06.05.2008, 17:39   #8
Рыцарь
 
Аватар для Grinch
 
Регистрация: 29.02.2008
Сообщений: 928
Сказал Спасибо: 127
Имеет 130 спасибок в 93 сообщенях
Grinch пока неопределено
По умолчанию

хм извени твой скрипт для меня великовать не могу концов найти для смотри скрипт БД танцует нонстоп:
delphi Код:
const //баффы b1='2F 0F 01 00 00 00 00 00 00 00';    // Wариор b2='2F 13 01 00 00 00 00 00 00 00 ';    // Хаст БД b3='2F 36 01 00 00 00 00 00 00 00'; var IDPartyMember, IDAssistTarget: String; //ИД командира и ИД его таргета и Собственный ИД CoordBufX, CoordBufY, CoordBufZ :String; //координаты бота NameBuffer, NameKomandos : String; // Имена x: integer; timer1: TTimer; timer2: TTimer; // ну процедура бега как я понял тупо таргет по командиру :) procedure bRun; begin      if (CoordBufX <> '') and (IDPartyMember <> '') then      begin           //выделяем командира, эмулируя щелчек мыши           buf:=hstr('04') + IDPartyMember + CoordBufX + CoordBufY + CoordBufZ + hstr('00');           SendToServerEX(NameBuffer);           //бежим за командиром эмулируя повторный щелчек мыши по таргету           buf:=hstr('04') + IDPartyMember + CoordBufX + CoordBufY + CoordBufZ + hstr('00');           SendToServerEX(NameBuffer);      end; end; //сам ребаф таймер и колисество наращиваем сами только копируя под цифрой один и ставим перед // цифрой 3 ну и перебиваем соответвено что б не повторялись цыфры procedure OnTimer(Sender: TObject); begin case x of 1: begin     buf:=hstr(b1);     SendToServerEx(NameBuffer);     x:=x+1;     end;      2: begin     buf:=hstr(b2);     SendToServerEx(NameBuffer);      x:=x+1;     end;     3: begin     buf:=hstr(b3);     SendToServerEx(NameBuffer);      x:=x+1;    end;     4: begin         bRun;         SendToServerEx(NameBuffer);         x:=x+1;         timer1.enabled:=false;     end; 5: begin SendToServerEx(NameBuffer);        x:=0;        timer2.enabled:=false;        timer1.enabled:=false;//стацевали самое смешное как мне казалось реденса не должно быть        end;     end; end; procedure OnTimer2(Sender: TObject);     begin         timer1.enabled:=true;          x:=1;     end; procedure Init; //Вызывается при включении скрипта begin      NameBuffer:='xxZZxxZZxx'; //ну имя БД или свс у кого что есть      NameKomandos:='yyZZyyZZyy';     //командоса имя      timer1:=TTimer.Create(nil);      timer1.OnTimer:=@OnTimer;      timer1.enabled:=false;      timer1.interval:=3000;      x:=0;      timer2:=TTimer.Create(nil);     timer2.OnTimer:=@OnTimer2;     timer2.enabled:=false;     timer2.interval:=127000;     // тут короче по формуле что б мана не летела у свса или бд                                   // кол. песен в бафе * 2000 +1000+120000   =2*2000+1000+120000=125000 end; procedure Free; //Вызывается при выключении скрипта begin     timer1.Free;     timer2.Free; end; //основная часть скрипта //вызывается при приходе каждого пакета если скрипт включен // это часть для меня осталась тайна begin      if pck='' then exit;      //если от сервака принят пакет с ИД и Координатами членов пати то      if FromServer and (pck[1]=#$a7) then      begin           //запоминаем ИД командира           IDPartyMember:=pck[6] + pck[7] + pck[8] + pck[9];      end;    //если принят пакет от клиента с кординатами бафера то    if FromClient and (ConnectName=NameBuffer) and (pck[1]=#$48)  then    begin         //запоминаем координаты         CoordBufX:= pck[6] + pck[7] + pck[8] + pck[9];         CoordBufY:= pck[10] + pck[11] + pck[12] + pck[13];         CoordBufZ:= pck[14] + pck[15] + pck[16] + pck[17];    end;    //далее идут управляющие команды // если КОМАНДИР пишет в пати чат цифру "4" (ребаф)  как я понял это (pck[6]=#$03)   // ксли убрать этот байт то в любой, но кому как мне так удобней    if FromClient and (ConnectName=NameKomandos)and (pck[1]=#$38)  then       if (pck[2]=#$31) and (pck[3]=#$00) and (pck[4]=#$00) and (pck[5]=#$00)and (pck[6]=#$03) then       begin            //убиваем этот пакет, чтоб сервер его не получил            pck:='';            //Бафер БЕЖИТ за КОМАНДИРОМ            bRun;            //выйти из рабочей части скрипта чтобы другие услови не проверяли убитый пакет нулевой длинны            exit;       end;   // если КОМАНДИР пишет в пати чат цифру "4" (ребаф)  как я понял это (pck[6]=#$03)   // ксли убрать этот байт то в любой, но кому как мне так удобней        if FromClient and (ConnectName=NameKomandos)and (pck[1]=#$38)  then       if (pck[2]=#$34) and (pck[3]=#$00) and (pck[4]=#$00) and (pck[5]=#$00)and (pck[6]=#$03) then       begin            //убиваем этот пакет, чтоб сервер его не получил            pck:='';            timer1.enabled:=true;            timer2.enabled:=true;             x:=1;            //выйти из рабочей части скрипта чтобы другие услови не проверяли убитый пакет нулевой длинны            exit;       end; // вырубаем скрипт     if FromClient and (ConnectName=NameKomandos)and (pck[1]=#$38)  then      if (pck[2]=#$30) and (pck[3]=#$00) and (pck[4]=#$00) and (pck[5]=#$00)and (pck[6]=#$03) then      begin           //убиваем этот пакет, чтоб сервер его не получил           pck:='';           timer1.enabled:=false;           timer2.enabled:=false;            x:=1;           //выйти из рабочей части скрипта чтобы другие услови не проверяли убитый пакет нулевой длинны           exit;      end; end.[/code]
Добавлено через 8 минут
и по пунктам напиши что делает твой скрипт с первого приближения твои задачи можно проще реализовать.

Последний раз редактировалось Grinch, 21.05.2008 в 16:17. Причина: Добавлено сообщение
Grinch вне форума   Ответить с цитированием
За это сообщение Grinch нажился спасибкой от:
Старый 06.05.2008, 17:56   #9
Новичок
 
Регистрация: 03.05.2008
Адрес: Тула
Сообщений: 7
Сказал Спасибо: 2
Имеет 3 спасибок в 2 сообщенях
cat пока неопределено
По умолчанию

вообщем весь прикол что при старте таймера на 20 мин баф , не передавал значение x:=1; вот и всё )) "смотрим в книгу , видим фигу"
работает вместе с LxAssistent )
надо отладить до конца, затем выложу
delphi Код:
var     Bot1X,Bot1Y,Bot1Z:string; //координаты варки     IDAssistTarget:string; //таргет командира     rnd:integer// вспомогательная для случайного события     bafWC: array [1..100] of string; //список бафов WС     NameKom,NameBot1:string; //имена чаров учавствующих в процессе     MaxHPKom,MaxHPBot1:integer; //максимальные уровни ХП (лимиты)     CurHPKom,CurHPBot1:integer; //текущие значения ХП     IDKomandos,IDbot1:string; // идешники командира и варки     timer4,timer3,timer5:TTimer; //таймера бафа     i,x:integer;     tempS:String;     ///////////////////////////////////////// buff's////////////////////////////////////////////// procedure OnTimer4 (Sender: TObject); begin case x of 1: begin //выделяем командира, эмулируя щелчек мыши buf:=hstr('04') + IDKomandos + Bot1X + Bot1Y + Bot1Z + hstr('00'); SendToServerEX(NameBot1); buf:=bafWC[6]; SendToServerEx(NameBot1); x:=x+1; end; 2: begin buf:=bafWC[1]; SendToServerEx(NameBot1); x:=x+1; end; 3: begin buf:=bafWC[2]; SendToServerEx(NameBot1); x:=x+1; end; 4: begin buf:=bafWC[3]; SendToServerEx(NameBot1); x:=x+1; end; 5: begin buf:=bafWC[4]; SendToServerEx(NameBot1); x:=x+1; end; 6: begin buf:=bafWC[5]; SendToServerEx(NameBot1); x:=x+1; end; 7: begin buf:=bafWC[7]; SendToServerEx(NameBot1); x:=0; timer4.enabled:=false; end; end; end; ///////////////////////// // buff 20min procedure Buff (Sender: TObject); //баффы через 20 мин begin x:=1; timer4.enabled:=true;//вкл. бафы timer3.interval:=1150000; //каждые 20 мин (за вычетом времени самих бафов)   end;   procedure heal (Sender: TObject);   begin           buf:=hstr('04') + IDKomandos + Bot1X + Bot1Y + Bot1Z + hstr('00');           SendToServerEX(NameBot1);           buf:=hstr('2F CD 04 00 00 00 00 00 00 00'); // chant of life           SendToServerEX(NameBot1);   timer5.enabled:=false;   end;     procedure Init; //Вызывается при включении скрипта     begin     NameKom:='XXX';              //командир     NameBot1:='XXX';       //варка         //список бафов:     //само собой вы его можете расширить новыми бафами которых тут нет..     //это те бафы кторые я использую от ПП      bafWC[1]:=hstr('2F EF 03 00 00 00 00 00 00 00')//chant of battle      bafWC[2]:=hstr('2F E5 04 00 00 00 00 00 00 00')//chant of rage      bafWC[3]:=hstr('2F F1 03 00 00 00 00 00 00 00')//chant of sheilding      bafWC[4]:=hstr('2F E4 04 00 00 00 00 00 00 00')//chant of evansion      bafWC[5]:=hstr('2F EE 03 00 00 00 00 00 00 00')//chant of fire ( m def )      bafWC[6]:=hstr('2F EA 03 00 00 00 00 00 00 00')//flame chant ( acum )      bafWC[7]:=hstr('2F 1E 05 00 00 00 00 00 00 00')// vampiric  //при старте скрипта значения переменных =0     //поетому скрипт подумает что у всех 0 ХП и начнется хаос.. все начнут друг друга хилить без остановки     //чтоб избежать етого выставим начальные значения.. то что ХП у нас- дожопы.. много.. 15к.. т.е. хилить ненадо.     //а потом скрипт сам захватит текущее знасение.. и всё коректно будет...     CurHPKom:=15000;     CurHPBot1:=15000;         //дело в том что скрипт расчитывает хилить или нет в зависимости от % от шкалы.. если вся шкала =0 (по дефолту)     //то ето както некоректно там будет хотя вроде пофиг..     //но для коректности понимания процесса мы пишем что максимальная шкала ХП у нас оч маленькая а текущие значения- оч большие..     //поетому никакие хилы небудут происходить при старте скрипта..     MaxHPKom:=10;     MaxHPBot1:=10;    //новый баф кастовать через 4 секунды       timer4:=TTimer.Create(nil);       timer4.OnTimer:=@OnTimer4; //       timer4.enabled:=false; //       timer4.interval:=5300//5300 для варки       timer5:=TTimer.Create(nil);       timer5.OnTimer:=@heal;       timer5.enabled:=false;       timer5.interval:=3000; // делаем задержку между лечениями 30 сек       // добавляем функцию что бы бафал сам каждые 20 мин ( NLobP )        //баффы   timer3:=TTimer.Create(nil);   timer3.OnTimer:=@Buff; //   timer3.enabled:=True; // таймер по умолчанию выключен   timer3.interval:=30000; // первый баф через 60 сек     // ЗАПРОС НА ОТКРЫТИЕ ИНВЕНТОРЯ!!!! ДЛЯ ЗАХВАТА ИДЕШНИКА!     // чтобы принудительно вызвать от сервера пакет ЮЗЕР ИНФО в котором ИД указан     //а также для того чтобы захвватить ИД банок для питья         buf:=hstr('0F');         SendToServerEX(NameKom);         SendToServerEX(NameBot1);     end;     procedure Free; //Вызывается при выключении скрипта     begin     timer4.Free;     timer3.Free;     timer5.Free;     end;     //основная часть скрипта     //вызывается при приходе каждого пакета если скрипт включен     begin     //для тго чтоб 2-3 скрипта коректно работали  одновременно..     if pck='' then exit// нех пустые пакеты обрабатывать типа       //*******************ЗАХВАТ КООРДИНАТ***************************************************     //если принят пакет от клиента с кординатами бота то     if FromClient then     if ConnectName=NameBot1 then     if pck[1]=#$48 then         begin     //запоминаем координаты         Bot1X:= pck[2] + pck[3] + pck[4] + pck[5];         Bot1Y:= pck[6] + pck[7] + pck[8] + pck[9];         Bot1Z:= pck[10] + pck[11] + pck[12] + pck[13];         end;       //********************ОСТСЛЕЖИВАЕМ ТРУПАКИ********************************************************     //если кто то умер то приходит пакет DIE.. то хилить его ненадо...     //нефиг трупы хилить...     //для того чтоб трупяков боты не хилили ставим кодом то что ХП (текущее) у них до жопы... т.е. 15к     if FromServer then     if ConnectName=NameKom then     if pck[1]=#$06 then     if pck[2] + pck[3] + pck[4] + pck[5] = IDKomandos then       CurHPKom:=15000;     if FromServer then     if ConnectName=NameBot1 then     if pck[1]=#$06 then     if pck[2] + pck[3] + pck[4] + pck[5] = IDBot1 then       CurHPBot1:=15000;           //*************************УЗНАЕМ ЛИМИТЫ ХП и МП и ИД***********************************************     //из пакета UserInfo который приходит во время бафа и не только     //как тока скрипт начинает свою работу то он на все аки отправляет запрос на открытие ИНВЕНТОРЯ     //вместе с ответом сервера всегда приходит пакет ЮЗЕР ИНФО.. из етого замечательного пакета мы считываем  максимальные значения ХП и МП     //а так жэ  ИД чара (бота- бафера)     //КОМАНДИР     if FromServer then     if ConnectName = NameKom then     if pck[1]=#$04 then       begin       IDKomandos:=pck[18]+pck[19]+pck[20]+pck[21]; //тут выдергиваем ИД чара       i:=22;       tempS:=readS(i); // ето используем для удобства.. имя типа пропускаем.. потому как каждый раз оно из разного кол-ва букв состоит.. в скобках переменная автоматом увеличивается на кол-во букв (ну там по формуле.. в юникоде 1 буква=2 байта, и символ окончания строки еще 00 00)       i:=i+48; // через 48 байтофъ после имени указывается лимиты и текущие значения для ХП и МП     //запоминаем их.. тут нам не особо важны текущие значения.. хотя лишний раз не помешают     //но важно- максимальное значение- ЛИМИТЫ       MaxHPKom:=readD(i);       CurHPKOM:=readD(i);       end;     //1-й бот     if FromServer then     if ConnectName = NameBot1 then     if pck[1]=#$04 then       begin       IDBot1:=pck[18]+pck[19]+pck[20]+pck[21];       i:=22;       tempS:=readS(i);       i:=i+48;       MaxHPBot1:=readD(i);       CurHPBot1:=readD(i);       end;     //*************************СЛЕДИМ ЗА ХП и МП******************************************           if FromServer then       if ConnectName = NameKom then       if pck[1]=#$0e then       if (pck[2] + pck[3] + pck[4] + pck[5] + pck[6] = IDKomandos + #$04) then       begin     //считываем текущее состояние ХП!!-)         CurHPKom:=ReadD(14);     //ну собственно ето уже можно править под желания каждого:     //если жизни текущие меньше 0,7 от шкалы (50%) то..          if (CurHPKom < round(MaxHPKom*0.5)) then           timer5.enabled:=true;          end;               //socialHELLO буф Война не по ассисту а по ИДкомандира т.е самого его      if FromClient then       if ConnectName=NameKom then       if pck[1]+pck[2]=hstr('1B 02') then    // 02 -   socialHELLO       begin  //убиваем этот пакет, чтоб сервер его не получил   pck:=''; // бафы timer4.enabled:=true; x:=1; exit; end;      //"Bow" (ПОКЛОН)- включаем автобаф       if FromClient then       if ConnectName=NameKom then       if pck[1]+pck[2]=hstr('1B 07') then         begin          pck:='';          timer3.enabled:=true;          exit;         end;         end.

Щас орк подрастёт, добавлю весь баф ) привязывать следование за командиром и остальное не стал, хорошо работает LxAssistent так что вот Бот умеет только , сам лечить на 50% хп (можно поставить по желанию) и бафать каждые 20 мин ) Думаю кому надо , могут ввести проверки на наличие маны, не сидит ли бот , и т.п. возможно пойже выложу )

Последний раз редактировалось NLObP, 07.05.2008 в 01:14. Причина: вставил тэги [HIGHLIGHT="delphi"]...[/HIGHLIGHT]
cat вне форума   Ответить с цитированием
За это сообщение cat нажился 2 спасибками от:
Старый 06.05.2008, 22:43   #10
Рыцарь
 
Аватар для QaK
 
Регистрация: 28.09.2007
Сообщений: 1,558
Сказал Спасибо: 71
Имеет 351 спасибок в 244 сообщенях
QaK пока неопределено
По умолчанию

cat, тебя чем предыдущий скрипт не устраивает? Чуть перенастроил под варка и вперед, а так - совсем нерационально получилось.
QaK вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Lineage II > L2PacketHack > Скриптинг



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

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


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

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!