Показать сообщение отдельно
Старый 06.04.2010, 16:47   #37
Новичок
 
Регистрация: 20.03.2010
Сообщений: 2
Сказал Спасибо: 3
Имеет 0 спасибок в 0 сообщенях
Infernale пока неопределено
По умолчанию

Из того что нашел на форуме, решил переделать скрипт под эпилог, вот что получилось
delphi Код:
const Name='Infernal'; 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.
Проблема в том что использование банок начинается не сразу после изменения параметров, а только спустя интервал, заданный в таймере. Для Cp и MP это не критично при задержке в 1 сек, а для HP и в дальнейшем элексиров доставляет неудобства. Как это можно исправить?
Infernale вне форума   Ответить с цитированием