Часть 1Основы редактирования
В Данном гайде были использованны:
- IDA PRO 6.0 + HEX RAYS Скачать
- Конвертер skillstr от Рони.
- 010 editor
Это первая вводная часть гайда по редактированию скиллов. Здесь я опишу общие принципы работы с
IDA и
HEX.
Начнем. Для начала с помощью конвертера Рони сделаем себе удобный файл, содержащий
id скилла, название и остальные параметры. Для этого запустим
skillstr2tab.exe из консоли с аргументом в виде пути к файлу
skillstr
Во сконвертированном файле мы видем цифру и название скилла. Цифра - это его
id в
gs.
Начнем сразу с момента, когда вы скачали и установили
IDA:
запускаете исполняемый файл ->
new -> выбираете файл
gs -> жмете
ok, после чего придется подождать некоторое время, пока
IDA будет загружать
gs в свои базы.
После чего слева вы увидете названия функций в ядре. Можно воспользоваться поиском, кликнув 1 раз на любое значение и выбрав вверху
Searh -> Search. Давайте попробуем, например, отредактировать скилл шамана
Дух мести: отражение
Смотрим в нашем файле:
Дух мести: отражение
Вбиваем в поиск по функциям
Skill1102Stub и видим примерно следующее
Кликаем на выделенный участок 2 раза и видим примерно следующее
Это нужная нам функция в ассемблере, но нам удобнее будет читать в
C/C++ поэтому жмем
F5 видим следующий псевдокод
Тут видно, что дамаг считается по формуле
Код:Сила Духа
0.230.1*Уровень скилла Стандартно
не 0.23, а 0.5, но я изменил под себя, а чистого ядра под рукой небыло. В IDA можно только смотреть функцию - изменять нельзя. Чтобы изменить значение возвращаемся во вкладку IDA View
и находим там эти 2 значения (Значение операнда видно при наведении).
Жмем 2 раза на
dbl_88F3500 и попадаем сюда
Тут мы видим адрес данной переменной.
В нашем Hex редакторе переходим по вышеописанному адресу, для этого жмем
Ctrl+G и вводим
0x и адрес.
Попадаем сюда
Меняем значение, например, на
0.3 сохраняем. Готово.
Спойлер Спойлер Спойлер Спойлер Спойлер Спойлер
GetMpcost - требуемая мана
GetExecutetime - призывание или подготовка
GetCoolingtime - перезарядка
GetRequiredLevel - требуемый уровень для изучения скилла
GetRequiredSp - требуемый дух для изучения
GetRequiredMoney - Кол-во юаней
GetRequiredItem - требуемый предмет
GetRadius, getEffectDistance, GetPrayDistance - радиус и расстояние
StateAttack - основной эффект скилла
TakeEffect - основной эффект пассивного скилла
GetTime - время активации
Часть 2Основные параметры скилла
Спойлер Спойлер Спойлер Спойлер Спойлер Спойлер
1 - Атака
2 - Баф
3 - Дебаф
4 - Призыв
5 - Пассивка
6 - Стан (Нокаут)
7 - Полет
8 - Перемещение (телепорт)
9 - Шлифовка
С новым годом!
Часть 3Расчет дамага
В этой части гайда я хотел бы рассказать об особенности расчета дамага у некоторых скиллов. Ни для кого не секрет, что у скилла есть свои статы, но они не всегда расчитываются там, где я описывал в прошлых частях гайда. Начнем с момента, когда вы
загрузили gs в IDA.Для примера мы рассмотрим скилл
var rm = "Читать дальше ..."; var o = "... Read Less"; var adjustheight = 20; // 20; // 508 Светлый Армагеддон
Как мы видим, в основной функции вызывается 3 стата
Код:GNET__Skill508Stub__State1__State1 GNET__Skill508Stub__State2__State2 GNET__Skill508Stub__State3__State3
За расчет дамага у этих статов у нас отвечает функция
*::Calculate
Пробуем просмотреть эти функции для всех 3х статов:
Смотрим первую функцию
Код:GNET::Skill508Stub::State1::Calculate
Хм....В первой функции ничего, пробем вторую
Код:GNET::Skill508Stub::State2::Calculate
Да, вот наша формула расчета
Код:4*(ХП/2+ПМ/2)+5000
Можем менять значения как нам захочется
Армадон агрится на девушек 1