Wake of Gods Forum | Форум Во Имя Богов

Full Version: Вопросы по моддингу
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
(04.12.2009 19:43)Berserker Wrote: [ -> ]в ЕРМ есть проигрывание анимации и звука.
про звук знаю..но анимация? можно проиграть произвольный деф в битве?
Нет, но мораль там есть, насколько я помню.
где там? ты хочешь предложить эмулировать мораль на ERM без анимации?
BM:V
(05.12.2009 14:25)Berserker Wrote: [ -> ]BM:V
спасибо, не знал!
а есть команда упраления юнитом? т.е. если он уже отходил то как принудительно его активировать (эмуляция морали)?
Quote:В Эре есть событие: Кто_Сейчас_Ходит
Читаем сквозь строки? Sm

Code:
77006 - Бой: кто ходит?
Определить, какой стек ходит сейчас.
Параметры (2): Сторона (0 - левая, 1 - правая) / Номер стека (0..41)

Пример:
!?FU77006;
!!SN:X0/0; только 1-ый отряд левого игрока будет ходить в бою.
спасибо. я раньше подумал что событие: Кто_Сейчас_Ходит это триггер, а мне нужен ресивер. потестирую.
P.S. проапдейтил первый пост новыми вопросами
а если поставить
!!SN:X1/0;
то правый игрок будет играть за первый стек или ошибка?
Не пробовал так извращаться. Может быть ИИ будет биться сам с собой...
Круто. Но, получается, ходящая сторона в двух экземплярах? В самих Героях, ведь, номер стека в форме (0..41) никогда не используется, только в ЕРМ.

(04.12.2009 20:09)SAG Wrote: [ -> ]про звук знаю..но анимация? можно проиграть произвольный деф в битве?
Да, http://forum.df2.ru/index.php?showtopic=6813 - пост #11. Правда, там надо чуть-чуть подправить, чтобы все было чисто.
Сергей, спасибо, реально полезно. Попутно придумал как реализовать еще одну задумку которую отложил ранее
просьба к знающим людям сделать код, который рестартует случайную карту (т.е. когда случайная карта уже загружена но например игрокам не нравится, то чтобы по нажатию кнопки "Следующий герой" (или сделать новую кнопку) - карта генерилась заново с теми же настройками, а не рестартовалась уже сгенеренная карта. Надеюсь объяснил понятно Sm
Понимаю, что, возможно, я уже поздновато, но кому не лень - помогите с задачкой.
Имеем следующий код самопальной функции (сильно не пинать):
Code:
6399FD 55;               PUSH EBP
6399FE 8BEC;             MOV EBP,ESP
639A00 83F930;           CMP ECX,30
639A03 7328;             JNB SHORT mop.00639A2D
639A05 8B1DFCCC6900;     MOV EBX,DWORD PTR DS:[69CCFC]
639A0B A1F4CC6900;       MOV EAX,DWORD PTR DS:[69CCF4]
639A10 69C068010000;     IMUL EAX,EAX,168
639A16 2BD8;             SUB EBX,EAX
639A18 81C3440B0000;     ADD EBX,0B44
639A1E 8B03;             MOV EAX,DWORD PTR DS:[EBX]
639A20 69C968010000;     IMUL ECX,ECX,168
639A26 83C13C;           ADD ECX,3C
639A29 03C8;             ADD ECX,EAX
639A2B EB0E;             JMP SHORT mop.00639A3B
639A2D 8B0D4C956900;     MOV ECX,DWORD PTR DS:[69954C]
639A33 83C138;           ADD ECX,38
639A36 8B09;             MOV ECX,DWORD PTR DS:[ECX]
639A38 83C13C;           ADD ECX,3C
639A3B 85D2;             TEST EDX,EDX
639A3D 7410;             JE SHORT mop.00639A4F
639A3F 8B4508;           MOV EAX,DWORD PTR SS:[EBP+8]
639A42 8901;             MOV DWORD PTR DS:[ECX],EAX
639A44 8B450C;           MOV EAX,DWORD PTR SS:[EBP+C]
639A47 66894104;         MOV WORD PTR DS:[ECX+4],AX
639A4B 8BE5;             MOV ESP,EBP
639A4D 5D;               POP EBP
639A4E C3;               RETN
639A4F 8B01;             MOV EAX,DWORD PTR DS:[ECX]
639A51 894508;           MOV DWORD PTR SS:[EBP+8],EAX
639A54 0FBF4104;         MOVSX EAX,WORD PTR DS:[ECX+4]
639A58 89450C;           MOV DWORD PTR SS:[EBP+C],EAX
639A5B 8BE5;             MOV ESP,EBP
639A5D 5D;               POP EBP
639A5E C3;               RETN
Функция предсталяет собой не что иное, как контроль Портала Вызова, некогда написанный Михаником в ERM-е.
Конвертирование - fastcall. Вызов: !!SN:E6527485/3/x1/x2/x3/x4;
Где:
x1 - номер города. Если больше или равно 48, то текущий
x2 - 0 - прочитать, 1 - записать
x3 и x4 - числа/переменные для записи/чтения типа и кол-ва существа.
Так вот: запись работает, а чтение - нет. Ибо я не пойму, как и куда ЭРА возвращает результаты. В v1, ясное дело, результат возвращается (кол-во существ), но судя по справке, можно возвращать и несколько результатов.
Можно, конечно, записывать результат напрямую в адрес переменной, но это лишает универсальности, да и охота разобраться...
Quote:Конвертирование - fastcall
Convention - соглашение. Полный термин: calling convention - соглашение о вызове Rolleyes

Quote:Ибо я не пойму, как и куда ЭРА возвращает результаты.
ЯП обычно возвращают результат через один регистр - EAX. Именно его значение и попадает в v1. Если нужно вернуть много значений или структуру, то передавай функции начальный номер v-переменной. А в функции в v[x], v[x+1], v[x+2] пиши результаты.
(03.08.2010 20:24)Berserker Wrote: [ -> ]
Quote:Конвертирование - fastcall
Convention - соглашение. Полный термин: calling convention - соглашение о вызове Rolleyes
Это не я, это ДракоЛич...

А что это?
Quote:!!SN:Ev3/1/v4/?z2; call function with address stored in v3 using Cdecl/Stdcall conversion, the first parameter is number and the second is the address of z2 (the function must return something to it).
Как там возможен возврат? Или это описка?
Reference URL's