Доброго времени суток!
Подскажите, пожалуйста, можно ли создать событие, которое запускает триггер тогда, когда юнит входит/выходит из воды?
Если нет, то проверить расположение юнита в воде можно с помощью PATHING_TYPE_FLOATABILITY, но тогда каким событием запустить эту проверку?
Подскажите, пожалуйста, можно ли создать событие, которое запускает триггер тогда, когда юнит входит/выходит из воды?
Если нет, то проверить расположение юнита в воде можно с помощью PATHING_TYPE_FLOATABILITY, но тогда каким событием запустить эту проверку?
Принятый ответ
Почему то на таймере всё забагалось и прилетало по несколько ивентов, сделал на периодическом триггере и всё стало нормально.
Код
globals
region region123
trigger trg = CreateTrigger()
real maxX
real minX
real maxY
real minY
real pointX
real pointY
endglobals
function Run takes nothing returns nothing
if pointY < minY then
call TriggerRegisterEnterRegion( gg_trg_enter, region123, null )
call TriggerRegisterLeaveRegion( gg_trg_leave, region123, null )
call DisableTrigger( trg )
endif
if pointX > maxX then
set pointY = pointY-32.00
set pointX = minX
endif
if IsTerrainPathable(pointX, pointY, PATHING_TYPE_FLOATABILITY) == false then
call RegionAddCell( region123, pointX, pointY )
endif
set pointX = pointX+32.00
endfunction
function Trig_trg_Actions takes nothing returns nothing
set region123 = CreateRegion()
set maxX = GetRectMaxX(bj_mapInitialPlayableArea)
set minX = GetRectMinX(bj_mapInitialPlayableArea)
set maxY = GetRectMaxY(bj_mapInitialPlayableArea)
set minY = GetRectMinY(bj_mapInitialPlayableArea)
set pointX = minX
set pointY = maxY
call TriggerRegisterTimerEvent( trg, 0., true )
call TriggerAddCondition( trg, Condition(function Run) )
endfunction
//===========================================================================
function InitTrig_trg takes nothing returns nothing
call Trig_trg_Actions()
endfunction
Вот карта с примером (карту сохранить не сможешь, т.к тебе нужен будет JNGP, это просто чтобы ты посмотрел сам алгоритм)
И учти что чем больше карта, тем больше времени нужно алгоритму что построить регион
И учти что чем больше карта, тем больше времени нужно алгоритму что построить регион
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован ImbaState
UrsaBoss:
Отредактирован Hodor
И если без гуи, то берёшь обычный GUI триггер с любым ивентом на вход в регион, далее конвертируешь его в jass.
Потом в функции инициализации триггера локально объявляешь регион и вносишь все свои области с водой в него, ну и потом вписываешь регион в ивент
UrsaBoss:
Отредактирован Hodor
в теории можно построить алгоритм который обыщет всю карту начиная с верхнего левого угла карты
далее двигаешь координаты с шагом приблизительно 30.00 сначала по оси X, далее снижаешь на 30.00 по Y и повторяешь.
Добавлять координаты в регион нужно через RegionAddCell
Но чую вызовет лаги во время такого "поиска"))) Если нужно один раз во время инициализации это сделать, то запросто
и учти что PATHING_TYPE_FLOATABILITY вернёт true если в этом месте нельзя плавать (т.е нету воды)
Отредактирован ImbaState
Отредактирован Hodor
Отредактирован Hodor
Отредактирован Пушистый