XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Закрытая тема
 
Амбидекстрия
Silenced by ScorpioT1000
offline
Опыт: 8,237
Активность:
Совместить 2 триггера и другая помощь по ним
имеються 2 триггера:
function Pg takes nothing returns nothing
    
    if GetSpellAbilityId() == 'A01T' then
    set udg_Caster[1] = GetSpellAbilityUnit()
    call TriggerSleepAction( 1.00 )
    set udg_Caster[1] = null
    endif    
endfunction


function InitTrig_Pow_ch takes nothing returns nothing
    local trigger tr = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( tr, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddAction( tr, function Pg )
    set tr = null
endfunction
и
function My takes nothing returns nothing
local unit u = udg_Caster[1]
local real angle = GetUnitFacing(u) * bj_DEGTORAD
local real distance = 8
call SetUnitX(u,GetUnitX(u)+distance*Cos(angle))
call SetUnitY(u,GetUnitY(u)+distance*Sin(angle))
set u = null
set angle = null
set distance = null
endfunction


function InitTrig_pow_ch takes nothing returns nothing
    local trigger tr = CreateTrigger(  )
    call TriggerRegisterTimerEventPeriodic( tr, 0.01 )
    call TriggerAddAction( tr, function My )
    set tr = null
endfunction
Поясняю, первый триггер даёт переменной значение на опр. время, чтобы в это время юнит двигался благодаря второму триггу.
Как совместить Эти 2 триггера и оптимизировать?
Как обьявлять глобалки для всех триггов? Я понимаю, что "глобалс/эндглобалс" но куда его вставлять?
Старый 13.06.2011, 13:54
Helpmeplz

offline
Опыт: 11,738
Активность:
Вот так, только зачем тебе это? В памяти все равно будут те же 2 триггера.
Код:
globals
endglobals

function Pg takes nothing returns nothing  
    if GetSpellAbilityId() == 'A01T' then
    set udg_Caster[1] = GetSpellAbilityUnit()
    call TriggerSleepAction( 1.00 )
    set udg_Caster[1] = null
    endif    
endfunction

function My takes nothing returns nothing
local unit u = udg_Caster[1]
local real angle = GetUnitFacing(u) * bj_DEGTORAD
local real distance = 8
call SetUnitX(u,GetUnitX(u)+distance*Cos(angle))
call SetUnitY(u,GetUnitY(u)+distance*Sin(angle))
set u = null
endfunction

function InitTrig_Pow_ch takes nothing returns nothing
    local trigger tr1 = CreateTrigger(  )
    local trigger tr2 = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( tr1, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddAction( tr1, function Pg )
    call TriggerRegisterTimerEventPeriodic( tr2, 0.01 )
    call TriggerAddAction( tr2, function My ) 
    set tr1 = null
    set tr2 = null
endfunction

Вот такого делать не надо:
Код:
set angle = null
set distance = null


Оптимизация в данном случае это переписать этот ужас по-человечески.

Отредактировано Helpmeplz, 13.06.2011 в 14:06.
Старый 13.06.2011, 14:01
Амбидекстрия
Silenced by ScorpioT1000
offline
Опыт: 8,237
Активность:
Helpmeplz:
Вот такого делать не надо:
там же локалки и событие с малым периодом
Helpmeplz:
Вот так, только зачем тебе это? В памяти все равно будут те же 2 триггера.
а с разными событиями одного триггера нельзя сделать?
Srezik:
Как обьявлять глобалки для всех триггов? Я понимаю, что "глобалс/эндглобалс" но куда его вставлять?
подскажи
Helpmeplz:
call TriggerSleepAction( 1.00 )
Чем можно заменить вейт в данном случае, и может ли он помешать?
Старый 13.06.2011, 14:06
Helpmeplz

offline
Опыт: 11,738
Активность:
про глобалки я написал выше
Код:
globals
unit BREATHOFFIRE_CASTER
endglobals

обращение к таким глобалкам происходит без приставки udg в коде всей карты.

что касается движения, посмотри готовые системы и делай так как в них.
Старый 13.06.2011, 14:09
Амбидекстрия
Silenced by ScorpioT1000
offline
Опыт: 8,237
Активность:
Helpmeplz:
обращение к таким глобалкам происходит без приставки udg в коде всей карты.
Но... Почему тогда если я пытаюсь в другом тригге обратиться к ним, то jh говорит что они необьявлены?
Srezik добавил:
Helpmeplz:
что касается движения, посмотри готовые системы и делай так как в них.
Это СЛИШКОМ сложно)
Я пока могу только такое УГ-способности с мувом присвоением переменных.
Srezik добавил:
Так, теперь другая проблема. Почему при использовании фич JNGP (globals/endglobals) вар незапускает карту? просто выводит в главное меню.
Старый 13.06.2011, 14:21
Helpmeplz

offline
Опыт: 11,738
Активность:
значит как-то неправильно обращаешься, у меня все нормально компилируется.
Цитата:
Это СЛИШКОМ сложно)
Я пока могу только такое УГ-способности с мувом присвоением переменных.

лучше посидеть часок-другой и разобраться в такой системе, чем полгода делать ужасный код.
вот хорошая статейка по хешу с примером использования таймера. как раз то что тебе нужно.
Старый 13.06.2011, 14:25
Амбидекстрия
Silenced by ScorpioT1000
offline
Опыт: 8,237
Активность:
Helpmeplz, а насчёт Srezik:
Почему при использовании фич JNGP (globals/endglobals) вар незапускает карту? просто выводит в главное меню.
сделал так, но карту не смог запустить
Старый 13.06.2011, 14:50
Helpmeplz

offline
Опыт: 11,738
Активность:
сохрани карту еще раз
Старый 13.06.2011, 15:02
Амбидекстрия
Silenced by ScorpioT1000
offline
Опыт: 8,237
Активность:
Helpmeplz:
сохрани карту еще раз
Всё так же... А карта должна находиться в папке с варом? Мб у меня из-за того что в другой папке такая проблема
Старый 13.06.2011, 15:17
Helpmeplz

offline
Опыт: 11,738
Активность:
Поставь такие настройки, перезайди в редактор и сохрани карту еще раз.
Старый 13.06.2011, 15:25
Амбидекстрия
Silenced by ScorpioT1000
offline
Опыт: 8,237
Активность:
Всё нормально, фейл оказался в месте расположения карты (*мои документы*/)
Старый 13.06.2011, 15:38
Doc

offline
Опыт: 63,163
Активность:
В пути к карте не должно быть русских букв.
Старый 13.06.2011, 20:47
Закрытая тема

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 06:21.