| 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 [Структура_стека.Текущее_количество], 0mov 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 [Структура_стека.Текущее_количество], 0mov 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 |  |