Добавлен Тимур
Если перед запуском карты не выбирать, видима ли карта, разведана или открыта, то она по умолчанию будет разведана. Однако, мне надо даже если она "разведана", всё равно включить чёрную маску. Для надёжности я попытался это реализовать аж целым комплектом дейтсвий:
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
И всё равно ничего не работает! Как так-то?
Принятый ответ
Самое удивительное: если карта "открыта" - всё работает, чёрная маска создаётся. Если же "разведана" - нет...
Как мне удалось наконец-то выяснить:
- Если выставлен флаг "карта открыта" - просто запрещаются туман войны и чёрная маска. И чтобы вернуть всё на место, нужно разрешить их, а потом создать модификатор чёрной маски.
- Если выставлен флаг "карта разведана" - ничего не запрещается, но создается модификатор тумана войны на всю карту. И его просто не может перекрыть новый модификатор чёрной маски, который я создаю триггерно. Нужно как-то отловить этот первоначальный модификатор тумана войны - и удалить его. Обращение через "последний созданный модификатор" не помогает. Может быть, есть еще какие-то способы найти и удалить этот модификатор?
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован Тимур
Отредактирован dave_wwid
типа
call CreateFogModifierRectBJ( true, Player(0), FOG_OF_WAR_VISIBLE, GetPlayableMapRect() )
set юзается только для переменных (имя или изменение значения) напр.
set udg_m = GetLastCreatedFogModifier() (Это естественно для глобальной переменной)
Naadir, если бы было всё так просто... Это в моём случае не годится, здесь может помочь только триггерное решение.
Отредактирован dave_wwid
Отредактирован Тимур