|
И так к чему же я пришел
| |
wwwseva | Дата: Суббота, 14.12.2013, 20:46 | Сообщение # 1 |
Ня
Группа: Легенды Кунг Фу
Сообщений: 8
Награды: 0
загрузка наград ...
Репутация: 0
Статус: Offline
| По ковырялся на досуге в клиенте, а если точнее, в lua.package. Данный архив содержит скрипты с самой "интересной" логикой клиента для читеров. Собственно нашёл скрипт гм-панельки. Вызывается она по F1 при активном условии GameTest. К сожалению вызвать гм панельку у меня не получилось, поскольку при изменении любого скрипта клиент отказывается стартовать. И так, обо всём по порядку. Для начала нужно распоковать архив(как это сделать написано в начале темы), и мы получим компилированные(хотя язык не поворачивается их так называть, по сути это транслированные файлы для vm lua) файлы *.lua. Для адекватного просмотра их содержимого, нам понадобиться декомпилятор. Единственный адекватный декомпилятор, что мне попался - это явовская либа. По началу уже хотел накидать програмку на яве по быстрому, но потом нашёл готовый батник(декомпилятор работает только под вин, увы). Собственно ссылка на либу и на батник. Либа и батник должны находиться в одной папке. Запускаем батник, скармливаем ему нужный файл и готово. Для начала меня заинтересовал файл form_test/form_gm_command.lua . Декомпилировав его, я увидел что он содержит логику работы и отрисовки гм-панели. Не совсем то, что нам нужно. Далее поиск привел меня к файлу gui.lua где я нашёл такой кусок кода: local game_visual = nx_value("game_visual") ifnot game_visual.GameTestthen returnendif key =="F1"andnot control then local bFocus =truelocal form_gm_command = nx_value("form_test\\form_gm_command") ifnot nx_is_valid(form_gm_command)then form_gm_command = nx_execute("util_gui","util_get_form","form_test\\form_gm_command",true,false) form_gm_command:Show() nx_set_value("form_test\\form_gm_command", form_gm_command)else nx_execute("util_gui","util_auto_show_hide_form","form_test\\form_gm_command") bFocus = form_gm_command.Visibleend if bFocus then gui.Focused= form_gm_command.InputBoxelse gui.Focused= nx_null() end end Это кусок функции, которая срабатывает каждый раз при нажатии любой клавиши. Как видно из условия, для отрисовки гм панели, нужно значение game_visual.GameTest в true и нажатие кнопки F1. Собственно, на этом я и за стопорился. При измене файла(даже при добавлении 1 символа) клиент не запускается. Проблема в том, что есть функция nx_is_valid(), которой проверяется gui при вызове его в файле client.lua, которая собственно и сообщает клиенту о том, что файл не валидный. Сама эта функция (как и все функции, начинающиеся с nx_, и все классы(да, тут ооп)) заложены в печально известном fxgamelogic.dll , нормально декомпилировать который мне так и не удалось. В общем, для вызова гм панели, нужно установить свойство GameTest объекта класса game_visual в true. Это у меня пока что не вышло, буду снифать пакеты. Да, чуть не забыл, после изменения скрипта, для того, чтобы скормить его клиенту, его нужно обратно компилировать, это можно сделать стандартным компилятором luac, который скачать можно тут. Далее нужно обратно запаковать новый файл в архив lua.package(о том как это сделать, тоже написано в начале данной темы). Вот как-то так. По сути я пришел к тому же к чему и вулФи из хаоса.Я пока не могу понять как вызвать эту then в true.Если покопаться полностью то вполне можно сделать свободный вызов ГМ панели.ну как то так) и так для ознакомления и понимания о чем я. Зайдя в папку с игровым клиентом, мы видим autorun (fxlaunch.exe) и несколько папок с ресурсами игры, коротко пройдёмся по ним:
В папке bin находятся основные исполняемые файлы клиента, но не только они. Например, если во время игры Вы делали скриншоты, там также появляется папка image, в которую они и помещаются. Также в этой папке находятся игровые настройки (файлы system_set.ini и systeminfo.ini, о них мы ещё поговорим подробнее) и настройки для отдельных пользователей в папках, с названиями соответствующими их логинам. Здесь стоит сделать небольшое лирическое отступление: в отличие от американской версии, где стандартный логин соответствует e-mail'у пользователя, в русской версии использована хитровыебнутая система авторизации, по которой пользователям присваиваются реальные логины вида KF-0-XXXXXXXXXX-XXX. Чему соответствуют их реальные пароли я не знаю, но стандартные не подходят. В упомянутых папках в основном хранится утилитарная информация, такая, как расположение окон интерфейса и метки на карте. Помимо этого, в папке bin находится интереснейший файл packages.ini, отвечающий за названия архивов, в которых хранятся игровые ресурсы. Параметр Preload теоретически должен отвечать за предварительную подгрузку указанных архивов в оперативную память. На практике не тестировалось.
В папку patch скачиваются игровые патчи и, что примечательно, хранятся там до конца времён, если вдруг выйдет огромный патч и нужно будет освободить место на диске, можно будет смело данную папку удалить. Сами же патчи представляют из себя точно такие же архивы, как и всё остальное, но об этом позже.
В папке res хранятся архивы со всеми ресурсами игрового клиента, Как их открывать, я обязательно напишу в следующем посте. Кратко о том, что содержится в архивах: Курсоры внезапно сразу оказались не запакованными и просто лежат в папке cur, если они кому-то приглянулись, можно, например, поставить их в системе, ну или наоборот, заменить на свои. eff.package содержит исходный код игровых эффектов (таких, как эффекты огня, блюр ит.д.), код на чистом C. Особого интереса не представляет, если Вы не собираетесь замутить свой ENB. fonts.package, как не трудно догадаться из названия, содержит игровые шрифты. Шревты говно, я лично заменил их на божественную Helvetica gui.package содержит ресурсы, отвечающие за игровой интерфейс (именно графические ресурсы, а не конфигурацию). ini.package — один из важнейших архивов для любого мододела, этот скромный по размерам файлик содержит чуть ли не половину игровых настроек. Profit inside. lua.package — ну а этот архивчик содержит вторую половину, правда, с ним есть небольшие проблемы, но об этом позже. share.package содержит третью половину дополнительные игровые настройки, тоже полезные при модификации. text.package содержит файлы локализации, отвечающие за весь текст внутри игры. Например, можно заменить на куда более удобоваримую английскую версию. Остальные архивы содержат игровые ресурсы того или иного вида, какие именно, не трудно догадаться из названий.
Что именно содержит папка SnailRes я не понял, но рискну предположить, что это встроенный в апдейтер архиватор. В планах с ним поиграться, пока что особо не обращал на него внимания.
В папках updater и updater_ находится апдейтер игровых файлов. Почему два раза, остаётся загадкой, возможно, виной всему кривая конфигурация в файле packages.ini в этих папках.
Добавлено (14.12.2013, 20:46) --------------------------------------------- Немного приоткрою секретиков ^^ 1.Открываем файл fxgamelogic.dll через прогу Hex WorkShop!!! 2.Нажимаем кнопку Find/Поиск : ишем слово Mount находим слово ,смотрим в левую половину Монитора видим Бинарный Код слова Mount такой 4D 6F 75 6E 74 3.Ето 4D 6F 75 6E 74 меняем на ето 00 00 00 00 00 4.Сохраняем ,заходим в игру , призываем лошадь ,садимся, нажымаем Кнопку Идти/Бежать еше раз нажимаем эту кнопку и бежим Божествено со звуком и скоростью.В данном случае нельзя использовать скиллы непосредственно с коня.Но можно использовать цингун.
Если найти Mount и заменить на Weapon и на конце оставить NULL то можно юзать скиллы прямо с коня.
Сообщение отредактировал wwwseva - Суббота, 14.12.2013, 20:54 |
|
| |
Pablo | Дата: Понедельник, 23.12.2013, 15:43 | Сообщение # 2 |
Крутая Ня
Группа: Офицер
Сообщений: 155
Награды: 5
загрузка наград ...
Репутация: 7
Статус: Offline
| монстр)) жги еще!!
|
|
| |
wwwseva | Дата: Вторник, 24.12.2013, 20:45 | Сообщение # 3 |
Ня
Группа: Легенды Кунг Фу
Сообщений: 8
Награды: 0
загрузка наград ...
Репутация: 0
Статус: Offline
| Цитата Pablo ( ) монстр)) жги еще!! ^_^ времени мало :\ так бы давно мог открыть ГМ панель.Но это лишь вопрос времени ^^ http://prntscr.com/2dnu6qДобавлено (24.12.2013, 20:45) --------------------------------------------- СтопЭ разве ты не ущел в другую Ги? -_-
Сообщение отредактировал wwwseva - Вторник, 24.12.2013, 20:42 |
|
| |
nordixzett | Дата: Воскресенье, 07.09.2014, 10:10 | Сообщение # 4 |
Ня
Группа: Легенды Кунг Фу
Сообщений: 2
Награды: 0
загрузка наград ...
Репутация: 0
Статус: Offline
| В share.package находятся массивные файлы экипировки. Есть общий список, и есть список того, что можно купить у торговцев ( я видел самого начального наставника, у которого всякие разрывы каналов покупают). Вопрос такой - нафига эти настройки лежат в клиенте, если изменяя их, (скажем, торговец будет продавать несвязанный 125й шмот - я хз, какой он, факт в том, что в настройке есть шмот с броней 125), так вот если изменить список товаров, это же все равно не отразится на серверной части, и мы не сможет купить этот шмот =_=
З.Ы. Смайлики убивают.
|
|
| |
| |