Данный материал посвящён скриптам и наборам команд с применением команды UN:C, которые дают возможность изменять в игре то, что не возможно сделать через "обычный" ERM. Здесь также будут показаны решения реализации требуемого с применением команды SN:E.
Простые наборы UN:C-команд можно преобразовать в bin-патч, воспользовавшись онлайн сервисом.
Команда UN:C#1/#2/$3 позволяет прочитать/записать участок памяти, начиная с адреса #1, длиной #2 в/из переменную $3. Первые 2 параметра самые важные. Неправильная запись в них почти всегда гарантированно вызовет вылет из игры.
Разберём подробнее параметры:
#1 - это адрес участка памяти. Он может быть как статический, так и динамический. Ниже в статье будут указаны только статические адреса (эти адреса всегда одинаковы при запуске игры на любом из ПК, будь то ваш, или друга). Если же нужно будет изменить что-то в динамическом адресе (это адреса, которые на вашем ПК и у друга всегда разные), то обязательно будут указаны способы выхода на последние через статический адрес. По другому выйти на динамический адрес на разных компьютерах невозможно.
#2 - это размер третьего параметра или кол-во байт, которые нам необходимо изменить. Здесь может быть 1, 2 или 4 байта.
$3 - это непосредственно сам параметр, который мы и намереваемся изменить, чтобы добиться какой-то «плюшки». Этот параметр может иметь как положительное значение, так и отрицательное.
Пример:
В коде игры WoG по адресу 76C37D установлено заклинание №25h для командира Паладин. Данные адреса имеют шестнадцатиричную систему исчисления.
Команда UN:C поддерживает только десятичную систему. Перевести эти числа в десятичную не сложно:
включите обычный «виндовский» калькулятор, нажмите "Вид→Программист", поставьте галочку на "Hex", введите "76C37D",
после этого нажмите "Dec". В итоге результат будет представлен числом 7783293. Вот мы и научились переводить шестнадцатиричное число в десятичное ;-)
Итак:
7783293 – это адрес, в котором мы меняем интересующее нас значение/параметр;
4 – кол-во байт для изменения;
37 – то, что именно нам нужно поменять.
Т.о., !!UN:C7783293/4/48; позволит Паладину накладывать на дружественных существ Молитву (48).
Не забывайте, что почти все указанные в статье константные ресиверы UN:C необходимо грузить в событии OnGameEnter.
Например:
Если игра использует проценты, то нельзя просто написать 30%, надо перевести на понятный программе язык. Это можно сделать 3 путями (работает с навыками Волшебство и т.д.):
Не все процентные показатели можно поменять способом выше. Такие параметры, как бонусы атаки и защиты используют значения из массива. Соответственно, надо знать определённый массив, чтобы им подменить существующий.
При работе с памятью очень часто возникает необходимость «иметь под рукой» вот такие данные: Но, как вы понимаете, это лишь малая часть того, что вам так или иначе сможет понадобиться в процессе моддинга. Ниже вам будет представлена довольно обширная база скриптов, которые вы сможете применить для себя на разных игровых платформах (WoG/TE/ERA)…
; параметры любого элемента диалога ; текст, картинки, кнопки и т.д. +16 (2 байта) id элемента; by daemon_n +18 (2 байта) если я правильно понял, то это косвенный id элемента в этом диалоге; by daemon_n +20 (2 байта) флаги; +22 (2 байта) состояние; +24 (2 байта) x; +26 (2 байта) y; +28 (2 байта) ширина; +30 (2 байта) высота; +32 (4 байта) указатель на текст в статус_баре; +36 (4 байта) указатель на текст по ПКМ; ; только для дефов и кнопок +48 (4 байта) указатель на структуру defа; +52 (4 байта) номер кадра дефа; +56 (4 байта) номер кадра дефа при нажатии (если кнопка); +60 (4 байта) отобразить зеркально: 0-нет, 1-да; daemon_n думает, что это номер кадра дефа при отключенной кнопке (если кнопка); +68 (2 байта) закрывает ли диалог: 0-нет, 1-да;
0 - Голова 1 - Плечи 2 - Шея 3 - Правая рука 4 - Левая рука 5 - Торс 6 - Левое кольцо / Правое кольцо [замки = 0…2] 7 - Ноги 8 - Разное 5…1 [замки = 0…5] 9 - Баллиста 10 - Тележка с боеприпасами 11 - Палатка первой помощи 12 - Катапульта (фигушки, я всегда с вами) 13 - Книга Заклинаий
Также, в сети Internet доступно ещё больше готовых решений с применением UN:C. Стоит отметить следующие сайты:
WoG-форум (показать)
Форум DF2 (показать)