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

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

Ответ
 
Anufis

offline
Опыт: 6,290
Активность:
Избавление от wait'а
Как-то можно в этой функции call TriggerSleepAction(0.04) заменить на таймеры или что-нибудь подобное?


Код:
function Missle_c takes nothing returns boolean
return IsUnitAliveBJ(GetFilterUnit())
endfunction

function Missle_c2 takes nothing returns boolean
    return ( IsDestructableAliveBJ(GetFilterDestructable()) == true )
endfunction

function Missle takes integer dummy,real StartX,real StartY,real angle,real speed,real maxfly,real radius,integer spell,integer spelllvl,string order,real damage,unit owner2 returns nothing
local unit u2
local real c=0.1
local real X=StartX
local real Y=StartY
local group g=CreateGroup()
local player owner=GetOwningPlayer(owner2)
local destructable d
local boolean b=false
local unit u=CreateUnit(owner,dummy,X,Y,angle)
set angle=angle*0.0174
loop
    exitwhen (X-StartX)*(X-StartX)+(Y-StartY)*(Y-StartY)>maxfly*maxfly
    set X=X+Cos(angle)*speed*c
    set Y=Y+Sin(angle)*speed*c
    if not IsTerrainPathable(X,Y,PATHING_TYPE_ANY) then
      call KillUnit(u)
      set u=null
      return
    endif
    call SetUnitX(u,X)
    call SetUnitY(u,Y)
    call GroupEnumUnitsInRange(g,X,Y,radius,Condition(function Missle_c))
    loop
        set u2=FirstOfGroup(g)
        exitwhen u2==null
        call GroupRemoveUnit(g,u2)
        if (u2!=owner2) then
        call CastSpell(owner2,u2,spell,spelllvl,order)
        set b=true
        endif
    endloop
    if b then
    call KillUnit(u)
    set u=null
    set d=null
    return
    endif
    set d=RandomDestructableInRectBJ(RectFromCenterSizeBJ(GetUnitLoc(u),radius*1.5,radiu  s*1.5),Condition(function Missle_c))
    if d!=null then
    call SetDestructableLife(d,GetDestructableLife(d)-damage)
    call KillUnit(u)
    set u=null
    set d=null
    return
    endif
    call TriggerSleepAction(0.04)
endloop
call KillUnit(u)
set u=null
endfunction
Старый 12.06.2009, 21:13
Anufis

offline
Опыт: 6,290
Активность:
Вопрос мой прочти.
Старый 12.06.2009, 21:29
Ответ

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

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

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

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



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