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

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

Ответ
 
Vampirrr
O_o
offline
Опыт: 19,286
Активность:
Доработка триггера
Код:
function Trig_Spiral_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'AHtc' 
endfunction

function Trig_Spiral_Actions takes nothing returns nothing
local real x = GetUnitX(GetSpellAbilityUnit())
local real y = GetUnitY(GetSpellAbilityUnit())
local integer i = 0
local effect array e
local real d = 50
local real angle = 0
    loop
        exitwhen i == 100
        set e[i] = AddSpecialEffectLoc("Buildings\\Other\\BarrelsUnit0\\BarrelsUnit0.mdl", Location(x+d*Cos(angle*0.017), y+d*Sin(angle*0.017)))
        set d = d+3.5
        set angle = angle+10
        set i = i+1
    endloop
    set i = 0
    loop
        exitwhen i == 100
        call DestroyEffect(e[i])
        set e[i] = null
        set i = i+1
    endloop
endfunction

//===========================================================================
function InitTrig_Spiral takes nothing returns nothing
    set gg_trg_Spiral = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Spiral, EVENT_PLAYER_UNIT_SPELL_CAST )
    call TriggerAddCondition( gg_trg_Spiral, Condition( function Trig_Spiral_Conditions ) )
    call TriggerAddAction( gg_trg_Spiral, function Trig_Spiral_Actions )
endfunction


мне нужно что бы каждые 0.7 секунд создавался спецэффект по этой системе и спустя 2.1 секунды удалялся (т.е. создается спецэффект номер 1, через 0.7 сек номер 2 и т.д., но параллельно нужно что бы эффект но 1 исчез через 2.1 секунды, еще через 2.1 сек номер 2 и т.д.)..Я не нашел решения..
[+] 1 пункт от ScorpioT1000: Гигантские заголовки
Старый 01.02.2009, 06:24
MF
Что-то вокруг не так
offline
Опыт: 26,594
Активность:
Код читать лениво... Заранее известно сколько эффектов будет?
Старый 01.02.2009, 10:34
agentex

offline
Опыт: 34,834
Активность:
Vampirrr, ты в курсе что после такого:
Код:
loop
        exitwhen i == 100
        set e[i] = AddSpecialEffectLoc("Buildings\\Other\\BarrelsUnit0\\BarrelsUnit0.mdl"

слабые машины повиснут на несколько минут?
Старый 01.02.2009, 10:37
MF
Что-то вокруг не так
offline
Опыт: 26,594
Активность:
в общем не смотря на то что будет тормозить, решение одно создаешь эффект и разрушаешь в массиве эффект с индексом на 3 меньше. (само собой следить за индексами)
Старый 01.02.2009, 13:14
Van Damm
wait... what?
offline
Опыт: 22,268
Активность:
» раскрыть
Код:
scope Spiral

   globals
      private effect array ef
      private integer i = 0
      private integer j = 0
      private string eArt = "Buildings\\Other\\BarrelsUnit0\\BarrelsUnit0.mdl"
      private real x
      private real y
   endglobals

   function LoopCreate takes nothing returns nothing
      if i<=100 then
         set ef[i] = AddSpecialEffect(eArt, x+(50+3.5*i)*Cos(i*0.17), y+(50+3.5*i)*Sin(i*0.17)))
         set i = i + 1
      else
         call PauseTimer(GetExpiredTimer())
         call DestroyTimer(GetExpiredTimer())
      endif
   endfunction

   function LoopDestroy takes nothing returns nothing
      if j<=100 then
         call DestroyEffect(ef[j])
         set ef[i] = null
         set j = j + 1
      else
         call PauseTimer(GetExpiredTimer())
         call DestroyTimer(GetExpiredTimer())
      endif
   endfunction



   function Trig_Spiral_Conditions takes nothing returns boolean
      return GetSpellAbilityId() == 'AHtc' 
   endfunction

   function Trig_Spiral_Actions takes nothing returns nothing
      set x = GetUnitX(GetSpellAbilityUnit())
      set y = GetUnitY(GetSpellAbilityUnit())
      set i = 0
      set j = 0
      call TimerStart(CreateTimer(), 0.7, true, funciton LoopCreate)
      call TimerStart(CreateTimer(), 2.1, true, funciton LoopDestroy)
   endfunction


   function InitTrig_Spiral takes nothing returns nothing
      set gg_trg_Spiral = CreateTrigger(  )
      call TriggerRegisterAnyUnitEventBJ( gg_trg_Spiral, EVENT_PLAYER_UNIT_SPELL_CAST )
      call TriggerAddCondition( gg_trg_Spiral, Condition( function Trig_Spiral_Conditions ) )
      call TriggerAddAction( gg_trg_Spiral, function Trig_Spiral_Actions )
   endfunction

endscope
Старый 01.02.2009, 13:28
MF
Что-то вокруг не так
offline
Опыт: 26,594
Активность:
ИМХО можно было и без таймеров...
Старый 01.02.2009, 13:30
Van Damm
wait... what?
offline
Опыт: 22,268
Активность:
Вариантов на самом деле очень много
Старый 01.02.2009, 13:32
Vampirrr
O_o
offline
Опыт: 19,286
Активность:
Van Damm, говорит Statement outside of function
Старый 01.02.2009, 17:09
Van Damm
wait... what?
offline
Опыт: 22,268
Активность:
NewGen стоит, vJass включен? Я под него писал.
Старый 01.02.2009, 22:03
Vampirrr
O_o
offline
Опыт: 19,286
Активность:
Van Damm, стоит, включен..я вообще не пойму что с ним твориться..объявляю глобалки - тоже не пахает, скоп - не пахает, я в шоке..может быть из-за того, что стоит совместно с WEU?
Старый 02.02.2009, 00:49
Van Damm
wait... what?
offline
Опыт: 22,268
Активность:
Проверь, включен ли JassHelper и не стоит ли "Disable vJass syntax" в меню JassHelper
Старый 02.02.2009, 02:38
Ответ

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

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

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

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



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