Если перед запуском карты не выбирать, видима ли карта, разведана или открыта, то она по умолчанию будет разведана. Однако, мне надо даже если она "разведана", всё равно включить чёрную маску. Для надёжности я попытался это реализовать аж целым комплектом дейтсвий:
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
И всё равно ничего не работает! Как так-то?

Принятый ответ

Самое удивительное: если карта "открыта" - всё работает, чёрная маска создаётся. Если же "разведана" - нет...
Как мне удалось наконец-то выяснить:
  • Если выставлен флаг "карта открыта" - просто запрещаются туман войны и чёрная маска. И чтобы вернуть всё на место, нужно разрешить их, а потом создать модификатор чёрной маски.
  • Если выставлен флаг "карта разведана" - ничего не запрещается, но создается модификатор тумана войны на всю карту. И его просто не может перекрыть новый модификатор чёрной маски, который я создаю триггерно. Нужно как-то отловить этот первоначальный модификатор тумана войны - и удалить его. Обращение через "последний созданный модификатор" не помогает. Может быть, есть еще какие-то способы найти и удалить этот модификатор?
0
18
7 лет назад
0
При инициализации?
0
23
7 лет назад
Отредактирован Тимур
0
dave_wwid, да.
0
18
7 лет назад
0
Не все работает при инициализации. Можно попробовать создавать модификатор видимости не при инициализации а через 0.1 (0.01?) сек.
0
23
7 лет назад
0
dave_wwid, не помогает..
0
16
7 лет назад
0
Вкладка "Сценарий", подвлкадка "Параметры карты", снять галочку "Скрытые области частично видимы".
0
18
7 лет назад
Отредактирован dave_wwid
0
создавать модификатор тумана изначально разблокированным через call ?
типа
call CreateFogModifierRectBJ( true, Player(0), FOG_OF_WAR_VISIBLE, GetPlayableMapRect() )
set юзается только для переменных (имя или изменение значения) напр.
set udg_m = GetLastCreatedFogModifier() (Это естественно для глобальной переменной)
0
23
7 лет назад
0
dave_wwid, результат всё тот же. Игра упорно игнорирует любой модификатор "черной маски", если выставлена видимость "по умолчанию", а не "скрыта".
Naadir, если бы было всё так просто... Это в моём случае не годится, здесь может помочь только триггерное решение.
0
18
7 лет назад
Отредактирован dave_wwid
0
Я не то написал (просто писал для примера как вызвать функц) , нужно FOG_OF_WAR_MASKED вместо FOG_OF_WAR_VISIBLE. И для начала, отключи проверку на какие-либо условия.
0
12
7 лет назад
0
Тимур, я сам когда то задавал подобный вопрос. Итог: если в лобби игры установлены флаги "разведана" или "открыта" никакие триггерные костыли не смогут выставить черную маску. Единственное что можно сделать, проверку открыта карта или нет и выдать например фатал
0
23
7 лет назад
Отредактирован Тимур
0
Самое удивительное: если карта "открыта" - всё работает, чёрная маска создаётся. Если же "разведана" - нет...
Как мне удалось наконец-то выяснить:
  • Если выставлен флаг "карта открыта" - просто запрещаются туман войны и чёрная маска. И чтобы вернуть всё на место, нужно разрешить их, а потом создать модификатор чёрной маски.
  • Если выставлен флаг "карта разведана" - ничего не запрещается, но создается модификатор тумана войны на всю карту. И его просто не может перекрыть новый модификатор чёрной маски, который я создаю триггерно. Нужно как-то отловить этот первоначальный модификатор тумана войны - и удалить его. Обращение через "последний созданный модификатор" не помогает. Может быть, есть еще какие-то способы найти и удалить этот модификатор?
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.