Показать сообщение отдельно
Старый 22.12.2007, 17:29   #119
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию Re: ДА БУДЕТ БОТ!

Цитата:
Сообщение от 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 - начальная позиция чтения, которая модифицируется функцией (сдвигается на число считанных байт)
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни


NLObP вне форума   Ответить с цитированием