PDA

Просмотр полной версии : Скрипт на заточку, без поломки


lain_ivakura
03.04.2011, 01:31
Здравствуйте, на серве стоит система заточки блес точкой либо +1, либо -1, без поломок, с плавающим рейтом на успех(чем выше уровень заточки тем меньше шанс получить +1) Максимальная точка +50 на шмот и +150 на випон.
При использовании данного скрипта возникает проблема - скрипт не останавливается, при достижении максимальной точки (например для шмота +50) и точит дальше, с непременным скидыванием до 49. Можно останавливать вручную, но для заточки на +50 порой необходимо около 1000 затачиваний, во время которых надо сидеть и следить за процессом, чтобы вовремя остановить. Буду признателен, если кто-нибудь подскажет, как можно решить данную проблему, и заставить скрипт вовремя остановиться

const
nik='xxx';
Enchant=50;

var
UseItem, SelectItem, EnchantItem: string;
CurrentEnch: integer;
key: boolean;
Timer01, Timer02: TTimer;

procedure Init;
begin
Timer01:=TTimer.Create(nil);
Timer01.OnTimer:=@OnTimer01;
Timer01.enabled:=true;
Timer01.interval:=500;

Timer02:=TTimer.Create(nil);
Timer02.OnTimer:=@OnTimer02;
Timer02.enabled:=false;
Timer02.interval:=500;
end;

procedure OnTimer01(Sender: TObject);
begin
case key of
false: begin
buf:=UseItem;
SendToServerEx(nik);
Timer02.enabled:=true;
end;
true: begin
buf:=EnchantItem;
SendToServerEx(nik);
end;
end;
key:=not(key);
end;

procedure OnTimer02(Sender: TObject);
begin
buf:=SelectItem;
SendToServerEx(nik);
Timer02.enabled:=false;
end;

procedure Free;
begin
Timer01.free;
Timer02.free;
CurrentEnch:=0;
key:=false;
end;

begin
if FromServer and (pck[1]=#$87) then case ReadD(2) of
0: begin
CurrentEnch:=CurrentEnch+1;
if CurrentEnch=Enchant then Timer01.enabled:=false;
end;
2: CurrentEnch:=0;
end;
if FromClient and (pck[1]=#$19) then UseItem:=pck;
if FromClient and (pck[1]=#$D0) then SelectItem:=pck;
if FromClient and (pck[1]=#$5F) then EnchantItem:=pck;
if FromClient and (pck[1]+pck[2]=#$56#$0C) then
begin
pck:='';
Timer01.enabled:=not(Timer01.enabled);
end;
end.

Nickers
05.04.2011, 15:44
На словах:
При точке оружия должен приходить пакет обновления инвентаря, где хранится значение Енчант лвла, который и нужно сравнить с 50ю, например.