2 Saves, 2 Loads, /w AceHart

maxou

You can change this now in User CP.
Reaction score
15
Hello guys, as you can see the title, my problem is related to AceHart's SaveLoad, in my orpg, I had so many data to save, that I did 2 saves & 2 loads to keep everything okay (codes would become so long that you couldn't write everything in warcraft's chat).

Here are the triggers :
(Note: I'm actually a french baguette, so I translated as good as I could for you guys, I might have forgot some words :/)
Code:
Save 1
    Event
        Player - Player 1 (Red) types a chat message containing -save as exact string
    Conditions
    Actions
        -------- Prepare the save array --------
        Set SaveCount = 0
        -------- Take all Heroes --------
        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
                -------- Save the Hero --------
                Set SaveCount = (SaveCount + 1)
                Set TempUnit = (Picked unit)
                Custom script:  set udg_Save[udg_SaveCount] = SaveLoad_Unit2Integer( udg_TempUnit )
                -------- Abilities --------
                For each (Integer C) from 1 to ChoiceHeroes_ButtonsNumber, do (Actions)
                    Boucle - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            If - Conditions
                                (Unit-type of (Picked unit)) equal to BonusStats_UnitType[C]
                            Then - Actions
                                Set SaveCount = (SaveCount + 1)
                                Set Save[SaveCount] = (Level of BonusStats_Passive[((C x 9) - 8)] for (Picked unit))
                                Set SaveCount = (SaveCount + 1)
                                Set Save[SaveCount] = (Level of BonusStats_Passive[((C x 9) - 7)] for (Picked unit))
                                Set SaveCount = (SaveCount + 1)
                                Set Save[SaveCount] = (Level of BonusStats_Passive[((C x 9) - 6)] for (Picked unit))
                                Set C = ChoiceHeroes_ButtonsNumber
                            Else - Actions
                -------- Gold --------
                Set SaveCount = (SaveCount + 1)
                Set Save[SaveCount] = ((Triggering player) actual Gold)
                -------- Wood --------
                Set SaveCount = (SaveCount + 1)
                Set Save[SaveCount] = ((Triggering player) actual Wood)
                -------- Boost stats --------
                Set SaveCount = (SaveCount + 1)
                Set Save[SaveCount] = (Level of Bonus de stats [quests]  for (Picked unit))
                -------- 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 --------
                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) Egal 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 --------
        Game - Display to (Player group((Triggering player))) for 300.00 seconds the text: Your 1st code:
        Game - Display to (Player group((Triggering player))) for 300.00 seconds the text: Code
Code:
Load 1
    Event
        Joueur - Joueur 1 (Rouge) 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)) superior to 6
    Actions
        -------- Try to decode --------
        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 is a error in your code!
                Skip remaining actions
            Else - Actions
        -------- It worked --------
        Set Load_WaitingDrop[(Player number of (Triggering player))] = TRUE
        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
        Custom script:  set udg_TempUnitType = SaveLoad_Integer2Unit(udg_Save[udg_SaveCount])
        Unit - Create 1 TempUnitType for (Triggering player) at (Center of Drop_Regions[(Player number of (Triggering player))]) facing random angle
        For each (Integer C) from 1 to ChoiceHeroes_ButtonsNumber, do (Actions)
            Boucle - Actions
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        (Unit-type of (Last created unit)) equal to BonusStats_UnitType[C]
                    Then - Actions
                        Set SaveCount = (SaveCount + 1)
                        Unit - Add BonusStats_Passive[(((Integer B) x 9) - 8)] to (Last created unit)
                        Unit - Set level of BonusStats_Passive[(((Integer B) x 9) - 8)] for (Last created unit) to Save[SaveCount]
                        Set SaveCount = (SaveCount + 1)
                        Unit - Add BonusStats_Passive[(((Integer B) x 9) - 7)] to (Last created unit)
                        Unit - Set level of BonusStats_Passive[(((Integer B) x 9) - 7)] for (Last created unit) to Save[SaveCount]
                        Set SaveCount = (SaveCount + 1)
                        Unit - Add BonusStats_Passive[(((Integer B) x 9) - 6)] to (Last created unit)
                        Unit - Set level of BonusStats_Passive[(((Integer B) x 9) - 6)] for (Last created unit) to Save[SaveCount]
                        Set C = ChoiceHeroes_ButtonsNumber
                    Else - Actions
        Set SaveCount = (SaveCount + 1)
        Joueur - Set (Triggering player) actual Gold to Save[SaveCount]
        Set SaveCount = (SaveCount + 1)
        Joueur - Set (Triggering player) actual Wood to Save[SaveCount]
        Set SaveCount = (SaveCount + 1)
        Unit - Add Bonus de stats [quests]  to (Last created unit)
        Unit - Set level of Bonus de stats [quests]  for (Last created unit) to Save[SaveCount]
        Set SaveCount = (SaveCount + 1)
        Heroes - Add Save[SaveCount] experience to (Last created unit), Hide level-up graphics
        Set SaveCount = (SaveCount + 1)
        For each (Integer A) from 1 to Save[SaveCount], do (Actions)
            Loop - Actions
                Set SaveCount = (SaveCount + 1)
                Custom script:  set udg_TempItemType = SaveLoad_Integer2Item(udg_Save[udg_SaveCount])
                Heroes - Create TempItemType and give it to (Last created unit)
                Set SaveCount = (SaveCount + 1)
                Items - Set charges remaining in (Last created item) to Save[SaveCount]
The first save load basically save : Herotype, Level of 3 spell relative to your herotype, Gold&Wood, Boost related to completed quests, HeroExperience, Items, Stack of your items (potions etc..)
 

maxou

You can change this now in User CP.
Reaction score
15
The second Save :
Code:
 Save 2
    Event
        Joueur - Joueur 1 (Rouge) types a chat message containing -save as exact string
    Conditions
    Actions
        -------- Prepare the save array --------
        Set SaveCount = 0
        -------- Ressources --------
        For each (Integer A) from 1 to Ressources_MaxRessources, do (Actions)
            Loop - Actions
                Set SaveCount = (SaveCount + 1)
                Set Save[SaveCount] = Ressources_NumberOfRessources[(((Integer A) x Ressources_MaxRessources) + ((Player number of (Triggering player)) - Ressources_MaxRessources))]
        -------- Quests --------
        For each (Integer A) from 1 to Integer_Max_Quest, do (Actions)
            Loop - Actions
                Set SaveCount = (SaveCount + 1)
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        (Load (Integer A) of (Player number of (Triggering player)) from Quest_Hashtable) equal to 3
                    Then - Actions
                        Set Save[SaveCount] = 3
                    Else - Actions
                        Set Save[SaveCount] = 0
        -------- Turn values into code --------
        Custom script:  set udg_Code = SaveLoad_Encode()
        -------- Show code to player --------
        Partie - Display to (Player group((Triggering player))) for 300.00 seconds the text: Your 2nd code:
        Partie - Display to (Player group((Triggering player))) for 300.00 seconds the text: Code
There is actually 7 differents ressources and 5 quests (Ressources_MaxRessources=7, Integer_Max_Quest=5)

The 2nd Load :
Code:
Load 2
    Event
        Joueur - Joueur 1 (Rouge) types a chat message containing -load2  as a substring
    Conditions
        (Substring((Entered chat string), 1, 7)) equal to (Matched chat string)
        (Length of (Entered chat string)) superior to 7
    Actions
        -------- Try to decode --------
        Set Code = (Substring((Entered chat string), 8, (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 is an error in your code!
                Skip remaining actions
            Else - Actions
        -------- It worked --------
        Set Load_WaitingDrop[(Player number of (Triggering player))] = FALSE
        Set SaveCount = 0
        For each (Integer A) from 1 to Ressources_MaxRessources, do (Actions)
            Loop - Actions
                Set SaveCount = (SaveCount + 1)
                Set Ressources_NumberOfRessources[(((Integer A) x Ressources_MaxRessources) + ((Player number of (Triggering player)) - Ressources_MaxRessources))] = Save[SaveCount]
        For each (Integer A) from 1 to Integer_Max_Quest, do (Actions)
            Loop - Actions
                Set SaveCount = (SaveCount + 1)
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        Save[SaveCount] equal to 3
                    Then - Actions
                        Hashtable - Save 3 as (Integer A) of (Player number of (Triggering player)) in Quest_Hashtable
                    Else - Actions
                        Hashtable - Save 0 as (Integer A) of (Player number of (Triggering player)) in Quest_Hashtable


So I hope you guys can help me, that's the 1st time I split a save load in 2 codes, and I hope you guys can help me. Thank you for at last reading and trying to help me guys!
 

maxou

You can change this now in User CP.
Reaction score
15
Okay after some test, the problem comes from the 1st save/load.. anyone got an idea? As I can see it only load 1 item.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top