Помогите разобраться с системой полета снарядов, столкнулся с проблемой, снаряд создается, но не летит. Снизу привел код, переменные что использовал и саму карту.
  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

Принятый ответ

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

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

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

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