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

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

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

offline
Опыт: 1,076
Активность:
Помогите новичку с кодом
Я здесь впервые , но не могли бы вы мне помочь.
В кратце :
Каст юнит пускает снаряд(дамми юнита) на вражеского юнита , он получает урон , наносится эффект , и следующее что должно быть , он должен отлетать , но вместо этого он летит правельно , но не останавливается и летит за карту !
помогите пожалуйста , заранее благодарен.
Вот код :
function Trig_FirebollTwo_Conditions takes nothing returns boolean
return GetSpellAbilityId()=='A002'
endfunction

function move_jerx takes nothing returns nothing
local timer t=GetExpiredTimer()
local integer h=GetHandleId(t)
local real a=LoadReal(udg_h,h,1)
local unit c=LoadUnitHandle(udg_h,h,2)
local integer i=LoadInteger(udg_h,h,3)+1
if(i<10)then
    call SetUnitX(c,GetUnitX(c)+25.*Cos(a))
    call SetUnitY(c,GetUnitY(c)+25.*Sin(a))
elseif(i>9 and i<16)then
    call SetUnitX(c,GetUnitX(c)+15.*Cos(a))
    call SetUnitY(c,GetUnitY(c)+15.*Sin(a))
elseif(i>15 and i<19)then
    call SetUnitX(c,GetUnitX(c)+10.*Cos(a))
    call SetUnitY(c,GetUnitY(c)+10.*Sin(a))
elseif(i>18 and i<21)then
    call SetUnitX(c,GetUnitX(c)+5.*Cos(a))
    call SetUnitY(c,GetUnitY(c)+5.*Sin(a))
endif
if(i==21)then
    call PauseTimer(t)
    call FlushChildHashtable(udg_h,h)
    call DestroyTimer(t)
else
    call SaveInteger(udg_h,GetHandleId(t),1,i)
endif
set t=null
set c=null
endfunction

function MoveTwo takes nothing returns nothing
local timer t=GetExpiredTimer()
local integer h=GetHandleId(t)
local unit u=LoadUnitHandle(udg_h,h,1)
local unit c=LoadUnitHandle(udg_h,h,2)
local real x2=GetUnitX(c)
local real y2=GetUnitY(c)
local unit d=LoadUnitHandle(udg_h,h,3)
local real x=GetUnitX(d)
local real y=GetUnitY(d)
local real a=LoadReal(udg_h,h,4)
call SetUnitX(d,x+20.*Cos(a))
call SetUnitY(d,y+20.*Sin(a))
if(((y2-y)*(y2-y)+(x2-x)*(x2-x))<=14400)then
    call PauseTimer(t)
    call FlushChildHashtable(udg_h,h)
    call DestroyTimer(t)
    call RemoveUnit(d)
    call UnitDamageTarget(u,c,GetUnitAbilityLevel(u,'A002')*70.,true,false,ATTACK_TYPE_CHAOS,DAMAGE_TYPE_NORM​AL,null)
    call DestroyEffect(AddSpecialEffectTarget("Abilities\\Spells\\Other\\Incinerate\\FireLordDeathExplod​e.mdl",c,"body"))
    set t=CreateTimer()
    set h=GetHandleId(t)
    call SaveReal(udg_h,h,1,a)
    call SaveUnitHandle(udg_h,h,2,c)
    call SaveInteger(udg_h,h,3,0)
    call TimerStart(t,0.03,true,function move_jerx)
endif
set u=null
set c=null
set d=null
set t=null
endfunction

function Trig_FirebollTwo_Actions takes nothing returns nothing
local timer t=CreateTimer()
local integer h=GetHandleId(t)
local unit u=GetTriggerUnit()
local real x=GetUnitX(u)
local real y=GetUnitY(u)
local unit c=GetSpellTargetUnit()
local real x2=GetUnitX(c)
local real y2=GetUnitY(c)
local real a=Atan2(y2-GetUnitY(u),x2-GetUnitX(u))
local unit d=CreateUnit(GetOwningPlayer(u),'n000',x,y,a*57.295779513)
call SetUnitX(d,x+20.*Cos(a))
call SetUnitY(d,y+20.*Sin(a))
call SaveUnitHandle(udg_h,h,1,u)
call SaveUnitHandle(udg_h,h,2,c)
call SaveUnitHandle(udg_h,h,3,d)
call SaveReal(udg_h,h,4,a)
call TimerStart(t,0.03,true,function MoveTwo)
set t=null
set u=null
set c=null
set d=null
endfunction

function InitTrig_FirebollTwo takes nothing returns nothing
local trigger trg=CreateTrigger()
set udg_h=InitHashtable()
call TriggerRegisterAnyUnitEventBJ(trg,EVENT_PLAYER_UNIT_SPELL_EFFECT)
call TriggerAddCondition(trg,Condition(function Trig_FirebollTwo_Conditions))
call TriggerAddAction(trg,function Trig_FirebollTwo_Actions)
set trg=null
endfunction

Отредактировано alexkill, 29.07.2011 в 15:55.
Старый 29.07.2011, 15:28
16GB
GhostOne User
offline
Опыт: 60,317
Активность:
вот ошибка в move_jerx ты загружаешь с 3 ячейки а сохраняешь в 1
call SaveInteger(udg_h, GetHandleId(t), 1, i)
Старый 29.07.2011, 15:43
DqUaliTy

offline
Опыт: 1,076
Активность:
16GB
Спасибо большое :D
я мучался 2 дня , всё перепробовал а тут такое ...
Надо будет запомнить такое ...
и ещё раз Всем большое спасибо :D
Старый 29.07.2011, 15:51
Закрытая тема

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

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

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

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



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