NLObP,
ок,буду пробовать...
Добавлено спустя 2 часа 50 минут 20 секунд:
промучался,сколько смог,вот что вышло,только не заработало:
Код:
//автоматическое использование НР пробирок by NLObP
// 1-Изменяем Name='NLObP';
// 2-бросаем, подбираем или выпиваем Heal Potion
//Работа проверена на L2C4 Protocol 660 LocalServer "L2J FORTRESS" и Protocol 656
const
Name='ViniPUF';
var
ColvoHP, CharObjID, ItemObjID: integer;
MaxHP, CurHP: integer;
TimerHP: TTimer;
Status: boolean;
//2F=RequestMagicSkillUse:h(MagicID)d(CtrlPressed)b(ShiftPressed)
procedure MagicSkillUse(MagicID:integer);
begin
buf:=#$2F;
WriteD(MagicID);
WriteD(00);
WriteC(00);
SendToServerEx(Name);
end;
//******************************************************************************
procedure OnTimerHP(Sender: TObject);
begin
MagicSkillUse(1218);
end;
//******************************************************************************
procedure Say(msg:string);
begin
buf:=hstr('4A 00 00 00 00');
WriteD(2);
WriteS(Name);
WriteS(msg);
SendToClientEx(Name);
end;
//******************************************************************************
procedure InitStats;
var
i: integer;
begin
//Запоминаем ИД
i:=18;
CharObjID:=ReadD(i);
//смещение переменное, зависит от имени (LenName*2+2)
i:=i+(Length(Name)*2+2)+44;
MaxHP:=ReadD(i);
CurHP:=ReadD(i);
//Say('MaxHP='+inttostr(MaxHP)+'CurHP='+inttostr(CurHP));
if ItemObjID=0 then exit;
if (CurHP<MaxHP-600) then TimerHP.enabled:=true else TimerHP.enabled:=false;
end;
//******************************************************************************
procedure StatsUpdate;
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);
end;
end;
if ItemObjID=0 then exit;
if (CurHP<=MaxHP-600) then TimerHP.enabled:=true else TimerHP.enabled:=false;
end;
//******************************************************************************
// Вызывается при включении скрипта
//******************************************************************************
procedure Init;
begin
status:=false;
CharObjID:=0;
ItemObjID:=0;
timerHP:=TTimer.Create(nil);
timerHP.OnTimer:=@OnTimerHP;
timerHP.enabled:=false;
timerHP.interval:=5000; //время отката лечения с помощью скила Greater Battle Heal
end;
//******************************************************************************
// Вызывается при выключении скрипта
//******************************************************************************
procedure Free;
begin
timerHP.Free;
end;
//******************************************************************************
// Вызывается при приходе каждого пакета, если скрипт включен
//******************************************************************************
begin
//******************************************************************************
//не обрабатываем пустые пакеты
if pck='' then exit;
//******************************************************************************
//UserInfo
if FromServer and (ConnectName=Name) and (pck[1]=#$04) then InitStats;
//******************************************************************************
//StatusUpdate
if FromServer and (ConnectName=Name) and (pck[1]=#$0E) and (CharObjID=ReadD(2)) then StatsUpdate;
end.
Я что-то не так исправил,только не пойму что именно :unknown: