запускал скрипт вроде ворона в 3.20, 3.18. выдает ошибку address 0052B420 in module l2phx.exe read address 2C37352C, до недавнего времени все работало. остальные скрипты работают. В чем трабл? что поправить нужно? Просьба не флудить, а писать только по делу. спс всем.
просьба админам скрипт засунуть в рамку как нужно. (в куче мертвых постов не нашел пояснялку как делать, а она была)
===============================================
delphi Код:
var
Bot1X,Bot1Y,Bot1Z,Bot2X,Bot2Y,Bot2Z,Bot3X,Bot3Y,Bot3Z,Bot4X,Bot4Y,Bot4Z:string; //координаты баферов
IDAssistTarget:string; //таргет командира
rnd:integer; // вспомогательная для случайного события
bafSE: array [1..100] ofstring; //список бафов ШЕ
bafPP: array [1..100] ofstring; //список бафов ПП
bafEE: array [1..100] ofstring; //список бафов ЕЕ
BafSEApplyChar: array [1..100] ofstring; //указывает ИД чара на которого нужно наложить баф с помощью ШЕ
BafSEApplyBaf: array [1..100] ofstring; //указывает какой баф наложить на чара с помощью ШЕ
BafPPApplyChar: array [1..100] ofstring; //указывает ИД чара на которого нужно наложить баф с помощью ПП
BafPPApplyBaf: array [1..100] ofstring; //указывает какой баф наложить на чара с помощью ПП
BafEEApplyChar: array [1..100] ofstring; //указывает ИД чара на которого нужно наложить баф с помощью ЕЕ
BafEEApplyBaf: array [1..100] ofstring; //указывает какой баф наложить на чара с помощью ЕЕ
NameKom,NameBot1,NameBot2,NameBot3,NameBot4:string; //имена чаров учавствующих в процессе
MaxHPKom,MaxHPBot1,MaxHPBot2,MaxHPBot3,MaxHPBot4:integer; //максимальные уровни ХП (лимиты)
MaxMPKom,MaxMPBot1,MaxMPBot2,MaxMPBot3,MaxMPBot4:integer; //максимальные уровни МП (лимиты)
MaxCPKom,MaxCPBot1,MaxCPBot2,MaxCPBot3,MaxCPBot4:integer; //максимальные уровни ЦП (лимиты)
CurHPKom,CurHPBot1,CurHPBot2,CurHPBot3,CurHPBot4:integer; //текущие значения ХП
CurMPKom,CurMPBot1,CurMPBot2,CurMPBot3,CurMPBot4:integer; //текущие значения МП
CurCPKom,CurCPBot1,CurCPBot2,CurCPBot3,CurCPBot4:integer; //текущие значения ЦП
IDKomandos,IDbot1,IDbot2,IDbot3,IDbot4:string; // идешники всех
timer3: TTimer; //для создания пати
timer4: TTimer; //мульти-баф, общий как для физика так и для мага.. нужные бафы указываются заранее в конце скрипта
BufEndSE,BufEndPP,BufEndEE:boolean;// используется в таймере (мультибаф) для указания на то что 1 из баферов закончил бафать
tick3,tick4:integer; // используется в таймере бафа для тиков.. каждый тик- новый баф..
OidHPPotion0,OidGCPPotion0,OidGHPPotion0,OidHPLexir0,OidCPLexir0:string; //обжэкт ИД зелий разных у командира
OidHPPotion1,OidGCPPotion1,OidGHPPotion1,OidHPLexir1,OidCPLexir1:string; //обжэкт ИД зелий разных у первого бота
OidHPPotion2,OidGCPPotion2,OidGHPPotion2,OidHPLexir2,OidCPLexir2:string; //обжэкт ИД зелий разных у второго
OidHPPotion3,OidGCPPotion3,OidGHPPotion3,OidHPLexir3,OidCPLexir3:string; //обжэкт ИД зелий разных
OidHPPotion4,OidGCPPotion4,OidGHPPotion4,OidHPLexir4,OidCPLexir4:string; //обжэкт ИД зелий разных
i,x:integer;
tempD:integer;
tempS:String;
//**********************МУЛЬТИБАФ***********************************************************procedure OnTimer4(Sender: TObject);
begin//если очередной баф в списке бафов для бафера = '' (окончание процесса бафа) то значит бафер уже отбафал всё что нужно, хватит бафать..if(BafPPApplyChar[tick4]='')then BufEndPP:=True;
if(BafSEApplyChar[tick4]='')then BufEndSE:=True;
if(BafEEApplyChar[tick4]='')then BufEndEE:=True;
//если все баферы закончили бафать то выключаем таймер мультибафа//ну и счетчик тиков ставим в исходное положениеif(BufEndPP=True)and(BufEndSE=True)and(BufEndEE=True)thenbegin
tick4:=1;
timer4.enabled:=false;
BufEndSE:=False;
BufEndPP:=False;
BufEndEE:=False;
//раз закончили бафать то не допускаем выполнение нижеследущего кодаexit;
end;
//бафаем чара.. используется переменные BafPPApplyChar[tick4],BafPPApplyBaf[tick4] для ПП и аналогичные для ШЕ и ЕЕ указывающие на то какому баферу ково бафать и каким бафом в текущий ТИК.//ТИК- (tick4) - ето счетчик, который изменяется на 1 с каждым новым бафом.. т.е. каждые 4 секунды (интервал таймера) тик увеличивается на 1//ТИКИ нужны чтоб каждый раз новый баф кастовать..
buf:=hstr('04') + BafPPApplyChar[tick4] + Bot2X + Bot2Y + Bot2Z + hstr('00');
if(BufEndPP=False)and(IDbot2<>'')then SendToServerEX(NameBot2);
buf:=BafPPApplyBaf[tick4];
if(BufEndPP=False)and(IDbot2<>'')then SendToServerEX(NameBot2);
buf:=hstr('04') + BafSEApplyChar[tick4] + Bot3X + Bot3Y + Bot3Z + hstr('00');
if(BufEndSE=False)and(IDbot3<>'')then SendToServerEX(NameBot3);
buf:=BafSEApplyBaf[tick4];
if(BufEndSE=False)and(IDbot3<>'')then SendToServerEX(NameBot3);
buf:=hstr('04') + BafEEApplyChar[tick4] + Bot4X + Bot4Y + Bot4Z + hstr('00');
if(BufEndEE=False)and(IDbot4<>'')then SendToServerEX(NameBot4);
buf:=BafEEApplyBaf[tick4];
if(BufEndEE=False)and(IDbot4<>'')then SendToServerEX(NameBot4);
tick4:=tick4+1;
end;
//****************************РАЗДАЧА ПРИГЛАШЕНИЙ НА ВСТУПЛЕНИЕ В ПАТИ*******************procedure OnTimer3(Sender: TObject);
beginif tick3 = 1thenbegin
buf:=hstr('2B');
//этот код закоментирован , для того чтобы не разрывать пати.. впринципе хз каму как.. если надо четко стабиильно пати создать быстро из своих ботов-баферов то раскоментить//а если ты с баферами + другие чары с тобой бегают- то ненадо раскоменчивать.. хотя можно тока баферов раскоментить тогда они свою пати порвут и снова вступят к командиру (если он лидер пати)// if IDKomandos<>'' then SendToServerEX(NameKom);// if IDBot1<>'' then SendToServerEX(NameBot1);// if IDBot2<>'' then SendToServerEX(NameBot2);// if IDBot3<>'' then SendToServerEX(NameBot3);// if IDBot4<>'' then SendToServerEX(NameBot4);end;
if tick3 = 2thenbegin
buf:=hstr('29');
writeS(namebot1);
buf:=buf + hstr('00 00 00 00');
SendToServerEX(NameKom);
end;
if tick3 = 3thenbegin
buf:=hstr('29');
writeS(namebot2);
buf:=buf + hstr('00 00 00 00');
SendToServerEX(NameKom);
end;
if tick3 = 4thenbegin
buf:=hstr('29');
writeS(namebot3);
buf:=buf + hstr('00 00 00 00');
SendToServerEX(NameKom);
end;
if tick3 = 5thenbegin
buf:=hstr('29');
writeS(namebot4);
buf:=buf + hstr('00 00 00 00');
SendToServerEX(NameKom);
end;
tick3:=tick3+1;
//ну когда всем баферам приглашение отправили то вырубаем таймерif tick3=6thenbegin
tick3:=1;
timer3.enabled:=false;
end;
end;
//*************************БЕЖИМ ЗА ЛИДЕРОМ*******************************************//процедура заставляет бежать ботов за лидеромprocedure BotBeg;
begin//проверяем условие чтоб координаты ботов небыли равными '' и ИД был перехваченif IDKomandos <> ''thenbegin//выделяем командира, эмулируя щелчек мыши
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);
//выделяем командира, эмулируя щелчек мыши
buf:=hstr('04') + IDKomandos + Bot2X + Bot2Y + Bot2Z + hstr('00');
if IDBot2<>''then SendToServerEX(NameBot2);
//бежим за командиром эмулируя повторный щелчек мыши по таргету
buf:=hstr('04') + IDKomandos + Bot2X + Bot2Y + Bot2Z + hstr('00');
if IDBot2<>''then SendToServerEX(NameBot2);
//выделяем командира, эмулируя щелчек мыши
buf:=hstr('04') + IDKomandos + Bot3X + Bot3Y + Bot3Z + hstr('00');
if IDBot3<>''then SendToServerEX(NameBot3);
//бежим за командиром эмулируя повторный щелчек мыши по таргету
buf:=hstr('04') + IDKomandos + Bot3X + Bot3Y + Bot3Z + hstr('00');
if IDBot3<>''then SendToServerEX(NameBot3);
//выделяем командира, эмулируя щелчек мыши
buf:=hstr('04') + IDKomandos + Bot4X + Bot4Y + Bot4Z + hstr('00');
if IDBot4<>''then SendToServerEX(NameBot4);
//бежим за командиром эмулируя повторный щелчек мыши по таргету
buf:=hstr('04') + IDKomandos + Bot4X + Bot4Y + Bot4Z + hstr('00');
if IDBot4<>''then SendToServerEX(NameBot4);
end;
end;
procedure Init; //Вызывается при включении скриптаbegin
NameKom:='основа';
NameBot1:='бишкек'; //биш
NameBot2:='пепешка'; //пп
NameBot3:='сешка'; //ше
NameBot4:=''; //ее//список бафов://само собой вы его можете расширить новыми бафами которых тут нет..//это те бафы кторые я использую от ПП
bafPP[1]:=hstr('2F 0B 04 00 00 00 00 00 00 00'); // ментал
bafPP[2]:=hstr('2F 10 04 00 00 00 00 00 00 00'); // пд
bafPP[3]:=hstr('2F 2C 04 00 00 00 00 00 00 00'); // па
bafPP[4]:=hstr('2F 35 04 00 00 00 00 00 00 00'); // фокус
bafPP[5]:=hstr('2F 36 04 00 00 00 00 00 00 00'); // кон
bafPP[6]:=hstr('2F 3D 04 00 00 00 00 00 00 00'); // акумен
bafPP[7]:=hstr('2F A7 04 00 00 00 00 00 00 00'); // резист к огню
bafPP[8]:=hstr('2F B4 04 00 00 00 00 00 00 00'); // вв
bafPP[9]:=hstr('2F 26 04 00 00 00 00 00 00 00'); // берс
bafPP[10]:=hstr('2F 14 04 00 00 00 00 00 00 00'); // ХП реген
bafPP[12]:=hstr('2F 3E 04 00 00 00 00 00 00 00'); // хаст
bafPP[13]:=hstr('2F 15 04 00 00 00 00 00 00 00'); // блесс ХП
bafPP[14]:=hstr('2F 0C 04 00 00 00 00 00 00 00'); // маджик барьер
bafPP[15]:=hstr('2F 6C 05 00 00 00 00 00 00 00'); // гритер ПА
bafPP[16]:=hstr('2F 6D 05 00 00 00 00 00 00 00'); // гритер ПД
bafPP[17]:=hstr('2F 70 05 00 00 00 00 00 00 00'); // скаред атак резист
bafPP[18]:=hstr('2F 71 05 00 00 00 00 00 00 00'); // дарк атак резист
bafPP[19]:=hstr('2F DB 04 00 00 00 00 00 00 00'); // резист к ветру
bafPP[20]:=hstr('2F 18 04 00 00 00 00 00 00 00'); // резист к воде
bafPP[21]:=hstr('2F DA 04 00 00 00 00 00 00 00'); // деф виспер
bafPP[22]:=hstr('2F D8 04 00 00 00 00 00 00 00'); // гвиданс
bafPP[23]:=hstr('2F 70 05 00 00 00 00 00 00 00'); // блесс МП
bafPP[24]:=hstr('2F 71 05 00 00 00 00 00 00 00 '); // ЩИТ РЕЙТ//это от ШЕ бафы
bafSE[1]:=hstr('2F 0B 04 00 00 00 00 00 00 00'); // ментал
bafSE[2]:=hstr('2F 10 04 00 00 00 00 00 00 00'); // ПД
bafSE[3]:=hstr('2F 2C 04 00 00 00 00 00 00 00'); // ПА
bafSE[4]:=hstr('2F F4 04 00 00 00 00 00 00 00'); // ВАМП
bafSE[5]:=hstr('2F 23 04 00 00 00 00 00 00 00'); // ЕМП
bafSE[6]:=hstr('2F 17 05 00 00 00 00 00 00 00'); // М.КРИТ
bafSE[7]:=hstr('2F 35 04 00 00 00 00 00 00 00'); // ФОКУС
bafSE[8]:=hstr('2F DA 04 00 00 00 00 00 00 00'); // ДЕФ ВИСПЕР
bafSE[9]:=hstr('2F D8 04 00 00 00 00 00 00 00'); // гвиданс
bafSE[10]:=hstr('2F B4 04 00 00 00 00 00 00 00'); // ВВ//это от ЕЕ//список дополнять аналогично етому коду.. просто строки с новыми бафами добавляйте..
bafEE[1]:=hstr(''); // резист ШОК 2F EB 04 00 00 00 00 00 00 00
bafEE[2]:=hstr(''); // ЭВЕЙШН 2F 3F 04 00 00 00 00 00 00 00
bafEE[3]:=hstr(''); // РАСХОД МАНЫ 2F 75 05 00 00 00 00 00 00 00//при старте скрипта значения переменных =0//поетому скрипт подумает что у всех 0 ХП и начнется хаос.. все начнут друг друга хилить без остановки//чтоб избежать етого выставим начальные значения.. то что ХП у нас- дожопы.. много.. 15к.. т.е. хилить ненадо.//а потом скрипт сам захватит текущее знасение.. и всё коректно будет...
CurHPKom:=15000;
CurHPBot1:=15000;
CurHPBot2:=15000;
CurHPBot3:=15000;
CurHPBot4:=15000;
//для маны аналогичная ситуация
CurMPKom:=15000;
CurMPBot1:=15000;
CurMPBot2:=15000;
CurMPBot3:=15000;
CurMPBot4:=15000;
//дело в том что скрипт расчитывает хилить или нет в зависимости от % от шкалы.. если вся шкала =0 (по дефолту)//то ето както некоректно там будет хотя вроде пофиг..//но для коректности понимания процесса мы пишем что максимальная шкала ХП у нас оч маленькая а текущие значения- оч большие..//поетому никакие хилы небудут происходить при старте скрипта..
MaxHPKom:=10;
MaxHPBot1:=10;
MaxHPBot2:=10;
MaxHPBot3:=10;
MaxHPBot4:=10;
//тики для таймеров
tick3:=1;
tick4:=1;
BufEndSE:=False;
BufEndPP:=False;
BufEndEE:=False;
//новый баф кастовать через 4 секунды
timer4:=TTimer.Create(nil);
timer4.OnTimer:=@OnTimer4; //
timer4.enabled:=false; //
timer4.interval:=4000;
//в пати баферов пинимать с интервалом 1 сек
timer3:=TTimer.Create(nil);
timer3.OnTimer:=@OnTimer3; //
timer3.enabled:=false; //
timer3.interval:=1000;
// ЗАПРОС НА ОТКРЫТИЕ ИНВЕНТОРЯ!!!! ДЛЯ ЗАХВАТА ИДЕШНИКА!// чтобы принудительно вызвать от сервера пакет ЮЗЕР ИНФО в котором ИД указан//а также для того чтобы захвватить ИД банок для питья
buf:=hstr('0F');
SendToServerEX(NameKom);
SendToServerEX(NameBot1);
SendToServerEX(NameBot2);
SendToServerEX(NameBot3);
SendToServerEX(NameBot4);
end;
procedure Free; //Вызывается при выключении скриптаbegin
timer3.Free; // освобождаем память связанную с созданными нами объектами
timer4.Free;
end;
//основная часть скрипта//вызывается при приходе каждого пакета если скрипт включенbegin//для тго чтоб 2-3 скрипта коректно работали одновременно..if pck=''thenexit; // нех пустые пакеты обрабатывать типа//******************************АВТОСОГЛАШЕНИЕ НА ВСТУПЛЕНИЕ В ПАТИ************************//******************************ПРИ УСЛОВИИ ЧТО ПАТИ ДАЕТ- КОМАНДИР************************//ну тут тупо считываем имя кто нам шлет пати из пакета на предложение в него вступить//ну и если имя- командир то вступаем в ету пати автоматом..if FromServer thenif ConnectName=NameBot1 thenif pck[1]=#$39thenif ReadS(2)=NameKom thenbegin
buf:=hstr('2A 01 00 00 00');
sendtoserverex(NameBot1);
end;
if FromServer thenif ConnectName=NameBot2 thenif pck[1]=#$39thenif ReadS(2)=NameKom thenbegin
buf:=hstr('2A 01 00 00 00');
sendtoserverex(NameBot2);
end;
if FromServer thenif ConnectName=NameBot3 thenif pck[1]=#$39thenif ReadS(2)=NameKom thenbegin
buf:=hstr('2A 01 00 00 00');
sendtoserverex(NameBot3);
end;
if FromServer thenif ConnectName=NameBot4 thenif pck[1]=#$39thenif ReadS(2)=NameKom thenbegin
buf:=hstr('2A 01 00 00 00');
sendtoserverex(NameBot4);
end;
//*******************ЗАХВАТ КООРДИНАТ***************************************************//если принят пакет от клиента с кординатами бота тоif FromClient thenif ConnectName=NameBot1 thenif pck[1]=#$48thenbegin//запоминаем координаты
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;
//если принят пакет от клиента с кординатами бота тоif FromClient thenif ConnectName=NameBot2 thenif pck[1]=#$48thenbegin//запоминаем координаты
Bot2X:= pck[2] + pck[3] + pck[4] + pck[5];
Bot2Y:= pck[6] + pck[7] + pck[8] + pck[9];
Bot2Z:= pck[10] + pck[11] + pck[12] + pck[13];
end;
//если принят пакет от клиента с кординатами бота тоif FromClient thenif ConnectName=NameBot3 thenif pck[1]=#$48thenbegin//запоминаем координаты
Bot3X:= pck[2] + pck[3] + pck[4] + pck[5];
Bot3Y:= pck[6] + pck[7] + pck[8] + pck[9];
Bot3Z:= pck[10] + pck[11] + pck[12] + pck[13];
end;
//если принят пакет от клиента с кординатами бота тоif FromClient thenif ConnectName=NameBot4 thenif pck[1]=#$48thenbegin//запоминаем координаты
Bot4X:= pck[2] + pck[3] + pck[4] + pck[5];
Bot4Y:= pck[6] + pck[7] + pck[8] + pck[9];
Bot4Z:= pck[10] + pck[11] + pck[12] + pck[13];
end;
//********************ЗАХВАТ OID ЗЕЛИЙ************************************************************//при старте скрипта отправляется запрос на открытие инвенторя автоматически//в ответе сервера содержится всё содердимое инвенторя.. ищем доступные для использования зелья там//и запоминаем их OID для дальнейшего использования.. если какието банки кончились и вы их докупили//то следует перезапустить скрипт.. чтоб заного ИД захватить..//тут вот в скобачках 2 байта ето ИТЕМ ИД.. он константа.. с помощью итем ИД клинт знает какую текстуру подстовлять для визуализации и т.д.//но для использования предмета- есть ОБЖЕКТ ИД.. например у вас 3 пушки одинаковых в инвенторе.. при етом ИТЕМ ИД у всех будет одинаковый..//вы наденете то одну то другую.. ето еще лучше на примере бижи объяснять.. 3 кольца у вас одинаковых..//2 надето а 1 в инвенторе лежит.. вы тыкаете по нему.. (по инвентарю- кольцу) и вродебы ничего для вас не происходит..// но сервер у себя в мозгах меняет одно на другое кольцо..просто они одинаковые на вид и вы етого не видите..//но на самом деле ИД у всех 3-х колец разный.. вопщем ОБЖЕКТ ИД- ето предмет который можно юзать каким либо способом в игре..//самостоятельяная единица.. а ИТЕМ ИД- чисто сопостовление что такойто ОБЖЭКТ- визуализировать- такто..// с помощью манипуляций с етими числами мы можем увидеть что в место НГ пухи у вас будет нарисован- зарич..//или вместо моба 12 лвл нарисован АНТАРАС.. и вы его геройски убиваете..//так вот (заболтался) наша задача соспоставить ИТЕМ ИД к ОБЖЭКТ ИД.. (в скобочках там ИТЕМ ИД)//для етого мы перебираем пакет с инвентарем и ишем там среди кучи предметов тока те которые нас интерисуют и запоминаем их ОБЖЭКТ ИД..//у командира:if FromServer thenif ConnectName=NameKom thenif pck[1]=#$1B thenbeginfor i:= 0toround(length(pck)/36)dobeginif(pck[i*36+4+8]+pck[i*36+5+8] = hstr('25 04'))then OidHPPotion0:=pck[i*36+8]+pck[i*36+1+8]+pck[i*36+2+8]+pck[i*36+3+8]; // 2504 - это итем ИД банки с ХП обычной с магазинаif(pck[i*36+4+8]+pck[i*36+5+8] = hstr('03 06'))then OidGHPPotion0:=pck[i*36+8]+pck[i*36+1+8]+pck[i*36+2+8]+pck[i*36+3+8];
if(pck[i*36+4+8]+pck[i*36+5+8] = hstr('B2 21'))then OidHPLexir0:=pck[i*36+8]+pck[i*36+1+8]+pck[i*36+2+8]+pck[i*36+3+8];
if(pck[i*36+4+8]+pck[i*36+5+8] = hstr('BE 21'))then OidHPLexir0:=pck[i*36+8]+pck[i*36+1+8]+pck[i*36+2+8]+pck[i*36+3+8];
if(pck[i*36+4+8]+pck[i*36+5+8] = hstr('D8 15'))then OidGCPPotion0:=pck[i*36+8]+pck[i*36+1+8]+pck[i*36+2+8]+pck[i*36+3+8];
endend;
//у БОТА1:if FromServer thenif ConnectName=NameBot1 thenif pck[1]=#$1B thenbeginfor i:= 0toround(length(pck)/36)dobeginif(pck[i*36+4+8]+pck[i*36+5+8] = hstr('25 04'))then OidHPPotion1:=pck[i*36+8]+pck[i*36+1+8]+pck[i*36+2+8]+pck[i*36+3+8]; // 2504 - это итем ИД банки с ХП обычной с магазинаif(pck[i*36+4+8]+pck[i*36+5+8] = hstr('03 06'))then OidGHPPotion1:=pck[i*36+8]+pck[i*36+1+8]+pck[i*36+2+8]+pck[i*36+3+8];
if(pck[i*36+4+8]+pck[i*36+5+8] = hstr('B2 21'))then OidHPLexir1:=pck[i*36+8]+pck[i*36+1+8]+pck[i*36+2+8]+pck[i*36+3+8];
if(pck[i*36+4+8]+pck[i*36+5+8] = hstr('BE 21'))then OidHPLexir1:=pck[i*36+8]+pck[i*36+1+8]+pck[i*36+2+8]+pck[i*36+3+8];
if(pck[i*36+4+8]+pck[i*36+5+8] = hstr('D8 15'))then OidGCPPotion1:=pck[i*36+8]+pck[i*36+1+8]+pck[i*36+2+8]+pck[i*36+3+8];
endend;
//у БОТА2:if FromServer thenif ConnectName=NameBot2 thenif pck[1]=#$1B thenbeginfor i:= 0toround(length(pck)/36)dobeginif(pck[i*36+4+8]+pck[i*36+5+8] = hstr('25 04'))then OidHPPotion2:=pck[i*36+8]+pck[i*36+1+8]+pck[i*36+2+8]+pck[i*36+3+8]; // 2504 - это итем ИД банки с ХП обычной с магазинаif(pck[i*36+4+8]+pck[i*36+5+8] = hstr('03 06'))then OidGHPPotion2:=pck[i*36+8]+pck[i*36+1+8]+pck[i*36+2+8]+pck[i*36+3+8];
if(pck[i*36+4+8]+pck[i*36+5+8] = hstr('B2 21'))then OidHPLexir2:=pck[i*36+8]+pck[i*36+1+8]+pck[i*36+2+8]+pck[i*36+3+8];
if(pck[i*36+4+8]+pck[i*36+5+8] = hstr('BE 21'))then OidHPLexir2:=pck[i*36+8]+pck[i*36+1+8]+pck[i*36+2+8]+pck[i*36+3+8];
if(pck[i*36+4+8]+pck[i*36+5+8] = hstr('D8 15'))then OidGCPPotion2:=pck[i*36+8]+pck[i*36+1+8]+pck[i*36+2+8]+pck[i*36+3+8];
endend;
//у БОТА3:if FromServer thenif ConnectName=NameBot3 thenif pck[1]=#$1B thenbeginfor i:= 0toround(length(pck)/36)dobeginif(pck[i*36+4+8]+pck[i*36+5+8] = hstr('25 04'))then OidHPPotion3:=pck[i*36+8]+pck[i*36+1+8]+pck[i*36+2+8]+pck[i*36+3+8]; // 2504 - это итем ИД банки с ХП обычной с магазинаif(pck[i*36+4+8]+pck[i*36+5+8] = hstr('03 06'))then OidGHPPotion3:=pck[i*36+8]+pck[i*36+1+8]+pck[i*36+2+8]+pck[i*36+3+8];
if(pck[i*36+4+8]+pck[i*36+5+8] = hstr('B2 21'))then OidHPLexir3:=pck[i*36+8]+pck[i*36+1+8]+pck[i*36+2+8]+pck[i*36+3+8];
if(pck[i*36+4+8]+pck[i*36+5+8] = hstr('BE 21'))then OidHPLexir3:=pck[i*36+8]+pck[i*36+1+8]+pck[i*36+2+8]+pck[i*36+3+8];
if(pck[i*36+4+8]+pck[i*36+5+8] = hstr('D8 15'))then OidGCPPotion3:=pck[i*36+8]+pck[i*36+1+8]+pck[i*36+2+8]+pck[i*36+3+8];
endend;
//у БОТА4:if FromServer thenif ConnectName=NameBot4 thenif pck[1]=#$1B thenbeginfor i:= 0toround(length(pck)/36)dobeginif(pck[i*36+4+8]+pck[i*36+5+8] = hstr('25 04'))then OidHPPotion4:=pck[i*36+8]+pck[i*36+1+8]+pck[i*36+2+8]+pck[i*36+3+8]; // 2504 - это итем ИД банки с ХП обычной с магазинаif(pck[i*36+4+8]+pck[i*36+5+8] = hstr('03 06'))then OidGHPPotion4:=pck[i*36+8]+pck[i*36+1+8]+pck[i*36+2+8]+pck[i*36+3+8];
if(pck[i*36+4+8]+pck[i*36+5+8] = hstr('B2 21'))then OidHPLexir4:=pck[i*36+8]+pck[i*36+1+8]+pck[i*36+2+8]+pck[i*36+3+8];
if(pck[i*36+4+8]+pck[i*36+5+8] = hstr('BE 21'))then OidHPLexir4:=pck[i*36+8]+pck[i*36+1+8]+pck[i*36+2+8]+pck[i*36+3+8];
if(pck[i*36+4+8]+pck[i*36+5+8] = hstr('D8 15'))then OidGCPPotion4:=pck[i*36+8]+pck[i*36+1+8]+pck[i*36+2+8]+pck[i*36+3+8];
endend;
//********************ОСТСЛЕЖИВАЕМ ТРУПАКИ********************************************************//если кто то умер то приходит пакет DIE.. то хилить его ненадо...//нефиг трупы хилить...//для того чтоб трупяков боты не хилили ставим кодом то что ХП (текущее) у них до жопы... т.е. 15кif FromServer thenif ConnectName=NameKom thenif pck[1]=#$06thenif pck[2] + pck[3] + pck[4] + pck[5] = IDKomandos then
CurHPKom:=15000;
if FromServer thenif ConnectName=NameBot1 thenif pck[1]=#$06thenif pck[2] + pck[3] + pck[4] + pck[5] = IDBot1 then
CurHPBot1:=15000;
if FromServer thenif ConnectName=NameBot2 thenif pck[1]=#$06thenif pck[2] + pck[3] + pck[4] + pck[5] = IDBot2 then
CurHPBot2:=15000;
if FromServer thenif ConnectName=NameBot3 thenif pck[1]=#$06thenif pck[2] + pck[3] + pck[4] + pck[5] = IDBot3 then
CurHPBot3:=15000;
if FromServer thenif ConnectName=NameBot4 thenif pck[1]=#$06thenif pck[2] + pck[3] + pck[4] + pck[5] = IDBot3 then
CurHPBot4:=15000;
//*************************УЗНАЕМ ЛИМИТЫ ХП и МП и ИД***********************************************//из пакета UserInfo который приходит во время бафа и не только//как тока скрипт начинает свою работу то он на все аки отправляет запрос на открытие ИНВЕНТОРЯ//вместе с ответом сервера всегда приходит пакет ЮЗЕР ИНФО.. из етого замечательного пакета мы считываем максимальные значения ХП и МП//а так жэ ИД чара (бота- бафера)//КОМАНДИРif FromServer thenif ConnectName = NameKom thenif pck[1]=#$04thenbegin
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);
MaxMPKom:=readD(i);
CurMPKOM:=readD(i);
MaxCPKom:=round(MaxHPKom/2);
end;
//1-й ботif FromServer thenif ConnectName = NameBot1 thenif pck[1]=#$04thenbegin
IDBot1:=pck[18]+pck[19]+pck[20]+pck[21];
i:=22;
tempS:=readS(i);
i:=i+48;
MaxHPBot1:=readD(i);
CurHPBot1:=readD(i);
MaxMPBot1:=readD(i);
CurMPBot1:=readD(i);
MaxCPBot1:=round(MaxHPBot1/2);
end;
//2-й ботif FromServer thenif ConnectName = NameBot2 thenif pck[1]=#$04thenbegin
IDBot2:=pck[18]+pck[19]+pck[20]+pck[21];
i:=22;
tempS:=readS(i);
i:=i+48;
MaxHPBot2:=readD(i);
CurHPBot2:=readD(i);
MaxMPBot2:=readD(i);
CurMPBot2:=readD(i);
MaxCPBot2:=round(MaxHPBot2/2);
end;
//3-й ботif FromServer thenif ConnectName = NameBot3 thenif pck[1]=#$04thenbegin
IDBot3:=pck[18]+pck[19]+pck[20]+pck[21];
i:=22;
tempS:=readS(i);
i:=i+48;
MaxHPBot3:=readD(i);
CurHPBot3:=readD(i);
MaxMPBot3:=readD(i);
CurMPBot3:=readD(i);
MaxCPBot3:=round(MaxHPBot3/2);
end;
//4-й ботif FromServer thenif ConnectName = NameBot4 thenif pck[1]=#$04thenbegin
IDBot4:=pck[18]+pck[19]+pck[20]+pck[21];
i:=22;
tempS:=readS(i);
i:=i+48;
MaxHPBot4:=readD(i);
CurHPBot4:=readD(i);
MaxMPBot4:=readD(i);
CurMPBot4:=readD(i);
MaxCPBot4:=round(MaxHPBot4/2);
end;
//*************************СЛЕДИМ ЗА ХП и МП******************************************//а ету часть кода требуется под ваши жэлания настроить..//тут указываются значения при которых ПП ШШ ЕЕ БИШ будут вам ману лить и ХП заливать и каким именно скилом//следим за ХП КОМАНДИРА//отлавливаем СТАТУС АПДЕЙТ!!!!!//как выяснилось статус апдейта бывает 2 разных..//1 для ХП, 2 для МП//етот пакет приходит при любом изменении ХП и МП у чара..//чтоб их отличить сервак использует индекс.. в 6-м байте присылает либо 4 либо 2..//если в 6-м байте СТАТУС АПДЕЙТ цифра #$04 то значит реч в етом пакете про ХП//а если #$02 то реч в етом пакете про МП..//ДЛЯ ЦП используется дурацкая формула: базовое ХП/2 .. в пакете нигде не указывается максимальное кол-во ЦП поетому мы его вот так вот высчитываем.. спросите почиму дурацкая?.. потомучто бафните от ПП блесс ХП и пипец..//я долго не мог понять почеу у меня скрипт сам бухал ЦП банки под бафом без надобности.. пока не понял что ЦП от базового ХП расщитывается без учета бафа..if FromServer thenif ConnectName = NameKom thenif pck[1]=#$0e thenif(pck[2] + pck[3] + pck[4] + pck[5] + pck[6] = IDKomandos + #$04)thenbegin//считываем текущее состояние ХП!!-)
CurHPKom:=ReadD(14);
//считываем текущее состояние ЦП!!-)
CurCPKom:=ReadD(30);
//ну собственно ето уже можно править под желания каждого://если жизни текущие меньше 0,7 от шкалы (70%) то..//то биш использует свой любимый скил МАЖОР ХИЛ за спирит оре (в интерлюде) (для ц4 такого скила нету)if(CurHPKom < round(MaxHPKom*0.7))thenbegin
buf:=hstr('04') + IDKomandos + Bot1X + Bot1Y + Bot1Z + hstr('00');
if(IDBot1 <> '')then SendToServerEX(NameBot1);
buf:=hstr('2F 79 05 00 00 00 00 00 00 00'); // МАЖОР ХИЛ БИШif(IDBot1 <> '')then SendToServerEX(NameBot1);
end;
if(CurHPKom < round(MaxHPKom*0.4))thenbegin
buf:=hstr('04') + IDKomandos + Bot2X + Bot2Y + Bot2Z + hstr('00');
if(IDBot2 <> '')then SendToServerEX(NameBot2);
buf:=hstr('2F F7 03 00 00 00 00 00 00 00'); //ПП ХИЛИТif(IDBot2 <> '')then SendToServerEX(NameBot2);
end;
if(CurHPKom < round(MaxHPKom*0.75))thenbegin
buf:=hstr('04') + IDKomandos + Bot4X + Bot4Y + Bot4Z + hstr('00');
if(IDBot4 <> '')then SendToServerEX(NameBot4);
buf:=hstr(''); //ЕЕ ХИЛИТ 2F 79 05 00 00 00 00 00 00 00if(IDBot4 <> '')then SendToServerEX(NameBot4);
end;
if(CurHPKom < round(MaxHPKom*0.6))thenbegin
buf:=hstr('04') + IDKomandos + Bot3X + Bot3Y + Bot3Z + hstr('00');
if(IDBot3 <> '')then SendToServerEX(NameBot3);
buf:=hstr('2F C1 04 00 00 00 00 00 00 00 '); //ШЕ ХИЛИТif(IDBot3 <> '')then SendToServerEX(NameBot3);
end;
//КОМАНДИР БУХАЕТ ЗЕЛЬЯif(CurHPKom < round(MaxHPKom*0.90))and(CurCPKom < round(MaxCPKom*0.6))thenbegin
buf:= hstr('14') + OidGHPPotion0 + hstr('00 00 00 00'); // гритер хилкуif(OidGHPPotion0 <> '')then SendToServerEX(NameKom);
end;
if(CurHPKom < round(MaxHPKom*0.8))thenbegin
buf:= hstr('14') + OidHPPotion0 + hstr('00 00 00 00'); // обычную хилкуif(OidHPPotion0 <> '')then SendToServerEX(NameKom);
end;
if(CurHPKom < round(MaxHPKom*0.3))thenbegin
buf:= hstr('14') + OidHPLexir0 + hstr('00 00 00 00'); // лексир ХПif(OidHPPotion0 <> '')then SendToServerEX(NameKom);
end;
///ТУТ МЕНЯЙТЕ ЗНАЧЕНИЕ ОЧ АКУРАТНО.. 1,0 ето не 100% шкалы изза бафа на блесс ХП.. // поетому ставьте немного меньше с учетом возможного бафа на блес ХП..if(CurCPKom < round(MaxCPKom*0.6))thenbegin
buf:= hstr('14') + OidGCPPotion0 + hstr('00 00 00 00'); // ГЦП БАНКУif(OidGCPPotion0 <> '')then SendToServerEX(NameKom);
end;
if(CurCPKom < round(MaxCPKom*0.1))thenbegin
buf:= hstr('14') + OidCPLexir0 + hstr('00 00 00 00'); // лексир ЦПif(OidGCPPotion0 <> '')then SendToServerEX(NameKom);
end;
end;
//следим за ХП у БОТ1//если злой хренко решит наших баферов бить, а потом нас- то мы просто так не сдадимся..//баферам ХИЛ дадим.. чтоб хренко били били и не убили...//я сделал тупо- чтоб тока сам себя хилял бафер.. добавьте аналогичные строки сюда и будет так что все баферы будут хилить баф-бота//ето надо полюбасу- но пока руки не дошли.. и вам немного задачи- доделать скрипт..//но я етого не сделал еще по одной причине.. в реальных условиях мой командир бегает оч шустро..//баферы отстают.. если 1 бафер на пвп отстанет- да и хер с ним.. а если етого отстающего бьют..//и все мои баферы кинутся его хилить (если его бьют) то я через 15 сек буду оч далеко и меня уже баферы не догонят//и я буду- (командир пати) без хила.. поетому если бафера атакуют то я сделал чтоб он сам себя лечил..// но чтоб другие не лечили, чтоб другие за мной бежали..if FromServer thenif ConnectName = NameBot1 thenif pck[1]=#$0e thenif(pck[2] + pck[3] + pck[4] + pck[5] + pck[6] = IDbot1 + #$04)thenbegin
CurHPbot1:=ReadD(14);
CurCPbot1:=ReadD(30);
//на 70% шкалы хилит бафер сам себя (бишоп) скилом мажор хилif(CurHPbot1 < round(MaxHPBot1*0.7))thenbegin
buf:=hstr('04') + IDbot1 + Bot1X + Bot1Y + Bot1Z + hstr('00');
if(IDBot1 <> '')then SendToServerEX(NameBot1);
buf:=hstr('2F 79 05 00 00 00 00 00 00 00'); //скил бишопа: можор хилif(IDBot1 <> '')then SendToServerEX(NameBot1);
end;
//БОТ1 БУХАЕТ ЗЕЛЬЯif(CurHPBot1 < round(MaxHPBot1*0.90))and(CurCPBot1 < round(MaxCPBot1*0.6))thenbegin
buf:= hstr('14') + OidGHPPotion1 + hstr('00 00 00 00'); // гритер хилкуif(OidGHPPotion1 <> '')then SendToServerEX(NameBot1);
end;
if(CurHPBot1 < round(MaxHPBot1*0.8))thenbegin
buf:= hstr('14') + OidHPPotion1 + hstr('00 00 00 00'); // обычную хилкуif(OidHPPotion1 <> '')then SendToServerEX(NameBot1);
end;
if(CurHPBot1 < round(MaxHPBot1*0.3))thenbegin
buf:= hstr('14') + OidHPLexir1 + hstr('00 00 00 00'); // лексир ХПif(OidHPLexir1 <> '')then SendToServerEX(NameBot1);
end;
if(CurCPBot1 < round(MaxCPBot1*0.6))thenbegin
buf:= hstr('14') + OidGCPPotion1 + hstr('00 00 00 00'); // ГЦП БАНКУif(OidGCPPotion1 <> '')then SendToServerEX(NameBot1);
end;
if(CurCPBot1 < round(MaxCPBot1*0.1))thenbegin
buf:= hstr('14') + OidCPLexir1 + hstr('00 00 00 00'); // лексир ЦПif(OidCPLexir1 <> '')then SendToServerEX(NameBot1);
end;
end;
//следим за ХП у БОТ2if FromServer thenif pck[1]=#$0e thenif ConnectName = NameBot2 thenif(pck[2] + pck[3] + pck[4] + pck[5] + pck[6] = IDbot2 + #$04)thenbegin
CurHPbot2:=ReadD(14);
CurCPbot2:=ReadD(30);
if(CurHPbot2 < round(MaxHPBot2*0.7))thenbegin
buf:=hstr('04') + IDbot2 + Bot1X + Bot1Y + Bot1Z + hstr('00');
if(IDBot1 <> '')and(IDBot2 <> '')then SendToServerEX(NameBot1);
buf:=hstr('2F 79 05 00 00 00 00 00 00 00');
if(IDBot1 <> '')and(IDBot2 <> '')then SendToServerEX(NameBot1);
end;
//БОТ2 БУХАЕТ ЗЕЛЬЯif(CurHPBot2 < round(MaxHPBot2*0.90))and(CurCPBot2 < round(MaxCPBot2*0.6))thenbegin
buf:= hstr('14') + OidGHPPotion2 + hstr('00 00 00 00'); // гритер хилкуif(OidGHPPotion2 <> '')then SendToServerEX(NameBot2);
end;
if(CurHPBot2 < round(MaxHPBot2*0.8))thenbegin
buf:= hstr('14') + OidHPPotion2 + hstr('00 00 00 00'); // обычную хилкуif(OidHPPotion2 <> '')then SendToServerEX(NameBot2);
end;
if(CurHPBot2 < round(MaxHPBot2*0.3))thenbegin
buf:= hstr('14') + OidHPLexir2 + hstr('00 00 00 00'); // лексир ХПif(OidHPLexir2 <> '')then SendToServerEX(NameBot2);
end;
if(CurCPBot2 < round(MaxCPBot2*0.6))thenbegin
buf:= hstr('14') + OidGCPPotion2 + hstr('00 00 00 00'); // ГЦП БАНКУif(OidGCPPotion2 <> '')then SendToServerEX(NameBot2);
end;
if(CurCPBot2 < round(MaxCPBot2*0.1))thenbegin
buf:= hstr('14') + OidCPLexir2 + hstr('00 00 00 00'); // лексир ЦПif(OidCPLexir2 <> '')then SendToServerEX(NameBot2);
end;
end;
//следим за ХП у БОТ3if FromServer thenif pck[1]=#$0e thenif ConnectName = NameBot3 thenif(pck[2] + pck[3] + pck[4] + pck[5] + pck[6] = IDbot3 + #$04)thenbegin
CurHPbot3:=ReadD(14);
CurCPbot3:=ReadD(30);
if(CurHPbot3 < round(MaxHPBot3*0.7))thenbegin
buf:=hstr('04') + IDbot3 + Bot3X + Bot3Y + Bot3Z + hstr('00');
if(IDBot3 <> '')then SendToServerEX(NameBot3);
buf:=hstr('2F C1 04 00 00 00 00 00 00 00');
if(IDBot3 <> '')then SendToServerEX(NameBot3);
end;
//БОТ3 БУХАЕТ ЗЕЛЬЯif(CurHPBot3 < round(MaxHPBot3*0.90))and(CurCPBot3 < round(MaxCPBot3*0.6))thenbegin
buf:= hstr('14') + OidGHPPotion3 + hstr('00 00 00 00'); // гритер хилкуif(OidGHPPotion3 <> '')then SendToServerEX(NameBot3);
end;
if(CurHPBot3 < round(MaxHPBot3*0.8))thenbegin
buf:= hstr('14') + OidHPPotion3 + hstr('00 00 00 00'); // обычную хилкуif(OidHPPotion3 <> '')then SendToServerEX(NameBot3);
end;
if(CurHPBot3 < round(MaxHPBot3*0.3))thenbegin
buf:= hstr('14') + OidHPLexir3 + hstr('00 00 00 00'); // лексир ХПif(OidHPLexir3 <> '')then SendToServerEX(NameBot3);
end;
if(CurCPBot3 < round(MaxCPBot3*0.6))thenbegin
buf:= hstr('14') + OidGCPPotion3 + hstr('00 00 00 00'); // ГЦП БАНКУif(OidGCPPotion3 <> '')then SendToServerEX(NameBot3);
end;
if(CurCPBot3 < round(MaxCPBot3*0.1))thenbegin
buf:= hstr('14') + OidCPLexir3 + hstr('00 00 00 00'); // лексир ЦПif(OidCPLexir3 <> '')then SendToServerEX(NameBot3);
end;
end;
//следим за ХП у БОТ4if FromServer thenif pck[1]=#$0e thenif ConnectName = NameBot4 thenif(pck[2] + pck[3] + pck[4] + pck[5] + pck[6] = IDbot4 + #$04)thenbegin
CurHPbot4:=ReadD(14);
CurCPbot4:=ReadD(30);
if(CurHPbot4 < round(MaxHPBot4*0.7))thenbegin
buf:=hstr('04') + IDbot4 + Bot4X + Bot4Y + Bot4Z + hstr('00');
if(IDBot4 <> '')and(IDBot4 <> '')then SendToServerEX(NameBot4);
buf:=hstr('2F 79 05 00 00 00 00 00 00 00');
if(IDBot4 <> '')then SendToServerEX(NameBot4);
end;
//БОТ4 БУХАЕТ ЗЕЛЬЯif(CurHPBot4 < round(MaxHPBot4*0.90))and(CurCPBot4 < round(MaxCPBot4*0.6))thenbegin
buf:= hstr('14') + OidGHPPotion4 + hstr('00 00 00 00'); // гритер хилкуif(OidGHPPotion4 <> '')then SendToServerEX(NameBot4);
end;
if(CurHPBot4 < round(MaxHPBot4*0.8))thenbegin
buf:= hstr('14') + OidHPPotion4 + hstr('00 00 00 00'); // обычную хилкуif(OidHPPotion4 <> '')then SendToServerEX(NameBot4);
end;
if(CurHPBot4 < round(MaxHPBot4*0.3))thenbegin
buf:= hstr('14') + OidHPLexir4 + hstr('00 00 00 00'); // лексир ХПif(OidHPLexir4 <> '')then SendToServerEX(NameBot4);
end;
if(CurCPBot4 < round(MaxCPBot4*0.6))thenbegin
buf:= hstr('14') + OidGCPPotion4 + hstr('00 00 00 00'); // ГЦП БАНКУif(OidGCPPotion4 <> '')then SendToServerEX(NameBot4);
end;
if(CurCPBot4 < round(MaxCPBot4*0.1))thenbegin
buf:= hstr('14') + OidCPLexir4 + hstr('00 00 00 00'); // лексир ЦПif(OidCPLexir4 <> '')then SendToServerEX(NameBot4);
end;
end;
//следим за МП у КОМАНДИРА (ШЕ следит)if FromServer thenif pck[1]=#$0e thenif ConnectName = NameKom thenif(pck[2] + pck[3] + pck[4] + pck[5] + pck[6] = IDKomandos + #$02)thenbegin
CurMPkom:=ReadD(14);
rnd:=round(random*100);
if(CurMPkom < round(MaxMPkom*0.5))and(rnd<15)thenbegin
buf:=hstr('04') + IDKomandos + Bot3X + Bot3Y + Bot3Z + hstr('00');
if(IDBot3 <> '')then SendToServerEX(NameBot3);
buf:=hstr('2F F5 03 00 00 00 00 00 00 00');
if(IDBot3 <> '')then SendToServerEX(NameBot3);
end;
end;
//следим за МП у КОМАНДИРА (ЕЕ следит)if FromServer thenif pck[1]=#$0e thenif ConnectName = NameKom thenif(pck[2] + pck[3] + pck[4] + pck[5] + pck[6] = IDKomandos + #$02)thenbegin
CurMPkom:=ReadD(14);
rnd:=round(random*100);
if(CurMPkom < round(MaxMPkom*0.5))and(rnd<15)thenbegin
buf:=hstr('04') + IDKomandos + Bot4X + Bot4Y + Bot4Z + hstr('00');
if(IDBot4 <> '')then SendToServerEX(NameBot4);
buf:=hstr(''); //2F F5 03 00 00 00 00 00 00 00if(IDBot4 <> '')then SendToServerEX(NameBot4);
end;
end;
//следим за МП у БИША//этот кусок кода вполне альтернативный..if FromServer thenif pck[1]=#$0e thenif ConnectName = NameBot1 thenif(pck[2] + pck[3] + pck[4] + pck[5] + pck[6] = IDbot1 + #$02)thenbegin
CurMPBot1:=ReadD(14);
if(CurMPBot1 < round(MaxMPBot1*0.9))thenbegin
buf:=hstr('04') + IDBot1 + Bot3X + Bot3Y + Bot3Z + hstr('00');
if(IDBot3 <> '')then SendToServerEX(NameBot3);
buf:=hstr(''); //2F F5 03 00 00 00 00 00 00 00if(IDBot3 <> '')then SendToServerEX(NameBot3);
end;
end;
//**********************СЛЕДИМ ЗА ТАРГЕТАМИ****************************************//КОМАНДИР//если принят пакет со сменой таргета у командира тоif FromServer thenif ConnectName = NameKom thenif pck[1]=#$A6 thenbegin//запоминаем ИД таргета командира для ассиста
IDAssistTarget:= pck[2]+pck[3]+pck[4]+pck[5];
end;
//**********************САЖАЕМ ВСЮ ПАТИ ЧЕРЕЗ КОНТРОЛ****************************************//если принят пакет на сажание с контролом то сажаем всю патиif FromClient thenif(ConnectName = NameKom)thenif(pck[1]+pck[2]+pck[6]=hstr('45 00 01'))thenbegin
buf:=hstr('45 00 00 00 00 01 00 00 00 00');
if IDBot1<>''then SendToServerEX(NameBot1);
if IDBot2<>''then SendToServerEX(NameBot2);
if IDBot3<>''then SendToServerEX(NameBot3);
if IDBot4<>''then SendToServerEX(NameBot4);
end;
//*******************БЕЖИМ ЗА КОМАНДИРОМ ПОСЛЕ ИСПОЛЬЗОВАНИЯ СКИЛА***************************//ловим пакет МАДЖИКСКИЛЮЗif FromServer thenif pck[1] = #$48thenif(pck[2]+pck[3]+pck[4]+pck[5]=IDBOT1)or(pck[2]+pck[3]+pck[4]+pck[5]=IDBOT2)or(pck[2]+pck[3]+pck[4]+pck[5]=IDBOT3)or(pck[2]+pck[3]+pck[4]+pck[5]=IDBOT4)thenbegin
BotBeg;
end;
//**************************УПРАВЛЕНИЕ************************************************//"Bow" (ПОКЛОН)- БЕЖАТЬ за КОМАНДИРОМif FromClient thenif ConnectName=NameKom thenif pck[1]+pck[2]=hstr('1B 07')thenbegin
pck:='';
BotBeg;
exit;
end;
//ADVANCE- В АТАКУ - пати быстрое создание (3-я кнопка)if FromClient thenif ConnectName=NameKom thenif pck[1]+pck[2]=hstr('1B 04')thenbegin
pck:='';
//сразу рвем пати у всех чаров и командир раздает пати поновому//чары автоматически принимают пати//используется таймер т.к. одновременно 2-м чарам пати кинуть нельзя
timer3.enabled:=true;
exit;
end;
//YES- РУТ ПО АССИСТУ (4-я кнопка) либо переделать в какойто дебаф от каждого бафера он свой.. по ассисту все баферы какуюто куйню кинут на цель по ассисту..if FromClient thenif ConnectName=NameKom thenif pck[1]+pck[2]=hstr('1B 06')thenbegin
pck:='';
{buf:= hstr('14') + OidgcpPotion0 + hstr('00 00 00 00'); // обычную хилку
if (OidgcpPotion0 <> '') then SendToServerEX(NameKom);}
buf:=hstr('04') + IDAssistTarget + Bot1X + Bot1Y + Bot1Z + hstr('00');
if NameBot1<>''then SendToServerEX(NameBot1);
buf:=hstr('04') + IDAssistTarget + Bot2X + Bot2Y + Bot2Z + hstr('00');
if NameBot2<>''then SendToServerEX(NameBot2);
buf:=hstr('04') + IDAssistTarget + Bot3X + Bot3Y + Bot3Z + hstr('00');
if NameBot3<>''then SendToServerEX(NameBot3);
buf:=hstr('2F 72 05 00 00 01 00 00 00 00');
if NameBot1<>''then SendToServerEX(NameBot1);
buf:=hstr('2F B1 04 00 00 01 00 00 00 00');
if NameBot2<>''then SendToServerEX(NameBot2);
buf:=hstr('2F B1 04 00 00 00 00 00 00 00');
if NameBot3<>''then SendToServerEX(NameBot3);
exit;
end;
//NO буф МАГА по ассистуif FromClient thenif ConnectName=NameKom thenif pck[1]+pck[2]=hstr('1B 05')thenbegin
BafPPApplyChar[1]:=IDAssistTarget;
BafPPApplyBaf[1]:=bafPP[24];
BafPPApplyChar[2]:=IDAssistTarget;
BafPPApplyBaf[2]:=bafPP[5];
BafPPApplyChar[3]:=IDAssistTarget;
BafPPApplyBaf[3]:=bafPP[2];
BafPPApplyChar[4]:=IDAssistTarget;
BafPPApplyBaf[4]:=bafPP[6];
BafPPApplyChar[5]:=IDAssistTarget;
BafPPApplyBaf[5]:=bafPP[7];
BafPPApplyChar[6]:=IDAssistTarget;
BafPPApplyBaf[6]:=bafPP[8];
BafPPApplyChar[7]:=IDAssistTarget;
BafPPApplyBaf[7]:=bafPP[9];
BafPPApplyChar[8]:=IDAssistTarget;
BafPPApplyBaf[8]:=bafPP[1];
BafPPApplyChar[9]:=IDAssistTarget;
BafPPApplyBaf[9]:=bafPP[13];
BafPPApplyChar[10]:=IDAssistTarget;
BafPPApplyBaf[10]:=bafPP[14];
BafPPApplyChar[11]:=IDAssistTarget;
BafPPApplyBaf[11]:=bafPP[16];
BafPPApplyChar[12]:=IDAssistTarget;
BafPPApplyBaf[12]:=bafPP[18];
BafPPApplyChar[13]:=IDAssistTarget;
BafPPApplyBaf[13]:=bafPP[19];
BafPPApplyChar[14]:=IDAssistTarget;
BafPPApplyBaf[14]:=bafPP[20];
BafPPApplyChar[23]:=IDAssistTarget;
BafPPApplyChar[24]:=IDAssistTarget;
BafSEApplyChar[1]:=IDAssistTarget;
BafSEApplyBaf[1]:=bafSE[2];
BafSEApplyChar[2]:=IDAssistTarget;
BafSEApplyBaf[2]:=bafSE[2];
BafSEApplyChar[3]:=IDAssistTarget;
BafSEApplyBaf[3]:=bafSE[5];
BafSEApplyChar[4]:=IDAssistTarget;
BafSEApplyBaf[4]:=bafSE[6];
BafSEApplyChar[5]:='';
BafSEApplyBaf[5]:='';
BafEEApplyChar[1]:=IDAssistTarget;
BafEEApplyBaf[1]:=bafEE[2];
BafEEApplyChar[2]:=IDAssistTarget;
BafEEApplyBaf[2]:=bafEE[2];
BafEEApplyChar[3]:=IDAssistTarget;
BafEEApplyBaf[3]:=bafEE[3];
BafEEApplyChar[4]:=IDAssistTarget;
BafEEApplyBaf[4]:=bafEE[1];
BafEEApplyChar[5]:='';
BafEEApplyBaf[5]:='';
timer4.enabled:=true;
pck:='';
exit;
end;
//UNAWARE буф ФИЗИКА по ассистуif FromClient thenif ConnectName=NameKom thenif pck[1]+pck[2]=hstr('1B 08')thenbegin
BafPPApplyChar[1]:=IDAssistTarget;
BafPPApplyBaf[1]:=bafPP[1];
BafPPApplyChar[2]:=IDAssistTarget;
BafPPApplyBaf[2]:=bafPP[2];
BafPPApplyChar[3]:=IDAssistTarget;
BafPPApplyBaf[3]:=bafPP[3];
BafPPApplyChar[4]:=IDAssistTarget;
BafPPApplyBaf[4]:=bafPP[4];
BafPPApplyChar[5]:=IDAssistTarget;
BafPPApplyBaf[5]:=bafPP[7];
BafPPApplyChar[6]:=IDAssistTarget;
BafPPApplyBaf[6]:=bafPP[8];
BafPPApplyChar[7]:=IDAssistTarget;
BafPPApplyBaf[7]:=bafPP[9];
BafPPApplyChar[8]:=IDAssistTarget;
BafPPApplyBaf[8]:=bafPP[22];
BafPPApplyChar[9]:=IDAssistTarget;
BafPPApplyBaf[9]:=bafPP[12];
BafPPApplyChar[10]:=IDAssistTarget;
BafPPApplyBaf[10]:=bafPP[13];
BafPPApplyChar[11]:=IDAssistTarget;
BafPPApplyBaf[11]:=bafPP[14];
BafPPApplyChar[12]:=IDAssistTarget;
BafPPApplyBaf[12]:=bafPP[15];
BafPPApplyChar[13]:=IDAssistTarget;
BafPPApplyBaf[13]:=bafPP[18];
BafPPApplyChar[14]:=IDAssistTarget;
BafPPApplyBaf[14]:=bafPP[19];
BafPPApplyChar[15]:=IDAssistTarget;
BafPPApplyBaf[15]:=bafPP[20];
BafPPApplyChar[16]:=IDAssistTarget;
BafPPApplyBaf[16]:=bafPP[21];
BafPPApplyChar[17]:='';
BafPPApplyBaf[17]:='';
BafSEApplyChar[1]:=IDAssistTarget;
BafSEApplyBaf[1]:=bafSE[4];
BafSEApplyChar[2]:='';
BafSEApplyBaf[2]:='';
BafEEApplyChar[1]:=IDAssistTarget;
BafEEApplyBaf[1]:=bafEE[2];
BafEEApplyChar[2]:=IDAssistTarget;
BafEEApplyBaf[2]:=bafEE[1];
BafEEApplyChar[3]:='';
BafEEApplyBaf[3]:='';
timer4.enabled:=true;
pck:='';
exit;
end;
end.
Последний раз редактировалось QaK, 25.02.2009 в 15:36.
Alan, тонну чужого кода перелопачивать никому неохота, да и Ворону, я думаю, тоже. Поставь мессаджбоксы на ключевые моменты, отлови, в какой момент в каком куске кода происходит сбой.
З.Ы. для оформления коду юзай теги [ HIGHLIGHT = "delphi" ] тут код [ /HIGHLIGHT ]
сбой происходит даже при иницилизации. виснет сразу все, и навсегда =)
ps
вопосов бы не было еслибы строчка или еще что нить, а тут виснет сразу намертво.
что за ошибка--->address 0052B420 in module l2phx.exe read address 2C37352C ?