Тема перекочевавшая с pwlab.net
Те самые октеты который так любят администраторы серверов.
Все значения представлены в шестнадцатеричной системе счисления.
Одежда, Бижутерия: Variable Size
+0. Требуется уровень [Size 2 Bytes]
+2. Ограничение по классу, считается так: Суммирование по нижеперечисленным значениям даёт ограничение по нескольким классам. Т.е например Ограничение по классу: Убийца, Шаман. Выглядит как: 24. [Size 2 Bytes]
Страж - 100
Мистик - 200
Шаман - 4
Убийца - 20
Воин - 1
Маг - 2
Лучник - 40
Жрец - 80
Оборотень - 10
Друид - 8
+4. Требуется сила [Size 2 Bytes]
+6. Требуется выносливость [Size 2 Bytes]
+8. Требуется ловкость [Size 2 Bytes]
+A. Требуется интеллект [Size 2 Bytes]
+C. Текущая прочность предмета [Size 4 Bytes]
+10. Максимальная прочность предмета [Size 4 Bytes]
+14. Класс вещи (Неисследовал) но значения занимают [Size 2 Bytes]
+16. Флаги вещи (Неисследовано) но значения занимают [Size 1 Bytes]
+17. Размер буффера создателя предмета (WideString) [Size 1 Bytes]
+18. Создатель вещи [..Size..] (В нашем случае, не будем учитывать автора), поэтому следующий тоже начинается со смещения +18.
+18. Защита [Size 4 Bytes]
+2C. Уклонение [Size 4 Bytes]
+30. +Мана [Size 4 Bytes]
+34. +Здоровье [Size 4 Bytes]
+38. +Защита от металла [Size 4 Bytes]
+3C. +Защита от дерева [Size 4 Bytes]
+40. +Защита от воды [Size 4 Bytes]
+44. +Защита от огня [Size 4 Bytes]
+48. +Защита от земли [Size 4 Bytes]
+4C. +Количество ячеек [Size 2 Bytes]
+4E. +Флаги ячеек [Size 2 Bytes]
+Range (50,50+4*OFF:4C). Идентификаторы камней в ячейках. [Every size 4 Bytes].
+50. +Количество дополнительных свойств, [Siize 4 Bytes]
+54++. Лист дополнительных свойств. Идентификаторы ниже [Every size 8 Bytes]
Дополнительные свойства
Дополнительные свойства имеют структуру:
struct EffectProp {
int ID;
int Value;
}
Список предполагаемых ID и их идентификаторы:
[ID = 2139]. Уменьшение физического урона
[ID = 2144]. Восстановление здоровья.
[ID = 2149,2148]. Восстановление маны.
[ID = 2274,2276,2543]. Дополнительное здоровье.
[ID = 227B]. Дополнительная мана.
[ID = 227E]. Скорость +.
[ID = 2290]. Физическая защита.
[ID = 25B4]. Интеллект +.
[ID = 25BA]. Выносливость +.
[ID = 25FF]. Защита от металла.
[ID = 2619]. Защита от дерева.
[ID = 2633]. Защита от воды.
[ID = 264E]. Защита от огня.
[ID = 266B]. Защита от земли.
[ID = 25B1,25B2]. Ловкость +.
[ID = 2468]. Сила +.
[ID = 2138]. Уменьшение физического урона %
[ID = 2151] Пауза между атаками.
[ID = 2424,229E]. Уклонение.
[ID = 2422]. Физ защита.
[ID = 2249]. Вероятность нанесения критического удара.
[ID = 2253]. Пение -%F
[ID = 23F4]. Физическая атака.
Стиль: Fix Size [12 Bytes]
+0. Требуемый уровень [4 Bytes]
+4. Цвет [4 Bytes]
+8. Идентификатор const 0x03 [2 Bytes]
+A. Unknown Data [2 Bytes]
Цвет у китайцев считывается так (код исходя из данных дизассемблера, поэтому можно его упростить, часть уже упрощена) ,непонятно зачем так было сделано ведь данные все равно занимают 4 байта, что в RGB, что в их формате:
DWORD PWFashionColorToRGB(DWORD ColorOctets)
{
DWORD ColorRGB = ((((((ColorOctets & 0xFFFFFC00) | 0xFFFF8000) << 3) | (ColorOctets & 0x3e0)) << 3) | (ColorOctets & 0x1f)) << 3;
Byte *Colors = (Byte*)&ColorRGB;
Colors[3] = 0;
Swap(Colors[0],Colors[2]);
return ColorRGB;
}
}
Последние 3 строки всего лишь обменивают байты, и зануляют альфа байт.
Исходный формат у китайцев: aarrggbb
Формат RGB: 00bbggrr
Хирки: FixSize [8 Bytes]
40 77 1B 00 00 00 40 3F
+0. Текущее количество запаса у хиры.[4 Bytes].
+4. Unknown Data [3 Bytes]
+7. Возможно идентификатор 0x3F = const [1 Bytes]
Прошу любить и жаловать и дополнять эту тему.
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]
+14. Класс вещи (Неисследовал) но значения занимают [Size 2 Bytes]
Этот "класс" так же является размером буфера с основными статами вещи, если не ошибаюсь:
Цитата:
Сообщение от nitrotek
+18. Защита [Size 4 Bytes]
+2C. Уклонение [Size 4 Bytes]
+30. +Мана [Size 4 Bytes]
+34. +Здоровье [Size 4 Bytes]
+38. +Защита от металла [Size 4 Bytes]
+3C. +Защита от дерева [Size 4 Bytes]
+40. +Защита от воды [Size 4 Bytes]
+44. +Защита от огня [Size 4 Bytes]
+48. +Защита от земли [Size 4 Bytes]
Цитата:
Сообщение от nitrotek
Стиль: Fix Size [12 Bytes]
+0. Требуемый уровень [4 Bytes]
+4. Цвет [4 Bytes]
+8. Идентификатор const 0x03 [2 Bytes]
+A. Unknown Data [2 Bytes]
Тут спорный вопрос
У меня бывали случаи, когда стиль занимал более 12 байт
Так что я читаю его следующим образом(хотя тут надо еще тестировать):
Код:
Level = ds.ReadInt16();
ds.ReadWord();
Color = ds.ReadDword();
ds.ReadByte();
uint len = ds.ReadCUInt32();
ds.ReadWord();
ds.Skip((int)len);
________________ Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий). - твинки любого игрока, их дата создания, последний онлайн, статус удаления и прочее
Skype - freepvps
ICQ - 412705115
[Ссылки могут видеть только зарегистрированные пользователи. ] - ставкобот [Ссылки могут видеть только зарегистрированные пользователи. ] - общение в КЧ через смартфон
Последний раз редактировалось FreePVP))); 20.09.2012 в 23:46.
Ошибаешься. Каждый последующий класс размером больше предыдущего в 2 раза. (1 2 4 8 16 32 64 128 256 512 соответственно) 1023 - без ограничений на класс
Цитата:
Сообщение от nitrotek
Лист дополнительных свойств. Идентификаторы ниже [Every size 8 Bytes]
Не всегда 8, объяснять почему не буду, но намекну... скиллы... точка...
Цитата:
Сообщение от nitrotek
Список предполагаемых ID и их идентификаторы:
Буду благодарен тому, кто поделится полным списком функций
Ошибаешься. Каждый последующий класс размером больше предыдущего в 2 раза. (1 2 4 8 16 32 64 128 256 512 соответственно) 1023 - без ограничений на класс
ТС указал в hex'е.
________________
Больше не занимаюсь читами, ушёл в серверную часть. Новый ник - int 3.
P.S. Но я всё такой же добрый модератор раздела PW.
Ну не понятно же, если убийца и шаман это 24 = 20+4
То к примеру "оборотень" = "Маг" + "друид"
Как же все таки он понимает какое из ограничений?
Как уже писали выше все значения в шестнадцатеричной системе счисления. Собственно и у меня в самом начале поста об этом написано.
Оборотень <> Маг + Друид. Почему? Да потому что 8+2 = A, а не 10.
Принадлежность к классу определяется обычным поразрядным &.
Например проверка принадлежности к магу:
Если (Value И 2) равен 2 <Обрабатываем> и.т.д
________________
[Ссылки могут видеть только зарегистрированные пользователи. ]