Current time: 13.04.2024, 19:24 Hello There, Guest! (LoginRegister)
Language: english | russian  

Post Reply 
Threaded Mode | Linear Mode
Ваши вопросы по ERM-скриптам
Author Message
Berserker Offline
Administrators

Posts: 16471
Post: #8866

Если подтвердится, то это серьёзная проблема.


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

Posts: 1005
Post: #8867

SergOz, есть какой-нибудь "тестовый" вариант сие явления? Проверить только правда скорее всего смогу уже не раньше 4-5.


Тот, кто просыпается рано - жаворонок, поздно - сова. А тот, кто плохо спит и ходит с черными кругами под глазами - панда!
01.08.2022 13:20
Find all posts by this user Quote this message in a reply
SergOz Offline

Posts: 1287
Post: #8868

Panda, на любой чистой карте можно быстро проверить.
Ставишь объект, красного героя, даёшь ему Архнгела и посещаешь объект.
Вот код:

Специально можно проиграть бой, можно выиграть.
Результат - налицо Black eye


UPD. Очень странно, но теперь стало работать. Ща разберусь в чём дело...


Карта-мод "Война на Холсте"
(This post was last modified: 01.08.2022 14:50 by SergOz.)
01.08.2022 14:01
Find all posts by this user Quote this message in a reply
wessonsm Offline

Posts: 787
Post: #8869

SergOz, триггеры BA1 и OnAfterBattleUniversal срабатывают до того, как ты присваиваешь значение переменной. Убери условия, и оба сработают.
    !?OB5/5/0; объект в произвольной координате
    !!OB5/5/0:D0; запрет красному на посещение
    !!HE-1:T5/5/0/9/20; вызов боя с 20 фанатиками
    !!IF:M^Бой уже давно закончился^;
    !?FU(OnAfterBattleUniversal);
    !!IF:M^ OnAfterBattleUniversal ^;
    !?BA1;
    !!IF:M^ BA1 ^;


Если твой детект сработал - это чистая случайность, из-за того, что переменная уже имела значение 10 до боя.
01.08.2022 14:42
Find all posts by this user Quote this message in a reply
SergOz Offline

Posts: 1287
Post: #8870

wessonsm, без условий никак: на карте десятки скриптовых боёв - они должны различаться.
Но я догадываюсь в чём дело, но не могу сообразить как с этим бороться.

Объясню подробнее. Стоит на карте монстр и никого не пропускает. Мимо него можно пройти, но сейчас не об этом. Монстр (снайпер) в бою имеет первый ход и стреляет без перерыва, пока не уничтожит всю армию героя. Так вот в конце этого боя и не срабатывает !?FU(OnAfterBattleUniversal);
Я сделал этот бой на выпадении постоянной морали у Снайпера, так как если через UN:C давать повторный ход, то идут разные глюки и в бою и после боя. Так вот я подозреваю, что когда Снайпер всех убивает, то бой как бы не заканчивается... Его где-то нужно прервать.
Вот код после вызова и идентификации боя:

P.S. а !?BA1 - срабатывает


Карта-мод "Война на Холсте"
(This post was last modified: 02.08.2022 02:04 by SergOz.)
01.08.2022 15:14
Find all posts by this user Quote this message in a reply
Berserker Offline
Administrators

Posts: 16471
Post: #8871

Может нужно проверять, если ли ещё армия у противника в отдельной функции, до того как давать мораль и назначать снайпера снова активным?


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

Posts: 1287
Post: #8872

Berserker, я делал такую проверку, но это не помогло.
Но тут вопрос даже в дугом: почему !?BA1 срабатывает, а !?FU(OnAfterBattleUniversal) - нет?
Пусть даже и в этом, отдельно взятом, скрипте.


Карта-мод "Война на Холсте"
02.08.2022 04:21
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4338
Post: #8873

SergOz, проблема HE:T в том, что это одно целое событие, внутри которого неполностью обрабатывается ERM, если я правильно помню


Image: widget.png?style=banner2

Новейший Heroes 3 Launcher
02.08.2022 04:29
Visit this user's website Find all posts by this user Quote this message in a reply
SergOz Offline

Posts: 1287
Post: #8874

daemon_n, я переделал момент нападения: теперь не через HE#:T, а путем телепортации Снайпера к герою, перешедшему определённую "красную черту". Итог тот же.


Карта-мод "Война на Холсте"
(This post was last modified: 02.08.2022 04:33 by SergOz.)
02.08.2022 04:33
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4338
Post: #8875

SergOz, а где именно выставляется id_BAttle?


Image: widget.png?style=banner2

Новейший Heroes 3 Launcher
02.08.2022 04:53
Visit this user's website Find all posts by this user Quote this message in a reply
SergOz Offline

Posts: 1287
Post: #8876

daemon_n, там два варианта.
Первый: когда герой дошёл до Снайпера и напал на него - тогда id_BAttle выставляется в !?OBx/y/z
Второй: когда герой сделал "лишний" шаг - тогда идет идентификация и после этого произвожу телепорт Снайпера к герою, что вызывает бой.

P.S. Дело точно не в идентификации: я её убирал и результаты те же.
То есть: если герой убит !?FU(OnAfterBattleUniversal) не срабатывает, а !?ВА1 - срабатывает.
Если герой выиграет битву (возможно при экипировке определённого арта), то срабатывают оба триггера.

Мне, со стороны работоспособности скрипта, всё равно какой триггер стоит срабатывает - работает и фиг с ним, но вот это шило в заднице зудение в голове не даёт покоя: а чё ж так происходит?


Карта-мод "Война на Холсте"
(This post was last modified: 02.08.2022 05:35 by SergOz.)
02.08.2022 05:04
Find all posts by this user Quote this message in a reply
XEPOMAHT Offline
Moderators

Posts: 2271
Post: #8877

(01.08.2022 15:14)SergOz Wrote:  Стоит на карте монстр и никого не пропускает. Мимо него можно пройти, но сейчас не об этом. Монстр (снайпер) в бою имеет первый ход и стреляет без перерыва, пока не уничтожит всю армию героя.

Использовать в данном случае мораль для бесконечной атаки = кастыли. Так делать точно не нужно. В чём затруднение в вызове функции, производящую атаку монстра на монстра на поле брани? В эровском триггере "перед_передачей_контроля" атакуешь снайпером поочерёдно с 1 по 21 стеки (естественно с проверкой на трупность) с уроном, 100% уничтожающим стек.

Ну а если делать такую вещь вообще без заморочек, до при посещении снайперов на карте можно сразу вызывать функцию killHero с выводом сообщения, что снайперы всех перебили (т.к. игроку всё равно не обязательно лицезреть бой с ними, заведомо зная, что герой всегда умрёт).
02.08.2022 06:04
Find all posts by this user Quote this message in a reply
SergOz Offline

Posts: 1287
Post: #8878

XEPOMAHT, ну "мораль", как я понимаю, здесь условная и назвал я её так потому что принцип взят из скрипта Берсеркера "Моральный дух". Там просто идет цикличная передача хода одному и тому же стеку.

Quote:Ну а если делать такую вещь вообще без заморочек, до при посещении снайперов на карте можно сразу вызывать функцию killHero с выводом сообщения, что снайперы всех перебили (т.к. игроку всё равно не обязательно лицезреть бой с ними, заведомо зная, что герой всегда умрёт).

В корне не согласен. Зачем тогда в ERA все эти заморочки с .png, прозрачностями, цветными текстами и пр.?
Правильно - для красивой визуализации. Для того чтобы игрок увидел чем ERA отличается от других геройских платформ. Следуя твоей логике, можно договориться до того, что при запуске игры игроку можно выдать текст о том, что его герой сделал то-то, пошёл туда-то, разгромил того-то, преодолел такие-то трудности и одержал невероятную эффектную победу и - game over 36


Карта-мод "Война на Холсте"
02.08.2022 07:05
Find all posts by this user Quote this message in a reply
wessonsm Offline

Posts: 787
Post: #8879

Berserker, чтобы !!SN:A находил функцию по имени, она должна быть в списке экспорта?
По смещению вызывается:
Только нужно менять значение в скрипте, если перекомпилировать dll-ку, что не очень удобно.
Может есть другие способы, кроме как писать экспортируемую функцию, потому что я до этого пока не дошел, даже не знаю как подступиться.
21.08.2022 11:52
Find all posts by this user Quote this message in a reply
daemon_n Offline
Administrators

Posts: 4338
Post: #8880

wessonsm, ты можешь зарегистрировать своё событие-триггер, имя которого будет либо прописано в плагине, либо в json. И его вызывать из erm


Image: widget.png?style=banner2

Новейший Heroes 3 Launcher
21.08.2022 12:47
Visit this user's website 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-2024 MyBB Group