• 🏆 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] Modified AceHart's Save And Load System

Status
Not open for further replies.
Level 2
Joined
May 9, 2012
Messages
19
i'm kinda a newbie to world editing and i modified the acehart's save and load system , the hero's xp and gold are working correctly (save + load) , but the abilities it doesn't gets save or even if i load it it doesn't gets load dunno why any help will be appreciated though +rep
here's my save and load trigs :ogre_rage:
Save
  • SaveLoad Save
    • Events
      • Player - Player 1 (Red) types a chat message containing -save as An exact match
      • Player - Player 2 (Blue) types a chat message containing -save as An exact match
      • Player - Player 3 (Teal) types a chat message containing -save as An exact match
      • Player - Player 4 (Purple) types a chat message containing -save as An exact match
    • Conditions
    • Actions
      • -------- Prepare the save array with this player's Hero --------
      • Set SaveCount = 0
      • -------- Player's Gold --------
      • Set SaveCount = (SaveCount + 1)
      • Set Save[SaveCount] = ((Triggering player) Current gold)
      • -------- Take all Heroes --------
      • Set UnitGroup = (Units owned by (Triggering player) matching (((Matching unit) is A Hero) Equal to (==) True))
      • Set SaveCount = (SaveCount + 1)
      • Set Save[SaveCount] = (Number of units in UnitGroup)
      • Unit Group - Pick every unit in UnitGroup and do (Actions)
        • Loop - Actions
          • -------- Save the Hero --------
          • Set SaveCount = (SaveCount + 1)
          • Set TempUnit = (Picked unit)
          • Custom script: set udg_Save[udg_SaveCount] = SaveLoad_Unit2Integer( udg_TempUnit )
          • -------- Hero Experience --------
          • Set SaveCount = (SaveCount + 1)
          • Set Save[SaveCount] = (Hero experience of (Picked unit))
          • -------- How many items does he carry --------
          • Set SaveCount = (SaveCount + 1)
          • Set Save[SaveCount] = (Number of items carried by (Picked unit))
          • -------- Add all items --------
            • Do Multiple ActionsFor each (Integer A) from 1 to 6, do (Actions)
              • Loop - Actions
                • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • ((Item carried by (Picked unit) in slot (Integer A)) is owned) Equal to (==) True
                  • Then - Actions
                    • -------- The actual item --------
                    • Set SaveCount = (SaveCount + 1)
                    • Set TempItem = (Item carried by (Picked unit) in slot (Integer A))
                    • Custom script: set udg_Save[udg_SaveCount] = SaveLoad_Item2Integer( udg_TempItem )
                    • -------- The number of charges it has --------
                    • Set SaveCount = (SaveCount + 1)
                    • Set Save[SaveCount] = (Charges remaining in (Item carried by (Picked unit) in slot (Integer A)))
                  • Else - Actions
                    • Do Multiple ActionsFor each (Integer A) from 1 to SaveLoad_Abilities_LastIndex, do (Actions)
                      • Loop - Actions
                        • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                          • If - Conditions
                            • (Level of SaveLoad_Abilities[(Integer A)] for (Picked unit)) Greater than (>) 0
                          • Then - Actions
                            • -------- The actual ability --------
                            • Set SaveCount = (SaveCount + 1)
                            • Set Save[SaveCount] = (Integer A)
                            • -------- Its level --------
                            • Set SaveCount = (SaveCount + 1)
                            • Set Save[SaveCount] = (Level of SaveLoad_Abilities[(Integer A)] for (Picked unit))
                          • Else - Actions
      • -------- Turn values into code --------
      • Custom script: set udg_Code = SaveLoad_Encode()
      • -------- Show code to player --------
      • Quest - Display to (Player group((Triggering player))) the Secret message: Your code:
      • Game - Display to (Player group((Triggering player))) for 60.00 seconds the text: Code
Load
  • SaveLoad Load
    • Events
      • Player - Player 1 (Red) types a chat message containing -load as A substring
      • Player - Player 2 (Blue) types a chat message containing -load as A substring
      • Player - Player 3 (Teal) types a chat message containing -load as A substring
      • Player - Player 4 (Purple) types a chat message containing -load as A substring
    • Conditions
      • (Substring((Entered chat string), 1, 6)) Equal to (==) (Matched chat string)
      • (Length of (Entered chat string)) Greater than (>) 6
    • Actions
      • -------- Try to decode what was typed --------
      • Set Code = (Substring((Entered chat string), 7, (Length of (Entered chat string))))
      • Custom script: set udg_Validate = SaveLoad_Decode( udg_Code )
        • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • Validate Equal to (==) False
          • Then - Actions
            • -------- Invalid code --------
            • Game - Display to (Player group((Triggering player))) the text: There's some error ...
            • Skip remaining actions
          • Else - Actions
      • -------- It worked, let's do something with it --------
      • Unit Group - Pick every unit in (Units owned by (Triggering player) matching (((Matching unit) is A Hero) Equal to (==) True)) and do (Actions)
        • Loop - Actions
          • Unit - Remove (Picked unit) from the game
      • Set TempInteger = SaveCount
      • Set SaveCount = 1
      • -------- Restore Gold --------
      • Player - Set (Triggering player) Current gold to Save[SaveCount]
      • -------- For "number of Heroes", do --------
      • Set SaveCount = (SaveCount + 1)
        • Do Multiple ActionsFor each (Integer B) from 1 to Save[SaveCount], do (Actions)
          • Loop - Actions
            • -------- Restore Hero --------
            • Set SaveCount = (SaveCount + 1)
            • Custom script: set udg_TempUnitType = SaveLoad_Integer2Unit(udg_Save[udg_SaveCount])
            • Unit - Create 1 TempUnitType for (Triggering player) at ((Triggering player) start location) facing Default building facing (270.0) degrees
            • -------- Set Experience --------
            • Set SaveCount = (SaveCount + 1)
            • Hero - Set (Last created unit) experience to Save[SaveCount], Hide level-up graphics
            • -------- Recreate all items --------
            • Set SaveCount = (SaveCount + 1)
              • Do Multiple ActionsFor each (Integer A) from 1 to Save[SaveCount], do (Actions)
                • Loop - Actions
                  • -------- The actual item --------
                  • Set SaveCount = (SaveCount + 1)
                  • Custom script: set udg_TempItemType = SaveLoad_Integer2Item(udg_Save[udg_SaveCount])
                  • Hero - Create TempItemType and give it to (Last created unit)
                  • -------- Number of charges --------
                  • Set SaveCount = (SaveCount + 1)
                  • Item - Set charges remaining in (Last created item) to Save[SaveCount]
                  • -------- Restore All Abilities --------
                    • Do Multiple ActionsFor each (Integer SaveCount) from (SaveCount + 1) to TempInteger, do (Actions)
                      • Loop - Actions
                        • Do Multiple ActionsFor each (Integer A) from 1 to Save[(SaveCount + 1)], do (Actions)
                          • Loop - Actions
                            • Custom script: call SelectHeroSkill( GetLastCreatedUnit(), udg_SaveLoad_Abilities[ udg_Save[ udg_SaveCount ] ] )
                        • Set SaveCount = (SaveCount + 1)
 
Level 12
Joined
Feb 22, 2010
Messages
1,115
In save trigger, the integer A loop that saves abilities must be completely outside of item save loop, not in the else part of it.Move whole else part to outside.

I think same thing for Load trigger, loading abilities and loading items are different things.
 
Level 13
Joined
Jul 16, 2012
Messages
679
In save trigger, the integer A loop that saves abilities must be completely outside of item save loop, not in the else part of it.Move whole else part to outside.

I think same thing for Load trigger, loading abilities and loading items are different things.

yeah. your right xD... just move it in Then and test it xD
 
Level 2
Joined
May 9, 2012
Messages
19
wait it doesn't save any abilities that can't be learned ? i mean the hero has no Sword Strike +1 but i add it using triggers so the hero has Sword Strike +1 he upgraded it to Sword Strike +2 but when i type -save it doesn't gets save and when it gets loaded the hero has no Sword Strike ability ?
 
Level 12
Joined
Feb 22, 2010
Messages
1,115
Actually it is probably saving that skill but when you are loading abilities you are using:

Custom script: call SelectHeroSkil

this is equivalent to:

  • Hero - learn ability
action.You need to seperate learnable abilities and abilities added via trigger in some way.
 
Level 2
Joined
May 9, 2012
Messages
19
Actually it is probably saving that skill but when you are loading abilities you are using:

Custom script: call SelectHeroSkil

this is equivalent to:

  • Hero - learn ability
action.You need to seperate learnable abilities and abilities added via trigger in some way.

Should i use this ?
  • Do Multiple ActionsFor each (Integer SaveCount) from (SaveCount + 1) to TempInteger, do (Actions)
    • Loop - Actions
      • Do Multiple ActionsFor each (Integer A) from 1 to Save[(SaveCount + 1)], do (Actions)
        • Loop - Actions
          • Unit - Add SaveLoad_Abilities[Save[SaveCount]] to (Last created unit)
          • Unit - Set level of SaveLoad_Abilities[Save[SaveCount]] for (Last created unit) to Save[SaveCount]
      • Set SaveCount = (SaveCount + 1)
EDIT : THE ABILITY GETS SAVE AND CAN BE LOADED BUT THE ABILITY LEVEL DOESN'T ? WHY PLZ HELP
 
Level 12
Joined
Feb 22, 2010
Messages
1,115
Check if the ability is in Save System's ability list, if ability is in the list post your last save/load triggers.(Yeah it is probably in list, just post triggers)
 
Level 2
Joined
May 9, 2012
Messages
19
Check if the ability is in Save System's ability list, if ability is in the list post your last save/load triggers.(Yeah it is probably in list, just post triggers)

Okay sir here it is
  • SaveLoad Init
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- List of Heroes --------
      • Set SaveLoad_Heroes[1] = Hero Stats
      • Set SaveLoad_Heroes[2] = Blood Mage
      • -------- Number of Heroes --------
      • Set SaveLoad_Heroes_LastIndex = 2
      • -------- List of Items --------
      • Set SaveLoad_Items[1] = Claws of Attack +15
      • Set SaveLoad_Items[2] = Cheese
      • Set SaveLoad_Items[3] = Wand of Lightning Shield
      • Set SaveLoad_Items[4] = Magic Key Chain
      • -------- Number of Items --------
      • Set SaveLoad_Items_LastIndex = 4
      • -------- List of Abilities --------
      • Set SaveLoad_Abilities[1] = Reputation (Good)
      • -------- Number of Abilities --------
      • Set SaveLoad_Abilities_LastIndex = 1
      • -------- These three lines may be changed if needed --------
      • Set SaveLoad_Alphabet = ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
      • Set SaveLoad_CaseSensitive = False
      • Set SaveLoad_UsePlayername = True
      • -------- Required: false --------
      • Set SaveLoad_Initialized = False
      • -------- Leave as is. Used to autocreate variables when copy & pasting to a new map --------
      • Set Code = AceHart
      • Set Save[1] = 0
      • Set SaveCount = 1
      • Set Validate = False
      • Set SaveLoad_Compress[1] = 0
      • Set SaveLoad_Uncompress[1] = 0
Save
  • SaveLoad Save
    • Events
      • Player - Player 1 (Red) types a chat message containing -save as An exact match
      • Player - Player 2 (Blue) types a chat message containing -save as An exact match
      • Player - Player 3 (Teal) types a chat message containing -save as An exact match
      • Player - Player 4 (Purple) types a chat message containing -save as An exact match
    • Conditions
    • Actions
      • -------- Prepare the save array with this player's Hero --------
      • Set SaveCount = 0
      • -------- Player's Gold --------
      • Set SaveCount = (SaveCount + 1)
      • Set Save[SaveCount] = ((Triggering player) Current gold)
      • -------- Save Curren Job Level --------
      • Set SaveCount = (SaveCount + 1)
      • Set Save[SaveCount] = JobLevel[(Player number of (Triggering player))]
      • -------- Save Curren Job Points --------
      • Set SaveCount = (SaveCount + 1)
      • Set Save[SaveCount] = JobPoints[(Player number of (Triggering player))]
      • -------- Take all Heroes --------
      • Set UnitGroup = (Units owned by (Triggering player) matching (((Matching unit) is A Hero) Equal to (==) True))
      • Set SaveCount = (SaveCount + 1)
      • Set Save[SaveCount] = (Number of units in UnitGroup)
      • Unit Group - Pick every unit in UnitGroup and do (Actions)
        • Loop - Actions
          • -------- Save the Hero --------
          • Set SaveCount = (SaveCount + 1)
          • Set TempUnit = (Picked unit)
          • Custom script: set udg_Save[udg_SaveCount] = SaveLoad_Unit2Integer( udg_TempUnit )
          • -------- Hero Experience --------
          • Set SaveCount = (SaveCount + 1)
          • Set Save[SaveCount] = (Hero experience of (Picked unit))
          • -------- How many items does he carry --------
          • Set SaveCount = (SaveCount + 1)
          • Set Save[SaveCount] = (Number of items carried by (Picked unit))
          • -------- Add all items --------
            • Do Multiple ActionsFor each (Integer A) from 1 to 6, do (Actions)
              • Loop - Actions
                • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • ((Item carried by (Picked unit) in slot (Integer A)) is owned) Equal to (==) True
                  • Then - Actions
                    • -------- The actual item --------
                    • Set SaveCount = (SaveCount + 1)
                    • Set TempItem = (Item carried by (Picked unit) in slot (Integer A))
                    • Custom script: set udg_Save[udg_SaveCount] = SaveLoad_Item2Integer( udg_TempItem )
                    • -------- The number of charges it has --------
                    • Set SaveCount = (SaveCount + 1)
                    • Set Save[SaveCount] = (Charges remaining in (Item carried by (Picked unit) in slot (Integer A)))
                  • Else - Actions
            • Do Multiple ActionsFor each (Integer A) from 1 to SaveLoad_Abilities_LastIndex, do (Actions)
              • Loop - Actions
                • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
                  • If - Conditions
                    • (Level of SaveLoad_Abilities[(Integer A)] for (Picked unit)) Greater than (>) 0
                  • Then - Actions
                    • -------- The actual ability --------
                    • Set SaveCount = (SaveCount + 1)
                    • Set Save[SaveCount] = (Integer A)
                    • -------- Its level --------
                    • Set SaveCount = (SaveCount + 1)
                    • Set Save[SaveCount] = (Level of SaveLoad_Abilities[(Integer A)] for (Picked unit))
                  • Else - Actions
      • -------- Turn values into code --------
      • Custom script: set udg_Code = SaveLoad_Encode()
      • -------- Show code to player --------
      • Quest - Display to (Player group((Triggering player))) the Secret message: Your code:
      • Game - Display to (Player group((Triggering player))) for 60.00 seconds the text: Code
Load
  • SaveLoad Load
    • Events
      • Player - Player 1 (Red) types a chat message containing -load as A substring
      • Player - Player 2 (Blue) types a chat message containing -load as A substring
      • Player - Player 3 (Teal) types a chat message containing -load as A substring
      • Player - Player 4 (Purple) types a chat message containing -load as A substring
    • Conditions
      • (Substring((Entered chat string), 1, 6)) Equal to (==) (Matched chat string)
      • (Length of (Entered chat string)) Greater than (>) 6
    • Actions
      • -------- Try to decode what was typed --------
      • Set Code = (Substring((Entered chat string), 7, (Length of (Entered chat string))))
      • Custom script: set udg_Validate = SaveLoad_Decode( udg_Code )
        • Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
          • If - Conditions
            • Validate Equal to (==) False
          • Then - Actions
            • -------- Invalid code --------
            • Game - Display to (Player group((Triggering player))) the text: There's some error ...
            • Skip remaining actions
          • Else - Actions
      • -------- It worked, let's do something with it --------
      • Unit Group - Pick every unit in (Units owned by (Triggering player) matching (((Matching unit) is A Hero) Equal to (==) True)) and do (Actions)
        • Loop - Actions
          • Unit - Remove (Picked unit) from the game
      • Set TempInteger = SaveCount
      • Set SaveCount = 1
      • -------- Restore Gold --------
      • Player - Set (Triggering player) Current gold to Save[SaveCount]
      • -------- Load Job Level --------
      • Set SaveCount = (SaveCount + 1)
      • Set JobLevel[(Player number of (Triggering player))] = Save[SaveCount]
      • -------- Load Job Points --------
      • Set SaveCount = (SaveCount + 1)
      • Set JobPoints[(Player number of (Triggering player))] = Save[SaveCount]
      • -------- For "number of Heroes", do --------
      • Set SaveCount = (SaveCount + 1)
        • Do Multiple ActionsFor each (Integer B) from 1 to Save[SaveCount], do (Actions)
          • Loop - Actions
            • -------- Restore Hero --------
            • Set SaveCount = (SaveCount + 1)
            • Custom script: set udg_TempUnitType = SaveLoad_Integer2Unit(udg_Save[udg_SaveCount])
            • Unit - Create 1 TempUnitType for (Triggering player) at ((Triggering player) start location) facing Default building facing (270.0) degrees
            • -------- Set Experience --------
            • Set SaveCount = (SaveCount + 1)
            • Hero - Set (Last created unit) experience to Save[SaveCount], Hide level-up graphics
            • -------- Recreate all items --------
            • Set SaveCount = (SaveCount + 1)
              • Do Multiple ActionsFor each (Integer A) from 1 to Save[SaveCount], do (Actions)
                • Loop - Actions
                  • -------- The actual item --------
                  • Set SaveCount = (SaveCount + 1)
                  • Custom script: set udg_TempItemType = SaveLoad_Integer2Item(udg_Save[udg_SaveCount])
                  • Hero - Create TempItemType and give it to (Last created unit)
                  • -------- Number of charges --------
                  • Set SaveCount = (SaveCount + 1)
                  • Item - Set charges remaining in (Last created item) to Save[SaveCount]
            • -------- Restore All Abilities --------
              • Do Multiple ActionsFor each (Integer SaveCount) from (SaveCount + 1) to TempInteger, do (Actions)
                • Loop - Actions
                  • Do Multiple ActionsFor each (Integer A) from 1 to Save[(SaveCount + 1)], do (Actions)
                    • Loop - Actions
                      • Unit - Add SaveLoad_Abilities[Save[SaveCount]] to (Last created unit)
                      • Unit - Set level of SaveLoad_Abilities[Save[SaveCount]] for (Last created unit) to Save[SaveCount]
                  • Set SaveCount = (SaveCount + 1)
 
Level 12
Joined
Feb 22, 2010
Messages
1,115
Unit - Set level of SaveLoad_Abilities[Save[SaveCount]] for (Last created unit) to Save[SaveCount]

change this line to

Unit - Set level of SaveLoad_Abilities[Save[SaveCount]] for (Last created unit) to Save[SaveCount + 1]
 
Status
Not open for further replies.
Top