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

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

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

offline
Опыт: 410
Активность:
не корректно ловит юнита между юнитами
весь мозг уже себе проел. Суть в том что,
есть 4 юнита, которые крутятся вокруг некой точки(ведьмак на примере) и от каждого юнита идет молния в ведьмака. Как только любой другой юнит касается одной из 4-ех молний, проиходит какое-то действие (на примере это просто эффект на головой).
2 момента:
  1. почему-то не срабатывает синяя молния;
  2. если просто "ходить по кругу" между какими-то двумя молниями(не касаясь их) - то эффект тоже срабатывает - как-будто коснулся.
разные цвета молний даны для удобства.
» код
function test_Func001A takes nothing returns nothing
    local real array r
    local integer h = LoadInteger(udg_hash, 80, 1)
    local unit u = LoadUnitHandle(udg_hash, h, 1)
    local unit c1 = LoadUnitHandle(udg_hash, 52, 1)
    local unit c2 = LoadUnitHandle(udg_hash, 52, 2)
    local unit c3 = LoadUnitHandle(udg_hash, 52, 3)
    local unit c4 = LoadUnitHandle(udg_hash, 52, 4)
    local location locu = GetUnitLoc(u)
    local location locc1 = GetUnitLoc(c1)
    local location locc2 = GetUnitLoc(c2)
    local location locc3 = GetUnitLoc(c4)
    local location locc4 = GetUnitLoc(c4)
    local effect e
    if(GetEnumUnit()!=c1)and(GetEnumUnit()!=c2)and(GetEnumUnit()!=c3)and(GetEnumUnit()!=c4)and(GetEnumUn​it()!=u) then
        set r[1] = RAbsBJ(AngleBetweenPoints(locu, GetUnitLoc(GetEnumUnit())))
//юнит 1
        set r[11] = RAbsBJ(AngleBetweenPoints(locu, locc1))
        set r[31] = RAbsBJ(AngleBetweenPoints(locc1, GetUnitLoc(GetEnumUnit())))
        set r[41] = DistanceBetweenPoints(locc1, locu)
//юнит 2
        set r[12] = RAbsBJ(AngleBetweenPoints(locu, locc2))
        set r[32] = RAbsBJ(AngleBetweenPoints(locc2, GetUnitLoc(GetEnumUnit())))
        set r[42] = DistanceBetweenPoints(locc2, locu)
//юнит 3
        set r[13] = RAbsBJ(AngleBetweenPoints(locu, locc3))
        set r[33] = RAbsBJ(AngleBetweenPoints(locc3, GetUnitLoc(GetEnumUnit())))
        set r[43] = DistanceBetweenPoints(locc3, locu)
//юнит 4
        set r[14] = RAbsBJ(AngleBetweenPoints(locu, locc4))
        set r[34] = RAbsBJ(AngleBetweenPoints(locc4, GetUnitLoc(GetEnumUnit())))
        set r[44] = DistanceBetweenPoints(locc4, locu)
        if ((DistanceBetweenPoints(GetUnitLoc(GetEnumUnit()), locu)<=r[41])and(DistanceBetweenPoints(GetUnitLoc(GetEnumUnit()), locc1)<=r[41]))and((RAbsBJ((r[11] - r[1]))<=5.)or(RAbsBJ((r[11] - r[31]))<=3.)) then
            set e = AddSpecialEffectTargetUnitBJ("origin", GetEnumUnit(), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl")
        elseif ((DistanceBetweenPoints(GetUnitLoc(GetEnumUnit()), locu)<=r[42])and(DistanceBetweenPoints(GetUnitLoc(GetEnumUnit()), locc2)<=r[42]))and((RAbsBJ((r[12] - r[1]))<=5.)or(RAbsBJ((r[12] - r[32]))<=3.)) then
            set e = AddSpecialEffectTargetUnitBJ("origin", GetEnumUnit(), "Abilities\\Spells\\Demon\\DarkPortal\\DarkPortalTarget.mdl")
        elseif ((DistanceBetweenPoints(GetUnitLoc(GetEnumUnit()), locu)<=r[43])and(DistanceBetweenPoints(GetUnitLoc(GetEnumUnit()), locc3)<=r[43]))and((RAbsBJ((r[13] - r[1]))<=5.)or(RAbsBJ((r[13] - r[33]))<=3.)) then
            set e = AddSpecialEffectTargetUnitBJ("origin", GetEnumUnit(), "Abilities\\Spells\\Items\\AIsm\\AIsmTarget.mdl")
        elseif ((DistanceBetweenPoints(GetUnitLoc(GetEnumUnit()), locu)<=r[44])and(DistanceBetweenPoints(GetUnitLoc(GetEnumUnit()), locc4)<=r[44]))and((RAbsBJ((r[14] - r[1]))<=5.)or(RAbsBJ((r[14] - r[34]))<=3.)) then
            set e = AddSpecialEffectTargetUnitBJ("origin", GetEnumUnit(), "Abilities\\Spells\\Human\\MassTeleport\\MassTeleportTarget.mdl")
        endif
        call DestroyEffect(e)
        set e = null
    endif
    set u = null
    set c1 = null
    set c2 = null
    set c3 = null
    set c4 = null
    call RemoveLocation(locu)
    set locu = null
    call RemoveLocation(locc1)
    set locc1 = null
    call RemoveLocation(locc2)
    set locc2 = null
    call RemoveLocation(locc3)
    set locc3 = null
    call RemoveLocation(locc4)
    set locc4 = null
endfunction

function test_Move takes nothing returns nothing
    local timer t = GetExpiredTimer()
    local integer h = GetHandleId(t)
    local unit u = LoadUnitHandle(udg_hash, h, 1)
    local unit c = GetEnumUnit()
    local real a = LoadReal(udg_hash, GetHandleId(c), 4) + 0.024906584
    local location locc
    local location locc2 = GetUnitLoc(u)
    local integer idh = h
    call SaveInteger(udg_hash, 80, 1, idh)
    call SetUnitX(c, GetUnitX(u) + 580. * Cos(a))
    call SetUnitY(c, GetUnitY(u) + 580. * Sin(a))
    call SaveReal(udg_hash, GetHandleId(c), 4, a)
    set locc = GetUnitLoc(GetEnumUnit())
    call MoveLightningEx(LoadLightningHandle(udg_hash, 53, GetHandleId(GetEnumUnit())), true, GetLocationX(locc), GetLocationY(locc), GetLocationZ(locc), GetLocationX(locc2), GetLocationY(locc2), GetLocationZ(locc2))
    set c = null
    set u = null
    set t = null
    call RemoveLocation(locc)
    set locc = null
    call RemoveLocation(locc2)
    set locc2 = null
endfunction

//function test_RemoveUnits takes nothing returns nothing
//local unit c=GetEnumUnit()
//call FlushChildHashtable(udg_hash,GetHandleId(c))
//call FlushChildHashtable(udg_hash,52)
//call FlushChildHashtable(udg_hash,53)
//call RemoveUnit(c)
//set c=null
//endfunction

function test_Group_Actions takes nothing returns nothing
    local timer t = GetExpiredTimer()
    local integer h = GetHandleId(t)
    local group g = LoadGroupHandle(udg_hash, h, 2)
    local integer i = LoadInteger(udg_hash, h, 3)
    local unit u = LoadUnitHandle(udg_hash, h, 1)
    local location loc = GetUnitLoc(u)
    call ForGroup(g, function test_Move)
    call ForGroup(GetUnitsInRangeOfLocAll(600., loc), function test_Func001A)

//потом когда надо будет удалить всё это
//
//if LoadBoolean(udg_hash,h,4)==true then
//    call PauseTimer(t)
//    call FlushChildHashtable(udg_hash,h)
//    call DestroyTimer(t)
//    call ForGroup(g,function test_RemoveUnits)
//    call DestroyGroup(g)
//endif
    set t = null
    set g = null
    set u = null
    call RemoveLocation(loc)
    set loc = null
endfunction

function Trig_test_Action takes nothing returns nothing
    local real centrx = GetRectCenterX(gg_rct_test_rect)
    local real centery = GetRectCenterY(gg_rct_test_rect)
    local unit u = CreateUnit(Player(0), 'hspt', centrx, centery, 0.)
    local timer t = CreateTimer()
    local unit c
    local real x = GetUnitX(u)
    local real y = GetUnitY(u)
    local group g = CreateGroup()
    local integer h = GetHandleId(t)
    local location locu = GetUnitLoc(u)
    local location locc
    local location locc2 = GetUnitLoc(u)
    local lightning lig
    local string array s
    local integer i = 1
    loop
        set c = CreateUnit(Player(0), 'hfoo', x, y, 0.)
        call SaveUnitHandle(udg_hash, 52, i, c)
        call SetUnitX(c, x + 580. * Cos(i * 1.57079628))
        call SetUnitY(c, y + 580. * Sin(i * 1.57079628))
        call SaveReal(udg_hash, GetHandleId(c), 4, i * 1.57079628)
        call GroupAddUnit(g, c)
        exitwhen(i==4)
        set i = i + 1
    endloop
    set s[1] = "HWSB"
    set s[2] = "DRAL"
    set s[3] = "DRAM"
    set s[4] = "AFOD"
    set i = 1
    loop
        set locc = GetUnitLoc(LoadUnitHandle(udg_hash, 52, i))
        set lig = AddLightningLoc(s[i], locc, locc2)
        call SaveLightningHandle(udg_hash, 53, GetHandleId(LoadUnitHandle(udg_hash, 52, i)), lig)
        call MoveLightningLoc(lig, locc, locc2)
        call RemoveLocation(locc)
        set locc = null
        set lig = null
        exitwhen(i==4)
        set i = i + 1
    endloop
    call SaveUnitHandle(udg_hash, h, 1, u)
    call SaveGroupHandle(udg_hash, h, 2, g)
    call SaveInteger(udg_hash, h, 3, 0)
    call SaveBoolean(udg_hash, h, 4, false)
    call TimerStart(t, 0.03, true, function test_Group_Actions)
    set c = null
    set u = null
    set t = null
    call RemoveLocation(locu)
    set locu = null
    call RemoveLocation(locc2)
    set locc2 = null
endfunction

function InitTrig_test takes nothing returns nothing
    local trigger trg = CreateTrigger()
    call TriggerRegisterTimerEventSingle(trg, 1.)
    call TriggerAddAction(trg, function Trig_test_Action)
    set trg = null
endfunction
особенно проблема со вторым моментом.
P.S: при проектировании руководствовался картами: проход между юнитами, движение юнитов по кругу
[+] замечание от ScorpioT1000: не заливайте плиз на айпикчу, там проблемы с сервером

Отредактировано CKrab, 27.01.2012 в 09:48.
Старый 26.01.2012, 19:59
alpha

offline
Опыт: 7,387
Активность:
Почему не используешь отладочные сообщения?
Старый 26.01.2012, 20:15
Nerevar
I'll be back!
offline
Опыт: 18,352
Активность:
Попробуйте повыводить на экран углы от центра до каждой из молний,а также в случае нахождения рядом юнита,которого эти молнии могут "зацепить" также выведите угол от его позиции до центра и сравните полученные углы.
Также код содержит множество утекающих точек,при совершении действия подобного этому:
(DistanceBetweenPoints(GetUnitLoc(GetEnumUnit()), locu)<=r[41]
Также советую перейти на использование координат,а не точек
Старый 26.01.2012, 20:23
Manhun1

offline
Опыт: 5,042
Активность:
Nerevar, Также советую перейти на использование координат,а не точек
Иначе это можно и на гуи писать
Старый 26.01.2012, 20:26
Nerevar
I'll be back!
offline
Опыт: 18,352
Активность:
Я так понял CKrab, как раз таки и переходит с гуи на джасс,так что ему мешает полностью отказаться от пережитков прошлого?
Старый 26.01.2012, 20:30
CKrab

offline
Опыт: 410
Активность:
благодарю alpha, Nerevar, что направили на путь истиный (:
я тут утром повтыкал: условия должны быть такие:
  1. если дистанция между вошедшим юнитом(пойманным молнией) и центром <= дистанции юнита(с молнией) и центром это и так понятно
  2. (если угол между вошедшим и центром)+/-5 == (углу юниту(с молнией) и центром)+/-5
но как высчитать эти +/-5 градусов?
я тут придумал только один способ, но он извращенный: через двойной цикл. Есть способы полегче?
» извращенный способ
set i=1 //integer
set ii=21 //integer
//угол между центром и юнитом(с молнией)
set n[1] = R2I(AngleBetweenPoints(locu, locc1)) - 5
set n[2] = R2I(AngleBetweenPoints(locu, locc1)) - 4
set n[3] = R2I(AngleBetweenPoints(locu, locc1)) - 3
set n[4] = R2I(AngleBetweenPoints(locu, locc1)) - 2
set n[5] = R2I(AngleBetweenPoints(locu, locc1)) - 1
set n[6] = R2I(AngleBetweenPoints(locu, locc1))
set n[7] = R2I(AngleBetweenPoints(locu, locc1)) + 1
set n[8] = R2I(AngleBetweenPoints(locu, locc1)) + 2
set n[9] = R2I(AngleBetweenPoints(locu, locc1)) + 3
set n[10] = R2I(AngleBetweenPoints(locu, locc1)) + 4
set n[11] = R2I(AngleBetweenPoints(locu, locc1)) + 5
//угол между центром и вошедшим юнитом
set n[21] = R2I(AngleBetweenPoints(locu, GetUnitLoc(GetEnumUnit()))) - 5
set n[22] = R2I(AngleBetweenPoints(locu, GetUnitLoc(GetEnumUnit()))) - 4
set n[23] = R2I(AngleBetweenPoints(locu, GetUnitLoc(GetEnumUnit()))) - 3
set n[24] = R2I(AngleBetweenPoints(locu, GetUnitLoc(GetEnumUnit()))) - 2
set n[25] = R2I(AngleBetweenPoints(locu, GetUnitLoc(GetEnumUnit()))) - 1
set n[26] = R2I(AngleBetweenPoints(locu, GetUnitLoc(GetEnumUnit())))
set n[27] = R2I(AngleBetweenPoints(locu, GetUnitLoc(GetEnumUnit()))) + 1
set n[28] = R2I(AngleBetweenPoints(locu, GetUnitLoc(GetEnumUnit()))) + 2
set n[29] = R2I(AngleBetweenPoints(locu, GetUnitLoc(GetEnumUnit()))) + 3
set n[30] = R2I(AngleBetweenPoints(locu, GetUnitLoc(GetEnumUnit()))) + 4
set n[31] = R2I(AngleBetweenPoints(locu, GetUnitLoc(GetEnumUnit()))) + 5
loop
    loop
        if ((n[i]==n[ii]))and(DistanceBetweenPoints(GetUnitLoc(GetEnumUnit()), locu)<=DistanceBetweenPoints(locc1, locu))then
            set e = AddSpecialEffectTargetUnitBJ("origin", GetEnumUnit(), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl")
     endif
     exitwhen(ii==31)
     set ii=ii+1
endloop
exitwhen(i==11)
set i=i+1
endloop
Старый 27.01.2012, 09:47
Nerevar
I'll be back!
offline
Опыт: 18,352
Активность:
CKrab:
(если угол между вошедшим и центром)+/-5 == (углу юниту(с молнией) и центром)+/-5
но как высчитать эти +/-5 градусов?
Если (угол1-угол2 меньше 5.) и (угол1-угол2 больше -5.)
Старый 27.01.2012, 12:11
CKrab

offline
Опыт: 410
Активность:
Nerevar, спасибо еще раз (:
вопросов вроде больше нет - всё работает.
тему можно закрывать.
для поисковика в будущем:
» работоспособность кода
function test_Func001A takes nothing returns nothing
    local real array r
    local integer h = LoadInteger(udg_hash, 80, 1)
    local unit u = LoadUnitHandle(udg_hash, h, 1)
    local unit c1 = LoadUnitHandle(udg_hash, 52, 1)
    local unit c2 = LoadUnitHandle(udg_hash, 52, 2)
    local unit c3 = LoadUnitHandle(udg_hash, 52, 3)
    local unit c4 = LoadUnitHandle(udg_hash, 52, 4)
    local location locu = GetUnitLoc(u)
    local location locc1 = GetUnitLoc(c1)
    local location locc2 = GetUnitLoc(c2)
    local location locc3 = GetUnitLoc(c3)
    local location locc4 = GetUnitLoc(c4)
    local effect e
    local integer array n
    local integer i=1
    local integer ii=21
    if(GetEnumUnit()!=c1)and(GetEnumUnit()!=c2)and(GetEnumUnit()!=c3)and(GetEnumUnit()!=c4)and(GetEnumUn​it()!=u) then
        set r[1] = RAbsBJ(AngleBetweenPoints(locu, GetUnitLoc(GetEnumUnit())))
        set r[11] = RAbsBJ(AngleBetweenPoints(locu, locc1))
        set r[31] = RAbsBJ(AngleBetweenPoints(locc1,locu))
        set r[41] = DistanceBetweenPoints(locc1, locu)
        set r[12] = RAbsBJ(AngleBetweenPoints(locu, locc2))
        set r[32] = RAbsBJ(AngleBetweenPoints(locc2, GetUnitLoc(GetEnumUnit())))
        set r[42] = DistanceBetweenPoints(locc2, locu)
        set r[13] = RAbsBJ(AngleBetweenPoints(locu, locc3))
        set r[33] = RAbsBJ(AngleBetweenPoints(locc3, GetUnitLoc(GetEnumUnit())))
        set r[43] = DistanceBetweenPoints(locc3, locu)
        set r[14] = RAbsBJ(AngleBetweenPoints(locu, locc4))
        set r[34] = RAbsBJ(AngleBetweenPoints(locc4, GetUnitLoc(GetEnumUnit())))
        set r[44] = DistanceBetweenPoints(locc4, locu)
        if (((AngleBetweenPoints(locu,locc1)-AngleBetweenPoints(locu,GetUnitLoc(GetEnumUnit())))<=5.)and((An​gleBetweenPoints(locu,locc1)-AngleBetweenPoints(locu,GetUnitLoc(GetEnumUnit())))>=-5.))and(Distan​ceBetweenPoints(GetUnitLoc(GetEnumUnit()),locu)<=DistanceBetweenPoints(locc1,locu))then
            set e = AddSpecialEffectTargetUnitBJ("origin", GetEnumUnit(), "Abilities\\Spells\\Human\\Thunderclap\\ThunderClapCaster.mdl")
       elseif (((AngleBetweenPoints(locu,locc2)-AngleBetweenPoints(locu,GetUnitLoc(GetEnumUnit())))<=5.)and((An​gleBetweenPoints(locu,locc2)-AngleBetweenPoints(locu,GetUnitLoc(GetEnumUnit())))>=-5.))and(Distan​ceBetweenPoints(GetUnitLoc(GetEnumUnit()),locu)<=DistanceBetweenPoints(locc2,locu))then
           set e = AddSpecialEffectTargetUnitBJ("origin", GetEnumUnit(), "Abilities\\Spells\\Demon\\DarkPortal\\DarkPortalTarget.mdl")
       elseif (((AngleBetweenPoints(locu,locc3)-AngleBetweenPoints(locu,GetUnitLoc(GetEnumUnit())))<=5.)and((An​gleBetweenPoints(locu,locc3)-AngleBetweenPoints(locu,GetUnitLoc(GetEnumUnit())))>=-5.))and(Distan​ceBetweenPoints(GetUnitLoc(GetEnumUnit()),locu)<=DistanceBetweenPoints(locc3,locu))then
            set e = AddSpecialEffectTargetUnitBJ("origin", GetEnumUnit(), "Abilities\\Spells\\Items\\AIsm\\AIsmTarget.mdl")
        elseif (((AngleBetweenPoints(locu,locc4)-AngleBetweenPoints(locu,GetUnitLoc(GetEnumUnit())))<=5.)and((An​gleBetweenPoints(locu,locc4)-AngleBetweenPoints(locu,GetUnitLoc(GetEnumUnit())))>=-5.))and(Distan​ceBetweenPoints(GetUnitLoc(GetEnumUnit()),locu)<=DistanceBetweenPoints(locc4,locu))then
            set e = AddSpecialEffectTargetUnitBJ("origin", GetEnumUnit(), "Abilities\\Spells\\Human\\MassTeleport\\MassTeleportTarget.mdl")
        call DestroyEffect(e)
        set e = null
    endif
    endif
    set u = null
    set c1 = null
    set c2 = null
    set c3 = null
    set c4 = null
    call RemoveLocation(locu)
    set locu = null
    call RemoveLocation(locc1)
    set locc1 = null
    call RemoveLocation(locc2)
    set locc2 = null
    call RemoveLocation(locc3)
    set locc3 = null
    call RemoveLocation(locc4)
    set locc4 = null
endfunction

function test_Move takes nothing returns nothing
    local timer t = GetExpiredTimer()
    local integer h = GetHandleId(t)
    local unit u = LoadUnitHandle(udg_hash, h, 1)
    local unit c = GetEnumUnit()
    local real a = LoadReal(udg_hash, GetHandleId(c), 4) + 0.024906584
    local location locc
    local location locc2 = GetUnitLoc(u)
    local integer idh = h
    call SaveInteger(udg_hash, 80, 1, idh)
    call SetUnitX(c, GetUnitX(u) + 580. * Cos(a))
    call SetUnitY(c, GetUnitY(u) + 580. * Sin(a))
    call SaveReal(udg_hash, GetHandleId(c), 4, a)
    set locc = GetUnitLoc(GetEnumUnit())
    call MoveLightningEx(LoadLightningHandle(udg_hash, 53, GetHandleId(GetEnumUnit())), true, GetLocationX(locc), GetLocationY(locc), GetLocationZ(locc), GetLocationX(locc2), GetLocationY(locc2), GetLocationZ(locc2))
    set c = null
    set u = null
    set t = null
    call RemoveLocation(locc)
    set locc = null
    call RemoveLocation(locc2)
    set locc2 = null
endfunction

//function test_RemoveUnits takes nothing returns nothing
//local unit c=GetEnumUnit()
//call FlushChildHashtable(udg_hash,GetHandleId(c))
//call FlushChildHashtable(udg_hash,52)
//call FlushChildHashtable(udg_hash,53)
//call RemoveUnit(c)
//set c=null
//endfunction

function test_Group_Actions takes nothing returns nothing
    local timer t = GetExpiredTimer()
    local integer h = GetHandleId(t)
    local group g = LoadGroupHandle(udg_hash, h, 2)
    local integer i = LoadInteger(udg_hash, h, 3)
    local unit u = LoadUnitHandle(udg_hash, h, 1)
    local location loc = GetUnitLoc(u)
    call ForGroup(g, function test_Move)
    call ForGroup(GetUnitsInRangeOfLocAll(600., loc), function test_Func001A)

//потом когда надо будет удалить всё это
//
//if LoadBoolean(udg_hash,h,4)==true then
//    call PauseTimer(t)
//    call FlushChildHashtable(udg_hash,h)
//    call DestroyTimer(t)
//    call ForGroup(g,function test_RemoveUnits)
//    call DestroyGroup(g)
//endif
    set t = null
    set g = null
    set u = null
    call RemoveLocation(loc)
    set loc = null
endfunction

function Trig_test_Action takes nothing returns nothing
    local real centrx = GetRectCenterX(gg_rct_test_rect)
    local real centery = GetRectCenterY(gg_rct_test_rect)
    local unit u = CreateUnit(Player(0), 'hspt', centrx, centery, 0.)
    local timer t = CreateTimer()
    local unit c
    local real x = GetUnitX(u)
    local real y = GetUnitY(u)
    local group g = CreateGroup()
    local integer h = GetHandleId(t)
    local location locu = GetUnitLoc(u)
    local location locc
    local location locc2 = GetUnitLoc(u)
    local lightning lig
    local string array s
    local integer i = 1
    loop
        set c = CreateUnit(Player(0), 'hfoo', x, y, 0.)
        call SaveUnitHandle(udg_hash, 52, i, c)
        call SetUnitX(c, x + 580. * Cos(i * 1.57079628))
        call SetUnitY(c, y + 580. * Sin(i * 1.57079628))
        call SaveReal(udg_hash, GetHandleId(c), 4, i * 1.57079628)
        call GroupAddUnit(g, c)
        exitwhen(i==4)
        set i = i + 1
    endloop
    set s[1] = "HWSB"
    set s[2] = "DRAL"
    set s[3] = "DRAM"
    set s[4] = "AFOD"
    set i = 1
    loop
        set locc = GetUnitLoc(LoadUnitHandle(udg_hash, 52, i))
        set lig = AddLightningLoc(s[i], locc, locc2)
        call SaveLightningHandle(udg_hash, 53, GetHandleId(LoadUnitHandle(udg_hash, 52, i)), lig)
        call MoveLightningLoc(lig, locc, locc2)
        call RemoveLocation(locc)
        set locc = null
        set lig = null
        exitwhen(i==4)
        set i = i + 1
    endloop
    call SaveUnitHandle(udg_hash, h, 1, u)
    call SaveGroupHandle(udg_hash, h, 2, g)
    call SaveInteger(udg_hash, h, 3, 0)
    call SaveBoolean(udg_hash, h, 4, false)
    call TimerStart(t, 0.03, true, function test_Group_Actions)
    set c = null
    set u = null
    set t = null
    call RemoveLocation(locu)
    set locu = null
    call RemoveLocation(locc2)
    set locc2 = null
endfunction

function InitTrig_test takes nothing returns nothing
    local trigger trg = CreateTrigger()
    call TriggerRegisterTimerEventSingle(trg, 1.)
    call TriggerAddAction(trg, function Trig_test_Action)
    set trg = null
endfunction

Отредактировано CKrab, 27.01.2012 в 12:46.
Старый 27.01.2012, 12:36
alpha

offline
Опыт: 7,387
Активность:
закрыто.
Старый 27.01.2012, 13:21
Закрытая тема

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

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

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

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



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