Если перед запуском карты не выбирать, видима ли карта, разведана или открыта, то она по умолчанию будет разведана. Однако, мне надо даже если она "разведана", всё равно включить чёрную маску. Для надёжности я попытался это реализовать аж целым комплектом дейтсвий:
function Fog takes nothing returns nothing
    local integer a=0
	local fogmodifier m = null
    if ( IsMapFlagSet(MAP_FOG_HIDE_TERRAIN) == false ) then
	    call SetMapFlag( MAP_FOG_MAP_EXPLORED, false )
        call SetMapFlag( MAP_FOG_HIDE_TERRAIN, true )
		call FogMaskEnableOn(  )
		loop
		set m = CreateFogModifierRectBJ( true, Player(a), FOG_OF_WAR_MASKED, GetEntireMapRect() )
        call DestroyFogModifier( m )
		exitwhen a==11
		set a=a+1
		endloop
    endif
endfunction
И всё равно ничего не работает! Как так-то?

Самое удивительное: если карта "открыта" - всё работает, чёрная маска создаётся. Если же "разведана" - нет...
Как мне удалось наконец-то выяснить:
  • Если выставлен флаг "карта открыта" - просто запрещаются туман войны и чёрная маска. И чтобы вернуть всё на место, нужно разрешить их, а потом создать модификатор чёрной маски.
  • Если выставлен флаг "карта разведана" - ничего не запрещается, но создается модификатор тумана войны на всю карту. И его просто не может перекрыть новый модификатор чёрной маски, который я создаю триггерно. Нужно как-то отловить этот первоначальный модификатор тумана войны - и удалить его. Обращение через "последний созданный модификатор" не помогает. Может быть, есть еще какие-то способы найти и удалить этот модификатор?
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
18
Не все работает при инициализации. Можно попробовать создавать модификатор видимости не при инициализации а через 0.1 (0.01?) сек.
16
Вкладка "Сценарий", подвлкадка "Параметры карты", снять галочку "Скрытые области частично видимы".
18
создавать модификатор тумана изначально разблокированным через call ?
типа
call CreateFogModifierRectBJ( true, Player(0), FOG_OF_WAR_VISIBLE, GetPlayableMapRect() )
set юзается только для переменных (имя или изменение значения) напр.
set udg_m = GetLastCreatedFogModifier() (Это естественно для глобальной переменной)
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.