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

Post Reply 
Threaded Mode | Linear Mode
Школа ERM 2
» ERM 2.0 для ERA III
Author Message
Bes Offline

Posts: 5459
Post: #16

(06.09.2020 02:47)Berserker Wrote:  
  1. !!CM:P?(x:y)/?(y:y)/?(z:y);
  2. !!IF:L^You clicked on %(x) %(y) %(z)^;
Вот такое реально удобнее, бесспорно, не надо парить голову в середине триггера с сотней строк в теле какую же там щас могу взять y-переменную Mail1

а вот с остальным пока реально сложно переучить беглое чтение кода, да...Bad
06.09.2020 02:58
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16733
Post: #17

Bes, кроме этого константы вида (OBJ_MONSTER) вместо "54" и именованные функции. Всё.


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

Posts: 5459
Post: #18

Berserker, сложно читать из-за увеличения длин строк, это я имел ввиду. И да, за многолетний период привычные типы на карте 98, 54 быстро воспринимаешь, чем (OBJ_TOWN),(OBJ_MONSTR) и т.д.
На всё это опять нужно время, потому ветеранам будет проще писать код смешанный (где-то новые команды, а где-то привычные старые нечитаемые для других числа)
06.09.2020 03:11
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16733
Post: #19

Bes, читать сложно до первого написанного сложного триггера. Мозг — штука пластичная.

Пример:
(12.09.2020 00:32) Wrote:  
  1. ZVSE2
  2. !#DC(SERG_BA_HERO_CAST) = 1;
  3. !#DC(SERG_BATTLE_STACKS_PER_SIDE) = 21;
  4. !?FU(OnMagicBasicResistance);
  5. !!BG:A(action:y) N?(stack:y);
  6. !!if&(action)=(SERG_BA_HERO_CAST):;
  7. !!VR(side:y):(stack) :(SERG_BATTLE_STACKS_PER_SIDE);
  8. !!BH(side):N?(casterHero:y);
  9. !!HE(casterHero):S(SKILL_SORCERY)/?(sorcerySkill:y);
  10. !!en;


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

Posts: 16733
Post: #20
Кирпич 
Era 3.0.5+. ERM 2.0
Возвращает логическую принадлежность монстра конкретному городу/фракции. Изменения в настройках городов не влияют на работу функции.
  1. !?FU(fun_GetMonsterFraction);
  2. !#VA(monType:x) (result:x);
  3. !!VR(result):S(NO_TOWN);
  4. !!if&(monType)<=(MON_CHAOS_HYDRA):;
  5. !!VR(result):S(monType) :14;
  6. !!el&(monType)>=(MON_AIR_ELEMENTAL)/(monType)<=(MON_WATER_ELEMENTAL):;
  7. !!VR(result):S(TOWN_CONFLUX);
  8. !!el&(monType)>=(MON_PIXIE)/(monType)<=(MON_MAGIC_ELEMENTAL):;
  9. !!VR(result):S(TOWN_CONFLUX);
  10. !!el|(monType)=(MON_ICE_ELEMENTAL)/(monType)=(MON_MAGMA_ELEMENTAL)/(monType)=(MON_STORM_ELEMENTAL):;
  11. !!VR(result):S(TOWN_CONFLUX);
  12. !!el&(monType)>=(MON_ENERGY_ELEMENTAL)/(monType)<=(MON_PHOENIX):;
  13. !!VR(result):S(TOWN_CONFLUX);
  14. !!el&(monType)>=(MON_SUPREME_ARCHANGEL)/(monType)<=(MON_SACRED_PHOENIX):;
  15. !!VR(result):S(monType) -(MON_SUPREME_ARCHANGEL) +(TOWN_CASTLE);
  16. !!el|(monType)=(MON_NIGHTMARE)/(monType)=(MON_DRACOLICH):;
  17. !!VR(result):S(TOWN_NECROPOLIS);
  18. !!el&(monType)=(MON_HELL_STEED):;
  19. !!VR(result):S(TOWN_INFERNO);
  20. !!el&(monType)=(MON_SYLVAN_CENTAUR):;
  21. !!VR(result):S(TOWN_RAMPART);
  22. !!el&(monType)=(MON_WAR_ZEALOT):;
  23. !!VR(result):S(TOWN_CASTLE);
  24. !!en;


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

Posts: 16733
Post: #21

Пример скрипта на информацию о посещении университетов (Click to View)


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

Posts: 2819
Post: #22

Обучающие примеры скриптов на ERM 2.0
Парочка переписанных WoG скриптов (комментарии тут нужны только в редких случаях)
А код сам по себе уже вполне читаем.

ERM 2: выбор класса командира (Click to View)
ERM 2: быстрая настройка знамён полководца (Click to View)
ERM 2: Новые поля битв (Click to View)
09.10.2020 15:08
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16733
Post: #23

Code:
!!SN:T^wog_186.title^/?z2;
!!SN:T^wog_186.standart^/?z3;
!!SN:T^wog_186.cancel^/?z4;
!!SN:T^wog_186.noHired^/?z5;
Можно прямо в !!IF:G(ERM_RADIO)/2/1024/^%T(wog_186.title)^/...
Все 4 переменные.


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

Posts: 2819
Post: #24

(09.10.2020 15:13)Berserker Wrote:  
Code:
!!SN:T^wog_186.title^/?z2;
!!SN:T^wog_186.standart^/?z3;
!!SN:T^wog_186.cancel^/?z4;
!!SN:T^wog_186.noHired^/?z5;
Можно прямо в !!IF:G(ERM_RADIO)/2/1024/^%T(wog_186.title)^/...
Все 4 переменные.
Агонь 132 Буду учитывать в дальнейшем!
09.10.2020 15:17
Visit this user's website Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16733
Post: #25

  1. !!FU(IntLog2):P(bits)/?(type:y); вместо ручного определения соотношения бита и номера пункта меню


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

Posts: 16733
Post: #26

Code:
!!UN:N3/(paladin:z)/(MON_PALADIN_A)/0;
!!UN:N3/(hierophant:z)/(MON_HIEROPHANT_A)/0;
!!UN:N3/(temple:z)/(MON_TEMPLE_GUARDIAN_A)/0;
!!UN:N3/(succubus:z)/(MON_SUCCUBUS_A)/0;
!!UN:N3/(soul:z)/(MON_SOUL_EATER_A)/0;
!!UN:N3/(brute:z)/(MON_BRUTE_A)/0;
!!UN:N3/(ogre:z)/(MON_OGRE_LEADER_A)/0;
!!UN:N3/(shaman:z)/(MON_SHAMAN_A)/0;
!!UN:N3/(astral:z)/(MON_ASTRAL_SPIRIT_A)/0;

=>
  1. !#VA(commanderNames[9]:z); Массив из 9-и строк для имён командиров
  2. !!re i/(TOWN_FIRST)/(TOWN_LAST_WOG):; Прошлись по всем городам
  3. !!VR(commanderNamePtr:y):S(@commanderNames) +i; Номер y-переменной с очередным именем командира
  4. !!VR(monType:y):S(MON_PALADIN_A) +i; Вычисляем тип очередного командира
  5. !!SN:H^monname^/(monType)/0/?y(commanderNamePtr); Получаем имя очередного командира
  6. !!en:;


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

Posts: 462
Post: #27

Хм, что-то у меня каждый второй скрипт на ЕРМ2 с ошибками выдаёт.
Сделал copy/paste в sublime, сохранил, запустил игру. EraErmFlamework даже поставил, но что с ним, что без, везде ошибки. Пока без них только ERM 2: Новые поля битв запустил.

Что я делаю не так?
09.10.2020 17:47
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16733
Post: #28

igrik определил у себя часть (аргх) безпрефиксных констант, которые в примере кода не указаны. Определи их сам.
Открой IF:Q, посмотри, какой ИД у артефакта, например 6, и напиши:
1000 night - consts.erm
  1. ZVSE2
  2. !#DC(MSG_TYPE_ART) = 6; определили новую константу в файле с приоритетом 1000, который загрузится раньше скриптов с кодом


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

Posts: 462
Post: #29

Berserker, а как этот пример использовать?
  1. !?FU(night_GetSecondarySkillsLimit);
  2. !#VA(result:x);
  3. !!UN:C4881872/(UNC_UINT8)/?(result);

Я сделал такой скрипт для проверки:
  1. ZVSE2
  2. !?CM0;
  3. !!OW:A-1/?y1;
  4. !!CM:F?y11 I?y12; [тип клика, место клика]
  5. !!FU|y11<>512/y12<>1:E;
  6. !!FU(night_GetSecondarySkillsLimit):P;
  7. !?FU(night_GetSecondarySkillsLimit);
  8. !#VA(result:x);
  9. !!UN:C4881872/(UNC_UINT8)/?(result);
  10. !!IF:L^%Y1^;
Но он мне также выдаёт ошибку Или нужно вместо (UNC_UINT8) задавать значение смещения в байтах? 1,2 или 4?

  1. !?FU(night_GetSecondarySkillsLimit);
  2. !#VA(result:x);
  3. !!UN:C4881872/1/?(result);
Такого вида работает, а вот (UNC_UINT8) - нет. Хм.
(This post was last modified: 09.10.2020 23:19 by Night.)
09.10.2020 18:13
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16733
Post: #30

Night, вот самый свежий исполняемый файл Эры:
https://dropmefiles.com/H5AQP

Там всё исправлено. UINT8 - Unsigned integer 8. Читаем беззнаковое целое число из 8-и бит, то есть байт. Это -1.


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