PureOwnage
Minecraft Server OP, Inactive.
- Reaction score
- 72
Need help with this:
Incombat system:
Link:
http://www.thehelper.net/forums/showthread.php?t=91529
Code:
Suicide
Events
Unit - A unit Starts the effect of an ability
Conditions
(Ability being cast) Equal to Suicide
Actions
Set TempUnit[1] = (Triggering unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
SucideUsed Equal to True
Then - Actions
Wait 4.01 seconds
Custom script: set udg_UnitInCombat = GetUnitCombatState(udg_TempUnit[1])
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
UnitInCombat Equal to False
Then - Actions
Unit - Kill (Triggering unit)
Else - Actions
Game - Display to (All players) the text: (((Name of (Triggering player)) + ,) + you can not suicide a unit that was in combat! Wait 4 seconds.)
Else - Actions
Set SucideUsed = False
Incombat system:
JASS:
library InCombat initializer Init requires CSData
globals
private constant real COMBAT_DURATION = 4
endglobals
private function Conditions takes nothing returns boolean
return true //It currently does it for ALL units. Change these conditions to specify which units.
endfunction
struct CombatState
unit u
timer t = CreateTimer()
method onDestroy takes nothing returns nothing
call PauseTimer(this.t)
call DestroyTimer(this.t)
endmethod
endstruct
private function EndCombat takes nothing returns nothing
local CombatState cs = CombatState(GetCSData(GetExpiredTimer()))
call SetCSData(cs.u,0)
call SetCSData(cs.t,0)
call CombatState.destroy(cs)
endfunction
function GetUnitCombatState takes unit u returns boolean
local CombatState cs = CombatState(GetCSData(u))
return cs != 0
endfunction
function SetUnitInCombat takes unit u returns nothing
local CombatState cs = CombatState(GetCSData(u))
if cs == 0 then
set cs = CombatState.create()
set cs.u = u
endif
call SetCSData(cs.u,cs)
call SetCSData(cs.t,cs)
call TimerStart(cs.t,COMBAT_DURATION,false,function EndCombat)
endfunction
private function Actions takes nothing returns nothing
local unit tar = GetAttacker()
local unit temp = GetSpellTargetUnit()
call SetUnitInCombat(GetTriggerUnit())
if tar != null then
call SetUnitInCombat(tar)
elseif temp != null then
call SetUnitInCombat(temp)
endif
set tar = null
set temp = null
endfunction
private function Init takes nothing returns nothing
local trigger t = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(t,EVENT_PLAYER_UNIT_ATTACKED)
call TriggerRegisterAnyUnitEventBJ(t,EVENT_PLAYER_UNIT_SPELL_EFFECT)
call TriggerAddCondition(t,Condition(function Conditions))
call TriggerAddAction(t,function Actions)
endfunction
endlibrary
Link:
http://www.thehelper.net/forums/showthread.php?t=91529