Показать сообщение отдельно
Старый 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 нажился спасибкой от: