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

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

Закрытая тема
 
Sidhe
Unity3D engine
offline
Опыт: 7,721
Активность:
Jass таймеры
имеется 2 триггера, в первом задаются парамеры таймера (число), а в другом по истечению времени заданном в таймере триггер будет выполнять действия.
заменил все глобалки локалками, но вот как записать чтобы по истечению времени запускался сл. триггер? или происходили слейдующие действия когда время по таймеру = нулю будет?
З.Ы. джасс изучаю буквально пару дней
Старый 28.02.2010, 17:40
exAres
I love magic :)
offline
Опыт: 7,788
Активность:
call TimerStart(твой таймер,время через которое он сработает,true/false(будет ли он цикличным),функция которая запустится при срабатывании таймера)
Старый 28.02.2010, 18:47
Sidhe
Unity3D engine
offline
Опыт: 7,721
Активность:
хм... а как тогда отследить таймер?... что то не понимаю слегка... типа следующее дейвствие если таймер истек
Старый 28.02.2010, 23:08
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
GetExpiredTimer() - таймер, который истек. Будет доступен в функции, которая вызывается таймером по-истечению.
Старый 28.02.2010, 23:11
XOR

offline
Опыт: 38,159
Активность:
А зачем, если таймер сам запускает функцию?
Последний аргумент.
Старый 28.02.2010, 23:12
Mr_ILYAS
Kicked by XimikS
offline
Опыт: 492
Активность:
function Trig_a_Conditions takes nothing returns boolean
  return GetSpellAbilityId()=='A000' //{{//}}сравниваем абилку которую кастанули
endfunction

function move takes nothing returns nothing
  local timer t=GetExpiredTimer() //{{//}}истёкший таймер, тот самый который мы запустили ниже
  local unit u=LoadUnitHandle(udg_Hash,GetHandleId(t),1) //{{//}}выгружаем сохранённого юнита
  local real a=GetUnitFacing(u) //{{//}}устанавливаем угол поворота лица юнита
  call SetUnitX(u,GetUnitX(u)+20*Cos(a*bj_DEGTORAD)) //{{//}}передвигаем юнита по иксу
  call SetUnitY(u,GetUnitY(u)+20*Sin(a*bj_DEGTORAD)) //{{//}}передвигаем по игреку
  set t=null //{{//}}обнуляем переменные
  set u=null
endfunction

function Trig_a_Actions takes nothing returns nothing
  local unit u=GetSpellAbilityUnit()
  local timer t=CreateTimer() //{{//}}создаём таймер
  call SaveUnitHadndle(udg_Hash,GetHandleId(t),1,u) //{{//}}сохраняем юнита для передачи его в функцию выше
  call TimerStart(t,0.03,true,function move) //{{//}}если стоит true, тобудет работать как многократный.
  set t=null //{{//}}обнуляем переменные, ибо в этой функции они нам больше не нужны. Всё, что надо мы уже сохранили
  set u=null
endfunction

function InitTrig_a takes nothing returns nothing
  set gg_trg_a=CreateTrigger()
  call TriggerRegisterAnyUnitEventBJ(gg_trg_a,EVENT_PLAYER_UNIT_SPELL_EFFECT)
  call TriggerAddCondition(gg_trg_a,Condition(function Trig_a_Conditions))
  call TriggerAddAction( gg_trg_a,function Trig_a_Actions)
endfunction
этот маленький примерчик, в котором при касте абилки юнит двигается в сторону куда он смотрит

Отредактировано ShadoW DaemoN, 01.03.2010 в 16:57.
Старый 28.02.2010, 23:17
Sidhe
Unity3D engine
offline
Опыт: 7,721
Активность:
Mr_ILYAS, вот точто нужно, спасибо! разобрался=)
Старый 28.02.2010, 23:35
Закрытая тема

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

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

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

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



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