cr4xzZz
Also known as azwraith_ftL.
- Reaction score
- 51
This error is shown when I learn my ability:
What the hell is op limit? I guess I did something wrong with my code. Anyway, I am trying to make the Time Lapse ability from DotA (moves the Hero 5 secs back in time). The spell uses ABCT and PUI. Gonna submit it later if I find the problem thou...
Code:
Hit op limit in
TimeLapse_Callback()
What the hell is op limit? I guess I did something wrong with my code. Anyway, I am trying to make the Time Lapse ability from DotA (moves the Hero 5 secs back in time). The spell uses ABCT and PUI. Gonna submit it later if I find the problem thou...
Code:
JASS:
scope TimeLapse
//###########################################################
// C O N F I G U R A T I O N M E N U
//###########################################################
globals
// Raw code of the Time Lapse spell
private constant integer AID_TIMELAPSE_RAW = 039;A000039;
// Special effect created on cast
private constant string SFX_EFFECT = "Abilities\\Spells\\NightElf\\Blink\\BlinkTarget.mdl"
// How many seconds to return back in time
private constant integer TIME_BACK = 5
endglobals
//###########################################################
// E N D O F C O N F I G U R A T I O N M E N U
//###########################################################
globals
private group GROUP = CreateGroup()
private real array HP
private real array MP
private location array LOC
private integer array COUNTER
endglobals
private struct Data
unit weaver
endstruct
//! textmacro QUICKLOOP
loop
exitwhen iii > TIME_BACK + 1
set HP[COUNTER[pui]] = GetWidgetLife(d.weaver)
set MP[COUNTER[pui]] = GetUnitState(d.weaver, UNIT_STATE_MANA)
set LOC[COUNTER[pui]] = GetUnitLoc(d.weaver)
set COUNTER[pui] = COUNTER[pui] + 1
endloop
//! endtextmacro
private function ConditionsCast takes nothing returns boolean
return GetSpellAbilityId() == AID_TIMELAPSE_RAW
endfunction
private function ConditionsPeriodic takes nothing returns boolean
return GetUnitAbilityLevel(GetTriggerUnit(), AID_TIMELAPSE_RAW) == 1 and IsUnitInGroup(GetTriggerUnit(), GROUP) == false
endfunction
private function Callback takes nothing returns boolean
local Data d = ABCT_GetData()
local integer pui = GetUnitIndex(d.weaver)
local integer iii = 0
call RemoveLocation(LOC[COUNTER[pui] - TIME_BACK])
set COUNTER[pui] = COUNTER[pui] + 1
set HP[COUNTER[pui]] = GetWidgetLife(d.weaver)
set MP[COUNTER[pui]] = GetUnitState(d.weaver, UNIT_STATE_MANA)
set LOC[COUNTER[pui]] = GetUnitLoc(d.weaver)
if COUNTER[pui] > 8190 then
set COUNTER[pui] = TIME_BACK + 1
//! runtextmacro QUICKLOOP()
endif
return false
endfunction
private function ActionsCast takes nothing returns nothing
local unit cast = GetTriggerUnit()
local integer pui = GetUnitIndex(cast)
call SetWidgetLife(cast, HP[COUNTER[pui] - TIME_BACK])
call SetUnitState(cast, UNIT_STATE_MANA, MP[COUNTER[pui] - TIME_BACK])
call SetUnitPositionLoc(cast, LOC[COUNTER[pui] - TIME_BACK])
call DestroyEffect(AddSpecialEffectLoc(SFX_EFFECT, LOC[COUNTER[pui]]))
call DestroyEffect(AddSpecialEffectLoc(SFX_EFFECT, LOC[COUNTER[pui] - TIME_BACK]))
set cast = null
endfunction
private function ActionsPeriodic takes nothing returns nothing
local Data d = Data.create()
local integer pui
local integer iii = 0
set d.weaver = GetTriggerUnit()
call GroupAddUnit(GROUP, d.weaver)
set pui = GetUnitIndex(d.weaver)
//! runtextmacro QUICKLOOP()
call ABCT_Start(function Callback, d, 1.)
endfunction
function InitTrig_TimeLapse takes nothing returns nothing
local trigger cast = CreateTrigger()
local trigger periodic = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(cast, EVENT_PLAYER_UNIT_SPELL_EFFECT)
call TriggerRegisterAnyUnitEventBJ(periodic, EVENT_PLAYER_HERO_SKILL)
call TriggerAddCondition(cast, Condition(function ConditionsCast))
call TriggerAddCondition(periodic, Condition(function ConditionsPeriodic))
call TriggerAddAction(cast, function ActionsCast)
call TriggerAddAction(periodic, function ActionsPeriodic)
endfunction
endscope