Berserker 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 16789 
	
		
	 | 
	
		
 | 
	| 01.08.2022 13:13 | 
	
		
	 | 
	
		
		SergOz 
 
 
		
		
		
			
			
			
 
 
			
Posts: 1361 
	
		
	 | 
	
		
			
			 
			
				Panda, на любой чистой карте можно быстро проверить. 
Ставишь объект, красного героя, даёшь ему Архнгела и посещаешь объект. 
Вот код:
 
Специально можно проиграть бой,  можно выиграть.  
Результат - налицо   
UPD. Очень странно, но теперь стало работать. Ща разберусь в чём дело...
			  
			
			
  
Карта-мод "Война на Холсте"
			
				
(This post was last modified: 01.08.2022 14:50 by SergOz.)
 
			 
		 |  
	 
 | 
	| 01.08.2022 14:01 | 
	
		
	 | 
	
		
		Guru105 
 
 
		
		
		
			
			
			 
			
Posts: 835 
	
		
	 | 
	
		
			
			 
			
				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 | 
	
		
	 | 
	
		
		SergOz 
 
 
		
		
		
			
			
			
 
 
			
Posts: 1361 
	
		
	 | 
	
		
			
			 
			
				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 | 
	
		
	 | 
	
		
		Berserker 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 16789 
	
		
	 | 
	
		
 | 
	| 02.08.2022 04:16 | 
	
		
	 | 
	
		
		SergOz 
 
 
		
		
		
			
			
			
 
 
			
Posts: 1361 
	
		
	 | 
	
		
			
			 
			
				Berserker, я делал такую проверку, но это не помогло. 
Но тут вопрос даже в дугом: почему !?BA1 срабатывает, а !?FU(OnAfterBattleUniversal) - нет? 
Пусть даже и в этом, отдельно взятом, скрипте.
			 
			
			
  
Карта-мод "Война на Холсте"
			
		 |  
	 
 | 
	| 02.08.2022 04:21 | 
	
		
	 | 
	
		
		SergOz 
 
 
		
		
		
			
			
			
 
 
			
Posts: 1361 
	
		
	 | 
	
		
			
			 
			
				daemon_n, я переделал момент нападения: теперь не через HE#:T, а путем телепортации Снайпера к герою, перешедшему определённую "красную черту". Итог тот же.
			 
			
			
  
Карта-мод "Война на Холсте"
			
				
(This post was last modified: 02.08.2022 04:33 by SergOz.)
 
			 
		 |  
	 
 | 
	| 02.08.2022 04:33 | 
	
		
	 | 
	
		
		daemon_n 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 4366 
	
		
	 | 
	
		
 | 
	| 02.08.2022 04:53 | 
	
		
	 | 
	
		
		SergOz 
 
 
		
		
		
			
			
			
 
 
			
Posts: 1361 
	
		
	 | 
	
		
			
			 
			
				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 | 
	
		
	 | 
	
		
		XEPOMAHT 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 2481 
	
		
	 | 
	
		
			
			 
			
				 (01.08.2022 15:14)SergOz Wrote:  Стоит на карте монстр и никого не пропускает. Мимо него можно пройти, но сейчас не об этом. Монстр (снайпер) в бою имеет первый ход и стреляет без перерыва, пока не уничтожит всю армию героя. 
Использовать в данном случае мораль для бесконечной атаки = кастыли. Так делать точно не нужно. В чём затруднение в вызове функции, производящую атаку монстра на монстра на поле брани? В эровском триггере "перед_передачей_контроля" атакуешь снайпером поочерёдно с 1 по 21 стеки (естественно с проверкой на трупность) с уроном, 100% уничтожающим стек.
 
Ну а если делать такую вещь вообще без заморочек, до при посещении снайперов на карте можно сразу вызывать функцию killHero с выводом сообщения, что снайперы всех перебили (т.к. игроку всё равно не обязательно лицезреть бой с ними, заведомо зная, что герой всегда умрёт).
			  
			
			
			
		 |  
	 
 | 
	| 02.08.2022 06:04 | 
	
		
	 | 
	
		
		SergOz 
 
 
		
		
		
			
			
			
 
 
			
Posts: 1361 
	
		
	 | 
	
		
			
			 
			
				XEPOMAHT, ну "мораль", как я понимаю, здесь условная и назвал я её так потому что принцип взят из скрипта Берсеркера "Моральный дух". Там просто идет цикличная передача хода одному и тому же стеку.
 Quote:Ну а если делать такую вещь вообще без заморочек, до при посещении снайперов на карте можно сразу вызывать функцию killHero с выводом сообщения, что снайперы всех перебили (т.к. игроку всё равно не обязательно лицезреть бой с ними, заведомо зная, что герой всегда умрёт). 
В корне не согласен. Зачем тогда в ERA все эти заморочки с .png, прозрачностями, цветными текстами и пр.? 
Правильно - для красивой визуализации. Для того чтобы игрок увидел чем ERA отличается от других геройских платформ. Следуя твоей логике,  можно договориться до того, что при запуске игры игроку можно выдать текст о том, что его герой сделал то-то, пошёл туда-то, разгромил того-то, преодолел такие-то трудности и одержал невероятную эффектную победу и - game over    
			 
			
			
  
Карта-мод "Война на Холсте"
			
		 |  
	 
 | 
	| 02.08.2022 07:05 | 
	
		
	 | 
	
		
		Guru105 
 
 
		
		
		
			
			
			 
			
Posts: 835 
	
		
	 | 
	
		
			
			 
			
				Berserker, чтобы !!SN:A находил функцию по имени, она должна быть в списке экспорта? 
По смещению вызывается:
 
Только нужно менять значение в скрипте, если перекомпилировать dll-ку, что не очень удобно. 
Может есть другие способы, кроме как писать экспортируемую функцию, потому что я до этого пока не дошел, даже не знаю как подступиться.
			  
			
			
			
		 |  
	 
 | 
	| 21.08.2022 11:52 | 
	
		
	 |