delphi Код:
const
Name='НИК';
var
CurHP,MaxHP,CurCP,MaxCP,MyCorX,MyCorY,MyCorZ,MaxMP,CurMP: integer;
CPuse,HPuse,MPuse: string;
i, CubicsSize, CharObjectId, tmpCharObjectId: integer;
tmpMyName, tmpMyTitle: string;
TimerMP,TimerCP,TimerHP: TTimer;
procedure Init; //Вызывается при включении скрипта
begin
TimerCP:=TTimer.Create(nil);
TimerCP.OnTimer:=@OnTimerCP;
TimerCP.enabled:=false;
TimerCP.interval:=1000; //интервал 1сек, т.к. чаще пить CP всеравно не будет, дабы не засорять трафик
TimerMP:=TTimer.Create(nil);
TimerMP.OnTimer:=@OnTimerMP;
TimerMP.enabled:=false;
TimerMP.interval:=1000; //интервал 1сек, т.к. чаще пить MP всеравно не будет, дабы не засорять трафик
TimerHP:=TTimer.Create(nil);
TimerHP.OnTimer:=@OnTimerHP;
TimerHP.enabled:=false;
TimerHP.interval:=15000; //интервал 15сек, т.к. действие одной бутылки = 15сек
end;
procedure OnTimerCP(Sender: TObject);
begin
buf:=CPuse;
SendToServerEx(Name);
end;
procedure OnTimerMP(Sender: TObject);
begin
buf:=MPuse;
SendToServerEx(Name);
end;
procedure OnTimerHP(Sender: TObject);
begin
buf:=HPuse;
SendToServerEx(Name);
end;
procedure Free; //Вызывается при выключении скрипта
begin
TimerCP.free;
TimerMP.free;
TimerHP.free;
HPuse:='';
CPuse:='';
end;
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
//пьем сначала CP, потом HP банку что б запомнить их ID(я решил взять эти пакеты целиком, дабы не усложнять)
if FromClient and (pck[1]=#$19) and (CPuse='') then CPuse:=pck;
if FromClient and (pck[1]=#$19) and (CPuse<>pck) and (HPuse='') then HPuse:=pck;
if FromClient and (pck[1]=#$19) and (CPuse<>pck) and (HPuse<>pck) and (MPuse='') then MPuse:=pck;
if FromServer and (pck[1]=#$32) then
begin
MyCorX:=ReadD(2);
MyCorY:=ReadD(6);
MyCorZ:=ReadD(10);
i:=22;
tmpMyName:=ReadS(i);
i:=i+48;
MaxHP:=ReadD(i);
CurHP:=ReadD(i);
MaxMP:=ReadD(i);
CurMP:=ReadD(i);
i:= 552 + length(tmpMyName) * 2;
tmpMyTitle:=ReadS(i);
i:= i + 31;
CubicsSize:= ReadH(i);
i:= i + 28 + (CubicsSize * 2);
MaxCP:=ReadD(i);
CurCP:=ReadD(i);
end;
if FromServer and (pck[1]=#$18) then
begin
CurHP:=ReadD(14);
CurCP:=ReadD(30);
CurMP:=ReadD(22);
// ShowMessage(IntToStr(CurMP));
//если вы используете не грэйтер CP то вместо 200 подставьте кол-во CP сколько восстанавливает 1 банка
if (CurCP<MaxCP-200) then TimerCP.enabled:=true else TimerCP.enabled:=false;
if (CurHP<MaxHP) then TimerHP.enabled:=true else TimerHP.enabled:=false;
if (CurMP<MaxMP-2500) then TimerMP.enabled:=true else TimerMP.enabled:=false;
end;
end.
Добавлено через 1 минуту
Ребят можно сделать чтоб он останавливалсяю когда показатели норм!(Знаю что можно тупые ответов не надо).подскажите исправления пожалуйста.