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

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

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

ну вообщем то бафает , хилит , теперь бы реализовать баф каждые 20 мин возможно ли ?
cat вне форума   Ответить с цитированием
Старый 04.05.2008, 21:54   #362
Рыцарь
 
Аватар для 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   #363
Рыцарь
 
Аватар для Grinch
 
Регистрация: 29.02.2008
Сообщений: 928
Сказал Спасибо: 127
Имеет 130 спасибок в 93 сообщенях
Grinch пока неопределено
По умолчанию

Цитата:
Сообщение от forseek Посмотреть сообщение
Нужен скрипт на спойлера, чтобы сам бегал спойлил и свипал мобов один, а не в парти с командиром.
напиши... или попробуй поиском воспользоваться ну так для разнообразия
Grinch вне форума   Ответить с цитированием
Старый 06.05.2008, 15:42   #364
Новичок
 
Регистрация: 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 нажился спасибкой от:
Старый 06.05.2008, 17:39   #365
Рыцарь
 
Аватар для 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   #366
Новичок
 
Регистрация: 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   #367
Рыцарь
 
Аватар для QaK
 
Регистрация: 28.09.2007
Сообщений: 1,558
Сказал Спасибо: 71
Имеет 351 спасибок в 244 сообщенях
QaK пока неопределено
По умолчанию

cat, тебя чем предыдущий скрипт не устраивает? Чуть перенастроил под варка и вперед, а так - совсем нерационально получилось.
QaK вне форума   Ответить с цитированием
Старый 06.05.2008, 23:07   #368
Рыцарь
 
Аватар для Grinch
 
Регистрация: 29.02.2008
Сообщений: 928
Сказал Спасибо: 127
Имеет 130 спасибок в 93 сообщенях
Grinch пока неопределено
По умолчанию

QaK, с мягким знаком =) точней Квак мягко выразился держать константы в масиве динамическом эт изврат я конечно не программер, но эт из зенитници по воробьям
Grinch вне форума   Ответить с цитированием
Старый 07.05.2008, 00:07   #369
Новичок
 
Регистрация: 03.05.2008
Адрес: Тула
Сообщений: 7
Сказал Спасибо: 2
Имеет 3 спасибок в 2 сообщенях
cat пока неопределено
По умолчанию

да нет в нем ни каких извратов массив только ... остальное заимствовано, для лечения , и нормально работает ) ... осталось , как я уже говорил, добавить проверки на ману.
cat вне форума   Ответить с цитированием
Старый 07.05.2008, 01:00   #370
Рыцарь
 
Аватар для 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 вне форума   Ответить с цитированием
Ответ

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



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

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


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

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

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