(27.02.2022 21:39)Bes Wrote: [ -> ]Смотри здесь или вот ещё...
Sav Wrote:Максимальное число одинаковых (с одним типом) объектов наполнения зон на карте:
Событие: 200.
Ящик Пандоры: 200.
Лодка: 64.
Обелиск: 48.
Камень Знаний: 32.
Башня Марлетто: 32.
Сад Откровения: 32.
Лагерь Наёмников: 32.
Звёздное Колесо: 32.
Дерево Знаний: 32.
Библиотека Просвещения: 32.
Арена: 32.
Школа Магии: 32.
Школа Войны: 32.
Университет: 32.
Хижина Ведьмы: 32.
Святыня Магического Воплощения: 32.
Святыня Магического Жеста: 32.
Святыня Магической Мысли: 32.
Сирены: 32.
Мистический Сад: 32.
Водяное Колесо: 32.
Ветряная Мельница: 32.
Магический Источник: 32.
Труп: 32.
Навес: 32.
Могила Воина: 32.
Телега: 32.
Хижина Провидца: 48.
Чёрный рынок: 32.
Остальных, которые вообще встречаются, - неограничено.
Данные лимиты - исключительно для установки объектов в редакторе карт и ДО инициализации их на карте в самой игре (но это - только хуком, т.к. ERM в этот момент работает только в MoP, в стандартной ЭРЕ - нет, т.к. автоматическое присвоение ключевых слов - работа содовского кода, в воге такого нет, в эре тоже вряд ли Берсеркер сделает...). После инициализации игрой объектов на карте можно устанавливать неограниченное количество.
Если ключевое слово не настраивается, то хоть 100500 объектов ставь - они все будут работать как один и игра при этом не сглючит, т.к. автонастройку воговский код производит только для:
1. Жилища монстров (тип 17 и 20)
2. Артефакт/ресурс/свиток (типы 5, 79, 93)
3. Шахта/Маяк (типы 42 и 53)
4. Хижина ведьм (тип 113)
5. Верфь (тип 87)
6. Грааль (тип 36)
7. Монстр (тип 54)
8. Знак/Бутылка (типы 59/91)
9. Двухсторонний портал (тип 45)
10. Университет (тип 104)
11. Город (тип 98)
12. Банк Монстров (тип 16)
13. Лодка (тип 8)
14. Событие (тип 26)
Т.е. все объекты в игре можно безопасно устанавливать на карту с помощью UN:I, НО!!! Настройка ключевых слов - целиком на совести скриптёра, т.к. вог по-умолчанию всегда пишет туда 0.
Thanks, guys. I will try to work it out with the hints here.

Quote:Archer: Can we have a value for "not displaying a picture" in IF:N dialogue? Needed that since my amount of pictures was dynamic. As for now, looks like I have to write 8 different IF:N lines for picture amounts from 1 to 8.
Quote:Berserker: We can. Set all 8 items to NO_PIC_TYPE/0 or something like that. I got your point?
Well, I did not achieve a satisfying result with IF:N. I am trying to
show a hero's army with IF:N with the following code.
The problem is, when the monster id = (NO_MON) for (PIC_TYPE_MONSTER), IF:N doesn't hide the picture. It shows as transparent.
In order to show correct amout of picture accorindg to the number of troops the hero has, I have to write 7 variants of IF:N (assuming the hero has at least a creature).
For this reason, it looks like IF:G is more convenient in writing, as we can always use an empty z var to hide an option
____
Edit: I tried again with some very weird approach. It works well so far.
Right. You need to write function, that accepts SN:M array, allocates 14 temp y-vars to -1, copies passed array items to y-vars and calls !!IF:N.
!!FU(NewIntArray):P?(armies:y);
!!re i/(ARMY_SLOT_FIRST)/(ARMY_SLOT_LAST);
!!HE(hero):C0/i/?(mon:y)/?(qty:y);
!!FU(Array_Push)&(mon)>(NO_MON)/(qty)>0:P(armies)/(mon);
!!en;
That's valid way to initialize such an array.
Ah, I get it. Although it looks a bit tedious to use IF:N. It's like a heavy weapon, each time you swing it, you have to use all the strengh

If IF:N can be combined with arrays, it might be more enjoyable to use, for example syntax like this:
Подскажите, как полноценно оживить полностью умерщвлённый стек?
(08.03.2022 05:11)major Wrote: [ -> ]Подскажите, как полноценно оживить полностью умерщвлённый стек?
Просто правильно восстановить флаги существа (в том числе боевые флаги)
Просмотрел структуру стека, не нашел ничего, кроме флага *// 00200000 - 0x15 стек убит? и * // +EA db = 1, если был убит весь стек.
Восстановление этих флагов оживляет существо, оно атакует, но его атаковать нельзя, пока оно не сдвинется с места. Причем на том месте остается его копия, которая повторяет все анимации.
Куда еще глядеть?
(09.03.2022 11:37)major Wrote: [ -> ]Куда еще глядеть?
Со структуры гекса нужно снимать флаги того, что на гексе лежит труп. Получаешь клеточность стека, затем ориентацию (м или жо, где м - морда), после - вызываешь содовскую функцию, снимающую флаги и проигрывающую антисмертельную анимацию: 1 раз для одноклеточной инфузории, 2 раза - для 2-клеточного, 3 - для трёхклеточного и т.д. Под ЕРМ на это дело где-то код был, но фиг знает где.... Проще добавить в качестве полноценного ERM-ресейвера, без задротчества на UN:C.
Ну и вызвать функцию, перерисовывающую всё поле брани, тоже скорее всего потребуется, чтобы не было графических артефактов.
igrik, спасибо за код, всё работает!
Еще хотелось бы добавить анимацию воскрешения. Видел функцию feanor для этого дела. Ей как-нибудь можно проиграть обратную анимацию, или для этого другая функция?
И еще, если стек погибает повернувшись в другую сторону, то после воскрешения остается повернутым "неправильно". Исправить это можно?
major, добавил анимацию и поворот стека (обновил то же сообщение)
PS: блин, в очередной раз убеждаюсь насколько же удобнее писать на ERM2 сложные конструкции кода...