Добрый день, решил я как-то раз разобраться с пакетной частью айона. В общих чертах понял, как это всё происходит, но вот одно мне осталось не понятно - как изначально определяют какой тип данных (f,h,d,c,s и т.д.) зашифрован под теми или иными байтами? Понятно, что есть готовые протоколы, где все эти данные уже разбиты на необходимые типы и остается только смотреть значения полученных пакетов, но кто их разбивает изначально на типы данных? Т.е. например я хочу сделать пакетку новой версии айона или добавить отсутствующие пакеты (смена сервера например), как мне понять где какой тип данных? Или это вообще как-то не так работает? Вот для примера пакет SM_CASTSPELL_RESULT, ну первые 2 это опкод, потом еще 3 это чексумма, а дальше идет сама информация, первый 2 байта (02 00) в готовом протоколе обозначаются как c, но откуда они это узнали? Ведь это мог быть h) П.с. возможно я написал полную ахинею, т.к. изучал все сам и не имею каких-либо знаний в этой области, поэтому если не сложно прошу шарящих людей объяснить, что вообще происходит)
что бы правильно посмотреть байты в пакете SM_CASTSPELL_RESULT надо удалить все данные из протокола оставить просто опкод и название пакета, а так показывает сейчас криво
Ну так в любом случае получается байт-код как определить где какой тип данных? Это делается по какому-то алгоритму или просто методом дедукции?
Тебе надо изучить HEX что означает 1 байт какое максимальное и минимальное десятичное значение в одном байте, а так конечно ты смотришь и не понимаешь что означает 6D, HEX байт всегда начинается с двух нулей -> 00, 01, 02,03,04,05,06,07,08,09,0a,0b,0c,0d,0e,0f то следующим значением будет 10 11 12 и заканчиваться 1f если смотреть по Айону B - заданное количество байт (например type="b" size="54" значит занять 54 байта) C - 1 байт H - 2 байта D - 4 байта F - 4 байта с плавающей запятой Q - 8 байт S - это текст если текста нет то S занимает 2 байта то бишь 00 00 если есть текст то один символ занимает 2 байта и читается до тех пор пока в конце появятся два пустых байта 00 00. Ещё надо понимать основную структуру пакетов с чего в основном начинается пакет например этот пакет начинается с ObjId персонажа или ObjId нпса или монстра а вообще пробуй подставляй байты разного значения в протокол и смотри по десятичным значениям и очень много информации в инете про это всё. ну примерно так сори за ошибки в написании, если заинтересует разберётесь, изучайте это дело просто так на пальцах не рассказать, а надо читать смотреть изучать метод в тыка применять пробовать)))