function Trig_Move_Region1_Conditions takes nothing returns nothing
endfunction
function Trig_Move_Region1_Actions takes nothing returns nothing
set gg_rct_Tel1RECT = RectFromCenterSizeBJ(GetUnitLoc(gg_unit_h005_0060), 600.00, 600.00)
endfunction
===========================================================================
function InitTrig_Move_Region1 takes nothing returns nothing
call TriggerRegisterTimerEventPeriodic( gg_trg_Move_Region1, 0.40 )
call TriggerAddAction( gg_trg_Move_Region1, function Trig_Move_Region1_Actions )
endfunction
Для перемещения области я использую этот код, однако, когда боевая единица заходит в перемещенную область (другой триггер событие Unit Enter region Tel1RECT)то ничего не происходит.... как так и что делать?

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

Сделал простой пример на jass. Если пехотинец в радиусе 300 от паладина, ему дается способность доспех веры.
jass
globals
    unit Unit1
    unit Unit2
    timer Timer = CreateTimer()
endglobals

function Trig_sample_Conditions takes nothing returns boolean
    return GetFilterUnit() == Unit2 and GetUnitAbilityLevel(GetFilterUnit(), 'AHad') == 0
endfunction

function Trig_sample_Actions2 takes nothing returns nothing
    if not IsUnitInRange(Unit1, Unit2, 300.) then
        call UnitRemoveAbility(Unit2, 'AHad')
        call PauseTimer(GetExpiredTimer())
    endif
endfunction

function Trig_sample_Actions takes nothing returns nothing
    call UnitAddAbility(Unit2, 'AHad')
    call TimerStart(Timer, .1, true, function Trig_sample_Actions2)
endfunction

//===========================================================================
function InitTrig_sample takes nothing returns nothing
    local trigger trig = CreateTrigger(  )
    set Unit1 = CreateUnit(Player(0), 'Hpal', 0., 0., 0.)
    set Unit2 = CreateUnit(Player(0), 'hfoo', 0., 0., 0.)
    
    call TriggerRegisterUnitInRange(trig, Unit1, 300., function Trig_sample_Conditions)
    call TriggerAddAction(trig, function Trig_sample_Actions)
endfunction
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
32
8 лет назад
0
Ой ну 100 раз же писали... Хоспади, есть RECT а есть REGION. Ты регион то двигаешь, а событие создешь на рект. Зачем тебе двигать области, когда есть простая возможность проверять координаты юнита...
Так же есть событие - Event Units in Range. Кто то подошел к юниту.
0
10
8 лет назад
Отредактирован ApEJI
0
Ой ну 100 раз же писали... Хоспади, есть RECT а есть REGION. Ты регион то двигаешь, а событие создешь на рект. Зачем тебе двигать области, когда есть простая возможность проверять координаты юнита...
Так же есть событие - Event Units in Range. Кто то подошел к юниту.
Но нет события юнит отдалился виз рэндж а это важно...
И какое событие создать в таком случае?
Или
Если мой код двигает регион(хотя я был уверен что рект) то как двигать рект?
2
32
8 лет назад
2
Никак, только создавать в месте региона.
Так же что мешает просто проверять координаты.
0
48
8 лет назад
0
А зачем вопрос продублировал?
0
28
8 лет назад
Отредактирован nvc123
0
эм
так ты ведь ничего нигде не перемещаешь
просто создал новый рект и всё
0
10
8 лет назад
0
Так же что мешает просто проверять координаты.
тогда будет 100500 переодических эвентов что явно не очень круто
так ты ведь ничего нигде не перемещаешь
просто создал новый рект и всё
так как же тогда сделать????? мне нужно чтобы при отдалении двух юнитов друг от друга у них забирались абилки, и оба они подвижны..
0
48
8 лет назад
Отредактирован N7 Molot
0
ApEJI:
так как же тогда сделать????? мне нужно чтобы при отдалении двух юнитов друг от друга у них забирались абилки, и оба они подвижны..
А причем тут регионы если нужно сделать простую вещь?

Через 0,03 секунды фиксируй точки юнитов, замеряй расстояние на нужное, и выдавай действие.
2
28
8 лет назад
Отредактирован nvc123
2
ApEJI, периодическим таймером проверяй расстояние между юнитами
для передвижения ректа функция MoveRectTo
только quq_CCCP слегка перепутал
событие создаётся на регион
а регион двигать нельзя
0
7
8 лет назад
0
Сделал простой пример на jass. Если пехотинец в радиусе 300 от паладина, ему дается способность доспех веры.
jass
globals
    unit Unit1
    unit Unit2
    timer Timer = CreateTimer()
endglobals

function Trig_sample_Conditions takes nothing returns boolean
    return GetFilterUnit() == Unit2 and GetUnitAbilityLevel(GetFilterUnit(), 'AHad') == 0
endfunction

function Trig_sample_Actions2 takes nothing returns nothing
    if not IsUnitInRange(Unit1, Unit2, 300.) then
        call UnitRemoveAbility(Unit2, 'AHad')
        call PauseTimer(GetExpiredTimer())
    endif
endfunction

function Trig_sample_Actions takes nothing returns nothing
    call UnitAddAbility(Unit2, 'AHad')
    call TimerStart(Timer, .1, true, function Trig_sample_Actions2)
endfunction

//===========================================================================
function InitTrig_sample takes nothing returns nothing
    local trigger trig = CreateTrigger(  )
    set Unit1 = CreateUnit(Player(0), 'Hpal', 0., 0., 0.)
    set Unit2 = CreateUnit(Player(0), 'hfoo', 0., 0., 0.)
    
    call TriggerRegisterUnitInRange(trig, Unit1, 300., function Trig_sample_Conditions)
    call TriggerAddAction(trig, function Trig_sample_Actions)
endfunction
Загруженные файлы
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.