kingkingyyk3
Visitor (Welcome to the Jungle, Baby!)
- Reaction score
- 216
JASS:
--
_ _ ___ ___
| | | | | _| | _ \
| | | | | |_ || \ |
| |_| | | |_ ||_/ |
\_____/ |___| |___/
~Unit Events Detection~
~Version : v1.0.3~
Contains :
- Unit Events Detection : Basic (v1.0.0)
- Unit Events Detection : Enter n Leave (v1.0.3)
- Unit Events Detection : Pause n Invulnerable (v1.0.0)
- Unit Events Detection : Group Extension (v1.0.0)
- Unit Events Detection : Heal (v1.0.0)
JASS:
////////////////////////////////////////////////////////////////
// _ _ ___ ___
// | | | | | _| | _ \ UNIT EVENTS DETECTION : BASIC v1.0.0
// | | | | | |_ || \ | by kingking
// | |_| | | |_ ||_/ |
// \_____/ |___| |___/
//
// This library is a basic for other UED components.
//
// Functions Provided :
// GetEventUnit() -> unit
//
// Requires :
// Jasshelper 0.9.K.0 or later
/////////////////////////////////////////////////////////////////
library UEDxBasic
globals
public unit u
endglobals
function GetEventUnit takes nothing returns unit
return u
endfunction
endlibrary
JASS:
////////////////////////////////////////////////////////////////
// _ _ ___ ___
// | | | | | _| | _ \ UNIT EVENTS DETECTION : ENTER n LEAVE v1.0.3
// | | | | | |_ || \ | by kingking
// | |_| | | |_ ||_/ |
// \_____/ |___| |___/
//
// This library is the extension of Unit Events Detection.
// It detects for units that enters, dies and get removed in game.
//
// Functions Provided :
// RegisterUnitDetected(trigger)
// RegisterUnitDeath(trigger)
// RegisterUnitRemoved(trigger)
//
// Requires :
// Event
// Unit Events Detection : Basic
// Jasshelper 0.9.K.0 or later
/////////////////////////////////////////////////////////////////
library UEDxEnL initializer Init requires Event, UEDxBasic
globals
//How faster the library search for new units.
private constant real UNIT_DETECTION_PERIOD = 1.
endglobals
globals
private trigger EnterDetection
private Event EnterEvent
private Event DeathEvent
private Event RemoveUnitEvent
private group Units
private region World
endglobals
globals
private unit temp
endglobals
function RegisterUnitDeath takes trigger whichtrigger returns integer
return DeathEvent.register(whichtrigger)
endfunction
private function EnumGroup takes nothing returns nothing
set temp = GetEnumUnit()
if IsUnitType(temp, UNIT_TYPE_DEAD) == true and IsUnitType(temp,UNIT_TYPE_HERO) == false then
set UEDxBasic_u = temp
call DeathEvent.fire()
endif
endfunction
private function CheckDeathUnits takes nothing returns nothing
call ForGroup(Units,function EnumGroup)
endfunction
//Entering Event
function RegisterUnitDetected takes trigger whichtrigger returns integer
return EnterEvent.register(whichtrigger)
endfunction
private function ExecuteEnterEvent takes nothing returns boolean
set UEDxBasic_u = GetTriggerUnit()
call GroupAddUnit(Units,UEDxBasic_u)
call EnterEvent.fire()
return false
endfunction
private function FirePreplacedUnitsDetected takes nothing returns nothing
set UEDxBasic_u = GetEnumUnit()
call EnterEvent.fire()
endfunction
private function EnumPreplacedUnits takes nothing returns nothing
call ForGroup(Units,function FirePreplacedUnitsDetected)
call PauseTimer(GetExpiredTimer())
call DestroyTimer(GetExpiredTimer())
endfunction
function RegisterUnitRemoved takes trigger whichtrigger returns integer
return RemoveUnitEvent.register(whichtrigger)
endfunction
private function ExecuteRemoveEvent takes unit whichunit returns nothing
set UEDxBasic_u = whichunit
call RemoveUnitEvent.fire()
endfunction
hook RemoveUnit ExecuteRemoveEvent
//Init
private function RetTrue takes nothing returns boolean
return true
endfunction
private function Init takes nothing returns nothing
local conditionfunc rettrue = Condition(function RetTrue)
local integer i = 15
//Init Events
set EnterEvent = Event.create()
set DeathEvent = Event.create()
set RemoveUnitEvent = Event.create()
//Get preplaced units
set Units = CreateGroup()
loop
call GroupEnumUnitsOfPlayer(Units,Player(i),rettrue)
exitwhen i == 0
set i = i - 1
endloop
//
//Init Entering detection
set World = CreateRegion()
call RegionAddRect(World,bj_mapInitialPlayableArea)
set EnterDetection = CreateTrigger()
call TriggerRegisterEnterRegion(EnterDetection,World,rettrue)
call TriggerAddCondition(EnterDetection,Condition(function ExecuteEnterEvent))
//
call TimerStart(CreateTimer(),0.,false,function EnumPreplacedUnits)
call TimerStart(CreateTimer(),UNIT_DETECTION_PERIOD,true,function CheckDeathUnits)
set rettrue = null
endfunction
endlibrary
JASS:
////////////////////////////////////////////////////////////////
// _ _ ___ ___
// | | | | | _| | _ \ UNIT EVENTS DETECTION : PAUSE n INVULNERABLE v1.0.0
// | | | | | |_ || \ | by kingking
// | |_| | | |_ ||_/ |
// \_____/ |___| |___/
//
// This library is the extension of Unit Events Detection.
// It detects for pausing, unpausing, vulnerabling and invulnerabling event.
//
// Functions Provided :
// RegisterUnitInvulnerabled(trigger)
// RegisterUnitPaused(trigger)
// RegisterUnitVulnerabled(trigger)
// RegisterUnitUnpaused(trigger)
//
// Requires :
// Event
// Unit Events Detection : Basic
// Jasshelper 0.9.K.0 or later
/////////////////////////////////////////////////////////////////
library UEDxPnI initializer Init requires UEDxBasic,Event
globals
private Event InvulnerableEvent
private Event VulnerableEvent
private Event PauseUnitEvent
private Event UnpauseUnitEvent
endglobals
//Invulnerable/Vulnerable Event
function RegisterUnitInvulnerabled takes trigger whichtrigger returns integer
return InvulnerableEvent.register(whichtrigger)
endfunction
function RegisterUnitVulnerabled takes trigger whichtrigger returns integer
return VulnerableEvent.register(whichtrigger)
endfunction
function ExecuteInvulnerableEvent takes unit whichunit, boolean flag returns nothing
set UEDxBasic_u = whichunit
if flag then
call InvulnerableEvent.fire()
else
call VulnerableEvent.fire()
endif
endfunction
hook SetUnitInvulnerable ExecuteInvulnerableEvent
//Pause/Unpause Event
function RegisterUnitPaused takes trigger whichtrigger returns integer
return PauseUnitEvent.register(whichtrigger)
endfunction
function RegisterUnitUnpaused takes trigger whichtrigger returns integer
return UnpauseUnitEvent.register(whichtrigger)
endfunction
function ExecuteUnitPauseEvent takes unit whichunit, boolean flag returns nothing
set UEDxBasic_u = whichunit
if flag then
call PauseUnitEvent.fire()
else
call UnpauseUnitEvent.fire()
endif
endfunction
hook PauseUnit ExecuteUnitPauseEvent
private function Init takes nothing returns nothing
set InvulnerableEvent = Event.create()
set VulnerableEvent = Event.create()
set PauseUnitEvent = Event.create()
set UnpauseUnitEvent = Event.create()
endfunction
endlibrary
JASS:
////////////////////////////////////////////////////////////////
// _ _ ___ ___
// | | | | | _| | _ \ UNIT EVENTS DETECTION : GROUP EXTENSION v1.0.0
// | | | | | |_ || \ | by kingking
// | |_| | | |_ ||_/ |
// \_____/ |___| |___/
//
// This library is the extension of Unit Events Detection.
// It detects for units that enters and leaves the group.
//
// Functions Provided :
// GetCurrentGroup() -> group (Replace the missing function in group enum callback.)
// GetTriggerGroup() -> group (Triggered Group)
// RegisterUnitEnterGroup(trigger)
// RegisterUnitLeaveGroup(trigger)
//
// Requires :
// Event
// Unit Events Detection : Basic
// Jasshelper 0.9.K.0 or later
/////////////////////////////////////////////////////////////////
library UEDxGEx initializer Init requires UEDxBasic, Event
globals
private Event EnterGroupEvent
private Event LeaveGroupEvent
private group g
endglobals
//Group Extension
function GetCurrentGroup takes nothing returns group
return g
endfunction
function GetGroupEnumUnitsInRange takes group whichGroup, real x, real y, real radius, boolexpr filter returns nothing
set g = whichGroup
endfunction
function GetGroupEnumUnitsInRangeCounted takes group whichGroup, real x, real y, real radius, boolexpr filter, integer countLimit returns nothing
set g = whichGroup
endfunction
function GetGroupEnumUnitsInRangeOfLoc takes group whichGroup, location whichLocation, real radius, boolexpr filter returns nothing
set g = whichGroup
endfunction
function GetGroupEnumUnitsInRangeOfLocCounted takes group whichGroup, location whichLocation, real radius, boolexpr filter, integer countLimit returns nothing
set g = whichGroup
endfunction
function GetGroupEnumUnitsInRect takes group whichGroup, rect r, boolexpr filter returns nothing
set g = whichGroup
endfunction
function GetGroupEnumUnitsInRectCounted takes group whichGroup, rect r, boolexpr filter, integer countLimit returns nothing
set g = whichGroup
endfunction
function GetGroupEnumUnitsOfPlayer takes group whichGroup, player whichPlayer, boolexpr filter returns nothing
set g = whichGroup
endfunction
function GetGroupEnumUnitsOfType takes group whichGroup, string unitname, boolexpr filter returns nothing
set g = whichGroup
endfunction
function GetGroupEnumUnitsOfTypeCounted takes group whichGroup, string unitname, boolexpr filter, integer countLimit returns nothing
set g = whichGroup
endfunction
function GetGroupEnumUnitsSelected takes group whichGroup, player whichPlayer, boolexpr filter returns nothing
set g = whichGroup
endfunction
hook GroupEnumUnitsInRange GetGroupEnumUnitsInRange
hook GroupEnumUnitsInRangeCounted GetGroupEnumUnitsInRangeCounted
hook GroupEnumUnitsInRangeOfLoc GetGroupEnumUnitsInRangeOfLoc
hook GroupEnumUnitsInRangeOfLocCounted GetGroupEnumUnitsInRangeOfLocCounted
hook GroupEnumUnitsInRect GetGroupEnumUnitsInRect
hook GroupEnumUnitsInRectCounted GetGroupEnumUnitsInRectCounted
hook GroupEnumUnitsOfPlayer GetGroupEnumUnitsOfPlayer
hook GroupEnumUnitsOfType GetGroupEnumUnitsOfType
hook GroupEnumUnitsOfTypeCounted GetGroupEnumUnitsOfTypeCounted
hook GroupEnumUnitsSelected GetGroupEnumUnitsSelected
globals
private group ge
endglobals
function GetTriggerGroup takes nothing returns group
return ge
endfunction
function RegisterUnitEnterGroup takes trigger whichtrigger returns integer
return EnterGroupEvent.register(whichtrigger)
endfunction
function RegisterUnitLeaveGroup takes trigger whichtrigger returns integer
return LeaveGroupEvent.register(whichtrigger)
endfunction
private function ExecuteEnterGroupEvent takes group whichgroup, unit whichunit returns nothing
set ge = whichgroup
set UEDxBasic_u = whichunit
call EnterGroupEvent.fire()
endfunction
private function ExecuteLeaveGroupEvent takes group whichgroup, unit whichunit returns nothing
set ge = whichgroup
set UEDxBasic_u = whichunit
call LeaveGroupEvent.fire()
endfunction
hook GroupAddUnit ExecuteEnterGroupEvent
hook GroupRemoveUnit ExecuteLeaveGroupEvent
private function Init takes nothing returns nothing
set EnterGroupEvent = Event.create()
set LeaveGroupEvent = Event.create()
endfunction
endlibrary
JASS:
////////////////////////////////////////////////////////////////
// _ _ ___ ___
// | | | | | _| | _ \ UNIT EVENTS DETECTION : HEAL v1.0.0
// | | | | | |_ || \ | by kingking
// | |_| | | |_ ||_/ |
// \_____/ |___| |___/
//
// This library is the extension of Unit Events Detection.
// It detects for healing event.
//
// Functions Provided :
// RegisterUnitHealed(trigger)
// GetHealer() -> unit
// GetHealAmount() -> real
// UnitHealTarget(healer, target, real amount)
//
// Requires :
// Event
// Unit Events Detection : Basic
// Jasshelper 0.9.K.0 or later
/////////////////////////////////////////////////////////////////
library UEDxHeal initializer Init requires Event, UEDxBasic
globals
private Event HealEvent
endglobals
globals
private unit healer
private real healamount
endglobals
function GetHealer takes nothing returns unit
return healer
endfunction
function GetHealAmount takes nothing returns real
return healamount
endfunction
function RegisterUnitHealed takes trigger whichtrigger returns integer
return HealEvent.register(whichtrigger)
endfunction
function UnitHealTarget takes unit from, unit targ, real amount returns boolean
if IsUnitType(targ,UNIT_TYPE_DEAD) == false then//Prevent healing on death units
call SetWidgetLife(targ,GetWidgetLife(targ) + amount)
set healer = from
set healamount = amount
set UEDxBasic_u = targ
call HealEvent.fire()
return true
endif
return false
endfunction
private function Init takes nothing returns nothing
set HealEvent = Event.create()
endfunction
endlibrary