Wake of Gods Forum | Форум Во Имя Богов
Era Erm Framework - Printable Version

+- Wake of Gods Forum | Форум Во Имя Богов (http://wforum.heroes35.net)
+-- Forum: Герои Меча и Магии 3.5 WoG/ERA (/forumdisplay.php?fid=99)
+--- Forum: Моды (/forumdisplay.php?fid=104)
+---- Forum: ЭРА / ERA (/forumdisplay.php?fid=182)
+---- Thread: Era Erm Framework (/showthread.php?tid=5816)


Era Erm Framework - Berserker - 24.10.2020 01:32

Обновление: https://dropmefiles.com/ExWs8
Code:
[+] Added new constants to "Era Erm Framework" mod:
  - ARG_SYNTAX_GET, ARG_SYNTAX_SET, ARG_SYNTAX_ADD for FU:S argument syntax types.

[+] Added new events to "Era Erm Framework" mod:

  - "OnAfterBattleSetup", occuring right after "OnBeforeBattle" and "OnBeforeBattleUniversal" events.
  New event allows to to be sure, that basic battle parameters (heroes, quick battle, coordinates) are set up.

  - "OnBeforeBattle" and    "OnBeforeBattleUniversal" events were improved, storing most of prebattle parameters in global variables.
  i^battle_isQuick^:       (TRUE) if quick battle is enabled, (FALSE) otherwise
  i^battle_x^:             Battle x-coordinate
  i^battle_y^:             Battle y-coordinate
  i^battle_z^:             Battle z-coordinate
  i^battle_owner_0^:       Left side owner or (NO_OWNER)
  i^battle_owner_1^:       Right side owner or (NO_OWNER)
  i^battle_hero_0^:        Left side hero or (NO_HERO)
  i^battle_hero_1^:        Right side hero or (NO_HERO). Any negative value is normalized into (NO_HERO)
  i^battle_ai_0^:          (TRUE) if left side is controlled by AI, (FALSE) otherwise.
  i^battle_ai_1^:          (TRUE) if right side is controlled by AI, (FALSE) otherwise.
  i^battle_human_0^:       (TRUE) if left side is controlled by human, (FALSE) otherwise.
  i^battle_human_1^:       (TRUE) if right side is controlled by human, (FALSE) otherwise.
  i^battle_remote_0^:      (TRUE) if left side is controlled by remote human, (FALSE) otherwise.
  i^battle_remote_1^:      (TRUE) if right side is controlled by remote human, (FALSE) otherwise.
  i^battle_local_0^:       (TRUE) if left side is controlled by local human or AI, (FALSE) otherwise.
  i^battle_local_1^:       (TRUE) if right side is controlled by local human or AI, (FALSE) otherwise.
  i^battle_localHuman_0^:  (TRUE) if left side is controlled by local human, (FALSE) otherwise.
  i^battle_localHuman_1^:  (TRUE) if right side is controlled by local human, (FALSE) otherwise.
  i^battle_hasHuman^:      (TRUE) if least one side is controlled by human, (FALSE) otherwise.
  i^battle_humanOnly^:     (TRUE) if all sides are controlled by humans, (FALSE) otherwise.
  i^battle_aiOnly^:        (TRUE) if all sides are controlled by AI, (FALSE) otherwise.
  i^battle_isVisible^:     (TRUE) if at least one side is human and quick battle is off, (FALSE) otherwise.
  i^battle_isNetwork^:     (TRUE) if it's network human vs human battle, (FALSE) otherwise.
  i^battle_type^:          Battle type bit mask: a collection of BATTLE_TYPE_FLAG_XXX constants.

[+] The following improvements were introduced in "Era Erm Framework" mod:
  
  - i^battle_round^ keeps current valid round (same as in OnBattleRound event) and can be used throughout battle triggers
  and in OnBattleRound condition like !?FU(OnBattleRound)&i^battle_round^=0 instead of v997.

[+] Added the following functions to "Era Erm Framework" mod:

  !?FU(NewIntArray);
  ; Creates and returns trigger local array of integers.
  ; Alternative function arguments:
  ;  (?result)                     The result array will have 0 items.
  ;  (size)/(?result)              The result array will have (size) items with 0 value.
  ;  (size)/(fillValue)/(?result)  The result array will have (size) items will (fillValue) value
  ;  You may optionally specify (storageType) parameter after (?result) argument with value like M_STORED or M_TEMP.
  
  !?FU(NewStrArray);
  ; Creates and returns trigger local array of strings.
  ; Alternative function arguments:
  ;  (?result)                     The result array will have 0 items.
  ;  (size)/(?result)              The result array will have (size) items with ^^ value.
  ;  (size)/(fillValue)/(?result)  The result array will have (size) items will (fillValue) value
  ;  You may optionally specify (storageType) parameter after (?result) argument with value like M_STORED or M_TEMP.



RE: Era Erm Framework - Berserker - 25.10.2020 05:09

Пост обновлён.


RE: Era Erm Framework - Bes - 25.10.2020 20:05

для форума, иногда без доступа к ПК, тож будет полезно иметь базу констант из 9999 era - consts.erm Yes
UNIVERSAL (Click to View)
ERM COMMANDS (Click to View)
MOUSE CLICKS (Click to View)
MOUSE CLICK SUBTYPES (Click to View)
PLAYER BITS (Click to View)
RESOURCES (Click to View)
MONSTER FLAGS (Click to View)
HERO SKILLS (Click to View)
SPELL SCHOOLS (Click to View)
HERO ARTIFACT SLOTS (Click to View)
ARTIFACTS (Click to View)
OBJECT TYPES (Click to View)
ERM FLAGS (Click to View)
WOG OPTIONS (Click to View)
BATTLE TYPE FLAGS (Click to View)
BATTLE ACTIONS (Click to View)
GAME LIMITS (Click to View)
CALLING CONVENTIONS (Click to View)
UN:C DATA TYPES (Click to View)
DATA TYPES (Click to View)
DEPRECATED (Click to View)



RE: Era Erm Framework - Berserker - 25.10.2020 21:44

Bes, это ты ловко придумал, спасибо.


RE: Era Erm Framework - Bes - 28.10.2020 05:52

добавь в раздел ERM FLAGS две строки для 1000/-1000 (человек/ИИ)


RE: Era Erm Framework - Berserker - 28.10.2020 06:12

!#DC(ERM_FLAG_IS_HUMAN) = 1000; уже есть, для ИИ будет "-(ERM_FLAG_IS_HUMAN)".


RE: Era Erm Framework - Bes - 28.10.2020 06:24

понял, с минусом не догадался, спасибо


RE: Era Erm Framework - slater777 - 28.10.2020 21:14

Подскажите, пожалуйста, где можно узнать статус переменных: вакантные и занятые.
UPD: неактуально, ужё всё нашёл.


RE: Era Erm Framework - Berserker - 29.10.2020 00:38

Era Erm Framework не использует воговских глобальных переменных. А именованные нужно префиксовать аббревиатурой мода.


RE: Era Erm Framework - daemon_n - 11.01.2021 15:01

9999 key codes:

А ещё игра не перехватывает LALT, а на RALT выдаёт сразу 17 и 18

Так ли оно должно быть? Вот я сомневаюсь, если честно.


RE: Era Erm Framework - Berserker - 11.01.2021 16:35

daemon_n, левый ALT не ловится, подтверждаю. Он работает как модификатор только. Клавиша Alt Gr — это не просто правый альт, а CTRL + правый ALT
https://stackoverflow.com/questions/35752702/strange-windows-message-sequence-of-wm-keydown-wm-keyup-while-pressing-vk-menu
https://en.wikipedia.org/wiki/AltGr_key

Сам не зал, но разную реакцию давно приметил.

Синоним KEY_TILDE добавил, спасибо.


RE: Era Erm Framework - Berserker - 11.01.2021 17:48

Сделаю глобальные переменные для состояния кнопок с возможностью различения.


RE: Era Erm Framework - daemon_n - 09.02.2021 12:14

9999 era - consts.erm
строка 1639;
Почему "COMBAT", а не "BATTLE"? - ориентируюсь по IDA


RE: Era Erm Framework - XEPOMAHT - 09.02.2021 12:24

(09.02.2021 12:14)daemon_n Wrote:  Почему "COMBAT", а не "BATTLE"? - ориентируюсь по IDA

В разных IDA-базах этот менеджер может назваться по-разному. Родное название (от NWC) - combatManager. В базе от WoG используются свои имена, свой жаргон.


RE: Era Erm Framework - daemon_n - 09.02.2021 13:26

XEPOMAHT, вот оно что... - спасибо за объяснения!


RE: ERA III - Archer30 - 07.09.2021 21:14

There is a mistake with pic type constants


Should be swapped around


RE: Era Erm Framework - daemon_n - 07.09.2021 23:28

Archer30, is it? where from it is? for IF:Q?


RE: Era Erm Framework - Archer30 - 07.09.2021 23:39

daemon_n, yes, those are for IF:Q


RE: Era Erm Framework - daemon_n - 08.09.2021 03:03

Archer30, hmm, as i know, in any h3 resources Knowlege's pic is before Spell Power - have you checked IF:Q directly?


RE: Era Erm Framework - Archer30 - 08.09.2021 08:07

daemon_n, yup


RE: ERA III - daemon_n - 12.12.2021 14:42

предлагаю константу для EEF



RE: ERA III - Berserker - 12.12.2021 21:21

Согласен. Добавил. Добавь у себя до моего обновления EEF тоже.


RE: ERA III - daemon_n - 16.12.2021 18:11

Предлагаю ещё одну константа для EEF:




RE: Era Erm Framework - Berserker - 16.12.2021 23:27

Уверен, что она верная? Не встречал ни разу.


RE: Era Erm Framework - daemon_n - 17.12.2021 00:19

Berserker,
ERM-Help Wrote:

Проверил даже в IDA - адрес именно этот.

Иронично, что функция всё равно не определяет замок под героем.


RE: Era Erm Framework - igrik - 17.12.2021 07:12

Я видимо упустил этот момент при её написании.
Вот так она должна правильно выглядеть (просто допилите её в ERM 2)


PS: если чё, её работоспособность я не проверял Sm


RE: Era Erm Framework - XEPOMAHT - 17.12.2021 10:19

(17.12.2021 00:19)daemon_n Wrote:  Иронично, что функция всё равно не определяет замок под героем.

Потому что так делать не надо. Потом замудохаетесь с клоном героя, стоящим на входе в город и никого не пускающего. HD-мод конечно костылями это иногда исправляет в режиме реального времени, но всё же не стоит плодить ошибки в игре.


RE: Era Erm Framework - SergOz - 17.12.2021 10:54




RE: Era Erm Framework - igrik - 17.12.2021 11:54

(17.12.2021 10:19)XEPOMAHT Wrote:  
(17.12.2021 00:19)daemon_n Wrote:  Иронично, что функция всё равно не определяет замок под героем.
Потому что так делать не надо. Потом замудохаетесь с клоном героя, стоящим на входе в город и никого не пускающего.
XEPOMAHT, ты путаешь код выше с функционалом кода SN:O.
Код выше не вызывает функции скрыть/показать героя, поэтому твой комментарий в данном случае неверный.


RE: Era Erm Framework - daemon_n - 17.12.2021 13:00

igrik, спасибо - гляну.
UPD: Не то - совсем не то.

SergOz, тоже вариант - попробую, если не сработает вариант выше - спасибо.
UPD: работает!


RE: Era Erm Framework - daemon_n - 17.12.2021 22:52

Предлагаю добавить в stdlib к !?FU(CollectMouseEventData);
!?OW:Cd/?i^mouse_owner^;


RE: Era Erm Framework - igrik - 18.12.2021 21:19

Вот правильная функция определения типа и подтипа объекта.




RE: Era Erm Framework - Bes - 18.12.2021 21:49

daemon_n, сделай доброе дело... когда добавишь в игре у себя этот код, нажми F11, и скинь эту функцию на чистом ERM (после интерпретации)

igrik, спасибо, обновлю её в справочнике 132


RE: Era Erm Framework - daemon_n - 18.12.2021 22:18

текущая ф-ция в справке GetRealObjectOnMap возвращает под героем подтип объекта под ним, но типом определяет героя (Click to View)

новая ф-ция: WOG_MapItem_GetRealTypeAndSubtype возвращает под героем и тип, и подтип объекта под ним (Click to View)



RE: Era Erm Framework - XEPOMAHT - 18.12.2021 22:35

(18.12.2021 22:18)daemon_n Wrote:  не знаю, почему -4, но с 4 результат тот же

Не тот же. -4 прочтёт как знаковый дворд, 4 как беззнаковый. Раскопано в исходных кодах ВоГа. Забыл тогда сказать Бесу, чтобы добавил эту инфу в комментарий к UN:C, т.к. очень многие до сих пор не в курсе таких тонкостей чтения памяти.


RE: Era Erm Framework - igrik - 18.12.2021 22:45

(18.12.2021 22:35)XEPOMAHT Wrote:  Не тот же. -4 прочтёт как знаковый дворд, 4 как беззнаковый. Раскопано в исходных кодах ВоГа.
Только наоборот:
4: знаковый
-4: беззнаковый

Это же касается и других размеров 1 и 2 байта

К тому же в Era Erm Framework это указано уже давно
Code:
; =============  UN:C DATA TYPES  =============
!#DC(UNC_UINT8)  = -1;
!#DC(UNC_INT8)   = 1;
!#DC(UNC_UINT16) = -2;
!#DC(UNC_INT16)  = 2;
!#DC(UNC_UINT32) = -4;
!#DC(UNC_INT32)  = 4;
!#DC(UNC_INT)    = 4;
!#DC(UNC_UINT)   = -4;
; ===========  END UN:C DATA TYPES  ===========



RE: Era Erm Framework - Bes - 19.12.2021 01:36

Kap скиньте мне кто-нить отдельно сам EEF на файлообменник

P.S. daemon_n, спасибо
P.P.S. XEPOMAHT, добавлю эту инфу Yes


RE: Era Erm Framework - daemon_n - 19.12.2021 02:42

Bes, Вот-с, хотя на гите тоже должен быть где-то


RE: Era Erm Framework - daemon_n - 05.02.2022 22:19

Предлагаю добавить в !?FU(Array_Shuffle); опциональным аргументом сид рандома, который позволит повторять или нет результат смешивания.
Глобально есть в этом смысл?

UPD: предложение снимается, так как ручной сброс сида позволяет контролировать результат;