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

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

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 16.01.2008, 02:18   #161
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию Re: ДА БУДЕТ БОТ!

Эта процедура одинаково работает на C4 и IL
Код:
var
 MyID, CurHP, MaxHP : integer;

procedure StatsUpdate;
var
  i: integer;
begin
  for i:=0 to ReadD(6)-1 do begin
    case pck[i*8+10] of
      #$09: CurHP:=ReadD(i*8+14);
      #$0A: MaxHP:=ReadD(i*8+14);
    end;
  end;
end;

begin
  if (ConnectName=Name) and FromServer then begin
    case pck[1] of
      #$0E: begin
          if (MyID=ReadD(2)) then StatsUpdate;
      end;
    end;
  end;
end.
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни


NLObP вне форума   Ответить с цитированием
Старый 16.01.2008, 02:41   #162
Рыцарь
 
Аватар для VORON
 
Регистрация: 06.08.2007
Сообщений: 209
Сказал Спасибо: 6
Имеет 67 спасибок в 34 сообщенях
VORON пока неопределено
По умолчанию

NLO, я незнаю синтаксиса КЕЙС ОФ.. просьба и не говарить что я нуб.. я ето и так занаю.. вопщем твой скрипт мне не понятен.. но плиз по факту: ХП и ЦП сдвинуто в "ц4" и в "интерлюде" на несколько байтов.. если они сдвинуты то нельзя говорить об том что общий скрипт существует для "ц" и "интерлюда".. я же говарю про то что сдвинуты порядковые номера.. за счет увеличения чего???- непонятно но сдвинуты.. на 2 байта вроде.. вродеде в сторону увеличения.... там где МАКСИМАЛЬНОЕ КОЛ-ВО ХП = пишется ТЕКУЩЕЕ... тоже самое справедливо и для МП..

Добавлено спустя 2 минуты 7 секунд:
лучше лог пакета дай от интерлюда... и нуждающийся в помощи- аналогичны лог даст.. и станет всё понятно

Добавлено спустя 11 минут 42 секунды:
автор: нефиг такие вопросы задовать- неочем типа (почему не работает готовый скрипт) .. ну ето и так всем понятно.. у тебя сервер отличается от того на котором скрипт делался...
главное понять смысл скрипта.. и переделать его под себя.. какуюто новую идею увидеть- ту что други у себя сделали.. для етого и топ... 99% скриптов которые тут нельзя применять на среднестатистическом сервере без переделки..
об чем ето говорит? об том что скрипты кривые?? или об том что люди неспособны переделать их? или об том что шифрация на серваке изменена?
вот пример первый скрипт в первом посте.. там я объяснял как и что сделать чтоб переделать для того чтоб это запустилось... в других скриптах- аналогично..
нужно переделывать, подстраивать.. доделывать...
согласись выяснить места расположения текущих значений переменных- нефиг делать для твое случая..
и отмониторить их- тожэ нефиг делать..
создаеш форму и там (проще всего) в каптион пишеш ХП и МП.. ну что еще проще может быть? просто тебе лень.. вот и нагружаеш форум просмотрами и ответами...
__________________
Цитата:
Сообщение от pybukon
прежде чета попросить я немнога раскажу чтоб вы понили как мне плоха
Цитата:
Сообщение от Byrger
А как сделать мой скрипт бесконечным?
Цитата:
Сообщение от XKOR
.. каждый день ионизированной ногой протирает больную)
Цитата:
Сообщение от PsyR
Вылоджите пожалуйста скрипт на рыбалку желательно что бы сам в ВХ клал адаптированый под шоки и так же скрипт на ТТ рец, тоже с диалогами
VORON вне форума   Ответить с цитированием
Старый 16.01.2008, 10:59   #163
Рыцарь
 
Аватар для mks
 
Регистрация: 21.09.2007
Сообщений: 376
Сказал Спасибо: 11
Имеет 218 спасибок в 106 сообщенях
mks пока неопределено
По умолчанию Re: ДА БУДЕТ БОТ!

keyn вообще-то скрипт я писал для интерлюда, где его и использую.... конечно я не исключаю возможности не соответствия пакетов на разных серверах, но советую не путать пакеты ЮзерИнфо с СмолПатиИнфо, я использую второй:
Код:
#$52
D: UserID
S: UserName
D: CurCP
D: MaxCP
D: CurHP
D: MaxHP
D: CurMP
D: MaxMP
__________________
FA©Q!
mks вне форума   Ответить с цитированием
Старый 16.01.2008, 21:57   #164
Рыцарь
 
Аватар для VORON
 
Регистрация: 06.08.2007
Сообщений: 209
Сказал Спасибо: 6
Имеет 67 спасибок в 34 сообщенях
VORON пока неопределено
По умолчанию

MKS, мне кажется очень много вопросов у людей связано с бональными вещам.. которые получаются изза того что нет удобного интерфейса для мониторинга значений переменных в режиме онлайн... люди в слепую тычатся.. поетой причине дам кусочек кода который на стадии разработки скрипта нужно в скрипт добавить и с его помощью отоброжать значения переменных на екране..
var
frm:Tform;

memo:Tmemo;

procedure Init; //Вызывается при включении скрипта
begin
frm := TForm.Create(nil);
frm.Caption := 'Chat';
frm.BorderStyle := bsSizeable;
frm.Position := poScreencenter;
frm.Width:=600;
frm.Height:=700;
frm.FormStyle:=FsStayOnTop;
frm.Show;

memo :=TMemo.create(nil);
memo.parent:=frm;
memo.align:=alClient;

end;

procedure Free; //Вызывается при выключении скрипта
begin
memo.free;
frm.Free;
end;

//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin

if FromClient then
begin

memo.Lines.Add('сюда пишем всё что хотим и видемето на екране екране, например:'+inttostr(12345));

end;
end.
__________________
Цитата:
Сообщение от pybukon
прежде чета попросить я немнога раскажу чтоб вы понили как мне плоха
Цитата:
Сообщение от Byrger
А как сделать мой скрипт бесконечным?
Цитата:
Сообщение от XKOR
.. каждый день ионизированной ногой протирает больную)
Цитата:
Сообщение от PsyR
Вылоджите пожалуйста скрипт на рыбалку желательно что бы сам в ВХ клал адаптированый под шоки и так же скрипт на ТТ рец, тоже с диалогами
VORON вне форума   Ответить с цитированием
Старый 17.01.2008, 01:42   #165
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию Re:

Цитата:
Сообщение от VORON
NLO, я незнаю синтаксиса КЕЙС ОФ.. просьба и не говарить что я нуб.. я ето и так занаю.. вопщем твой скрипт мне не понятен.. но плиз по факту: ХП и ЦП сдвинуто в "ц4" и в "интерлюде" на несколько байтов.. если они сдвинуты то нельзя говорить об том что общий скрипт существует для "ц" и "интерлюда".. я же говарю про то что сдвинуты порядковые номера.. за счет увеличения чего???- непонятно но сдвинуты.. на 2 байта вроде.. вродеде в сторону увеличения.... там где МАКСИМАЛЬНОЕ КОЛ-ВО ХП = пишется ТЕКУЩЕЕ... тоже самое справедливо и для МП..

лучше лог пакета дай от интерлюда... и нуждающийся в помощи- аналогичны лог даст.. и станет всё понятно
Вот кусочек исходника пакета Интерлюдии
writeC(0x04);
writeD(_cha.getX());
writeD(_cha.getY());
writeD(_cha.getZ());
writeD(_cha.getHeading());
writeD(_cha.getObjectId());
writeS(_cha.getName());
writeD(_cha.getRace().ordinal());
writeD(_cha.getSex());
writeD(_cha.getBaseClass());
writeD(_cha.getLevel());
writeQ(_cha.getExp());
writeD(_cha.getSTR());
writeD(_cha.getDEX());
writeD(_cha.getCON());
writeD(_cha.getINT());
writeD(_cha.getWIT());
writeD(_cha.getMEN());
writeD(_cha.getMaxHp());
writeD((int) _cha.getCurrentHp());
writeD(_cha.getMaxMp());
writeD((int) _cha.getCurrentMp());
writeD(_cha.getSp());
writeD(_cha.getCurrentLoad());
writeD(_cha.getMaxLoad());

Вот то же самое для С4
writeC(0x04);
writeD(_cha.getX());
writeD(_cha.getY());
writeD(_cha.getZ());
writeD(_cha.getHeading());
writeD(_cha.getObjectId());
writeS(_cha.getName());
writeD(_cha.getRace().ordinal());
writeD(_cha.getSex());
writeD(_cha.getClassId().getId());
writeD(_cha.getLevel());
writeD(_cha.getExp());
writeD(_cha.getSTR());
writeD(_cha.getDEX());
writeD(_cha.getCON());
writeD(_cha.getINT());
writeD(_cha.getWIT());
writeD(_cha.getMEN());
writeD(_cha.getMaxHp());
writeD((int) _cha.getCurrentHp());
writeD(_cha.getMaxMp());
writeD((int)_cha.getCurrentMp());
writeD(_cha.getSp());
writeD(_cha.getCurrentLoad());
writeD(_cha.getMaxLoad());

Отличаются в размерности EXP'ы. В С4 это 4 байта в Интерлюдии 8 байт - вот оно и смещение!

По поводу пакета StatusUpdate #0E. Он появляется гораздо чаще пакета UserInfo #04. И одинаков для С4 и Интерлюдии

Коды атрибутов в пакете UserInfo
public static int LEVEL = 0x01;
public static int EXP = 0x02;
public static int STR = 0x03;
public static int DEX = 0x04;
public static int CON = 0x05;
public static int INT = 0x06;
public static int WIT = 0x07;
public static int MEN = 0x08;
public static int CUR_HP = 0x09;
public static int MAX_HP = 0x0a;
public static int CUR_MP = 0x0b;
public static int MAX_MP = 0x0c;
public static int SP = 0x0d;
public static int CUR_LOAD = 0x0e;
public static int MAX_LOAD = 0x0f;
public static int P_ATK = 0x11;
public static int ATK_SPD = 0x12;
public static int P_DEF = 0x13;
public static int EVASION = 0x14;
public static int ACCURACY = 0x15;
public static int CRITICAL = 0x16;
public static int M_ATK = 0x17;
public static int CAST_SPD = 0x18;
public static int M_DEF = 0x19;
public static int PVP_FLAG = 0x1a;
public static int KARMA = 0x1b;
public static int CUR_CP = 0x21;
public static int MAX_CP = 0x22;

И сам пакет
{
writeC(0x0e); //тип пакета
writeD(_objectId); //указывает к кому относится этот пакет
writeD(_attributes.size()); //кол-во атрибутов в пакете
for (Attribute temp : _attributes)
{
writeD(temp.id); //код атрибута
writeD(temp.value); //величина
}
}
Вышеприведенная мною процедура, в цикле сравнивает атрибуты с необходимым нам и подставлеет его величину.
Из UserInfo, по мне, надо только ObjID чара брать, ну может еще макс. значения атрибутов, а все остальное из StatusUpdate.
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни


NLObP вне форума   Ответить с цитированием
Старый 17.01.2008, 02:02   #166
Новичок
 
Регистрация: 15.11.2007
Сообщений: 19
Сказал Спасибо: 0
Имеет 1 спасибку в 1 сообщении
SWS
По умолчанию

NLObP, плиз скажи где брал исходники сервака, я искал там порядок тату был другой. Там было с INT, а игра передаёт начиная с STR, я сначала не понимал че не так. :)
SWS вне форума   Ответить с цитированием
Старый 17.01.2008, 02:21   #167
Новичок
 
Регистрация: 04.01.2008
Сообщений: 7
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
keyn
По умолчанию

mks,

Код:
#$52
D: UserID
S: UserName
D: CurCP
D: MaxCP
D: CurHP
D: MaxHP
D: CurMP
D: MaxMP
Вот смотри выдрал пакет PartySmallWindowUpdate который шлет сервак где я мучаю скрипту.

52 43 D6 70 48 00 00 00 00 00 00 00 00 00 00 00 00 00 00 CD 08 00 00 CD 08 00 00 FA 0B 00 00 FA 0B 00 00 F9 02 00 00 FA 02 00 00 33 00 00 00 39 00 00 00

Ник чара - Выставил в нули - дабы не светитЦо :roll:
CurCP
MaxCP
CurHP
MaxHP
CurMP
MaxMP

Сравни если не сложно - со своим пакетом - есть ли смещение?
keyn вне форума   Ответить с цитированием
Старый 17.01.2008, 05:08   #168
Рыцарь
 
Аватар для VORON
 
Регистрация: 06.08.2007
Сообщений: 209
Сказал Спасибо: 6
Имеет 67 спасибок в 34 сообщенях
VORON пока неопределено
По умолчанию

я делал кучу разновидностей подобных ботов.. поетому накуя ты пати виндоу смотриш???
смотри- СТАТУС ПАДЕЙТ!
оттуда выдергивай инфу про ХП и МП... и про лимиты ХП и МП тоже (ммаксимальное кол-во) лимиты для того чтобы скрипт сделать универсальным типа 70% от шкалы- лить ХП.. а не фиксировать ето число константой каждый раз- переправля для нового лвл-)...
спс за твой грамотный вопрос нам.. красиво так всё нарисовал в красках- стало всё понятно сразу...
впредь если вопросы возникнут- спрашивай максимально уточняя что именно не выходит.. чтоб мы поняли..
павкет СТАТУС АПДЕЙТ приходит каждый раз при изменении кол-ва ХП и МП.... и не только.. при бафах еще и т.д.
поетому нефиг пати окно смотреть!! смотри СТАТУС АБДЕЙТ!

Добавлено спустя 5 минут 29 секунд:
MKS, я нехачу сказать что твой скрипт кривой.. просто если выдергивать инфу из СТАТУС АБДЕЙТ то ето более коректней.. и работать будет дажэ без создания пати..
P.S.- протестировано

Добавлено спустя 2 минуты:
Re: ДА БУДЕТ БОТ!
Цитата:
Сообщение от NLObP
Эта процедура одинаково работает на C4 и IL
Код:
var
 MyID, CurHP, MaxHP : integer;

procedure StatsUpdate;
var
  i: integer;
begin
  for i:=0 to ReadD(6)-1 do begin
    case pck[i*8+10] of
      #$09: CurHP:=ReadD(i*8+14);
      #$0A: MaxHP:=ReadD(i*8+14);
    end;
  end;
end;

begin
  if (ConnectName=Name) and FromServer then begin
    case pck[1] of
      #$0E: begin
          if (MyID=ReadD(2)) then StatsUpdate;
      end;
    end;
  end;
end.
не проверял но думаю он прав...
СТАТУС АПДЕЙТ ИСПОЛЬЗУЕТСЯ!
__________________
Цитата:
Сообщение от pybukon
прежде чета попросить я немнога раскажу чтоб вы понили как мне плоха
Цитата:
Сообщение от Byrger
А как сделать мой скрипт бесконечным?
Цитата:
Сообщение от XKOR
.. каждый день ионизированной ногой протирает больную)
Цитата:
Сообщение от PsyR
Вылоджите пожалуйста скрипт на рыбалку желательно что бы сам в ВХ клал адаптированый под шоки и так же скрипт на ТТ рец, тоже с диалогами
VORON вне форума   Ответить с цитированием
Старый 17.01.2008, 12:23   #169
Рыцарь
 
Аватар для mks
 
Регистрация: 21.09.2007
Сообщений: 376
Сказал Спасибо: 11
Имеет 218 спасибок в 106 сообщенях
mks пока неопределено
По умолчанию Re: ДА БУДЕТ БОТ!

VORON
Цитата:
просто если выдергивать инфу из СТАТУС АБДЕЙТ то ето более коректней..
я бы назвал этот вывод не очень корректным)), потому как выдергивая инфу из пакетов СмолПати все будет работать корректно.
Да, используя инфу из СтатусАпдэйт, скрипт можно что б работал и вне пати, но таковой задачи при написании у меня небыло, к тому же с пакетом СмолПати проще работать, плюс сам хилер может находиться не в пати и хилять, т.к. если коммандир находится в пати а хилер нет, то пакеты СмолПати всеравно приходят через коммандира
еще про хил в зависимости от процентного кол-ва хп я тоже делал, сначала так и использовал, но потом пришел к выводу что лучше когда указываешь конкретное количество, небольшой пример:
пати Дестроер и какой-нидь темный эльф, - у дестроера под баффом 10к ХП, а у эльфа 4к, и прикинь сам как все будет выглядеть если здесь хил будет идти по %....
__________________
FA©Q!
mks вне форума   Ответить с цитированием
Старый 17.01.2008, 13:40   #170
Рыцарь
 
Аватар для VORON
 
Регистрация: 06.08.2007
Сообщений: 209
Сказал Спасибо: 6
Имеет 67 спасибок в 34 сообщенях
VORON пока неопределено
По умолчанию

MKS, ну как как... нормально.. то что дестр ХП жрет немереноо- факт.. но лить их 1 фиг надо.. от того что пререправим на фиксированное значение- меньше лиль не прийдется...

Добавлено спустя 8 минут 4 секунды:
Код:
var
Bot1X,Bot1Y,Bot1Z,Bot2X,Bot2Y,Bot2Z:string;
rnd:integer;

NameKom,NameBot1,NameBot2:string;

MaxHPKom,MaxHPBot1,MaxHPBot2:integer;
MaxMPKom,MaxMPBot1,MaxMPBot2:integer;

CurHPKom,CurMPKom,CurHPbot1,CurMPbot1,CurHPbot2,CurMPbot2:integer;

IDKomandos,IDbot1,IDbot2:string;
ChekIdKom,ChekIdBot1,ChekIdBot2:boolean;

timer1: TTimer; //баф БОТ1
timer2: TTimer; //баф БОТ2
timer3: TTimer; //для создания пати
tick1,tick2,tick3:integer;

i:integer;
tempD:integer;
tempS:String;

//*********************БУФ ШЕ******************************************************************
procedure OnTimer1(Sender: TObject);
begin
//    buf:=hstr('2F 2C 04 00 00 00 00 00 00 00'); //па
//    buf:=hstr('2F 10 04 00 00 00 00 00 00 00');  //пд
//    buf:=hstr('2F 35 04 00 00 00 00 00 00 00');  //фокус
//    buf:=hstr('2F B4 04 00 00 00 00 00 00 00');  //вв
//    buf:=hstr('2F 0B 04 00 00 00 00 00 00 00');  //ментал
//    buf:=hstr('2F A5 04 00 00 00 00 00 00 00');  //резист к ветру
//    buf:=hstr('2F D8 04 00 00 00 00 00 00 00'); //гвиданс-акураси
//    buf:=hstr('2F DA 04 00 00 00 00 00 00 00'); //деф виспер- сила крита
//               2F 36 04 00 00 00 00 00 00 00  кон
//               2F 23 04 00 00 00 00 00 00 00  емповер
//               2F F4 04 00 00 00 00 00 00 00  вамп

//буф командира (ШЕ)
  if tick1=1 then
   begin
    buf:=hstr('04') + IDKomandos + Bot1X + Bot1Y + Bot1Z + hstr('00');
    SendToServerEX(NameBot1);
    buf:=hstr('2F F4 04 00 00 00 00 00 00 00'); //вамп
    SendToServerEX(NameBot1);
   end;

  if tick1=2 then
   begin
    buf:=hstr('04') + IDKomandos + Bot1X + Bot1Y + Bot1Z + hstr('00');
    SendToServerEX(NameBot1);
    buf:=hstr('2F 2C 04 00 00 00 00 00 00 00'); //па
    SendToServerEX(NameBot1);
   end;

  if tick1=3 then
   begin
    buf:=hstr('04') + IDKomandos + Bot1X + Bot1Y + Bot1Z + hstr('00');
    SendToServerEX(NameBot1);
    buf:=hstr('2F 10 04 00 00 00 00 00 00 00');  //пд
    SendToServerEX(NameBot1);
   end;

  if tick1=4 then
   begin
    buf:=hstr('04') + IDKomandos + Bot1X + Bot1Y + Bot1Z + hstr('00');
    SendToServerEX(NameBot1);
    buf:=hstr('2F B4 04 00 00 00 00 00 00 00');  //вв
    SendToServerEX(NameBot1);
   end;

  if tick1=5 then
   begin
    buf:=hstr('04') + IDKomandos + Bot1X + Bot1Y + Bot1Z + hstr('00');
    SendToServerEX(NameBot1);
    buf:=hstr('2F 35 04 00 00 00 00 00 00 00');  //фокус
    SendToServerEX(NameBot1);
   end;

  if tick1=6 then
   begin
    buf:=hstr('04') + IDKomandos + Bot1X + Bot1Y + Bot1Z + hstr('00');
    SendToServerEX(NameBot1);
    buf:=hstr('2F DA 04 00 00 00 00 00 00 00'); //деф виспер- сила крита
    SendToServerEX(NameBot1);
   end;

  if tick1=7 then
   begin
    buf:=hstr('04') + IDKomandos + Bot1X + Bot1Y + Bot1Z + hstr('00');
    SendToServerEX(NameBot1);
    buf:=hstr('2F 0B 04 00 00 00 00 00 00 00');  //ментал
    SendToServerEX(NameBot1);
   end;

  if tick1=8 then
   begin
    buf:=hstr('04') + IDKomandos + Bot1X + Bot1Y + Bot1Z + hstr('00');
    SendToServerEX(NameBot1);
    buf:=hstr('2F A5 04 00 00 00 00 00 00 00');  //резист к ветру
    SendToServerEX(NameBot1);
   end;

  if tick1=9 then
   begin
    buf:=hstr('04') + IDKomandos + Bot1X + Bot1Y + Bot1Z + hstr('00');
    SendToServerEX(NameBot1);
    buf:=hstr('2F D8 04 00 00 00 00 00 00 00'); //гвиданс-акураси
    SendToServerEX(NameBot1);
   end;


//буф ШЕ (ШЕ)
  if tick1=10 then
   begin
    buf:=hstr('04') + IDBot1 + Bot1X + Bot1Y + Bot1Z + hstr('00');
    SendToServerEX(NameBot1);
    buf:=hstr('2F 10 04 00 00 00 00 00 00 00'); //щит
    SendToServerEX(NameBot1);
   end;

  if tick1=11 then
   begin
    buf:=hstr('04') + IDbot1 + Bot1X + Bot1Y + Bot1Z + hstr('00');
    SendToServerEX(NameBot1);
    buf:=hstr('2F B4 04 00 00 00 00 00 00 00'); //вв
    SendToServerEX(NameBot1);
   end;

  if tick1=12 then
   begin
    buf:=hstr('04') + IDBot1 + Bot1X + Bot1Y + Bot1Z + hstr('00');
    SendToServerEX(NameBot1);
    buf:=hstr('2F 36 04 00 00 00 00 00 00 00');  //кон
    SendToServerEX(NameBot1);
   end;

  if tick1=13 then
   begin
    buf:=hstr('04') + IDBot1 + Bot1X + Bot1Y + Bot1Z + hstr('00');
    SendToServerEX(NameBot1);
    buf:=hstr('2F 23 04 00 00 00 00 00 00 00');  //емп
    SendToServerEX(NameBot1);
   end;

  if tick1=14 then
   begin
    buf:=hstr('04') + IDBot1 + Bot1X + Bot1Y + Bot1Z + hstr('00');
    SendToServerEX(NameBot1);
    buf:=hstr('2F 0B 04 00 00 00 00 00 00 00');  //ментал
    SendToServerEX(NameBot1);
   end;

  if tick1=15 then
   begin
    buf:=hstr('04') + IDBot1 + Bot1X + Bot1Y + Bot1Z + hstr('00');
    SendToServerEX(NameBot1);
    buf:=hstr('2F A5 04 00 00 00 00 00 00 00');  //резист к ветру
    SendToServerEX(NameBot1);
   end;

//буф ПП (ШЕ)
  if tick1=16 then
   begin
    buf:=hstr('04') + IDBot2 + Bot1X + Bot1Y + Bot1Z + hstr('00');
    SendToServerEX(NameBot1);
    buf:=hstr('2F 23 04 00 00 00 00 00 00 00');  //емп
    SendToServerEX(NameBot1);
   end;

  if tick1=17 then
   begin
    buf:=hstr('04') + IDBot2 + Bot1X + Bot1Y + Bot1Z + hstr('00');
    SendToServerEX(NameBot1);
    buf:=hstr('2F A5 04 00 00 00 00 00 00 00');  //резист к ветру
    SendToServerEX(NameBot1);
   end;


tick1:=tick1+1;

if tick1=18 then
 begin
 tick1:=1;
 timer1.enabled:=false;
    buf:=hstr('04') + IDKomandos + Bot1X + Bot1Y + Bot1Z + hstr('00');
    SendToServerEX(NameBot1);
    buf:=hstr('04') + IDKomandos + Bot1X + Bot1Y + Bot1Z + hstr('00');
    SendToServerEX(NameBot1);
 end;
end;

//*********************БУФ ПП******************************************************************
//список бафов:
//2F 0B 04 00 00 00 00 00 00 00  ментал
//2F 10 04 00 00 00 00 00 00 00  щит
//2F 2C 04 00 00 00 00 00 00 00  па
//2F 35 04 00 00 00 00 00 00 00  фокус
//2F 36 04 00 00 00 00 00 00 00  кон
//2F 3D 04 00 00 00 00 00 00 00  акумен
//2F A7 04 00 00 00 00 00 00 00  резист к огню
//2F B4 04 00 00 00 00 00 00 00  вв
//2F 26 04 00 00 00 00 00 00 00  берс
//2F 14 04 00 00 00 00 00 00 00  ХП реген
//2F 3E 04 00 00 00 00 00 00 00  хаст
//2F 15 04 00 00 00 00 00 00 00  блесс ХП
//2F 0C 04 00 00 00 00 00 00 00  маджик барьер
//

procedure OnTimer2(Sender: TObject);
begin
//буф командира (ПП)
  if tick2=1 then
   begin
    buf:=hstr('04') + IDKomandos + Bot2X + Bot2Y + Bot2Z + hstr('00');
    SendToServerEX(NameBot2);
    buf:=hstr('2F 3E 04 00 00 00 00 00 00 00'); //хаст
    SendToServerEX(NameBot2);
   end;

  if tick2=2 then
   begin
    buf:=hstr('04') + IDKomandos + Bot2X + Bot2Y + Bot2Z + hstr('00');
    SendToServerEX(NameBot2);
    buf:=hstr('2F 15 04 00 00 00 00 00 00 00'); //блес ХП
    SendToServerEX(NameBot2);
   end;

  if tick2=3 then
   begin
    buf:=hstr('04') + IDKomandos + Bot2X + Bot2Y + Bot2Z + hstr('00');
    SendToServerEX(NameBot2);
    buf:=hstr('2F 0C 04 00 00 00 00 00 00 00'); //маджик барьер
    SendToServerEX(NameBot2);
   end;

  if tick2=4 then
   begin
    buf:=hstr('04') + IDKomandos + Bot2X + Bot2Y + Bot2Z + hstr('00');
    SendToServerEX(NameBot2);
    buf:=hstr('2F 3D 04 00 00 00 00 00 00 00'); //акумен
    SendToServerEX(NameBot2);
   end;

  if tick2=5 then
   begin
    buf:=hstr('04') + IDKomandos + Bot2X + Bot2Y + Bot2Z + hstr('00');
    SendToServerEX(NameBot2);
    buf:=hstr('2F A7 04 00 00 00 00 00 00 00'); //резист к огню
    SendToServerEX(NameBot2);
   end;

  if tick2=6 then
   begin
    buf:=hstr('04') + IDKomandos + Bot2X + Bot2Y + Bot2Z + hstr('00');
    SendToServerEX(NameBot2);
    buf:=hstr('2F 26 04 00 00 00 00 00 00 00'); //берс
    SendToServerEX(NameBot2);
   end;

  if tick2=7 then
   begin
    buf:=hstr('04') + IDKomandos + Bot2X + Bot2Y + Bot2Z + hstr('00');
    SendToServerEX(NameBot2);
    buf:=hstr('2F 14 04 00 00 00 00 00 00 00'); //реген ХП
    SendToServerEX(NameBot2);
   end;

//баф ШЕ (ПП)
  if tick2=8 then
   begin
    buf:=hstr('04') + IDbot1 + Bot2X + Bot2Y + Bot2Z + hstr('00');
    SendToServerEX(NameBot2);
    buf:=hstr('2F 15 04 00 00 00 00 00 00 00'); //блесс ХП
    SendToServerEX(NameBot2);
   end;

  if tick2=9 then
   begin
    buf:=hstr('04') + IDbot1 + Bot2X + Bot2Y + Bot2Z + hstr('00');
    SendToServerEX(NameBot2);
    buf:=hstr('2F 0C 04 00 00 00 00 00 00 00'); //маджик барьер
    SendToServerEX(NameBot2);
   end;

  if tick2=10 then
   begin
    buf:=hstr('04') + IDbot1 + Bot2X + Bot2Y + Bot2Z + hstr('00');
    SendToServerEX(NameBot2);
    buf:=hstr('2F 3D 04 00 00 00 00 00 00 00'); //акумен
    SendToServerEX(NameBot2);
   end;

  if tick2=11 then
   begin
    buf:=hstr('04') + IDbot1 + Bot2X + Bot2Y + Bot2Z + hstr('00');
    SendToServerEX(NameBot2);
    buf:=hstr('2F A7 04 00 00 00 00 00 00 00'); //резист к огню
    SendToServerEX(NameBot2);
   end;

//баф ПП (ПП)
  if tick2=12 then
   begin
    buf:=hstr('04') + IDbot2 + Bot2X + Bot2Y + Bot2Z + hstr('00');
    SendToServerEX(NameBot2);
    buf:=hstr('2F 15 04 00 00 00 00 00 00 00');  //блесс ХП
    SendToServerEX(NameBot2);
   end;

  if tick2=13 then
   begin
    buf:=hstr('04') + IDbot2 + Bot2X + Bot2Y + Bot2Z + hstr('00');
    SendToServerEX(NameBot2);
    buf:=hstr('2F 0C 04 00 00 00 00 00 00 00');  //маджик барьер
    SendToServerEX(NameBot2);
   end;

  if tick2=14 then
   begin
    buf:=hstr('04') + IDbot2 + Bot2X + Bot2Y + Bot2Z + hstr('00');
    SendToServerEX(NameBot2);
    buf:=hstr('2F 10 04 00 00 00 00 00 00 00');  //пд
    SendToServerEX(NameBot2);
   end;

  if tick2=15 then
   begin
    buf:=hstr('04') + IDbot2 + Bot2X + Bot2Y + Bot2Z + hstr('00');
    SendToServerEX(NameBot2);
    buf:=hstr('2F 3D 04 00 00 00 00 00 00 00'); //акумен
    SendToServerEX(NameBot2);
   end;

  if tick2=16 then
   begin
    buf:=hstr('04') + IDbot2 + Bot2X + Bot2Y + Bot2Z + hstr('00');
    SendToServerEX(NameBot2);
    buf:=hstr('2F B4 04 00 00 00 00 00 00 00');  //вв
    SendToServerEX(NameBot2);
   end;

  if tick2=17 then
   begin
    buf:=hstr('04') + IDbot2 + Bot2X + Bot2Y + Bot2Z + hstr('00');
    SendToServerEX(NameBot2);
    buf:=hstr('2F A7 04 00 00 00 00 00 00 00');  //резист к огню
    SendToServerEX(NameBot2);
   end;

  if tick2=18 then
   begin
    buf:=hstr('04') + IDbot2 + Bot2X + Bot2Y + Bot2Z + hstr('00');
    SendToServerEX(NameBot2);
    buf:=hstr('2F 36 04 00 00 00 00 00 00 00');  //кон
    SendToServerEX(NameBot2);
   end;

  if tick2=19 then
   begin
    buf:=hstr('04') + IDbot2 + Bot2X + Bot2Y + Bot2Z + hstr('00');
    SendToServerEX(NameBot2);
    buf:=hstr('2F 0B 04 00 00 00 00 00 00 00');  //ментал
    SendToServerEX(NameBot2);
   end;

tick2:=tick2+1;

if tick2=20 then
 begin
 tick2:=1;
 timer2.enabled:=false;
    buf:=hstr('04') + IDKomandos + Bot1X + Bot1Y + Bot1Z + hstr('00');
    SendToServerEX(NameBot2);
    buf:=hstr('04') + IDKomandos + Bot1X + Bot1Y + Bot1Z + hstr('00');
    SendToServerEX(NameBot2);
 end;
end;

//****************************РАЗДАЧА ПРИГЛАШЕНИЙ НА ВСТУПЛЕНИЕ В ПАТИ*******************
//*********************А ТАКЖЕ ПОСЫЛКА ТЕКСТА Я1 Я2 Я3 для захвата ИДешников************
procedure OnTimer3(Sender: TObject);
begin

if tick3 = 1 then
 begin
      buf:=hstr('2B');
      SendToServerEX(NameKom);
      SendToServerEX(NameBot1);
      SendToServerEX(NameBot2);
 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
if (IDKomandos = '') or (IDBot1 = '') or (IDBot2 = '') then
 begin
 buf:=hstr('38');
 writes('я1');
 buf:=buf +  hstr('03 00 00 00'); ///9- али  //  3-пати  // 01 - общий
 sendtoserverex(NameKom);

 buf:=hstr('38');
 writes('я2');
 buf:=buf +  hstr('03 00 00 00'); ///9- али  //  3-пати  // 01 - общий
 sendtoserverex(NameBot1);

 buf:=hstr('38');
 writes('я3');
 buf:=buf +  hstr('03 00 00 00'); ///9- али  //  3-пати  // 01 - общий
 sendtoserverex(NameBot2);
 end;

tick3:=tick3+1;

if tick3=5 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');
    SendToServerEX(NameBot1);
    //бежим за командиром эмулируя повторный щелчек мыши по таргету
    buf:=hstr('04') + IDKomandos + Bot1X + Bot1Y + Bot1Z + hstr('00');
    SendToServerEX(NameBot1);

    //выделяем командира, эмулируя щелчек мыши
    buf:=hstr('04') + IDKomandos + Bot2X + Bot2Y + Bot2Z + hstr('00');
    SendToServerEX(NameBot2);
    //бежим за командиром эмулируя повторный щелчек мыши по таргету
    buf:=hstr('04') + IDKomandos + Bot2X + Bot2Y + Bot2Z + hstr('00');
    SendToServerEX(NameBot2);
    end;
end;


procedure Init; //Вызывается при включении скрипта
begin
NameKom:='ник- командоса';
NameBot1:='ник ШЕ;
NameBot2:='ник ПП';

CurHPKom:=15000;
CurHPBot1:=15000;
CurHPBot2:=15000;

CurMPKom:=15000;
CurMPBot1:=15000;
CurMPBot2:=15000;

MaxHPKom:=10;
MaxHPBot1:=10;
MaxHPBot2:=10;

ChekIDKom:=false;
ChekIDBot1:=false;
ChekIDBot2:=false;

tick1:=1;
tick2:=1;
tick3:=1;

  timer1:=TTimer.Create(nil);
  timer1.OnTimer:=@OnTimer1; //
  timer1.enabled:=false; //
  timer1.interval:=4000;

  timer2:=TTimer.Create(nil);
  timer2.OnTimer:=@OnTimer2; //
  timer2.enabled:=false; //
  timer2.interval:=4000;

  timer3:=TTimer.Create(nil);
  timer3.OnTimer:=@OnTimer3; //
  timer3.enabled:=false; //
  timer3.interval:=1000;

end;

procedure Free; //Вызывается при выключении скрипта
begin
timer1.Free;
timer2.Free;
timer3.Free;
end;

//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
if pck='' then exit;

//******************************АВТОСОГЛАШЕНИЕ НА ВСТУПЛЕНИЕ В ПАТИ************************
//******************************ПРИ УСЛОВИИ ЧТО ПАТИ ДАЕТ- КОМАНДИР************************
if FromServer and (ConnectName=NameBot1) and (pck[1]=#$39) then
if ReadS(2)=NameKom then
 begin
 buf:=hstr('2A 01 00 00 00');
 sendtoserverex(NameBot1);
 end;

if FromServer and (ConnectName=NameBot2) and (pck[1]=#$39) then
if ReadS(2)=NameKom then
 begin
 buf:=hstr('2A 01 00 00 00');
 sendtoserverex(NameBot2);
 end;

//******************************БЛОК ДЛЯ ЗАПОМИНАНИЯ ИДЕШНИКОВ БОТОВ***********************
//******************************ОТЛАВЛИВАЕМ Я1 Я2 Я3***************************************
if FromServer and (ConnectName=NameKom) and (pck[1]=#$4A) then
  begin
  i:=10;
  tempS:=readS(i);

     if tempS=NameKom then
     begin
     tempS:=ReadS(i);
        if tempS='я1' then
        begin
        IDKomandos:=pck[2]+pck[3]+pck[4]+pck[5];
        end;
     end;
  end;

if FromServer and (ConnectName=NameBot1) and (pck[1]=#$4A) then
  begin
  i:=10;
  tempS:=readS(i);
     if tempS=NameBot1 then
     begin
     tempS:=ReadS(i);
        if tempS='я2' then
        begin
        IDBot1:=pck[2]+pck[3]+pck[4]+pck[5];
        end;
     end;
  end;

if FromServer and (ConnectName=NameBot2) and (pck[1]=#$4A) then
  begin
  i:=10;
  tempS:=readS(i);
     if tempS=NameBot2 then
     begin
     tempS:=ReadS(i);
        if tempS='я3' then
        begin
        IDBot2:=pck[2]+pck[3]+pck[4]+pck[5];
        end;
     end;
  end;
//*******************ЗАХВАТ КООРДИНАТ***************************************************
//если принят пакет от клиента с кординатами бота то
  if FromClient and (ConnectName=NameBot1) and (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 and (ConnectName=NameBot2) and (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;

//********************ОСТСЛЕЖИВАЕМ ТРУПАКИ********************************************************
//если кто то умер.. пакет DIE.. то хилить его ненадо...
//нефиг трупы хилить...
  if FromServer and (pck[1]=#$06) then
  if (pck[2]+pck[3]+pck[4]+pck[5] = IDKomandos) then CurHPKom:=15000;

  if FromServer and (pck[1]=#$06) then
  if (pck[2]+pck[3]+pck[4]+pck[5] = IDBot1) then CurHPBot1:=15000;

  if FromServer and (pck[1]=#$06) then
  if (pck[2]+pck[3]+pck[4]+pck[5] = IDBot2) then CurHPBot2:=15000;

//*************************УЗНАЕМ ЛИМИТЫ ХП и МП***********************************************
//из пакета UserInfo который приходит во время бафа и не только

//КОМАНДИР
  if FromServer and (pck[1]=#$04) and (ConnectName = NameKom) then
  begin
  i:=22;
  tempS:=readS(i);
  i:=i+48;
  MaxHPKom:=readD(i);
  CurHPKOM:=readD(i);
  MaxMPKom:=readD(i);
  CurMPKOM:=readD(i);
  end;

//1-й бот
  if FromServer and (pck[1]=#$04) and (ConnectName = NameBot1) then
  begin
  i:=22;
  tempS:=readS(i);
  i:=i+48;
  MaxHPBot1:=readD(i);
  CurHPBot1:=readD(i);
  MaxMPBot1:=readD(i);
  CurMPBot1:=readD(i);
  end;

//2-й бот
  if FromServer and (pck[1]=#$04) and (ConnectName = NameBot2) then
  begin
  i:=22;
  tempS:=readS(i);
  i:=i+48;
  MaxHPBot2:=readD(i);
  CurHPBot2:=readD(i);
  MaxMPBot2:=readD(i);
  CurMPBot2:=readD(i);
  end;

//*************************СЛЕДИМ ЗА ХП и МП******************************************
//следим за ХП КОМАНДИРА
  if FromServer and (pck[1]=#$0e) and (ConnectName = NameKom)  then
  if (pck[2] + pck[3] + pck[4] + pck[5] = IDKomandos) and (pck[6]=#$04) then
  begin
    CurHPKom:=(ord(pck[15]) * 256 + ord(pck[14]));

     if (CurHPKom < round(MaxHPKom*0.6)) then
     if (tick1 = 1) then
     begin
      buf:=hstr('04') + IDKomandos + Bot1X + Bot1Y + Bot1Z + hstr('00');
      SendToServerEX(NameBot1);
      buf:=hstr('2F F7 03 00 00 00 00 00 00 00');
      SendToServerEX(NameBot1);
      delay(500);
      buf:=hstr('04') + IDKomandos + Bot1X + Bot1Y + Bot1Z + hstr('00');
      SendToServerEX(NameBot1);
     end;

     if (CurHPKom < round(MaxHPKom*0.8)) then
     if (tick2 = 1) then
     begin
      buf:=hstr('04') + IDKomandos + Bot2X + Bot2Y + Bot2Z + hstr('00');
      SendToServerEX(NameBot2);
      buf:=hstr('2F F7 03 00 00 00 00 00 00 00');
      SendToServerEX(NameBot2);
      delay(500);
      buf:=hstr('04') + IDKomandos + Bot2X + Bot2Y + Bot2Z + hstr('00');
      SendToServerEX(NameBot2);
     end;

  end;

//следим за МП КОМАНДИРА
  if FromServer and (pck[1]=#$0e) and (ConnectName = NameKom)  then
  if (pck[2] + pck[3] + pck[4] + pck[5] = IDKomandos) and (pck[6]=#$02) then
  begin
    CurMPKom:=(ord(pck[15]) * 256 + ord(pck[14]));

    RND:=round(random*100);

     if (CurMPKom < round(MaxMPKom*0.8)) and (rnd<15)  then
     if (tick1 = 1) then
     begin
      buf:=hstr('04') + IDKomandos + Bot1X + Bot1Y + Bot1Z + hstr('00');
      SendToServerEX(NameBot1);
      buf:=hstr('2F F5 03 00 00 00 00 00 00 00');
      SendToServerEX(NameBot1);
      delay(500);
      buf:=hstr('04') + IDKomandos + Bot1X + Bot1Y + Bot1Z + hstr('00');
      SendToServerEX(NameBot1);
     end;
  end;


//следим за ХП у БОТ1
  if FromServer and (pck[1]=#$0e) and (ConnectName = NameBot1)  then
  if (pck[2] + pck[3] + pck[4] + pck[5] = IDbot1) and (pck[6]=#$04) then
  begin
    CurHPbot1:=(ord(pck[15]) * 256 + ord(pck[14]));

     if (CurHPbot1 < round(MaxHPBot1*0.8)) then
     if (tick1 = 1) then
     begin
      buf:=hstr('04') + IDbot1 + Bot1X + Bot1Y + Bot1Z + hstr('00');
      SendToServerEX(NameBot1);
      buf:=hstr('2F F7 03 00 00 00 00 00 00 00');
      SendToServerEX(NameBot1);
      delay(500);
      buf:=hstr('04') + IDKomandos + Bot1X + Bot1Y + Bot1Z + hstr('00');
      SendToServerEX(NameBot1);
      buf:=hstr('04') + IDKomandos + Bot1X + Bot1Y + Bot1Z + hstr('00');
      SendToServerEX(NameBot1);
     end;

     if (CurHPbot1 < round(MaxHPBot1*0.6)) then
     if (tick1 = 1) then
     begin
      buf:=hstr('04') + IDbot1 + Bot2X + Bot2Y + Bot2Z + hstr('00');
      SendToServerEX(NameBot2);
      buf:=hstr('2F F7 03 00 00 00 00 00 00 00');
      SendToServerEX(NameBot2);
      delay(500);
      buf:=hstr('04') + IDKomandos + Bot2X + Bot2Y + Bot2Z + hstr('00');
      SendToServerEX(NameBot2);
      buf:=hstr('04') + IDKomandos + Bot2X + Bot2Y + Bot2Z + hstr('00');
      SendToServerEX(NameBot2);
     end;

  end;

//следим за ХП у БОТ2
  if FromServer and (pck[1]=#$0e) and (ConnectName = NameBot2)  then
  if (pck[2] + pck[3] + pck[4] + pck[5] = IDbot2) and (pck[6]=#$04) then
  begin
    CurHPbot2:=(ord(pck[15]) * 256 + ord(pck[14]));

     if (CurHPbot2 < round(MaxHPBot2*0.8)) then
     if (tick2 = 1) then
     begin
      buf:=hstr('04') + IDbot2 + Bot2X + Bot2Y + Bot2Z + hstr('00');
      SendToServerEX(NameBot2);
      buf:=hstr('2F F7 03 00 00 00 00 00 00 00');
      SendToServerEX(NameBot2);
      delay(500);
      buf:=hstr('04') + IDKomandos + Bot2X + Bot2Y + Bot2Z + hstr('00');
      SendToServerEX(NameBot2);
      buf:=hstr('04') + IDKomandos + Bot2X + Bot2Y + Bot2Z + hstr('00');
      SendToServerEX(NameBot2);
     end;

     if (CurHPbot2 < round(MaxHPBot2*0.6)) then
     if (tick2 = 1) then
     begin
      buf:=hstr('04') + IDbot2 + Bot1X + Bot1Y + Bot1Z + hstr('00');
      SendToServerEX(NameBot1);
      buf:=hstr('2F F7 03 00 00 00 00 00 00 00');
      SendToServerEX(NameBot1);
      delay(500);
      buf:=hstr('04') + IDKomandos + Bot1X + Bot1Y + Bot1Z + hstr('00');
      SendToServerEX(NameBot1);
      buf:=hstr('04') + IDKomandos + Bot1X + Bot1Y + Bot1Z + hstr('00');
      SendToServerEX(NameBot1);
     end;

  end;

//**************************УПРАВЛЕНИЕ************************************************
//ПОКЛОН- БЕЖАТЬ за КОМАНДИРОМ
  if FromClient and (ConnectName=NameKom) and (pck=hstr('1B 07 00 00 00')) then
    begin
     pck:='';
     BotBeg;
     exit;
    end;

//ПРИВЕТСТВИЕ- БАФ ПЕРВЫМ БОТОМ (первая кнопка)
  if FromClient and (ConnectName=NameKom) and (pck=hstr('1B 02 00 00 00')) then
    begin
     pck:='';
     timer1.enabled:=true;
     exit;
    end;

//ГРИИТЕРИНГ - ПОБЕДА - баф ПП (вторая кнопка)
  if FromClient and (ConnectName=NameKom) and (pck=hstr('1B 03 00 00 00')) then
    begin
     pck:='';
     timer2.enabled:=true;
     exit;
    end;

//ADVANCE- В АТАКУ - пати быстрое создание (3-я кнопка)
  if FromClient and (ConnectName=NameKom) and (pck=hstr('1B 04 00 00 00')) then
    begin
     pck:='';
     //сразу рвем пати у всех чаров и командир раздает пати поновому
     //чары автоматически принимают пати
     //используется таймер т.к. одновременно 2-м чарам пати кинуть нельзя
      timer3.enabled:=true;
     exit;
    end;



end.
тут применяется статус апдейт для контроля ХП и МП в% от шкалы
__________________
Цитата:
Сообщение от pybukon
прежде чета попросить я немнога раскажу чтоб вы понили как мне плоха
Цитата:
Сообщение от Byrger
А как сделать мой скрипт бесконечным?
Цитата:
Сообщение от XKOR
.. каждый день ионизированной ногой протирает больную)
Цитата:
Сообщение от PsyR
Вылоджите пожалуйста скрипт на рыбалку желательно что бы сам в ВХ клал адаптированый под шоки и так же скрипт на ТТ рец, тоже с диалогами
VORON вне форума   Ответить с цитированием
Ответ

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



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

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


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

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

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