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

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

Закрытая тема
 
Alonix
*null*
offline
Опыт: 26,861
Активность:
Триггер не реагирует
Триггер не хочет работать, ни в какую. Пытался даже вызывать вручную его действия - 0 реакции.
Триггер вызывает дамми, заставляет его двигаться каждые 0.04 секунды, нанося урон и расталкивая врагов
globals
    unit udg_c
    group udg_damage_off
    unit udg_dum
    location udg_point
    group udg_pick
endglobals

function Shockwave_filter takes nothing returns boolean
    return IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) == false and GetUnitState(GetFilterUnit(),UNIT_STATE_LIFE)>0.405 and IsUnitEnemy(GetFilterUnit(), GetOwningPlayer(udg_c)) == true and IsUnitInGroup(GetFilterUnit(), udg_damage_off) == false
endfunction

function Shockwave_act1 takes nothing returns nothing
    local location u_pos = GetUnitLoc(GetEnumUnit())
    local location dum_position = GetUnitLoc(udg_dum)
    local real ang = bj_RADTODEG * Atan2(GetLocationY(dum_position) - GetLocationY(u_pos), GetLocationX(dum_position) - GetLocationX(u_pos))
    local real x=GetLocationX(u_pos) + -15 * Cos(ang * bj_DEGTORAD)
    local real y=GetLocationY(u_pos) + -15 * Sin(ang * bj_DEGTORAD)
    local integer i = GetUnitAbilityLevel(udg_c,'A05V')
    call SetUnitPathing(GetEnumUnit(),false)
    call SetUnitPosition(GetEnumUnit(),x,y)
    call SetUnitPathing(GetEnumUnit(),true)
    call DestroyEffect(AddSpecialEffect("Abilities\\Weapons\\AncientProtectorMissile\\AncientProtectorMi​ssile.mdl",x,y))
    call UnitDamageTarget(udg_c,GetEnumUnit(),75+75*i,true,false,ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL,WEAPON_TYPE_WHOKNOWS)
    call GroupAddUnitSimple( GetEnumUnit(), udg_damage_off )
    call RemoveLocation(u_pos)
    call RemoveLocation(dum_position)
endfunction

function Trig_Shockwave_move_Actions takes nothing returns nothing
    local location dum_position = GetUnitLoc(udg_dum)
    local real x
    local real y
    local location moveto
    local real ang = bj_RADTODEG * Atan2(GetLocationY(dum_position) - GetLocationY(moveto), GetLocationX(dum_position) - GetLocationX(moveto))
   call DisplayTextToPlayer(Player(0),0.,0.,"endlocal") 
   if DistanceBetweenPoints(dum_position,udg_point)>50. then
        call DisplayTextToPlayer(Player(0),0.,0.,"start") 
        set x = GetLocationX(dum_position) + 30 * Cos(ang * bj_DEGTORAD)
        set y = GetLocationY(dum_position) + 30 * Sin(ang * bj_DEGTORAD)
        set moveto = Location(x,y)
        call SetUnitPositionLoc(udg_dum,moveto)
        set udg_pick = GetUnitsInRangeOfLocMatching(100,moveto,Condition(function Shockwave_filter))
        call ForGroupBJ(udg_pick,function Shockwave_act1)
        call DestroyGroup(udg_pick)
        call RemoveLocation(dum_position)
        call RemoveLocation(moveto)
        call DisplayTextToPlayer(Player(0),0.,0.,"endstart") 
     else
        call DisplayTextToPlayer(Player(0),0.,0.,"clearstart") 
        call GroupClear( udg_damage_off )
        call DestroyTimer(udg_Shock_timer)
        call RemoveUnit( udg_dum )
        call RemoveLocation (udg_point)
     call DisplayTextToPlayer(Player(0),0.,0.,"endclear") 
     endif
call DisplayTextToPlayer(Player(0),0.,0.,"endtrigger") 

endfunction
//===========================================================================
function InitTrig_Shockwave_move takes nothing returns nothing
    set gg_trg_Shockwave_move = CreateTrigger(  )
    call TriggerRegisterTimerExpireEventBJ( gg_trg_Shockwave_move, udg_Shock_timer )
    call TriggerAddAction( gg_trg_Shockwave_move, function Trig_Shockwave_move_Actions )
endfunction
udg_dum, unit udg_c и location udg_point задаются другим триггером во время каста заклинания. Почему триггер отказывается запускаться?
Старый 19.07.2012, 09:24
Sidhe
Unity3D engine
offline
Опыт: 7,721
Активность:
смотри другой дриггер, который запускает этот. Тут честно говоря каша какая то, учитесь делать отступы, для удобства чтения
Старый 19.07.2012, 10:45
Nerevar
I'll be back!
offline
Опыт: 18,352
Активность:
Kakashi23, дебаги расставлены,однако результатов их работы не вижу - до куда доходят действия? или вообще ни один дебаг не выводится?
Старый 19.07.2012, 10:57
Lipen

offline
Опыт: 1,550
Активность:
local real ang = bj_RADTODEG * Atan2(GetLocationY(dum_position) - GetLocationY(moveto), GetLocationX(dum_position) - GetLocationX(moveto))
Обращение к не инициализированной переменной 'moveto' - убивается поток. Место 'moveto' для расчёта угла можно использовать, например, точку-цель заклинания.

Также лучше заменить все точки на координаты. Они быстрее.
    local location dum_position = GetUnitLoc(udg_dum)
=>
    local real x0 = GetUnitX(udg_dum)
    local real y0 = GetUnitY(udg_dum)

Отредактировано Lipen, 19.07.2012 в 12:14.
Старый 19.07.2012, 12:04
Alonix
*null*
offline
Опыт: 26,861
Активность:
смотри другой дриггер, который запускает этот.
С ним все хорошо, дамми создается
Kakashi23, дебаги расставлены,однако результатов их работы не вижу - до куда доходят действия? или вообще ни один дебаг не выводится?
Ни один
Обращение к не инициализированной переменной 'moveto' - убивается поток.
Мне кажется, ты прав. Проверю
Alonix добавил:
Lipen, прав, это убивало поток. Тему можно закрывать
Старый 19.07.2012, 14:28
Закрытая тема

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

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

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

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



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