Name | Type | is_array | initial_value |
Angle | real | Yes | |
Attacked | unit | Yes | |
Attacking | unit | Yes | |
Boolean | boolean | No | |
CameraGroup | group | No | |
Chance | real | Yes | |
Distance | real | Yes | |
Dummy_EXP | unit | Yes | |
Dummy_EXPGroup | group | No | |
DummyFFball | unit | No | |
DummyFFPoint | location | No | |
ExU | unit | No | |
FADE_Blue | real | Yes | |
FADE_Boolean | boolean | Yes | |
FADE_COLORYesNo | boolean | No | |
FADE_Counter1 | integer | Yes | |
FADE_Counter2 | integer | Yes | |
FADE_Green | real | Yes | |
FADE_GroupUnit | group | Yes | |
FADE_Index | integer | Yes | |
FADE_Index_maxSize | integer | No | |
FADE_Index_Size | integer | No | |
FADE_LOOP | integervar | No | |
FADE_MaxTransparency | real | Yes | |
FADE_MaxTransparency_Fake | real | Yes | |
FADE_OK | boolean | Yes | |
FADE_Red | real | Yes | |
FADE_Reduce | real | Yes | |
FADE_RemoveFromMapYesNo | boolean | Yes | |
FADE_Target | unit | Yes | |
FADE_Transparency | real | Yes | |
FADE_TransparencyYesNo | boolean | Yes | |
FADE_UnfadeYesNo | boolean | Yes | |
FadeBlue | real | No | |
FadeColorYesNo | boolean | No | |
FadeGreen | real | No | |
FadeGroupUnit | group | No | |
FadeMaxTransparency | real | No | |
FadeRed | real | No | |
FadeReduce | real | No | |
FadeRemoveFromMapYesNo | boolean | No | |
FadeTarget | unit | No | |
FadeTransparency | real | No | |
FadeTransparencyYesNo | boolean | No | |
FadeUnfadeYesNo | boolean | No | |
FFCaster | unit | No | |
FFCasterPoint | location | No | |
FFDamage | integer | No | |
FFEff | effect | Yes | |
FFGroup | group | No | |
FFOffset | location | No | |
FFTargetPoint | location | No | |
FK_INT | integer | No | |
FKame_Angle | real | Yes | |
FKame_Caster | unit | Yes | |
FKame_Counter1 | integer | Yes | |
FKame_Counter2 | integer | Yes | |
FKame_Counter3 | integer | Yes | |
FKame_Counter4 | integer | Yes | |
FKame_Counter5 | integer | Yes | |
FKame_CounterBoolean1 | boolean | Yes | |
FKame_CounterBoolean2 | boolean | Yes | |
FKame_CounterBoolean3 | boolean | Yes | |
FKame_CounterBoolean4 | boolean | Yes | |
FKame_CounterBoolean5 | boolean | Yes | |
FKame_Dummy | unit | Yes | |
FKame_Dummy2 | unit | Yes | |
FKame_Dummy3 | unit | Yes | |
FKame_Dummy4 | unit | Yes | |
FKame_Dummy6 | unit | Yes | |
FKame_Effect | effect | Yes | |
FKame_Group2 | group | Yes | |
FKame_Group3 | group | Yes | |
FKame_MUIPoint | location | Yes | |
FKame_Point | location | Yes | |
FKame_Points | location | Yes | |
FKame_Sound | sound | Yes | |
FSK_BOOLEAN | boolean | Yes | |
FSK_BOOLEAN_BOOM | boolean | Yes | |
FSK_CurDistance | real | Yes | |
FSK_Index | integer | Yes | |
FSK_Index_maxSize | integer | No | |
FSK_Index_Size | integer | No | |
FSK_LOOP | integer | No | |
FSK_MaxDistance | real | Yes | |
FSK_MISSILE | unit | Yes | |
FSK_SPEED | real | Yes | |
Hero | unit | No | |
HeroEffect | effect | Yes | |
HeroUp | location | No | |
ID | integer | No | |
IndexInt | integer | No | |
Initiz | integervar | No | |
Initiz_2 | integervar | No | |
Initiz_3 | integervar | No | |
IntPoint | location | Yes | |
Kame_Angle | real | Yes | |
Kame_BoomBool | boolean | Yes | |
Kame_Caster | unit | Yes | |
Kame_Counter1 | integer | Yes | |
Kame_Counter2 | integer | Yes | |
Kame_Counter3 | integer | Yes | |
Kame_Counter4 | integer | Yes | |
Kame_Counter5 | integer | Yes | |
Kame_CounterBoolean1 | boolean | Yes | |
Kame_CounterBoolean2 | boolean | Yes | |
Kame_CounterBoolean3 | boolean | Yes | |
Kame_CounterBoolean4 | boolean | Yes | |
Kame_CounterBoolean5 | boolean | Yes | |
Kame_Damage | real | Yes | |
Kame_Distance | real | Yes | |
Kame_Dummy | unit | Yes | |
Kame_Dummy2 | unit | Yes | |
Kame_Dummy3 | unit | Yes | |
Kame_Dummy4 | unit | Yes | |
Kame_Dummy5 | unit | Yes | |
Kame_Dummy6 | unit | Yes | |
Kame_Dummy7 | unit | Yes | |
Kame_Effect | effect | Yes | |
Kame_Effect2 | effect | Yes | |
Kame_Group | group | Yes | |
Kame_Group10 | group | Yes | |
Kame_Group2 | group | Yes | |
Kame_Group3 | group | Yes | |
Kame_Group4 | group | Yes | |
Kame_Group5 | group | Yes | |
Kame_Group6 | group | Yes | |
Kame_Group7 | group | Yes | |
Kame_Group8 | group | Yes | |
Kame_Group9 | group | Yes | |
Kame_Inst | integer | No | |
Kame_MuiCount | integer | No | |
Kame_MUIPoint | location | Yes | |
Kame_MUIPointEnd | location | Yes | |
Kame_Point | location | Yes | |
Kame_Points | location | Yes | |
KAME_SFX | effect | Yes | |
KAME_SFXCOUNTER | integer | Yes | |
Kame_Sound | sound | Yes | SoundNull |
Kame_Timer | timer | No | |
KF_MuiCount | integer | No | |
LagiSibuk | boolean | Yes | |
MapMakerString | string | No | |
MOVE_UNITGROUP | group | Yes | |
MoveUnitGroup | group | No | |
MU_Angle | real | Yes | |
MU_AOE | real | Yes | |
MU_Counter | integer | Yes | |
MU_CurDistance | real | Yes | |
MU_Damage | real | Yes | |
MU_Group | group | Yes | |
MU_Index | integer | Yes | |
MU_Index_maxSize | integer | No | |
MU_Index_Size | integer | No | |
MU_Int | integer | No | |
MU_LOOP | integervar | No | |
MU_MaxDistance | real | Yes | |
MU_Point | location | Yes | |
MU_Source | unit | Yes | |
MU_Speed | real | Yes | |
MU_SpeedFriction | real | Yes | |
MU_UnitMoved | unit | Yes | |
MU_YesNo | boolean | Yes | |
MU_YesNo_Friction | boolean | Yes | |
MU_YesNo_RemoveMoved | boolean | Yes | |
MUCall_Angle | real | No | |
MUCall_AOE | real | No | |
MUCall_Damage | real | No | |
MUCall_MaxDistance | real | No | |
MUCall_Source | unit | No | |
MUCall_Speed | real | No | |
MUCall_SpeedFriction | real | No | |
MUCall_UnitMoved | unit | No | |
MUCall_YesNo_Friction | boolean | No | |
MUCall_YesNo_RemoveMoved | boolean | No | |
MuiCount | integer | No | |
NameString | string | Yes | |
PG | force | No | |
RegionPoint | location | Yes | |
SKam_ANGLE | real | Yes | |
SKam_BOOLEAN | boolean | Yes | |
SKam_CASTER | unit | Yes | |
SKam_CurDistance | real | Yes | |
SKam_Index | integer | Yes | |
SKam_Index_maxSize | integer | No | |
SKam_Index_Size | integer | No | |
SKam_LOOP | integer | No | |
SKam_MaxDistance | real | Yes | |
SKam_MISSILE | unit | Yes | |
SKam_SPEED | real | Yes | |
strDebugMSG | string | No | |
temp_bHasUnitBeenStored | boolean | Yes | |
temp_CreepSpawnLoc | location | No | |
temp_For_Reviving | integer | No | |
temp_RevivingCreeps | group | No | |
temp_TimeFrequencyMAX | integer | Yes | |
temp_TimeLeft | integer | Yes | |
temp_UnitGroup | group | No | |
temp_UnitGroupBox | group | No | |
temp_UnitTypes | unitcode | Yes | |
TempInt | integer | No | |
TempLoc | location | Yes | |
TempLoc2 | location | No | |
Tick | integer | Yes | |
Timer | timer | No | |
UnitTest | unit | Yes | |
X | real | Yes | |
Y | real | Yes |
library CreepRevive
globals
private constant integer EnemyPlayerId = 1 //the enemy player id
private constant string ReviveEffect = "Abilities\\Spells\\Undead\\RaiseSkeletonWarrior\\RaiseSkeleton.mdl" //the effect at respawn
private constant real TimeTillRevive = 10.00 //time befor the units will respawn
// ---------------- END OF SETTINGS ----------------
private filterfunc filter
private trigger CreepReviveTrigger = CreateTrigger()
private hashtable Hash = InitHashtable()
endglobals
private function TrueFilter takes nothing returns boolean
return true //just a simple function that returns true
endfunction
private function CreepRevive takes nothing returns nothing
local unit u3 = GetTriggerUnit() //the dieing unit
local unit u4
if GetOwningPlayer(u3) == Player(EnemyPlayerId) then //cheks if the unit belongs to the enemy
call TriggerSleepAction(TimeTillRevive) //waits
set u4 = CreateUnit(Player(EnemyPlayerId),LoadInteger(Hash, GetHandleId(u3), 0),LoadReal(Hash, GetHandleId(u3), 1),LoadReal(Hash, GetHandleId(u3), 2),LoadReal(Hash, GetHandleId(u3), 3))
//create the new unit
call DestroyEffect(AddSpecialEffect(ReviveEffect,LoadReal(Hash, GetHandleId(u3), 1),LoadReal(Hash, GetHandleId(u3), 2)))
//create the sfx
//------------------------------------------------------------------------------
call SaveInteger(Hash,GetHandleId(u4), 0, LoadInteger(Hash, GetHandleId(u3), 0))
call SaveReal(Hash,GetHandleId(u4), 1, LoadReal(Hash, GetHandleId(u3), 1))
call SaveReal(Hash,GetHandleId(u4), 2, LoadReal(Hash, GetHandleId(u3), 2))
call SaveReal(Hash,GetHandleId(u4), 3, LoadReal(Hash, GetHandleId(u3), 3))
call FlushChildHashtable(Hash, GetHandleId(u3))
//store unitId, x, y and facting of the unit in the hashtable and clear the all childs of the old unit
endif
set u3 = null
set u4 = null
//nulling
endfunction
function InitTrig_vJass_good_Creep_Revive takes nothing returns nothing
local unit u3
local group grooup = CreateGroup()
set filter = Filter(function TrueFilter)
call GroupEnumUnitsOfPlayer(grooup, Player(EnemyPlayerId),filter)
loop
set u3 = FirstOfGroup(grooup)
exitwhen u3 == null
call SaveInteger(Hash,GetHandleId(u3), 0, GetUnitTypeId(u3))
call SaveReal(Hash,GetHandleId(u3), 1, GetUnitX(u3))
call SaveReal(Hash,GetHandleId(u3), 2, GetUnitY(u3))
call SaveReal(Hash,GetHandleId(u3), 3, GetUnitFacing(u3))
call GroupRemoveUnit(grooup,u3)
set u3 = null
endloop
call TriggerRegisterAnyUnitEventBJ(CreepReviveTrigger, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddAction(CreepReviveTrigger, function CreepRevive)
set CreepReviveTrigger = null
call DestroyGroup(grooup)
set grooup = null
endfunction
endlibrary
//TESH.scrollpos=0
//TESH.alwaysfold=0
function Trig_Show_damage_int takes nothing returns nothing
call TriggerRegisterUnitEvent( gg_trg_Show_damage_Execute, GetEnumUnit(), EVENT_UNIT_DAMAGED )
endfunction
function Trig_Show_damage_int_Actions takes nothing returns nothing
// we are making sure that evry unit in map will be touch by this system
// Note this system of damage is Basic, but since its in jass its better than gui
//just add more condition as you want like
//
local group g = CreateGroup()
set g = GetUnitsInRectAll(GetEntireMapRect())
// exemple : GetUnitsInRectMatching(GetEntireMapRect(),IsUnitAliveBJ(GetFilterUnit()))
// or you can use a gui condition convert it and us try to find same condition without a BJ
// Basic Jass is very e-z to understand Use JNGP its best tool you need if you wanna edit jass
// but somehow you cant edit GUI hashtable in jngp(s)so you need normal WE for it
call ForGroup( g, function Trig_Show_damage_int)
call DestroyGroup(g)
endfunction
//===========================================================================
function InitTrig_Show_damage_int takes nothing returns nothing
set gg_trg_Show_damage_int = CreateTrigger( )
call TriggerAddAction( gg_trg_Show_damage_int, function Trig_Show_damage_int_Actions )
endfunction
//TESH.scrollpos=0
//TESH.alwaysfold=0
function Trig_Show_damage_unit_Actions takes nothing returns nothing
call TriggerRegisterUnitEvent( gg_trg_Show_damage_Execute, GetEnteringUnit(), EVENT_UNIT_DAMAGED )
endfunction
//===========================================================================
function InitTrig_Show_damage_unit takes nothing returns nothing
set gg_trg_Show_damage_unit = CreateTrigger( )
call TriggerRegisterEnterRectSimple( gg_trg_Show_damage_unit, GetEntireMapRect() )
call TriggerAddAction( gg_trg_Show_damage_unit, function Trig_Show_damage_unit_Actions )
endfunction
//TESH.scrollpos=0
//TESH.alwaysfold=0
function Trig_Show_damage_Execute_Actions takes nothing returns nothing
// here we set Local variable for the trigger itself
// like you see jass if very usefull for small system
// here the show text will be efficient & mui
local string DmgString = I2S(R2I(GetEventDamage()))
local texttag ttag = CreateTextTag()
local real speed = 128.00
local real angle = 90
local real vel = TextTagSpeed2Velocity(speed)
local real xvel = vel * Cos(angle * bj_DEGTORAD)
local real yvel = vel * Sin(angle * bj_DEGTORAD)
local real textlife = 1.0
local real size = 10
local real red = 100
local real green = 0
local real blue = 100
local real trans = 0.00
local unit Tunit = GetTriggerUnit()
set ttag = CreateTextTagUnitBJ( DmgString + "!!" , Tunit, angle, size, red, green, blue, trans )
call SetTextTagVelocity( ttag, xvel, yvel)
call SetTextTagFadepoint( ttag, textlife)
call SetTextTagLifespan( ttag, textlife )
call SetTextTagPermanent( ttag, false )
set ttag = null
set Tunit = null
set DmgString = null
endfunction
//===========================================================================
function InitTrig_Show_damage_Execute takes nothing returns nothing
set gg_trg_Show_damage_Execute = CreateTrigger( )
call TriggerAddAction( gg_trg_Show_damage_Execute, function Trig_Show_damage_Execute_Actions )
endfunction
//TESH.scrollpos=0
//TESH.alwaysfold=0
function Trig_Regrow_Trees_Setup takes nothing returns nothing
call TriggerRegisterDeathEvent( gg_trg_RegrowTrees, GetEnumDestructable() )
endfunction
function Trig_Regrow_Trees_Setup_Actions takes nothing returns nothing
call EnumDestructablesInRectAll( GetEntireMapRect(), function Trig_Regrow_Trees_Setup )
endfunction
//===========================================================================
function InitTrig_Regrow_Trees_Setup takes nothing returns nothing
local trigger t = CreateTrigger()
call TriggerRegisterTimerEventSingle( t, 1.00 )
call TriggerAddAction( t, function Trig_Regrow_Trees_Setup_Actions )
set t = null
endfunction
//TESH.scrollpos=0
//TESH.alwaysfold=0
function Trig_RegrowTrees_Actions takes nothing returns nothing
local destructable T = GetDyingDestructable()
local real W = 10.00
call PolledWait(W)
call DestructableRestoreLife( T, GetDestructableMaxLife(T), true )
endfunction
//===========================================================================
function InitTrig_RegrowTrees takes nothing returns nothing
set gg_trg_RegrowTrees = CreateTrigger( )
call TriggerAddAction( gg_trg_RegrowTrees, function Trig_RegrowTrees_Actions )
endfunction
//TESH.scrollpos=0
//TESH.alwaysfold=0
function Trig_God_View_camera_systen_Actions takes nothing returns nothing
local player p = GetTriggerPlayer()
call SetCameraFieldForPlayer( p , CAMERA_FIELD_ZOFFSET, S2R(SubString(GetEventPlayerChatString(), 6, 9)), 0 )
endfunction
//===========================================================================
function InitTrig_God_View_camera_systen takes nothing returns nothing
set gg_trg_God_View_camera_systen = CreateTrigger( )
call TriggerRegisterPlayerChatEvent( gg_trg_God_View_camera_systen, Player(0), "-cam", false )
call TriggerRegisterPlayerChatEvent( gg_trg_God_View_camera_systen, Player(1), "-cam", false )
call TriggerRegisterPlayerChatEvent( gg_trg_God_View_camera_systen, Player(2), "-cam", false )
call TriggerRegisterPlayerChatEvent( gg_trg_God_View_camera_systen, Player(3), "-cam", false )
call TriggerRegisterPlayerChatEvent( gg_trg_God_View_camera_systen, Player(4), "-cam", false )
call TriggerRegisterPlayerChatEvent( gg_trg_God_View_camera_systen, Player(5), "-cam", false )
call TriggerRegisterPlayerChatEvent( gg_trg_God_View_camera_systen, Player(6), "-cam", false )
call TriggerRegisterPlayerChatEvent( gg_trg_God_View_camera_systen, Player(7), "-cam", false )
call TriggerRegisterPlayerChatEvent( gg_trg_God_View_camera_systen, Player(8), "-cam", false )
call TriggerRegisterPlayerChatEvent( gg_trg_God_View_camera_systen, Player(9), "-cam", false )
call TriggerRegisterPlayerChatEvent( gg_trg_God_View_camera_systen, Player(10), "-cam", false )
call TriggerRegisterPlayerChatEvent( gg_trg_God_View_camera_systen, Player(11), "-cam", false )
call TriggerAddAction( gg_trg_God_View_camera_systen, function Trig_God_View_camera_systen_Actions )
endfunction
//TESH.scrollpos=7
//TESH.alwaysfold=0
function Trig_ShowTextSystem_Actions takes nothing returns nothing
// here we set Local variable for the trigger itself
// like you see jass if very usefull for small system
// here the show text will be efficient & mui
local texttag ttag = CreateTextTag()
local real speed = 80.00
local real speed2 = 2.00
local real angle = 90
local real vel = TextTagSpeed2Velocity(speed2)
local real xvel = vel * Cos(angle * bj_DEGTORAD)
local real yvel = vel * Sin(angle * bj_DEGTORAD)
local real textlife = 2.00
local real offset = 7.00
local real size = 15
//plz note : you cant decimal in integer
local integer red = 0
local integer green = 100
local integer blue = 0
local integer trans = 0
local integer name =GetSpellAbilityId()
local string ID = GetObjectName(name)
local unit Tunit = GetTriggerUnit()
// below we do action
set ttag = CreateTextTagUnitBJ( ID + "!!" , Tunit, angle, size, red, green, blue, trans )
call SetTextTagVelocity( ttag, xvel, yvel)
call SetTextTagFadepoint( ttag, textlife)
call SetTextTagLifespan( ttag, textlife )
call SetTextTagPermanent( ttag, false )
set Tunit = null
set ttag = null
endfunction
//===========================================================================
function InitTrig_ShowTextSystem takes nothing returns nothing
local trigger t = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ( t, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddAction( t, function Trig_ShowTextSystem_Actions )
set t = null
endfunction
//TESH.scrollpos=19
//TESH.alwaysfold=0
function Trig_Revive_hero takes nothing returns boolean
local unit u = GetTriggerUnit()
// player 0 = player 1 in game & player 6 = player 7 in game
// Note player start from 0 to 16 in jass!!
//in GUI converted text(jass) you will see player 1in gui was 1 in jass its 0
//Here i use preset hero becuz in some map hero can unally other hero
//if not you can use Boolean Player as condition :)
// you can also use something like this local boolean ok = IsUnitType(u,UNIT_TYPE_HERO) and (IsPlayerAlly(Player(0),GetOwningPlayer(u)) or IsPlayerAlly(Player(6),GetOwningPlayer(u))
//plz remember if you hero can unally or have more them plz enter player 0 to 11
local boolean ok = IsUnitType(u,UNIT_TYPE_HERO) and (GetUnitTypeId(u) == udg_temp_UnitTypes[1]) or (GetUnitTypeId(GetTriggerUnit()) == udg_temp_UnitTypes[2]) or (GetUnitTypeId(GetTriggerUnit()) == udg_temp_UnitTypes[3]) or (GetUnitTypeId(GetTriggerUnit()) == udg_temp_UnitTypes[4]) or (GetUnitTypeId(GetTriggerUnit()) == udg_temp_UnitTypes[5]) or (GetUnitTypeId(GetTriggerUnit()) == udg_temp_UnitTypes[6])
set u = null
return ok
endfunction
function Trig_Revive_hero_Actions takes nothing returns nothing
// here is good hero revive for spell template
local unit Tunit = GetTriggerUnit()
// since the point of revive is mostly static i used a premade region
// i think it would be useless to create a region than destroy it!
// if you feel confident you can try :P
local location Loc = GetRectCenter(gg_rct_Region_000)
local real Time = 10
// Here we will Loop a Global variable premade in the initialization
// Please take on look on it so you can understand more the reason of my Loop
// its way faster and its econimize some line
call PolledWait(Time)
call ReviveHeroLoc(Tunit, Loc, true)
set Tunit = null
call RemoveLocation(Loc)
endfunction
//===========================================================================
function InitTrig_Revive_hero takes nothing returns nothing
local trigger t = CreateTrigger()
call TriggerRegisterAnyUnitEventBJ( t, EVENT_PLAYER_UNIT_DEATH )
call TriggerAddAction( t, function Trig_Revive_hero_Actions )
endfunction