Igor 
 
 
		
		
		
			
			
			 
			
Posts: 140 
	
		
	 | 
	
		
			
			 
			
				!!BM:F эта команда заменяет флаг или добавляет новый к уже имеющимся? Если флагов несколько они суммируются? Просто если мертвому стеку дать флаг полета, он останется мертвым. Но при проверке на defending, у всех монстров флаг одинаковый...
			 
			
			
			
		 |  
	 
 | 
	| 29.08.2019 12:17 | 
	
		
	 | 
	
		
		Igor 
 
 
		
		
		
			
			
			 
			
Posts: 140 
	
		
	 | 
	
		
			
			 
			
				XEPOMAHT,  то есть !!BM:F записывает и проверяет каждый флаг отдельно, а не сумму флагов. То есть если у монстра флаг 2, и флаг 4, то при проверке я получу не общий флаг 6, а отдельно 2 и 4? А как снять флаг с монстра? Просто !!BM:Fdy1, где у1 это отрицательное значение флага?
			 
			
			
			
		 |  
	 
 | 
	| 29.08.2019 14:44 | 
	
		
	 | 
	
		
		XEPOMAHT 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 2481 
	
		
	 | 
	
		
			
			 
			
				 (29.08.2019 14:44)Igor Wrote:  То есть если у монстра флаг 2, и флаг 4, то при проверке я получу не общий флаг 6, а отдельно 2 и 4? 
Ты получишь флаг 2 + флаг 4, никаких общих флагов в игре нет.
  (29.08.2019 14:44)Igor Wrote:     А как снять флаг с монстра? Просто !!BM:Fdy1, где у1 это отрицательное значение флага? 
Как-то примерно так (написано по памяти):
 
Code: 
 !!BM:F?y1; читать флаг 
!!VRy1:&8; есть ли дыхание дракона 
!!if&y1<>0:; 
  !!VRy1:-8; если флаг есть, то вычесть его 
  !!BM:Fy1; и записать полученный флаг 
!!en:;
  
			 
			
			
			
		 |  
	 
 | 
	| 29.08.2019 15:10 | 
	
		
	 | 
	
		
		igrik 
 
 
		
		
		
			
			
			
 
 
			
Posts: 2821 
	
		
	 | 
	
		
			
			 
			
				 (29.08.2019 14:44)Igor Wrote:  XEPOMAHT,  то есть !!BM:F записывает и проверяет каждый флаг отдельно, а не сумму флагов. То есть если у монстра флаг 2, и флаг 4, то при проверке я получу не общий флаг 6, а отдельно 2 и 4? А как снять флаг с монстра? Просто !!BM:Fdy1, где у1 это отрицательное значение флага? 
Igor, в данном конкретном случае флаги монстров нужны, чтобы хранить в одном 4-х байтовом числе хранить информацию о 32 разных значениях, которые могут быть либо  ВКЛ (1), либо  ОТКЛ (0). Это нужно для экономии памяти и удобства и быстрой работы при получении или установке такого типа данных.
 О битовых операциях
Если у монстра есть флаг 2 и флаг 4, то суммарный их флаг будет 6. Но нужно уметь понимать и разделять эти флаги на отдельные составляющие. Смысл каждого флага в 2^n.  
Минимальный флаг (для данного случая) 2^0 = 1 
Максимальный флаг (для данного случая) 2^31 = 2147483648
 
Например точно так же реализованы флаги заклинаний  SS:F, потому что это быстро, компактно и удобно.
			  
			
			
  
game bug fixes extended.dll  ||  My Plugins  ||  My GitHub
			
		 |  
	 
 | 
	| 29.08.2019 17:48 | 
	
		
	 | 
	
		
		Igor 
 
 
		
		
		
			
			
			 
			
Posts: 140 
	
		
	 | 
	
		
			
			 
			
				igrik,  XEPOMAHT,  спасибо, разобрался.
			 
			
			
			
		 |  
	 
 | 
	| 29.08.2019 21:03 | 
	
		
	 | 
	
		
		ElfbI 
 
 
		
		
		
			
			
			
 
 
			
Posts: 325 
	
		
	 | 
	
		
			
			 
			
				Скажите, а можно комп-р как-то заставить брать костры с мифрилом? Или я где-то использую старую версию скрипта?
			 
			
			
  
The dreams you kill will break your heart
			
		 |  
	 
 | 
	| 29.08.2019 21:15 | 
	
		
	 | 
	
		
		slater777 
 
 
		
		
		
			
			
			 
			
Posts: 136 
	
		
	 | 
	
		
			
			 
			
				Можно ли присвоить мельницам статус "посещено" с помощью erm?
			 
			
			
			
		 |  
	 
 | 
	| 29.08.2019 22:46 | 
	
		
	 | 
	
		
		ElfbI 
 
 
		
		
		
			
			
			
 
 
			
Posts: 325 
	
		
	 | 
	
		
			
			 
			
				slater777, я использовал команду 
 
Должно работать, если нужно обнулить ее ресурсы. Не помню, устанавливается ли информация по правому клику при этом, но скорее всего нет. Тогда нужно будет посмотреть в справке раздел "Ресейвер HT (текст подсказки)", там есть несколько вариантов установки описаний.
			  
			
			
  
The dreams you kill will break your heart
			
				
(This post was last modified: 29.08.2019 23:42 by ElfbI.)
 
			 
		 |  
	 
 | 
	| 29.08.2019 23:28 | 
	
		
	 | 
	
		
		Igor 
 
 
		
		
		
			
			
			 
			
Posts: 140 
	
		
	 | 
	
		
			
			 
			
				Блин, нет, не разобрался. Вот написал скрипт, при передаче хода отряду устанавливается флаг "мертв", в начале раунда отряд сбрасывает флаг, получает ход, ходит по полю, но не может атаковать, и число монстров не указано. То есть он ни жив ни мертв. А как сделать чтобы он становился полноценным членом общества и выполнял долг перед родиной? 
			 
			
			
			
		 |  
	 
 | 
	| 30.08.2019 01:24 | 
	
		
	 | 
	
		
		XEPOMAHT 
 
 
		
		
		
			
			
 
 
			
 
 
			
Posts: 2481 
	
		
	 | 
	
		
			
			 
			
				 (30.08.2019 01:24)Igor Wrote:  при передаче хода отряду устанавливается флаг "мертв", в начале раунда отряд сбрасывает флаг, получает ход, ходит по полю, но не может атаковать, и число монстров не указано. 
Правильно. Установкой этого флага монстр только маркируется как мёртвый для некоторых проверок в игре. И изменять его просто так, не зная что он означает, не следует.
  (30.08.2019 01:24)Igor Wrote:  То есть он ни жив ни мертв. А как сделать чтобы он становился полноценным членом общества и выполнял долг перед родиной? 
На WERD убийство монстра в бою выглядит довольно просто:
 
Code: 
 mov dword [Структура_стека.Текущее_количество], 0 
mov dword [Структура_стека.Текущее_количество_до_атаки], 1 
mov byte [Структура_стека.Флаг_если_хоть_раз_монстра_били], 1 
mov byte [Структура_стека.Флаг_если_умирал_хоть_один], 1 
mov byte [Структура_стека.Флаг_если_был_убит_весь_стек], 1
  
На ERM это тоже можно реализовать через "неправильный" ресивер BM:G (более подробной читай хелп по ERM).
			  
			
			
			
		 |  
	 
 | 
	| 30.08.2019 11:36 | 
	
		
	 | 
	
		
		igrik 
 
 
		
		
		
			
			
			
 
 
			
Posts: 2821 
	
		
	 | 
	
		
			
			 
			
				 (29.08.2019 23:28)ElfbI Wrote:  Не помню, устанавливается ли информация по правому клику при этом, но скорее всего нет. 
Нет, не устанавливается. Используй этот скрипт для установки
 
 (30.08.2019 01:24)Igor Wrote:  Блин, нет, не разобрался. Вот написал скрипт, при передаче хода отряду устанавливается флаг "мертв", в начале раунда отряд сбрасывает флаг, получает ход, ходит по полю, но не может атаковать, и число монстров не указано. То есть он ни жив ни мертв. А как сделать чтобы он становился полноценным членом общества и выполнял долг перед родиной? 
Не совсем ясно что ты хочешь сделать. Опиши точнее как именно должен вести себя настраиваемый стек.
 
Но просто убить стек можно так:
 
			 
			
			
  
game bug fixes extended.dll  ||  My Plugins  ||  My GitHub
			
		 |  
	 
 | 
	| 30.08.2019 11:43 | 
	
		
	 | 
	
		
		igrik 
 
 
		
		
		
			
			
			
 
 
			
Posts: 2821 
	
		
	 | 
	
		
			
			 
			
				 (30.08.2019 11:36)XEPOMAHT Wrote:  На WERD убийство монстра в бою выглядит довольно просто: 
Code: 
 mov dword [Структура_стека.Текущее_количество], 0 
mov dword [Структура_стека.Текущее_количество_до_атаки], 1 
mov byte [Структура_стека.Флаг_если_хоть_раз_монстра_били], 1 
mov byte [Структура_стека.Флаг_если_умирал_хоть_один], 1 
mov byte [Структура_стека.Флаг_если_был_убит_весь_стек], 1
  
 
Тут есть несколько нюансов: 
1. Необходимо еще сбросить все активные спеллы со стека 
2. Правильно отвязать гипноз, если он был наложен. 
3. Необходимо отвязать и убить клонов, если они были применены к этому стеку 
4. Если стек является боевой машиной, то необходимо забрать соответсвующий арт у героя (если герой есть) 
5. Если стек был широкий (флаг =1) нужно очистить данные о стеке во втором гексе. 
Вроде всё. В игре всем этим занимается лишь одна функция 0x443E40
			  
			
			
  
game bug fixes extended.dll  ||  My Plugins  ||  My GitHub
			
		 |  
	 
 | 
	| 30.08.2019 13:32 | 
	
		
	 | 
	
		
		Igor 
 
 
		
		
		
			
			
			 
			
Posts: 140 
	
		
	 | 
	
		
			
			 
			
				igrik, эмуляция невидимости, суть в том, чтобы после действия отряд считался мертвым и комп его игнорировал, а при получении хода отряд бы снова оживал и ходил как обычно. И по факту отряд в начале раунда  получает ход (для этого прибавил ему скорость) и ходит по полю, но атаковать не может, иконка меняется на меч, отряд подходит в плотную, но урона и анимации нет.
			 
			
			
			
		 |  
	 
 | 
	| 30.08.2019 13:39 | 
	
		
	 |