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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Закрытая тема
 
Опции темы Опции просмотра
Старый 25.02.2009, 15:29   #1
Новичок
 
Аватар для Alan
 
Регистрация: 11.10.2007
Адрес: Питер
Сообщений: 13
Сказал Спасибо: 261
Имеет 0 спасибок в 0 сообщенях
Alan
Вопрос address 0052B420 in module l2phx.exe

запускал скрипт вроде ворона в 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] of string; //список бафов ШЕ bafPP: array [1..100] of string; //список бафов ПП bafEE: array [1..100] of string; //список бафов ЕЕ BafSEApplyChar: array [1..100] of string; //указывает ИД чара на которого нужно наложить баф с помощью ШЕ BafSEApplyBaf: array [1..100] of string; //указывает какой баф наложить на чара с помощью ШЕ BafPPApplyChar: array [1..100] of string; //указывает ИД чара на которого нужно наложить баф с помощью ПП BafPPApplyBaf: array [1..100] of string; //указывает какой баф наложить на чара с помощью ПП BafEEApplyChar: array [1..100] of string; //указывает ИД чара на которого нужно наложить баф с помощью ЕЕ BafEEApplyBaf: array [1..100] of string//указывает какой баф наложить на чара с помощью ЕЕ 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) then  begin     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); begin if tick3 = 1 then  begin       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 = 2 then  begin  buf:=hstr('29');  writeS(namebot1);  buf:=buf + hstr('00 00 00 00');  SendToServerEX(NameKom);  end; if tick3 = 3 then  begin  buf:=hstr('29');  writeS(namebot2);  buf:=buf + hstr('00 00 00 00');  SendToServerEX(NameKom);  end; if tick3 = 4 then  begin  buf:=hstr('29');  writeS(namebot3);  buf:=buf + hstr('00 00 00 00');  SendToServerEX(NameKom);  end; if tick3 = 5 then  begin  buf:=hstr('29');  writeS(namebot4);  buf:=buf + hstr('00 00 00 00');  SendToServerEX(NameKom);  end; tick3:=tick3+1; //ну когда всем баферам приглашение отправили то вырубаем таймер if tick3=6 then  begin  tick3:=1;  timer3.enabled:=false;  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);     //выделяем командира, эмулируя щелчек мыши     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='' then exit// нех пустые пакеты обрабатывать типа //******************************АВТОСОГЛАШЕНИЕ НА ВСТУПЛЕНИЕ В ПАТИ************************ //******************************ПРИ УСЛОВИИ ЧТО ПАТИ ДАЕТ- КОМАНДИР************************ //ну тут тупо считываем имя кто нам шлет пати из пакета на предложение в него вступить //ну и если имя- командир то вступаем в ету пати автоматом.. if FromServer then if ConnectName=NameBot1 then if pck[1]=#$39 then if ReadS(2)=NameKom then  begin  buf:=hstr('2A 01 00 00 00');  sendtoserverex(NameBot1);  end; if FromServer then if ConnectName=NameBot2 then if pck[1]=#$39 then if ReadS(2)=NameKom then  begin  buf:=hstr('2A 01 00 00 00');  sendtoserverex(NameBot2);  end; if FromServer then if ConnectName=NameBot3 then if pck[1]=#$39 then if ReadS(2)=NameKom then  begin  buf:=hstr('2A 01 00 00 00');  sendtoserverex(NameBot3);  end; if FromServer then if ConnectName=NameBot4 then if pck[1]=#$39 then if ReadS(2)=NameKom then  begin  buf:=hstr('2A 01 00 00 00');  sendtoserverex(NameBot4);  end; //*******************ЗАХВАТ КООРДИНАТ*************************************************** //если принят пакет от клиента с кординатами бота то 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; //если принят пакет от клиента с кординатами бота то if FromClient then if ConnectName=NameBot2 then if pck[1]=#$48 then     begin //запоминаем координаты     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 then if ConnectName=NameBot3 then if pck[1]=#$48 then     begin //запоминаем координаты     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 then if ConnectName=NameBot4 then if pck[1]=#$48 then     begin //запоминаем координаты     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 then if ConnectName=NameKom then if pck[1]=#$1B then  begin   for i:= 0 to round(length(pck)/36) do    begin    if (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];    end  end; //у БОТА1: if FromServer then if ConnectName=NameBot1 then if pck[1]=#$1B then  begin   for i:= 0 to round(length(pck)/36) do    begin    if (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];    end  end; //у БОТА2: if FromServer then if ConnectName=NameBot2 then if pck[1]=#$1B then  begin   for i:= 0 to round(length(pck)/36) do    begin    if (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];    end  end; //у БОТА3: if FromServer then if ConnectName=NameBot3 then if pck[1]=#$1B then  begin   for i:= 0 to round(length(pck)/36) do    begin    if (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];    end  end; //у БОТА4: if FromServer then if ConnectName=NameBot4 then if pck[1]=#$1B then  begin   for i:= 0 to round(length(pck)/36) do    begin    if (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];    end  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; if FromServer then if ConnectName=NameBot2 then if pck[1]=#$06 then if pck[2] + pck[3] + pck[4] + pck[5] = IDBot2 then   CurHPBot2:=15000; if FromServer then if ConnectName=NameBot3 then if pck[1]=#$06 then if pck[2] + pck[3] + pck[4] + pck[5] = IDBot3 then   CurHPBot3:=15000; if FromServer then if ConnectName=NameBot4 then if pck[1]=#$06 then if pck[2] + pck[3] + pck[4] + pck[5] = IDBot3 then   CurHPBot4:=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);   MaxMPKom:=readD(i);   CurMPKOM:=readD(i);   MaxCPKom:=round(MaxHPKom/2);   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);   MaxMPBot1:=readD(i);   CurMPBot1:=readD(i);   MaxCPBot1:=round(MaxHPBot1/2);   end; //2-й бот if FromServer then if ConnectName = NameBot2 then if pck[1]=#$04 then   begin   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 then if ConnectName = NameBot3 then if pck[1]=#$04 then   begin   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 then if ConnectName = NameBot4 then if pck[1]=#$04 then   begin   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 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); //считываем текущее состояние ЦП!!-)     CurCPKom:=ReadD(30); //ну собственно ето уже можно править под желания каждого: //если жизни текущие меньше 0,7 от шкалы (70%) то.. //то биш использует свой любимый скил МАЖОР ХИЛ за спирит оре (в интерлюде) (для ц4 такого скила нету)      if (CurHPKom < round(MaxHPKom*0.7)) then      begin       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)) then      begin       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)) then      begin       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 00       if (IDBot4 <> '') then SendToServerEX(NameBot4);      end;      if (CurHPKom < round(MaxHPKom*0.6)) then      begin       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)) then      begin       buf:= hstr('14') + OidGHPPotion0 + hstr('00 00 00 00'); // гритер хилку       if (OidGHPPotion0 <> '') then SendToServerEX(NameKom);      end;      if (CurHPKom < round(MaxHPKom*0.8)) then      begin       buf:= hstr('14') + OidHPPotion0 + hstr('00 00 00 00'); // обычную хилку       if (OidHPPotion0 <> '') then SendToServerEX(NameKom);      end;      if (CurHPKom < round(MaxHPKom*0.3)) then      begin       buf:= hstr('14') + OidHPLexir0 + hstr('00 00 00 00'); // лексир ХП       if (OidHPPotion0 <> '') then SendToServerEX(NameKom);      end; ///ТУТ МЕНЯЙТЕ ЗНАЧЕНИЕ ОЧ АКУРАТНО.. 1,0 ето не 100% шкалы изза бафа на блесс ХП.. // поетому ставьте немного меньше с учетом возможного бафа на блес ХП..      if (CurCPKom < round(MaxCPKom*0.6)) then      begin       buf:= hstr('14') + OidGCPPotion0 + hstr('00 00 00 00'); // ГЦП БАНКУ       if (OidGCPPotion0 <> '') then SendToServerEX(NameKom);      end;      if (CurCPKom < round(MaxCPKom*0.1)) then      begin       buf:= hstr('14') + OidCPLexir0 + hstr('00 00 00 00'); // лексир ЦП       if (OidGCPPotion0 <> '') then SendToServerEX(NameKom);      end;   end; //следим за ХП у БОТ1 //если злой хренко решит наших баферов бить, а потом нас- то мы просто так не сдадимся.. //баферам ХИЛ дадим.. чтоб хренко били били и не убили... //я сделал тупо- чтоб тока сам себя хилял бафер.. добавьте аналогичные строки сюда и будет так что все баферы будут хилить баф-бота //ето надо полюбасу- но пока руки не дошли.. и вам немного задачи- доделать скрипт.. //но я етого не сделал еще по одной причине.. в реальных условиях мой командир бегает оч шустро.. //баферы отстают.. если 1 бафер на пвп отстанет- да и хер с ним.. а если етого отстающего бьют.. //и все мои баферы кинутся его хилить (если его бьют) то я через 15 сек буду оч далеко и меня уже баферы не догонят //и я буду- (командир пати) без хила.. поетому если бафера атакуют то я сделал чтоб он сам себя лечил.. // но чтоб другие не лечили, чтоб другие за мной бежали.. if FromServer then if ConnectName = NameBot1 then if pck[1]=#$0e then if (pck[2] + pck[3] + pck[4] + pck[5] + pck[6] = IDbot1 + #$04) then   begin     CurHPbot1:=ReadD(14);     CurCPbot1:=ReadD(30); //на 70% шкалы хилит бафер сам себя (бишоп)  скилом мажор хил      if (CurHPbot1 < round(MaxHPBot1*0.7)) then      begin       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)) then      begin       buf:= hstr('14') + OidGHPPotion1 + hstr('00 00 00 00'); // гритер хилку       if (OidGHPPotion1 <> '') then SendToServerEX(NameBot1);      end;      if (CurHPBot1 < round(MaxHPBot1*0.8)) then      begin       buf:= hstr('14') + OidHPPotion1 + hstr('00 00 00 00'); // обычную хилку       if (OidHPPotion1 <> '') then SendToServerEX(NameBot1);      end;      if (CurHPBot1 < round(MaxHPBot1*0.3)) then      begin       buf:= hstr('14') + OidHPLexir1 + hstr('00 00 00 00'); // лексир ХП       if (OidHPLexir1 <> '') then SendToServerEX(NameBot1);      end;      if (CurCPBot1 < round(MaxCPBot1*0.6)) then      begin       buf:= hstr('14') + OidGCPPotion1 + hstr('00 00 00 00'); // ГЦП БАНКУ       if (OidGCPPotion1 <> '') then SendToServerEX(NameBot1);      end;      if (CurCPBot1 < round(MaxCPBot1*0.1)) then      begin       buf:= hstr('14') + OidCPLexir1 + hstr('00 00 00 00'); // лексир ЦП       if (OidCPLexir1 <> '') then SendToServerEX(NameBot1);      end;   end; //следим за ХП у БОТ2   if FromServer then   if pck[1]=#$0e then   if ConnectName = NameBot2 then   if (pck[2] + pck[3] + pck[4] + pck[5] + pck[6] = IDbot2 + #$04) then   begin     CurHPbot2:=ReadD(14);     CurCPbot2:=ReadD(30);      if (CurHPbot2 < round(MaxHPBot2*0.7)) then      begin       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)) then      begin       buf:= hstr('14') + OidGHPPotion2 + hstr('00 00 00 00'); // гритер хилку       if (OidGHPPotion2 <> '') then SendToServerEX(NameBot2);      end;      if (CurHPBot2 < round(MaxHPBot2*0.8)) then      begin       buf:= hstr('14') + OidHPPotion2 + hstr('00 00 00 00'); // обычную хилку       if (OidHPPotion2 <> '') then SendToServerEX(NameBot2);      end;      if (CurHPBot2 < round(MaxHPBot2*0.3)) then      begin       buf:= hstr('14') + OidHPLexir2 + hstr('00 00 00 00'); // лексир ХП       if (OidHPLexir2 <> '') then SendToServerEX(NameBot2);      end;      if (CurCPBot2 < round(MaxCPBot2*0.6)) then      begin       buf:= hstr('14') + OidGCPPotion2 + hstr('00 00 00 00'); // ГЦП БАНКУ       if (OidGCPPotion2 <> '') then SendToServerEX(NameBot2);      end;      if (CurCPBot2 < round(MaxCPBot2*0.1)) then      begin       buf:= hstr('14') + OidCPLexir2 + hstr('00 00 00 00'); // лексир ЦП       if (OidCPLexir2 <> '') then SendToServerEX(NameBot2);      end;   end; //следим за ХП у БОТ3   if FromServer then   if pck[1]=#$0e then   if ConnectName = NameBot3 then   if (pck[2] + pck[3] + pck[4] + pck[5] + pck[6] = IDbot3 + #$04) then   begin     CurHPbot3:=ReadD(14);     CurCPbot3:=ReadD(30);      if (CurHPbot3 < round(MaxHPBot3*0.7)) then      begin       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)) then      begin       buf:= hstr('14') + OidGHPPotion3 + hstr('00 00 00 00'); // гритер хилку       if (OidGHPPotion3 <> '') then SendToServerEX(NameBot3);      end;      if (CurHPBot3 < round(MaxHPBot3*0.8)) then      begin       buf:= hstr('14') + OidHPPotion3 + hstr('00 00 00 00'); // обычную хилку       if (OidHPPotion3 <> '') then SendToServerEX(NameBot3);      end;      if (CurHPBot3 < round(MaxHPBot3*0.3)) then      begin       buf:= hstr('14') + OidHPLexir3 + hstr('00 00 00 00'); // лексир ХП       if (OidHPLexir3 <> '') then SendToServerEX(NameBot3);      end;      if (CurCPBot3 < round(MaxCPBot3*0.6)) then      begin       buf:= hstr('14') + OidGCPPotion3 + hstr('00 00 00 00'); // ГЦП БАНКУ       if (OidGCPPotion3 <> '') then SendToServerEX(NameBot3);      end;      if (CurCPBot3 < round(MaxCPBot3*0.1)) then      begin       buf:= hstr('14') + OidCPLexir3 + hstr('00 00 00 00'); // лексир ЦП       if (OidCPLexir3 <> '') then SendToServerEX(NameBot3);      end;   end; //следим за ХП у БОТ4   if FromServer then   if pck[1]=#$0e then   if ConnectName = NameBot4 then   if (pck[2] + pck[3] + pck[4] + pck[5] + pck[6] = IDbot4 + #$04) then   begin     CurHPbot4:=ReadD(14);     CurCPbot4:=ReadD(30);      if (CurHPbot4 < round(MaxHPBot4*0.7)) then      begin       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)) then      begin       buf:= hstr('14') + OidGHPPotion4 + hstr('00 00 00 00'); // гритер хилку       if (OidGHPPotion4 <> '') then SendToServerEX(NameBot4);      end;      if (CurHPBot4 < round(MaxHPBot4*0.8)) then      begin       buf:= hstr('14') + OidHPPotion4 + hstr('00 00 00 00'); // обычную хилку       if (OidHPPotion4 <> '') then SendToServerEX(NameBot4);      end;      if (CurHPBot4 < round(MaxHPBot4*0.3)) then      begin       buf:= hstr('14') + OidHPLexir4 + hstr('00 00 00 00'); // лексир ХП       if (OidHPLexir4 <> '') then SendToServerEX(NameBot4);      end;      if (CurCPBot4 < round(MaxCPBot4*0.6)) then      begin       buf:= hstr('14') + OidGCPPotion4 + hstr('00 00 00 00'); // ГЦП БАНКУ       if (OidGCPPotion4 <> '') then SendToServerEX(NameBot4);      end;      if (CurCPBot4 < round(MaxCPBot4*0.1)) then      begin       buf:= hstr('14') + OidCPLexir4 + hstr('00 00 00 00'); // лексир ЦП       if (OidCPLexir4 <> '') then SendToServerEX(NameBot4);      end;   end; //следим за МП у КОМАНДИРА (ШЕ следит)   if FromServer then   if pck[1]=#$0e then   if ConnectName = NameKom then   if (pck[2] + pck[3] + pck[4] + pck[5] + pck[6] = IDKomandos + #$02) then   begin     CurMPkom:=ReadD(14);     rnd:=round(random*100);      if (CurMPkom < round(MaxMPkom*0.5)) and (rnd<15) then      begin       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 then   if pck[1]=#$0e then   if ConnectName = NameKom then   if (pck[2] + pck[3] + pck[4] + pck[5] + pck[6] = IDKomandos + #$02) then   begin     CurMPkom:=ReadD(14);     rnd:=round(random*100);      if (CurMPkom < round(MaxMPkom*0.5)) and (rnd<15) then      begin       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 00       if (IDBot4 <> '') then SendToServerEX(NameBot4);      end;   end; //следим за МП у БИША //этот кусок кода вполне альтернативный..   if FromServer then   if pck[1]=#$0e then   if ConnectName = NameBot1 then   if (pck[2] + pck[3] + pck[4] + pck[5] + pck[6] = IDbot1 + #$02) then   begin     CurMPBot1:=ReadD(14);      if (CurMPBot1 < round(MaxMPBot1*0.9)) then      begin       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 00       if (IDBot3 <> '') then SendToServerEX(NameBot3);      end;   end; //**********************СЛЕДИМ ЗА ТАРГЕТАМИ**************************************** //КОМАНДИР //если принят пакет со сменой таргета у командира то if FromServer then if ConnectName = NameKom then if pck[1]=#$A6 then    begin //запоминаем ИД таргета командира для ассиста    IDAssistTarget:= pck[2]+pck[3]+pck[4]+pck[5];    end; //**********************САЖАЕМ ВСЮ ПАТИ ЧЕРЕЗ КОНТРОЛ**************************************** //если принят пакет на сажание с контролом то сажаем всю пати   if FromClient then   if (ConnectName = NameKom) then   if (pck[1]+pck[2]+pck[6]=hstr('45 00 01')) then    begin       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 then if pck[1] = #$48 then if (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) then   begin   BotBeg;   end; //**************************УПРАВЛЕНИЕ************************************************ //"Bow" (ПОКЛОН)- БЕЖАТЬ за КОМАНДИРОМ   if FromClient then   if ConnectName=NameKom then   if pck[1]+pck[2]=hstr('1B 07') then     begin      pck:='';      BotBeg;      exit;     end; //ADVANCE- В АТАКУ - пати быстрое создание (3-я кнопка)   if FromClient then   if ConnectName=NameKom then   if pck[1]+pck[2]=hstr('1B 04') then     begin      pck:='';      //сразу рвем пати у всех чаров и командир раздает пати поновому      //чары автоматически принимают пати      //используется таймер т.к. одновременно 2-м чарам пати кинуть нельзя       timer3.enabled:=true;      exit;     end; //YES-  РУТ ПО АССИСТУ (4-я кнопка) либо переделать в какойто дебаф от каждого бафера он свой.. по ассисту все баферы какуюто куйню кинут на цель по ассисту..   if FromClient then   if ConnectName=NameKom then   if pck[1]+pck[2]=hstr('1B 06') then     begin      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 then   if ConnectName=NameKom then   if pck[1]+pck[2]=hstr('1B 05') then     begin     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 then   if ConnectName=NameKom then   if pck[1]+pck[2]=hstr('1B 08') then     begin     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 вне форума  
Старый 25.02.2009, 15:37   #2
Рыцарь
 
Аватар для QaK
 
Регистрация: 28.09.2007
Сообщений: 1,558
Сказал Спасибо: 71
Имеет 351 спасибок в 244 сообщенях
QaK пока неопределено
По умолчанию

Alan, тонну чужого кода перелопачивать никому неохота, да и Ворону, я думаю, тоже. Поставь мессаджбоксы на ключевые моменты, отлови, в какой момент в каком куске кода происходит сбой.

З.Ы. для оформления коду юзай теги [ HIGHLIGHT = "delphi" ] тут код [ /HIGHLIGHT ]
QaK вне форума  
За это сообщение QaK нажился спасибкой от:
Старый 25.02.2009, 15:53   #3
Новичок
 
Аватар для Alan
 
Регистрация: 11.10.2007
Адрес: Питер
Сообщений: 13
Сказал Спасибо: 261
Имеет 0 спасибок в 0 сообщенях
Alan
По умолчанию

сбой происходит даже при иницилизации. виснет сразу все, и навсегда =)
ps
вопосов бы не было еслибы строчка или еще что нить, а тут виснет сразу намертво.
что за ошибка--->address 0052B420 in module l2phx.exe read address 2C37352C ?
Alan вне форума  
Старый 25.02.2009, 15:58   #4
Рыцарь
 
Аватар для QaK
 
Регистрация: 28.09.2007
Сообщений: 1,558
Сказал Спасибо: 71
Имеет 351 спасибок в 244 сообщенях
QaK пока неопределено
По умолчанию

Цитата:
Сообщение от Alan Посмотреть сообщение
что за ошибка--->address 0052B420 in module l2phx.exe read address 2C37352C ?
чегото в памяти нетак, это может значить все, что угодно ...
QaK вне форума  
Старый 26.02.2009, 01:08   #5
Новичок
 
Аватар для Alan
 
Регистрация: 11.10.2007
Адрес: Питер
Сообщений: 13
Сказал Спасибо: 261
Имеет 0 спасибок в 0 сообщенях
Alan
По умолчанию

гы, а я голову ломаю. а тут в памяти дело. =))))) Старый стал 8))) Лан великого Ворона подожду, он пояснит в чем дело. Сервер напишу тока в пм.

Добавлено через 9 часов 4 минуты
тему можно закрыть, вопрос решил, спс QaK.

Последний раз редактировалось Alan, 26.02.2009 в 01:08. Причина: Добавлено сообщение
Alan вне форума  
Закрытая тема

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


Опции темы
Опции просмотра

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

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


Часовой пояс GMT +4, время: 11: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

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