В том что структуры данных, которые предлагает мобиус, не соответствуют данным.
Это как в шутке, что если в слове хлеб сделать 4 ошибки получится слово пиво.
UPD
Если чуть сложнее - ДАТ файлы - это набор БАЙТовых последовательностей, которые имеют определенную закономерность в чтении / записи.
Почему возникает такая ошибка - структура, которую мобиус предлогает, не совпадает с данными, которые там записаны.
Почему так происходит? Потому-что корейцы что-то добавляют от версии к версии в файлы или меняют полностью данные, хранящиеся в них.
Пример для простоты:
У нас есть число SHORT, которое в байтовом виде имеет 2 байта - 00 00. Если корейцы поменяли значение числа с SHORT на INTEGER, которое в байтовом виде имеет 4 байта - 00 00 00 00, то последующая достоверность получаемых данных под вопросом (ибо в структуре данных, которые нам предоставлено все так же стоит SHORT, а не INTEGER).
Так же стоит заметить, что строки, которые записаны в ДАТ файлах, делятся на 3 типа:
* Которые хранятся в виде индексов в базе строк (GameDataNames)
* Которые имеют заголовок размерности в начале строки с последующей конвертации CHAR (1 байт) в символы. Пример = 03, 00, 00, 117, 00, 109, 00, 117 = "umu".
* Которые имеют индексированные имена в начале файла.
И любое изменение, или не точность в структуре чтения может вызвать огромный каскад или ошибку (из-за того что индекс не может быть меньше нуля (если это не python)) или проблему с размерностью строки (каскад декодирования всех байтов, ибо в заголовке указана размерность не 3, как в "umu", а 600 или из-за отрицательного значения размерности строки);
Как решить проблему?
1. На угад попробовать угадать что добавили корейцы в этот раз;
2. Попробовать понять где в engine.dll хранится информация о структуре чтения таких файлов;
3. Купить у
Art редактор для вашего протокола;
4. Умолять мобиуса об нахождении/покупке структур, чтоб он
послал сказал что занимается разработкой эмулятора;