Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Тонкости ЕРМ, использование UN:C
DF2 :: ФОРУМЫ > Игровые форумы > Heroes of Might & Magic III > Моды > Скрипты
Страницы: 1, 2, 3, 4
Barin
1) Если для wog может кто написать похожий скрипт, напишите пожалуйста.

2) AVWATTAK.def - здесь монстры на карте встают в позу, когда их атакуешь. Некоторым существам я установил прозрачный фон, но не добился чего хотел - мне надо при атаке монстра на карте, чтобы битва начиналась мгновенно, чтобы не было этой 1-й или 2-х секунд ожидания. Может кто знает какой файл нужно удалить или править?
feanor
Это не тема для вопросов.
Barin
Цитата(igrik @ 13 Oct 2015, 01:17) *
отвечу и тут, мож кому еще пригодится
Код
сместить кнопки далеко за пределы экрана: для бин файла
; кнопка "Синглплеер"
63E6B0 FFFD
; кнопка "Мультиплеер"
63E6B8 FFFD
; кнопка "Обучение"
63E6C8 FFFD
; кнопка "Во имя богов"
456C6C AAAA
; кнопка "Клинок Армагедона"
456CE6 AAAA
; кнопка "Возраждение Эратии"
63BBF0 AAAA
; кнопка "Выбрать"
63BBF8 AAAA


Ещё мне нужно в окне выбора кампаний заблокировать некоторые окна кампаний. Как например сейчас в Hota, доступно 2 кампании. Я тоже хочу поместить в свой мод 2 кампании, остальные окна пока закрыть. Нужно так, чтобы было как в оригинале игры - проходишь например 2 кампании, открывается окно следующей.

Может кто помочь?
igrik
Окна найма существ/боевых машин героем
Код
!!OW:A-1/?y1;
!!FU8980040:Py1/132/10/133/11/134/12/135/13/1; // нанять всех нейтральных драконов в кол-ве 10...13 шт.
!!FU8980040:Py1/145/1/146/1/147/1/148/1/2;     // нанять все боевые машины
!?FU8980040;
; x1    - указать номер героя
; x2/x3 - номер 1 существа/кол-во   (обязательно)
; x4/x5 - номер 2 существа/кол-во   (либо -1/0)
; x6/x7 - номер 3 существа/кол-во   (либо -1/0)
; x8/x9 - номер 4 существа/кол-во   (либо -1/0)
; x10   - для существ (1), для боевых машин (2)
!!OW:A-1/?y1; !!FU&y1<0:E;
!!SN:E6386834/1/188; !!VRy17:Sv1;
!!SN:E7411341/1/x1;  !!VRy1:Sv1; !!VRy1&x10=1:+145;
!!VRy10:S10*4 +8943204; // адрес переменной v10...v13
!!VRy20:Sy10; !!VRy21:Sy10 +4; !!VRy22:Sy10 +8; !!VRy23:Sy10 +12;
!!VRv10:Sx3;  !!VRv11:Sx5;     !!VRv12:Sx7;     !!VRv13:Sx9;
!!UN:C6918832/4/?y8; !!SN:E5298096/2/y8/0;
!!SN&x10=1:E5576528/2/y17/y1/0/x2/y20/x4/y21/x6/y22/x8/y23;
!!SN&x10=2:E5576800/2/y17/y1/x2/y20/x4/y21/x6/y22/x8/y23;
!!VRy11:Sv1; !!UN:C6919504/4/?y1; !!SN:E4917104/2/y1/y11;
igrik
Теперь можно легко и без шаманства сделать артефакт кастер /только в начале боя/ (наподобие Альянса Ангелов).
Вызывается функция FU79001 по одному разу для каждой стороны
feanor, огромное спасибо за пример создания dll с хуком.
Код
!?FU79001;  // триггер каста артефактов
!!FU79002:P163/27 P163/28; // артефакт №163 кастует щит (27) и воздушный щит (28) в начале боя
!?FU79002;
; x1 - номер арта
; x2 - номер закла
!!BG:Q?y1;                               // получить активную сторону
!!BA:Hy1/?y2;                            // получить номер героя активной стороны
!!UN:C6919200/4/?y3;                     // получить combat manager
!!SN:E5915616/2/y3/x2/3/y1/1/2;          // проверка на возможность каста активной стороной (например нет ли у противника "плаща отречения")
!!FU&v1<>1:E;                            // выход, если нельзя кастовать
!!SN&y2>-1:E7411341/1/y2;                // получить структуру героя
!!SN&y2>-1:E5084256/2/v1/x1;             // проверить арт у героя
!!SN&v1=1:E5898560/2/y3/x2/-1/2/-1/3/50; // артефакт (2) кастует закл(x2) на эксп(3) на 50 раундов массово(-1)

Обязательно нужен ArtCast.era в папке "EraPlugins"
Код
#include <windows.h>
#include <stdio.h>
#include "..\..\include\era.h"
#include "..\..\include\patcher_x86_commented.hpp"


Patcher * globalPatcher;
PatcherInstance *patcher;


int __stdcall hook_464FBA(LoHook* h, HookContext* c)
{
FireErmEvent(79001);
return EXEC_DEFAULT;
}


BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    if (ul_reason_for_call == DLL_PROCESS_ATTACH)
    {
        globalPatcher = GetPatcher();
        patcher =  globalPatcher->CreateInstance("ArtCast");

        ConnectEra();

        patcher->WriteLoHook(0x464FBA, (void*)hook_464FBA);

    }
    return TRUE;
}
Barin
код feanora

Команды очень полезные, но заметил маленький недостаток со звуком, его можно обойти?

1) Озвучка: в 1-м раунде код не срабатывает.

2) Сначала написал, потом решил проблему со снарядом. Для смены снаряда обязательно надо !?BG0; !!!

У меня так:
!?BG0;
!!BG:N?v2200; что был за стек?
!!BMv2200:T?v2201; кто из монстров?

!!FU3059&v2201=152:P;

!?FU3059;
!!BMv2200:G-8/?y1/d;
!!SN:E5622064/2/^my.wav^; 3
!!BMv2200:G-8/v1/d;
!!UN:Cy1/4/?y3;
!!VRy3:+4;
!!UN:Cy3/4/?y4;
!!SN:Ey4/2/y1;

-8 когда монстр получает урон. Ситуация может быть такой, когда стрелок с любой стороны стреляет в 1-м раунде, звук атакуемого монстра не меняется, только во 2-м и последующих раундах.
igrik
Телекинезерам посвещается
посещение героем объекта удалённо
Код
!?FU8680055;  
; х1     - номер героя
; x2..x4 - координаты объекта на карте
!!UN:C6918840/4/?y10;               // int pAdvManager
!!SN:E7411341/1/x1; !!VRy2:Sv1;     // получить структуру героя
!!UN:C10784129/1/0 C10784128/1/x2;  // записать все данные побайтно в адрес y1
!!UN:C10784130/1/x3 C10784131/1/x4; // записать все данные побайтно в адрес y1
!!SN:E7410371/1/y1;                 // получить адрес структуры клетки
!!VRy3:Sv1;                         // записать адрес структуры в y3
!!SN:E4882784/2/y10/y2/y3/y1;       // посещение героем объекта


А эта без указания номера героя.
Код
!?FU8680050;
; x2..x4 - координаты объекта на карте
!!UN:C6918840/4/?y10;               // int pAdvManager
!!UN:C10784129/1/0 C10784128/1/x2;  // записать все данные побайтно в адрес y1
!!UN:C10784130/1/x3 C10784131/1/x4; // записать все данные побайтно в адрес y1
!!SN:E7410371/1/y1;                 // получить адрес структуры клетки
!!VRy3:Sv1;                         // записать адрес структуры в y3
!!SN:E4892432/2/y10/y3/y1;          // посещение объекта


Код
!?CM5;
!!CM:F?y2;
!!FU&y2<>4:E;
!!CM:R0;
!!OW:A-1/?x1;
!!FU&x1<0:E;
!!CM:P?v2/?v3/?v4;

; © gamecreator
; определение желтой клетки у объекта
; v2/v3/v4 - coords
!!UN:C6919480/4/?y1; 0x699538
!!VRy1:+130112; 0x1FC40
!!UN:Cy1/4/?y2; y2 = map tiles
!!VRy1:+4;
!!UN:Cy1/4/?y3; y3 = map size
!!VRy5:Sv4 *y3 +v3 *y3 +v2 *38 +y2; this object, 0x26 is tile size
!!VRv2:C0/0/0; reuse vars
!!SN:E4239120/2/?v2/y5/0/0; thiscall 0x40AF10 (map tile, screenX?, screenY?) for struct{0,0,0}
; v1 = yellow tile
!!VRv1:-y2 :38; object index
!!VRv2:Sv1 %y3; x
!!VRv3:Sv1 :y3 %y3; y
!!VRv4:Sv1 :y3 :y3; l

!!VRx2:Sv2;  !!VRx3:Sv3;   !!VRx4:Sv4;

; © igrik
; удаленный вход в объект
; х1     - номер героя
; x2..x4 - координаты объекта на карте
!!UN:C6918840/4/?y10;               // int pAdvManager
!!SN:E7411341/1/x1; !!VRy2:Sv1;     // получить структуру героя
!!UN:C10784129/1/0 C10784128/1/x2;  // записать все данные побайтно в адрес y1
!!UN:C10784130/1/x3 C10784131/1/x4; // записать все данные побайтно в адрес y1
!!SN:E7410371/1/y1;                 // получить адрес структуры клетки
!!SN:E4882784/2/y10/y2/v1/y1;       // Enter2ObjectMain
** end
igrik
Копилка к запретам бонуса граалей.
Код
** Отмена Бонуса грааля Башни
; для верхнего уровеня карты
!!UN:C5005757/4/6542180;  MapSizeX        (оригинал = 6783944)
!!UN:C5005769/4/6542180;  MapSizeY        (оригинал = 6783948)
; для нижнего уровеня карты
!!UN:C5005822/4/6542180; MapSizeX         (оригинал = 6783944)
!!UN:C5005834/4/6542180; MapSizeY         (оригинал = 6783948)
; при постройке здания грааля
!!UN:C6026460/1/99; номер города          (оригинал = 2)
!!UN:C6026512/1/99; номер здания грааля   (оригинал 26)
; окрытие карты в первый игровой день
!!UN:C5012022/1/99; номер города          (оригинал = 2)

; бонус грааля Инферно
!!UN:C5015000/1/3; указать номер города (Инферно)
!!UN:C5015059/4/42; прирост кого /тип монстра от грааля (Бесы)/
!!UN:C5015066/4/43; прирост кого /тип монстра от грааля (Черти)

; бонус грааля Темницы
!!UN:C4602282/1/12; + к колдовской силе

; бонус грааля Цитадели
!!UN:C4602328/1/20; + к защите

; бонус грааля Крепости
!!UN:C4602467/1/10; + к атаке и защите

; бонус грааля Сопряжение © feanor
!!UN:C6022390/1/9; указать номер города
!!UN:C6088735/1/9;
!!UN:C6088214/1/9;
!!UN:C6124606/1/9;
Bes
а как убрать тогда бонус от Сопряжения?
выставить "0" ?
igrik
Нет, номер 0 установит все заклинания в Замке. Ставь любое больше 9
feanor
Стоимость найма героев
!!UN:C6783308/4/2500;
igrik
Код
; где 3 - макс кол-во героев на карте
!!UN:C6129162/1/3;   для найма в таверне
!!UN:C4864993/1/3;   при посещении тюрьмы
!!UN:C6116975/1/3;   при выводе из города
!!UN:C4395921/1/3;   для AI (возможно покупка в городе)


Код
!!UN:C6919200/4/?y1;
!!VRy2:Sx1 *1352 +21708 +y1; // x1 = номер стека
!!SN:E4479536/2/y2/y3/1;     // заставить переместиться стек (на клетку y3) (если позиция занята или не хватает длины хода, то не стек не двинется)
!!SN:E4482112/2/y2/1;        // поворот стека в противоположную сторону
hippocamus
igrik
всё это очень здорово! Жаль, что работает лишь в WoG/Era.
igrik
Кстати да. Решение проблемы WoG'овских недоописаний монстров.

Код
!!UN:C6243434/4/6687924;
!!UN:C6244485/4/6687924;
!!UN:C6241855/4/6687924;
feanor
Проиграть анимацию стека.

Код
!!UN:C6919200/4/?y10;
!!VRy20:Sx1 *1352 +21708 +y1; // x1 = номер стека
!!SN:E4482656/2/y20/13/-1/0; //13 - атака вниз
!!SN:E4482656/2/y20/2/1/0; //восстанавливаем исходное положение (стойка)
igrik
Одновременно проиграть анимацию нескольких стеков.

Код
!!UN:C6919200/4/?y10;  combatmanager

!!VRy2:S0 *1352 +21708 +y10; // стек 1
!!UN:Cy2/1/1;   1 = играть ли анимацию на стеке (0 = не играть)
!!VRy2:+2;
!!UN:Cy2/1/5;   5 = номер анимации стека

!!VRy2:S1 *1352 +21708 +y10; // стек 2
!!UN:Cy2/1/1;
!!VRy2:+2;
!!UN:Cy2/1/3;   3 = номер анимации стека

!!VRy2:S21 *1352 +21708 +y10; // стек 21
!!UN:Cy2/1/1;
!!VRy2:+2;
!!UN:Cy2/1/12;  12 = номер анимации стека

!!SN:E4621680/2/y10/-1/-1;  00468570_DoHitAnimation
igrik
Отключение бесплатной дипломатии (бесплатно -> за золото)
Код
!!UN:C4289079/4/3;    [при ПКМ на монстре   (оригинал = 2) ]
!!UN:C4879709/1/-21;  [при атаке на монстра (оригинал =127)] © MoP


И выложу, наверное парочку давно наваяных мелочей.
Запрет на появление улучшенного стека при нападении на нейтралов
Код
!!UN:C4899920/1/8;    [оригинал =1]


; получить разрешение игры (для HD мода)
Код
!!UN:C4199496/2/?y1; ширина
!!UN:C4199503/2/?y2; высота


; проверить включен ли вообще HD
Код
!!SN:L^HD_WOG.dll^/?y1;     (=0, значит не включен)


; автосохранение перед битвой (теряются MP и возможна проходимость)
Код
!?BA52&1000;
!!VRz1:S^BATTLE!^;
!!SN:L^Angel.dll^/?y1 Ay1/^SaveGame^/?y2 Ey2/0/z1/1/0/0/1;


; Оковы Войны (в бою с нейтралами можно убежать с поля боя)
Код
!?BG0;                          [перед действием в битве]
!!BG:A?y1;                         [узнать тип действия]
!!BA:H1/?y2;                       [узнать героя защитника]
!!UN&y1=4/y2=-2:C4689325/1/2;      [подменить номер арта на грааль (а он в рюкзаке)]
!?BA53;                         [после битвы]
!!UNC4689325/1/125;                [вернуть номер арта]


; открытие окон героев в битве по ПКМ на дефе героев
Код
!?CM4;
!!CM:A?y1/?y2 F?y3;
!!UN:C4199496/2/?y11 C4199503/2/?y12;
!!VRy13:Sy11 -800 *-1 :2 +58;
!!VRy14:Sy11 -800 *-1 :2 +739;
!!VRy15:Sy12 -600 *-1 :2 +127;
!!FU&y3<>512|y2>y15:E;
!!BA:H0/?y4 H1/?y5;
!!SN&y1<y13:E5118576/1/y4/1;
!!SN&y1>y14/y5>-1:E5118576/1/y5/1;
!!CM&y1>y14/y5>-1|y1<y13:R0;


; Быстрая тактичеческая расстановка (а-ля HD)
Код
!?CM4;
!!SN:L^HD_WOG.dll^/?y1 L^HD_MCR.dll^/?y2;
!!BU:T?y3;
!!FU|y1<>0/y2<>0/y3<>1:E;
!!CM:F?y2 I?y3 D?y4;
!!FU|y3>10/y2<>0/y4<0/y4>186:E;
!!BU:Ey4/?y5;
!!FU&y5=-1:E;
!!BG:N?y6 Q?y7;
!!BMy5:I?y8 T?y9;
!!FU&y9>144/y9<150:E;
!!FU&y7<>y8|y6=y5:E;
!!VRy5&y7=1:-21;
!!CM:R0;
!!UN:C6919200/4/?y1;
!!SN:E4607760/2/y1/y8/y5;
** end


; открыть окно встречи героев в городе по ЛКМ + Alt
Код
!?CM1;                              [клик в городе]
!!CM:F?y6 S?y7 I?y5;;                   [получаем парамерты клика]
!!FU|y7<>12/y6<>32:E;                   [нажата ЛКМ + Alt]
!!if|y5=123/y5=125:;                    [место клика]
   !!CA-1:H0/?y1 H1/?y2;                [получить номера героев]
   !!if&y1>-1/y2>-1:;                   [только если есть оба героя]
     !!UN:C6918840/4/?y10;              [получить AdvManager]
     !!SN:E7411341/1/y1;  !!VRy11:Sv1;  [структура первого героя]
     !!SN:E7411341/1/y2;  !!VRy12:Sv1;  [структура второго героя]
     !!SN:E4859312/3/y11/y12;           [грамотность между героями]
     !!SN:E4893280/2/y10/y11/y12;       [открыть окно встречи]
   !!en:;
!!en:;


Acta est fabula!
Richter
Помогите получить значение опыта необходимое для достижения следующего уровня, для дальнейшей работы с числом.
feanor
Проще всего выписать все числа в скрипт и сравнивать. Величины опыта для уровней с 13ого игрой нигде не хранятся, а каждый раз вычисляются на лету.
igrik
Зачем, ведь в воге это уже есть
Код
!!VRy2:S10; // искомый уровень
!!VRy3:Sy2*4 +8002732;
!!UN:Cy3/4/?y4;
!!IF:M^Следующий уровень: %Y4^;
Richter
Цитата(igrik @ 29 Jan 2019, 19:52) *
Зачем, ведь в воге это уже есть

Не нашёл, это для специальной шкалы опыта. Спасибо Igrik, спасаете в очередной раз.

Цитата(feanor @ 29 Jan 2019, 19:35) *
Проще всего выписать все числа в скрипт и сравнивать. Величины опыта для уровней с 13ого игрой нигде не хранятся, а каждый раз вычисляются на лету.

Так и хотел, но был уверен что можно проще. А то уже 7634 строки только скрипты.
AlexSpl
2igrik:

Цитата
; открыть окно встречи героев в городе по ЛКМ + Alt


Сделал плагин для HD мода, который открывает окно встречи по нажатию на клавишу "E", но после закрытия диалога появляется забагованная карта приключений.

Код плагина

Ваш код после закрытия диалога возвращает в город?
Raistlin
Спец.строения в городах:

Код
; При изменении следующих значений не забудьте поменять их и в BldgSpec.txt

; Установка значения атаки в Храме Валгаллы ©Я
!#UN:C6021441/1/4; Подмена инкремента сложением
!#UN:C6021442/1/1; Бонус атаки от Храма Валгаллы

; Установка значения защиты в Клетке Богов Войны ©Я
!#UN:C6021666/1/4; Подмена инкремента сложением
!#UN:C6021667/1/1; Бонус защиты от Клетки Богов Войны


; Город, в котором работает Храм Валгаллы ©Я
!#UN:C6021227/1/6;

; Город, в котором работает Клетка Богов Войны. Адрес найден Феанором по моей просьбе, так как раньше я не мог сделать это самостоятельно
!#UN:C6021452/1/7;    

; Город, в котором работает Орден Огня ©Я
!#UN:C6020842/1/3;

; Город, в котором работает Стена Знаний ©Я
!#UN:C6020661/1/2;

; Навыки, даваемые спец. строениями ©Я
; 118 - атака
; 119 - защита
; 120 - сила
; 121 - знание

!#UN:C6021437/1/118; Храм Валгаллы
!#UN:C6021445/1/118;
!#UN:C6021662/1/119; Клетка Богов Войны
!#UN:C6021670/1/119;
!#UN:C6020951/1/120; Орден Огня
!#UN:C6020943/1/120;
!#UN:C6020770/1/121; Стена Знаний
!#UN:C6020762/1/121;

; Бонус Силы от Серных Туч ©Я
!#UN:C4602236/1/2;
; Бонус Силы от Грааля Темницы ©Я
!#UN:C4602282/1/12;
; Бонус очков маны от Грааля Башни ©Я
!#UN:C4602189/2/150;

; Отключить торговцев артефактами ©Я
!#UN:C6111473/2/37008; Башня
!#UN:C6111478/2/37008; Темница
!#UN:C6111483/2/37008; Сопряжение

; Вот с поисков этих адресов было реально много мучений, но я все-таки их нашел )
; Это у нас Университет Магии в Сопряжении
!#UN:C6110754/1/2; Номер города, в котором он работает равен 6 + значение (в оригинале 2, так что 8)
!#UN:C6110754/1/1; Если поставить 1, Университет переедет в Крепость и будет работать по нажатию на Знаки Страха
!#UN:C6110754/1/-1;Если поставить -1, Университет переедет в Темницу и будет работать по нажатию на Вихрь маны
!#UN:C6110754/1/5; Чтобы отключить Университет, можно поставить несуществующий индекс города (6+5=11). Подсказка при этом останется
; Кстати, навыки, которые там даются, тоже можно редактировать. Соответствующие адреса нашел feanor: https://forum.df2.ru/index.php?s=&showtopic=6803&view=findpost&p=429783

; Альтернативный способ отключить Университет Магии. В первом случае убирается проверка на Сопряжение, сейчас - последующее действие
!#UN:C6110755/2/37008;
!#UN:C6110757/4/2425393296;

; Отключить Университет Магии для ИИ. Сердечное спасибо Феанору за указание на необходимость данного действия, а также за адрес функции
!#UN:C5398076/1/144;
!#UN:C5398077/4/2425393296;

; Отключить Преобразователь Скелетов
!#UN:C6111184/1/144;
!#UN:C6111185/4/2425393296;

; Отключить Гильдию наемников
!#UN:C6110986/1/144;
!#UN:C6110987/4/2425393296;

; Отключить Двор Баллист
!#UN:C6111157/1/144;
!#UN:C6111158/4/2425393296;

; Отключить Врата Замка
!#UN:C6111142/1/144;
!#UN:C6111143/4/2425393296;

; Отключить открытие Таверны при нажатии на Братство Меча
!#UN:C6111068/1/144;
!#UN:C6111069/4/2425393296;

; Если Университет - это у нас Король Боли, то Конюшни - безусловно Королева :)
; Найти адрес было легко, но додуматься "занопить" проверку - совсем наоборот... Там идет не обычная проверка, а "test al, al", и я пытался переделать это все так, чтобы работало с cmp...
; Даже с переходами игрался, но до самого очевидного решения додумался только спустя несколько перерывов :)
!#UN:C6020509/2/37008; Отключение Конюшен

; Отключить Маяк (подсмотрено в исходниках TSW)
!#UN:C5131612/1/235;


; Отключение функций спецпостроек Крепости ©feanor
Код
!?PI;
!!UN:C6021452/1/99;         Клетка Богов Войны (вместо седьмого города проверяем девяносто девятый)
!!UN:C4602370/1/0;          Обнуляем бонус атаки от Обелиска Крови
!!UN:C4602421/1/0;          Обнуляем бонус защиты от Знаков Страха


; Отключение функций спецпостроек Темницы ©feanor
Код
!?PI;
!!UN:C6130651/1/18;    Отключение Портала Вызова
!!UN:C6130708/1/52;
!!UN:C5016380/1/86;
!!UN:C5362353/1/120;
!!UN:C6055202/1/144;

!!UN:C6020334/1/255;   Отключение Водоворота Маны
!!UN:C6021023/1/255;   Отключение Академии Боевых Исскуств
!!UN:C6111477/1/6;     Отключение Торговцев Артефактами (этот вариант моему неаналогичен, с ним не получится отключить Сопряжение)

Код
if ( v53->type == 2 || v53->type == 5 || v53->type == 8 )


005D40EE 83E8 02 SUB EAX,2 ; Switch (cases 2..8, 2 exits)
005D40F1 74 6F JZ SHORT 005D4162
005D40F3 83E8 03 SUB EAX,3
005D40F6 74 6A JZ SHORT 005D4162
005D40F8 83E8 03 SUB EAX,3
005D40FB 74 65 JZ SHORT 005D4162

Вместо проверки на Темницу feanor сразу проверяет Сопряжение, вычитая не 3, а 6, ну а второй "SUB EAX,3" становится попросту не нужен. Последующий переход происходит только в том случае, если результат равен нулю (JZ), а он, как ни крути, будет меньше



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

Код
; Бонус от Грааля
!#UN:C6027966/4/5000;

Код
; Артефакты, дающие голду
!#UN:C5011192/1/115;  Неиссякаемый Мешок Золота
!#UN:C5011204/1/116;  Неиссякаемая Сума Золота
!#UN:C5011227/1/117;  Неиссякаемая Мошна Золота

Код
; Отключение бонусов и штрафов для ИИ
!#UN:C5011382/1/235; Отключить умножение дохода на 0.75 при игре на пешке (подмена условного перехода на безусловный)
!#UN:C5011409/1/3;   Уровень сложности, при котором происходит умножение на 1.25 (3=ферзь)
!#UN:C5011437/1/4;   Уровень сложности, при котором происходит умножение на 1.5  (4=король)

Код
  v20 = o_GameMgr->Player.PlayerHandicap[player_id];
  if ( v20 == 1 )
  {
    v21 = (golda * 0.85);
  }
  else if ( v20 == 2 )
  {
    v21 = (golda * 0.7);
  }
  else
  {
    LODWORD(v21) = golda;
  }





Цитата('Igor')
Код
; Доход от казны
!!UN:C6027876/4/4000;  золото капитолий 4000
!!UN:C6027849/4/2000;  золото муниципалитет 2000
!!UN:C6027822/4/1000;  золото перфектура 1000
!!UN:C6027803/4/500;   золото сельская управа 500
; Доход от шахты
!!UN:C5011015/4/1000;  1000 золота в день


Цитата('igrik')
Код
!?FU(OnGameEnter);
; ПОМЕСТЬЯ -------------------------------
!!VRy10:S6547992; куда глядеть то
; базовый     +250 золота
!!VRy1:Sy10 +4;
!!UN:Cy1/4/250;
; продвинутый +500 золота
!!VRy2:Sy10 +8;
!!UN:Cy2/4/500;
; эксперт     +750 золота
!!VRy3:Sy10 +12;
!!UN:Cy3/4/750;


P.S. У меня в прошлом сообщении был указан неверный адрес для города, в котором работает Храм Валгаллы. Если вдруг кто-то его брал, то знайте - он неправильный, и изменение значения будет вызывать вылет. Сейчас сообщение уже обновлено, так что копировать снова можно.
Raistlin
; Работает только с препятствиями
Код
!!UN:C6919200/4/?y50; Менеджер Битвы
!!SN:E4625904/2/y50/[индекс гекса]; Записываем в v1, можно ли встать на это место. 0 - можно, 1 - нельзя. Силовое поле учитывается.
; Если стена или ворота не пробиты, значение для атакующего будет 1, иначе - 0. Через BU:O это не узнать.
Raistlin
Получение случайного урона от стека (как при атаке):

Код
!!SN:E4468352/2/*Структура_Атакующего_Стека*/0;
!!SN:E4471904/2/*Структура_Атакующего_Стека*/*Структура_Защищающегося_Стека*/v1/*Стрелок - 1, рукопашник - 0*/0/*Шаги_Для_Кав._Бонуса*/*см. комментарий*;
; Урон запишется в v1, все бонусы вроде атаки и заклинаний учтутся
; Комментарий: последний параметр - это указатель на переменную, в которую в результате работы функции запишется урон от огненного щита (0 - не подсчитывать)


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

Код
; Для использования во всяких сообщениях и подсказках
!!BM*Атакующий_Стек*:Z?y1;
!!BM*Защищающийся_Стек*:Z?y2;
!!BM*Атакующий_Стек*:U1/?y3;
!!BM*Атакующий_Стек*:U2/?y4;
!!BM*Атакующий_Стек*:N?y5;
!!VRy3:*y5;
!!VRy4:*y5;
!!SN:E4471904/2/y1/y2/y3/0/0/0/0;
!!VRy6:Sv1; Минимальный урон
!!SN:E4471904/2/y1/y2/y4/(Стрелок?)/0/0/0;
!!VRy7:Sv1; Максимальный урон
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.