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

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

Закрытая тема
 
Maelstraz

offline
Опыт: 127
Активность:
Простейшая Moving System для снарядов. Вопросы по правильности кода.
И снова с вами я, человек с произвольно отключающимся мозгом и кривизной рук типа real

Порыскал по форуму и не нашёл ни одной MS, которая меня бы удовлетворяла. Решил сделать свою, намного более простую.

Господа знатоки, внимание, вопрос : как заставить это работать ?

Код:
library Missiles

 globals
  
  unit array Miss
  integer NumM = 0
  integer NumR = 0
  trigger MoveCycle = CreateTrigger()
  
 endglobals
 
 //============
 //=StepMoving=
 //============
 
 function TimerStep takes nothing returns nothing
  local integer num = 0
  loop
   call SetUnitX(Miss[num], GetUnitX(Miss[num]) + Cos(0.0174*GetUnitFacing(Miss[num])))
   call SetUnitY(Miss[num], GetUnitY(Miss[num]) + Sin(0.0174*GetUnitFacing(Miss[num])))
   set num=num+1
   exitwhen Miss[num]==null
  endloop
 endfunction 
 
 //========
 //=Launch=
 //========
 
 private function Push takes nothing returns nothing
 
 set NumM=0
  
  //=Check Dead Missiles=
  
  loop
   if IsUnitDeadBJ(Miss[NumM]) == true then
    set NumR=NumM
     loop
      set Miss[NumR]=Miss[NumR+1]
      set NumR=NumR+1 
      exitwhen Miss[NumR]==null
     endloop 
    else
     set NumM=NumM+1
   endif
   exitwhen Miss[NumM]==null
  endloop 
  
  //=Create Missile=
  
  set Miss[NumM]=CreateUnit(GetOwningPlayer(GetSpellAbilityUnit()), 'h002', GetUnitX(GetSpellAbilityUnit()), GetUnitY(GetSpellAbilityUnit()), GetUnitFacing(GetSpellAbilityUnit()))
 endfunction
 
 function InitTrig_Taihou takes nothing returns nothing
  local trigger Taihou = CreateTrigger()
  call TriggerRegisterAnyUnitEventBJ(Taihou, EVENT_PLAYER_UNIT_SPELL_CHANNEL)
  call TriggerAddAction(Taihou, function Push)
  call TriggerRegisterTimerEventPeriodic(MoveCycle, 0.04)
  call TriggerAddAction(MoveCycle, function TimerStep)
  
 endfunction
 
endlibrary

Отредактировано Maelstraz, 17.10.2009 в 14:06.
Старый 16.10.2009, 14:18
BK.Jugg
террорист из КиП
offline
Опыт: 27,066
Активность:
Цитата:
Порыскал по форуму и не нашёл ни одной MS, которая меня бы удовлетворяла

http://xgm.guru/forum/showthread.php?t=22095
Старый 16.10.2009, 14:23
Maelstraz

offline
Опыт: 127
Активность:
BK.Jugg, разработки "махровых" экспертов, как правило, достаточно сложны для понимания не-экспертом. А я не хочу использовать то, о принципе работы чего не знаю, если могу сделать то, что понятно не только мне, но и другим новичкам. В первую очередь, я начал изучать JASS для того, чтобы его понять и уметь им манипулировать, и только во вторую - чтобы устранить утечки памяти.

Ах да, вопрос по теме : если принцип работы системы, в целом, правилен, не будет ли она тормозить ?

И где возможны утечки ?
Старый 16.10.2009, 14:32
Maelstraz

offline
Опыт: 127
Активность:
Найдена ересь : при каждом запуске ракеты создаётся триггер с циклом... Следовательно, в теории, каждый запуск ракет будет их ускорять в математической прогрессии...

Maelstraz добавил:
В общем, запихнул это счастье в данную мне ранее работающую библиотеку... Помогло...
Старый 17.10.2009, 14:57
Закрытая тема

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

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

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

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



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