• 🏆 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] Plz Help Expanding Save Load System

Level 18
Joined
Mar 16, 2008
Messages
721
Map currently tracks only [a] difficulty (integer 0-6, "easy, normal heroic, mythic, mythic+, impossible"), I want to expand the load/save system to include what hero (4-types of heroes, the four basic night elf ones) and what [c] game mode (integer 0-4, different from difficulty, "standard, exploration, hardcore"). So ideally for example, if a player beat difficulty normal with keeper of the grove on standard game mode, then that specific data will be saved. So they will only unlock more "prestige" skins for the hero they used. possibly someone could help me brain storm what the ideal way is to save these 3 dimensions of data. or point out what lines of these triggers need to be expanded to accommodate this expansion.

Uncle helped me create these auto load/save triggers for Pipedream's save/load system. They seem to work well but I want to expand them and not sure how:

  • Autoload
    • Events
      • Time - Elapsed game time is 4.00 seconds
    • Conditions
    • Actions
      • Player Group - Pick every player in players_grp and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ((Picked player) slot status) Equal to Is playing
            • Then - Actions
              • Set VariableSet SaveLoadEvent_Player = (Picked player)
              • Set VariableSet SaveLoadEvent_PN = (Player number of SaveLoadEvent_Player)
              • -------- ------------------- --------
              • -------- This runs the Event used in Load Event and tells it to load Save Slot 1 --------
              • Custom script: call LoadSaveSlot(udg_SaveLoadEvent_Player, 1)
            • Else - Actions
  • Load Event
    • Events
      • Game - SaveLoadEvent becomes Equal to 1.00
    • Conditions
    • Actions
      • -------- Validate: --------
      • Set VariableSet SaveCount = 0
      • 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)
      • -------- --------
      • -------- --------
      • -------- PUT YOUR LOAD ACTIONS HERE: --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 1000
      • Custom script: call SaveHelper.GUILoadNext()
      • Set VariableSet highest_difficulty_victory[(Player number of SaveLoadEvent_Player)] = SaveValue[SaveCount]
      • Game - Display to (Player group(SaveLoadEvent_Player)) for 30.00 seconds the text: (Prestige Loaded: + difficulty_string[highest_difficulty_victory[(Player number of SaveLoadEvent_Player)]])
      • -------- STOP --------
      • -------- --------
      • -------- --------
      • Custom script: call Savecode(udg_SaveTempInt).destroy()
  • Autosave
    • Events
    • Conditions
    • Actions
      • Player Group - Pick every player in (All players) and do (Actions)
        • Loop - Actions
          • Set VariableSet SaveLoadEvent_Player = (Picked player)
          • Set VariableSet SaveLoadEvent_PN = (Player number of SaveLoadEvent_Player)
          • -------- --------
          • Set VariableSet SaveCount = 0
          • -------- --------
          • Custom script: call DisplayTextToPlayer(GetTriggerPlayer(), 0, 0, "Saved " + User[udg_SaveLoadEvent_Player].nameColored)
          • -------- --------
          • -------- --------
          • -------- PUT YOUR SAVE ACTIONS HERE: --------
          • Set VariableSet SaveCount = (SaveCount + 1)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • difficulty_setting Greater than highest_difficulty_victory[SaveLoadEvent_PN]
            • Then - Actions
              • Set VariableSet SaveValue[SaveCount] = difficulty_setting
              • Game - Display to (Player group(SaveLoadEvent_Player)) for 15.00 seconds the text: (Prestige saved: + difficulty_string[difficulty_setting])
            • Else - Actions
              • Set VariableSet SaveValue[SaveCount] = highest_difficulty_victory[SaveLoadEvent_PN]
              • Game - Display to (Player group(SaveLoadEvent_Player)) for 30.00 seconds the text: (Prestige saved: + difficulty_string[SaveLoadEvent_PN])
          • Set VariableSet SaveMaxValue[SaveCount] = 1000
          • -------- STOP --------
          • -------- --------
          • -------- --------
          • -------- 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(udg_SaveLoadEvent_Player, 1)
          • Custom script: call SaveFile.create(udg_SaveLoadEvent_Player, "Save", 1, udg_SaveTempString)

Thanks for any feedback or help.
 

Uncle

Warcraft Moderator
Level 64
Joined
Aug 10, 2018
Messages
6,557
Edit: I was overthinking it. Updated to use two digits instead.

I suppose you could take advantage of a two digit number.

1st digit = mode
2nd digit = difficulty

Then you save four Integers (one for each Hero) using this structure.

Let's say our first four saved values represent the heroes:
Kotg = 1
Dh = 2
Potm = 3
Warden = 4

Then for our two digit number the mode could be digit 1:
Standard = 1
Exploration = 2
Hardcore = 3

And the difficulty could be digit 2:
Easy = 1
Normal = 2
Heroic = 3
Mythic = 4
Mythic+ = 5
Impossible = 6

So if your Kotg is playing Hardcore on Mythic difficulty then the FIRST save would be: 34

If your Warden is playing Standard on Normal difficulty then the FOURTH save would be: 12

Make sense? To save this data, the first thing that comes to mind is using a String Array variable that converts and stores the Integers. You then combine these into one single string and then convert that back into a single Integer to use as your save value:
  • Set Variable Save_IntToString[1] = (String(Player_Mode[SaveLoadEvent_PN]))
  • Set Variable Save_IntToString[2] = (String(Player_Difficulty[SaveLoadEvent_PN]))
  • Set Variable Save_IntToString[3] = (Save_IntToString[1] + Save_IntToString[2])
  • Set Variable SaveValue[SaveCount] = (Integer(Save_IntToString[3])
Of course you would use your own variables here instead of those Player_ variables, and you would still use the same technique to avoid overwriting important data like you're doing with difficulty and highest_difficulty.

When loading, you can convert your loaded Integer back into a String and then use Substring to convert the first character into an Integer and the second character into an Integer. This gets us the loaded Mode and Difficulty:
  • Set Variable Save_IntToString[1] = (String(SaveValue[SaveCount]))
  • Set Variable Loaded_Mode_Kotg[SaveLoadEvent_PN] = (Integer(Substring(Save_IntToString[1], 1, 1)))
  • Set Variable Loaded_Difficulty_Kotg[SaveLoadEvent_PN] = (Integer(Substring(Save_IntToString[1], 2, 2)))
We know which hero this data is for based on the order of loading. If Kotg was saved first then Kotg will be loaded last.
 
Last edited:
Level 18
Joined
Mar 16, 2008
Messages
721
thank you! :thumbs_up:

so the system will stay pretty much how it is now, just the current integer is just a single digit for difficulty, now you propose it will be a 12 digit one (4 sets of 3 digits)?
 

Uncle

Warcraft Moderator
Level 64
Joined
Aug 10, 2018
Messages
6,557
thank you! :thumbs_up:

so the system will stay pretty much how it is now, just the current integer is just a single digit for difficulty, now you propose it will be a 12 digit one (4 sets of 3 digits)?
I updated the post.

You'd save four separate SaveValues, each being 2 digit Integers where the 1st digit represents Mode and the second digit represents Difficulty.

So yes, 4 sets of 2 digits. So your triggers will look SOMETHING like this...

Save:
  • -------- PUT YOUR SAVE ACTIONS HERE: --------
  • -------- Keeper of the Grove: --------
  • Set VariableSet SaveCount = (SaveCount + 1)
  • -------- Do the stuff that I suggested --------
  • Set VariableSet SaveMaxValue[SaveCount] = 100
  • -------- --------
  • -------- Demon Hunter: --------
  • Set VariableSet SaveCount = (SaveCount + 1)
  • -------- Do the stuff that I suggested --------
  • Set VariableSet SaveMaxValue[SaveCount] = 100
  • -------- --------
  • -------- Priestess of the Moon: --------
  • Set VariableSet SaveCount = (SaveCount + 1)
  • -------- Do the stuff that I suggested --------
  • Set VariableSet SaveMaxValue[SaveCount] = 100
  • -------- --------
  • -------- Warden: --------
  • Set VariableSet SaveCount = (SaveCount + 1)
  • -------- Do the stuff that I suggested --------
  • Set VariableSet SaveMaxValue[SaveCount] = 100
  • -------- STOP --------
Load:
  • -------- PUT YOUR LOAD ACTIONS HERE (Reverse Order!): --------
  • -------- Warden: --------
  • Set VariableSet SaveCount = (SaveCount + 1)
  • Set VariableSet SaveMaxValue[SaveCount] = 100
  • Custom script: call SaveHelper.GUILoadNext()
  • -------- Do the stuff that I suggested --------
  • -------- --------
  • -------- Priestess of the Moon: --------
  • Set VariableSet SaveCount = (SaveCount + 1)
  • Set VariableSet SaveMaxValue[SaveCount] = 100
  • Custom script: call SaveHelper.GUILoadNext()
  • -------- Do the stuff that I suggested --------
  • -------- --------
  • -------- Demon Hunter: --------
  • Set VariableSet SaveCount = (SaveCount + 1)
  • Set VariableSet SaveMaxValue[SaveCount] = 100
  • Custom script: call SaveHelper.GUILoadNext()
  • -------- Do the stuff that I suggested --------
  • -------- --------
  • -------- Keeper of the Grove: --------
  • Set VariableSet SaveCount = (SaveCount + 1)
  • Set VariableSet SaveMaxValue[SaveCount] = 100
  • Custom script: call SaveHelper.GUILoadNext()
  • -------- Do the stuff that I suggested --------
  • -------- STOP --------
 
Last edited:
Level 18
Joined
Mar 16, 2008
Messages
721
The modes and difficulty are the same for all players. It's like a co-op with up to 8 players.

I thought we weren't using hero specific variables like this? sorry still trying to fully understand this.

  • Set Variable Loaded_Mode_Kotg[SaveLoadEvent_PN] = (Integer(Substring(Save_IntToString[1], 1, 1)))
Not a huge deal right now but wanted to mention the modes aren't really linear like difficulty is, but I suppose we could just treat it as it is, exploration gets more starting time, hardcore takes away hero revive, and standard is just neither of those. so in my mind I thought of them as more parallel game modes but I suppose we could treat them linearly: exploration -> standard -> hardcore, assuming anyone that beats standard could have beat exploration and anyone that beat hardcore could beat the other modes. I suppose I won't worry about this unless another Mode is added that is truly non-linear with the other modes.

I've created the following variables:
  • Save_IntToString (string)
  • Loaded_Mode_Kotg (integer array, size 16, players 1-4 and 13-16 are the slots used)
  • Loaded_Mode_DH (integer array, size 16)
  • Loaded_Mode_Potm (integer array, size 16)
  • Loaded_Mode_Warden (integer array, size 16)
  • Difficulty_Kotg (integer array, size 16)
  • Difficulty_DH (integer array, size 16)
  • Difficulty_Potm (integer array, size 16)
  • Difficulty_Warden (integer array, size 16)
  • Autosave
    • Events
    • Conditions
    • Actions
      • Player Group - Pick every player in (All players) and do (Actions)
        • Loop - Actions
          • Set VariableSet SaveLoadEvent_Player = (Picked player)
          • Set VariableSet SaveLoadEvent_PN = (Player number of SaveLoadEvent_Player)
          • -------- --------
          • Set VariableSet SaveCount = 0
          • -------- --------
          • Custom script: call DisplayTextToPlayer(GetTriggerPlayer(), 0, 0, "Saved " + User[udg_SaveLoadEvent_Player].nameColored)
          • -------- --------
          • -------- --------
          • -------- PUT YOUR SAVE ACTIONS HERE: --------
          • -------- Keeper of the Grove: --------
          • Set VariableSet SaveCount = (SaveCount + 1)
          • -------- Do the things Uncle suggested --------
          • Set VariableSet Save_IntToString[1] = (String(mode_setting))
          • Set VariableSet Save_IntToString[2] = (String(difficulty_setting))
          • Set VariableSet Save_IntToString[3] = (Save_IntToString[1] + Save_IntToString[2])
          • Set VariableSet SaveMaxValue[SaveCount] = 100
          • -------- --------
          • -------- Demon Hunter: --------
          • Set VariableSet SaveCount = (SaveCount + 1)
          • -------- Do the things Uncle suggested --------
          • Set VariableSet Save_IntToString[1] = (String(mode_setting))
          • Set VariableSet Save_IntToString[2] = (String(difficulty_setting))
          • Set VariableSet Save_IntToString[3] = (Save_IntToString[1] + Save_IntToString[2])
          • Set VariableSet SaveMaxValue[SaveCount] = 100
          • -------- --------
          • -------- Priestess of the Moon: --------
          • Set VariableSet SaveCount = (SaveCount + 1)
          • -------- Do the things Uncle suggested --------
          • Set VariableSet Save_IntToString[1] = (String(mode_setting))
          • Set VariableSet Save_IntToString[2] = (String(difficulty_setting))
          • Set VariableSet Save_IntToString[3] = (Save_IntToString[1] + Save_IntToString[2])
          • Set VariableSet SaveMaxValue[SaveCount] = 100
          • -------- --------
          • -------- Warden: --------
          • Set VariableSet SaveCount = (SaveCount + 1)
          • -------- Do the things Uncle suggested --------
          • Set VariableSet Save_IntToString[1] = (String(mode_setting))
          • Set VariableSet Save_IntToString[2] = (String(difficulty_setting))
          • Set VariableSet Save_IntToString[3] = (Save_IntToString[1] + Save_IntToString[2])
          • Set VariableSet SaveMaxValue[SaveCount] = 100
          • -------- --------
          • -------- STOP --------
          • -------- --------
          • -------- --------
          • -------- 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(udg_SaveLoadEvent_Player, 1)
          • Custom script: call SaveFile.create(udg_SaveLoadEvent_Player, "Save", 1, udg_SaveTempString)

  • Load Event
    • Events
      • Game - SaveLoadEvent becomes Equal to 1.00
    • Conditions
    • Actions
      • -------- Validate: --------
      • Set VariableSet SaveCount = 0
      • 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)
      • -------- --------
      • -------- --------
      • -------- PUT YOUR LOAD ACTIONS HERE (Reverse Order): --------
      • -------- Warden: --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 100
      • Custom script: call SaveHelper.GUILoadNext()
      • -------- Do the stuff that Uncle suggested --------
      • Set VariableSet Save_IntToString[1] = (String(SaveValue[SaveCount]))
      • Set VariableSet Loaded_Mode_Warden[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 1, 1))))
      • Set VariableSet Loaded_Difficulty_Warden[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 2, 2))))
      • -------- --------
      • -------- Priestess of the Moon: --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 100
      • Custom script: call SaveHelper.GUILoadNext()
      • -------- Do the stuff that Uncle suggested --------
      • Set VariableSet Save_IntToString[1] = (String(SaveValue[SaveCount]))
      • Set VariableSet Loaded_Mode_Potm[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 1, 1))))
      • Set VariableSet Loaded_Difficulty_Potm[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 2, 2))))
      • -------- --------
      • -------- Demon Hunter: --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 100
      • Custom script: call SaveHelper.GUILoadNext()
      • -------- Do the stuff that Uncle suggested --------
      • Set VariableSet Save_IntToString[1] = (String(SaveValue[SaveCount]))
      • Set VariableSet Loaded_Mode_Kotg[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 1, 1))))
      • Set VariableSet Loaded_Difficulty_Kotg[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 2, 2))))
      • -------- --------
      • -------- Keeper of the Grove: --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 100
      • Custom script: call SaveHelper.GUILoadNext()
      • -------- Do the stuff that Uncle suggested --------
      • Set VariableSet Save_IntToString[1] = (String(SaveValue[SaveCount]))
      • Set VariableSet Loaded_Mode_DH[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 1, 1))))
      • Set VariableSet Loaded_Difficulty_DH[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 2, 2))))
      • Game - Display to (Player group(SaveLoadEvent_Player)) for 30.00 seconds the text: (Prestige Loaded: + difficulty_string[highest_difficulty_victory[(Player number of SaveLoadEvent_Player)]])
      • -------- STOP --------
      • -------- --------
      • -------- --------
      • Custom script: call Savecode(udg_SaveTempInt).destroy()

Where should I put there condition to where if their victory settings are higher or lower than their save?
 
Last edited:

Uncle

Warcraft Moderator
Level 64
Joined
Aug 10, 2018
Messages
6,557
You aren't actually saving anything, you forgot this:
  • Set Variable SaveValue[SaveCount] = (Integer(Save_IntToString[3])
Also, you aren't accounting for the highest difficulty stuff in your save trigger, if you still intend to do so.

Plus you'll want to account for which hero you're currently playing, since that's the ONLY hero that should receive new save data. The other three heroes shouldn't get new save data, but the system requires that you save EVERYTHING regardless. So for them you just save their previously loaded data.

Here's an example of saving:
  • -------- Keeper of the Grove: --------
  • Set VariableSet SaveCount = (SaveCount + 1)
  • Set VariableSet SaveMaxValue[SaveCount] = 100
  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • Player_Hero_Type[SaveLoadEvent_PN] Equal to Keeper of the Grove
    • Then - Actions
      • Set VariableSet Save_IntToString[1] = (String(mode_setting))
      • Set VariableSet Save_IntToString[2] = (String(difficulty_setting))
      • Set VariableSet Save_IntToString[3] = (Save_IntToString[1] + Save_IntToString[2])
      • Set VariableSet SaveValue[SaveCount] = (Integer(Save_IntToString[3])
    • Else - Actions
      • Set VariableSet SaveValue[SaveCount] = Loaded_Kotg[SaveLoadEvent_PN]
Note that I introduced a new Load variable you'll want to incorporate for each Hero. This one stores the full two digit Integer instead of separating it.

So you'll want to add one of these variables for each Hero in your Load trigger:
  • Set VariableSet Loaded_Mode_Kotg[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 1, 1))))
  • Set VariableSet Loaded_Difficulty_Kotg[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 2, 2))))
  • Set VariableSet Loaded_Kotg[SaveLoadEvent_PN] = (Integer(Save_IntToString[1]))
Player_Hero_Type is a Unit-Type array variable which tracks the Unit-type of each player's Hero. You most likely have a way of accessing this data already, so you may not need to create a new variable for this. The If - Condition just needs to confirm that you're actually playing the given Hero.
 
Last edited:
Level 18
Joined
Mar 16, 2008
Messages
721
Ok do you think the conditions here will work to so only victories of a higher difficulty/mode will be saved?
  • ... --------
  • -------- PUT YOUR SAVE ACTIONS HERE: --------
  • -------- Keeper of the Grove: --------
  • Set VariableSet SaveCount = (SaveCount + 1)
  • Set VariableSet SaveMaxValue[SaveCount] = 100
  • -------- Do the things Uncle suggested --------
  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • Player_Hero_Type[SaveLoadEvent_PN] Equal to Keeper of the Grove
    • Then - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • mode_setting Greater than Loaded_Mode_Kotg[SaveLoadEvent_PN]
        • Then - Actions
          • Set VariableSet Save_IntToString[2] = (String(Loaded_Mode_Kotg[SaveLoadEvent_PN]))
        • Else - Actions
          • Set VariableSet Save_IntToString[1] = (String(mode_setting))
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • difficulty_setting Greater than Loaded_Difficulty_Kotg[SaveLoadEvent_PN]
        • Then - Actions
          • Set VariableSet Save_IntToString[2] = (String(Loaded_Difficulty_Kotg[SaveLoadEvent_PN]))
        • Else - Actions
          • Set VariableSet Save_IntToString[2] = (String(difficulty_setting))
      • Set VariableSet Save_IntToString[3] = (Save_IntToString[1] + Save_IntToString[2])
      • Set VariableSet SaveValue[SaveCount] = (Integer(Save_IntToString[3]))
    • Else - Actions
  • -------- --------
  • ...

Also I'm still unfortunately confused about "So you'll want to add one of these variables for each Hero in your Load trigger"
  • Load Event
    • Events
      • Game - SaveLoadEvent becomes Equal to 1.00
    • Conditions
    • Actions
      • -------- Validate: --------
      • Set VariableSet SaveCount = 0
      • 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)
      • -------- --------
      • -------- --------
      • -------- PUT YOUR LOAD ACTIONS HERE (Reverse Order): --------
      • -------- Warden: --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 100
      • Custom script: call SaveHelper.GUILoadNext()
      • -------- Do the stuff that Uncle suggested --------
      • Set VariableSet Save_IntToString[1] = (String(SaveValue[SaveCount]))
      • Set VariableSet Loaded_Mode_Warden[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 1, 1))))
      • Set VariableSet Loaded_Difficulty_Warden[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 2, 2))))
      • -------- --------
      • -------- Priestess of the Moon: --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 100
      • Custom script: call SaveHelper.GUILoadNext()
      • -------- Do the stuff that Uncle suggested --------
      • Set VariableSet Save_IntToString[1] = (String(SaveValue[SaveCount]))
      • Set VariableSet Loaded_Mode_Potm[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 1, 1))))
      • Set VariableSet Loaded_Difficulty_Potm[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 2, 2))))
      • -------- --------
      • -------- Demon Hunter: --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 100
      • Custom script: call SaveHelper.GUILoadNext()
      • -------- Do the stuff that Uncle suggested --------
      • Set VariableSet Save_IntToString[1] = (String(SaveValue[SaveCount]))
      • Set VariableSet Loaded_Mode_DH[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 1, 1))))
      • Set VariableSet Loaded_Difficulty_DH[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 2, 2))))
      • -------- --------
      • -------- Keeper of the Grove: --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 100
      • Custom script: call SaveHelper.GUILoadNext()
      • -------- Do the stuff that Uncle suggested --------
      • Set VariableSet Save_IntToString[1] = (String(SaveValue[SaveCount]))
      • Set VariableSet Loaded_Mode_DH[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 1, 1))))
      • Set VariableSet Loaded_Difficulty_DH[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 2, 2))))
      • Game - Display to (Player group(SaveLoadEvent_Player)) for 30.00 seconds the text: (Prestige Loaded: + difficulty_string[highest_difficulty_victory[(Player number of SaveLoadEvent_Player)]])
      • -------- STOP --------
      • -------- --------
      • -------- --------
      • Custom script: call Savecode(udg_SaveTempInt).destroy()
 
Last edited:

Uncle

Warcraft Moderator
Level 64
Joined
Aug 10, 2018
Messages
6,557
1) In the Save trigger, you're using the wrong [index], it should be [1] not [2] for the mode:
  • Set VariableSet Save_IntToString[2] = (String(Loaded_Mode_Kotg[SaveLoadEvent_PN]))
2) Create four new Loaded_ variables. These will store the 2 digit Integer for each Hero:

Loaded_Kotg
Loaded_DH
Loaded_Potm
Loaded_Warden

3) Insert these four new variables into your Load trigger like you see being done in my example. These are meant to go along with the other Loaded_ variables.

3) Go back to your Save trigger and in the Else - Actions part you want to add this:
  • Else - Actions
    • Set VariableSet SaveValue[SaveCount] = Loaded_Kotg
Remember to reference the variable that matches the current Hero being saved.

So the logic is simple:

Are you playing the Kotg? If true, go through the longer save process and make the necessary checks so you don't save a lower difficulty setting. If false, save the loaded data (if you never loaded anything then it'll simply save the default value of 0 which is fine).
 
Last edited:
Level 18
Joined
Mar 16, 2008
Messages
721
2) Create four new Loaded_ variables. These will store the 2 digit Integer for each Hero:

Loaded_Kotg
Loaded_DH
Loaded_Potm
Loaded_Warden
Will these variables need to be arrays for all 8 players?

I'm confused how this will save previously loaded data.

I'm pretty much utterly confused and just doing what you suggest.

  • Autosave
    • Events
    • Conditions
    • Actions
      • Player Group - Pick every player in (All players) and do (Actions)
        • Loop - Actions
          • Set VariableSet SaveLoadEvent_Player = (Picked player)
          • Set VariableSet SaveLoadEvent_PN = (Player number of SaveLoadEvent_Player)
          • -------- --------
          • Set VariableSet SaveCount = 0
          • -------- --------
          • Custom script: call DisplayTextToPlayer(GetTriggerPlayer(), 0, 0, "Saved " + User[udg_SaveLoadEvent_Player].nameColored)
          • -------- --------
          • -------- --------
          • -------- PUT YOUR SAVE ACTIONS HERE: --------
          • -------- KEEPER OF THE GROVE: --------
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Set VariableSet SaveMaxValue[SaveCount] = 100
          • -------- Do the things Uncle suggested --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Player_Hero_Type[SaveLoadEvent_PN] Equal to Keeper of the Grove
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • mode_setting Greater than Loaded_Mode_Kotg[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[1] = (String(Loaded_Mode_Kotg[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[1] = (String(mode_setting))
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • difficulty_setting Greater than Loaded_Difficulty_Kotg[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[2] = (String(Loaded_Difficulty_Kotg[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[2] = (String(difficulty_setting))
              • Set VariableSet Save_IntToString[3] = (Save_IntToString[1] + Save_IntToString[2])
              • Set VariableSet SaveValue[SaveCount] = (Integer(Save_IntToString[3]))
            • Else - Actions
              • Set VariableSet SaveValue[SaveCount] = Loaded_Kotg[SaveLoadEvent_PN]
          • -------- --------
          • -------- DEMON HUNTER: --------
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Set VariableSet SaveMaxValue[SaveCount] = 100
          • -------- Do the things Uncle suggested --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Player_Hero_Type[SaveLoadEvent_PN] Equal to Demon Hunter
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • mode_setting Greater than Loaded_Mode_DH[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[1] = (String(Loaded_Mode_DH[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[1] = (String(mode_setting))
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • difficulty_setting Greater than Loaded_Difficulty_DH[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[2] = (String(Loaded_Difficulty_DH[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[2] = (String(difficulty_setting))
              • Set VariableSet Save_IntToString[3] = (Save_IntToString[1] + Save_IntToString[2])
              • Set VariableSet SaveValue[SaveCount] = (Integer(Save_IntToString[3]))
            • Else - Actions
              • Set VariableSet SaveValue[SaveCount] = Loaded_DH[SaveLoadEvent_PN]
          • Set VariableSet Save_IntToString[3] = (Save_IntToString[1] + Save_IntToString[2])
          • Set VariableSet SaveValue[SaveCount] = (Integer(Save_IntToString[3]))
          • -------- --------
          • -------- PRIESTESS OF THE MOON: --------
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Set VariableSet SaveMaxValue[SaveCount] = 100
          • -------- Do the things Uncle suggested --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Player_Hero_Type[SaveLoadEvent_PN] Equal to Priestess of the Moon
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • mode_setting Greater than Loaded_Mode_Potm[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[1] = (String(Loaded_Mode_Potm[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[1] = (String(mode_setting))
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • difficulty_setting Greater than Loaded_Difficulty_Potm[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[2] = (String(Loaded_Difficulty_Potm[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[2] = (String(difficulty_setting))
              • Set VariableSet Save_IntToString[3] = (Save_IntToString[1] + Save_IntToString[2])
              • Set VariableSet SaveValue[SaveCount] = (Integer(Save_IntToString[3]))
            • Else - Actions
              • Set VariableSet SaveValue[SaveCount] = Loaded_Potm[SaveLoadEvent_PN]
          • Set VariableSet Save_IntToString[3] = (Save_IntToString[1] + Save_IntToString[2])
          • Set VariableSet SaveValue[SaveCount] = (Integer(Save_IntToString[3]))
          • -------- --------
          • -------- Warden: --------
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Set VariableSet SaveMaxValue[SaveCount] = 100
          • -------- Do the things Uncle suggested --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Player_Hero_Type[SaveLoadEvent_PN] Equal to Warden (NPC)
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • mode_setting Greater than Loaded_Mode_Warden[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[1] = (String(Loaded_Mode_Warden[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[1] = (String(mode_setting))
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • difficulty_setting Greater than Loaded_Difficulty_Warden[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[2] = (String(Loaded_Difficulty_Warden[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[2] = (String(difficulty_setting))
              • Set VariableSet Save_IntToString[3] = (Save_IntToString[1] + Save_IntToString[2])
              • Set VariableSet SaveValue[SaveCount] = (Integer(Save_IntToString[3]))
            • Else - Actions
              • Set VariableSet SaveValue[SaveCount] = Loaded_Warden[SaveLoadEvent_PN]
          • Set VariableSet Save_IntToString[3] = (Save_IntToString[1] + Save_IntToString[2])
          • Set VariableSet SaveValue[SaveCount] = (Integer(Save_IntToString[3]))
          • -------- --------
          • -------- STOP --------
          • -------- --------
          • -------- --------
          • -------- 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(udg_SaveLoadEvent_Player, 1)
          • Custom script: call SaveFile.create(udg_SaveLoadEvent_Player, "Save", 1, udg_SaveTempString)

  • Load Event
    • Events
      • Game - SaveLoadEvent becomes Equal to 1.00
    • Conditions
    • Actions
      • -------- Validate: --------
      • Set VariableSet SaveCount = 0
      • 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)
      • -------- --------
      • -------- --------
      • -------- PUT YOUR LOAD ACTIONS HERE (Reverse Order): --------
      • -------- Warden: --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 100
      • Custom script: call SaveHelper.GUILoadNext()
      • -------- Do the stuff that Uncle suggested --------
      • Set VariableSet Save_IntToString[1] = (String(SaveValue[SaveCount]))
      • Set VariableSet Loaded_Mode_Warden[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 1, 1))))
      • Set VariableSet Loaded_Difficulty_Warden[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 2, 2))))
      • Set VariableSet Loaded_Warden[SaveLoadEvent_PN] = (Integer(Save_IntToString[1]))
      • -------- --------
      • -------- Priestess of the Moon: --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 100
      • Custom script: call SaveHelper.GUILoadNext()
      • -------- Do the stuff that Uncle suggested --------
      • Set VariableSet Save_IntToString[1] = (String(SaveValue[SaveCount]))
      • Set VariableSet Loaded_Mode_Potm[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 1, 1))))
      • Set VariableSet Loaded_Difficulty_Potm[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 2, 2))))
      • Set VariableSet Loaded_Potm[SaveLoadEvent_PN] = (Integer(Save_IntToString[1]))
      • -------- --------
      • -------- Demon Hunter: --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 100
      • Custom script: call SaveHelper.GUILoadNext()
      • -------- Do the stuff that Uncle suggested --------
      • Set VariableSet Save_IntToString[1] = (String(SaveValue[SaveCount]))
      • Set VariableSet Loaded_Mode_DH[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 1, 1))))
      • Set VariableSet Loaded_Difficulty_DH[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 2, 2))))
      • Set VariableSet Loaded_DH[SaveLoadEvent_PN] = (Integer(Save_IntToString[1]))
      • -------- --------
      • -------- Keeper of the Grove: --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 100
      • Custom script: call SaveHelper.GUILoadNext()
      • -------- Do the stuff that Uncle suggested --------
      • Set VariableSet Save_IntToString[1] = (String(SaveValue[SaveCount]))
      • Set VariableSet Loaded_Mode_DH[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 1, 1))))
      • Set VariableSet Loaded_Difficulty_DH[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 2, 2))))
      • Set VariableSet Loaded_Kotg[SaveLoadEvent_PN] = (Integer(Save_IntToString[1]))
      • Game - Display to (Player group(SaveLoadEvent_Player)) for 30.00 seconds the text: (Prestige Loaded: + difficulty_string[highest_difficulty_victory[(Player number of SaveLoadEvent_Player)]])
      • -------- STOP --------
      • -------- --------
      • -------- --------
      • Custom script: call Savecode(udg_SaveTempInt).destroy()

So if these are working or close to it, what would the integer comparison look like to reference the data?
 
Last edited:
Level 18
Joined
Mar 16, 2008
Messages
721
Looks like you've got it figured out, glossing over it I don't see any minor mistakes either. Have you tested it out yet?
Not sure how to test without understanding what integer comparison I need to use to reference the loaded data.

So if I want to check if a player generally beat Heroic with any hero, I would need to reference the 2nd digit of ...what variable?
 

Uncle

Warcraft Moderator
Level 64
Joined
Aug 10, 2018
Messages
6,557
Your load trigger fills the player's Loaded_ variables with the loaded data. Once that's done you have access to Integers that represent their highest difficulty and highest mode completed for each Hero-Type.

The variables are named after what they track.

So you know that Loaded_Difficulty_Warden[] will represent a Difficulty from 1 to 6 that the Warden has completed. This value is stored for each Player with the Player Number acting as the [index]. Loaded_Difficulty_Warden_Difficulty[2] = Player 2's Warden Difficulty.


Also, I found mistakes in your Save trigger.

You're still Setting the Save_Int and SaveValue after the If Then Else:
  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
  • Set VariableSet Save_IntToString[3] = (Save_IntToString[1] + Save_IntToString[2]) <-- delete
  • Set VariableSet SaveValue[SaveCount] = (Integer(Save_IntToString[3])) <-- delete
Delete those two lines lines after each If Then Else. These overwrite everything that you're doing in the If Then Else and make it meaningless.
 
Last edited:
Level 18
Joined
Mar 16, 2008
Messages
721
Thank you for babying me through this. I deleted those two lines (x4 for each hero conditional).
So we're not using udg_Save_IntToString[3] to compile all the strings? or that was the idea before you separated by hero?

Just to make sure I'm understanding, for player red we'll reference
Loaded_DH[1]
Loaded_Kotg[1]
...

These will each have two digits, the first will be what mode, second digit will be difficulty
So red player's Heroic Hardcore Demon Hunter victory would be Loaded_DH[1] = 33
or if I want care about difficulty then I can check if any Loaded_... has the second digit >= 3

I'll try some tests out now.

[testing]
 
Last edited:

Uncle

Warcraft Moderator
Level 64
Joined
Aug 10, 2018
Messages
6,557
You're still using Save_IntToString[3] inside of the If Then Else statements.

Anyway, it's really simple. You have three variables to work with (per Hero):

Loaded_Difficulty_Hero[]
Loaded_Mode_Hero[]
Loaded_Hero[]

All of these contain different loaded data. Reference the one you need (hint: you probably won't use Loaded_Hero).
 
Last edited:
Level 18
Joined
Mar 16, 2008
Messages
721
I didn't update the post with the deletion, but here's what I'm going to test:

  • Autosave
    • Events
    • Conditions
    • Actions
      • Player Group - Pick every player in (All players) and do (Actions)
        • Loop - Actions
          • Set VariableSet SaveLoadEvent_Player = (Picked player)
          • Set VariableSet SaveLoadEvent_PN = (Player number of SaveLoadEvent_Player)
          • -------- --------
          • Set VariableSet SaveCount = 0
          • -------- --------
          • Custom script: call DisplayTextToPlayer(GetTriggerPlayer(), 0, 0, "Saved " + User[udg_SaveLoadEvent_Player].nameColored)
          • -------- --------
          • -------- --------
          • -------- PUT YOUR SAVE ACTIONS HERE: --------
          • -------- KEEPER OF THE GROVE: --------
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Set VariableSet SaveMaxValue[SaveCount] = 100
          • -------- Do the things Uncle suggested --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Player_Hero_Type[SaveLoadEvent_PN] Equal to Keeper of the Grove
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • mode_setting Greater than Loaded_Mode_Kotg[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[1] = (String(Loaded_Mode_Kotg[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[1] = (String(mode_setting))
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • difficulty_setting Greater than Loaded_Difficulty_Kotg[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[2] = (String(Loaded_Difficulty_Kotg[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[2] = (String(difficulty_setting))
            • Else - Actions
              • Set VariableSet SaveValue[SaveCount] = Loaded_Kotg[SaveLoadEvent_PN]
          • -------- --------
          • -------- DEMON HUNTER: --------
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Set VariableSet SaveMaxValue[SaveCount] = 100
          • -------- Do the things Uncle suggested --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Player_Hero_Type[SaveLoadEvent_PN] Equal to Demon Hunter
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • mode_setting Greater than Loaded_Mode_DH[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[1] = (String(Loaded_Mode_DH[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[1] = (String(mode_setting))
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • difficulty_setting Greater than Loaded_Difficulty_DH[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[2] = (String(Loaded_Difficulty_DH[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[2] = (String(difficulty_setting))
            • Else - Actions
              • Set VariableSet SaveValue[SaveCount] = Loaded_DH[SaveLoadEvent_PN]
          • Set VariableSet Save_IntToString[3] = (Save_IntToString[1] + Save_IntToString[2])
          • Set VariableSet SaveValue[SaveCount] = (Integer(Save_IntToString[3]))
          • -------- --------
          • -------- PRIESTESS OF THE MOON: --------
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Set VariableSet SaveMaxValue[SaveCount] = 100
          • -------- Do the things Uncle suggested --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Player_Hero_Type[SaveLoadEvent_PN] Equal to Priestess of the Moon
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • mode_setting Greater than Loaded_Mode_Potm[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[1] = (String(Loaded_Mode_Potm[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[1] = (String(mode_setting))
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • difficulty_setting Greater than Loaded_Difficulty_Potm[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[2] = (String(Loaded_Difficulty_Potm[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[2] = (String(difficulty_setting))
            • Else - Actions
              • Set VariableSet SaveValue[SaveCount] = Loaded_Potm[SaveLoadEvent_PN]
          • Set VariableSet Save_IntToString[3] = (Save_IntToString[1] + Save_IntToString[2])
          • Set VariableSet SaveValue[SaveCount] = (Integer(Save_IntToString[3]))
          • -------- --------
          • -------- Warden: --------
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Set VariableSet SaveMaxValue[SaveCount] = 100
          • -------- Do the things Uncle suggested --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Player_Hero_Type[SaveLoadEvent_PN] Equal to Warden (NPC)
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • mode_setting Greater than Loaded_Mode_Warden[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[1] = (String(Loaded_Mode_Warden[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[1] = (String(mode_setting))
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • difficulty_setting Greater than Loaded_Difficulty_Warden[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[2] = (String(Loaded_Difficulty_Warden[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[2] = (String(difficulty_setting))
            • Else - Actions
              • Set VariableSet SaveValue[SaveCount] = Loaded_Warden[SaveLoadEvent_PN]
          • Set VariableSet Save_IntToString[3] = (Save_IntToString[1] + Save_IntToString[2])
          • Set VariableSet SaveValue[SaveCount] = (Integer(Save_IntToString[3]))
          • -------- --------
          • -------- STOP --------
          • -------- --------
          • -------- --------
          • -------- 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(udg_SaveLoadEvent_Player, 1)
          • Custom script: call SaveFile.create(udg_SaveLoadEvent_Player, "Save", 1, udg_SaveTempString)
 

Uncle

Warcraft Moderator
Level 64
Joined
Aug 10, 2018
Messages
6,557
Well, you deleted the SaveValue and Save_IntToString[3] variables from the If Then Else so it's not going to work. I just wanted you to delete these two lines AFTER the If Then Else (below it).

If you look at your previous Autosave trigger, you did it correctly for Kotg but failed on the other three heroes.
 
Level 18
Joined
Mar 16, 2008
Messages
721
Ok fixing that now. Thanks.

  • Autosave
    • Events
    • Conditions
    • Actions
      • Player Group - Pick every player in (All players) and do (Actions)
        • Loop - Actions
          • Set VariableSet SaveLoadEvent_Player = (Picked player)
          • Set VariableSet SaveLoadEvent_PN = (Player number of SaveLoadEvent_Player)
          • -------- --------
          • Set VariableSet SaveCount = 0
          • -------- --------
          • Custom script: call DisplayTextToPlayer(GetTriggerPlayer(), 0, 0, "Saved " + User[udg_SaveLoadEvent_Player].nameColored)
          • -------- --------
          • -------- --------
          • -------- PUT YOUR SAVE ACTIONS HERE: --------
          • -------- KEEPER OF THE GROVE: --------
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Set VariableSet SaveMaxValue[SaveCount] = 100
          • -------- Do the things Uncle suggested --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Player_Hero_Type[SaveLoadEvent_PN] Equal to Keeper of the Grove
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • mode_setting Greater than Loaded_Mode_Kotg[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[1] = (String(Loaded_Mode_Kotg[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[1] = (String(mode_setting))
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • difficulty_setting Greater than Loaded_Difficulty_Kotg[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[2] = (String(Loaded_Difficulty_Kotg[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[2] = (String(difficulty_setting))
              • Set VariableSet Save_IntToString[3] = (Save_IntToString[1] + Save_IntToString[2])
              • Set VariableSet SaveValue[SaveCount] = (Integer(Save_IntToString[3]))
            • Else - Actions
              • Set VariableSet SaveValue[SaveCount] = Loaded_Kotg[SaveLoadEvent_PN]
          • -------- --------
          • -------- DEMON HUNTER: --------
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Set VariableSet SaveMaxValue[SaveCount] = 100
          • -------- Do the things Uncle suggested --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Player_Hero_Type[SaveLoadEvent_PN] Equal to Demon Hunter
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • mode_setting Greater than Loaded_Mode_DH[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[1] = (String(Loaded_Mode_DH[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[1] = (String(mode_setting))
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • difficulty_setting Greater than Loaded_Difficulty_DH[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[2] = (String(Loaded_Difficulty_DH[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[2] = (String(difficulty_setting))
              • Set VariableSet Save_IntToString[3] = (Save_IntToString[1] + Save_IntToString[2])
              • Set VariableSet SaveValue[SaveCount] = (Integer(Save_IntToString[3]))
            • Else - Actions
              • Set VariableSet SaveValue[SaveCount] = Loaded_DH[SaveLoadEvent_PN]
          • -------- --------
          • -------- PRIESTESS OF THE MOON: --------
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Set VariableSet SaveMaxValue[SaveCount] = 100
          • -------- Do the things Uncle suggested --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Player_Hero_Type[SaveLoadEvent_PN] Equal to Priestess of the Moon
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • mode_setting Greater than Loaded_Mode_Potm[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[1] = (String(Loaded_Mode_Potm[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[1] = (String(mode_setting))
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • difficulty_setting Greater than Loaded_Difficulty_Potm[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[2] = (String(Loaded_Difficulty_Potm[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[2] = (String(difficulty_setting))
              • Set VariableSet Save_IntToString[3] = (Save_IntToString[1] + Save_IntToString[2])
              • Set VariableSet SaveValue[SaveCount] = (Integer(Save_IntToString[3]))
            • Else - Actions
              • Set VariableSet SaveValue[SaveCount] = Loaded_Potm[SaveLoadEvent_PN]
          • Set VariableSet Save_IntToString[3] = (Save_IntToString[1] + Save_IntToString[2])
          • Set VariableSet SaveValue[SaveCount] = (Integer(Save_IntToString[3]))
          • -------- --------
          • -------- Warden: --------
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Set VariableSet SaveMaxValue[SaveCount] = 100
          • -------- Do the things Uncle suggested --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Player_Hero_Type[SaveLoadEvent_PN] Equal to Warden (NPC)
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • mode_setting Greater than Loaded_Mode_Warden[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[1] = (String(Loaded_Mode_Warden[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[1] = (String(mode_setting))
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • difficulty_setting Greater than Loaded_Difficulty_Warden[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[2] = (String(Loaded_Difficulty_Warden[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[2] = (String(difficulty_setting))
              • Set VariableSet Save_IntToString[3] = (Save_IntToString[1] + Save_IntToString[2])
              • Set VariableSet SaveValue[SaveCount] = (Integer(Save_IntToString[3]))
            • Else - Actions
              • Set VariableSet SaveValue[SaveCount] = Loaded_Warden[SaveLoadEvent_PN]
          • Set VariableSet Save_IntToString[3] = (Save_IntToString[1] + Save_IntToString[2])
          • Set VariableSet SaveValue[SaveCount] = (Integer(Save_IntToString[3]))
          • -------- --------
          • -------- STOP --------
          • -------- --------
          • -------- --------
          • -------- 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(udg_SaveLoadEvent_Player, 1)
          • Custom script: call SaveFile.create(udg_SaveLoadEvent_Player, "Save", 1, udg_SaveTempString)

Do you think this would work for checking if they player beat Easy with ANY hero?
  • ...
  • Or - Any (Conditions) are true
    • Conditions
      • Loaded_Difficulty_DH[(Integer B)] Greater than or equal to 1
      • Loaded_Difficulty_Kotg[(Integer B)] Greater than or equal to 1
      • Loaded_Difficulty_Potm[(Integer B)] Greater than or equal to 1
      • Loaded_Difficulty_Warden[(Integer B)] Greater than or equal to 1
  • ...
Update: I think it's working because it said it loaded the player, but I'm referencing the data the wrong way so I can't really tell 100%.
 
Last edited:
Level 18
Joined
Mar 16, 2008
Messages
721
For some reason it won't load the Easy Rewards. I just tested and "beat" the map on easy. It auto loaded my LAN name at the start but then failed to pass this condition it seems:

  • ...
  • Or - Any (Conditions) are true
    • Conditions
      • Loaded_Difficulty_DH[(Integer B)] Greater than or equal to 1
      • Loaded_Difficulty_Kotg[(Integer B)] Greater than or equal to 1
      • Loaded_Difficulty_Potm[(Integer B)] Greater than or equal to 1
      • Loaded_Difficulty_Warden[(Integer B)] Greater than or equal to 1
  • ...
  • Autoload
    • Events
      • Time - Elapsed game time is 4.00 seconds
    • Conditions
    • Actions
      • Player Group - Pick every player in players_grp and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ((Picked player) slot status) Equal to Is playing
            • Then - Actions
              • Set VariableSet SaveLoadEvent_Player = (Picked player)
              • Set VariableSet SaveLoadEvent_PN = (Player number of SaveLoadEvent_Player)
              • -------- ------------------- --------
              • -------- This runs the Event used in Load Event and tells it to load Save Slot 1 --------
              • Custom script: call LoadSaveSlot(udg_SaveLoadEvent_Player, 1)
            • Else - Actions
  • Load Event
    • Events
      • Game - SaveLoadEvent becomes Equal to 1.00
    • Conditions
    • Actions
      • -------- Validate: --------
      • Set VariableSet SaveCount = 0
      • 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)
      • -------- --------
      • -------- --------
      • -------- PUT YOUR LOAD ACTIONS HERE (Reverse Order): --------
      • -------- Warden: --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 100
      • Custom script: call SaveHelper.GUILoadNext()
      • -------- Do the stuff that Uncle suggested --------
      • Set VariableSet Save_IntToString[1] = (String(SaveValue[SaveCount]))
      • Set VariableSet Loaded_Mode_Warden[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 1, 1))))
      • Set VariableSet Loaded_Difficulty_Warden[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 2, 2))))
      • Set VariableSet Loaded_Warden[SaveLoadEvent_PN] = (Integer(Save_IntToString[1]))
      • -------- --------
      • -------- Priestess of the Moon: --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 100
      • Custom script: call SaveHelper.GUILoadNext()
      • -------- Do the stuff that Uncle suggested --------
      • Set VariableSet Save_IntToString[1] = (String(SaveValue[SaveCount]))
      • Set VariableSet Loaded_Mode_Potm[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 1, 1))))
      • Set VariableSet Loaded_Difficulty_Potm[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 2, 2))))
      • Set VariableSet Loaded_Potm[SaveLoadEvent_PN] = (Integer(Save_IntToString[1]))
      • -------- --------
      • -------- Demon Hunter: --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 100
      • Custom script: call SaveHelper.GUILoadNext()
      • -------- Do the stuff that Uncle suggested --------
      • Set VariableSet Save_IntToString[1] = (String(SaveValue[SaveCount]))
      • Set VariableSet Loaded_Mode_DH[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 1, 1))))
      • Set VariableSet Loaded_Difficulty_DH[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 2, 2))))
      • Set VariableSet Loaded_DH[SaveLoadEvent_PN] = (Integer(Save_IntToString[1]))
      • -------- --------
      • -------- Keeper of the Grove: --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 100
      • Custom script: call SaveHelper.GUILoadNext()
      • -------- Do the stuff that Uncle suggested --------
      • Set VariableSet Save_IntToString[1] = (String(SaveValue[SaveCount]))
      • Set VariableSet Loaded_Mode_DH[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 1, 1))))
      • Set VariableSet Loaded_Difficulty_DH[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 2, 2))))
      • Set VariableSet Loaded_Kotg[SaveLoadEvent_PN] = (Integer(Save_IntToString[1]))
      • Game - Display to (Player group(SaveLoadEvent_Player)) for 30.00 seconds the text: (Prestige Loaded: + difficulty_string[highest_difficulty_victory[(Player number of SaveLoadEvent_Player)]])
      • -------- STOP --------
      • -------- --------
      • -------- --------
      • Custom script: call Savecode(udg_SaveTempInt).destroy()
  • Autosave
    • Events
    • Conditions
    • Actions
      • Player Group - Pick every player in (All players) and do (Actions)
        • Loop - Actions
          • Set VariableSet SaveLoadEvent_Player = (Picked player)
          • Set VariableSet SaveLoadEvent_PN = (Player number of SaveLoadEvent_Player)
          • -------- --------
          • Set VariableSet SaveCount = 0
          • -------- --------
          • Custom script: call DisplayTextToPlayer(GetTriggerPlayer(), 0, 0, "Saved " + User[udg_SaveLoadEvent_Player].nameColored)
          • -------- --------
          • -------- --------
          • -------- PUT YOUR SAVE ACTIONS HERE: --------
          • -------- KEEPER OF THE GROVE: --------
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Set VariableSet SaveMaxValue[SaveCount] = 100
          • -------- Do the things Uncle suggested --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Player_Hero_Type[SaveLoadEvent_PN] Equal to Keeper of the Grove
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • mode_setting Greater than Loaded_Mode_Kotg[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[1] = (String(Loaded_Mode_Kotg[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[1] = (String(mode_setting))
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • difficulty_setting Greater than Loaded_Difficulty_Kotg[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[2] = (String(Loaded_Difficulty_Kotg[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[2] = (String(difficulty_setting))
              • Set VariableSet Save_IntToString[3] = (Save_IntToString[1] + Save_IntToString[2])
              • Set VariableSet SaveValue[SaveCount] = (Integer(Save_IntToString[3]))
            • Else - Actions
              • Set VariableSet SaveValue[SaveCount] = Loaded_Kotg[SaveLoadEvent_PN]
          • -------- --------
          • -------- DEMON HUNTER: --------
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Set VariableSet SaveMaxValue[SaveCount] = 100
          • -------- Do the things Uncle suggested --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Player_Hero_Type[SaveLoadEvent_PN] Equal to Demon Hunter
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • mode_setting Greater than Loaded_Mode_DH[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[1] = (String(Loaded_Mode_DH[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[1] = (String(mode_setting))
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • difficulty_setting Greater than Loaded_Difficulty_DH[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[2] = (String(Loaded_Difficulty_DH[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[2] = (String(difficulty_setting))
              • Set VariableSet Save_IntToString[3] = (Save_IntToString[1] + Save_IntToString[2])
              • Set VariableSet SaveValue[SaveCount] = (Integer(Save_IntToString[3]))
            • Else - Actions
              • Set VariableSet SaveValue[SaveCount] = Loaded_DH[SaveLoadEvent_PN]
          • -------- --------
          • -------- PRIESTESS OF THE MOON: --------
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Set VariableSet SaveMaxValue[SaveCount] = 100
          • -------- Do the things Uncle suggested --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Player_Hero_Type[SaveLoadEvent_PN] Equal to Priestess of the Moon
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • mode_setting Greater than Loaded_Mode_Potm[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[1] = (String(Loaded_Mode_Potm[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[1] = (String(mode_setting))
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • difficulty_setting Greater than Loaded_Difficulty_Potm[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[2] = (String(Loaded_Difficulty_Potm[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[2] = (String(difficulty_setting))
              • Set VariableSet Save_IntToString[3] = (Save_IntToString[1] + Save_IntToString[2])
              • Set VariableSet SaveValue[SaveCount] = (Integer(Save_IntToString[3]))
            • Else - Actions
              • Set VariableSet SaveValue[SaveCount] = Loaded_Potm[SaveLoadEvent_PN]
          • Set VariableSet Save_IntToString[3] = (Save_IntToString[1] + Save_IntToString[2])
          • Set VariableSet SaveValue[SaveCount] = (Integer(Save_IntToString[3]))
          • -------- --------
          • -------- Warden: --------
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Set VariableSet SaveMaxValue[SaveCount] = 100
          • -------- Do the things Uncle suggested --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Player_Hero_Type[SaveLoadEvent_PN] Equal to Warden (NPC)
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • mode_setting Greater than Loaded_Mode_Warden[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[1] = (String(Loaded_Mode_Warden[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[1] = (String(mode_setting))
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • difficulty_setting Greater than Loaded_Difficulty_Warden[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[2] = (String(Loaded_Difficulty_Warden[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[2] = (String(difficulty_setting))
              • Set VariableSet Save_IntToString[3] = (Save_IntToString[1] + Save_IntToString[2])
              • Set VariableSet SaveValue[SaveCount] = (Integer(Save_IntToString[3]))
            • Else - Actions
              • Set VariableSet SaveValue[SaveCount] = Loaded_Warden[SaveLoadEvent_PN]
          • Set VariableSet Save_IntToString[3] = (Save_IntToString[1] + Save_IntToString[2])
          • Set VariableSet SaveValue[SaveCount] = (Integer(Save_IntToString[3]))
          • -------- --------
          • -------- STOP --------
          • -------- --------
          • -------- --------
          • -------- 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(udg_SaveLoadEvent_Player, 1)
          • Custom script: call SaveFile.create(udg_SaveLoadEvent_Player, "Save", 1, udg_SaveTempString)
  • easy rewards
    • Events
      • Time - rewards_timer[1] expires
    • Conditions
    • Actions
      • For each (Integer B) from 1 to 4, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (player_array[(Integer B)] slot status) Equal to Is playing
              • Or - Any (Conditions) are true
                • Conditions
                  • Loaded_Difficulty_DH[(Integer B)] Greater than or equal to 1
                  • Loaded_Difficulty_Kotg[(Integer B)] Greater than or equal to 1
                  • Loaded_Difficulty_Potm[(Integer B)] Greater than or equal to 1
                  • Loaded_Difficulty_Warden[(Integer B)] Greater than or equal to 1
            • Then - Actions
              • Unit - Create 1 |cffffffffEasy|r |cff808080Prestige|r for player_array[(Integer B)] at easy_reward_pt[(Integer B)] facing Default building facing degrees
              • Player - Set the current research level of Strength of the Moon (upgrade) to 1 for player_array[(Integer B)]
              • Player - Set the current research level of Strength of the Wild (upgrade) to 1 for player_array[(Integer B)]
              • Player - Set the current research level of Moon Armor (upgrade) to 1 for player_array[(Integer B)]
              • Player - Set the current research level of Reinforced Hides (upgrade) to 1 for player_array[(Integer B)]
              • Player - Set the current research level of Ultravision (upgrade) to 1 for player_array[(Integer B)]
              • Player - Set the current research level of Backpack (Night Elf upgrade) to 1 for player_array[(Integer B)]
              • Player - Set the current research level of Druid of the Claw Adept Training (upgrade) to 1 for player_array[(Integer B)]
              • Player - Set the current research level of Druid of the Talon Adept Training (upgrade) to 1 for player_array[(Integer B)]
              • Player - Set player_array[(Integer B)].Current gold to ((player_array[(Integer B)] Current gold) + 100)
              • Game - Display to player_group_array[(Integer B)] the text: (difficulty_string[1] + Prestige Reward Applied: +100 Starting Gold, Tier 1 Upgrades)
            • Else - Actions
      • For each (Integer B) from 13 to 16, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (player_array[(Integer B)] slot status) Equal to Is playing
              • Or - Any (Conditions) are true
                • Conditions
                  • Loaded_Difficulty_DH[(Integer B)] Greater than or equal to 1
                  • Loaded_Difficulty_Kotg[(Integer B)] Greater than or equal to 1
                  • Loaded_Difficulty_Potm[(Integer B)] Greater than or equal to 1
                  • Loaded_Difficulty_Warden[(Integer B)] Greater than or equal to 1
            • Then - Actions
              • Unit - Create 1 |cffffffffEasy|r |cff808080Prestige|r for player_array[(Integer B)] at easy_reward_pt[(Integer B)] facing Default building facing degrees
              • Player - Set the current research level of Strength of the Moon (upgrade) to 1 for player_array[(Integer B)]
              • Player - Set the current research level of Strength of the Wild (upgrade) to 1 for player_array[(Integer B)]
              • Player - Set the current research level of Moon Armor (upgrade) to 1 for player_array[(Integer B)]
              • Player - Set the current research level of Reinforced Hides (upgrade) to 1 for player_array[(Integer B)]
              • Player - Set the current research level of Ultravision (upgrade) to 1 for player_array[(Integer B)]
              • Player - Set the current research level of Backpack (Night Elf upgrade) to 1 for player_array[(Integer B)]
              • Player - Set the current research level of Druid of the Claw Adept Training (upgrade) to 1 for player_array[(Integer B)]
              • Player - Set the current research level of Druid of the Talon Adept Training (upgrade) to 1 for player_array[(Integer B)]
              • Player - Set player_array[(Integer B)].Current gold to ((player_array[(Integer B)] Current gold) + 100)
            • Else - Actions
      • Countdown Timer - Start rewards_timer[2] as a One-shot timer that will expire in 5.00 seconds

Is the array number correct for "Load Event" ? Mode and Difficulty are bothing using Save_IntToString[1].

Thanks for bearing with me. I'm really not sure what to do from here besides slowly review everything and try to understand it.

Update:
  • Set VariableSet Loaded_Difficulty_DH[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[2], 2, 2))))
difficulty is supposed to be string array spot 2, it was spot 1, maybe that's why it wasn't working.
 
Last edited:

Uncle

Warcraft Moderator
Level 64
Joined
Aug 10, 2018
Messages
6,557
Both the Save and Load triggers have the same mistakes I keep telling you to fix. Load is referencing some of the wrong variables for Kotg and Save is still using the "deleted" variables after the If Then Else for the last two heroes. You have to read the triggers top to bottom and look carefully, it's easy to make mistakes.

Also, I recommend using a Player Group variable to manage all of your Players. A For Loop is really not intended for that sort of thing and your player_array variable is very unnecessary. You can have a Player Group variable for every situation and Add/Remove any Players at any time. This way you don't have to care what Player Slot someone occupies.

  • Initialization
    • Events
      • Time - Elapsed game time is 0.01 seconds
    • Conditions
    • Actions
      • -------- Track all of the Users: --------
      • Player Group - Pick every player in (All players matching (((Matching player) controller) Equal to User).) and do (Actions)
        • Loop - Actions
          • Player Group - Add (Picked player) to Users_All
          • Set VariableSet Users_All_Count = (Users_All_Count + 1)
          • -------- --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ((Picked player) slot status) Equal to Is playing
            • Then - Actions
              • Player Group - Add (Picked player) to Users_Playing
              • Set VariableSet Users_Playing_Count = (Users_Playing_Count + 1)
            • Else - Actions
              • Player Group - Add (Picked player) to Users_Leavers
              • Set VariableSet Users_Leaver_Count = (Users_Leaver_Count + 1)
When someone leaves the game you can adjust the Player Groups:
  • Events
    • Player - Player 1 (Red) leaves the game
    • Player - Player 2 (Blue) leaves the game
    • ... other players
  • Conditions
  • Actions
    • Player Group - Remove (Triggering player) from Users_Playing
    • Player Group - Add (Triggering player) to Users_Leavers
    • Set VariableSet Users_Playing_Count = (Users_Playing_Count - 1)
    • Set VariableSet Users_Leaver_Count = (Users_Leaver_Count + 1)
Look how simple your Rewards trigger becomes:
  • easy rewards
    • Events
      • Time - rewards_timer[1] expires
    • Conditions
    • Actions
      • Player Group - Pick every player in Users_Playing and do (Actions)
        • Loop - Actions
          • Set Variable Reward_Player = (Picked player)
          • Set Variable Reward_PN = (Player number of Reward_Player)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Or - Any (Conditions) are true
                • Conditions
                  • Loaded_Difficulty_DH[Reward_PN] Greater than or equal to 1
                  • Loaded_Difficulty_Kotg[Reward_PN] Greater than or equal to 1
                  • Loaded_Difficulty_Potm[Reward_PN] Greater than or equal to 1
                  • Loaded_Difficulty_Warden[Reward_PN] Greater than or equal to 1
          • Then - Actions
            • Unit - Create 1 |cffffffffEasy|r |cff808080Prestige|r for Reward_Player at easy_reward_pt[Reward_PN] facing Default building facing degrees
            • Player - Set the current research level of Strength of the Moon (upgrade) to 1 for Reward_Player
            • Player - Set the current research level of Strength of the Wild (upgrade) to 1 for Reward_Player
            • Player - Set the current research level of Moon Armor (upgrade) to 1 for Reward_Player
            • Player - Set the current research level of Reinforced Hides (upgrade) to 1 for Reward_Player
            • Player - Set the current research level of Ultravision (upgrade) to 1 for Reward_Player
            • Player - Set the current research level of Backpack (Night Elf upgrade) to 1 for Reward_Player
            • Player - Set the current research level of Druid of the Claw Adept Training (upgrade) to 1 for Reward_Player
            • Player - Set the current research level of Druid of the Talon Adept Training (upgrade) to 1 for Reward_Player
            • Player - Add 100 to Reward_Player Current gold
There's no need to check if they're still Playing the game in the Conditions since know for a fact that Users_Playing only ever contains playing Users.
 
Last edited:
Level 18
Joined
Mar 16, 2008
Messages
721
Thank you for reccomending using Player Groups. I think I could implement that quite easily without any guidance.

I'm still spinning my wheels about this load save stuff. Feel like this is one of the most complicated things I've tried to do.
 

Uncle

Warcraft Moderator
Level 64
Joined
Aug 10, 2018
Messages
6,557
You just have to delete those four unnecessary Actions in the Save trigger (for the last two heroes). You seemed to fix this problem for the first two heroes but didn't bother for the last two.

Then update the mistake in the Load trigger where you're referencing DH variables under the Kotg section. This one should be easy enough, you can literally see that the Kotg is using the variable for the DH rather than itself.

You're doing the correct thing in most places, you just made trigger "typos" here and there. It shouldn't take longer than a minute to fix.

Also, this Save/Load system isn't that difficult to grasp:

1) You can only save Integers.
2) All of the data that you want to save must be stored in the SaveValue[] array.
3) When loading, you must load in the reverse order of how you saved (the first thing saved should be the last thing loaded).

The String stuff I suggested is only there so you can save a combination of data as one thing. It's not even necessary.

If you wanted to you could drop the Strings and instead Save eight different values.

SaveValue[1] = Kotg mode
SaveValue[2] = Kotg difficulty
SaveValue[3] = DH mode
SaveValue[4] = DH difficulty
SaveValue[5] = Potm mode
SaveValue[6] = Potm difficulty
SaveValue[7] = Warden mode
SaveValue[8] = Warden difficulty

I think I initially misunderstood what you wanted and tried to give you a 3d array of sorts.
 
Last edited:
Level 18
Joined
Mar 16, 2008
Messages
721
I think we can still extract the info we need to make it 3d but either way i can't get it to work at all.

I've read for typos and found two that you mentioned but I over looked - but I also 100% don't understand what I'm looking for.

  • Autosave
    • Events
    • Conditions
    • Actions
      • Player Group - Pick every player in (All players) and do (Actions)
        • Loop - Actions
          • Set VariableSet SaveLoadEvent_Player = (Picked player)
          • Set VariableSet SaveLoadEvent_PN = (Player number of SaveLoadEvent_Player)
          • -------- --------
          • Set VariableSet SaveCount = 0
          • -------- --------
          • Custom script: call DisplayTextToPlayer(GetTriggerPlayer(), 0, 0, "Saved " + User[udg_SaveLoadEvent_Player].nameColored)
          • -------- --------
          • -------- --------
          • -------- PUT YOUR SAVE ACTIONS HERE: --------
          • -------- KEEPER OF THE GROVE: --------
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Set VariableSet SaveMaxValue[SaveCount] = 100
          • -------- Do the things Uncle suggested --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Player_Hero_Type[SaveLoadEvent_PN] Equal to Keeper of the Grove
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • mode_setting Greater than Loaded_Mode_Kotg[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[1] = (String(Loaded_Mode_Kotg[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[1] = (String(mode_setting))
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • difficulty_setting Greater than Loaded_Difficulty_Kotg[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[2] = (String(Loaded_Difficulty_Kotg[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[2] = (String(difficulty_setting))
              • Set VariableSet Save_IntToString[3] = (Save_IntToString[1] + Save_IntToString[2])
              • Set VariableSet SaveValue[SaveCount] = (Integer(Save_IntToString[3]))
            • Else - Actions
              • Set VariableSet SaveValue[SaveCount] = Loaded_Kotg[SaveLoadEvent_PN]
          • -------- --------
          • -------- DEMON HUNTER: --------
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Set VariableSet SaveMaxValue[SaveCount] = 100
          • -------- Do the things Uncle suggested --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Player_Hero_Type[SaveLoadEvent_PN] Equal to Demon Hunter
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • mode_setting Greater than Loaded_Mode_DH[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[1] = (String(Loaded_Mode_DH[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[1] = (String(mode_setting))
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • difficulty_setting Greater than Loaded_Difficulty_DH[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[2] = (String(Loaded_Difficulty_DH[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[2] = (String(difficulty_setting))
              • Set VariableSet Save_IntToString[3] = (Save_IntToString[1] + Save_IntToString[2])
              • Set VariableSet SaveValue[SaveCount] = (Integer(Save_IntToString[3]))
            • Else - Actions
              • Set VariableSet SaveValue[SaveCount] = Loaded_DH[SaveLoadEvent_PN]
          • -------- --------
          • -------- PRIESTESS OF THE MOON: --------
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Set VariableSet SaveMaxValue[SaveCount] = 100
          • -------- Do the things Uncle suggested --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Player_Hero_Type[SaveLoadEvent_PN] Equal to Priestess of the Moon
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • mode_setting Greater than Loaded_Mode_Potm[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[1] = (String(Loaded_Mode_Potm[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[1] = (String(mode_setting))
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • difficulty_setting Greater than Loaded_Difficulty_Potm[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[2] = (String(Loaded_Difficulty_Potm[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[2] = (String(difficulty_setting))
              • Set VariableSet Save_IntToString[3] = (Save_IntToString[1] + Save_IntToString[2])
              • Set VariableSet SaveValue[SaveCount] = (Integer(Save_IntToString[3]))
            • Else - Actions
              • Set VariableSet SaveValue[SaveCount] = Loaded_Potm[SaveLoadEvent_PN]
          • -------- --------
          • -------- WARDEN: --------
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Set VariableSet SaveMaxValue[SaveCount] = 100
          • -------- Do the things Uncle suggested --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Player_Hero_Type[SaveLoadEvent_PN] Equal to Warden (NPC)
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • mode_setting Greater than Loaded_Mode_Warden[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[1] = (String(Loaded_Mode_Warden[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[1] = (String(mode_setting))
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • difficulty_setting Greater than Loaded_Difficulty_Warden[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet Save_IntToString[2] = (String(Loaded_Difficulty_Warden[SaveLoadEvent_PN]))
                • Else - Actions
                  • Set VariableSet Save_IntToString[2] = (String(difficulty_setting))
              • Set VariableSet Save_IntToString[3] = (Save_IntToString[1] + Save_IntToString[2])
              • Set VariableSet SaveValue[SaveCount] = (Integer(Save_IntToString[3]))
            • Else - Actions
              • Set VariableSet SaveValue[SaveCount] = Loaded_Warden[SaveLoadEvent_PN]
          • -------- --------
          • -------- STOP --------
          • -------- --------
          • -------- --------
          • -------- 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(udg_SaveLoadEvent_Player, 1)
          • Custom script: call SaveFile.create(udg_SaveLoadEvent_Player, "Save", 1, udg_SaveTempString)
  • Load Event
    • Events
      • Game - SaveLoadEvent becomes Equal to 1.00
    • Conditions
    • Actions
      • -------- Validate: --------
      • Set VariableSet SaveCount = 0
      • 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)
      • -------- --------
      • -------- --------
      • -------- PUT YOUR LOAD ACTIONS HERE (Reverse Order): --------
      • -------- WARDEN: --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 100
      • Custom script: call SaveHelper.GUILoadNext()
      • -------- Do the stuff that Uncle suggested --------
      • Set VariableSet Save_IntToString[1] = (String(SaveValue[SaveCount]))
      • Set VariableSet Loaded_Mode_Warden[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 1, 1))))
      • Set VariableSet Loaded_Difficulty_Warden[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[2], 2, 2))))
      • Set VariableSet Loaded_Warden[SaveLoadEvent_PN] = (Integer(Save_IntToString[1]))
      • -------- --------
      • -------- PRIESTESS OF THE MOON: --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 100
      • Custom script: call SaveHelper.GUILoadNext()
      • -------- Do the stuff that Uncle suggested --------
      • Set VariableSet Save_IntToString[1] = (String(SaveValue[SaveCount]))
      • Set VariableSet Loaded_Mode_Potm[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 1, 1))))
      • Set VariableSet Loaded_Difficulty_Potm[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[2], 2, 2))))
      • Set VariableSet Loaded_Potm[SaveLoadEvent_PN] = (Integer(Save_IntToString[1]))
      • -------- --------
      • -------- DEMON HUNTER: --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 100
      • Custom script: call SaveHelper.GUILoadNext()
      • -------- Do the stuff that Uncle suggested --------
      • Set VariableSet Save_IntToString[1] = (String(SaveValue[SaveCount]))
      • Set VariableSet Loaded_Mode_DH[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 1, 1))))
      • Set VariableSet Loaded_Difficulty_DH[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[2], 2, 2))))
      • Set VariableSet Loaded_DH[SaveLoadEvent_PN] = (Integer(Save_IntToString[1]))
      • -------- --------
      • -------- KEEPER OF THE GROVE: --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 100
      • Custom script: call SaveHelper.GUILoadNext()
      • -------- Do the stuff that Uncle suggested --------
      • Set VariableSet Save_IntToString[1] = (String(SaveValue[SaveCount]))
      • Set VariableSet Loaded_Mode_Kotg[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[1], 1, 1))))
      • Set VariableSet Loaded_Difficulty_Kotg[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[2], 2, 2))))
      • Set VariableSet Loaded_Kotg[SaveLoadEvent_PN] = (Integer(Save_IntToString[1]))
      • -------- STOP --------
      • -------- --------
      • -------- --------
      • Custom script: call Savecode(udg_SaveTempInt).destroy()
 
Level 18
Joined
Mar 16, 2008
Messages
721
That looks to be correct, I don't see any issues. What happens when you save/load? Add some debug messages that display the different values.
No bug messages, it says "loaded <name>" but idk what data it is loading exactly because this trigger isn't working that i'm testing it with - the one that isn't using Player Groups. I know that trigger was at least functional previously so haven't implemented the Player Groups yet.

What if you modified the system when you helped me create it? Would you have done that or left notes?
 
Level 18
Joined
Mar 16, 2008
Messages
721
  • Set VariableSet Loaded_Difficulty_DH[SaveLoadEvent_PN] = (Integer((Substring(Save_IntToString[2], 2, 2))))
Should this be Save_IntToString[2] or [1]?

I thought difficulty was [2]?


  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
    • If - Conditions
      • difficulty_setting Greater than Loaded_Difficulty_DH[SaveLoadEvent_PN]
    • Then - Actions
      • Set VariableSet Save_IntToString[2] = (String(Loaded_Difficulty_DH[SaveLoadEvent_PN]))
    • Else - Actions
      • Set VariableSet Save_IntToString[2] = (String(difficulty_setting))
Wait isn't this backwards? Then and Else should switch places.
 

Uncle

Warcraft Moderator
Level 64
Joined
Aug 10, 2018
Messages
6,557
The substring represents the digits:

1,1 = digit 1.
2,2 = digit 2.

The [index] should be [1] since Save_IntToString[1] contains the String ---> Set VariableSet Save_IntToString[1] = (String(SaveValue[SaveCount]))
 
Last edited:
Level 18
Joined
Mar 16, 2008
Messages
721
Experiencing a strange intermittent bug with the save system in bnet multiplayer games.

player red had several previous non-zero integers in his save
player blue had no save
player teal had heroic-potm, heroic-standard, normal-potm, normal-dh, normal standard, normal no demo, easy same as normal.
purple - apparently receved TEAL's save and teal didn't load anything.

--it seems to work most of the time but it's difficult to test outside of live games, because to system seems to bug out when testing with multiple games via LAN. very confused how this can happen considering the trigger mostly use loops. maybe it's the pick random player from group trigger? if anyone has any any ideas would help. thanks.

--perhaps udg_rewards_pn is "overlapping"? but they player over 8 seconds apart so i'm doubtful.

  • start 5
    • Events
      • Time - Elapsed game time is 8.20 seconds
    • Conditions
    • Actions
      • -------- Initiate Rewards --------
      • Player Group - Pick every player in players_grp and do (Actions)
        • Loop - Actions
          • Set VariableSet rewards_pn = (Player number of (Picked player))
          • Set VariableSet difficulty_highest_load[rewards_pn] = highest_standard[rewards_pn]
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • highest_exploration[rewards_pn] Greater than difficulty_highest_load[rewards_pn]
            • Then - Actions
              • Set VariableSet difficulty_highest_load[rewards_pn] = highest_exploration[rewards_pn]
            • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • highest_hardcore[rewards_pn] Greater than difficulty_highest_load[rewards_pn]
            • Then - Actions
              • Set VariableSet difficulty_highest_load[rewards_pn] = highest_hardcore[rewards_pn]
            • Else - Actions
      • -------- save/load message --------
      • Player Group - Pick every player in players_grp and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • difficulty_highest_load[(Player number of (Picked player))] Greater than 0
            • Then - Actions
              • Game - Display to (All players) for 30.00 seconds the text: (name_strings_color[(Player number of (Picked player))] + (|r auto-loaded + difficulty_string[difficulty_highest_load[(Player number of (Picked player))]]))
            • Else - Actions
  • no rewards
    • Events
      • Time - rewards_timer[0] expires <- starts at about 14+ seconds
    • Conditions
    • Actions
      • Player Group - Pick every player in players_grp and do (Actions)
        • Loop - Actions
          • Set VariableSet rewards_pn = (Player number of (Picked player))
          • -------- No Rewards --------
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • is_playing[rewards_pn] Equal to True
              • difficulty_highest_load[rewards_pn] Equal to 0
            • Then - Actions
              • Unit - Create 1 Prestige Dreaming Bed for player_array[rewards_pn] at easy_reward_pt[rewards_pn] facing Default building facing degrees
              • Game - Display to player_group_array[rewards_pn] the text: (No prestige detected for + (Name of player_array[rewards_pn]))
              • Game - Display to player_group_array[rewards_pn] the text: (Saves reset in v3....
            • Else - Actions
      • Countdown Timer - Start rewards_timer[1] as a One-shot timer that will expire in 5.00 seconds
  • easy rewards
    • Events
      • Time - rewards_timer[1] expires
    • Conditions
    • Actions
      • Player Group - Pick every player in players_grp and do (Actions)
        • Loop - Actions
          • Set VariableSet rewards_pn = (Player number of (Picked player))
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • difficulty_highest_load[rewards_pn] Greater than or equal to 1
            • Then - Actions
              • Unit - Create 1 Prestige Trophy: |cffffffffEasy|r for player_array[rewards_pn] at easy_reward_pt[rewards_pn] facing Default building facing degrees
              • Player - Set the current research level of Strength of the Moon (upgrade) to 1 for player_array[rewards_pn]
              • Player - Set the current research level of Strength of the Wild (upgrade) to 1 for player_array[rewards_pn]
              • Player - Set the current research level of Moon Armor (upgrade) to 1 for player_array[rewards_pn]
              • Player - Set the current research level of Reinforced Hides (upgrade) to 1 for player_array[rewards_pn]
              • Player - Set the current research level of Ultravision (upgrade) to 1 for player_array[rewards_pn]
              • Player - Set the current research level of Backpack (Night Elf upgrade) to 1 for player_array[rewards_pn]
              • Player - Set the current research level of Druid of the Claw Adept Training (upgrade) to 1 for player_array[rewards_pn]
              • Player - Set the current research level of Druid of the Talon Adept Training (upgrade) to 1 for player_array[rewards_pn]
              • Player - Set player_array[rewards_pn].Current gold to ((player_array[rewards_pn] Current gold) + 100)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_no_hero[rewards_pn] Greater than or equal to 1
                • Then - Actions
                  • Player - Set the current research level of Prestige: Runner |cffffffffEasy|r to 1 for player_array[rewards_pn]
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • rewards_pn Greater than 4
                    • Then - Actions
                      • Player - Set player_array[rewards_pn].Food cap to 3
                    • Else - Actions
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_warden[rewards_pn] Greater than or equal to 1
                • Then - Actions
                  • Player - Set the current research level of Prestige: Warden |cffffffffEasy|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_potm[rewards_pn] Greater than or equal to 1
                • Then - Actions
                  • Player - Set the current research level of Prestige: Priestess of the Moon |cffffffffEasy|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_dh[rewards_pn] Greater than or equal to 1
                • Then - Actions
                  • Player - Set the current research level of Prestige: Demon Hunter |cffffffffEasy|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_kotg[rewards_pn] Greater than or equal to 1
                • Then - Actions
                  • Player - Set the current research level of Prestige: Keeper of the Grove |cffffffffEasy|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_exploration[rewards_pn] Greater than or equal to 1
                • Then - Actions
                  • Player - Set the current research level of Prestige: |cffffffffEasy|r |cff808080Exploration|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_standard[rewards_pn] Greater than or equal to 1
                • Then - Actions
                  • Player - Set the current research level of Prestige: Standard |cffffffffEasy|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_hardcore[rewards_pn] Greater than or equal to 1
                • Then - Actions
                  • Player - Set the current research level of Prestige: |cffffffffEasy|r |cffff0000Hardcore|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_no_demon_magic[rewards_pn] Greater than or equal to 1
                • Then - Actions
                  • Player - Set the current research level of Prestige: |cffffffffEasy|r |cff80ff80Demonic Abstention|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • Game - Display to player_group_array[rewards_pn] the text: (difficulty_string[1] + Prestige Reward Applied: +100 Starting Gold, Tier 1 Upgrades)
            • Else - Actions
      • Countdown Timer - Start rewards_timer[2] as a One-shot timer that will expire in 5.00 seconds
  • normal rewards
    • Events
      • Time - rewards_timer[2] expires
    • Conditions
    • Actions
      • Player Group - Pick every player in players_grp and do (Actions)
        • Loop - Actions
          • Set VariableSet rewards_pn = (Player number of (Picked player))
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • difficulty_highest_load[rewards_pn] Greater than or equal to 2
            • Then - Actions
              • Unit - Create 1 Prestige Trophy: |cffffff00Normal|r for player_array[rewards_pn] at normal_reward_pt[rewards_pn] facing 270.00 degrees
              • Player - Set the current research level of Strength of the Moon (upgrade) to 2 for player_array[rewards_pn]
              • Player - Set the current research level of Strength of the Wild (upgrade) to 2 for player_array[rewards_pn]
              • Player - Set the current research level of Moon Armor (upgrade) to 2 for player_array[rewards_pn]
              • Player - Set the current research level of Reinforced Hides (upgrade) to 2 for player_array[rewards_pn]
              • Player - Set the current research level of Abolish Magic (upgrade) to 1 for player_array[rewards_pn]
              • Player - Set the current research level of Improved Bows (upgrade) to 1 for player_array[rewards_pn]
              • Player - Set the current research level of Nature's Blessing (upgrade) to 1 for player_array[rewards_pn]
              • Player - Set the current research level of Sentinel (upgrade) to 1 for player_array[rewards_pn]
              • Player - Set the current research level of Vorpal Blades (upgrade) to 1 for player_array[rewards_pn]
              • Player - Set the current research level of Hippogryph Taming (upgrade) to 1 for player_array[rewards_pn]
              • Player - Set player_array[rewards_pn].Current gold to ((player_array[rewards_pn] Current gold) + 100)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_no_hero[rewards_pn] Greater than or equal to 2
                • Then - Actions
                  • Player - Set the current research level of Prestige: Runner |cffffff00Normal|r to 1 for player_array[rewards_pn]
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • rewards_pn Greater than 4
                    • Then - Actions
                      • Player - Set player_array[rewards_pn].Food cap to 4
                    • Else - Actions
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_warden[rewards_pn] Greater than or equal to 2
                • Then - Actions
                  • Player - Set the current research level of Prestige: Warden |cffffff00Normal|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_potm[rewards_pn] Greater than or equal to 2
                • Then - Actions
                  • Player - Set the current research level of Prestige: Priestess of the Moon |cffffff00Normal|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_dh[rewards_pn] Greater than or equal to 2
                • Then - Actions
                  • Player - Set the current research level of Prestige: Demon Hunter |cffffff00Normal|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_kotg[rewards_pn] Greater than or equal to 2
                • Then - Actions
                  • Player - Set the current research level of Prestige: Keeper of the Grove |cffffff00Normal|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_exploration[rewards_pn] Greater than or equal to 2
                • Then - Actions
                  • Player - Set the current research level of Prestige: |cffffff00Normal|r |cff808080Exploration|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_standard[rewards_pn] Greater than or equal to 2
                • Then - Actions
                  • Player - Set the current research level of Prestige: Standard |cffffff00Normal|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_hardcore[rewards_pn] Greater than or equal to 2
                • Then - Actions
                  • Player - Set the current research level of Prestige: |cffffff00Normal|r |cffff0000Hardcore|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_no_demon_magic[rewards_pn] Greater than or equal to 2
                • Then - Actions
                  • Player - Set the current research level of Prestige: |cffffff00Normal|r |cff80ff80Demonic Abstention|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • Game - Display to player_group_array[rewards_pn] the text: (difficulty_string[2] + Prestige Reward Applied: +100 Gold, T-2 Upgrades, Hero Skins)
            • Else - Actions
      • Countdown Timer - Start rewards_timer[3] as a One-shot timer that will expire in 5.00 seconds
  • heroic rewards
    • Events
      • Time - rewards_timer[3] expires
    • Conditions
    • Actions
      • Player Group - Pick every player in players_grp and do (Actions)
        • Loop - Actions
          • Set VariableSet rewards_pn = (Player number of (Picked player))
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • difficulty_highest_load[rewards_pn] Greater than or equal to 3
            • Then - Actions
              • Unit - Create 1 Prestige Trophy: |cffff0000Heroic|r (unit type) for player_array[rewards_pn] at heroic_reward_pt[rewards_pn] facing Default building facing degrees
              • Player - Set the current research level of Corrosive Breath (upgrade) to 1 for player_array[rewards_pn]
              • Player - Set the current research level of Druid of the Claw Adept Training (upgrade) to 2 for player_array[rewards_pn]
              • Player - Set the current research level of Druid of the Talon Adept Training (upgrade) to 2 for player_array[rewards_pn]
              • Player - Set the current research level of Well Spring (upgrade) to 1 for player_array[rewards_pn]
              • Player - Set the current research level of Mark of the Claw (upgrade) to 1 for player_array[rewards_pn]
              • Player - Set the current research level of Mark of the Talon (upgrade) to 1 for player_array[rewards_pn]
              • Player - Set the current research level of Resistant Skin (upgrade) to 1 for player_array[rewards_pn]
              • Player - Set the current research level of Hardened Skin (upgrade) to 1 for player_array[rewards_pn]
              • Player - Set the current research level of Upgrade Moon Glaive (upgrade) to 1 for player_array[rewards_pn]
              • Player - Set the current research level of Marksmanship (upgrade) to 1 for player_array[rewards_pn]
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_no_hero[rewards_pn] Greater than or equal to 3
                • Then - Actions
                  • Player - Set the current research level of Prestige: Runner |cffff0000Heroic|r to 1 for player_array[rewards_pn]
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • rewards_pn Greater than 4
                    • Then - Actions
                      • Player - Set player_array[rewards_pn].Food cap to 5
                    • Else - Actions
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_warden[rewards_pn] Greater than or equal to 3
                • Then - Actions
                  • Player - Set the current research level of Prestige: Warden |cffff0000Heroic|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_potm[rewards_pn] Greater than or equal to 3
                • Then - Actions
                  • Player - Set the current research level of Prestige: Priestess of the Moon |cffff0000Heroic|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_dh[rewards_pn] Greater than or equal to 3
                • Then - Actions
                  • Player - Set the current research level of Prestige: Demon Hunter |cffff0000Heroic|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_kotg[rewards_pn] Greater than or equal to 3
                • Then - Actions
                  • Player - Set the current research level of Prestige: Keeper of the Grove |cffff0000Heroic|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_exploration[rewards_pn] Greater than or equal to 3
                • Then - Actions
                  • Player - Set the current research level of Prestige: |cffff0000Heroic|r |cff808080Exploration|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_standard[rewards_pn] Greater than or equal to 3
                • Then - Actions
                  • Player - Set the current research level of Prestige: Standard |cffff0000Heroic|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_hardcore[rewards_pn] Greater than or equal to 3
                • Then - Actions
                  • Player - Set the current research level of Prestige: |cffff0000Heroic|r |cffff0000Hardcore|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_no_demon_magic[rewards_pn] Greater than or equal to 3
                • Then - Actions
                  • Player - Set the current research level of Prestige: |cffff0000Heroic|r |cff80ff80Demonic Abstention|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • Game - Display to player_group_array[rewards_pn] the text: (difficulty_string[3] + Prestige Reward Applied: T-3 Upgrades, Hero Skins, Tech Unlocked)
            • Else - Actions
      • Countdown Timer - Start rewards_timer[4] as a One-shot timer that will expire in 5.00 seconds
  • mythic rewards
    • Events
      • Time - rewards_timer[4] expires
    • Conditions
    • Actions
      • Player Group - Pick every player in players_grp and do (Actions)
        • Loop - Actions
          • Set VariableSet rewards_pn = (Player number of (Picked player))
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • difficulty_highest_load[rewards_pn] Greater than or equal to 4
            • Then - Actions
              • Unit - Create 1 Prestige Trophy: |cff990000Mythic|r for player_array[rewards_pn] at mythic_reward_pt[rewards_pn] facing Default building facing degrees
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_no_hero[rewards_pn] Greater than or equal to 4
                • Then - Actions
                  • Player - Set the current research level of Prestige: Runner |cff990000Mythic|r to 1 for player_array[rewards_pn]
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • rewards_pn Greater than 4
                    • Then - Actions
                      • Player - Set player_array[rewards_pn].Food cap to 6
                    • Else - Actions
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_warden[rewards_pn] Greater than or equal to 4
                • Then - Actions
                  • Player - Set the current research level of Prestige: Warden |cff990000Mythic|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_potm[rewards_pn] Greater than or equal to 4
                • Then - Actions
                  • Player - Set the current research level of Prestige: Priestess of the Moon |cff990000Mythic|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_dh[rewards_pn] Greater than or equal to 4
                • Then - Actions
                  • Player - Set the current research level of Prestige: Demon Hunter |cff990000Mythic|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_kotg[rewards_pn] Greater than or equal to 4
                • Then - Actions
                  • Player - Set the current research level of Prestige: Keeper of the Grove |cff990000Mythic|r to 1 for player_array[rewards_pn]
                  • Player - Set the current research level of Fel Lumber Essence to 1 for player_array[rewards_pn]
                  • Game - Display to player_group_array[rewards_pn] the text: (difficulty_string[4] + Keeper of the Grove Prestige Applied: Fel Lumber Essence)
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_exploration[rewards_pn] Greater than or equal to 4
                • Then - Actions
                  • Player - Set the current research level of Prestige: |cff990000Mythic|r |cff808080Exploration|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_standard[rewards_pn] Greater than or equal to 4
                • Then - Actions
                  • Player - Set the current research level of Prestige: Standard |cff990000Mythic|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_hardcore[rewards_pn] Greater than or equal to 4
                • Then - Actions
                  • Player - Set the current research level of Prestige: |cff990000Mythic|r |cffff0000Hardcore|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_no_demon_magic[rewards_pn] Greater than or equal to 4
                • Then - Actions
                  • Player - Set the current research level of Prestige: |cff990000Mythic|r |cff80ff80Demonic Abstention|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • Game - Display to player_group_array[rewards_pn] the text: (difficulty_string[4] + Prestige Reward Applied: Hero Skins, Tech Unlocked)
            • Else - Actions
      • Countdown Timer - Start rewards_timer[5] as a One-shot timer that will expire in 5.00 seconds
  • mythic plus rewards
    • Events
      • Time - rewards_timer[5] expires
    • Conditions
    • Actions
      • Player Group - Pick every player in players_grp and do (Actions)
        • Loop - Actions
          • Set VariableSet rewards_pn = (Player number of (Picked player))
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • difficulty_highest_load[rewards_pn] Greater than or equal to 5
            • Then - Actions
              • Unit - Create 1 Prestige Trophy: |cff660000Mythic+|r for player_array[rewards_pn] at mplus_reward_pt[rewards_pn] facing Default building facing degrees
              • Player - Set the current research level of Strength of the Moon (upgrade) to 3 for player_array[rewards_pn]
              • Player - Set the current research level of Strength of the Wild (upgrade) to 3 for player_array[rewards_pn]
              • Player - Set the current research level of Moon Armor (upgrade) to 3 for player_array[rewards_pn]
              • Player - Set the current research level of Reinforced Hides (upgrade) to 3 for player_array[rewards_pn]
              • Player - Enable Attribute Bonus for player_array[rewards_pn]
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_no_hero[rewards_pn] Greater than or equal to 5
                • Then - Actions
                  • Player - Set the current research level of Prestige: Runner |cff660000Mythic+|r to 1 for player_array[rewards_pn]
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • rewards_pn Greater than 4
                    • Then - Actions
                      • Player - Set player_array[rewards_pn].Food cap to 7
                    • Else - Actions
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_warden[rewards_pn] Greater than or equal to 5
                • Then - Actions
                  • Player - Set the current research level of Prestige: Warden |cff660000Mythic+|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_potm[rewards_pn] Greater than or equal to 5
                • Then - Actions
                  • Player - Set the current research level of Prestige: Priestess of the Moon |cff660000Mythic+|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_dh[rewards_pn] Greater than or equal to 5
                • Then - Actions
                  • Player - Set the current research level of Prestige: Demon Hunter |cff660000Mythic+|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_kotg[rewards_pn] Greater than or equal to 5
                • Then - Actions
                  • Player - Set the current research level of Prestige: Keeper of the Grove |cff660000Mythic+|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_exploration[rewards_pn] Greater than or equal to 5
                • Then - Actions
                  • Player - Set the current research level of Prestige: |cff660000Mythic+|r |cff808080Exploration|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_standard[rewards_pn] Greater than or equal to 5
                • Then - Actions
                  • Player - Set the current research level of Prestige: Standard |cff660000Mythic+|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_hardcore[rewards_pn] Greater than or equal to 5
                • Then - Actions
                  • Player - Set the current research level of Prestige: |cff660000Mythic+|r |cffff0000Hardcore|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_no_demon_magic[rewards_pn] Greater than or equal to 5
                • Then - Actions
                  • Player - Set the current research level of Prestige: |cff660000Mythic+|r |cff80ff80Demonic Abstention|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • Game - Display to player_group_array[rewards_pn] the text: (difficulty_string[5] + Prestige Reward Applied: Attribute Bonus, Skins, Tech)
            • Else - Actions
      • Countdown Timer - Start rewards_timer[6] as a One-shot timer that will expire in 5.00 seconds
  • impossible rewards
    • Events
      • Time - rewards_timer[6] expires
    • Conditions
    • Actions
      • Player Group - Pick every player in players_grp and do (Actions)
        • Loop - Actions
          • Set VariableSet rewards_pn = (Player number of (Picked player))
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • difficulty_highest_load[rewards_pn] Greater than or equal to 6
            • Then - Actions
              • Trigger - Turn on infernal used impos prestige <gen>
              • Unit - Create 1 Prestige Trophy: |cff220000Impossible|r for player_array[rewards_pn] at impos_reward_pt[rewards_pn] facing Default building facing degrees
              • Player - Set player_array[rewards_pn].Current gold to ((player_array[rewards_pn] Current gold) + 195)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_no_hero[rewards_pn] Greater than or equal to 6
                • Then - Actions
                  • Player - Set the current research level of Prestige: Runner |cff220000Impossible|r to 1 for player_array[rewards_pn]
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • rewards_pn Greater than 4
                    • Then - Actions
                      • Player - Set player_array[rewards_pn].Food cap to 8
                    • Else - Actions
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_warden[rewards_pn] Greater than or equal to 6
                • Then - Actions
                  • Player - Set the current research level of Prestige: Warden |cff220000Impossible|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_potm[rewards_pn] Greater than or equal to 6
                • Then - Actions
                  • Player - Set the current research level of Prestige: Priestess of the Moon |cff220000Impossible|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_dh[rewards_pn] Greater than or equal to 6
                • Then - Actions
                  • Player - Set the current research level of Prestige: Demon Hunter |cff220000Impossible|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_kotg[rewards_pn] Greater than or equal to 6
                • Then - Actions
                  • Player - Set the current research level of Prestige: Keeper of the Grove |cff220000Impossible|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_exploration[rewards_pn] Greater than or equal to 6
                • Then - Actions
                  • Player - Set the current research level of Prestige: |cff220000Impossible|r |cff808080Exploration|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_standard[rewards_pn] Greater than or equal to 6
                • Then - Actions
                  • Player - Set the current research level of Prestige: Standard |cff220000Impossible|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_hardcore[rewards_pn] Greater than or equal to 6
                • Then - Actions
                  • Player - Set the current research level of Prestige: |cff220000Impossible|r |cffff0000Hardcore|r to 6 for player_array[rewards_pn]
                • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • highest_no_demon_magic[rewards_pn] Greater than or equal to 6
                • Then - Actions
                  • Player - Set the current research level of Prestige: |cff220000Impossible|r |cff80ff80Demonic Abstention|r to 1 for player_array[rewards_pn]
                • Else - Actions
              • Game - Display to player_group_array[rewards_pn] the text: (difficulty_string[6] + Prestige Reward Applied: +195 Gold, Tech Unlocked)
            • Else - Actions
  • Custom Auto Save
    • Events
    • Conditions
    • Actions
      • Player Group - Pick every player in players_grp and do (Actions)
        • Loop - Actions
          • Set VariableSet SaveLoadEvent_Player = (Picked player)
          • Set VariableSet SaveLoadEvent_PN = (Player number of SaveLoadEvent_Player)
          • -------- --------
          • -------- --------
          • -------- --------
          • -------- --------
          • -------- PUT YOUR SAVE ACTIONS HERE: --------
          • Set VariableSet SaveCount = -1
          • -------- --------
          • -------- HIGHEST NO DEMON MAGIC: --------
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Set VariableSet SaveMaxValue[SaveCount] = 10
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • demonic_magic_used[SaveLoadEvent_PN] Equal to 0
            • Then - Actions
              • Set VariableSet SaveValue[SaveCount] = highest_no_demon_magic[SaveLoadEvent_PN]
            • Else - Actions
              • Set VariableSet SaveValue[SaveCount] = difficulty_setting
          • -------- --------
          • -------- HIGHEST STANDARD: --------
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Set VariableSet SaveMaxValue[SaveCount] = 10
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • mode_setting Equal to 1
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • difficulty_setting Greater than highest_standard[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet SaveValue[SaveCount] = difficulty_setting
                • Else - Actions
                  • Set VariableSet SaveValue[SaveCount] = highest_standard[SaveLoadEvent_PN]
            • Else - Actions
              • Set VariableSet SaveValue[SaveCount] = highest_standard[SaveLoadEvent_PN]
          • -------- --------
          • -------- HIGHEST EXPLORATION: --------
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Set VariableSet SaveMaxValue[SaveCount] = 10
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • mode_setting Equal to 2
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • difficulty_setting Greater than highest_exploration[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet SaveValue[SaveCount] = difficulty_setting
                • Else - Actions
                  • Set VariableSet SaveValue[SaveCount] = highest_exploration[SaveLoadEvent_PN]
            • Else - Actions
              • Set VariableSet SaveValue[SaveCount] = highest_exploration[SaveLoadEvent_PN]
          • -------- --------
          • -------- HIGHEST HARDCORE: --------
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Set VariableSet SaveMaxValue[SaveCount] = 10
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • mode_setting Equal to 3
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • difficulty_setting Greater than highest_hardcore[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet SaveValue[SaveCount] = difficulty_setting
                • Else - Actions
                  • Set VariableSet SaveValue[SaveCount] = highest_hardcore[SaveLoadEvent_PN]
            • Else - Actions
              • Set VariableSet SaveValue[SaveCount] = highest_hardcore[SaveLoadEvent_PN]
          • -------- --------
          • -------- HIGHEST KOTG: --------
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Set VariableSet SaveMaxValue[SaveCount] = 10
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Player_Hero_Type[SaveLoadEvent_PN] Equal to Keeper of the Grove
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • difficulty_setting Greater than highest_kotg[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet SaveValue[SaveCount] = difficulty_setting
                • Else - Actions
                  • Set VariableSet SaveValue[SaveCount] = highest_kotg[SaveLoadEvent_PN]
            • Else - Actions
              • Set VariableSet SaveValue[SaveCount] = highest_kotg[SaveLoadEvent_PN]
          • -------- --------
          • -------- HIGHEST POTM: --------
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Set VariableSet SaveMaxValue[SaveCount] = 10
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Player_Hero_Type[SaveLoadEvent_PN] Equal to Priestess of the Moon
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • difficulty_setting Greater than highest_potm[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet SaveValue[SaveCount] = difficulty_setting
                • Else - Actions
                  • Set VariableSet SaveValue[SaveCount] = highest_potm[SaveLoadEvent_PN]
            • Else - Actions
              • Set VariableSet SaveValue[SaveCount] = highest_potm[SaveLoadEvent_PN]
          • -------- --------
          • -------- HIGHEST DH: --------
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Set VariableSet SaveMaxValue[SaveCount] = 10
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Player_Hero_Type[SaveLoadEvent_PN] Equal to Demon Hunter
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • difficulty_setting Greater than highest_dh[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet SaveValue[SaveCount] = difficulty_setting
                • Else - Actions
                  • Set VariableSet SaveValue[SaveCount] = highest_dh[SaveLoadEvent_PN]
            • Else - Actions
              • Set VariableSet SaveValue[SaveCount] = highest_dh[SaveLoadEvent_PN]
          • -------- --------
          • -------- HIGHEST WARDEN: --------
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Set VariableSet SaveMaxValue[SaveCount] = 10
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Player_Hero_Type[SaveLoadEvent_PN] Equal to Warden (NPC)
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • difficulty_setting Greater than highest_warden[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet SaveValue[SaveCount] = difficulty_setting
                • Else - Actions
                  • Set VariableSet SaveValue[SaveCount] = highest_warden[SaveLoadEvent_PN]
            • Else - Actions
              • Set VariableSet SaveValue[SaveCount] = highest_warden[SaveLoadEvent_PN]
          • -------- --------
          • -------- HIGHEST NO HERO: --------
          • Set VariableSet SaveCount = (SaveCount + 1)
          • Set VariableSet SaveMaxValue[SaveCount] = 10
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • SaveLoadEvent_PN Greater than 5
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • difficulty_setting Greater than highest_no_hero[SaveLoadEvent_PN]
                • Then - Actions
                  • Set VariableSet SaveValue[SaveCount] = difficulty_setting
                • Else - Actions
                  • Set VariableSet SaveValue[SaveCount] = highest_no_hero[SaveLoadEvent_PN]
            • Else - Actions
              • Set VariableSet SaveValue[SaveCount] = highest_no_hero[SaveLoadEvent_PN]
          • -------- --------
          • -------- STOP --------
          • -------- --------
          • -------- --------
          • -------- 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(udg_SaveLoadEvent_Player, 1)
          • Custom script: call SaveFile.create(udg_SaveLoadEvent_Player, "Save", 1, udg_SaveTempString)
          • -------- --------
          • -------- Displays Message to Players (best spot to put this) --------
          • -------- --------
          • Game - Display to (All players) the text: (name_strings_color[SaveLoadEvent_PN] + player_name_array[SaveLoadEvent_PN])
  • Custom Load Event
    • Events
      • Game - SaveLoadEvent becomes Equal to 1.00
    • Conditions
    • Actions
      • -------- 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
      • -------- --------
      • -------- --------
      • -------- PUT YOUR LOAD ACTIONS HERE (Reverse Order): --------
      • Set VariableSet SaveCount = -1
      • -------- --------
      • -------- HIGHEST NO HERO: --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 10
      • Custom script: call SaveHelper.GUILoadNext()
      • Set VariableSet highest_no_hero[SaveLoadEvent_PN] = SaveValue[SaveCount]
      • -------- --------
      • -------- HIGHEST WARDEN: --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 10
      • Custom script: call SaveHelper.GUILoadNext()
      • Set VariableSet highest_warden[SaveLoadEvent_PN] = SaveValue[SaveCount]
      • -------- --------
      • -------- HIGHEST DH: --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 10
      • Custom script: call SaveHelper.GUILoadNext()
      • Set VariableSet highest_dh[SaveLoadEvent_PN] = SaveValue[SaveCount]
      • -------- --------
      • -------- HIGHEST POTM: --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 10
      • Custom script: call SaveHelper.GUILoadNext()
      • Set VariableSet highest_potm[SaveLoadEvent_PN] = SaveValue[SaveCount]
      • -------- --------
      • -------- HIGHEST KOTG: --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 10
      • Custom script: call SaveHelper.GUILoadNext()
      • Set VariableSet highest_kotg[SaveLoadEvent_PN] = SaveValue[SaveCount]
      • -------- --------
      • -------- HIGHEST HARDCORE: --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 10
      • Custom script: call SaveHelper.GUILoadNext()
      • Set VariableSet highest_hardcore[SaveLoadEvent_PN] = SaveValue[SaveCount]
      • -------- --------
      • -------- HIGHEST EXPLORATION: --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 10
      • Custom script: call SaveHelper.GUILoadNext()
      • Set VariableSet highest_exploration[SaveLoadEvent_PN] = SaveValue[SaveCount]
      • -------- --------
      • -------- HIGHEST STANDARD: --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 10
      • Custom script: call SaveHelper.GUILoadNext()
      • Set VariableSet highest_standard[SaveLoadEvent_PN] = SaveValue[SaveCount]
      • -------- --------
      • -------- HIGHEST NO DEMON MAGIC: --------
      • Set VariableSet SaveCount = (SaveCount + 1)
      • Set VariableSet SaveMaxValue[SaveCount] = 10
      • Custom script: call SaveHelper.GUILoadNext()
      • Set VariableSet highest_no_demon_magic[SaveLoadEvent_PN] = SaveValue[SaveCount]
      • -------- --------
      • -------- STOP --------
      • -------- --------
      • -------- --------
      • Custom script: call Savecode(udg_SaveTempInt).destroy()
  • Custom Auto Load Start
    • Events
      • Time - Elapsed game time is 1.50 seconds
    • Conditions
    • Actions
      • Player Group - Pick every player in players_grp and do (Actions)
        • Loop - Actions
          • Player Group - Add (Picked player) to load_save_file_group
      • Countdown Timer - Start load_save_file_timer as a Repeating timer that will expire in 0.40 seconds
  • Custom Auto Load Repeat
    • Events
      • Time - load_save_file_timer expires
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of players in load_save_file_group) Greater than 0
        • Then - Actions
          • Set VariableSet SaveLoadEvent_Player = (Random player from load_save_file_group)
          • Set VariableSet SaveLoadEvent_PN = (Player number of SaveLoadEvent_Player)
          • Player Group - Remove SaveLoadEvent_Player from load_save_file_group.
          • Custom script: call LoadSaveSlot(udg_SaveLoadEvent_Player, 1)
        • Else - Actions
          • -------- All players have loaded: --------
          • Custom script: call DestroyForce( udg_load_save_file_group )
          • Countdown Timer - Pause (Expiring timer)
          • Custom script: call DestroyTimer( GetExpiredTimer() )
 
Last edited:
Top