Цитата:
Сообщение от lQaKl
Тогда другой вопрос: какие параметры, кроме хп,цп,мп мона выдрать из Статус Апдейт? #$11, например это что?
З.Ы. Данная расшифровка для С4 или ИЛ?
|
Это для ИЛ
Код:
private static final String _S__0E_STATUSUPDATE = "[S] 0E StatusUpdate";
public final static int LEVEL = 0x01;
public final static int EXP = 0x02;
public final static int STR = 0x03;
public final static int DEX = 0x04;
public final static int CON = 0x05;
public final static int INT = 0x06;
public final static int WIT = 0x07;
public final static int MEN = 0x08;
public final static int CUR_HP = 0x09;
public final static int MAX_HP = 0x0a;
public final static int CUR_MP = 0x0b;
public final static int MAX_MP = 0x0c;
public final static int SP = 0x0d;
public final static int CUR_LOAD = 0x0e;
public final static int MAX_LOAD = 0x0f;
public final static int P_ATK = 0x11;
public final static int ATK_SPD = 0x12;
public final static int P_DEF = 0x13;
public final static int EVASION = 0x14;
public final static int ACCURACY = 0x15;
public final static int CRITICAL = 0x16;
public final static int M_ATK = 0x17;
public final static int CAST_SPD = 0x18;
public final static int M_DEF = 0x19;
public final static int PVP_FLAG = 0x1a;
public final static int KARMA = 0x1b;
public final static int CUR_CP = 0x21;
public final static int MAX_CP = 0x22;
В пакете StatusUpdate приходит лишь часть данных, по всей видимости изменяемых в данный момент.
Добавлено спустя 11 минут 35 секунд:
Цитата:
Сообщение от boyan
Цитата:
Сообщение от NLObP
Если не ошибаюсь, то:
Код:
procedure StatsUpdate;
var
i: integer;
begin
for i:=0 to ReadD(6)-1 do
case pck[i*8+10] of
#$09: CurHP:=ReadD(i*8+14);
#$0A: MaxHP:=ReadD(i*8+14);
#$0B: CurMP:=ReadD(i*8+14);
#$0C: MaxMP:=ReadD(i*8+14);
#$21: CurCP:=ReadD(i*8+14);
#$22: MaxCP:=ReadD(i*8+14);
end;
end;
|
вот своим этим постом, ты еще больше все запутал =)
|
Объясняю. Так как пакет StatusUpdate это:
Код:
0E=StatusUpdate:h(ObjectID)d(AttribCount)d(AttrID)d(AttrValue)
Берем из шестой позиции количество атрибутов (AttribCount). Проходим в цикле по пакету и сверяем код аттрибута (AttrID) из пакета с необходимыми нам атрибутом. Если совпало,то считываем величину этого аттрибута (AttrValue). Далее делаем необходимые проверки и действия...
По поводу ReadD(i)
ReadC(var index:integer):byte - читает из переменной pck байт
ReadH(var index:integer):word - читает из переменной pck число (2 байта) (v. 3.1.8+)
ReadD(var index:integer):integer - читает из переменной pck число (4 байта)
ReadF(var index:integer):double - читает из переменной pck число c плавающей запятой(8 байт) (v. 3.1.8+)
ReadS(var index:integer):string - читает из переменной pck строку (в пакете строка unicode нультерминированная, а результирующая строка обычная паскалевская)
Index - начальная позиция чтения, которая модифицируется функцией (сдвигается на число считанных байт)