Помогите разобраться с системой полета снарядов, столкнулся с проблемой, снаряд создается, но не летит. Снизу привел код, переменные что использовал и саму карту.
  1. координаты юнита
function abp takes real xa, real ya, real xb, real yb returns real
return 57.295827*Atan2(yb-ya, xb-xa)
endfunction
  1. это лишняя херня
function AdvancedModel takes integer id returns integer
local integer id1=LoadInteger(udg_h,id,2)
local integer id2=LoadInteger(udg_h,id,3)
local integer ans=id
if id1==0 or id2==0 then
return id
endif
if udg_Advanced[1+GetPlayerId(GetLocalPlayer())] then
set ans=id2
endif
return ans
endfunction
  1. сохраняет юнита
function SetOwner takes unit this,unit owner returns nothing
call SaveUnitHandle(udg_h,GetHandleId(this),1,owner)
endfunction
  1. берем юнита записанного в число, устанавливаем ему координаты, скорость полета, дальность полета, способность, тип приказа
function Missle takes integer dummy,real StartX,real StartY,real angle,real speed,real maxfly,real radius,integer spell,integer spelllvl,integer order,unit owner returns unit
local unit u=CreateUnit(GetOwningPlayer(owner),AdvancedModel(dummy),StartX,StartY,angle)
local integer sh=GetHandleId(u)
call SetOwner(u,owner)
call SaveReal(udg_MH,sh,2,speed)
call SaveReal(udg_MH,sh,3,maxfly)
call SaveReal(udg_MH,sh,4,radius)
call SaveInteger(udg_MH,sh,5,spell)
call SaveInteger(udg_MH,sh,6,spelllvl)
call SaveInteger(udg_MH,sh,7,order)
call SaveReal(udg_MH,sh,8,damage)
call SaveUnitHandle(udg_MH,sh,9,owner)
call SaveReal(udg_MH,sh,10,StartX)
call SaveReal(udg_MH,sh,11,StartY)
call GroupAddUnit(udg_Missles,u)
return u
endfunction
  1. записываем номер снаряда
function MissleMakeLastTillEnd takes unit u returns nothing
call SaveInteger(udg_MH,GetHandleId(u),12,1)
endfunction
  1. записываем в число кто кастанул и на кого применил
function MissleMakeFollowTarget takes unit u,unit u2 returns nothing
call SaveUnitHandle(udg_MH,GetHandleId(u),15,u2)
endfunction
Вот сам скил
function Trig_FireBall_Conditions takes nothing returns boolean
local integer id=GetSpellAbilityId()
return id=='A003'
endfunction
function Trig_FireBall_Actions takes nothing returns nothing
local unit u=GetTriggerUnit()
local integer i=2+R2I(I2R(GetHeroInt(u,true))*0.02)
local real X=GetUnitX(u)
local real Y=GetUnitY(u)
local real speed=15.
local real fly=800.
local integer id=GetSpellAbilityId()
local real damage
if id=='A003' then
set i=6
set speed=15.
set damage=25.+0.3*GetHeroIntSkill(u)
endif
loop
exitwhen i==0
set i=i-1
call Missle('o001',X,Y,abp(X,Y,GetSpellTargetX(),GetSpellTargetY())+GetRandomReal(-10.,10.),speed,fly,50.,-1,R2I(damage),0,u)
endloop
set u=null
endfunction

Где код таймера который должен двигать снаряд?
`
ОЖИДАНИЕ РЕКЛАМЫ...
23
Похожие вопросы:

ответ
Идеальный вариант чтобы игрок сам мог решать, нужно ли ему это. Сделай, если будет смотреться неплохо. И каким то образом запилить возможность выключения этой фичи.
ответ
Проблема решена. Обнаружилась довольно неожиданно - заметил, что во время крита герой не разбивал лицо сам себе, начал искать модификаторы атаки - у героя было 3 пустышки с нулевыми значениями на основе "ракет". При всех пустых значениях вылетает невидимая ракета по самому себе.
ответ
Рассмотрим на примере модельки простого огра, у него есть анимация атаки slam и удар дубиной по земле
  1. Старт атаки
  2. Создаём упреждающий в области впереди героя (маркер, ну эффект ауры например), чтобы игрокам было понятно что скоро тут что-то произойдёт
  3. Проигрываем анимацию "attack slam" или нужную другую, для замаха дубиной, если надо больше и не хватает стандартной скосроти, замедляем скорость анимации
  4. Визуально подгадываем или упытным путём определяем время касания дубиной полна от 1 до 4 сек, на ваше усмотрение
  5. Запускаем новый разовый таймер с нужным периодом, и как таймер сработает, создаём спец эффект, и наносим урон юнитам в области эффекта
(это самый простейший способ, хоть на гуи можно сделать)

26
может хеш таблицу не инициализировал, может еще что. экстрасенсов нет, лазить по чужим картам тоже не особо кому интересно, дебажте, разбирайтесь, иначе так и продолжите бездумно ковыряться
12
Hate:
может хеш таблицу не инициализировал, может еще что. экстрасенсов нет, лазить по чужим картам тоже не особо кому интересно, дебажте, разбирайтесь, иначе так и продолжите бездумно ковыряться
Да все инициализировал, все изначально было в джасс коде. Все чего не хватало компилятор выдавал в виде ошибок

Вот глобальные переменные
26
Kolya12:
Hate:
может хеш таблицу не инициализировал, может еще что. экстрасенсов нет, лазить по чужим картам тоже не особо кому интересно, дебажте, разбирайтесь, иначе так и продолжите бездумно ковыряться
Да все инициализировал, все изначально было в джасс коде. Все чего не хватало компилятор выдавал в виде ошибок

Вот глобальные переменные
вперед. это лучший совет
28
Если бы ты красиво всё оформил, то можно было бы помочь, а так оставил кучу каких-то триггеров, лишнего кода и ройтесь сами)
12
rsfghd:
Если бы ты красиво всё оформил, то можно было бы помочь, а так оставил кучу каких-то триггеров, лишнего кода и ройтесь сами)
Конкретнее написал
24
Где код таймера который должен двигать снаряд?
Принятый ответ
12
Таймер полета снаряда нашел, карту обновил. Теперь вопрос где найти наносимый урон.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.