Показать сообщение отдельно
Старый 12.08.2011, 10:34   #8
Новичок
 
Регистрация: 12.08.2011
Сообщений: 1
Сказал Спасибо: 0
Имеет 0 спасибок в 0 сообщенях
root2 пока неопределено
По умолчанию

Подскажите так будет правильно ? а если не так поправьте СПС.

Код:
//////////////////////\\\\\\\\\\\\\\\\\\\\\\\\
// 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.

спс
root2 вне форума   Ответить с цитированием