• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

[Trigger] Codeless Save/Load issue [SOLVED]

Level 11
Joined
Aug 11, 2009
Messages
594
Working on an RPG map and there is one issue I have with the Codeless Save/Load system. If I load a Hero in a new game, it does not allow me to save it in that same game, only showing message "[1] Default string ()".

If I start a new Hero I can save it multiple times in the same game, everything also loads as it should (though you have to start a new game to load a hero you saved in current game, but that is how the system works I believe). It is only trying to save a loaded hero that is causing issues.

EDIT: Found a second issue aswell, if I start a new Hero and save it, I can pick one of 5 slots to save it. However, if I start a new Hero again in the same game and try to save it, it will automatically pick slot 1, even if I have another Hero saved there. Anyone knows a solution to this aswell?

  • Save Init
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Set VariableSet SaveLoadMaxLength = 64
      • Set VariableSet SaveUseGUI = True
      • -------- ------------------- --------
      • -------- This willl be the directory the save codes will be saved to. --------
      • -------- ------------------- --------
      • Set VariableSet MapName = ChampionRPG
      • -------- ------------------- --------
      • -------- Show the save code --------
      • -------- ------------------- --------
      • Set VariableSet SaveShowCode = True
      • -------- ------------------- --------
      • -------- Save hero name (only works with the save slots, not raw save codes) --------
      • -------- Also make sure to set the object editor field "Text - Proper Names Used" to 999 for all of your heroes. --------
      • -------- ------------------- --------
      • Set VariableSet SaveHeroName = False
      • Set VariableSet SaveNameMax = 999
      • -------- ------------------- --------
      • -------- Set these to the values they are in the Advanced -> Gameplay constants --------
      • -------- Allows us to calculate how much XP a hero has --------
      • -------- Note: You can also save EXP the easy way but it will generate a longer code. --------
      • -------- ------------------- --------
      • Set VariableSet HeroXPConstant = 0
      • Set VariableSet HeroXPLevelFactor = 100
      • Set VariableSet HeroXPPrevLevelFactor = 1
      • Set VariableSet HeroXPRequired = 200
      • -------- ------------------- --------
      • -------- Max STR/AGI/INT --------
      • -------- ------------------- --------
      • Set VariableSet SaveUnitMaxStat = 1000000000
      • -------- Note: Changing max values can cause a code wipe --------
      • -------- ------------------- --------
      • -------- Store unit types that can be saved here --------
      • -------- ------------------- --------
      • Set VariableSet SaveUnitType[0] = No unit-type
      • Set VariableSet SaveUnitType[1] = Aspirant (Tsunade)
      • Set VariableSet SaveUnitType[2] = Aspirant (Whitebeard)
      • Set VariableSet SaveUnitType[3] = Aspirant (Goku)
      • Set VariableSet SaveUnitType[4] = Aspirant (Kenpachi)
      • Set VariableSet SaveUnitType[5] = Aspirant (Zoro)
      • Set VariableSet SaveUnitType[6] = Contender (Tsunade)
      • Set VariableSet SaveUnitType[7] = Contender (Whitebeard)
      • Set VariableSet SaveUnitType[8] = Contender (Goku)
      • Set VariableSet SaveUnitType[9] = Contender (Kenpachi)
      • Set VariableSet SaveUnitType[10] = Contender (Zoro)
      • Set VariableSet SaveUnitType[11] = Challenger (Tsunade)
      • Set VariableSet SaveUnitType[12] = Challenger (Whitebeard)
      • Set VariableSet SaveUnitType[13] = Challenger (Goku)
      • Set VariableSet SaveUnitType[14] = Challenger (Kenpachi)
      • Set VariableSet SaveUnitType[15] = Challenger (Zoro)
      • Set VariableSet SaveUnitType[16] = |cffff8000Legend|r (Imperius)
      • Set VariableSet SaveUnitType[17] = Champion (Nelliel)
      • Set VariableSet SaveUnitType[18] = Champion (Tsunade)
      • Set VariableSet SaveUnitType[19] = |cffff8000Legend|r (Madara)
      • Set VariableSet SaveUnitType[20] = Champion (Zero)
      • Set VariableSet SaveUnitType[21] = Champion (Whitebeard)
      • Set VariableSet SaveUnitType[22] = Champion (Goku)
      • Set VariableSet SaveUnitType[23] = Champion (Kenpachi)
      • Set VariableSet SaveUnitType[24] = Champion (Zoro)
      • Set VariableSet SaveUnitType[25] = Champion (Zangetsu)
      • Set VariableSet SaveUnitType[26] = |cffff8000Legend|r (Malthael)
      • Set VariableSet SaveUnitTypeMax = 26
      • -------- Note: Changing max values can cause a code wipe --------
      • -------- ------------------- --------
      • -------- Store item types that can be saved here --------
      • -------- ------------------- --------
      • Set VariableSet SaveItemType[0] = (Item-type of No item)
      • Set VariableSet SaveItemType[61] = Aspirants Dagger
      • Set VariableSet SaveItemType[62] = Aspirants Hammer
      • Set VariableSet SaveItemType[63] = Aspirants Shield
      • Set VariableSet SaveItemType[64] = Aspirants Sword
      • Set VariableSet SaveItemType[72] = Aspirants Cape
      • Set VariableSet SaveItemType[88] = Aspirants Cloak
      • Set VariableSet SaveItemType[104] = Aspirants Mantle
      • Set VariableSet SaveItemType[120] = Aspirants Essence
      • Set VariableSet SaveItemType[136] = Aspirants Mind
      • Set VariableSet SaveItemType[145] = Aspirants Pendant
      • Set VariableSet SaveItemType[146] = Aspirants Axe
      • Set VariableSet SaveItemType[147] = Aspirants Vest
      • Set VariableSet SaveItemType[148] = Aspirants Hood
      • Set VariableSet SaveItemType[149] = Aspirants Helmet
      • Set VariableSet SaveItemType[150] = Aspirants Cuirass
      • Set VariableSet SaveItemType[1] = |cff00ff00Contenders Axe|r
      • Set VariableSet SaveItemType[2] = |cff00ff00Contenders Dagger|r
      • Set VariableSet SaveItemType[3] = |cff00ff00Contenders Hammer|r
      • Set VariableSet SaveItemType[4] = |cff00ff00Contenders Shield|r
      • Set VariableSet SaveItemType[5] = |cff00ff00Contenders Sword|r
      • Set VariableSet SaveItemType[6] = |cff00ff00Contenders Cuirass|r
      • Set VariableSet SaveItemType[7] = |cff00ff00Contenders Helmet|r
      • Set VariableSet SaveItemType[8] = |cff00ff00Contenders Hood|r
      • Set VariableSet SaveItemType[9] = |cff00ff00Contenders Vest|r
      • Set VariableSet SaveItemType[10] = |cff00ff00Contenders Cape|r
      • Set VariableSet SaveItemType[11] = |cff00ff00Contenders Mind|r
      • Set VariableSet SaveItemType[12] = |cff00ff00Contenders Cloak|r
      • Set VariableSet SaveItemType[13] = |cff00ff00Contenders Mantle|r
      • Set VariableSet SaveItemType[14] = |cff00ff00Contenders Essence|r
      • Set VariableSet SaveItemType[15] = |cff00ff00Contenders Pendant|r
      • Set VariableSet SaveItemType[16] = |cff00ff00Earthbound Pendant|r
      • Set VariableSet SaveItemType[17] = |cff00ff00Earthbound Axe|r
      • Set VariableSet SaveItemType[18] = |cff00ff00Earthbound Dagger|r
      • Set VariableSet SaveItemType[19] = |cff00ff00Earthbound Hammer|r
      • Set VariableSet SaveItemType[20] = |cff00ff00Earthbound Shield|r
      • Set VariableSet SaveItemType[21] = |cff00ff00Earthbound Sword|r
      • Set VariableSet SaveItemType[22] = |cff00ff00Earthbound Cuirass|r
      • Set VariableSet SaveItemType[23] = |cff00ff00Earthbound Helmet|r
      • Set VariableSet SaveItemType[24] = |cff00ff00Earthbound Hood|r
      • Set VariableSet SaveItemType[25] = |cff00ff00Earthbound Vest|r
      • Set VariableSet SaveItemType[26] = |cff00ff00Earthbound Cape|r
      • Set VariableSet SaveItemType[27] = |cff00ff00Earthbound Cloak|r
      • Set VariableSet SaveItemType[28] = |cff00ff00Earthbound Mantle|r
      • Set VariableSet SaveItemType[29] = |cff00ff00Earthbound Essence|r
      • Set VariableSet SaveItemType[30] = |cff00ff00Earthbound Mind|r
      • Set VariableSet SaveItemType[31] = |cff00ff00Wyrm Mind|r
      • Set VariableSet SaveItemType[32] = |cff00ff00Wyrm Pendant|r
      • Set VariableSet SaveItemType[33] = |cff00ff00Wyrm Axe|r
      • Set VariableSet SaveItemType[34] = |cff00ff00Wyrm Dagger|r
      • Set VariableSet SaveItemType[35] = |cff00ff00Wyrm Hammer|r
      • Set VariableSet SaveItemType[36] = |cff00ff00Wyrm Shield|r
      • Set VariableSet SaveItemType[37] = |cff00ff00Wyrm Sword|r
      • Set VariableSet SaveItemType[38] = |cff00ff00Wyrm Cuirass|r
      • Set VariableSet SaveItemType[39] = |cff00ff00Wyrm Helmet|r
      • Set VariableSet SaveItemType[40] = |cff00ff00Wyrm Cape|r
      • Set VariableSet SaveItemType[41] = |cff00ff00Wyrm Vest|r
      • Set VariableSet SaveItemType[42] = |cff00ff00Wyrm Cloak|r
      • Set VariableSet SaveItemType[43] = |cff00ff00Wyrm Mantle|r
      • Set VariableSet SaveItemType[44] = |cff00ff00Wyrm Essence|r
      • Set VariableSet SaveItemType[45] = |cff00ff00Wyrm Hood|r
      • Set VariableSet SaveItemType[151] = |cff00ff00Icebound Cuirass|r
      • Set VariableSet SaveItemType[152] = |cff00ff00Icebound Helmet|r
      • Set VariableSet SaveItemType[153] = |cff00ff00Icebound Hood|r
      • Set VariableSet SaveItemType[154] = |cff00ff00Icebound Vest|r
      • Set VariableSet SaveItemType[155] = |cff00ff00Icebound Axe|r
      • Set VariableSet SaveItemType[156] = |cff00ff00Icebound Dagger|r
      • Set VariableSet SaveItemType[157] = |cff00ff00Icebound Hammer|r
      • Set VariableSet SaveItemType[158] = |cff00ff00Icebound Shield|r
      • Set VariableSet SaveItemType[159] = |cff00ff00Icebound Sword|r
      • Set VariableSet SaveItemType[160] = |cff00ff00Icebound Cape|r
      • Set VariableSet SaveItemType[161] = |cff00ff00Icebound Cloak|r
      • Set VariableSet SaveItemType[162] = |cff00ff00Icebound Mantle|r
      • Set VariableSet SaveItemType[163] = |cff00ff00Icebound Essence|r
      • Set VariableSet SaveItemType[164] = |cff00ff00Icebound Mind|r
      • Set VariableSet SaveItemType[165] = |cff00ff00Icebound Pendant|r
      • Set VariableSet SaveItemType[166] = |cff0070ddChallengers Cuirass|r
      • Set VariableSet SaveItemType[167] = |cff0070ddChallengers Helmet|r
      • Set VariableSet SaveItemType[168] = |cff0070ddChallengers Hood|r
      • Set VariableSet SaveItemType[169] = |cff0070ddChallengers Vest|r
      • Set VariableSet SaveItemType[170] = |cff0070ddChallengers Axe|r
      • Set VariableSet SaveItemType[171] = |cff0070ddChallengers Dagger|r
      • Set VariableSet SaveItemType[172] = |cff0070ddChallengers Hammer|r
      • Set VariableSet SaveItemType[173] = |cff0070ddChallengers Shield|r
      • Set VariableSet SaveItemType[174] = |cff0070ddChallengers Sword|r
      • Set VariableSet SaveItemType[175] = |cff0070ddChallengers Cape|r
      • Set VariableSet SaveItemType[176] = |cff0070ddChallengers Cloak|r
      • Set VariableSet SaveItemType[177] = |cff0070ddChallengers Mantle|r
      • Set VariableSet SaveItemType[178] = |cff0070ddChallengers Essence|r
      • Set VariableSet SaveItemType[179] = |cff0070ddChallengers Mind|r
      • Set VariableSet SaveItemType[180] = |cff0070ddChallengers Pendant|r
      • Set VariableSet SaveItemType[181] = |cff0070ddFlamebound Cuirass|r
      • Set VariableSet SaveItemType[182] = |cff0070ddFlamebound Helmet
      • Set VariableSet SaveItemType[183] = |cff0070ddFlamebound Hood|r
      • Set VariableSet SaveItemType[184] = |cff0070ddFlamebound Vest|r
      • Set VariableSet SaveItemType[185] = |cff0070ddFlamebound Axe|r
      • Set VariableSet SaveItemType[186] = |cff0070ddFlamebound Dagger|r
      • Set VariableSet SaveItemType[187] = |cff0070ddFlamebound Hammer|r
      • Set VariableSet SaveItemType[188] = |cff0070ddFlamebound Shield|r
      • Set VariableSet SaveItemType[189] = |cff0070ddFlamebound Sword|r
      • Set VariableSet SaveItemType[190] = |cff0070ddFlamebound Cape|r
      • Set VariableSet SaveItemType[191] = |cff0070ddFlamebound Cloak|r
      • Set VariableSet SaveItemType[192] = |cff0070ddFlamebound Mantle|r
      • Set VariableSet SaveItemType[193] = |cff0070ddFlamebound Essence|r
      • Set VariableSet SaveItemType[194] = |cff0070ddFlamebound Mind|r
      • Set VariableSet SaveItemType[195] = |cff0070ddFlamebound Pendant|r
      • Set VariableSet SaveItemType[196] = |cff0070ddHell Cuirass|r
      • Set VariableSet SaveItemType[197] = |cff0070ddHell Helmet
      • Set VariableSet SaveItemType[198] = |cff0070ddHell Hood|r
      • Set VariableSet SaveItemType[199] = |cff0070ddHell Vest|r
      • Set VariableSet SaveItemType[200] = |cff0070ddHell Axe|r
      • Set VariableSet SaveItemType[201] = |cff0070ddHell Dagger|r
      • Set VariableSet SaveItemType[202] = |cff0070ddHell Hammer|r
      • Set VariableSet SaveItemType[203] = |cff0070ddHell Shield|r
      • Set VariableSet SaveItemType[204] = |cff0070ddHell Sword|r
      • Set VariableSet SaveItemType[205] = |cff0070ddHell Cape|r
      • Set VariableSet SaveItemType[206] = |cff0070ddHell Cloak|r
      • Set VariableSet SaveItemType[207] = |cff0070ddHell Mantle|r
      • Set VariableSet SaveItemType[208] = |cff0070ddHell Essence|r
      • Set VariableSet SaveItemType[209] = |cff0070ddHell Mind|r
      • Set VariableSet SaveItemType[210] = |cff0070ddHell Pendant|r
      • Set VariableSet SaveItemType[46] = |cff0070ddSoulbound Essence|r
      • Set VariableSet SaveItemType[47] = |cff0070ddSoulbound Mind|r
      • Set VariableSet SaveItemType[48] = |cff0070ddSoulbound Pendant|r
      • Set VariableSet SaveItemType[49] = |cff0070ddSoulbound Axe|r
      • Set VariableSet SaveItemType[50] = |cff0070ddSoulbound Dagger|r
      • Set VariableSet SaveItemType[51] = |cff0070ddSoulbound Hammer|r
      • Set VariableSet SaveItemType[52] = |cff0070ddSoulbound Shield|r
      • Set VariableSet SaveItemType[53] = |cff0070ddSoulbound Sword|r
      • Set VariableSet SaveItemType[54] = |cff0070ddSoulbound Cuirass|r
      • Set VariableSet SaveItemType[55] = |cff0070ddSoulbound Helmet
      • Set VariableSet SaveItemType[56] = |cff0070ddSoulbound Vest|r
      • Set VariableSet SaveItemType[57] = |cff0070ddSoulbound Cape|r
      • Set VariableSet SaveItemType[58] = |cff0070ddSoulbound Cloak|r
      • Set VariableSet SaveItemType[59] = |cff0070ddSoulbound Mantle|r
      • Set VariableSet SaveItemType[60] = |cff0070ddSoulbound Hood|r
      • Set VariableSet SaveItemType[65] = |cff0070ddReapers Axe|r
      • Set VariableSet SaveItemType[66] = |cff0070ddReapers Dagger|r
      • Set VariableSet SaveItemType[67] = |cff0070ddReapers Hammer|r
      • Set VariableSet SaveItemType[68] = |cff0070ddReapers Shield|r
      • Set VariableSet SaveItemType[69] = |cff0070ddReapers Sword|r
      • Set VariableSet SaveItemType[70] = |cff0070ddReapers Cuirass|r
      • Set VariableSet SaveItemType[71] = |cff0070ddReapers Helmet|r
      • Set VariableSet SaveItemType[73] = |cff0070ddReapers Vest|r
      • Set VariableSet SaveItemType[74] = |cff0070ddReapers Cape|r
      • Set VariableSet SaveItemType[75] = |cff0070ddReapers Cloak|r
      • Set VariableSet SaveItemType[76] = |cff0070ddReapers Mantle|r
      • Set VariableSet SaveItemType[77] = |cff0070ddReapers Hood|r
      • Set VariableSet SaveItemType[78] = |cff0070ddReapers Essence|r
      • Set VariableSet SaveItemType[79] = |cff0070ddReapers Mind|r
      • Set VariableSet SaveItemType[80] = |cff0070ddReapers Pendant|r
      • Set VariableSet SaveItemType[81] = |cffa335eeChampions Axe|r
      • Set VariableSet SaveItemType[82] = |cffa335eeChampions Dagger|r
      • Set VariableSet SaveItemType[83] = |cffa335eeChampions Hammer|r
      • Set VariableSet SaveItemType[84] = |cffa335eeChampions Shield|r
      • Set VariableSet SaveItemType[85] = |cffa335eeChampions Sword|r
      • Set VariableSet SaveItemType[86] = |cffa335eeChampions Cuirass|r
      • Set VariableSet SaveItemType[87] = |cffa335eeChampions Helmet|r
      • Set VariableSet SaveItemType[89] = |cffa335eeChampions Vest|r
      • Set VariableSet SaveItemType[90] = |cffa335eeChampions Cape|r
      • Set VariableSet SaveItemType[91] = |cffa335eeChampions Cloak|r
      • Set VariableSet SaveItemType[92] = |cffa335eeChampions Mantle|r
      • Set VariableSet SaveItemType[93] = |cffa335eeChampions Hood|r
      • Set VariableSet SaveItemType[94] = |cffa335eeChampions Essence|r
      • Set VariableSet SaveItemType[95] = |cffa335eeChampions Mind|r
      • Set VariableSet SaveItemType[96] = |cffa335eeChampions Pendant|r
      • Set VariableSet SaveItemType[97] = |cffa335eeVile Axe|r
      • Set VariableSet SaveItemType[98] = |cffa335eeVile Dagger|r
      • Set VariableSet SaveItemType[99] = |cffa335eeVile Hammer|r
      • Set VariableSet SaveItemType[100] = |cffa335eeVile Shield|r
      • Set VariableSet SaveItemType[101] = |cffa335eeVile Sword|r
      • Set VariableSet SaveItemType[102] = |cffa335eeVile Cuirass|r
      • Set VariableSet SaveItemType[103] = |cffa335eeVile Helmet|r
      • Set VariableSet SaveItemType[105] = |cffa335eeVile Vest|r
      • Set VariableSet SaveItemType[106] = |cffa335eeVile Cape|r
      • Set VariableSet SaveItemType[107] = |cffa335eeVile Cloak|r
      • Set VariableSet SaveItemType[108] = |cffa335eeVile Mantle|r
      • Set VariableSet SaveItemType[109] = |cffa335eeVile Hood|r
      • Set VariableSet SaveItemType[110] = |cffa335eeVile Essence|r
      • Set VariableSet SaveItemType[111] = |cffa335eeVile Mind|r
      • Set VariableSet SaveItemType[112] = |cffa335eeVile Pendant|r
      • Set VariableSet SaveItemType[113] = |cffa335eeZero Axe|r
      • Set VariableSet SaveItemType[114] = |cffa335eeZero Dagger|r
      • Set VariableSet SaveItemType[115] = |cffa335eeZero Hammer|r
      • Set VariableSet SaveItemType[116] = |cffa335eeZero Shield|r
      • Set VariableSet SaveItemType[117] = |cffa335eeZero Sword|r
      • Set VariableSet SaveItemType[118] = |cffa335eeZero Cuirass|r
      • Set VariableSet SaveItemType[119] = |cffa335eeZero Helmet|r
      • Set VariableSet SaveItemType[121] = |cffa335eeZero Vest|r
      • Set VariableSet SaveItemType[122] = |cffa335eeZero Cape|r
      • Set VariableSet SaveItemType[123] = |cffa335eeZero Cloak|r
      • Set VariableSet SaveItemType[124] = |cffa335eeZero Mantle|r
      • Set VariableSet SaveItemType[125] = |cffa335eeZero Hood|r
      • Set VariableSet SaveItemType[126] = |cffa335eeZero Essence|r
      • Set VariableSet SaveItemType[127] = |cffa335eeZero Mind|r
      • Set VariableSet SaveItemType[128] = |cffa335eeZero Pendant|r
      • Set VariableSet SaveItemType[129] = |cffa335eeX Axe|r
      • Set VariableSet SaveItemType[130] = |cffa335eeX Dagger|r
      • Set VariableSet SaveItemType[131] = |cffa335eeX Hammer|r
      • Set VariableSet SaveItemType[132] = |cffa335eeX Shield|r
      • Set VariableSet SaveItemType[133] = |cffa335eeX Sword|r
      • Set VariableSet SaveItemType[134] = |cffa335eeX Cuirass|r
      • Set VariableSet SaveItemType[135] = |cffa335eeX Helmet|r
      • Set VariableSet SaveItemType[137] = |cffa335eeX Vest|r
      • Set VariableSet SaveItemType[138] = |cffa335eeX Cape|r
      • Set VariableSet SaveItemType[139] = |cffa335eeX Cloak|r
      • Set VariableSet SaveItemType[140] = |cffa335eeX Mantle|r
      • Set VariableSet SaveItemType[141] = |cffa335eeX Hood|r
      • Set VariableSet SaveItemType[142] = |cffa335eeX Essence|r
      • Set VariableSet SaveItemType[143] = |cffa335eeX Mind|r
      • Set VariableSet SaveItemType[144] = |cffa335eeX Pendant|r
      • Set VariableSet SaveItemType[211] = |cff808000Champions Guile|r (|cffffcc000|r/5)
      • Set VariableSet SaveItemType[212] = |cff808000Champions Guile|r (|cffffcc001|r/5)
      • Set VariableSet SaveItemType[213] = |cff808000Champions Guile|r (|cffffcc002|r/5)
      • Set VariableSet SaveItemType[214] = |cff808000Champions Guile|r (|cffffcc003|r/5)
      • Set VariableSet SaveItemType[215] = |cff808000Champions Guile|r (|cffffcc004|r/5)
      • Set VariableSet SaveItemType[216] = |cff808000Champions Guile|r (|cffffcc005/5|r)
      • Set VariableSet SaveItemTypeMax = 216
      • -------- Note: Changing max values can cause a code wipe --------
      • -------- ------------------- --------
      • -------- Store ability types that can be saved here --------
      • -------- ------------------- --------
      • Set VariableSet SaveAbilityType[1] = Aspirant Rank (W -> G)
      • Set VariableSet SaveAbilityType[2] = |cff00ff00Contender Rank|r (G -> B)
      • Set VariableSet SaveAbilityType[3] = |cff0070ddChallenger Rank|r (B -> V)
      • Set VariableSet SaveAbilityType[4] = |cffa335eeChampion Rank|r (V -> O)
      • Set VariableSet SaveAbilityType[5] = |cffff8000Legend Rank|r
      • Set VariableSet SaveAbilityType[8] = Strength of a Hundred Seal (Tsunade)
      • Set VariableSet SaveAbilityType[9] = |cff00ff00Ground Rupture|r (Tsunade)
      • Set VariableSet SaveAbilityType[10] = |cff0070ddFlying Kick|r (Tsunade)
      • Set VariableSet SaveAbilityType[11] = |cffa335eeMedical Ninjutsu|r (Tsunade)
      • Set VariableSet SaveAbilityType[12] = King of Hell (Zoro)
      • Set VariableSet SaveAbilityType[13] = |cff00ff00Three Sword Style|r (Zoro)
      • Set VariableSet SaveAbilityType[14] = |cff0070ddFoxfire Style; Flame Rend|r (Zoro)
      • Set VariableSet SaveAbilityType[15] = |cffa335eeImmense Power|r (Zoro)
      • Set VariableSet SaveAbilityType[16] = Tremor-Tremor Fruit (Whitebeard)
      • Set VariableSet SaveAbilityType[17] = |cff00ff00Quake Palm|r (Whitebeard)
      • Set VariableSet SaveAbilityType[18] = |cff0070ddCrushing Blow|r (Whitebeard)
      • Set VariableSet SaveAbilityType[19] = |cffa335eeOne Piece Is Real!|r (Whitebeard)
      • Set VariableSet SaveAbilityType[20] = Drink Nozarashi (Kenpachi) (W)
      • Set VariableSet SaveAbilityType[21] = Drink Nozarashi (Kenpachi) (G)
      • Set VariableSet SaveAbilityType[22] = Drink Nozarashi (Kenpachi) (B)
      • Set VariableSet SaveAbilityType[23] = Drink Nozarashi (Kenpachi) (V)
      • Set VariableSet SaveAbilityType[24] = |cff00ff00Energy Wave|r (Kenpachi)
      • Set VariableSet SaveAbilityType[25] = |cff0070ddTwo-Hand Strike|r (Kenpachi)
      • Set VariableSet SaveAbilityType[26] = |cffa335eeUnseal Reiatsu|r (Kenpachi)
      • Set VariableSet SaveAbilityType[27] = Kamehameha (Goku)
      • Set VariableSet SaveAbilityType[28] = |cff00ff00Saiyan Strike|r (Goku)
      • Set VariableSet SaveAbilityType[29] = |cff0070ddSpirit Bomb|r (Goku)
      • Set VariableSet SaveAbilityType[30] = |cffa335eeUltra Instinct|r (Goku)
      • Set VariableSet SaveAbilityType[31] = Getsuga Tenshou (Zangetsu)
      • Set VariableSet SaveAbilityType[32] = |cff00ff00Spirit Slash|r (Zangetsu)
      • Set VariableSet SaveAbilityType[33] = |cff0070ddHirenkyaku|r (Zangetsu)
      • Set VariableSet SaveAbilityType[34] = |cffa335eeBlut Vene|r (Zangetsu)
      • Set VariableSet SaveAbilityType[35] = |cffff8000Heavens Fury|r (Imperius)
      • Set VariableSet SaveAbilityType[36] = |cff00ff00Divine Strike|r (Imperius)
      • Set VariableSet SaveAbilityType[37] = |cff0070ddFiery Wave|r (Imperius)
      • Set VariableSet SaveAbilityType[38] = |cffa335eeMolten Armor|r (Imperius)
      • Set VariableSet SaveAbilityType[39] = Reiatsu Storm (Nelliel)
      • Set VariableSet SaveAbilityType[40] = |cff00ff00Earthshatter Stomp|r (Nelliel)
      • Set VariableSet SaveAbilityType[41] = |cff0070ddSkyfall Cero|r (Nelliel)
      • Set VariableSet SaveAbilityType[42] = |cffa335eeEnergy Boost|r (Nelliel)
      • Set VariableSet SaveAbilityType[43] = Z-Buster (Zero)
      • Set VariableSet SaveAbilityType[44] = |cff00ff00Ice Fury Slash|r (Zero)
      • Set VariableSet SaveAbilityType[45] = |cff0070ddDragon Flame Blade|r (Zero)
      • Set VariableSet SaveAbilityType[46] = |cffa335eeRending Light Rule|r (Zero)
      • Set VariableSet SaveAbilityType[47] = |cffff8000Susanoo|r (Madara)
      • Set VariableSet SaveAbilityType[48] = |cff00ff00Majestic Destroyer Flame|r (Madara)
      • Set VariableSet SaveAbilityType[49] = |cff0070ddMangekyou Sharingan|r (Madara)
      • Set VariableSet SaveAbilityType[50] = |cffa335eeTengai Shinsei|r (Madara)
      • Set VariableSet SaveAbilityType[51] = |cff0070ddCrushing Blow|r [D] (Whitebeard)
      • Set VariableSet SaveAbilityType[52] = |cff0070ddFlying Kick|r [D] (Tsunade)
      • Set VariableSet SaveAbilityType[53] = |cff0070ddFoxfire Style; Flame Rend|r [D] (Zoro)
      • Set VariableSet SaveAbilityType[54] = |cff0070ddSpirit Bomb|r [D] (Goku)
      • Set VariableSet SaveAbilityType[55] = |cff0070ddTwo-Hand Strike|r [D] (Kenpachi)
      • Set VariableSet SaveAbilityType[56] = |cff00ff00Energy Wave|r [D] (Kenpachi)
      • Set VariableSet SaveAbilityType[57] = |cff00ff00Quake Palm|r [D] (Whitebeard)
      • Set VariableSet SaveAbilityType[58] = |cff00ff00Ground Rupture|r [D] (Tsunade)
      • Set VariableSet SaveAbilityType[59] = |cff00ff00Saiyan Strike|r [D] (Goku)
      • Set VariableSet SaveAbilityType[60] = |cff00ff00Three Sword Style|r [D] (Zoro)
      • Set VariableSet SaveAbilityType[61] = |cffa335eeMedical Ninjutsu|r [D] (Tsunade)
      • Set VariableSet SaveAbilityType[62] = |cffa335eeImmense Power|r [D] (Zoro)
      • Set VariableSet SaveAbilityType[63] = |cffa335eeOne Piece Is Real!|r [D] (Whitebeard)
      • Set VariableSet SaveAbilityType[64] = |cffa335eeUltra Instinct|r [D] (Goku)
      • Set VariableSet SaveAbilityType[65] = |cffa335eeUnseal Reiatsu|r [D] (Kenpachi)
      • Set VariableSet SaveAbilityType[66] = |cffff8000Death Shroud|r (Malthael)
      • Set VariableSet SaveAbilityType[6] = |cff00ff00Wraith Strike|r (Malthael)
      • Set VariableSet SaveAbilityType[7] = |cffa335eeTormented Souls|r (Malthael)
      • Set VariableSet SaveAbilityType[67] = |cff0070ddSoul Rip|r (Malthael)
      • Set VariableSet SaveAbilityTypeMax = 67
      • -------- Note: Changing max values can cause a code wipe --------
      • -------- ------------------- --------
      • -------- Automatically copy variables --------
      • -------- ------------------- --------
      • Set VariableSet SavePlayerLoading[0] = False
      • Set VariableSet SaveLoadEvent = -1.00
      • Set VariableSet SaveCount = 0
      • Set VariableSet SaveValue[0] = 0
      • Set VariableSet SaveMaxValue[0] = 0
      • Set VariableSet SaveTempInt = 0
      • Set VariableSet SavePlayerHero[0] = No unit
      • Set VariableSet SaveCurrentSlot[0] = 0
      • Set VariableSet SaveLoadEvent_Code = <Empty String>
      • Set VariableSet SaveLoadEvent_Player = Player 1 (Red)
      • Set VariableSet SaveNameList[0] = <Empty String>
      • Set VariableSet SaveCodeColored = <Empty String>
      • Trigger - Run HeroNames <gen> (ignoring conditions)
      • Custom script: call SaveHelper.Init()

  • Save GUI
    • Events
      • Player - Player 1 (Red) types a chat message containing -save as An exact match
      • Player - Player 2 (Blue) types a chat message containing -save as An exact match
      • Player - Player 3 (Teal) types a chat message containing -save as An exact match
      • Player - Player 4 (Purple) types a chat message containing -save as An exact match
      • Player - Player 5 (Yellow) types a chat message containing -save as An exact match
      • Player - Player 6 (Orange) types a chat message containing -save as An exact match
      • Player - Player 7 (Green) types a chat message containing -save as An exact match
      • Player - Player 8 (Pink) types a chat message containing -save as An exact match
    • Conditions
      • SaveUseGUI Equal to True
      • (SavePlayerHero[((Player number of (Triggering player)) - 1)] is A Hero) Equal to True
    • Actions
      • -------- ------------------- --------
      • -------- NOTE: You must load values in the reverse order you saved them in. This is why we save the unit type last. --------
      • -------- ------------------- --------
      • Set VariableSet Save_PlayerNumber = (Player number of (Triggering player))
      • Set VariableSet SaveTempUnit = SavePlayerHero[(Save_PlayerNumber - 1)]
      • Set VariableSet SaveCount = -1
      • -------- ------------------- --------
      • -------- Save Abilities --------
      • -------- ------------------- --------
      • For each (Integer SaveTempInt) from 0 to SaveAbilityTypeMax, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Level of SaveAbilityType[SaveTempInt] for SaveTempUnit) Greater than 0
            • Then - Actions
              • -------- Save level of ability --------
              • Set VariableSet SaveCount = (SaveCount + 1)
              • Set VariableSet SaveValue[SaveCount] = (Level of SaveAbilityType[SaveTempInt] for SaveTempUnit)
              • Set VariableSet SaveMaxValue[SaveCount] = 11
              • -------- Save the array index --------
              • Set VariableSet SaveCount = (SaveCount + 1)
              • Set VariableSet SaveValue[SaveCount] = SaveTempInt
              • Set VariableSet SaveMaxValue[SaveCount] = SaveAbilityTypeMax
            • Else - Actions
      • -------- Save the number of abilities the unit has --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveValue[SaveCount] = (SaveCount / 2)
      • Set VariableSet SaveMaxValue[SaveCount] = SaveAbilityTypeMax
      • -------- ------------------- --------
      • -------- Save Multiboard Values --------
      • -------- ------------------- --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveValue[SaveCount] = INT_RaidCoins[Save_PlayerNumber]
      • Set VariableSet SaveMaxValue[SaveCount] = 150000
      • -------- ------------------- --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveValue[SaveCount] = INT_OutCoins[Save_PlayerNumber]
      • Set VariableSet SaveMaxValue[SaveCount] = 150000
      • -------- ------------------- --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveValue[SaveCount] = INT_IdleCoins[Save_PlayerNumber]
      • Set VariableSet SaveMaxValue[SaveCount] = 150000
      • -------- ------------------- --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveValue[SaveCount] = INT_AdvCoins[Save_PlayerNumber]
      • Set VariableSet SaveMaxValue[SaveCount] = 150000
      • -------- ------------------- --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveValue[SaveCount] = INT_ArcCoins[Save_PlayerNumber]
      • Set VariableSet SaveMaxValue[SaveCount] = 150000
      • -------- ------------------- --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveValue[SaveCount] = INT_PvPrating[Save_PlayerNumber]
      • Set VariableSet SaveMaxValue[SaveCount] = 100000
      • -------- ------------------- --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveValue[SaveCount] = INT_AbilityProc[Save_PlayerNumber]
      • Set VariableSet SaveMaxValue[SaveCount] = 35
      • -------- ------------------- --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveValue[SaveCount] = INT_ManaPerHitMIN[Save_PlayerNumber]
      • Set VariableSet SaveMaxValue[SaveCount] = 35
      • -------- ------------------- --------
      • -------- Save Stash 2 Items --------
      • -------- ------------------- --------
      • Set VariableSet SaveTempUnit2 = SavePlayerStash2[Save_PlayerNumber]
      • For each (Integer SaveTempInt) from 0 to 5, do (Actions)
        • Loop - Actions
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Custom script: set udg_SaveValue[udg_SaveCount] = SaveHelper.ConvertItemId(GetItemTypeId(UnitItemInSlot(udg_SaveTempUnit2, udg_SaveTempInt)))
          • Set VariableSet SaveMaxValue[SaveCount] = SaveItemTypeMax
      • -------- ------------------- --------
      • -------- Save Stash 1 Items --------
      • -------- ------------------- --------
      • Set VariableSet SaveTempUnit2 = SavePlayerStash1[Save_PlayerNumber]
      • For each (Integer SaveTempInt) from 0 to 5, do (Actions)
        • Loop - Actions
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Custom script: set udg_SaveValue[udg_SaveCount] = SaveHelper.ConvertItemId(GetItemTypeId(UnitItemInSlot(udg_SaveTempUnit2, udg_SaveTempInt)))
          • Set VariableSet SaveMaxValue[SaveCount] = SaveItemTypeMax
      • -------- ------------------- --------
      • -------- Save Hero Items --------
      • -------- ------------------- --------
      • For each (Integer SaveTempInt) from 0 to 5, do (Actions)
        • Loop - Actions
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Custom script: set udg_SaveValue[udg_SaveCount] = SaveHelper.ConvertItemId(GetItemTypeId(UnitItemInSlot(udg_SaveTempUnit, udg_SaveTempInt)))
          • Set VariableSet SaveMaxValue[SaveCount] = SaveItemTypeMax
      • -------- ------------------- --------
      • -------- Save Attributes --------
      • -------- ------------------- --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveValue[SaveCount] = (Strength of SaveTempUnit (Exclude bonuses))
      • Set VariableSet SaveMaxValue[SaveCount] = 1000000
      • -------- ------------------- --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveValue[SaveCount] = (Agility of SaveTempUnit (Exclude bonuses))
      • Set VariableSet SaveMaxValue[SaveCount] = 1000000
      • -------- ------------------- --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveValue[SaveCount] = (Intelligence of SaveTempUnit (Exclude bonuses))
      • Set VariableSet SaveMaxValue[SaveCount] = 1000000
      • -------- ------------------- --------
      • -------- Save Experience (%) and Level --------
      • -------- ------------------- --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Custom script: set udg_SaveValue[udg_SaveCount] = R2I( (GetHeroXP(udg_SaveTempUnit)) / SaveHelper.GetLevelXP(GetHeroLevel(udg_SaveTempUnit)) * 100) // percentage
      • Set VariableSet SaveMaxValue[SaveCount] = 1000000
      • -------- ------------------- --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveValue[SaveCount] = (Hero level of SaveTempUnit)
      • Set VariableSet SaveMaxValue[SaveCount] = 150
      • -------- ------------------- --------
      • -------- Save Hero Type --------
      • -------- ------------------- --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Custom script: set udg_SaveValue[udg_SaveCount] = SaveHelper.ConvertUnitId(GetUnitTypeId(udg_SaveTempUnit))
      • Set VariableSet SaveMaxValue[SaveCount] = SaveUnitTypeMax
      • -------- ------------------- --------
      • -------- Save to disk --------
      • -------- ------------------- --------
      • Custom script: set udg_SaveTempInt = Savecode.create()
      • For each (Integer A) from 0 to SaveCount, do (Actions)
        • Loop - Actions
          • Custom script: call Savecode(udg_SaveTempInt).Encode(udg_SaveValue[bj_forLoopAIndex], udg_SaveMaxValue[bj_forLoopAIndex])
      • Set VariableSet SaveTempString = <Empty String>
      • Custom script: set udg_SaveTempString = Savecode(udg_SaveTempInt).Save(GetTriggerPlayer(), 1)
      • Custom script: call SaveFile.create(GetTriggerPlayer(), SaveHelper.GetUnitTitle(udg_SaveTempUnit), -1, udg_SaveTempString)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • SaveShowCode Equal to True
        • Then - Actions
          • Custom script: set udg_SaveCodeColored = Savecode_colorize(udg_SaveTempString)
          • Game - Display to (All players) the text: SaveCodeColored
        • Else - Actions

  • Load GUI
    • Events
      • Game - SaveLoadEvent becomes Equal to 1.00
    • Conditions
      • SaveUseGUI Equal to True
    • Actions
      • Set VariableSet SaveCount = 0
      • -------- ------------------- --------
      • -------- NOTE: You must load values in the reverse order you saved them in --------
      • -------- ------------------- --------
      • -------- Validate --------
      • -------- ------------------- --------
      • Custom script: set udg_SaveTempInt = integer(Savecode.create())
      • Custom script: if not (Savecode(udg_SaveTempInt).Load(udg_SaveLoadEvent_Player, udg_SaveLoadEvent_Code, 1)) then
      • Game - Display to (Player group(SaveLoadEvent_Player)) the text: Invalid load code (...
      • Skip remaining actions
      • Custom script: endif
      • Custom script: call DisplayTextToPlayer(GetLocalPlayer(), 0, 0, "Loaded " + User[udg_SaveLoadEvent_Player].nameColored + "'s character!")
      • Unit - Remove SavePlayerHero[((Player number of SaveLoadEvent_Player) - 1)] from the game
      • Unit - Remove SavePlayerHero[(Player number of SaveLoadEvent_Player)] from the game
      • Set VariableSet SaveLoad_PlayerNumber = (Player number of SaveLoadEvent_Player)
      • Unit - Remove SavePlayerStash1[SaveLoad_PlayerNumber] from the game
      • Unit - Remove SavePlayerStash2[SaveLoad_PlayerNumber] from the game
      • Item - Pick every item in (Playable map area) and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Custom value of (Picked item)) Equal to SaveLoad_PlayerNumber
            • Then - Actions
              • Item - Remove (Picked item)
            • Else - Actions
      • -------- ------------------- --------
      • -------- Load Hero --------
      • -------- ------------------- --------
      • Set VariableSet SaveMaxValue[SaveCount] = SaveUnitTypeMax
      • Custom script: call SaveHelper.GUILoadNext()
      • -------- ------------------- --------
      • Unit - Create 1 SaveUnitType[SaveValue[SaveCount]] for SaveLoadEvent_Player at (Center of Town 1 Start <gen>) facing Default building facing degrees
      • Set VariableSet U_Hero[SaveLoad_PlayerNumber] = (Last created unit)
      • Set VariableSet SaveTempUnit = (Last created unit)
      • Set VariableSet SavePlayerHero[SaveLoad_PlayerNumber] = SaveTempUnit
      • Selection - Select SaveTempUnit for SaveLoadEvent_Player
      • -------- ------------------- --------
      • -------- Load Experience and Level --------
      • -------- ------------------- --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 150
      • Custom script: call SaveHelper.GUILoadNext()
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 1000000
      • Custom script: call SaveHelper.GUILoadNext()
      • -------- ------------------- --------
      • Custom script: set udg_SaveTempReal = SaveHelper.GetLevelXP(udg_SaveValue[udg_SaveCount-1])
      • Hero - Set SaveTempUnit experience to (Integer((((Real(SaveValue[SaveCount])) / 100.00) x SaveTempReal))), Hide level-up graphics
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Hero level of SaveTempUnit) Not equal to SaveValue[(SaveCount - 1)]
        • Then - Actions
          • Hero - Set SaveTempUnit Hero-level to SaveValue[(SaveCount - 1)], Hide level-up graphics
        • Else - Actions
      • -------- ------------------- --------
      • -------- Load Attributes --------
      • -------- ------------------- --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 1000000
      • Custom script: call SaveHelper.GUILoadNext()
      • Hero - Modify Intelligence of SaveTempUnit: Set to SaveValue[SaveCount].
      • -------- ------------------- --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 1000000
      • Custom script: call SaveHelper.GUILoadNext()
      • Hero - Modify Agility of SaveTempUnit: Set to SaveValue[SaveCount].
      • -------- ------------------- --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 1000000
      • Custom script: call SaveHelper.GUILoadNext()
      • Hero - Modify Strength of SaveTempUnit: Set to SaveValue[SaveCount].
      • -------- ------------------- --------
      • -------- Load Items --------
      • -------- ------------------- --------
      • For each (Integer A) from 0 to 5, do (Actions)
        • Loop - Actions
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Set VariableSet SaveMaxValue[SaveCount] = SaveItemTypeMax
          • Custom script: call SaveHelper.GUILoadNext()
          • Hero - Create SaveItemType[SaveValue[SaveCount]] and give it to SaveTempUnit
      • -------- ------------------- --------
      • -------- Load Stash 1 Items --------
      • -------- ------------------- --------
      • Unit - Create 1 Stash 1 for SaveLoadEvent_Player at Stash_Point[SaveLoad_PlayerNumber] facing Default building facing degrees
      • Set VariableSet SavePlayerStash1[SaveLoad_PlayerNumber] = (Last created unit)
      • For each (Integer A) from 0 to 5, do (Actions)
        • Loop - Actions
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Set VariableSet SaveMaxValue[SaveCount] = SaveItemTypeMax
          • Custom script: call SaveHelper.GUILoadNext()
          • Hero - Create SaveItemType[SaveValue[SaveCount]] and give it to SavePlayerStash1[SaveLoad_PlayerNumber]
      • -------- ------------------- --------
      • -------- Load Stash 2 Items --------
      • -------- ------------------- --------
      • Unit - Create 1 Stash 2 for SaveLoadEvent_Player at Stash_Point[SaveLoad_PlayerNumber] facing Default building facing degrees
      • Set VariableSet SavePlayerStash2[SaveLoad_PlayerNumber] = (Last created unit)
      • For each (Integer A) from 0 to 5, do (Actions)
        • Loop - Actions
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Set VariableSet SaveMaxValue[SaveCount] = SaveItemTypeMax
          • Custom script: call SaveHelper.GUILoadNext()
          • Hero - Create SaveItemType[SaveValue[SaveCount]] and give it to SavePlayerStash2[SaveLoad_PlayerNumber]
      • -------- ------------------- --------
      • -------- Load Multiboard Values --------
      • -------- ------------------- --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 35
      • Custom script: call SaveHelper.GUILoadNext()
      • Set VariableSet INT_ManaPerHitMIN[SaveLoad_PlayerNumber] = SaveValue[SaveCount]
      • Multiboard - Set the text for MB_Player[SaveLoad_PlayerNumber] item in column 2, row 9 to ((String(INT_ManaPerHitMIN[SaveLoad_PlayerNumber])) + to 50)
      • -------- ------------------- --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 35
      • Custom script: call SaveHelper.GUILoadNext()
      • Set VariableSet INT_AbilityProc[SaveLoad_PlayerNumber] = SaveValue[SaveCount]
      • Multiboard - Set the text for MB_Player[SaveLoad_PlayerNumber] item in column 2, row 8 to ((String(INT_AbilityProc[SaveLoad_PlayerNumber])) + %)
      • -------- ------------------- --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 100000
      • Custom script: call SaveHelper.GUILoadNext()
      • Set VariableSet INT_PvPrating[SaveLoad_PlayerNumber] = SaveValue[SaveCount]
      • Multiboard - Set the text for MB_Player[SaveLoad_PlayerNumber] item in column 2, row 10 to (String(INT_PvPrating[SaveLoad_PlayerNumber]))
      • -------- ------------------- --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 150000
      • Custom script: call SaveHelper.GUILoadNext()
      • Set VariableSet INT_ArcCoins[SaveLoad_PlayerNumber] = SaveValue[SaveCount]
      • Multiboard - Set the text for MB_Player[SaveLoad_PlayerNumber] item in column 2, row 5 to (String(INT_ArcCoins[SaveLoad_PlayerNumber]))
      • -------- ------------------- --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 150000
      • Custom script: call SaveHelper.GUILoadNext()
      • Set VariableSet INT_AdvCoins[SaveLoad_PlayerNumber] = SaveValue[SaveCount]
      • Multiboard - Set the text for MB_Player[SaveLoad_PlayerNumber] item in column 2, row 3 to (String(INT_AdvCoins[SaveLoad_PlayerNumber]))
      • -------- ------------------- --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 150000
      • Custom script: call SaveHelper.GUILoadNext()
      • Set VariableSet INT_IdleCoins[SaveLoad_PlayerNumber] = SaveValue[SaveCount]
      • Multiboard - Set the text for MB_Player[SaveLoad_PlayerNumber] item in column 2, row 2 to (String(INT_IdleCoins[SaveLoad_PlayerNumber]))
      • -------- ------------------- --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 150000
      • Custom script: call SaveHelper.GUILoadNext()
      • Set VariableSet INT_OutCoins[SaveLoad_PlayerNumber] = SaveValue[SaveCount]
      • Multiboard - Set the text for MB_Player[SaveLoad_PlayerNumber] item in column 2, row 4 to (String(INT_OutCoins[SaveLoad_PlayerNumber]))
      • -------- ------------------- --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 150000
      • Custom script: call SaveHelper.GUILoadNext()
      • Set VariableSet INT_RaidCoins[SaveLoad_PlayerNumber] = SaveValue[SaveCount]
      • Multiboard - Set the text for MB_Player[SaveLoad_PlayerNumber] item in column 2, row 6 to (String(INT_RaidCoins[SaveLoad_PlayerNumber]))
      • -------- ------------------- --------
      • -------- Load Abilities --------
      • -------- ------------------- --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = SaveAbilityTypeMax
      • Custom script: call SaveHelper.GUILoadNext()
      • Set VariableSet SaveTempReal = (Real(SaveValue[SaveCount]))
      • For each (Integer A) from 0 to (Integer(SaveTempReal)), do (Actions)
        • Loop - Actions
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Set VariableSet SaveMaxValue[SaveCount] = SaveAbilityTypeMax
          • Custom script: call SaveHelper.GUILoadNext()
          • Unit - Add SaveAbilityType[SaveValue[SaveCount]] to SaveTempUnit
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Set VariableSet SaveMaxValue[SaveCount] = 11
          • Custom script: call SaveHelper.GUILoadNext()
          • Unit - Set level of SaveAbilityType[SaveValue[(SaveCount - 1)]] for SaveTempUnit to SaveValue[SaveCount]
      • -------- ------------------- --------
      • Camera - Pan camera for SaveLoadEvent_Player to Town_Point1 over 0.00 seconds
      • Camera - Apply Regular View <gen> for SaveLoadEvent_Player over 0.00 seconds
      • Cinematic - Clear the screen of text messages for (Player group(SaveLoadEvent_Player)).
      • Custom script: call Savecode(udg_SaveTempInt).destroy()
 
Last edited:
Level 24
Joined
Jun 26, 2020
Messages
1,852
Probably is because you are using a very high max value in some parts like 1000000, just in case try to not exceed 200000 and test if it now works.

PD: For your unit, item and ability types use a max value that you will be sure you won't exceed soon, because when you wanna add more you have to change the max values then making previous saves useless.
 
Level 11
Joined
Aug 11, 2009
Messages
594
Probably is because you are using a very high max value in some parts like 1000000, just in case try to not exceed 200000 and test if it now works.

PD: For your unit, item and ability types use a max value that you will be sure you won't exceed soon, because when you wanna add more you have to change the max values then making previous saves useless.
I reduced all numbers below 200k but sadly the issue still remain.

Thanks for info about max values, would have been sad to have a code wipe later on when adding more heroes/items :D
 
Level 11
Joined
Aug 11, 2009
Messages
594
However, I did find the solution to the first issue where I could not save after loading a Hero. The variable after creating the Hero "SavePlayerHero(SaveLoad_PlayerNumber)" should be "SavePlayerHero(SaveLoad_PlayerNumber - 1)".

But the second issue still remains and is most likely tied to the vjass coded dialogue system. If I try to save a new Hero after already using Save or Load, it wont allow me to pick one of the 5 slots and will instead automatically save to the last used slot. I have messaged TriggerHappy on discord though and asked if he could help or give permission for someone else to change it for me. No idea if its a big job though to just remove this auto save code and always allow the player to pick a slot to save to.

EDIT: The dialogue system had the function you asked for. Here is the code:

JASS:
scope SampleDialogSystem initializer Init
   
    globals
        private dialog array Dialog
        private button array Button
        private button array PlayerButton[25][10]
       
        private trigger T=CreateTrigger()
    endglobals
   
    private function GetTitle takes player p, integer slot returns string
        local string s = SaveFile(slot).getTitle()
        if (s == null or s == "") then
            return "Empty"
        endif
        if (StringLength(s) > 32) then
            set s = SubString(s, 0, 26) + "...)"
        endif
        return s
    endfunction
   
    private function OnButtonClick takes nothing returns boolean
        local button b = GetClickedButton()
        local player p = GetTriggerPlayer()
        local string s = ""
        local integer pid = GetPlayerId(p)
        local boolean safe = (File.ReadEnabled and GetLocalPlayer() == p)
        local User u = User(pid)
        local integer curSlot = SaveHelper.GetSaveSlot(u)
       
        if (b == Button[(u.id*12)+0]) then // save char
            if (curSlot == 0) then
                call DialogClear(Dialog[(u.id*12)+2])
                call DialogSetMessage(Dialog[(u.id*12)+2], "|cffff8000Save Character|r")
               
                if (not safe) then
                    call ClearTextMessages()
                    call DisplayTimedTextToPlayer(p, 0, 0, 60000, udg_LocalFiles_WarningMessage)
                endif
               
                set PlayerButton[pid][10] = DialogAddButton(Dialog[(u.id*12)+2], "|cffffcc00[1] |cffffffff" + GetTitle(p, 1) + "|r", 0)
                set PlayerButton[pid][11] = DialogAddButton(Dialog[(u.id*12)+2], "|cffffcc00[2] |cffffffff" + GetTitle(p, 2), 0)
                set PlayerButton[pid][12] = DialogAddButton(Dialog[(u.id*12)+2], "|cffffcc00[3] |cffffffff" + GetTitle(p, 3), 0)
                set PlayerButton[pid][13] = DialogAddButton(Dialog[(u.id*12)+2], "|cffffcc00[4] |cffffffff" + GetTitle(p, 4), 0)
                set PlayerButton[pid][14] = DialogAddButton(Dialog[(u.id*12)+2], "|cffffcc00[5] |cffffffff" + GetTitle(p, 5), 0)
               
                call DialogAddButton(Dialog[(u.id*12)+2], "|cffff8000Close", 0)
                call DialogDisplay(GetLocalPlayer(), Dialog[(u.id*12)+2], safe)
            else
                call SaveCharToSlot(udg_SavePlayerHero[pid], curSlot, GetHeroSaveCode(SaveHelper.GetUserHero(u)))
                call DisplayTextToPlayer(u.toPlayer(), 0, 0, "|cffffcc00[" + I2S(curSlot) + "]|r " + SaveHelper.GetUnitTitle(SaveHelper.GetUserHero(u)))
            endif
        elseif(b == Button[(u.id*12)+1]) then // load char
            if (not safe) then
                call ClearTextMessages()
                call ClearTextMessages()
                call DisplayTimedTextToPlayer(p, 0, 0, 60000, udg_LocalFiles_WarningMessage)
            endif
       
            call DialogClear(Dialog[(u.id*12)+1])
            call DialogSetMessage(Dialog[(u.id*12)+1], "|cffff8000Load Character|r")
           
            set PlayerButton[pid][20] = DialogAddButton(Dialog[(u.id*12)+1], "|cffffcc00Autosave - |cffffffff" + GetTitle(p, 10), 0)
            set PlayerButton[pid][0] = DialogAddButton(Dialog[(u.id*12)+1], "|cffffcc00[1] |cffffffff" + GetTitle(p, 1), 0)
            set PlayerButton[pid][1] = DialogAddButton(Dialog[(u.id*12)+1], "|cffffcc00[2] |cffffffff" + GetTitle(p, 2), 0)
            set PlayerButton[pid][2] = DialogAddButton(Dialog[(u.id*12)+1], "|cffffcc00[3] |cffffffff" + GetTitle(p, 3), 0)
            set PlayerButton[pid][3] = DialogAddButton(Dialog[(u.id*12)+1], "|cffffcc00[4] |cffffffff" + GetTitle(p, 4), 0)
            set PlayerButton[pid][4] = DialogAddButton(Dialog[(u.id*12)+1], "|cffffcc00[5] |cffffffff" + GetTitle(p, 5), 0)
           
            call DialogAddButton(Dialog[(u.id*12)+1], "|cffff8000Close", 0)
            call DialogDisplay(p, Dialog[(u.id*12)+1], safe)
        elseif(b == Button[(u.id*12)+2]) then // load char
            if (not safe) then
                call ClearTextMessages()
                call DisplayTimedTextToPlayer(p,0,0,60000, udg_LocalFiles_WarningMessage)
            endif
           
            call DialogClear(Dialog[(u.id*12)+3])
            call DialogSetMessage(Dialog[(u.id*12)+3], "|cffff8000Delete Character|r")
           
            set PlayerButton[pid][5] = DialogAddButton(Dialog[(u.id*12)+3], "|cffff0000[X] - |cffffffff" + GetTitle(p, 1), 0)
            set PlayerButton[pid][6] = DialogAddButton(Dialog[(u.id*12)+3], "|cffff0000[X] - |cffffffff" + GetTitle(p, 2), 0)
            set PlayerButton[pid][7] = DialogAddButton(Dialog[(u.id*12)+3], "|cffff0000[X] - |cffffffff" + GetTitle(p, 3), 0)
            set PlayerButton[pid][8] = DialogAddButton(Dialog[(u.id*12)+3], "|cffff0000[X] - |cffffffff" + GetTitle(p, 4), 0)
            set PlayerButton[pid][9] = DialogAddButton(Dialog[(u.id*12)+3], "|cffff0000[X] - |cffffffff" + GetTitle(p, 5), 0)
           
            call DialogAddButton(Dialog[(u.id*12)+3], "|cffff8000Close", 0)
            call DialogDisplay(p, Dialog[(u.id*12)+3], safe)
        elseif(b == PlayerButton[pid][0]) then
            call LoadSaveSlot(p, 1)
        elseif(b == PlayerButton[pid][1]) then
            call LoadSaveSlot(p, 2)
        elseif(b == PlayerButton[pid][2]) then
            call LoadSaveSlot(p, 3)
        elseif(b == PlayerButton[pid][3]) then
            call LoadSaveSlot(p, 4)
        elseif(b == PlayerButton[pid][4]) then
            call LoadSaveSlot(p, 5)
        elseif(b == PlayerButton[pid][20]) then
            call LoadSaveSlot(p, 10)
        elseif(b == PlayerButton[pid][5]) then
            call DeleteCharSlot(p, 1)
        elseif(b == PlayerButton[pid][6]) then
            call DeleteCharSlot(p, 2)
        elseif(b == PlayerButton[pid][7]) then
            call DeleteCharSlot(p, 3)
        elseif(b == PlayerButton[pid][8]) then
            call DeleteCharSlot(p, 4)
        elseif(b == PlayerButton[pid][9]) then
            call DeleteCharSlot(p, 5)
        elseif(b == PlayerButton[pid][10]) then
            call SaveCharToSlot(udg_SavePlayerHero[pid], 1, GetHeroSaveCode(SaveHelper.GetUserHero(u)))
        elseif(b == PlayerButton[pid][11]) then
            call SaveCharToSlot(udg_SavePlayerHero[pid], 2, GetHeroSaveCode(SaveHelper.GetUserHero(u)))
        elseif(b == PlayerButton[pid][12]) then
            call SaveCharToSlot(udg_SavePlayerHero[pid], 3, GetHeroSaveCode(SaveHelper.GetUserHero(u)))
        elseif(b == PlayerButton[pid][13]) then
            call SaveCharToSlot(udg_SavePlayerHero[pid], 4, GetHeroSaveCode(SaveHelper.GetUserHero(u)))
        elseif(b == PlayerButton[pid][14]) then
            call SaveCharToSlot(udg_SavePlayerHero[pid], 5, GetHeroSaveCode(SaveHelper.GetUserHero(u)))
        endif
       
        return false
    endfunction
   
    private function ShowMenu takes nothing returns boolean
        local player p = GetTriggerPlayer()
        local integer i = GetPlayerId(p)
       
        if (GetLocalPlayer() == p) then
            call DialogSetMessage(Dialog[(i*12)+0], "|cffff8000Main Menu|r")
            call DialogDisplay(p, Dialog[(i*12)+0], true)
        endif
       
        return false
    endfunction
   
    private function InitDialog takes nothing returns nothing
        local integer i = 0
        local trigger t = CreateTrigger()
        local User u
       
        loop
            exitwhen i == User.AmountPlaying
           
            set u = User.fromPlaying(i)
           
            set Dialog[(u.id*12)+0] = DialogCreate()
            set Button[(u.id*12)+0] = DialogAddButton(Dialog[(u.id*12)+0], "|cffffcc00Save Character", 0)
            set Button[(u.id*12)+1] = DialogAddButton(Dialog[(u.id*12)+0], "|cffffcc00Load Character", 0)
            set Button[(u.id*12)+2] = DialogAddButton(Dialog[(u.id*12)+0], "|cffffcc00Delete Character", 0)
            call DialogAddButton(Dialog[(u.id*12)+0], "|cffff8000Close", 0)

            set Dialog[(u.id*12)+1] = DialogCreate()
            set Dialog[(u.id*12)+2] = DialogCreate()
            set Dialog[(u.id*12)+3] = DialogCreate()
       
            call TriggerRegisterDialogEvent(t, Dialog[(u.id*12)+0])
            call TriggerRegisterDialogEvent(t, Dialog[(u.id*12)+1])
            call TriggerRegisterDialogEvent(t, Dialog[(u.id*12)+2])
            call TriggerRegisterDialogEvent(t, Dialog[(u.id*12)+3])
       
            set i = i + 1
        endloop
       
        call TriggerAddCondition(t, Filter(function OnButtonClick))
    endfunction
   
    private function Init takes nothing returns nothing
        local trigger t  = CreateTrigger()
        local integer i  = 0
       
        loop
            //set CurrentCharSaveSlot[i] = -1
            call TriggerRegisterPlayerEvent(t, Player(i), EVENT_PLAYER_END_CINEMATIC)
            set i = i + 1
           
            exitwhen i == bj_MAX_PLAYER_SLOTS
        endloop
       
        call TriggerAddCondition(t, Filter(function ShowMenu))

        call TimerStart(CreateTimer(), 0, false, function InitDialog)
    endfunction

endscope
 
Level 24
Joined
Jun 26, 2020
Messages
1,852
However, I did find the solution to the first issue where I could not save after loading a Hero. The variable after creating the Hero "SavePlayerHero(SaveLoad_PlayerNumber)" should be "SavePlayerHero(SaveLoad_PlayerNumber - 1)".
Good.
But the second issue still remains and is most likely tied to the vjass coded dialogue system. If I try to save a new Hero after already using Save or Load, it wont allow me to pick one of the 5 slots and will instead automatically save to the last used slot. I have messaged TriggerHappy on discord though and asked if he could help or give permission for someone else to change it for me. No idea if its a big job though to just remove this auto save code and always allow the player to pick a slot to save to.
Ok, here is the issue, when you are saving you are only using the slot -1:
  • Custom script: call SaveFile.create(GetTriggerPlayer(), SaveHelper.GetUnitTitle(udg_SaveTempUnit), -1, udg_SaveTempString)
and that counts for the manual path, you need to set the slot where you wanna load it in the dialog system.
 
Level 11
Joined
Aug 11, 2009
Messages
594
Ok, here is the issue, when you are saving you are only using the slot -1:
  • page.gif
    Custom script: call SaveFile.create(GetTriggerPlayer(), SaveHelper.GetUnitTitle(udg_SaveTempUnit), -1, udg_SaveTempString)
and that counts for the manual path, you need to set the slot where you wanna load it in the dialog system.

Yeah, if I manually type -save or -load it will only use the first slot. However, when using the dialogue button it could auto save to any slot.

For example, if I load a Hero I have on slot 5, then I decide to start a new Hero that I want to save. Then the dialogue button "Save" will automatically save that new hero to slot 5 instead of letting me choose the slot I want.
However, if I create a new Hero at the start of the game the "Save" button will allow me to pick a slot.

So basically, the first time in a game that I use the "Save" button it allows me to pick 1 of 5 slots to save to. But if I ever use the "Load" button or the "Save" button, then the system will never allow me to pick a save slot again that game. It will only save to the last used slot all the time.

But I have no knowledge about Jass and these custom scripts, so I cant really fix it myself, but I would assume the Dialogue code i sent last post would need to be edited to fix it.
 
Level 11
Joined
Aug 11, 2009
Messages
594
It did not work. It did change which slot it got saved to but I still cant pick in game which slot I want it to save to. I dont think that line is connected to what I want.
 
Top