Сам пакет:
пример1
Код:
18 EE 42 A9 10 04 00 00 00 09 00 00 00 43 05 00 00 0B 00 00 00 DC 04 00 00 21 00 00 00 A2 02 00 00 22 00 00 00 A2 02 00 00
пример2
Код:
18 EE 42 A9 10 01 00 00 00 0B 00 00 00 DC 04 00 00
Код:
Var
i,p,mid,currentmainhp,currentmainmp,currentmaincp,maxmaincp : integer;
begin
case pck[1] of
#$18: //status update
begin
i:=2;
if readd(i)=mid then
begin
p:=1;
while p <= (readd(i)*2) do
begin
case readd(i) of
9: currentmainhp:=readd(i);
11: currentmainmp:=readd(i);
33:
begin
sendmsg('test1');
currentmaincp:=readd(i);
end;
34:
begin
sendmsg('test2');
maxmaincp:=readd(i);
end;
end;
p:=p+1;
end;
end;
end;
end;
end.
Скрипт не считівает никакое цп. Даже сообщения в лог тест1 и тест2 не пишутся. В чем я ошибся?
<это часть скрипта, отвечающая за обновление инфы>
Добавлено через 23 минуты
Проблему решил сам. Что было не так - хз, но вот рабочий вариант:
Код:
Var
i,p,mid,currentmainhp,currentmainmp,currentmaincp,maxmaincp : integer;
begin
case pck[1] of
#$18: //status update
begin
i:=2;
mid:=readd(i);
if mid=mid then
begin
for p:=1 to (readd(i)*2) do
begin
case readd(i) of
9:
begin
sendmsg('currentmainhp='+inttostr(currentmainhp));
currentmainhp:=readd(i);
end;
11:
begin
sendmsg('currentmainmp='+inttostr(currentmainmp));
currentmainmp:=readd(i);
end;
33:
begin
sendmsg('currentmaincp='+inttostr(currentmaincp));
currentmaincp:=readd(i);
end;
34:
begin
sendmsg('maxmaincp='+inttostr(maxmaincp));
maxmaincp:=readd(i);
end;
end;
end;
end;
end;
end;
end.