Wake of Gods Forum | Форум Во Имя Богов
UN:C - Printable Version

+- Wake of Gods Forum | Форум Во Имя Богов (http://wforum.heroes35.net)
+-- Forum: Герои Меча и Магии 3.5 WoG/ERA (/forumdisplay.php?fid=99)
+--- Forum: Скрипты (/forumdisplay.php?fid=103)
+--- Thread: UN:C (/showthread.php?tid=5118)


UN:C - igrik - 13.01.2017 16:30

Данная тема посвящена UN:C скриптам, которые дают возможность изменять в игре то, что не возможно сделать через "обычный" ERM. Тема также будет затрагивать и команду SN:E.

Простые наборы UN:C-команд можно преобразовать в bin-патч онлайн, воспользовавшись следующим сервисом

Краткая инструкция (Click to View)
1) Тема UN:C на df2;
2) Инженерный анализ на df2;
3) Хуки на исполняемый код из ERA на df2;
4) Небольшой сборник готовых скриптов с UN:C/SN:E (eng);

Убедительная просьба: не засорять эту тему бессмысленными сообщениями.



UN:C - igrik - 14.01.2017 00:22

Работа с HD-модом:




Диалоги, интерфейс:

Code:
; параметры любого элемента диалога
; текст, картинки, кнопки и т.д.

+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-да; [b]daemon_n[/b] думает, что это номер кадра дефа при отключенной кнопке (если кнопка);
+68  (2 байта) закрывает ли диалог: 0-нет, 1-да;


Активация кнопки "Следующий герой", отключенной в ТЕ.



RE: UN:C - igrik - 14.01.2017 00:41

Окно найма существ/боевых машин героем

Fix бага, возникающего при открывании окна героя в диалоге присоединения существ



RE: UN:C - igrik - 15.01.2017 17:02

Герои:



Герои: меняем названия классов



RE: UN:C - igrik - 16.01.2017 14:48

Всякие разные константные значения (не боевые):







RE: UN:C - igrik - 16.01.2017 20:21

Всякие разные константные значения (боевые):






RE: UN:C - igrik - 16.01.2017 20:30

Города:




Граали:





RE: UN:C - igrik - 25.01.2017 13:38

Битва: стеки:
ФУНКЦИИ:

Битва: герои:



RE: UN:C - igrik - 26.01.2017 13:12

Артефакты:


Создание артефакта автонакладывающего заклинание см.тут
Расширить список артефактов для появления на карте см.тут


RE: UN:C - igrik - 27.10.2017 11:12

Хуки на исполняемый код ERA:
Несколько хуков на форуме df2
.
.
Скачать: ERM_Hooker

Примеры использования (Click to View)



RE: ERA II - igrik - 07.12.2017 21:52

Командиры:
Структура командира (Click to View)






RE: UN:C - igrik - 08.07.2018 21:50

Спец.абилки монстров:

Колдовство монстром:
СПРАВКА (Click to View)




RE: UN:C - Algor - 19.02.2019 17:16

Управление вторичными навыками:
© разные хорошие люди





RE: UN:C - Chaomen - 18.08.2019 03:53

Одновременная анимация на стеках:

Позволяет сразу обращаться к номерам стеков.
Присваиваете нужным SimulAnim# 1 и вызываете функцию (SimultaneousAnimations).



RE: UN:C - Igor - 06.09.2019 22:54

Боевые константы:



96-copy



RE: UN:C - Igor - 25.09.2019 23:34

UN:C для чайников FAQ:

1. Что делает команда?

2. Как менять процентные параметры %.


3. Не работают способы, указанные выше?



RE: UN:C - PerryR - 01.11.2019 15:29

!?MF1 Trigger damage type:

I found this information on a Chinese Heroes forum and it is very helpful so I want to share it here.

When using the MF1 trigger it triggers for several other damage types which were probably not intended by the modder, most likely causing side effects or bugs. This can be prevented by specifying which damage type should be considered. Doing this is also helpful if only certain damage types should be modified, allowing for interesting scripts.

The following is directly copied from the forum and not my work, but it is enough to make you understand:

Then, we can detect the value of [028326c0] in the MF1 trigger, and basically determine the type of damage.
After a round of testing, the data obtained is as follows:

Damage Type Return Address:

Fireball damage 0043F960
Normal shooting 0043FA63 (4455011)‬
Range cloud damage 0043FD42
Ring damage 004400E4 (Strikes all Enemies around)
Fire Shield Damage 0044085D
Death gaze damage 00440E75
Lightning strike 0044104D
Acid attack damage 00441251
Normal melee damage 0044173E (4462398)
Dragon damage 0044178F
Arrow Tower Damage 00465964
Moat damage 00469A98
Death ripple damage? 005A106A

Calc with Hex in Deca

Example how to use it:


Full credits for this work should go to You know that you have (Google translated name)
   wakeofgods.com source


RE: UN:C - Berserker - 19.12.2019 14:53

Бесследно убрать стек с поля боя:



RE: UN:C - Igor - 11.01.2020 21:45

Способности монстров:

Бонусы к приросту монстров от городских построек

Поправка от Raistlin


Шансы срабатывания способностей




RE: UN:C - Igor - 12.01.2020 18:50

Артефакты:
** Редактирование стандартных бонусов к атаке\защите\силе магии\знаниям от артефактов
** максимальное значение + 127/-128



RE: UN:C - Igor - 14.01.2020 20:31

Изменение типа охраны сокровищниц:



RE: UN:C - Igor - 19.01.2020 22:39

Параметры героев:



RE: UN:C - Igor - 20.01.2020 05:04




RE: UN:C - Igor - 22.01.2020 21:38

   Расстановка Войск, запускается триггером !?BF;



RE: UN:C - Igor - 25.01.2020 20:20

Ресурсы:

Стартовые ресурсы игрока человека
Стартовые ресурсы игрока комп

Мифрил:



RE: UN:C - Igor - 25.01.2020 21:45

Заклинания:



RE: UN:C - Berserker - 28.01.2020 04:25

Функции:



RE: UN:C - Berserker - 07.03.2020 00:33

Все опции игры:
Code:
SHOW_INTRO_OPT:             !!UN:C6919184/4/$;
MUSIC_VOLUME_OPT:           !!UN:C6916016/4/$;
SOUND_VOLUME_OPT:           !!UN:C6916020/4/$;
LAST_MUSIC_VOLUME_OPT:      !!UN:C6916024/4/$;
LAST_SOUND_VOLUME_OPT:      !!UN:C6916028/4/$;
WALK_SPEED_OPT:             !!UN:C6916012/4/$;
COMP_WALK_SPEED_OPT:        !!UN:C6916008/4/$;
SHOW_ROUTE_OPT:             !!UN:C6916036/4/$;
MOVE_REMINDER_OPT:          !!UN:C6916040/4/$;
QUICK_COMBAT_OPT:           !!UN:C6916044/4/$;
VIDEO_SUBTITLES_OPT:        !!UN:C6916048/4/$;
TOWN_OUTLINES_OPT:          !!UN:C6916052/4/$;
ANIMATE_SPELLBOOK_OPT:      !!UN:C6916056/4/$;
WINDOW_SCROLL_SPEED_OPT:    !!UN:C6916060/4/$;
BLACKOUT_COMPUTER_OPT:      !!UN:C6916064/4/$;
FIRST_TIME_OPT:             !!UN:C6919540/4/$;
TEST_DECOMP_OPT:            !!UN:C6919544/4/$;
TEST_READ_OPT:              !!UN:C6919548/4/$;
TEST_BLIT_OPT:              !!UN:C6919552/4/$;
BINK_VIDEO_OPT:             !!UN:C6916088/4/$;
UNIQUE_SYSTEM_ID_OPT:       !!UN:C6916152/это строка/$;
NETWORK_DEF_NAME_OPT:       !!UN:C6916199/это строка/$;
AUTOSAVE_OPT:               !!UN:C6916032/4/$;
SHOW_COMBAT_GRID_OPT:       !!UN:C6916108/4/$;
SHOW_COMBAT_MOUSE_HEX_OPT:  !!UN:C6916112/4/$;
COMBAT_SHADE_LEVEL_OPT:     !!UN:C6916116/4/$;
COMBAT_ARMY_INFO_LEVEL_OPT: !!UN:C6916120/4/$; информация об отряде (0 - нет, 1 - вся статистика, 2 - только заклинания)
COMBAT_AUTO_CREATURES_OPT:  !!UN:C6916068/4/$;
COMBAT_AUTO_SPELLS_OPT:     !!UN:C6916072/4/$;
COMBAT_CATAPULT_OPT:        !!UN:C6916076/4/$;
COMBAT_BALLISTA_OPT:        !!UN:C6916080/4/$;
COMBAT_FIRST_AID_TENT_OPT:  !!UN:C6916084/4/$;
COMBAT_SPEED_OPT:           !!UN:C6916156/4/$;
MAIN_GAME_SHOW_MENU_OPT:    !!UN:C6916092/4/$;
MAIN_GAME_X_OPT:            !!UN:C6916096/4/$;
MAIN_GAME_Y_OPT:            !!UN:C6916100/4/$;
MAIN_GAME_FULL_SCREEN_OPT:  !!UN:C6916104/4/$;
APP_PATH_OPT:               !!UN:C6915604/4/$;
CD_DRIVE_OPT:               !!UN:C6916232/4/$;



RE: UN:C - Raistlin - 16.04.2020 18:47

Замена озвучки и/или боевой анимации существ:



RE: UN:C - Raistlin - 23.04.2020 23:45

Работа с экраном города:

При замене анимации нужно также записать в память новое количество кадров:
Перемещение зданий:
Приоритет отображения:
P.S. Спасибо Феанору за адреса и объяснение!


RE: UN:C - Raistlin - 03.05.2020 03:10

Замена ресурса, даваемого хранилищем:
Структура:

Значения в памяти:



RE: UN:C - SergOz - 13.05.2020 15:50

Получение координат закопанного Грааля, при посещении обелиска:



RE: UN:C - igrik - 15.05.2020 23:25

Города: постройки и их цены:

Данные скрипты походу нужно и в Fun Lib добавить.


RE: UN:C - SergOz - 20.07.2020 01:56

УЗНАТЬ РАНДОМНОСТЬ КАРТЫ:



RE: UN:C - Bes - 19.09.2020 22:25

Преобразователь скелетов



RE: UN:C - igrik - 05.11.2020 21:45

(12.11.2017 12:49)igrik Wrote:

P.S. это секция SOD (а значит данная проблема есть на всех версиях героев 3)


RE: UN:C - Berserker - 11.12.2020 17:52

Установка прозрачности анимациям заклинаний:



RE: UN:C - Raistlin - 17.12.2020 02:45

Спец.абилки монстров:


Большая часть адресов взята из темы инженерного анализа на df2, и результат моей работы заключается в том, что значения теперь можно выставлять напрямую через ERM. Однако кое-что (например, регенерацию или возрождение фениксов) я действительно раскопал сам.

*Атака с возвратом в оригинальном коде
Code:
47832B                     cmp     eax, 48h                        ; Compare Two Operands
47832E                     jz      short loc_00478335              ; Jump if Zero (ZF=1)
478330                     cmp     eax, 49h                        ; Compare Two Operands
478333                     jnz     short loc_00478365              ; Jump if Not Zero (ZF=0)



RE: UN:C - Raistlin - 04.01.2021 03:50

Спец.строения в городах:

Для тех, кому интересно почему (Click to View)

P.S. ©Я - это конечно же шутка, и каждая буква этого сообщения является общественным достоянием 118


RE: UN:C - Raistlin - 10.01.2021 22:18

Золотишко:

Тут дальше еще что-то идет, но я не знаю, для чего оно нужно, и, что с этим делать (Click to View)


Igor Wrote:

igrik Wrote:



RE: UN:C - Raistlin - 12.01.2021 18:44

Арена:

Сидели мы как-то с одним разработчиком, ковыряли его проект и потихоньку воровали контент из хоты. В какой-то момент решили добавить Колизей магов, я полез изучать код и нашел целую кучу интересных адресов, которые решил опубликовать здесь. Потом еще что-нибудь расковыряю и назову сообщение "Объекты карты", ну а пока пусть будет "Арена". Мы, кстати, еще пушку сперли, так что далеко не уходите - скоро где-нибудь тут на форуме я опубликую код на добавление боевых машин Spiteful
Реализация Колизея магов в моем плагине (Click to View)

P.S. Мы - значит я96


RE: UN:C - Raistlin - 15.02.2021 15:46

Работа с препятствиями:




RE: UN:C - Raistlin - 21.02.2021 20:32

Получение случайного урона от стека (как при атаке):
Получение минимального и максимального урона от стека:



RE: UN:C - Archer30 - 12.04.2021 10:53

Note: This post is being updated constantly.

Commanders:
Commander's spells on the Battlefield = Commander's Magic Power Skill Level:
(instead of Magic Power Skill + 1 / only visual)
Allow commanders to learn 6 primary skills:

Allow commanders to learn Master basic skills before getting 4 Expert basic skills:

Spells:
Resurection spell keeps revived creatures at the end of battle without Advanced Earth Magic.

Town Portal spell allows to teleport to any town without Advanced Earth Magic.

Dwellings:
Enable guards for lower level dwellings (type 17)
(0 - minmimun level of creature's dwellings that are guarded)

Level 1 creature no longer free in dwellings

Miscs:
All heroes recruited from the tavern have full toops:
(instead of having only 1 level 1 creature for the third hero and after in a week)

Disable AI using Castle Gate (Inferno Building):



RE: UN:C - Berserker - 18.08.2021 14:25

Изменение колдовской силы героев в бою:




RE: UN:C - Berserker - 10.01.2022 15:21

Патч на восстановление работы команд FU:D/IP на карте приключений с HD модом для Эры 3.9.2 и ранее



RE: UN:C - daemon_n - 18.04.2022 14:02

Дать/Забрать любое заклинание герою от любого артефакта




RE: UN:C - daemon_n - 30.05.2022 07:05

Чтение текста из txt таблиц
Reading text from txt tables



;как оказалось, я лишь сделал аналог вот этого Dash1



RE: ERA II - daemon_n - 29.07.2022 01:56

(07.12.2017 21:52)igrik Wrote:  Командиры / Commanders:

Изменяем/получаем значения бонусов от навыков Командира:
Базовая таблица (Click to View)

Изменяем/получаем базовые параметры Командиров

Это не массив, но внимательные уже заметили, что со смещением в 10 байт мы можем работать со значениями с помощью цикла


RE: UN:C - daemon_n - 23.08.2022 22:11

(15.05.2020 23:25)igrik Wrote:  Города: постройки и их цены:
Возможность получить и Установить стоимость зданий





RE: UN:C - daemon_n - 04.11.2022 18:33

Текст: Работаем с геройскими txt:

Имеем геройскую строку в стандарте языка "C", которую можно извлечь из игры:
Code:
"%s currently has %d spell points out of a maximum of %d"
Но нам надо подставить свои значения, не используя посимвольный парсинг строки))

вместо буфера можно использовать адрес любой статической текстовой переменной или же геройский буфер по адресу 6911016
например:
Выдаст:
"Berserker currently has 0 spell points out of a maximum of 0"


Необязательно подставлять все значения, но их тип обязательно должен совпадать -- %s - текст, %d - число (если поставить текст, то выдаст его адрес)
также необязательно использовать геройский буфер -- способ с переменной со статическим адресом:
Выдаст:
"daemon_n currently has 666 spell points out of a maximum of 666"


RE: UN:C - daemon_n - 02.01.2023 23:25

(18.08.2021 14:25)Berserker Wrote:  Изменение колдовской силы героев в бою:


Image: image.png


RE: UN:C - SergOz - 02.05.2023 11:46

ОТКРЫТИЕ ОКНА ГЕРОЯ:




RE: UN:C - daemon_n - 25.06.2023 08:59

Текст: Считаем количество строк нашего текста в определённой ширине:
Text: Count the number of lines of our text in a certain width:


Вызываем внутриигровую ф-цию, которая определяет, сколько строк займёт указанный текст в указанной ширине и с указанным шрифтом.
Последним аргументом передаётся указатель на вектор, в который ф-ция и сохраняет массив строк.
Очень важно отправить чистые 16 байтов (определяется как чистый вектор строк), поэтому чистим первые 16 байтов z-2 переменной, адрес которой и передаём в главную ф-цию. Хотя ранее я чистил все 512, по привычке.
После выполнения ф-ции получаем вектор из строк - не думаю, что много кому нужен, но для получения кол-ва строк вычитаем адрес первого элемента из адреса конца и делим на 16 (размер объекта класса строки).

We call an in-game function that determines how many lines the specified text will take up in the specified width and font.
The last argument is a pointer to a vector, where this function saves an array of strings.
It's very important to send clean 16 bytes (defined as a clean vector of strings), so we clean the first 16 bytes of the z-2 variable, the address of which is passed to the main f-function. Although I used to clear all 512, out of habit.
After f-function execution we get a vector of strings - I don't think anyone needs it much, but to get the number of strings we subtract the first address from the end address and divide by 16 (the size of the string class object).




RE: UN:C - daemon_n - 23.08.2023 08:51

Карта Приключений: Меняем внешний вид монстров:
Adventure Map: Changing Monster Map View




RE: UN:C - SergOz - 06.03.2024 11:07

Установить конкретному герою персональный обзор:
@by daemon_n


Нужно учесть, что при нулевом обзоре герой не сможет исследовать новые территории, но игрок клавишами со стрелками всё же может двигать этого героя "во тьму" )))


RE: UN:C - FallenAngel - 26.03.2024 22:59

Изменение кол-ва информации в окне гильдии воров
Из недр df2 (не в темах из шапки), feanor постил давным-давно.
Пример скрипта (Click to View)



RE: UN:C - daemon_n - 31.03.2024 07:57

Карта Приключений: Актуализируем данные для подсказок для квестов/заданий:
Adventure Map: Update tips/hints/pictures for quests/seer huts/guards