• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.
  • It's time for the first HD Modeling Contest of 2025. Join the theme discussion for Hive's HD Modeling Contest #7! Click here to post your idea!

Saving Upgrades

Level 11
Joined
Jun 11, 2018
Messages
174
Im using TriggerHappy's save/load and I managed to add gold and lumber saving. I want to add research saving as well, how can this be done?

  • 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 = Pokemon RPG
      • -------- ------------------- --------
      • -------- This message will display to players who don't have local files enabled --------
      • -------- ------------------- --------
      • Set VariableSet LocalFiles_WarningMessage = |cffe53b3bYou need to enable local files to load your character from disk on patches prior to 1.30!
      • Custom script: set udg_LocalFiles_WarningMessage = udg_LocalFiles_WarningMessage + "\n\n"
      • -------- ------------------- --------
      • -------- Show the save code --------
      • -------- ------------------- --------
      • Set VariableSet SaveShowCode = False
      • -------- ------------------- --------
      • -------- 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 = True
      • 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 = 999
      • -------- 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] = Bulbasaur
      • Set VariableSet SaveUnitType[2] = Charmander
      • Set VariableSet SaveUnitType[3] = Squirtle
      • Set VariableSet SaveUnitType[4] = Caterpie
      • Set VariableSet SaveUnitType[5] = Weedle
      • Set VariableSet SaveUnitType[6] = Pidgey
      • Set VariableSet SaveUnitType[7] = Rattata
      • Set VariableSet SaveUnitType[8] = Spearow
      • Set VariableSet SaveUnitType[9] = Ekans
      • Set VariableSet SaveUnitType[10] = Pikachu
      • Set VariableSet SaveUnitType[11] = Ivysaur
      • Set VariableSet SaveUnitType[12] = Venusaur
      • Set VariableSet SaveUnitType[13] = Charmeleon
      • Set VariableSet SaveUnitType[14] = Charizard
      • Set VariableSet SaveUnitType[15] = Wartortle
      • Set VariableSet SaveUnitType[16] = Blastoise
      • Set VariableSet SaveUnitType[17] = Sandslash
      • Set VariableSet SaveUnitType[18] = Metapod
      • Set VariableSet SaveUnitType[19] = Butterfree
      • Set VariableSet SaveUnitType[20] = Nidorino-
      • Set VariableSet SaveUnitType[21] = Kakuna
      • Set VariableSet SaveUnitType[22] = Beedrill
      • Set VariableSet SaveUnitType[23] = Pidgeotto
      • Set VariableSet SaveUnitType[24] = Pidgeot
      • Set VariableSet SaveUnitType[25] = Raticate
      • Set VariableSet SaveUnitType[26] = Fearow
      • Set VariableSet SaveUnitType[27] = Arbok
      • Set VariableSet SaveUnitType[28] = Raichu
      • Set VariableSet SaveUnitType[29] = Eevee
      • Set VariableSet SaveUnitType[30] = Jolteon
      • Set VariableSet SaveUnitType[31] = Flareon
      • Set VariableSet SaveUnitType[32] = Vaporeon
      • Set VariableSet SaveUnitType[33] = Sandshrew
      • Set VariableSet SaveUnitType[34] = Sandslash
      • Set VariableSet SaveUnitType[35] = Nidoran♀
      • Set VariableSet SaveUnitType[36] = Nidorana
      • Set VariableSet SaveUnitType[37] = Nidoqueen
      • Set VariableSet SaveUnitType[38] = Nidoran♂
      • Set VariableSet SaveUnitType[39] = Nidorino-
      • Set VariableSet SaveUnitType[40] = Nidoking
      • Set VariableSet SaveUnitType[41] = Mankey
      • Set VariableSet SaveUnitType[42] = Nidoking
      • Set VariableSet SaveUnitType[43] = Clefairy-
      • Set VariableSet SaveUnitType[44] = Clefable-
      • Set VariableSet SaveUnitTypeMax = 99
      • -------- 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[1] = Thunderstone
      • Set VariableSet SaveItemType[2] = Firestone
      • Set VariableSet SaveItemType[3] = Leafstone
      • Set VariableSet SaveItemType[4] = Waterstone
      • Set VariableSet SaveItemType[5] = Moonstone
      • Set VariableSet SaveItemType[6] = Antidote
      • Set VariableSet SaveItemType[7] = Pokè Flute
      • Set VariableSet SaveItemType[8] = HM01
      • Set VariableSet SaveItemType[9] = |cff808080Broken |rCybernetic Implant
      • Set VariableSet SaveItemType[10] = |cff808080Broken |rEnergy Amplifier
      • Set VariableSet SaveItemType[11] = |cff808080Broken |rReflex Enhancer
      • Set VariableSet SaveItemType[12] = |cff808080Broken |rVitality Amplifier
      • Set VariableSet SaveItemType[13] = |cff808080Broken|r Dexterity Implant
      • Set VariableSet SaveItemType[14] = |cff808080Broken|r Inertial Dampener
      • Set VariableSet SaveItemType[15] = |cff808080Broken|r Focusing Implant
      • Set VariableSet SaveItemType[16] = |cff808080Broken|r Power Enhancer
      • Set VariableSet SaveItemType[17] = |cff808080Broken|r Running Shoes
      • Set VariableSet SaveItemType[18] = Scrap Metal
      • Set VariableSet SaveItemType[19] = |cff00ff00Enhanced |rTissue Generator
      • Set VariableSet SaveItemType[20] = Basic Tissue Generator
      • Set VariableSet SaveItemType[21] = |cffffff00Advanced|r Tissue Generator
      • Set VariableSet SaveItemType[22] = Basic Running Shoes
      • Set VariableSet SaveItemType[23] = |cff00ff00Enhanced|r Running Shoes
      • Set VariableSet SaveItemType[24] = Basic Cybernetic Implant
      • Set VariableSet SaveItemType[25] = |cff00ff00Enhanced |rCybernetic Implant
      • Set VariableSet SaveItemType[26] = |cffffff00Advanced|r Cybernetic Implant
      • Set VariableSet SaveItemType[27] = Basic Dexterity Implant
      • Set VariableSet SaveItemType[28] = |cff00ff00Enhanced |rDexterity Implant
      • Set VariableSet SaveItemType[29] = |cffffff00Advanced|r Dexterity Implant
      • Set VariableSet SaveItemType[30] = Basic Focusing Implant
      • Set VariableSet SaveItemType[31] = |cff00ff00Enhanced |rFocusing Implant
      • Set VariableSet SaveItemType[32] = |cffffff00Advanced|r Focusing Implant
      • Set VariableSet SaveItemType[33] = Basic Power Enhancer
      • Set VariableSet SaveItemType[34] = |cff00ff00Enhanced |rPower Enhancer
      • Set VariableSet SaveItemType[35] = |cffffff00Advanced|r Power Enhancer
      • Set VariableSet SaveItemType[36] = |cffff0000Superior |rPower Enhancer
      • Set VariableSet SaveItemType[37] = Basic Muscle Accelerator
      • Set VariableSet SaveItemType[38] = |cff00ff00Enhanced |rMuscle Accelerator
      • Set VariableSet SaveItemType[39] = |cffffff00Advanced|r Muscle Accelerator
      • Set VariableSet SaveItemType[40] = Basic Reflex Enhancer
      • Set VariableSet SaveItemType[41] = |cff00ff00Enhanced|r Reflex Enhancer
      • Set VariableSet SaveItemType[42] = |cffffff00Advanced|r Reflex Enhancer
      • Set VariableSet SaveItemType[43] = Basic Inertial Dampener
      • Set VariableSet SaveItemType[44] = |cff00ff00Enhanced |rInertial Dampener
      • Set VariableSet SaveItemType[45] = |cffff0000Superior|r Inertial Dampener
      • Set VariableSet SaveItemType[46] = |cffffff00Advanced|r Vitality Amplifier
      • Set VariableSet SaveItemType[47] = Basic Vitality Amplifier
      • Set VariableSet SaveItemType[48] = |cff00ff00Enhanced|r Vitality Amplifier
      • Set VariableSet SaveItemType[49] = |cffffff00Advanced|r Energy Amplifier
      • Set VariableSet SaveItemType[50] = Basic Energy Amplifier
      • Set VariableSet SaveItemType[51] = |cff00ff00Enhanced|r Energy Amplifier
      • Set VariableSet SaveItemType[52] = Potion
      • Set VariableSet SaveItemType[53] = Super Potion
      • Set VariableSet SaveItemType[54] = Hyper Potion
      • Set VariableSet SaveItemType[55] = Ether
      • Set VariableSet SaveItemType[56] = Max Ether
      • Set VariableSet SaveItemType[57] = Elixir
      • Set VariableSet SaveItemType[58] = Max Elixir
      • Set VariableSet SaveItemType[59] = Berry
      • Set VariableSet SaveItemType[60] = Green Mushroom
      • Set VariableSet SaveItemTypeMax = 999
      • -------- Note: Changing max values can cause a code wipe --------
      • -------- ------------------- --------
      • -------- Store ability types that can be saved here --------
      • -------- ------------------- --------
      • Set VariableSet SaveAbilityType[1] = Ember E
      • Set VariableSet SaveAbilityType[2] = Ember Q
      • Set VariableSet SaveAbilityType[3] = Ember R
      • Set VariableSet SaveAbilityType[4] = Ember W
      • Set VariableSet SaveAbilityType[5] = Cut E
      • Set VariableSet SaveAbilityType[6] = Cut Q
      • Set VariableSet SaveAbilityType[7] = Cut R
      • Set VariableSet SaveAbilityType[8] = Cut W
      • Set VariableSet SaveAbilityType[9] = Metal Claw E
      • Set VariableSet SaveAbilityType[10] = Metal Claw Q
      • Set VariableSet SaveAbilityType[11] = Metal Claw R
      • Set VariableSet SaveAbilityType[12] = Metal Claw W
      • Set VariableSet SaveAbilityType[13] = Smokescreen E
      • Set VariableSet SaveAbilityType[14] = Smokescreen Q
      • Set VariableSet SaveAbilityType[15] = Smokescreen R
      • Set VariableSet SaveAbilityType[16] = Smokescreen W
      • Set VariableSet SaveAbilityType[17] = Scary Face E
      • Set VariableSet SaveAbilityType[18] = Scary Face Q
      • Set VariableSet SaveAbilityType[19] = Scary Face R
      • Set VariableSet SaveAbilityType[20] = Scary Face W
      • Set VariableSet SaveAbilityType[21] = Vine Whip E
      • Set VariableSet SaveAbilityType[22] = Vine Whip Q
      • Set VariableSet SaveAbilityType[23] = Vine Whip R
      • Set VariableSet SaveAbilityType[24] = Vine Whip W
      • Set VariableSet SaveAbilityType[25] = Bite E
      • Set VariableSet SaveAbilityType[26] = Bite Q
      • Set VariableSet SaveAbilityType[27] = Bite R
      • Set VariableSet SaveAbilityType[28] = Bite W
      • Set VariableSet SaveAbilityType[29] = Bubble E
      • Set VariableSet SaveAbilityType[30] = Bubble Q
      • Set VariableSet SaveAbilityType[31] = Bubble R
      • Set VariableSet SaveAbilityType[32] = Bubble W
      • Set VariableSet SaveAbilityType[33] = Confusion E
      • Set VariableSet SaveAbilityType[34] = Confusion Q
      • Set VariableSet SaveAbilityType[35] = Confusion E
      • Set VariableSet SaveAbilityType[36] = Confusion R
      • Set VariableSet SaveAbilityType[37] = Double Team E
      • Set VariableSet SaveAbilityType[38] = Double Team Q
      • Set VariableSet SaveAbilityType[39] = Double Team R
      • Set VariableSet SaveAbilityType[40] = Double Team W
      • Set VariableSet SaveAbilityType[41] = Focus Energy E
      • Set VariableSet SaveAbilityType[42] = Focus Energy Q
      • Set VariableSet SaveAbilityType[43] = Focus Energy R
      • Set VariableSet SaveAbilityType[44] = Focus Energy W
      • Set VariableSet SaveAbilityType[45] = Hyper Fang E
      • Set VariableSet SaveAbilityType[46] = Hyper Fang Q
      • Set VariableSet SaveAbilityType[47] = Hyper Fang W
      • Set VariableSet SaveAbilityType[48] = Hyper Fang R
      • Set VariableSet SaveAbilityTypeMax = 199
      • -------- 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
      • Player - Player 9 (Gray) types a chat message containing -save as An exact match
      • Player - Player 10 (Light Blue) types a chat message containing -save as An exact match
      • Player - Player 11 (Dark Green) 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 SaveTempUnit = SavePlayerHero[((Player number of (Triggering player)) - 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] = 10
              • -------- 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 Skill Points --------
      • -------- ------------------- --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveValue[SaveCount] = (Unspent skill points of SaveTempUnit)
      • Set VariableSet SaveMaxValue[SaveCount] = 999
      • -------- ------------------- --------
      • -------- Save Trainer Item Charges --------
      • -------- ------------------- --------
      • Set VariableSet ItemCount = (Number of items carried by Player_Trainer[(Player number of SaveLoadEvent_Player)])
      • For each (Integer A) from 1 to ItemCount, do (Actions)
        • Loop - Actions
          • -------- Set Integer = The value that you want to save --------
          • Set VariableSet Integer = (Charges remaining in (Item carried by Player_Trainer[(Player number of SaveLoadEvent_Player)] in slot (Integer A)))
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Set VariableSet SaveValue[SaveCount] = Integer
          • Set VariableSet SaveMaxValue[SaveCount] = 999
      • -------- ------------------- --------
      • -------- Save 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] = 999
      • -------- ------------------- --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveValue[SaveCount] = (Agility of SaveTempUnit (Exclude bonuses))
      • Set VariableSet SaveMaxValue[SaveCount] = 999
      • -------- ------------------- --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveValue[SaveCount] = (Intelligence of SaveTempUnit (Exclude bonuses))
      • Set VariableSet SaveMaxValue[SaveCount] = 999
      • -------- ------------------- --------
      • -------- Save Gold --------
      • Set VariableSet Integer = (SaveLoadEvent_Player Current gold)
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveValue[SaveCount] = Integer
      • Set VariableSet SaveMaxValue[SaveCount] = 9999
      • -------- --------
      • -------- Save Lumber --------
      • Set VariableSet Integer = (SaveLoadEvent_Player Current lumber)
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveValue[SaveCount] = Integer
      • Set VariableSet SaveMaxValue[SaveCount] = 9999
      • -------- ------------------- --------
      • -------- 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] = 100
      • -------- ------------------- --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveValue[SaveCount] = (Hero level of SaveTempUnit)
      • Set VariableSet SaveMaxValue[SaveCount] = 100
      • -------- ------------------- --------
      • -------- Save Hero Name --------
      • -------- ------------------- --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Custom script: set udg_SaveValue[udg_SaveCount] = SaveHelper.GetHeroNameID(GetHeroProperName(udg_SaveTempUnit))
      • Set VariableSet SaveMaxValue[SaveCount] = SaveNameMax
      • -------- ------------------- --------
      • -------- Save Unit 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, 0, 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
 
Top