Current time: 01.06.2020, 07:15 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
UN:C
Author Message
igrik Offline
Administrators

Posts: 2126
Post: #1

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

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

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


Скачать HoMM3 ERA 2.8.3 (Repack: Rus & HD)
14.01.2017 00:22
Visit this user's website Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2126
Post: #2

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




И сразу же несколько примеров:




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



Code:
; параметры любого элемента диалога
; текст, картинки, кнопки и т.д.
+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-да;
+68  (2 байта) закрывает ли диалог: 0-нет, 1-да;


Скачать HoMM3 ERA 2.8.3 (Repack: Rus & HD)
14.01.2017 00:41
Visit this user's website Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2126
Post: #3

Командиры:

Code:
#define o_Npc ((_Npc_*)0x28620C0)         // получение структуры командира

// Структура командира 0x128h (296)
NOALIGN struct _Npc_
{
_dword_ on;               // 0x00     +0    Доступность
_dword_ alive;            // 0x04     +4    Жив_или_мёртв  
_dword_ id;               // 0x08     +8    Номер_героя_хозяина (ну и номер командира)
_dword_ type;             // 0x0C     +12   Тип_командира
_dword_ type_Hero;        // 0x10     +16   Тип_героя
_dword_ LastExpaInBattle; // 0x14     +20   Опыт в прошлых битвах
_dword_ CustomPrimary;    // 0x18     +24   Если вы установить 1 (вкл), первичные навыки не будут изменяться с продвижением командира по уровням
                           //                Если установить 0, то здоровье и урон  будут автоматически прибавляться вместе с уровнем командира (из ERM Help = CO:P)
_dword_ attack;           // 0x1C     +28   Атака
_dword_ defence;          // 0x20     +32   Защита
_dword_ hit_points;       // 0x24     +36   Здоровье
_dword_ damage;           // 0x28     +40   Урон
_dword_ spell_power;      // 0x2C     +44   Сила_магии
_dword_ speed;            // 0x30     +48   Скорость
_dword_ resistance;       // 0x34     +52   Сопротивление

_dword_ lvl_attack;       // 0x38     +56   Уровень_Атаки
_dword_ lvl_defence;      // 0x3C     +60   Уровень_Защиты
_dword_ lvl_hit_points;   // 0x40     +64   Уровень_Здоровья
_dword_ lvl_damage;       // 0x44     +68   Уровень_Урона
_dword_ lvl_spell_power;  // 0x48     +72   Уровень_Сила_магии
_dword_ lvl_speed;        // 0x4C     +76   Уровень_Скорости
_dword_ lvl_resistance;   // 0x50     +80   Уровень_Сопротивления

_word_ arts[10][8];       // 0x54     +84   Номер_артефакта; Кол-во проведённых с ним битв
_char_ name[32];          // 0xF4     +244  Имя
_dword_ old_expa;         // 0x114    +276  Старый_опыт_героя
_dword_ now_expa;         // 0x118    +280  Текущий_опыт
_dword_ now_level;        // 0x11C    +284  Текущий_уровень (при отображении добавляем +1)
_dword_ specBon[2];       // 0x120    +288  Особые_бонусы(сумма_битов); Запрещенные_бонусы(сумма_битов)
};

// функция получения адреса структуры командира
inline _Npc_*  GetNpc(_int_ hero_id) {return ((_Npc_ *)(0x28620C0 + 296 * hero_id));}

// функция получения строк из командирского текстовика "znpc00.txt"
inline char* Get_ITxt(int StrNum, int ItemNum) {return CALL_3 (char*, __cdecl, 0x77710B, StrNum, ItemNum, 0x2860724);}
// функция получения строк из командирского текстовика "znpc01.txt" Имена и биографии
inline char* Get_ITxtBio(int StrNum, int ItemNum) {return CALL_3 (char*, __cdecl, 0x77710B, StrNum, ItemNum, 0x286072C);}
// функция получения силы первичного командирского навыка
inline int Get_NpcSkillPower(_Npc_* npc, int skill_id) {return CALL_2 (int, __thiscall, 0x769460, npc, skill_id);}










Герои:







Скачать HoMM3 ERA 2.8.3 (Repack: Rus & HD)
15.01.2017 17:02
Visit this user's website Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2126
Post: #4

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













Скачать HoMM3 ERA 2.8.3 (Repack: Rus & HD)
16.01.2017 14:48
Visit this user's website Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2126
Post: #5

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







Скачать HoMM3 ERA 2.8.3 (Repack: Rus & HD)
16.01.2017 20:21
Visit this user's website Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2126
Post: #6

Города:






Скачать HoMM3 ERA 2.8.3 (Repack: Rus & HD)
16.01.2017 20:30
Visit this user's website Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2126
Post: #7

Битва: стеки:

ФУНКЦИИ:



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


Скачать HoMM3 ERA 2.8.3 (Repack: Rus & HD)
25.01.2017 13:38
Visit this user's website Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2126
Post: #8

Артефакты:


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


Скачать HoMM3 ERA 2.8.3 (Repack: Rus & HD)
26.01.2017 13:12
Visit this user's website Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2126
Post: #9

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



Скачать: ERM_Hooker


Скачать HoMM3 ERA 2.8.3 (Repack: Rus & HD)
27.10.2017 11:12
Visit this user's website Find all posts by this user Quote this message in a reply
igrik Offline
Administrators

Posts: 2126
Post: #10

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


Колдовство монстром:

СПРАВКА (Click to View)


Скачать HoMM3 ERA 2.8.3 (Repack: Rus & HD)
08.07.2018 21:50
Visit this user's website Find all posts by this user Quote this message in a reply
Algor Away
Administrators

Posts: 3695
Post: #11

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



BattleHeroes Rus/Eng | ERA scripts (+ReMagic) Rus/Eng
19.02.2019 17:16
Visit this user's website Find all posts by this user Quote this message in a reply
Chaomen Offline

Posts: 55
Post: #12

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

Позволяет сразу обращаться к номерам стеков.
Присваиваете нужным SimulAnim# 1 и вызываете функцию (SimultaneousAnimations).
(This post was last modified: 18.08.2019 18:22 by Chaomen.)
18.08.2019 03:53
Visit this user's website Find all posts by this user Quote this message in a reply
Igor Offline

Posts: 139
Post: #13

Боевые константы:
(This post was last modified: 26.01.2020 02:53 by Igor.)
06.09.2019 22:54
Find all posts by this user Quote this message in a reply
Igor Offline

Posts: 139
Post: #14

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

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

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


3. Не работают способы, указанные выше?
(This post was last modified: 26.01.2020 03:10 by Igor.)
25.09.2019 23:34
Find all posts by this user Quote this message in a reply
PerryR Offline

Posts: 217
Post: #15

!?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
(This post was last modified: 01.11.2019 15:32 by PerryR.)
01.11.2019 15:29
Find all posts by this user Quote this message in a reply
« Next Oldest | Next Newest »
Post Reply 


Forum Jump:

Powered by MyBB Copyright © 2002-2020 MyBB Group