Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
L2OFF Decompiled Sources (Salvation: The Gathering / Orfen - 152/162)
Тут нужно патчить ключ в клиенте и менять true -> false в l2.ini у XignCode, либо патчить память у NWindow.dll, можно еще попробовать ру клиент, там XignCode не должно быть
Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками Вход или Регистрация
Привет, спасибо за твою работу и главное что выложил в доступ. Всегда инетерсно было как работает птс, но сложно разбираться в RE только ради этого. Скажи, насчет даунгрейда на старшие хроники, например если взять С4, так как там наверное меньше всего контента и функционала, это ведь много работы? Я взял список фцнкций с С4 и сравнил с твоей кодбазой, и нашлось 90%+ соответсвия, но что с этим всем делать не сильно понимаю. По твоему опыту, адаптация - это большой кусок работы, и что вообще нужно делать (хоть примерное направление работ) чтобы я понял стоит ли пробовать или нет, а то у меня комерческого инетереса нету, а покрутить механики на старой версии было бы весело.
Привет, спасибо. Нужно будет править клиент/сервер пакеты (другие опкоды, формат), данные в scripts, ai.obj нужно будет декомпилировать и заново скомпилировать но уже с помощью nasc из этого проекта, а затем еще нужно будет править формулы/механики (мне кажется это может быть самой сложной частью, потому что придется реверсить, ну или взять формулы/механики из l2j, но которые не обязательно на 100% точны). Я позже распишу подробнее.
Спасибо! Значит и в этом месяце выспаться не удастся.
Сообщение объединено:
Разведка важная: exe — x64, линкер 10.0 (VS2010), .text 10 МБ, .data 37 МБ. PDB настоящий (MSF), но в моём парсере две ошибки (карта блоков MSF и размер записи модуля) — переписываю пробник.
Вечер перестаёт быть томный.
Скину этому "DeepSeek-V4.1-Flash-1017-abliterated-cyber-GLP-39-L1-39-a0.75" инициативному дураку ещё и твои исходники для корекции. Точно спать уже не буду.
Снова, Спасибо за развлечение)
Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками Вход или Регистрация
Там фиксы как и ошибок реконструкции так и багов сервера*. Так же была добавлена одна новая sql мигарция в cached.
* например, при апддейте/удалении макроса сервер не валидирует, что id макроса принадлежит клиенту приславшему запрос поэтому можно удалять макросы других игроков. Когда дворф открывает магазин крафта сервер валидирует рецепт, уровень крафта, но не то, что этот рецепт изучен. И много других похожих ошибок. Общее у них то, что сервер не всегда валидирует инпут запроса.
Привет, спасибо за твою работу и главное что выложил в доступ. Всегда инетерсно было как работает птс, но сложно разбираться в RE только ради этого. Скажи, насчет даунгрейда на старшие хроники, например если взять С4, так как там наверное меньше всего контента и функционала, это ведь много работы? Я взял список фцнкций с С4 и сравнил с твоей кодбазой, и нашлось 90%+ соответсвия, но что с этим всем делать не сильно понимаю. По твоему опыту, адаптация - это большой кусок работы, и что вообще нужно делать (хоть примерное направление работ) чтобы я понял стоит ли пробовать или нет, а то у меня комерческого инетереса нету, а покрутить механики на старой версии было бы весело.
1. Нужно убедиться что сервер может прочесть данные в script. Поскольку их формат менялся и добавлялись новые данные для поддержки механик, которые в С4 не существуют, то будут ошибки отсутствия каких-то данных (например, monsterbook.txt) и ошибки парсеров. Последние вызваны изменением формата. В более новых хрониках больше разных свойств у предметов, нпс и т.д. Первое можно вылечить просто добавив файлы пустышки, убедившись, что парсеру и консьюмерам этих данных ок если файл пустой. Или же можно обновить код, что бы эти файлы не читались, а использовались какие-то пустые значения. Можно также выпилить весь код загружающий и использующий эти данные, но я бы старался как можно меньше вносить изменений, чтобы легче было накатывать изменения из этого сервера (если это когда-нибудь понадобиться). Касательно формата данных, я бы наверное просто написал конвертер С4 скриптов в формат ожидаемый этим сервером (смотри Lexer*/Parser* файлы для понимания того что требуется). Для всех новых свойств можно просто указать какие-то дефолтные значения.
2. Вторая проблема это ai.obj. В нем указаны индексы функций l2npc, оффсеты полей. Даже если сервер прочтет ai.obj (скорее всего нет, поскольку в header может быть несоответствие ожидаемых версий), то вызовет не те функции/обратится не к тем полям и в результате крашнится. Мне кажется самый простой вариант это найти декомпилятор для С4 ai, чтобы получить nasc файлы, а затем скомпилировать их обратно в ai.obj используя nasc компилятор из этого проекта.
3. Пакеты клиента/сервера. Опкоды и форматы пакетов менялись, поэтому нужно будет обновить десериализацию/сериализацию пакетов чтобы соответствовать ожиданиями клиента С4. Поскольку ты это делаешь просто по фану, то можешь взять эту информацию из каких-то java проектов. Там может быть все не совсем точно, но этого должно быть достаточно. Также я бы не менял внутреннее представление каких-то данных. Например, количество предметов в С4 имеет тип int32, а в новых версиях - int64. Я бы продолжил использовал int64 везде и лишь приводил бы значение к типу int32 уже только на уровне АПИ что бы не пришлось менять код во многих местах. Это касается и других полей. Auth тоже менялся. опять же, протокол можно подсмотреть в джава сборках чтобы не лезть в бинарники клиента / c4 сервера.
4. Самое наверное неприятное это сверка механик. Формулы, какие-то условия для различных действий, еще что-то могут отличаться. Тут или копаться в С4 pts или см. выше.
5. Я бы также постарался не менять схему БД. Новым полям бы при сохранении указал какие-то дефолтные значения, а клиенту они бы не возвращались. При этом между серверами (l2server - cached), все эти данные могли бы отправляться.
В целом эта работа достаточно механическая и для твоих целей вполне выполнима*. Учитывая это, если у тебя есть подписка codex/claude, то ты можешь скормить этот проект + исходники какой-то джава С4 сборки + С4 pts script, html, обьяснить свою задачу и я думаю, что какой-то результат ты получишь. На выходе 100% соответсвия оффу по всем механикам не будет, но тебе это наверное и не нужно.
* здесь стоит умножить обьем на два, потому что в процессе вылезут какие-то неучтенные проблемы)
Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками Вход или Регистрация
Там фиксы как и ошибок реконструкции так и багов сервера*. Так же была добавлена одна новая sql мигарция в cached.
* например, при апддейте/удалении макроса сервер не валидирует, что id макроса принадлежит клиенту приславшему запрос поэтому можно удалять макросы других игроков. Когда дворф открывает магазин крафта сервер валидирует рецепт, уровень крафта, но не то, что этот рецепт изучен. И много других похожих ошибок. Общее у них то, что сервер не всегда валидирует инпут запроса.
Сообщение объединено:
1. Нужно убедиться что сервер может прочесть данные в script. Поскольку их формат менялся и добавлялись новые данные для поддержки механик, которые в С4 не существуют, то будут ошибки отсутствия каких-то данных (например, monsterbook.txt) и ошибки парсеров. Последние вызваны изменением формата. В более новых хрониках больше разных свойств у предметов, нпс и т.д. Первое можно вылечить просто добавив файлы пустышки, убедившись, что парсеру и консьюмерам этих данных ок если файл пустой. Или же можно обновить код, что бы эти файлы не читались, а использовались какие-то пустые значения. Можно также выпилить весь код загружающий и использующий эти данные, но я бы старался как можно меньше вносить изменений, чтобы легче было накатывать изменения из этого сервера (если это когда-нибудь понадобиться). Касательно формата данных, я бы наверное просто написал конвертер С4 скриптов в формат ожидаемый этим сервером (смотри Lexer*/Parser* файлы для понимания того что требуется). Для всех новых свойств можно просто указать какие-то дефолтные значения.
2. Вторая проблема это ai.obj. В нем указаны индексы функций l2npc, оффсеты полей. Даже если сервер прочтет ai.obj (скорее всего нет, поскольку в header может быть несоответствие ожидаемых версий), то вызовет не те функции/обратится не к тем полям и в результате крашнится. Мне кажется самый простой вариант это найти декомпилятор для С4 ai, чтобы получить nasc файлы, а затем скомпилировать их обратно в ai.obj используя nasc компилятор из этого проекта.
3. Пакеты клиента/сервера. Опкоды и форматы пакетов менялись, поэтому нужно будет обновить десериализацию/сериализацию пакетов чтобы соответствовать ожиданиями клиента С4. Поскольку ты это делаешь просто по фану, то можешь взять эту информацию из каких-то java проектов. Там может быть все не совсем точно, но этого должно быть достаточно. Также я бы не менял внутреннее представление каких-то данных. Например, количество предметов в С4 имеет тип int32, а в новых версиях - int64. Я бы продолжил использовал int64 везде и лишь приводил бы значение к типу int32 уже только на уровне АПИ что бы не пришлось менять код во многих местах. Это касается и других полей. Auth тоже менялся. опять же, протокол можно подсмотреть в джава сборках чтобы не лезть в бинарники клиента / c4 сервера.
4. Самое наверное неприятное это сверка механик. Формулы, какие-то условия для различных действий, еще что-то могут отличаться. Тут или копаться в С4 pts или см. выше.
5. Я бы также постарался не менять схему БД. Новым полям бы при сохранении указал какие-то дефолтные значения, а клиенту они бы не возвращались. При этом между серверами (l2server - cached), все эти данные могли бы отправляться.
В целом эта работа достаточно механическая и для твоих целей вполне выполнима*. Учитывая это, если у тебя есть подписка codex/claude, то ты можешь скормить этот проект + исходники какой-то джава С4 сборки + С4 pts script, html, обьяснить свою задачу и я думаю, что какой-то результат ты получишь. На выходе 100% соответсвия оффу по всем механикам не будет, но тебе это наверное и не нужно.
* здесь стоит умножить обьем на два, потому что в процессе вылезут какие-то неучтенные проблемы)
Еще как вариант, скормить Ida базу от с4 ПТС в ассемблерном коде и .c псевдокоде, и этот исходник. У многих классов в с4 имена и типы переменных остались такими же как со времен с4 и в 162(добавились и новые соответственно)
Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками Вход или Регистрация
Там фиксы как и ошибок реконструкции так и багов сервера*. Так же была добавлена одна новая sql мигарция в cached.
* например, при апддейте/удалении макроса сервер не валидирует, что id макроса принадлежит клиенту приславшему запрос поэтому можно удалять макросы других игроков. Когда дворф открывает магазин крафта сервер валидирует рецепт, уровень крафта, но не то, что этот рецепт изучен. И много других похожих ошибок. Общее у них то, что сервер не всегда валидирует инпут запроса.
Сообщение объединено:
1. Нужно убедиться что сервер может прочесть данные в script. Поскольку их формат менялся и добавлялись новые данные для поддержки механик, которые в С4 не существуют, то будут ошибки отсутствия каких-то данных (например, monsterbook.txt) и ошибки парсеров. Последние вызваны изменением формата. В более новых хрониках больше разных свойств у предметов, нпс и т.д. Первое можно вылечить просто добавив файлы пустышки, убедившись, что парсеру и консьюмерам этих данных ок если файл пустой. Или же можно обновить код, что бы эти файлы не читались, а использовались какие-то пустые значения. Можно также выпилить весь код загружающий и использующий эти данные, но я бы старался как можно меньше вносить изменений, чтобы легче было накатывать изменения из этого сервера (если это когда-нибудь понадобиться). Касательно формата данных, я бы наверное просто написал конвертер С4 скриптов в формат ожидаемый этим сервером (смотри Lexer*/Parser* файлы для понимания того что требуется). Для всех новых свойств можно просто указать какие-то дефолтные значения.
2. Вторая проблема это ai.obj. В нем указаны индексы функций l2npc, оффсеты полей. Даже если сервер прочтет ai.obj (скорее всего нет, поскольку в header может быть несоответствие ожидаемых версий), то вызовет не те функции/обратится не к тем полям и в результате крашнится. Мне кажется самый простой вариант это найти декомпилятор для С4 ai, чтобы получить nasc файлы, а затем скомпилировать их обратно в ai.obj используя nasc компилятор из этого проекта.
3. Пакеты клиента/сервера. Опкоды и форматы пакетов менялись, поэтому нужно будет обновить десериализацию/сериализацию пакетов чтобы соответствовать ожиданиями клиента С4. Поскольку ты это делаешь просто по фану, то можешь взять эту информацию из каких-то java проектов. Там может быть все не совсем точно, но этого должно быть достаточно. Также я бы не менял внутреннее представление каких-то данных. Например, количество предметов в С4 имеет тип int32, а в новых версиях - int64. Я бы продолжил использовал int64 везде и лишь приводил бы значение к типу int32 уже только на уровне АПИ что бы не пришлось менять код во многих местах. Это касается и других полей. Auth тоже менялся. опять же, протокол можно подсмотреть в джава сборках чтобы не лезть в бинарники клиента / c4 сервера.
4. Самое наверное неприятное это сверка механик. Формулы, какие-то условия для различных действий, еще что-то могут отличаться. Тут или копаться в С4 pts или см. выше.
5. Я бы также постарался не менять схему БД. Новым полям бы при сохранении указал какие-то дефолтные значения, а клиенту они бы не возвращались. При этом между серверами (l2server - cached), все эти данные могли бы отправляться.
В целом эта работа достаточно механическая и для твоих целей вполне выполнима*. Учитывая это, если у тебя есть подписка codex/claude, то ты можешь скормить этот проект + исходники какой-то джава С4 сборки + С4 pts script, html, обьяснить свою задачу и я думаю, что какой-то результат ты получишь. На выходе 100% соответсвия оффу по всем механикам не будет, но тебе это наверное и не нужно.
* здесь стоит умножить обьем на два, потому что в процессе вылезут какие-то неучтенные проблемы)
Спасибо за детали. Теперь картина более ясна. Я уже немного начал этим заниматься, посмотрю куда заведет инетерес. Пока-что разбираюсь в протоколе С4. Вышло добыть инфы из, так званого "C4 Retail" L2Server ну и есть полно наработок по эмуляции, их тоже рассмотрю. В любом случае есть с чем поиграться, даже если ничего не сделаю, то интересно проведу время
На данном сайте используются файлы cookie, чтобы персонализировать содержимое и сохранить Ваш вход в систему, если Вы зарегистрируетесь.
Продолжая использовать этот сайт, Вы соглашаетесь на использование наших файлов cookie.