Цитата:
Сообщение от 0rfin
Еще откуда брать значение макс ЦП? в пакете UserInfo его нет
|
Точно нет? А это тогда что такое?
delphi Код:
procedure UserInfo;
var
i, tmpCharObjectId: integer;
tmpMyName: string;
begin
tmpCharObjectId:=ReadD(18);
if CharObjectId=0 then CharObjectId:=tmpCharObjectId;
case tmpCharObjectId of
CharObjectId:
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);
MaxCP:=ReadD(655);
CurCP:=ReadD(659);
end;
end;
Только сразу предпреждаю что отсюда ты возьмешь только начальные значения, а потом отслеживай StatsUpdate. Из моего пвп-скрипта:
delphi Код:
procedure StatsUpdate;
var
i, tmpMaxHP, tmpCurHP, tmpMaxMP, tmpCurMP, tmpMaxCP, tmpCurCP, tmpCharObjectId :integer;
begin
tmpCharObjectId:=ReadD(2);
if (tmpCharObjectId<>CharObjectId) then Exit;
for i:=0 to ReadD(6)-1 do
case pck[i*8+10] of
#$09: tmpCurHP:=ReadD(i*8+14);
#$0A: tmpMaxHP:=ReadD(i*8+14);
#$0B: tmpCurMP:=ReadD(i*8+14);
#$0C: tmpMaxMP:=ReadD(i*8+14);
#$21: tmpCurCP:=ReadD(i*8+14);
#$22: tmpMaxCP:=ReadD(i*8+14);
end;
if (tmpMaxHP<>0) then MaxHP:=tmpMaxHP;
if (tmpCurHP<>0) then CurHP:=tmpCurHP;
if (tmpMaxCP<>0) then MaxCP:=tmpMaxCP;
if (tmpCurCP<>0) then CurCP:=tmpCurCP;
if (tmpMaxMP<>0) then MaxMP:=tmpMaxMP;
if (tmpCurMP<>0) then CurMP:=tmpCurMP;
if (BSOEAutoUse) and (BSOEAmount>1) and (CurHP<>0) and (not TimerBSOE.Enabled) and (CurHP<((MaxHP*BSOEUsePercent)/100)) then
begin
UseItem(MyName, BSOEObjectId);
TimerBSOE.Enabled:=True;
end;
if (PotsAutoUse) then
begin
if (GCPAutoUse) and (GCPAmount>1) and (not TimerGCP.Enabled) and (CurCP<((MaxCP*GCPUsePercent)/100)) then
begin
UseItem(MyName, GCPObjectId);
TimerGCP.Enabled:=True
end;
if (QHPAutoUse) and (QHPAmount>1) and (CurHP<>0) and (not TimerQHP.Enabled) and (CurHP<((MaxHP*QHPUsePercent)/100)) then
begin
UseItem(MyName, QHPObjectId);
TimerQHP.Enabled:=True
end;
if (GHPAutoUse) and (GHPAmount>1) and (CurHP<>0) and (not TimerGHP.Enabled) and (CurHP<((MaxHP*GHPUsePercent)/100)) then
begin
UseItem(MyName, GHPObjectId);
TimerGHP.Enabled:=True;
end;
if (MPAutoUse) and (MPAmount>1) and (not TimerMP.Enabled) and (CurMP<((MaxMP*MPUsePercent)/100)) then
begin
UseItem(MyName, MPObjectId);
TimerMP.Enabled:=True;
end;
end;
end;