• 🏆 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!

Problem with my savesystem

Status
Not open for further replies.
Level 7
Joined
Apr 7, 2009
Messages
241
Im having a small problem with my savesystem. When I load my character I only get back the item I had in my first item slot, the other 5 item slots are always empty :S

Other than that it works fine, here's the different triggers:

Setup:
  • Events
    • Map initialization
  • Conditions
  • Actions
    • -------- List of Heroes --------
    • Set SaveLoad_Heroes[1] = Mage
    • Set SaveLoad_Heroes[2] = Berserker
    • Set SaveLoad_Heroes[3] = Bladerunner
    • -------- Number of Heroes --------
    • Set SaveLoad_Heroes_LastIndex = 3
    • -------- List of Items --------
    • Set SaveLoad_Items[1] = Halberd
    • Set SaveLoad_Items[2] = Wizard Hat
    • Set SaveLoad_Items[3] = Arcane Rod
    • Set SaveLoad_Items[4] = Royal Helmet
    • Set SaveLoad_Items[5] = Wooden Club
    • Set SaveLoad_Items[6] = Wooden Armor
    • Set SaveLoad_Items[7] = Bloodclaw
    • Set SaveLoad_Items[8] = Mercenary Armor
    • Set SaveLoad_Items[9] = Steelsword
    • Set SaveLoad_Items[10] = Buckler
    • Set SaveLoad_Items[11] = Apprentice Mask
    • Set SaveLoad_Items[12] = Wooden Staff
    • Set SaveLoad_Items[13] = ffgfdgfdg
    • Set SaveLoad_Items[14] = asdasd
    • Set SaveLoad_Items[15] = Booze-filled Mug
    • Set SaveLoad_Items[16] = Iron Helmet
    • Set SaveLoad_Items[17] = Magic Wand
    • Set SaveLoad_Items[18] = Axe
    • -------- Number of Items --------
    • Set SaveLoad_Items_LastIndex = 18
    • -------- List of Abilities --------
    • Set SaveLoad_Abilities[1] = Acid Bomb
    • -------- 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 = DumbDumb360s Ancien...
    • Set Save[1] = 0
    • Set SaveCount = 1
    • Set Validate = False
    • Set SaveLoad_Compress[1] = 0
    • Set SaveLoad_Uncompress[1] = 0
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
    • Player - Player 5 (Yellow) types a chat message containing -save as An exact match
    • Player - Player 6 (Orange) types a chat message containing -save as An exact match
    • Player - Player 7 (Green) types a chat message containing -save as An exact match
    • Player - Player 8 (Pink) types a chat message containing -save as An exact match
    • Player - Player 9 (Gray) types a chat message containing -save as An exact match
    • Player - Player 10 (Light Blue) types a chat message containing -save as An exact match
  • 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))
        • -------- Hero Position X --------
        • Set SaveCount = (SaveCount + 1)
        • Set Save[SaveCount] = (Integer((X of (Position of (Picked unit)))))
        • -------- Hero Position Y --------
        • Set SaveCount = (SaveCount + 1)
        • Set Save[SaveCount] = (Integer((Y of (Position 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 --------
        • For each (Integer A) from 1 to 6, do (Actions)
          • Loop - Actions
            • If (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
    • -------- 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 120.00 seconds the text: Code
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
    • Player - Player 5 (Yellow) types a chat message containing -load as A substring
    • Player - Player 6 (Orange) types a chat message containing -load as A substring
    • Player - Player 7 (Green) types a chat message containing -load as A substring
    • Player - Player 8 (Pink) types a chat message containing -load as A substring
    • Player - Player 9 (Gray) types a chat message containing -load as A substring
    • Player - Player 10 (Light Blue) 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 )
    • If (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 SaveCount = 1
    • -------- Restore Gold --------
    • Player - Set (Triggering player) Current gold to Save[SaveCount]
    • -------- For "number of Heroes", do --------
    • Set SaveCount = (SaveCount + 1)
    • For 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])
        • Set Camera_unit[(Player number of (Triggering player))] = No unit
        • Unit - Create 1 TempUnitType for (Triggering player) at ((Triggering player) start location) facing Default building facing degrees
        • Set Camera_unit[(Player number of (Triggering player))] = (Last created unit)
        • -------- Set Experience --------
        • Set SaveCount = (SaveCount + 1)
        • Hero - Set (Last created unit) experience to Save[SaveCount], Hide level-up graphics
        • -------- Move to saved position --------
        • Set SaveCount = (SaveCount + 1)
        • Unit - Move (Last created unit) instantly to (Point((Real(Save[SaveCount])), (Real(Save[(SaveCount + 1)]))))
        • Set SaveCount = (SaveCount + 1)
        • -------- Recreate all items --------
        • Set SaveCount = (SaveCount + 1)
        • For 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]
+rep to the one that solves this :con:
 
Level 7
Joined
Apr 7, 2009
Messages
241
Does it work in the other map?

Does the item creation loop run the correct amount of times?

Yes it works in the other map.

I have no idea if the item creation loop run the correct amount of times... I am not very good at this kind of stuff, that's why I need help : /

Shouldnt you be able to see that by looking at the triggers?
 
Level 37
Joined
Mar 6, 2006
Messages
9,240
You can use "Game - Display text" in the loop to test how many times it runs.

It's kind of difficult to see what's wrong just by looking at those triggers, and it takes too long to test with that map. The code had about 50 chars, and then I went and mistyped it. At that point I gave up.

Sometimes things can bug if you use Integer A or integer B. You can try using your own variables if nothing else solves the issue.
 
Status
Not open for further replies.
Top