//____________________________________________________________________________________________________________// //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// //_______________________// // //Apple's Save Load START// //Version: B1 //Release Date: 8/31/07 //Created by MrApples (PoLlama@gmail.com) //Official Website and Support - Http://www.pollama.com //By using this code you agree that all credits to the creator and the website will be left intact. // //______________________// // === Settings - Descriptions === // MaxSaves - How many saves you can save to a single code. // CharSet - All the characters used in the codes are derived from this set. See NOTE. // Default : ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyz$# // CharSpec - Special characters. I'm reserving this for planned features. See NOTE. // Default : @?&! _ // NOTE: You can't use % in CharSet or CharSpec. The CharSet must be at least 32 chars long. You cannot repeat characters. // Colors - The Colors used in the 'Pimper', what colors the code before returning it. // = Color - The Color Code that you want. // = ColorStart - In order on the CharSet, this is where that color starts. // NOTE: This system does NOT use charmap encryption(too primitive). For security all you need to do is fill in the 10 random numbers. // Seperator - Puts a extra character inbetween a given amount of characters. If Rate = 4, ABCDE becomes ABCD-E. // Random[1 - 10] - A random number, chosen by you. If you haven't, fill that in now. This acts as a 'key' to your ASL copy. // Use_BooStuffer - I only left this option in for debug purposes. Make sure this is true. // Use_Pimper - This controls the 'Pimper' which colors the code before returning it. Recommended you use the function instead to edit this. // SL_Base - 1st Base // SL_Base2 - 2nd Base // BinSet - The liver of the ASL. That string took many hours to get, DON'T TOUCH. function ASLsettings takes nothing returns nothing set udg_SL_MaxSaves = 100 set udg_SL_CharSet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyz$#" set udg_SL_CharSpec = "@?&! _" // COLORS set udg_SL_Color[1] = "16D116" // Default : 00E700 (green) set udg_SL_ColorStart[1] = "A" set udg_SL_Color[2] = "E6E700" // Default : E6E700 (yellow) set udg_SL_ColorStart[2] = "1" set udg_SL_Color[3] = "C8C8C8" // Default : C8C8C8 (gray) set udg_SL_ColorStart[3] = "a" set udg_SL_Color[4] = "0068DE" // Default : 0068DE (light blue) set udg_SL_ColorStart[4] = "$" //SEPERATOR set udg_SL_Seperator = "-" // Default : "-" set udg_SL_SepRate = 0 // Default : 0 // SECURITY set udg_SL_Random[1] = 26 // Default: 26 set udg_SL_Random[2] = 54 // Default: 54 set udg_SL_Random[3] = 19 // Default: 19 set udg_SL_Random[4] = 23 // Default: 23 set udg_SL_Random[5] = 88 // Default: 88 set udg_SL_Random[6] = 22 // Default: 22 set udg_SL_Random[7] = 1 // Default: 1 set udg_SL_Random[8] = 31 // Default: 31 set udg_SL_Random[9] = 9 // Default: 9 set udg_SL_Random[10] = 24 // Default: 24 // IMPORTANT STUFF (Don't touch unless you know what they do) set udg_SL_Use_BooStuffer = true set udg_SL_Use_Pimper = true set udg_SL_Use_FlipIndex = true set udg_SL_Use_Overload = false set udg_SL_Overload = 5000 set udg_SL_Base = 32 set udg_SL_Base2 = 64 set udg_SL_BinSet = "111110111001000101001101011000001111" endfunction //____________________________________________// // END SETTINGS // //____________________________________________// // Init - STOP: NO NEED TO EDIT BELOW // //____________________________________________// function SetOverload takes integer x returns nothing if ( x > 0 ) then set udg_SL_Overload = x endif endfunction function Overload takes integer x returns nothing set udg_SL_Load = udg_SL_Load + x if ( udg_SL_Load >= udg_SL_Overload ) then call PauseTimerBJ( true, udg_SL_Cooldown ) set udg_SL_OverHit = udg_SL_OverHit + 1 call PolledWait(0.01) set udg_SL_Load = 0 else if ((udg_SL_Load - x) == 0) then call StartTimerBJ( udg_SL_Cooldown, true, 0.01 ) endif endif endfunction function ASLinit takes nothing returns nothing local integer a = 1 local integer b = 1 local string c = "" call ASLsettings() set udg_SL_Q = "This map makes use of Apple's Save/Load " set udg_SL_Q = udg_SL_Q + "|c0000E700HTTP://WWW.POLLAMA.COM|r" //set udg_SL_BinSet = "111110110011010100100010111000001111" set udg_SL_Chars = StringLength(udg_SL_CharSet) // Create Color Map loop if ( SubString(udg_SL_CharSet, a-1, a) == udg_SL_ColorStart[b] ) then if udg_SL_Color[b] != "" then set c = ("|c00" + udg_SL_Color[b]) else set c = "" endif set b = b + 1 endif set udg_SL_ColorChar[a] = c exitwhen a >= udg_SL_Chars set a = a + 1 if ( udg_SL_Use_Overload == true ) then call Overload(3) endif endloop // Flip Index set b = 1 loop if ( udg_SL_Random[b] <= 0 ) then set udg_SL_Random[b] = 1 // Create Error. Randoms can't be 0 or less than 0. endif exitwhen b == 10 set b = b + 1 if ( udg_SL_Use_Overload == true ) then call Overload(2) endif endloop set b = b + 1 set udg_SL_Flip_Index1[2] = udg_SL_Flip_Index1[2] * 2 set udg_SL_Flip_Index1[5] = udg_SL_Flip_Index1[5] * 7 set udg_SL_Flip_Index1[6] = udg_SL_Flip_Index1[6] * 3 set a = 1 set b = 1 loop set udg_SL_Flip_Index1[a] = udg_SL_Random[b] + udg_SL_Random[b+1] set udg_SL_Flip_Index2[a] = udg_SL_Random[b] - udg_SL_Random[b+1] if ( udg_SL_Flip_Index2[a] <= 0 ) then set udg_SL_Flip_Index2[a] = ((udg_SL_Flip_Index2[a] - 1) * -1) endif set a = a + 1 exitwhen b == 9 set b = b + 1 if ( udg_SL_Use_Overload == true ) then call Overload(5) endif endloop set b = 1 loop set udg_SL_Flip_Index1[a] = udg_SL_Random[b] + ( udg_SL_Random[ModuloInteger( udg_SL_Random[1], 9) + 1] - udg_SL_Random[ModuloInteger( udg_SL_Random[2], 9) + 1] ) set udg_SL_Flip_Index2[a] = udg_SL_Random[b] - ( udg_SL_Random[ModuloInteger( udg_SL_Random[3], 9) + 1] + udg_SL_Random[ModuloInteger( udg_SL_Random[4], 9) + 1] ) if ( udg_SL_Flip_Index2[a] <= 0 ) then set udg_SL_Flip_Index2[a] = ((udg_SL_Flip_Index2[a] - 1) * -1) endif set a = a + 1 set udg_SL_Flip_Index1[a] = udg_SL_Random[b] * ( udg_SL_Random[ModuloInteger( udg_SL_Random[5], 9) + 1] - udg_SL_Random[ModuloInteger( udg_SL_Random[6], 9) + 1] ) set udg_SL_Flip_Index2[a] = udg_SL_Random[b] / ( udg_SL_Random[ModuloInteger( udg_SL_Random[7], 9) + 1] + udg_SL_Random[ModuloInteger( udg_SL_Random[8], 9) + 1] ) if ( udg_SL_Flip_Index2[a] <= 0 ) then set udg_SL_Flip_Index2[a] = ((udg_SL_Flip_Index2[a] - 1) * -1) endif set a = a + 1 exitwhen b == 10 set b = b + 1 if ( udg_SL_Use_Overload == true ) then call Overload(10) endif endloop set udg_SL_Flip_Sum = a set a = 1 call StartTimerBJ( udg_SL_Cooldown, true, 0.10 ) // Powers set udg_SL_Max = 31 set udg_SL_Powers[1] = 1 set udg_SL_Powers[2] = 2 set udg_SL_Powers[3] = 4 set udg_SL_Powers[4] = 8 set udg_SL_Powers[5] = 16 set udg_SL_Powers[6] = 32 set udg_SL_Powers[7] = 64 set udg_SL_Powers[8] = 128 set udg_SL_Powers[9] = 256 set udg_SL_Powers[10] = 512 set udg_SL_Powers[11] = 1024 set udg_SL_Powers[12] = 2048 set udg_SL_Powers[13] = 4096 set udg_SL_Powers[14] = 8192 set udg_SL_Powers[15] = 16384 set udg_SL_Powers[16] = 32768 set udg_SL_Powers[17] = 65536 set udg_SL_Powers[18] = 131072 set udg_SL_Powers[19] = 262144 set udg_SL_Powers[20] = 524288 set udg_SL_Powers[21] = 1048576 set udg_SL_Powers[22] = 2097152 set udg_SL_Powers[23] = 4194304 set udg_SL_Powers[24] = 8388608 set udg_SL_Powers[25] = 16777216 set udg_SL_Powers[26] = 33554432 set udg_SL_Powers[27] = 67108864 set udg_SL_Powers[28] = 134217728 set udg_SL_Powers[29] = 268435456 set udg_SL_Powers[30] = 536870912 set udg_SL_Powers[31] = 1000000000 // set udg_SL_Powers[31] = 1073741824 // Extras set udg_Save_Name[1] = null set udg_Code_Name[1] = null endfunction //______________// // Core - ConV // //______________// function EnablePimper takes boolean b returns nothing if b == true then set udg_SL_Use_Pimper = true else set udg_SL_Use_Pimper = false endif endfunction function EnableStuffer takes boolean b returns nothing if b == true then set udg_SL_Use_BooStuffer = true else set udg_SL_Use_BooStuffer = false endif endfunction function EnableStats takes boolean b returns nothing if b == true then set udg_SL_Use_Pimper = true else set udg_SL_Use_Pimper = false endif endfunction function ResetStats takes nothing returns nothing set udg_SL_OverHit = 0 endfunction function EnableFlip takes boolean b returns nothing if b == true then set udg_SL_Use_FlipIndex = true else set udg_SL_Use_FlipIndex = false endif endfunction function EnableOverload takes boolean b returns nothing if b == true then set udg_SL_Use_Overload = true else set udg_SL_Use_Overload = false endif endfunction function Switch takes nothing returns nothing if ( udg_SL_Qb == false ) then call DisplayTimedTextToForce( GetPlayersAll(), 50.00, udg_SL_Q ) set udg_SL_Qb = true endif endfunction //______________// // Core - Save // //______________// function SaveCode takes string c returns string local integer xi = 0 local integer xi2 = 0 local integer xi3 = 0 local integer ci = 1 local integer a = 1 local integer a2 = 0 local integer b = 0 local integer b2 = 0 local string result = "" local string xs = "" local string xs2 = "" local integer array Flip_Use1 local integer array Flip_Use2 set c = StringCase( c, false) loop if ( udg_Code_Name[ci] == c ) then exitwhen true else if ( udg_Code_Name[ci] == null ) then // Create Error, Code Doesn't Exist. return "nocode" else set ci = ci + 1 endif endif if ( udg_SL_Use_Overload == true ) then call Overload(1) endif endloop set a2 = udg_Code_Saves[ci] // Did they actually save anything? if ( a2 <= 0 ) then // No values saved for this code. Duh? set result = "nosaves" return result endif loop // Lets make it multi-demensional. set xi3 = ( a + ( udg_SL_MaxSaves * (ci - 1))) set xi = udg_Save_Val[xi3] set xi2 = udg_Save_Max[xi3] set b = udg_Save_Space[xi3] if ( udg_SL_Use_BooStuffer == true ) then // Start BooStuffer if ( xi2 <= ( udg_SL_Powers[b] - xi2 ) ) then if ( xs != "" ) then if ( SubString( xs, 0, 1 ) == "1" ) then set xi = ( xi + xi2 ) endif set xs = SubString( xs, 1, StringLength(xs) ) else // Create opt error. xs = null. endif endif // End BooStuffer endif loop if ( xi >= udg_SL_Powers[b] ) then set xi = ( xi - udg_SL_Powers[b] ) set xs = ( "1" + xs ) else set xs = ( "0" + xs ) endif exitwhen ( b <= 1 ) set b = ( b - 1 ) endloop exitwhen a == a2 set a = ( a + 1 ) if ( udg_SL_Use_Overload == true ) then call Overload(5) endif endloop call Switch() // Flip Index if ( udg_SL_Use_FlipIndex == true ) then set a = 1 set xi = StringLength(xs) loop set Flip_Use1[a] = ( ModuloInteger(udg_SL_Flip_Index1[a], xi) + 1 ) set Flip_Use2[a] = ( ModuloInteger(udg_SL_Flip_Index2[a], xi) + 1 ) exitwhen a == udg_SL_Flip_Sum set a = a + 1 if ( udg_SL_Use_Overload == true ) then call Overload(2) endif endloop set a = 1 loop if ( SubString(xs, Flip_Use1[a]-1, Flip_Use1[a]) != SubString(xs, Flip_Use2[a]-1, Flip_Use2[a]) ) then if ( SubString(xs, Flip_Use1[a]-1, Flip_Use1[a]) == "0" ) then set xs = ( SubString(xs, 0, Flip_Use1[a]-1) + ( "1" + SubString(xs, Flip_Use1[a], xi) )) set xs = ( SubString(xs, 0, Flip_Use2[a]-1) + ( "0" + SubString(xs, Flip_Use2[a], xi) )) else set xs = ( SubString(xs, 0, Flip_Use1[a]-1) + ( "0" + SubString(xs, Flip_Use1[a], xi) )) set xs = ( SubString(xs, 0, Flip_Use2[a]-1) + ( "1" + SubString(xs, Flip_Use2[a], xi) )) endif endif exitwhen a == udg_SL_Flip_Sum set a = a + 1 if ( udg_SL_Use_Overload == true ) then call Overload(4) endif endloop endif // End Flip Index set b = 1 set xi3 = 0 loop if ( StringLength(xs) < 5 ) then set xs2 = xs set xs = "" loop if ( StringLength(xs2) != 5 ) then set xs2 = ( xs2 + "0" ) set xi3 = xi3 + 1 else exitwhen true endif endloop else set xs2 = SubString( xs, 0, 5) set xs = SubString( xs, 5, StringLength(xs) ) endif loop if ( xs2 == SubString( udg_SL_BinSet, b-1, (b+4)) ) then if ( udg_SL_Use_BooStuffer == true ) then // Start BooStuffer // If a value can be above 64, and is above 64, then extra is 1, else 0. Same goes for 32. // Yes it makes sense, stop forgetting that. if (b <= (udg_SL_Chars - udg_SL_Base)) then if ( xs != "" ) then if SubString( xs, 0, 1) == "1" then set b = (b + udg_SL_Base) endif set xs = SubString( xs, 1, StringLength(xs)) if (b <= (udg_SL_Chars - udg_SL_Base2)) then if ( xs != "" ) then if SubString( xs, 0, 1) == "1" then set b = (b + udg_SL_Base2) endif set xs = SubString( xs, 1, StringLength(xs)) else // Create Opt Error. xs was = null. endif endif else // Create Opt Error. xs was = null. endif endif // End BooStuffer endif // Pimp My Code? if ( udg_SL_Use_Pimper == true ) then set result = ( result + ( udg_SL_ColorChar[b] + ( SubString( udg_SL_CharSet, b-1, b ) + "|r" )) ) else set result = ( result + SubString( udg_SL_CharSet, b-1, b ) ) endif exitwhen true endif set b = ( b + 1 ) if ( udg_SL_Use_Overload == true ) then call Overload(5) endif endloop exitwhen ( xs == "" ) set b = 1 set xs2 = "" endloop if ( xi3 > 0 ) then // Create Opt. Error. Extra space went unused. endif return result endfunction //_______________________// // End - Save // //_______________________// //______________// // Core - Load // //______________// function LoadCode takes string c, string result returns nothing local integer xi = 0 local integer xi2 = 0 local integer xi3 = 0 local integer ci = 1 local integer a = 1 local integer a2 = StringLength(result) local integer b = 1 local integer b2 = StringLength(udg_SL_CharSet) local string xs = "" local string xs2 = "" local string extra = "" local integer array Flip_Use1 local integer array Flip_Use2 set c = StringCase( c, false) loop if ( udg_Code_Name[ci] == c ) then exitwhen true else if ( udg_Code_Name[ci] == null ) then // Create Error, Code Doesn't Exist. return else set ci = ci + 1 endif endif if ( udg_SL_Use_Overload == true ) then call Overload(1) endif endloop if ( udg_Code_Saves[ci] <= 0 ) then return endif set b2 = StringLength(udg_SL_CharSet) loop set xs2 = SubString( result, a-1, a) // A little optimization. if ( xs2 == StringCase(xs2, false) ) then set b = 27 endif // Recreate the binary string. loop if ( xs2 == SubString( udg_SL_CharSet, b-1, b) ) then if ( udg_SL_Use_BooStuffer == true ) then // Start BooStuffer if ( udg_SL_Chars > udg_SL_Base2 ) then if ( b > udg_SL_Base2 ) then set extra = extra + "1" set b = ( b - udg_SL_Base2 ) else if ( b <= (udg_SL_Chars - udg_SL_Base2) ) then set extra = extra + "0" endif endif endif if ( udg_SL_Chars > udg_SL_Base ) then if ( b > udg_SL_Base ) then set extra = "1" + extra set b = ( b - udg_SL_Base ) else if ( b <= (udg_SL_Chars - udg_SL_Base) ) then set extra = "0" + extra endif endif endif // End BooStuffer endif set xs = ( xs + SubString( udg_SL_BinSet, b-1, (b+4)) ) if ( extra != "" ) then set xs = xs + extra set extra = "" endif exitwhen true if ( udg_SL_Use_Overload == true ) then call Overload(5) endif endif exitwhen b >= b2 set b = ( b + 1 ) if ( udg_SL_Use_Overload == true ) then call Overload(5) endif endloop exitwhen ( a >= a2 ) set b = 1 set a = a + 1 if ( b > b2 ) then // Create Error. Given Character not in CharSet. exitwhen true endif if ( udg_SL_Use_Overload == true ) then call Overload(5) endif endloop // Flip Index if ( udg_SL_Use_FlipIndex == true ) then set a = 1 loop set xi3 = xi3 + udg_Save_Space[a] exitwhen a == udg_Code_Saves[ci] set a = a + 1 endloop set b = 1 set xi = StringLength(xs) set xi3 = (xi - xi3) set xs2 = SubString(xs, xi - xi3, xi) set xs = SubString(xs, 0, xi - xi3) set xi = xi - xi3 loop set Flip_Use1[b] = ( ModuloInteger(udg_SL_Flip_Index1[b], xi) + 1 ) set Flip_Use2[b] = ( ModuloInteger(udg_SL_Flip_Index2[b], xi) + 1 ) exitwhen b == udg_SL_Flip_Sum set b = b + 1 if ( udg_SL_Use_Overload == true ) then call Overload(2) endif endloop set b = udg_SL_Flip_Sum loop if ( SubString(xs, Flip_Use1[b]-1, Flip_Use1[b]) != SubString(xs, Flip_Use2[b]-1, Flip_Use2[b]) ) then if ( SubString(xs, Flip_Use1[b]-1, Flip_Use1[b]) == "0" ) then set xs = ( SubString(xs, 0, Flip_Use1[b]-1) + ( "1" + SubString(xs, Flip_Use1[b], xi) )) set xs = ( SubString(xs, 0, Flip_Use2[b]-1) + ( "0" + SubString(xs, Flip_Use2[b], xi) )) else set xs = ( SubString(xs, 0, Flip_Use1[b]-1) + ( "0" + SubString(xs, Flip_Use1[b], xi) )) set xs = ( SubString(xs, 0, Flip_Use2[b]-1) + ( "1" + SubString(xs, Flip_Use2[b], xi) )) endif endif exitwhen b == 1 set b = b - 1 if ( udg_SL_Use_Overload == true ) then call Overload(4) endif endloop set xs = xs + xs2 endif // End Flip Index set a = udg_Code_Saves[ci] loop set xi3 = ( a + ( udg_SL_MaxSaves * (ci - 1))) set xs2 = SubString( xs, 0, udg_Save_Space[xi3] ) set xs = SubString( xs, udg_Save_Space[xi3], StringLength(xs) ) set xi2 = udg_Save_Max[xi3] set xi = 0 set b = 1 set b2 = StringLength(xs2) loop if SubString( xs2, b-1, b) == "1" then set xi = xi + udg_SL_Powers[b] endif exitwhen b >= b2 set b = b + 1 endloop if ( udg_SL_Use_BooStuffer == true ) then // Start BooStuffer if ( xi > xi2 ) then set xs = "1" + xs set xi = xi - udg_SL_Powers[b] else if ( xi <= ( udg_SL_Powers[b] - xi2 ) ) then set xs = "0" + xs endif endif // End BooStuffer endif set udg_Load_Val[xi3] = xi - ( 1 - udg_Save_Min[xi3] ) set udg_Load_Max[xi3] = xi2 - ( 1 - udg_Save_Min[xi3] ) exitwhen a <= 1 set a = a - 1 if ( udg_SL_Use_Overload == true ) then call Overload(5) endif endloop // Remaining xs is extra. Use it for security. // Security - Coming Soon endfunction //_______________________// // End - Load // //_______________________// //_______________________// // Sup - Save (Integer) // //_______________________// function SaveInteger takes integer val, string name, integer min, integer max, string c returns nothing local integer a = 0 local integer xi = 1 local integer ci = 1 set c = StringCase( c, false) set name = StringCase( name, false) loop if ( udg_Code_Name[ci] == c ) then exitwhen true else if ( udg_Code_Name[ci] == null ) then set udg_Code_Name[ci] = c exitwhen true else set ci = ci + 1 endif endif if ( udg_SL_Use_Overload == true ) then call Overload(1) endif endloop set a = ( 1 + (udg_SL_MaxSaves * (ci - 1))) if ( name == "" ) then // Create Error. No name was given. return endif loop if udg_Save_Name[a] == name then // Value already exists. Overwrite it. if ( max != udg_Save_Max[a] ) then // Create Error. Cannot save over previous max. endif if ( min != udg_Save_Min[a] ) then // Create Error. Cannot save over previous min. endif exitwhen true else if ( udg_Save_Name[a] == null ) then // Value does not exist. Lets create it. set udg_Save_Name[a] = name set udg_Code_Saves[ci] = ModuloInteger( a, udg_SL_MaxSaves) // We will do the math for the max here since it can't be overwritten. set max = ( max + (1 - min)) if ( max > udg_SL_Powers[udg_SL_Max] ) then set max = udg_SL_Powers[udg_SL_Max] // Create Error. Save was bigger then coded Max. else if ( max < 2 ) then set max = 2 // Create Error. Max is too small. endif endif // Find Space Needed. loop exitwhen max < udg_SL_Powers[xi] set xi = ( xi + 1) if ( xi >= udg_SL_Max ) then exitwhen true endif if ( udg_SL_Use_Overload == true ) then call Overload(1) endif endloop // Save Space and Max. set udg_Save_Space[a] = ( xi - 1 ) set udg_Save_Max[a] = max set udg_Save_Min[a] = min exitwhen true else // Keep looking... set a = a + 1 endif endif if ( udg_SL_Use_Overload == true ) then call Overload(1) endif endloop if ( udg_SL_Type != 0 ) then set udg_Save_Type[a] = udg_SL_Type if ( udg_SL_Type == 2 ) then set udg_Save_Length[a] = udg_SL_Length else if ( udg_SL_Type == 3 ) then set udg_Save_Strength[a] = udg_SL_Strength endif // Sticky: Use else instead. endif set udg_SL_Type = 0 endif // Do the math for the val. set val = ( val + (1 - udg_Save_Min[a])) set max = ( udg_Save_Max[a] + ( 1 - udg_Save_Min[a])) if ( val > max ) then set val = max // Create Error. Value was bigger then saved Max. May be caused by Max too big error. else if ( val < 1 ) then set val = 1 // Create Error. Value was less than saved Min. endif endif if ( udg_SL_Use_Overload == true ) then call Overload(5) endif // Save the value. set udg_Save_Val[a] = val endfunction function LoadInteger takes string name, string c returns integer local integer a = 0 local integer ci = 1 set c = StringCase( c, false) set name = StringCase( name, false) loop if ( udg_Code_Name[ci] == c ) then exitwhen true else if ( udg_Code_Name[ci] == null ) then set udg_Code_Name[ci] = c exitwhen true else set ci = ci + 1 endif endif if ( udg_SL_Use_Overload == true ) then call Overload(1) endif endloop set a = ( 1 + (udg_SL_MaxSaves * (ci - 1))) loop if udg_Save_Name[a] == name then exitwhen true else if ( udg_Save_Name[a] == "" ) then // Create Error. No such value was loaded. return -999 endif endif set a = a + 1 if ( udg_SL_Use_Overload == true ) then call Overload(1) endif endloop if ( udg_Save_Type[a] != 0 ) then if ( udg_Save_Type[a] == 2 ) then set udg_SL_Length = udg_Save_Length[a] else if ( udg_Save_Type[a] == 3 ) then set udg_SL_Strength = udg_Save_Strength[a] endif // Sticky: Use else instead. endif endif if ( udg_SL_Use_Overload == true ) then call Overload(3) endif return udg_Load_Val[a] endfunction //_______________________// // Sup - Save (Boolean) // //_______________________// function SaveBoolean takes boolean val, string name, string c returns nothing local integer x = 0 if ( val == true ) then set x = 1 endif if ( udg_SL_Use_Overload == true ) then call Overload(1) endif call SaveInteger ( x, name, 0, 1, c ) endfunction function LoadBoolean takes string name, string c returns boolean local integer x = 0 set x = LoadInteger(name, c) if ( udg_SL_Use_Overload == true ) then call Overload(1) endif if ( x == 0 ) then return false else return true endif endfunction //_______________________// // Sup - Save (Real) // //_______________________// function SaveReal takes real val, string name, real min, real max, integer length, string c returns nothing local real p = (Pow(10, length)) set udg_SL_Type = 2 if ( length < 1 ) then // Create Error. Length is too short. endif set udg_SL_Length = length if ( udg_SL_Use_Overload == true ) then call Overload(2) endif call SaveInteger( R2I(val * p), name, R2I(min * p), R2I(max * p), c) endfunction function LoadReal takes string name, string c returns real local real r = 0.00 local integer i = 0 set i = LoadInteger(name, c) set r = i / Pow(10, udg_SL_Length) if ( udg_SL_Use_Overload == true ) then call Overload(2) endif return r endfunction //________________________// // Sup - Save (Unit-Type) // //________________________// function SaveType takes string name, string c returns nothing // Requires a array of Unit-Types! Specific for Code? endfunction //_________________________// // Sup - Save (Name-Check) // //________________________// function SaveName takes string p, integer strength, string name, string c returns nothing // Saves a Name Check, not the actual name. local string xs = "" local integer x = 0 local integer a = 1 local integer a2 = StringLength(p) local integer b = 1 local integer b2 = StringLength(udg_SL_CharSet) local integer array xay set udg_SL_Type = 3 set strength = strength + 1 if (strength < 2) then set strength = 2 // Create Error, strength was too small. else if (strength > 20) then // Create Error, strength was too big. set strength = 21 endif endif if ( udg_SL_Use_Overload == true ) then call Overload(10) endif loop set xs = SubString( p, a-1, a) // A little optimization. if ( xs == StringCase(xs, false) ) then set b = 27 endif loop if ( xs == SubString( udg_SL_CharSet, b-1, b) ) then set x = x + b set xay[a] = b exitwhen true endif if (b >= b2) then set x = x + (b2+1) set xay[a] = (b2+1) exitwhen true endif set b = b + 1 if ( udg_SL_Use_Overload == true ) then call Overload(2) endif endloop exitwhen a >= a2 set b = 1 set a = a + 1 endloop set a2 = 1 set udg_SL_Strength = strength if ( strength > 10 ) then set x = ModuloInteger(x, udg_SL_Powers[10] - 1) call DisplayTextToForce( GetPlayersAll(), "x " + I2S(x) ) call SaveInteger( x, name + I2S(a2), 1, udg_SL_Powers[10] - 1, c) set strength = strength - 10 else set x = ModuloInteger(x, udg_SL_Powers[strength] - 1) call SaveInteger( x, name + I2S(a2), 1, udg_SL_Powers[strength] - 1, c) return endif set a = 1 set b2 = b2/2 if ( udg_SL_Use_Overload == true ) then call Overload(5) endif loop set a2 = a2 + 1 if ( xay[a] <= b2 ) then call SaveBoolean( false, name + I2S(a2), c) else call SaveBoolean( true, name + I2S(a2), c) endif exitwhen ( a >= strength or a >= 10 ) set a = a + 1 if ( udg_SL_Use_Overload == true ) then call Overload(4) endif endloop endfunction function SaveNameOfPlayer takes player play, integer strength, string name, string c returns nothing // Same thing as Save Name except it takes a player and gets the name. call SaveName(GetPlayerName(play), strength, name, c) if ( udg_SL_Use_Overload == true ) then call Overload(6) endif endfunction function CheckName takes string p, string name, string c returns boolean // Do the same thing we did for NameCheck, only a little different. local string xs = "" local boolean xb = false local integer x = 0 local integer x2 local integer a = 1 local integer a2 = StringLength(p) local integer b = 1 local integer b2 = StringLength(udg_SL_CharSet) local integer array xay set udg_SL_Type = 3 if ( udg_SL_Use_Overload == true ) then call Overload(15) endif loop set xs = SubString( p, a-1, a) // A little optimization. if ( xs == StringCase(xs, false) ) then set b = 27 endif loop if ( xs == SubString( udg_SL_CharSet, b-1, b) ) then set x = x + b set xay[a] = b exitwhen true endif if (b >= b2) then set x = x + (b2+1) set xay[a] = (b2+1) exitwhen true endif set b = b + 1 if ( udg_SL_Use_Overload == true ) then call Overload(2) endif endloop exitwhen a >= a2 set b = 1 set a = a + 1 endloop set a2 = 1 set x2 = LoadInteger(name + I2S(a2), c) if ( udg_SL_Strength > 10 ) then set x = ModuloInteger(x, udg_SL_Powers[10] - 1) if ( x != x2 ) then return false endif set udg_SL_Strength = udg_SL_Strength - 10 else set x = ModuloInteger(x, udg_SL_Powers[udg_SL_Strength] - 1) if ( x != x2 ) then return false endif return true endif set a = 1 set b2 = b2/2 if ( udg_SL_Use_Overload == true ) then call Overload(5) endif loop set a2 = a2 + 1 if ( xay[a] <= b2 ) then set xb = LoadBoolean( name + I2S(a2), c) if ( xb != false ) then return false endif else set xb = LoadBoolean( name + I2S(a2), c) if ( xb != true ) then return false endif endif exitwhen ( a >= udg_SL_Strength or a >= 10 ) set a = a + 1 if ( udg_SL_Use_Overload == true ) then call Overload(4) endif endloop return true endfunction function CheckNameForPlayer takes player play, string name, string c returns boolean local boolean b = false set b = CheckName(GetPlayerName(play), name, c) if ( udg_SL_Use_Overload == true ) then call Overload(6) endif return b endfunction //_______________________// // //Apple's Save Load END// //Version: B1 //Release Date: 8/31/07 //Created by MrApples (PoLlama@gmail.com) //Official Website and Support - Http://www.pollama.com //By using this code you agree that all credits to the creator and the website will be left intact. // END END END END END END //______________________// //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!// //____________________________________________________________________________________________________________//