Current time: 25.10.2020, 09:55 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Вопросы по моддингу
» (обсуждаем моддинг здесь)
Author Message
Berserker Offline
Administrators

Posts: 13368
Post: #31

Quote:Конвертирование - fastcall
Convention - соглашение. Полный термин: calling convention - соглашение о вызове Rolleyes

Quote:Ибо я не пойму, как и куда ЭРА возвращает результаты.
ЯП обычно возвращают результат через один регистр - EAX. Именно его значение и попадает в v1. Если нужно вернуть много значений или структуру, то передавай функции начальный номер v-переменной. А в функции в v[x], v[x+1], v[x+2] пиши результаты.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
03.08.2010 20:24
Find all posts by this user Quote this message in a reply
MOP Offline

Posts: 1369
Post: #32

(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).
Как там возможен возврат? Или это описка?


Я на Лит-Нете
(This post was last modified: 03.08.2010 20:33 by MOP.)
03.08.2010 20:25
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 13368
Post: #33

Описка, видно. Проверка орфографии на корректном слове не катит, вот и прошло.

Quote:Как там возможен возврат? Или это описка?
?z2 передаст в этом параметре адрес. Функция сама должна по нему что-то записать. В твоём случае ты можешь написать ?v50, а функция должна записать в Addr, Addr + 4, Addr + 8 - результат.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
04.08.2010 00:23
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 13368
Post: #34

MOP, ты не мог бы поделиться своей коллекцией общих бинарных патчей? Тех, что могли бы заюзать другие?


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
10.08.2010 00:23
Find all posts by this user Quote this message in a reply
MOP Offline

Posts: 1369
Post: #35

(10.08.2010 00:23)Berserker Wrote:  MOP, ты не мог бы поделиться своей коллекцией общих бинарных патчей? Тех, что могли бы заюзать другие?
Таких мало, ибо в основном всё делаю в новой секции или на расчищенном конце содовской .text. Но попробую на досуге отобрать.

Вот для начала:


Я на Лит-Нете
12.08.2010 13:55
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 13368
Post: #36

MOP, спасибо!
А с вратами инферно нужна функция их активации?


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
12.08.2010 17:41
Find all posts by this user Quote this message in a reply
MOP Offline

Posts: 1369
Post: #37

В смысле?


Я на Лит-Нете
(This post was last modified: 13.08.2010 00:38 by MOP.)
13.08.2010 00:34
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 13368
Post: #38

Стандартно врата активировались по щелчку на строении в Инферно. Если патч убирает зависимость от строения и города, то как вызвать диалог выбора места телепортации?


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
13.08.2010 00:55
Find all posts by this user Quote this message in a reply
MOP Offline

Posts: 1369
Post: #39

Так же. Патч убирает зависимость от наличия строения не в пункте-отправителе, а в пункте назначения.


Я на Лит-Нете
(This post was last modified: 13.08.2010 00:58 by MOP.)
13.08.2010 00:58
Find all posts by this user Quote this message in a reply
MOP Offline

Posts: 1369
Post: #40

(13.08.2010 00:55)Berserker Wrote:  как вызвать диалог выбора места телепортации?
Так:
!?CM1; //тест: любой клик в любом городе
!!CA-1:H1/<0; //есть ли герой-гость?
!!FU&1:E; //выход, если нет
!!UN:C6919500/4/?y1; //указатель на TownManager
!!SN:E6129792/2/y1; //выполнить функцию


Я на Лит-Нете
16.08.2010 14:41
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 13368
Post: #41

Спасибо.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
16.08.2010 18:41
Find all posts by this user Quote this message in a reply
feanor Offline

Posts: 570
Post: #42

(14.08.2010 21:11)Sav Wrote:  Только хотелось бы узнать - нельзя ли как-нибудь универсально узнать, нет ли у существа иммунитета.

В Эре можно стандартную геройскую функцию дернуть.

double __fastcall sub_44A1A0(int spell, int creature, char* hero_caster, char* hero_target).

Первый параметр - номер заклинания,
Второй - номер существа
Третий - адрес структуры героя, кастующего заклинание
Четвертый - адрес структуры героя, чье существо подвергается заклинанию (0 - если героя нет)
21.08.2010 23:53
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 13368
Post: #43

feanor, им нужна тогда уже ерм-функция, скрывая детали реализации работы с адресами структур.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
22.08.2010 00:03
Find all posts by this user Quote this message in a reply
feanor Offline

Posts: 570
Post: #44

Примерный код должен быть таким:

!!UN:C6919480/4/?y1; //базовый адрес
!!VRy10:S<caster_hero_number> *1170 +136736 +y1;
!!VRy20:S<target_hero_number> *1170 +136736 +y1;
!!SN:E4497824/3/<spell>/<creature>/y10/y20;

А вот возвращает оно нефиксированные результаты. 8 бит, плавающая запятая, чтоб её >_<
(This post was last modified: 22.08.2010 00:07 by feanor.)
22.08.2010 00:05
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 13368
Post: #45

Quote:В случае иммуна вернет 10.
В v1. Это на всякий случай. Спасибо за функцию.


Скачать Герои 3 Эра и всё, что с ней связано / ERA 2.46f для старых модов
Поддержать проект
22.08.2010 00:06
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