Не пойму чего утекают и лаги начинает, даже текст End Magic не выводит после окончание бафа...
globals
constant integer c_WhistleMagic_Ability_ID = 'Aroa'
constant integer c_WhistleMagic_Buff_ID = 'Broa'
constant real c_WhistleMagic_Interval = .03125
constant real c_WhistleMagic_Base = 0.10
timer WhistleMagic_TIMER = CreateTimer()
integer WhistleMagic_MAX = 0
unit array WhistleMagic_CASTER
real array WhistleMagic_STAT_DAMAGE
real array WhistleMagic_STAT_ARMOR
endglobals
function WhistleMagic_Periodic takes nothing returns nothing
local integer i = 0
loop
exitwhen i == WhistleMagic_MAX
if GetUnitAbilityLevel(WhistlePhysical_CASTER[i], c_WhistlePhysical_Buff_ID) == 0 then
call DisplayTextToPlayer(GetOwningPlayer(WhistleMagic_CASTER[i]), 0, 0, "End Magic")
call RPGCharacter[WhistleMagic_CASTER[i]].removeStats()
call RPGCharacter[WhistleMagic_CASTER[i]].setStats(RPG_STAT_DAMAGE_MAGIC, -WhistleMagic_STAT_DAMAGE[i], true)
call RPGCharacter[WhistleMagic_CASTER[i]].setStats(RPG_STAT_ARMOR_MAGIC, -WhistleMagic_STAT_ARMOR[i], true)
call RPGCharacter[WhistleMagic_CASTER[i]].refresh()
call RPGCharacter[WhistleMagic_CASTER[i]].addStats()
set WhistleMagic_MAX = WhistleMagic_MAX - 1
set WhistleMagic_STAT_DAMAGE[i] = WhistleMagic_STAT_DAMAGE[WhistleMagic_MAX]
set WhistleMagic_STAT_ARMOR[i] = WhistleMagic_STAT_ARMOR[WhistleMagic_MAX]
set WhistleMagic_CASTER[i] = WhistleMagic_CASTER[WhistleMagic_MAX]
set WhistleMagic_STAT_DAMAGE[WhistleMagic_MAX] = .0
set WhistleMagic_STAT_ARMOR[WhistleMagic_MAX] = .0
set WhistleMagic_CASTER[WhistleMagic_MAX] = null
set i = i - 1
if WhistleMagic_MAX == 0 then
call PauseTimer(WhistleMagic_TIMER)
endif
endif
set i = i + 1
endloop
endfunction
function WhistleMagic_Cast takes nothing returns boolean
local boolean b = (GetSpellAbilityId() == c_WhistleMagic_Ability_ID)
local unit u = GetTriggerUnit()
if b and GetUnitAbilityLevel(u, c_WhistleMagic_Buff_ID) == 0 then
if WhistleMagic_MAX == 0 then
call TimerStart(WhistleMagic_TIMER, c_WhistleMagic_Interval, true, function WhistleMagic_Periodic)
endif
call DisplayTextToPlayer(GetOwningPlayer(u), 0, 0, "Start Magic")
set WhistleMagic_STAT_DAMAGE[WhistleMagic_MAX] = c_WhistleMagic_Base
set WhistleMagic_STAT_ARMOR[WhistleMagic_MAX] = c_WhistleMagic_Base
set WhistleMagic_CASTER[WhistleMagic_MAX] = u
set WhistleMagic_MAX = WhistleMagic_MAX + 1
call RPGCharacter[u].removeStats()
call RPGCharacter[u].setStats(RPG_STAT_DAMAGE_MAGIC, c_WhistleMagic_Base, true)
call RPGCharacter[u].setStats(RPG_STAT_ARMOR_MAGIC, c_WhistleMagic_Base, true)
call RPGCharacter[u].refresh()
call RPGCharacter[u].addStats()
endif
set u = null
return b
endfunction
function InitTrig_WhistleMagic takes nothing returns nothing
local trigger t = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(t, EVENT_PLAYER_UNIT_SPELL_CAST)
call TriggerAddCondition(t, Condition(function WhistleMagic_Cast))
set t=null
endfunction
Принятый ответ
Ой извини, уже нашел ошибку
if GetUnitAbilityLevel(WhistlePhysical_CASTER[i], c_WhistlePhysical_Buff_ID) == 0 then вот что было такой переменный оказалось в другой способности
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
pro100master
7 лет назад
0
Ой извини, уже нашел ошибку
Принятый ответ
Чтобы оставить комментарий, пожалуйста, войдите на сайт.