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

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

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

offline
Опыт: 1,076
Активность:
Даммики летят не правельно
Всем Здрасте , день прекрасный , снежок немного дремлет...
Кароче , дамми юниты летят не так как нужно , тупо в 90 и в 270 градусов по 6 штук.
А должны 12 штук по своему углу в 30 градусов.Скилл мгновенный.
Вот собственно код
function Trig_KrikYarosti_Conditions takes nothing returns boolean
return GetSpellAbilityId()=='A001'
endfunction

function remove_n004 takes nothing returns nothing
    call KillUnit(GetEnumUnit())
endfunction

function move_n004 takes nothing returns nothing
local unit dummy=GetEnumUnit()
local real AngleMove=LoadReal(udg_H,GetHandleId(GetExpiredTimer()),GetHandleId(dummy))
    call SetUnitX(dummy,GetUnitX(dummy)+10.*Cos(AngleMove))
    call SetUnitY(dummy,GetUnitY(dummy)+10.*Sin(AngleMove))
set dummy=null
endfunction

function move_A001 takes nothing returns nothing
local timer t=GetExpiredTimer()
local integer id=GetHandleId(t)
local unit caster=LoadUnitHandle(udg_H,id,0)
local group g=LoadGroupHandle(udg_H,id,1)
local integer i=LoadInteger(udg_H,id,3)+1
    if(i==50)then
        call PauseTimer(t)
        call DestroyTimer(t)
        call FlushChildHashtable(udg_H,id)
        call ForGroup(g,function remove_n004)
        call GroupClear(g)
        call DestroyGroup(g)
    else
        call SaveInteger(udg_H,id,3,i)
        call ForGroup(g,function move_n004)
    endif
set t=null
set caster=null
set g=null
endfunction

function Trig_KrikYarosti_Actions takes nothing returns nothing
local unit caster=GetTriggerUnit()
local real x=GetUnitX(caster)
local real y=GetUnitY(caster)
local unit dummy
local integer index=0
local group g=CreateGroup()
local timer t=CreateTimer()
local integer id=GetHandleId(t)
//local group gg=CreateGroup()
    loop
        exitwhen index>11
        set dummy=CreateUnit(GetOwningPlayer(caster),'n004',x,y,index * 30.)
        call SetUnitX(dummy,x+20.*Cos(index * 0.5236))
        call SetUnitY(dummy,y+20.*Sin(index * 0.5236))
        call SaveReal(udg_H,id,GetHandleId(dummy),30 * index * 0.5236)
        call GroupAddUnit(g,dummy)
        set index=index+1
    endloop
    call SaveUnitHandle(udg_H,id,0,caster)
    call SaveGroupHandle(udg_H,id,1,g)
    call SaveInteger(udg_H,id,3,0)
    call TimerStart(t,0.03,true,function move_A001)
set t=null
set caster=null
set g=null
//set gg=null
set dummy=null
endfunction

function InitTrig_KrikYarosti takes nothing returns nothing
    set gg_trg_KrikYarosti = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_KrikYarosti, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_KrikYarosti, Condition( function Trig_KrikYarosti_Conditions ) )
    call TriggerAddAction( gg_trg_KrikYarosti, function Trig_KrikYarosti_Actions )
endfunction
DqUaliTy добавил:
поможет кто?

Отредактировано DqUaliTy, 30.10.2011 в 19:28.
Старый 30.10.2011, 19:40
16GB
GhostOne User
offline
Опыт: 60,317
Активность:
не очень понятно что значит 30 градусов.
12 снарядов которые разлетаются в разные стороны в 30 градусов друг от друга?
если я правильно понял то так
function Trig_KrikYarosti_Conditions takes nothing returns boolean
return GetSpellAbilityId()=='A001'
endfunction

function remove_n004 takes nothing returns nothing
    call KillUnit(GetEnumUnit())
endfunction

function move_n004 takes nothing returns nothing
local unit dummy=GetEnumUnit()
local real AngleMove=LoadReal(udg_H,GetHandleId(GetExpiredTimer()),GetHandleId(dummy))
    call SetUnitX(dummy,GetUnitX(dummy)+10.*Cos(AngleMove))
    call SetUnitY(dummy,GetUnitY(dummy)+10.*Sin(AngleMove))
set dummy=null
endfunction

function move_A001 takes nothing returns nothing
local timer t=GetExpiredTimer()
local integer id=GetHandleId(t)
local unit caster=LoadUnitHandle(udg_H,id,0)
local group g=LoadGroupHandle(udg_H,id,1)
local integer i=LoadInteger(udg_H,id,3)+1
    if(i==50)then
        call PauseTimer(t)
        call DestroyTimer(t)
        call FlushChildHashtable(udg_H,id)
        call ForGroup(g,function remove_n004)
        call GroupClear(g)
        call DestroyGroup(g)
    else
        call SaveInteger(udg_H,id,3,i)
        call ForGroup(g,function move_n004)
    endif
set t=null
set caster=null
set g=null
endfunction

function Trig_KrikYarosti_Actions takes nothing returns nothing
local unit caster=GetTriggerUnit()
local real x=GetUnitX(caster)
local real y=GetUnitY(caster)
local unit dummy
local integer index=0
local group g=CreateGroup()
local timer t=CreateTimer()
local integer id=GetHandleId(t)
local real r = 0.
//local group gg=CreateGroup()
    loop
        exitwhen index>11
        set r = index*30.
        set dummy=CreateUnit(GetOwningPlayer(caster),'n004',x,y,r)
        set r = r*bj_DEGTORAD
        call SetUnitX(dummy,x+20.*Cos(r))
        call SetUnitY(dummy,y+20.*Sin(r))
        call SaveReal(udg_H,id,GetHandleId(dummy),r)
        call GroupAddUnit(g,dummy)
        set index=index+1
    endloop
    call SaveUnitHandle(udg_H,id,0,caster)
    call SaveGroupHandle(udg_H,id,1,g)
    call SaveInteger(udg_H,id,3,0)
    call TimerStart(t,0.03,true,function move_A001)
set t=null
set caster=null
set g=null
//set gg=null
set dummy=null
endfunction

function InitTrig_KrikYarosti takes nothing returns nothing
    set gg_trg_KrikYarosti = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_KrikYarosti, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_KrikYarosti, Condition( function Trig_KrikYarosti_Conditions ) )
    call TriggerAddAction( gg_trg_KrikYarosti, function Trig_KrikYarosti_Actions )
endfunction
Старый 30.10.2011, 20:02
DqUaliTy

offline
Опыт: 1,076
Активность:
Ага , спасибо 16GB, очень помогли.
Старый 30.10.2011, 23:32
Закрытая тема

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

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

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

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



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