Подскажите так будет правильно ? а если не так поправьте СПС.
Код:
//////////////////////\\\\\\\\\\\\\\\\\\\\\\\\
// http://coderx.ru/showthread.php?t=119 \\
/////////////////////\\\\\\\\\\\\\\\\\\\\\\\\\\
//by mks
//помошник в PvP и PK.
//пьет CP и HP пробирки в нужное время(можно добавить и MP для пвп серваков), и освобождает вас от небоходимости зажатия клавиши //Ctrl, которая так меня раздражает!(думаю это раздражает и не только меня)
///////////////////////////////////////////////////////
///////////////Master PvP by MKS v.1.0/////////////////
///////////////////////////////////////////////////////
//после активации скрипта необходимо выпить сначала банку CP, потом HP для получения их ID
const
Name='xxxxxxx'; //ник перса
var
CurHP,MaxHP,CurCP,MaxCP: integer;
CPuse,HPuse: string;
TimerCP,TimerHP: TTimer;
procedure Init; //Вызывается при включении скрипта
begin
TimerCP:=TTimer.Create(nil);
TimerCP.OnTimer:=@OnTimerCP;
TimerCP.enabled:=false;
TimerCP.interval:=1000; //интервал 1сек, т.к. чаще пить CP всеравно не будет, дабы не засорять трафик
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 OnTimerHP(Sender: TObject);
begin
buf:=HPuse;
SendToServerEx(Name);
end;
procedure Free; //Вызывается при выключении скрипта
begin
TimerCP.free;
TimerHP.free;
HPuse:='';
CPuse:='';
end;
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
//пьем сначала CP, потом HP банку что б запомнить их ID(я решил взять эти пакеты целиком, дабы не усложнять)
if FromClient and (ConnectName=Name) and (pck[1]=#$14) and (CPuse='') then CPuse:=pck;
if FromClient and (ConnectName=Name) and (pck[1]=#$14) and (CPuse<>pck) and (HPuse='') then HPuse:=pck;
//считываем текущие и максимальные значения CP и HP
procedure StatusUpdate;
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);
#$21: CurCP:=ReadD(i*8+14);
#$22: MaxCP:=ReadD(i*8+14);
end;
end;
end;
begin
if (ConnectName=Name) and FromServer then begin
case pck[1] of
#$0E: if (MyID=ReadD(2)) then StatusUpdate;
end;
end;
end.
//если вы используете не грэйтер CP то вместо 200 подставьте кол-во CP сколько восстанавливает 1 банка
if (CurCP<MaxCP-200) and (CPuse<>'') then TimerCP.enabled:=true else TimerCP.enabled:=false;
if (CurHP<MaxHP) and (HPuse<>'') then TimerHP.enabled:=true else TimerHP.enabled:=false;
//если используем скилы или заклинания добавляем флаг Ctrl, что б не надо было удерживать контрол
if FromClient and (ConnectName=Name) and (pck[1]=#$2F) then pck[6]:=#$01;
//если наводим таргет, повторное нажатие по нему подменивается на атаку, опять же что б не удерживать контрол
if FromClient and (ConnectName=Name) and (pck[1]=#$04) then pck[1]:=#$0A;
end.
спс