Пишу сервер LA2 C4 под Linux итог в общую шару


а я и не боюсь, наоборот, критика - двигатель прогресса :)
О форматах l2j(далее *л2д) и __conv.dat(далее *дат):
обозначение:
простой - блок в котором все ячейки на одном уровне и полностью проходимы(в формате __conv.dat такой блок имеет 2 значения высоты в отличии от l2j, как правило такие блоки используются в перепадах высот для устранения дыр в геоданных).
расширенный - это однослойный блок, каждая из ячеек имеет свои высоту и направление.
многослойный - похож на расширенный, в дополнение содержит "многоуровневые" ячейки.
группа высот - двухбайтовое значение, включающее в себя разрешенные направления и собственно высоту закодированное следующим образом(h - высота, z - направление) hex - hz hh, bin - hhhh hhhh hhhh zzzz.

1. в *л2д данные начинаются с первого байта, в *дат с 18-го
2. в *л2д блоки обозначаются цифрами (значение в 1 байт): 00 - простой, 01 - расширенный, 02 - многослойный; в *дат описывается количество ячеек в блоке(2 байта):
00 00 - простой, 40 00 - расширенный, остальные случаи - многослойный(если значение больше 0 и меньше 40 - файл битый).
3. Шифрование простого блока: *л2д - 00 XX XX (00 - это тип блока, XX XX - группа высот(в данном случае направления нет)); *дат - 00 00 ХХ ХХ ХХ ХХ (00 00 - кол-во ячеек, потом 2 группы высот).
4. Шифрование расширенного блока: *л2д - 01 за ним идут 64 группы по 2 байта; *дат - 40 00 (кол-во ячеек) за ним 64 группы высот.
5. Шифрование многослойного блока: *л2д - 02 (1 байт) следующий байт указывает на количество слоев в ячейке, затем идут слои ячейки(группы высот), потом опять количество слоев и так для каждой из 64 ячеек; *дат - 41 00 (2 байта) затем как и в *л2д разница лишь в том что количество слоев *дат файле кодируется 2-мя байтами.
6. В *л2д номер карты зависит от названия, в *дат - это первые 2 байта. затем 4 байта - флаги, после - 3 группы по 4 байта(количество отдельных ячеек(нулевой слой считается как отдельная ячейка), количество простых блоков, количество простых и расширенных блоков вместе)
Если еще чем могу помочь - skype: felexxx67

совсем забыл про мелочь - все блоки в карте и ячейки в файлах расположены друг за другом по вертикали(по оси Y). Первая ячейка(верхняя левая, следующая - под ней, и т.д.)
 
Последнее редактирование модератором:
выкладывай, и не парься, обоснованная критика это всегда хорошо, а не обоснованную можно и не слушать)
 
Чур сильно не пинать, все вразброс, сейчас систематизирую и обновленный джит выложу, а пока так =)


посмотрел я геодвиг на l2j линдвио, может я что не так понял, а разве в java ельзя перемещаться по массиву в обратном направлении от адреса? к примеру вот так c[-3][-6]

Кодировки:
на linux еще не тестил, но если я правильно make написал, должно работать просто из папки набрать make
 
Последнее редактирование модератором:
... ну где же продолжение? ))
 
Уф, долго я отсутствовал, после 4-го сентября будет продолжение, пересмотрю что есть и буду двигаться дальше =)
ПС: прошу простить за столь долгое отсутствие, в командировке ноут навернулся, да и не до этого пока что, сына в первый класс отдаю =)
 
Уф, долго я отсутствовал, после 4-го сентября будет продолжение, пересмотрю что есть и буду двигаться дальше :)
ПС: прошу простить за столь долгое отсутствие, в командировке ноут навернулся, да и не до этого пока что, сына в первый класс отдаю :)
Сын - это святое!!!!
 
Назад
Сверху Снизу