//TESH.scrollpos=0
//TESH.alwaysfold=0
function CG_Init takes nothing returns nothing
set udg_Compress = SubString(udg_Alphabet, StringLength(udg_Alphabet)-1, 999)
set udg_Alphabet = SubString(udg_Alphabet, 0, StringLength(udg_Alphabet)-1)
endfunction
function CG_Encode takes integer i returns string
local integer b
local string s = ""
if i < udg_Base then
return SubString(udg_Alphabet, i, i + 1)
endif
loop
exitwhen i <= 0
set b = ModuloInteger(i, udg_Base)
set s = SubString(udg_Alphabet, b, b + 1) + s
set i = i / udg_Base
endloop
return s
endfunction
function CG_SaveString takes string name returns integer
local integer hash = StringHash(name)/100000000
if hash<0 then
set hash = hash*-1
endif
return hash
endfunction
function CG_StrPos takes string s returns integer
local integer i = 0
loop
exitwhen i > udg_Base
if s == SubString(udg_Alphabet, i, i + 1) then
return i
endif
set i = i + 1
endloop
return -1
endfunction
function CG_Decode takes string s returns integer
local integer a = 0
loop
exitwhen StringLength(s) == 1
set a = a * udg_Base + udg_Base * CG_StrPos(SubString(s, 0, 1))
set s = SubString(s, 1, 50)
endloop
return a+CG_StrPos(s)
endfunction
function CG_SaveBoolean takes boolean flag returns integer
if flag then
return 1
endif
return 0
endfunction
function CG_SaveHero takes unit it returns integer
local integer i = 1
loop
exitwhen udg_SaveHero[i] == udg_HeroCount
if udg_SaveHero[i] == GetUnitTypeId(it) then
return i
endif
set i = i + 1
endloop
return 0
endfunction
function CG_SaveItem takes item it returns integer
local integer i = 1
loop
exitwhen udg_SaveItem[i] == null
if udg_SaveItem[i] == GetItemTypeId(it) then
return i
endif
set i = i + 1
endloop
return 0
endfunction
function CG_Seperate takes string s returns string
local integer i = StringLength(s)
local integer a = ModuloInteger( i, 4 )
loop
exitwhen i <= 0
if a == 4 then
set s = SubString(s, 0, i) + "-" + SubString(s, i, 999)
set a = 0
else
set a = a + 1
endif
set i = i -1
endloop
return s
endfunction
function CG_Unseperate takes string s returns string
local integer i = 0
loop
exitwhen i > StringLength(s)
if SubString(s, i, i + 1) == "-" then
set s = SubString(s, 0, i) + SubString(s, i+1, 999)
endif
set i = i + 1
endloop
return s
endfunction
function CG_IsLower takes string s returns boolean
return s == "a" or s == "b" or s == "c" or s == "d" or s == "e" or s == "f" or s == "g" or s == "h" or s == "i" or s == "j" or s == "k" or s == "l" or s == "m" or s == "n" or s == "o" or s == "p" or s == "q" or s == "r" or s == "s" or s == "t" or s == "u" or s == "v" or s == "w" or s == "x" or s == "y" or s == "z"
endfunction
function CG_IsUpper takes string s returns boolean
return s == "W" or s == "A" or s == "B" or s == "C" or s == "D" or s == "E" or s == "F" or s == "G" or s == "H" or s == "I" or s == "J" or s == "K" or s == "L" or s == "M" or s == "N" or s == "O" or s == "P" or s == "Q" or s == "R" or s == "S" or s == "T" or s == "U" or s == "V" or s == "X" or s == "Y" or s == "Z"
endfunction
function CG_ColorChar takes string char returns string
local integer i = 0
local string s = udg_Alphabet + udg_Compress
loop
exitwhen i > udg_Base+1
if char == SubString(s, i, i + 1) then
if CG_IsLower(SubString(s, i, i + 1)) then
return udg_LOWER_CASE_COLOR + char + "|r"
elseif CG_IsUpper(SubString(s, i, i + 1)) then
return udg_UPPER_CASE_COLOR + char + "|r"
elseif SubString(s, i, i + 1) != "-" then
return udg_OTHER_CHARS_COLOR + char + "|r"
endif
endif
set i = i + 1
endloop
return char
endfunction
function CG_Color takes string s returns string
local integer i = 0
local string r = ""
loop
exitwhen i > StringLength(s)
set r = r + CG_ColorChar(SubString(s, i, i + 1))
set i = i + 1
endloop
return r
endfunction
function CG_ClearData takes nothing returns nothing
local integer i = 0
loop
exitwhen i > 50
set udg_Save[i] = 0
set i = i + 1
endloop
endfunction
function CG_Execute takes nothing returns nothing
local integer loopA = 1
local integer length = 0
local integer max = 0
local integer name = 0
local string temp = ""
local string array comp
local boolean array wtf
set udg_Code = ""
if udg_SavePlayerName then
set name = CG_SaveString(GetPlayerName(GetTriggerPlayer()))
endif
loop
exitwhen loopA > udg_SaveCount
set temp = CG_Encode(udg_Save[loopA]+name)
set length = StringLength(temp)
if length > 1 and wtf[length] != true then
set comp[length] = udg_Compress + CG_Encode(length) + temp
set wtf[length] = true
endif
if length > max then
set max = length
endif
set comp[length] = comp[length] + temp
set loopA = loopA + 1
endloop
set loopA = 0
loop
exitwhen loopA > max
if comp[loopA] != null then
set udg_Code = udg_Code + comp[loopA]
endif
set loopA = loopA + 1
endloop
set max = CG_SaveString(udg_Code)
set udg_Code = CG_Seperate(udg_Code)
set udg_Code = CG_Color(udg_Code+CG_Encode(max))
call CG_ClearData()
endfunction
function CG_SaveOnline takes nothing returns integer
local boolean b = not ReloadGameCachesFromDisk()
if b then
return 1
endif
return 0
endfunction
function CG_Load takes string st returns nothing
local string s = CG_Unseperate(st)
local integer a = CG_Decode(SubString(s, 0, 1))
local integer b = 0
local integer c = 1
local integer e = 0
local integer f = 0
local integer h = CG_Decode(SubString(s, StringLength(s)-1, StringLength(s)))
local string d = ""
local boolean bool = false
if udg_SavePlayerName then
set f = CG_SaveString(GetPlayerName(GetTriggerPlayer()))
endif
set s = SubString(s, 0, StringLength(s)-1)
if h != CG_SaveString(s) then
set udg_LOAD_VALID = false
set udg_SAVE_FAIL_REASON = "Your code was invalid"
else
set udg_LOAD_VALID = true
endif
loop
exitwhen b >= StringLength(s)
set d = SubString(s, b, b + 1)
if d == udg_Compress then
set a = CG_Decode(SubString(s, b + 1, b + 2))
set b = (b + a)
set udg_Load[c] = CG_Decode(SubString(s, b, b+a))-f
set c = c + 1
set d = SubString(s, b, b + 1)
endif
set udg_Load[c] = CG_Decode(d)-f
set c = c + 1
set b = b + 1
endloop
endfunction
Name | Type | is_array | initial_value |
AbilityCount | integer | No | |
Alphabet | string | No | |
Base | integer | No | |
Code | StringExt | No | |
Compress | string | No | |
Hero | unit | No | |
HeroCount | integer | No | |
income | integer | Yes | |
init_gates | destructable | Yes | |
integer | integer | No | |
integer2 | integer | No | |
integer_array | integer | Yes | |
KB_Angle | real | Yes | |
KB_Casters | unit | Yes | |
KB_CountBuffs | integer | No | |
KB_DestroyTrees | boolean | Yes | |
KB_EffectCounter | integer | Yes | |
KB_EffectCounter2 | integer | Yes | |
KB_Effects_1 | string | Yes | |
KB_Effects_2 | string | Yes | |
KB_GeneralIntegers | integervar | Yes | |
KB_KnockbackedUnits | group | No | |
KB_Levels | integer | Yes | |
KB_MaxDistance | real | Yes | |
KB_ReachedDistance | real | Yes | |
KB_ReducedReal | real | No | |
KB_ReduceSpeedReal | real | Yes | |
KB_SpecificSpeed | real | Yes | |
KB_StartPositions | location | Yes | |
KB_TempPoint | location | Yes | |
KB_TempReal | real | No | |
KB_TotalKnockUnits | integer | No | |
KB_Units | unit | Yes | |
KBA_Caster | unit | No | |
KBA_DestroyTrees | boolean | No | |
KBA_DistancePerLevel | real | No | |
KBA_Level | integer | No | |
KBA_SpecialEffects | string | Yes | |
KBA_Speed | real | No | |
KBA_StartingPosition | location | No | |
KBA_TargetUnit | unit | No | |
Load | integer | Yes | |
LOAD_SUCCESS | boolean | Yes | |
LOAD_VALID | boolean | No | |
LoadCount | integer | No | |
loc | location | No | |
loc2 | location | No | |
loc_array | location | Yes | |
LOWER_CASE_COLOR | string | No | |
multiboard | multiboard | No | |
multiboard_playerInteger | integer | No | |
multiboard_playerKillsLoop | integer | Yes | |
multiboard_rowPlayer | integer | Yes | |
ODIN_HP | integer | Yes | |
OTHER_CHARS_COLOR | string | No | |
owned_bases | integer | Yes | |
Player | player | Yes | |
Player_Deaths | integer | Yes | |
Player_Hero | unit | Yes | |
Player_Kills | integer | Yes | |
rank_boolean | boolean | Yes | |
Rank_Dummy_var | unit | Yes | |
rank_exp_requirement | integer | Yes | |
rank_integer | integer | No | |
rank_special_integer | integer | No | |
rank_title | string | Yes | |
Save | integer | Yes | |
SAVE_FAIL_REASON | string | No | |
SaveAbility | abilcode | Yes | |
SaveCount | integer | No | |
SaveHero | unitcode | Yes | |
SaveItem | itemcode | Yes | |
SavePlayerName | boolean | No | |
Structures | integer | Yes | |
Surrender_Boolean | boolean | Yes | |
Team | force | Yes | |
temp_gate | destructable | Yes | |
tempgroup | group | No | |
TempHero | unit | Yes | |
TempItem | item | No | |
tempoint | location | No | |
time_elapsed_board | leaderboard | No | |
timer_integer_hours | integer | No | |
timer_integer_minutes | integer | No | |
timer_integer_seconds | integer | No | |
UPPER_CASE_COLOR | string | No | |
Victory_Boolean | boolean | Yes | |
victory_condition_integer | integer | No |