L2PacketHackФорум программы L2PacketHack, всё что с ней связано находится тут.
Правила раздела!
Категорически запрещено:
* Просить пакеты/скрипты на шмот/адену/другие вещи;
* Просить (помочь) взломать/сломать сервак/аккаунт или раздеть/наказать кого-то на любом серваке;
* Просить научить работать с программой, если не понимаете элементарных вещей в отношениях клиент-сервер (так как, если вы их понимаете, то вопросов по основным возможностям программы быть недолжно);
* Все посты не удовлетворяющие этим запретам, а так же не относящиеся к теме будут удаляться при первой возможности.
* Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы.
* Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
* Данные запреты неподлежат обсуждению.
Прошу, мне не жалко, это старая версия моего ПВП скрипта.
Правда комментариев почти нет, но переменные сами за себя говорят.
И да кстати, С6 не существует, хроники заканчиваются либо на 4 либо 5.
delphi Код:
Const
Name='ник';
Health= 80;
ResCP= 35;
GCP= 5592;//Greater CP Potion
GHP= 1539;//Greater Healing Potion
SHP= 1061;
Var
NSHP, NGCP, NGHP, CharID, OidSHP, OidGHP, OidGCP,
MaxHP, CurHP, MaxCP, CurCP, FirTargID, SecTargID, i, HP: Integer;
TimerHP, TimerCP: TTimer;
PressCTRL, Res, Switch: boolean;
//******************************************************************************// Вызывается при включении скрипта//******************************************************************************procedure Init;
begin
PressCTRL:= False;
Res:= False;
Switch:= False;
FirTargID:= 0;
SecTargID:= 0;
NGCP:= 0;
NGHP:= 0;
NSHP:= 0;
MaxHP:= 1;
MaxCP:= 1;
HP:= Round((MaxHP/100)*Health);
TimerHP:=TTimer.Create(nil);
TimerHP.OnTimer:=@OnTimerHP;
TimerHP.enabled:= False;
TimerHP.interval:=15000;
TimerCP:=TTimer.Create(nil);
TimerCP.OnTimer:=@OnTimerCP;
TimerCP.Enabled:= False;
TimerCP.Interval:= 1000;
buf:=#$0F;
SendToServerEx(Name);
Say ('Cпам ЦП и ХП выключен');
Say ('ПВП режим не активен');
end;
//******************************************************************************//******************************************************************************// Вызывается при выключении скрипта//******************************************************************************procedure Free;
begin
TimerHP.Free;
TimerCP.Free;
end;
//******************************************************************************//******************************************************************************// Посылаем сообщение, которое видно только в окне бота//******************************************************************************Procedure Say(msg:string);
begin
buf:=hstr('4A 00 00 00 00');
WriteD(2);
WriteS(Name);
WriteS(msg);
SendToClientEx(Name);
end;
//******************************************************************************//******************************************************************************// Использование Вещей//******************************************************************************Procedure UseItem(OID: Integer);
begin
buf:= #$14;
WriteD(OID);
WriteD(00);
SendToServerEx(Name)end;
//******************************************************************************//******************************************************************************// Востановление ХП//******************************************************************************Procedure OnTimerHP(Sender: TObject);
beginif Switch thenbegin
UseItem (OidGHP);
Dec(NGHP);
endelsebegin
UseItem (OidSHP);
Dec(NSHP);
end;
end;
//******************************************************************************//******************************************************************************// Востановление ЦП//******************************************************************************Procedure OnTimerCP(Sender: TObject);
begin
UseItem (OidGCP);
Dec(NGCP);
end;
//******************************************************************************//******************************************************************************// Вызывается при приходе каждого пакета, если скрипт включен//******************************************************************************Begin//****************************************************************************//****************************************************************************//Не обрабатываем пустые пакетыIf pck=''thenexit;
//****************************************************************************//****************************************************************************//****************************************************************************//****************************************************************************//Обрабатываем пакеты от сервераIf FromServer and(ConnectName=Name)thenbegin//**************************************************************************//Если от сервака принят пакет UserInfo.If(pck[1]=#$04)thenbegin
CharID:= ReadD(18);
i:= 2*(Length(Name))+ 72;
MaxHP:= ReadD(i);
CurHP:= ReadD(i);
MaxCP:= ReadD(length(pck)-49);
CurCP:= ReadD(length(pck)-45);
end;
//**************************************************************************//**************************************************************************//Если от сервака принят пакет StatusUpdate.if(pck[1]=#$0E)and(pck[6]=#$04)thenbegin
CurHP:=ReadD(14);
MaxHP:=ReadD(22);
CurCP:=ReadD(30);
MaxCP:=ReadD(38);
end;
//**************************************************************************//**************************************************************************//Записываем ObjectID всех нужных предметовif pck[1]=#$1B thenbeginfor i:= 0toround(length(pck)/36)dobeginif(ReadH(i*36+4+8) = GCP)thenbegin
OidGCP:= ReadD(i*36+8);
NGCP:= ReadH(i*36+4+4+8);
end;
if(ReadH(i*36+4+8) = GHP)thenbegin
OidGHP:= ReadD(i*36+8);
NGHP:= ReadH(i*36+4+4+8);
end;
if(ReadH(i*36+4+8) = SHP)thenbegin
OidSHP:= ReadD(i*36+8);
NSHP:= ReadH(i*36+4+4+8);
end;
end;
end;
//**************************************************************************end;
//****************************************************************************//****************************************************************************//****************************************************************************//****************************************************************************//Обрабатываем пакеты от клиентаIf FromClient and(ConnectName=Name)thenbegin//**************************************************************************//Уменьшеньки счетчика банок при использовании в игреif(pck[1]= #$14)thenbegincase ReadD(2)of
OidGCP: Dec(NGCP);
OidGHP: Dec(NGHP);
OidSHP: Dec(NSHP);
end;
end;
//**************************************************************************//**************************************************************************//Авто CTRLif PressCTRL thenbeginIf(pck[1]=#$2F)then pck[6]:=#$01;
If(pck[1]= #$04)or(pck[1]= #$0A)thenbegin
FirTargID:= SecTargID;
SecTargID:= ReadD(2);
if(FirTargID = SecTargID)and(FirTargID<> 0)then pck[1]:=#$0A;
end;
end;
//**************************************************************************//**************************************************************************//Управлениеif(pck[1]=#$38)and(pck[10]=#$03)thenbegincase ReadS(2)of'234': if Switch thenbegin
Say ('Врубили маленькие бутылки');
Switch:= False;
endelsebegin
Say ('Врубили большие бутылки');
UseItem(OidGHP);
Switch:= True;
end;
'123': if Res thenbegin
Say ('Cпам ЦП и ХП выключен');
TimerHP.Enabled:= False;
TimerCP.Enabled:= False;
Res:= False;
endelsebegin
Say ('Cпам ЦП и ХП включен');
Res:= True;
end;
end;
pck:='';
exit;
end;
//**************************************************************************//**************************************************************************//Активация ПВП режимаif(pck[1]=#$57)thenbeginif PressCTRL thenbegin
PressCTRL:= False;
Say ('ПВП режим не активен');
endelsebegin
PressCTRL:= True;
Say ('ПВП режим активен');
end;
pck:='';
exit;
end;
//**************************************************************************//**************************************************************************//Уменьшеньки счетчика банок при использовании в игреif(pck[1]= #$14)thencase ReadD(2)of
OidGCP: Dec(NGCP);
OidGHP: Dec(NGHP);
OidSHP: Dec(NSHP);
end;
//**************************************************************************end;
//****************************************************************************//****************************************************************************//****************************************************************************//****************************************************************************//Условия начала востановления, запуск вотсановления//****************************************************************************If Res thenbegin//**************************************************************************//Активация востановления ЦПif PressCTRL thenbeginIf(((CurHP+CurCP)/(MaxHP+MaxCP)*100)<= ResCP)thenif(CurCP>0)and(NGCP>0)thenbeginifnot TimerCP.Enabledthenbegin
TimerCP.Enabled:= True;
UseItem (OidGCP);
Dec(NGCP);
end;
end;
If(CurCP>=(MaxCP-200))thenif TimerCP.Enabledthen TimerCP.Enabled:= False;
end;
//**************************************************************************//**************************************************************************//Активация востановления ХПif(CurHP <= HP)and(CurHP>0)thenbeginif(not TimerHP.Enabled)thenif Switch thenbeginif(NGHP>0)thenbegin
TimerHP.Enabled:= True;
UseItem (OidGHP);
Dec(NGHP);
end;
endelseif(NSHP>0)thenbegin
TimerHP.Enabled:= True;
UseItem (OidSHP);
Dec(NSHP);
end;
endelseIf TimerHP.Enabledthen TimerHP.Enabled:= False;
//**************************************************************************end;
//****************************************************************************//****************************************************************************//****************************************************************************End.
//******************************************************************************
Добавлено через 7 минут
А да чуть не забыл.
Управление:
123 в пати чат включение/выключение слежения за ЦП иХП
234 опять же в пати чат переключение между обычными НР и GHP банками (всё можно забить в макрос для удобства)
Клавиша B активация ПВП режима (не надо CTRL нажимать)
Последний раз редактировалось APXAHGEJI, 13.05.2008 в 19:06.
Причина: Добавлено сообщение
За это сообщение APXAHGEJI нажился 2 спасибками от:
Прошу, мне не жалко, это старая версия моего ПВП скрипта.
Правда комментариев почти нет, но переменные сами за себя говорят.
И да кстати, С6 не существует, хроники заканчиваются либо на 4 либо 5.
delphi Код:
Const
Name='ник';
Health= 80;
ResCP= 35;
GCP= 5592;//Greater CP Potion
GHP= 1539;//Greater Healing Potion
SHP= 1061;
Var
NSHP, NGCP, NGHP, CharID, OidSHP, OidGHP, OidGCP,
MaxHP, CurHP, MaxCP, CurCP, FirTargID, SecTargID, i, HP: Integer;
TimerHP, TimerCP: TTimer;
PressCTRL, Res, Switch: boolean;
//******************************************************************************// Вызывается при включении скрипта//******************************************************************************procedure Init;
begin
PressCTRL:= False;
Res:= False;
Switch:= False;
FirTargID:= 0;
SecTargID:= 0;
NGCP:= 0;
NGHP:= 0;
NSHP:= 0;
MaxHP:= 1;
MaxCP:= 1;
HP:= Round((MaxHP/100)*Health);
TimerHP:=TTimer.Create(nil);
TimerHP.OnTimer:=@OnTimerHP;
TimerHP.enabled:= False;
TimerHP.interval:=15000;
TimerCP:=TTimer.Create(nil);
TimerCP.OnTimer:=@OnTimerCP;
TimerCP.Enabled:= False;
TimerCP.Interval:= 1000;
buf:=#$0F;
SendToServerEx(Name);
Say ('Cпам ЦП и ХП выключен');
Say ('ПВП режим не активен');
end;
//******************************************************************************//******************************************************************************// Вызывается при выключении скрипта//******************************************************************************procedure Free;
begin
TimerHP.Free;
TimerCP.Free;
end;
//******************************************************************************//******************************************************************************// Посылаем сообщение, которое видно только в окне бота//******************************************************************************Procedure Say(msg:string);
begin
buf:=hstr('4A 00 00 00 00');
WriteD(2);
WriteS(Name);
WriteS(msg);
SendToClientEx(Name);
end;
//******************************************************************************//******************************************************************************// Использование Вещей//******************************************************************************Procedure UseItem(OID: Integer);
begin
buf:= #$14;
WriteD(OID);
WriteD(00);
SendToServerEx(Name)end;
//******************************************************************************//******************************************************************************// Востановление ХП//******************************************************************************Procedure OnTimerHP(Sender: TObject);
beginif Switch thenbegin
UseItem (OidGHP);
Dec(NGHP);
endelsebegin
UseItem (OidSHP);
Dec(NSHP);
end;
end;
//******************************************************************************//******************************************************************************// Востановление ЦП//******************************************************************************Procedure OnTimerCP(Sender: TObject);
begin
UseItem (OidGCP);
Dec(NGCP);
end;
//******************************************************************************//******************************************************************************// Вызывается при приходе каждого пакета, если скрипт включен//******************************************************************************Begin//****************************************************************************//****************************************************************************//Не обрабатываем пустые пакетыIf pck=''thenexit;
//****************************************************************************//****************************************************************************//****************************************************************************//****************************************************************************//Обрабатываем пакеты от сервераIf FromServer and(ConnectName=Name)thenbegin//**************************************************************************//Если от сервака принят пакет UserInfo.If(pck[1]=#$04)thenbegin
CharID:= ReadD(18);
i:= 2*(Length(Name))+ 72;
MaxHP:= ReadD(i);
CurHP:= ReadD(i);
MaxCP:= ReadD(length(pck)-49);
CurCP:= ReadD(length(pck)-45);
end;
//**************************************************************************//**************************************************************************//Если от сервака принят пакет StatusUpdate.if(pck[1]=#$0E)and(pck[6]=#$04)thenbegin
CurHP:=ReadD(14);
MaxHP:=ReadD(22);
CurCP:=ReadD(30);
MaxCP:=ReadD(38);
end;
//**************************************************************************//**************************************************************************//Записываем ObjectID всех нужных предметовif pck[1]=#$1B thenbeginfor i:= 0toround(length(pck)/36)dobeginif(ReadH(i*36+4+8) = GCP)thenbegin
OidGCP:= ReadD(i*36+8);
NGCP:= ReadH(i*36+4+4+8);
end;
if(ReadH(i*36+4+8) = GHP)thenbegin
OidGHP:= ReadD(i*36+8);
NGHP:= ReadH(i*36+4+4+8);
end;
if(ReadH(i*36+4+8) = SHP)thenbegin
OidSHP:= ReadD(i*36+8);
NSHP:= ReadH(i*36+4+4+8);
end;
end;
end;
//**************************************************************************end;
//****************************************************************************//****************************************************************************//****************************************************************************//****************************************************************************//Обрабатываем пакеты от клиентаIf FromClient and(ConnectName=Name)thenbegin//**************************************************************************//Уменьшеньки счетчика банок при использовании в игреif(pck[1]= #$14)thenbegincase ReadD(2)of
OidGCP: Dec(NGCP);
OidGHP: Dec(NGHP);
OidSHP: Dec(NSHP);
end;
end;
//**************************************************************************//**************************************************************************//Авто CTRLif PressCTRL thenbeginIf(pck[1]=#$2F)then pck[6]:=#$01;
If(pck[1]= #$04)or(pck[1]= #$0A)thenbegin
FirTargID:= SecTargID;
SecTargID:= ReadD(2);
if(FirTargID = SecTargID)and(FirTargID<> 0)then pck[1]:=#$0A;
end;
end;
//**************************************************************************//**************************************************************************//Управлениеif(pck[1]=#$38)and(pck[10]=#$03)thenbegincase ReadS(2)of'234': if Switch thenbegin
Say ('Врубили маленькие бутылки');
Switch:= False;
endelsebegin
Say ('Врубили большие бутылки');
UseItem(OidGHP);
Switch:= True;
end;
'123': if Res thenbegin
Say ('Cпам ЦП и ХП выключен');
TimerHP.Enabled:= False;
TimerCP.Enabled:= False;
Res:= False;
endelsebegin
Say ('Cпам ЦП и ХП включен');
Res:= True;
end;
end;
pck:='';
exit;
end;
//**************************************************************************//**************************************************************************//Активация ПВП режимаif(pck[1]=#$57)thenbeginif PressCTRL thenbegin
PressCTRL:= False;
Say ('ПВП режим не активен');
endelsebegin
PressCTRL:= True;
Say ('ПВП режим активен');
end;
pck:='';
exit;
end;
//**************************************************************************//**************************************************************************//Уменьшеньки счетчика банок при использовании в игреif(pck[1]= #$14)thencase ReadD(2)of
OidGCP: Dec(NGCP);
OidGHP: Dec(NGHP);
OidSHP: Dec(NSHP);
end;
//**************************************************************************end;
//****************************************************************************//****************************************************************************//****************************************************************************//****************************************************************************//Условия начала востановления, запуск вотсановления//****************************************************************************If Res thenbegin//**************************************************************************//Активация востановления ЦПif PressCTRL thenbeginIf(((CurHP+CurCP)/(MaxHP+MaxCP)*100)<= ResCP)thenif(CurCP>0)and(NGCP>0)thenbeginifnot TimerCP.Enabledthenbegin
TimerCP.Enabled:= True;
UseItem (OidGCP);
Dec(NGCP);
end;
end;
If(CurCP>=(MaxCP-200))thenif TimerCP.Enabledthen TimerCP.Enabled:= False;
end;
//**************************************************************************//**************************************************************************//Активация востановления ХПif(CurHP <= HP)and(CurHP>0)thenbeginif(not TimerHP.Enabled)thenif Switch thenbeginif(NGHP>0)thenbegin
TimerHP.Enabled:= True;
UseItem (OidGHP);
Dec(NGHP);
end;
endelseif(NSHP>0)thenbegin
TimerHP.Enabled:= True;
UseItem (OidSHP);
Dec(NSHP);
end;
endelseIf TimerHP.Enabledthen TimerHP.Enabled:= False;
//**************************************************************************end;
//****************************************************************************//****************************************************************************//****************************************************************************End.
//******************************************************************************
Добавлено через 7 минут
А да чуть не забыл.
Управление:
123 в пати чат включение/выключение слежения за ЦП иХП
234 опять же в пати чат переключение между обычными НР и GHP банками (всё можно забить в макрос для удобства)
Клавиша B активация ПВП режима (не надо CTRL нажимать)
ну как и ожидалось не пашет, оно под с6 по твоему в интерлюде! коль с6 не существует
Последний раз редактировалось DashKAaa, 13.05.2008 в 20:12.
А я говорю пашет)))
Я тестил его уже не раз. Спокойно выжирает ЦП банки.
Может не были выполнены условия начала использования ЦП.
За это отвечает константа ResCP. Мона поставить больше.
А можно изменить условия, это в самом конце под заголовком "Активация востановления ЦП".
Да и к тому же мониторинг ЦП и ХП по умолчанию выключены, для активации нужно в пати чат отправить 123
Добавлено через 1 минуту
Упс забыл, еще обязаловкой надо ПВП режим активировать 234 в пати чат))))
Последний раз редактировалось APXAHGEJI, 13.05.2008 в 20:50.
Причина: Добавлено сообщение
А я говорю пашет)))
Я тестил его уже не раз. Спокойно выжирает ЦП банки.
Может не были выполнены условия начала использования ЦП.
За это отвечает константа ResCP. Мона поставить больше.
А можно изменить условия, это в самом конце под заголовком "Активация востановления ЦП".
Да и к тому же мониторинг ЦП и ХП по умолчанию выключены, для активации нужно в пати чат отправить 123
Добавлено через 1 минуту
Упс забыл, еще обязаловкой надо ПВП режим активировать 234 в пати чат))))
Никуя се просветил насчет 234, и 234 и 123 все пробовал ХП пьет цп не пьет, на каком сервере у тебя работаеТ? пади с4 какая нить сборка
А ты прям таки на офе гамаешь, может это у тя С4 сборка.(тьфу на офе же камаэлька давно)))
Кароче можешь скока угодно залупаться и базарить о том что не рабоает, но если после определения в скрипте MaxCP и CurCP как из пакета UserInfo так и StatusUpdate поставишь
Say(IntToStr(MaxCP));
Say(IntToStr(CurCP));
И эта хрень будет выводить значеня твоего ЦП то значит скрипт не активирован или не достигнуты условия начала использования ЦП.
Пакет UserInfo приходит при нажатии Tab вместе с инвентарем так что эти значени должы вывестись сразу, а со StatusUpdate надо еще как то убавить значение ЦП.
И очень интересен такой вопрос, я не думаю что ты там что то переделывал(а) в мое скрипте связанное с ХП, а там у меня баг,
и хп то вот как раз использоваться никак не должно)) удивительно))
Добавлено через 20 минут
Звиняюсь ПВП режим активируется на клавишу B аглицкую,
и кстати если работает скрипт при нажатии всех управляющих
клавиш выводится особое сообщение.
Добавлено через 1 минуту
Тока что проверил еще раз. ЦП работает.
Добавлено через 1 минуту
В моих условиях использования банок ЦП начинается если нету всего ЦП, и больше половины ХП
Последний раз редактировалось APXAHGEJI, 14.05.2008 в 11:04.
Причина: Добавлено сообщение
А ты прям таки на офе гамаешь, может это у тя С4 сборка.(тьфу на офе же камаэлька давно)))
Кароче можешь скока угодно залупаться и базарить о том что не рабоает, но если после определения в скрипте MaxCP и CurCP как из пакета UserInfo так и StatusUpdate поставишь
Say(IntToStr(MaxCP));
Say(IntToStr(CurCP));
И эта хрень будет выводить значеня твоего ЦП то значит скрипт не активирован или не достигнуты условия начала использования ЦП.
Пакет UserInfo приходит при нажатии Tab вместе с инвентарем так что эти значени должы вывестись сразу, а со StatusUpdate надо еще как то убавить значение ЦП.
И очень интересен такой вопрос, я не думаю что ты там что то переделывал(а) в мое скрипте связанное с ХП, а там у меня баг,
и хп то вот как раз использоваться никак не должно)) удивительно))
Добавлено через 20 минут
Звиняюсь ПВП режим активируется на клавишу B аглицкую,
и кстати если работает скрипт при нажатии всех управляющих
клавиш выводится особое сообщение.
Добавлено через 1 минуту
Тока что проверил еще раз. ЦП работает.
Добавлено через 1 минуту
В моих условиях использования банок ЦП начинается если нету всего ЦП, и больше половины ХП
и правду удивительно с ХП, а оно работает фантастика?? оОо а цп не работает,
да и на оффе уже давно не камаэль... умник)
Ды мне пох че на оффе.
С хп сам(а) написал(а) что работает, а не должно.
Такое ощущение ты вообщемто уже и не хочешь что бы заработало.
Повторяю самое главное это чтобы поступала инфа о о состоянии ЦП, все остальное мона переделать без проблем, а чтобы узнать поступает ли она втавь в скрипте:
Say(IntToStr(MaxCP));
Say(IntToStr(CurCP)); хотя нафиг тя, лучше сам напишу.
Код:
Const
Name='Ник';
Health= 101;
ResCP= 101;
GCP= 5592;//Greater CP Potion
GHP= 1539;//Greater Healing Potion
SHP= 1061;
Var
NSHP, NGCP, NGHP, CharID, OidSHP, OidGHP, OidGCP,
MaxHP, CurHP, MaxCP, CurCP, FirTargID, SecTargID, i, HP: Integer;
TimerHP, TimerCP: TTimer;
PressCTRL, Res, Switch: boolean;
//******************************************************************************
// Вызывается при включении скрипта
//******************************************************************************
procedure Init;
begin
PressCTRL:= False;
Res:= False;
Switch:= False;
FirTargID:= 0;
SecTargID:= 0;
NGCP:= 0;
NGHP:= 0;
NSHP:= 0;
MaxHP:= 1;
MaxCP:= 1;
TimerHP:=TTimer.Create(nil);
TimerHP.OnTimer:=@OnTimerHP;
TimerHP.enabled:= False;
TimerHP.interval:=15000;
TimerCP:=TTimer.Create(nil);
TimerCP.OnTimer:=@OnTimerCP;
TimerCP.Enabled:= False;
TimerCP.Interval:= 1000;
buf:=#$0F;
SendToServerEx(Name);
Say ('Cпам ЦП и ХП выключен');
Say ('ПВП режим не активен');
end;
//******************************************************************************
//******************************************************************************
// Вызывается при выключении скрипта
//******************************************************************************
procedure Free;
begin
TimerHP.Free;
TimerCP.Free;
end;
//******************************************************************************
//******************************************************************************
// Посылаем сообщение, которое видно только в окне бота
//******************************************************************************
Procedure Say(msg:string);
begin
buf:=hstr('4A 00 00 00 00');
WriteD(2);
WriteS(Name);
WriteS(msg);
SendToClientEx(Name);
end;
//******************************************************************************
//******************************************************************************
// Использование Вещей
//******************************************************************************
Procedure UseItem(OID: Integer);
begin
buf:= #$14;
WriteD(OID);
WriteD(00);
SendToServerEx(Name)
end;
//******************************************************************************
//******************************************************************************
// Востановление ХП
//******************************************************************************
Procedure OnTimerHP(Sender: TObject);
begin
if Switch then begin
UseItem (OidGHP);
Dec (NGHP);
end else begin
UseItem (OidSHP);
Dec (NSHP);
end;
end;
//******************************************************************************
//******************************************************************************
// Востановление ЦП
//******************************************************************************
Procedure OnTimerCP(Sender: TObject);
begin
UseItem (OidGCP);
Dec (NGCP);
end;
//******************************************************************************
//******************************************************************************
// Вызывается при приходе каждого пакета, если скрипт включен
//******************************************************************************
Begin
//****************************************************************************
//****************************************************************************
//Не обрабатываем пустые пакеты
If pck='' then exit;
//****************************************************************************
//****************************************************************************
//****************************************************************************
//****************************************************************************
//Обрабатываем пакеты от сервера
If FromServer and (ConnectName=Name) then begin
//**************************************************************************
//Если от сервака принят пакет UserInfo.
If (pck[1]=#$04) then begin
CharID:= ReadD(18);
i:= 2*(Length(Name))+ 72;
MaxHP:= ReadD(i);
CurHP:= ReadD(i);
MaxCP:= ReadD(length(pck)-49);
CurCP:= ReadD(length(pck)-45);
Say(inttostr(MaxCP));
Say(inttostr(CurCP));
HP:= Round ((MaxHP/100)*Health);
end;
//**************************************************************************
//**************************************************************************
//Если от сервака принят пакет StatusUpdate.
if (pck[1]=#$0E) and (pck[6]=#$04)then begin
CurHP:=ReadD(14);
MaxHP:=ReadD(22);
CurCP:=ReadD(30);
MaxCP:=ReadD(38);
Say(inttostr(MaxCP));
Say(inttostr(CurCP));
end;
//**************************************************************************
//**************************************************************************
//Записываем ObjectID всех нужных предметов
if pck[1]=#$1B then begin
for i:= 0 to round(length(pck)/36) do begin
if (ReadH(i*36+4+8) = GCP) then begin
OidGCP:= ReadD(i*36+8);
NGCP:= ReadH(i*36+4+4+8);
end;
if (ReadH(i*36+4+8) = GHP) then begin
OidGHP:= ReadD(i*36+8);
NGHP:= ReadH(i*36+4+4+8);
end;
if (ReadH(i*36+4+8) = SHP) then begin
OidSHP:= ReadD(i*36+8);
NSHP:= ReadH(i*36+4+4+8);
end;
end;
end;
//**************************************************************************
end;
//****************************************************************************
//****************************************************************************
//****************************************************************************
//****************************************************************************
//Обрабатываем пакеты от клиента
If FromClient and (ConnectName=Name) then begin
//**************************************************************************
//Уменьшеньки счетчика банок при использовании в игре
if (pck[1]= #$14) then begin
case ReadD(2) of
OidGCP: Dec(NGCP);
OidGHP: Dec(NGHP);
OidSHP: Dec(NSHP);
end;
end;
//**************************************************************************
//**************************************************************************
//Авто CTRL
if PressCTRL then begin
If(pck[1]=#$2F) then pck[6]:=#$01;
If (pck[1]= #$04) or (pck[1]= #$0A) then begin
FirTargID:= SecTargID;
SecTargID:= ReadD(2);
if (FirTargID = SecTargID) and (FirTargID<> 0) then pck[1]:=#$0A;
end;
end;
//**************************************************************************
//**************************************************************************
//Управление
if (pck[1]=#$38) and (pck[10]=#$03) then begin
case ReadS(2) of
'234': if Switch then begin
Say ('Врубили маленькие бутылки');
Switch:= False;
end else begin
Say ('Врубили большие бутылки');
UseItem(OidGHP);
Switch:= True;
end;
'123': if Res then begin
Say ('Cпам ЦП и ХП выключен');
TimerHP.Enabled:= False;
TimerCP.Enabled:= False;
Res:= False;
end else begin
Say ('Cпам ЦП и ХП включен');
Res:= True;
end;
end;
pck:='';
exit;
end;
//**************************************************************************
//**************************************************************************
//Активация ПВП режима
if (pck[1]=#$57) then begin
if PressCTRL then begin
PressCTRL:= False;
Say ('ПВП режим не активен');
end else begin
PressCTRL:= True;
Say ('ПВП режим активен');
end;
pck:='';
exit;
end;
//**************************************************************************
//**************************************************************************
//Уменьшеньки счетчика банок при использовании в игре
if (pck[1]= #$14) then
case ReadD(2) of
OidGCP: Dec(NGCP);
OidGHP: Dec(NGHP);
OidSHP: Dec(NSHP);
end;
//**************************************************************************
end;
//****************************************************************************
//****************************************************************************
//****************************************************************************
//****************************************************************************
//Условия начала востановления, запуск вотсановления
//****************************************************************************
//If Res then begin
//**************************************************************************
//Активация востановления ЦП
//if PressCTRL then begin
If (((CurHP+CurCP)/(MaxHP+MaxCP)*100)<= ResCP) then
if (CurCP>0) and (NGCP>0) then begin
if not TimerCP.Enabled then begin
TimerCP.Enabled:= True;
UseItem (OidGCP);
Dec (NGCP);
end;
end;
If (CurCP>=(MaxCP-200)) then
if TimerCP.Enabled then TimerCP.Enabled:= False;
//end;
//**************************************************************************
//**************************************************************************
//Активация востановления ХП
if (not TimerHP.Enabled) then begin
if (CurHP <= HP) and (CurHP>0) then
if Switch then begin
if (NGHP>0) then begin
TimerHP.Enabled:= True;
UseItem (OidGHP);
Dec (NGHP);
end;
end else
if (NSHP>0) then begin
TimerHP.Enabled:= True;
UseItem (OidSHP);
Dec (NSHP);
end;
end else if (CurHP=MaxHP) then TimerHP.Enabled:= False;
//**************************************************************************
//end;
//****************************************************************************
//****************************************************************************
//****************************************************************************
End.
//******************************************************************************