Save/Load Code, Yet Another

theonlylok1

New Member
Reaction score
0
These are all my triggers don't know whats wrong.

Code:
SaveLoad Initialization All
    Events
        Map initialization
    Conditions
    Actions
        -------- List of Heroes --------
        Set SaveLoad_Heroes[1] = |cff171717Evil|r
        Set SaveLoad_Heroes[2] = |CFF9999FFIce Lord|r
        Set SaveLoad_Heroes[3] = |cffFFFF00Templar Knight|r
        Set SaveLoad_Heroes[4] = |cff0000FFTime Keeper|r
        Set SaveLoad_Heroes[5] = |cffFF0000Legion|r
        Set SaveLoad_Heroes[6] = |cff00FF00Fallen Angel|r
        Set SaveLoad_Heroes[7] = |cff8000FFAssassin|r
        Set SaveLoad_Heroes[8] = |cffFFFFFFWhitePhoenix|r
        -------- Number of Heroes --------
        Set SaveLoad_Heroes_LastIndex = 8
        -------- 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] = |cff0000FFBackstab|r 
        Set SaveLoad_Abilities[2] = |cff0000FFBacktrack|r
        Set SaveLoad_Abilities[3] = |cff0000FFBlade Beam|r 
        Set SaveLoad_Abilities[4] = |cff0000FFBlade of Everlasting Life|r 
        Set SaveLoad_Abilities[5] = |cff0000FFBlessing of Might|r 
        Set SaveLoad_Abilities[6] = |cff0000FFCoil of Life|r 
        Set SaveLoad_Abilities[7] = |cff0000FFCrusader Strike|r 
        Set SaveLoad_Abilities[8] = |cff0000FFFar Sight|r 
        Set SaveLoad_Abilities[9] = |cff0000FFFear|r  (Archimonde)
        Set SaveLoad_Abilities[10] = |cff0000FFFlash|r 
        Set SaveLoad_Abilities[11] = |cff0000FFFlurry|r 
        Set SaveLoad_Abilities[12] = |cff0000FFMind Blast|r 
        Set SaveLoad_Abilities[13] = |cff0000FFMotivation|r 
        Set SaveLoad_Abilities[14] = |cff0000FFMulti-Shot|r
        Set SaveLoad_Abilities[15] = |cff0000FFNet|r  
        Set SaveLoad_Abilities[16] = |cff0000FFQuarter Strike|r 
        Set SaveLoad_Abilities[17] = |cff0000FFReapers Scyte|r 
        Set SaveLoad_Abilities[18] = |cff0000FFSeal of Vengeance|r 
        Set SaveLoad_Abilities[19] = |cff0000FFShadow Pain|r 
        Set SaveLoad_Abilities[20] = |cff0000FFThunder Teleportation|r 
        Set SaveLoad_Abilities[21] = |cff0000FFTime Stop|r 
        Set SaveLoad_Abilities[22] = |cff0000FFToxic Storm|r 
        Set SaveLoad_Abilities[23] = |cff0000FFWard of Invisibility|r 
        Set SaveLoad_Abilities[24] = |cff00FF00Basic Training|r
        Set SaveLoad_Abilities[25] = |cffFF0000Crusader|r 
        Set SaveLoad_Abilities[26] = |cffFF0000Eviserate|r 
        Set SaveLoad_Abilities[27] = |cffFF0000Illusion Strike|r 
        Set SaveLoad_Abilities[28] = |cffFF0000Magnetic Storm|r 
        Set SaveLoad_Abilities[29] = |cffFF0000Shadowform|r 
        Set SaveLoad_Abilities[30] = |cffFF0000Stealth|r 
        Set SaveLoad_Abilities[31] = |cffFF0000Time Travel|r
        Set SaveLoad_Abilities[32] = |cffFF0000Transdimensional Arrows|r 
        Set SaveLoad_Abilities[33] = |cff0000FFMana Shield|r (Neutral Hostile)
        -------- Number of Abilities --------
        Set SaveLoad_Abilities_LastIndex = 33
        -------- 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

Code:
SaveLoad Save All
    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))
                -------- Heros Stats --------
                Set SaveCount = (SaveCount + 1)
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        (Triggering player) Equal to Player 1 (Red)
                    Then - Actions
                        Set Save[SaveCount] = (Integer(Stats1))
                    Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            If - Conditions
                                (Triggering player) Equal to Player 2 (Blue)
                            Then - Actions
                                Set Save[SaveCount] = (Integer(Stats2))
                            Else - Actions
                                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    If - Conditions
                                        (Triggering player) Equal to Player 3 (Teal)
                                    Then - Actions
                                        Set Save[SaveCount] = (Integer(Stats3))
                                    Else - Actions
                                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                            If - Conditions
                                                (Triggering player) Equal to Player 4 (Purple)
                                            Then - Actions
                                                Set Save[SaveCount] = (Integer(Stats4))
                                            Else - Actions
                                                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                    If - Conditions
                                                        (Triggering player) Equal to Player 5 (Yellow)
                                                    Then - Actions
                                                        Set Save[SaveCount] = (Integer(Stats5))
                                                    Else - Actions
                                                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                            If - Conditions
                                                                (Triggering player) Equal to Player 6 (Orange)
                                                            Then - Actions
                                                                Set Save[SaveCount] = (Integer(Stats6))
                                                            Else - Actions
                                                                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                                    If - Conditions
                                                                        (Triggering player) Equal to Player 7 (Green)
                                                                    Then - Actions
                                                                        Set Save[SaveCount] = (Integer(Stats7))
                                                                    Else - Actions
                                                                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                                            If - Conditions
                                                                                (Triggering player) Equal to Player 8 (Pink)
                                                                            Then - Actions
                                                                                Set Save[SaveCount] = (Integer(Stats8))
                                                                            Else - Actions
                                                                                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                                                    If - Conditions
                                                                                        (Triggering player) Equal to Player 9 (Gray)
                                                                                    Then - Actions
                                                                                        Set Save[SaveCount] = (Integer(Stats9))
                                                                                    Else - Actions
                                                                                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                                                            If - Conditions
                                                                                                (Triggering player) Equal to Player 10 (Light Blue)
                                                                                            Then - Actions
                                                                                                Set Save[SaveCount] = (Integer(Stats101))
                                                                                            Else - Actions
                                                                                                Do nothing
                -------- Heros Energy --------
                Set SaveCount = (SaveCount + 1)
                Set Save[SaveCount] = (Intelligence of (Picked unit) (Exclude bonuses))
                -------- Heros Agility --------
                Set SaveCount = (SaveCount + 1)
                Set Save[SaveCount] = (Agility of (Picked unit) (Exclude bonuses))
                -------- Heros Strength --------
                Set SaveCount = (SaveCount + 1)
                Set Save[SaveCount] = (Strength of (Picked unit) (Exclude bonuses))
                -------- 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))
                                Item - Make (Item carried by (Picked unit) in slot (Integer A)) Undroppable
                                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 60.00 seconds the text: Code

Code:
SaveLoad Load All
    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 )
        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])
                Unit - Create 1 TempUnitType for (Triggering player) at ((Triggering player) start location) facing Default building facing degrees
                -------- Set Experience --------
                Trigger - Turn off level up <gen>
                Set SaveCount = (SaveCount + 1)
                Hero - Set (Last created unit) experience to Save[SaveCount], Hide level-up graphics
                -------- Heros Stats --------
                Trigger - Turn on level up <gen>
                Set SaveCount = (SaveCount + 1)
                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    If - Conditions
                        (Triggering player) Equal to Player 1 (Red)
                    Then - Actions
                        Set Stats1 = (Real(Save[SaveCount]))
                    Else - Actions
                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            If - Conditions
                                (Triggering player) Equal to Player 2 (Blue)
                            Then - Actions
                                Set Stats2 = (Real(Save[SaveCount]))
                            Else - Actions
                                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                    If - Conditions
                                        (Triggering player) Equal to Player 3 (Teal)
                                    Then - Actions
                                        Set Stats3 = (Real(Save[SaveCount]))
                                    Else - Actions
                                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                            If - Conditions
                                                (Triggering player) Equal to Player 4 (Purple)
                                            Then - Actions
                                                Set Stats4 = (Real(Save[SaveCount]))
                                            Else - Actions
                                                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                    If - Conditions
                                                        (Triggering player) Equal to Player 5 (Yellow)
                                                    Then - Actions
                                                        Set Stats5 = (Real(Save[SaveCount]))
                                                    Else - Actions
                                                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                            If - Conditions
                                                                (Triggering player) Equal to Player 6 (Orange)
                                                            Then - Actions
                                                                Set Stats6 = (Real(Save[SaveCount]))
                                                            Else - Actions
                                                                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                                    If - Conditions
                                                                        (Triggering player) Equal to Player 7 (Green)
                                                                    Then - Actions
                                                                        Set Stats7 = (Real(Save[SaveCount]))
                                                                    Else - Actions
                                                                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                                            If - Conditions
                                                                                (Triggering player) Equal to Player 8 (Pink)
                                                                            Then - Actions
                                                                                Set Stats8 = (Real(Save[SaveCount]))
                                                                            Else - Actions
                                                                                If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                                                    If - Conditions
                                                                                        (Triggering player) Equal to Player 9 (Gray)
                                                                                    Then - Actions
                                                                                        Set Stats9 = (Real(Save[SaveCount]))
                                                                                    Else - Actions
                                                                                        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                                                                            If - Conditions
                                                                                                (Triggering player) Equal to Player 10 (Light Blue)
                                                                                            Then - Actions
                                                                                                Set Stats101 = (Real(Save[SaveCount]))
                                                                                            Else - Actions
                                                                                                Do nothing
                -------- Heros Energy --------
                Set SaveCount = (SaveCount + 1)
                Hero - Modify Intelligence of (Last created unit): Set to Save[SaveCount]
                -------- Heros Agility --------
                Set SaveCount = (SaveCount + 1)
                Hero - Modify Agility of (Last created unit): Set to Save[SaveCount]
                -------- Heros Strength --------
                Set SaveCount = (SaveCount + 1)
                Hero - Modify Strength of (Last created unit): Set to Save[SaveCount]
                -------- 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])
                        Item - Make (Item carried by (Picked unit) in slot (Integer A)) Undroppable
                        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]
 

emjlr3

Change can be a good thing
Reaction score
395
FYI, its rather easy to reach the OP limit with this - I did so with 6 items + 1 ability

added in some Sleeps to stop it

don't remember if you mentioned that or not throughout your post
 

AceHart

Your Friendly Neighborhood Admin
Reaction score
1,497
It should actually only depend on the number of entries in the Hero and Item arrays.
My suggestion would be to keep it to the 10 most used ones.

Hint: it saves ad loads just fine if it does not find anything in those arrays... :p
 

emjlr3

Change can be a good thing
Reaction score
395
i was storing a minimum of 9 and maximum of 23 ^^
 

aaron79

New Member
Reaction score
1
this is very nice and i did everything correctly but when i try it out it says error on > Custom script: set udg_TempUnitType = SaveLoad_Integer2Unit(udg_Save[udg_SaveCount]) on every trigger and it says its expecting a name; is this expecting me to turn it into a string?:banghead:
 

AceHart

Your Friendly Neighborhood Admin
Reaction score
1,497
No, you're expected to read the part called "how to import this" in post #1...

Or many many many other posts in this thread that asked the very same thing.


The problem is rather simple to solve, import the JASS script from the map header...
 

aaron79

New Member
Reaction score
1
this tutorial is great but i have one question. why des it say "expected a name" when i try to save the trigger when i put in


set udg_Code = SaveLoad_Encode()
 

CaptDeath

New Member
Reaction score
103
now this may sound dum but just to chek hero lvl lets say 10000 will be saved yes?
u said 666 so i could cap without directly saying it so if u wouldnt mind enlighting me ace with the truth about your magnificent system
*inhales *
 

AceHart

Your Friendly Neighborhood Admin
Reaction score
1,497
As long as it fits in an integer. Which is around 2 billions and then some...

Then again, I've yet to see a map where 10000 Hero levels make sense :p
 

Linear88

New Member
Reaction score
2
I don't understand the parts Encode and Decode.

When I enable the triggers after copying them, it gives me an error of an expected name.
 

psychophat

New Member
Reaction score
0
Is this okay I've added under "SaveLoad Initialization Abilities":

Set SaveLoad_Heroes[5] = HeroTest5
--
Set SaveLoad_Heroes_LastIndex = 5
--
Set SaveLoad_Alphabet = ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
Set SaveLoad_CaseSensitive = True

I'm using the one with save abilities, do I need to add all the items on the array and will the items be loaded?
 

neetmaster

New Member
Reaction score
0
Can anyone guide me on how to save unused skill points and level of skills in spellbooks?

Edit:
well actually nevermind i figured that out.
 

Sgt_Johnson

Active Member
Reaction score
1
Hey, I recently implemented the System into my RPG map, it worked perfectly fine until recently, I replaced some abilities with new ones and added 2 new items.

I also removed a bunch of consumable items such as potions and stuff from the Save/Load, since the system would save charges and the potions and such have 20 charges the code would be extremely long if the player had say 2-4 slots of consumables. I used item-classes to determine what kind of item there is (Such as Armor is Permanent, Weapons are Artifacts, Jewelry is Campaign, Potions and such are Purchaseable) this is also used for the triggers that stop players from having 2 of one type of equipment (2 weapons, 2 armors, ect.)

Ever since I did that the system has gone screwy. When the player loads his hero it loads everything fine except the heroes inventory and skills, it only loads the 1st saved item from the heroes inventory, the rest are lost and no skills are loaded at all.

Here is each trigger

Init Trigger
Code:
Trigger:
SaveLoad Initialization All
Collapse Events
Map initialization
Conditions
Collapse Actions
-------- List of Heroes --------
Set SaveLoad_Heroes[1] = Arcanist
Set SaveLoad_Heroes[2] = Assassain
Set SaveLoad_Heroes[3] = Cleric
Set SaveLoad_Heroes[4] = Druid
Set SaveLoad_Heroes[5] = Druid (Bear)
Set SaveLoad_Heroes[6] = Fire Mage
Set SaveLoad_Heroes[7] = Frost Mage
Set SaveLoad_Heroes[8] = Necromancer
Set SaveLoad_Heroes[9] = Paladin
Set SaveLoad_Heroes[10] = Ranger
Set SaveLoad_Heroes[11] = Warrior
-------- Number of Heroes --------
Set SaveLoad_Heroes_LastIndex = 11
-------- List of Items --------
Set SaveLoad_Items[1] = Assassain's Blade
Set SaveLoad_Items[2] = Azurestone Staff
Set SaveLoad_Items[3] = Bandit's Sabre
Set SaveLoad_Items[4] = Barbarian's Sword
Set SaveLoad_Items[5] = Blade of Retribution
Set SaveLoad_Items[6] = Crusader's Blade
Set SaveLoad_Items[7] = Crusader's Flamberge
Set SaveLoad_Items[8] = Crusader's Repeater
Set SaveLoad_Items[9] = Crusader's Rod
Set SaveLoad_Items[10] = Crystalline Rod
Set SaveLoad_Items[11] = Dagger of the Sands
Set SaveLoad_Items[12] = Deathdealer
Set SaveLoad_Items[13] = Diamond Edge
Set SaveLoad_Items[14] = Firestrike Dagger
Set SaveLoad_Items[15] = Gladius
Set SaveLoad_Items[16] = Gorehowl
Set SaveLoad_Items[17] = Hammer of the Grand Crusader
Set SaveLoad_Items[18] = Hand of Garak
Set SaveLoad_Items[19] = Hunter's Bow
Set SaveLoad_Items[20] = Knight's Blade
Set SaveLoad_Items[21] = Knight's Cane
Set SaveLoad_Items[22] = Knight's Crossbow
Set SaveLoad_Items[23] = Knight's Gavel
Set SaveLoad_Items[24] = Knight's Slicer
Set SaveLoad_Items[25] = Longbow of Marksmanship
Set SaveLoad_Items[26] = Night Reaver
Set SaveLoad_Items[27] = Pyromancer's Staff
Set SaveLoad_Items[28] = Quarterstaff
Set SaveLoad_Items[29] = Razortalon
Set SaveLoad_Items[30] = Recruits Bow
Set SaveLoad_Items[31] = Recruits Dagger
Set SaveLoad_Items[32] = Recruits Short Blade
Set SaveLoad_Items[33] = Recruits Stave
Set SaveLoad_Items[34] = Recurve of the Giants
Set SaveLoad_Items[35] = Rod of the Purger
Set SaveLoad_Items[36] = Rogue's Short Blade
Set SaveLoad_Items[37] = Short Bow
Set SaveLoad_Items[38] = Shortsword
Set SaveLoad_Items[39] = Small Dagger
Set SaveLoad_Items[40] = Sora'mar Devastator
Set SaveLoad_Items[41] = Sora'mar Repeater
Set SaveLoad_Items[42] = Soulstring
Set SaveLoad_Items[43] = Splintermark
Set SaveLoad_Items[44] = Staff of the Nightblade
Set SaveLoad_Items[45] = Stonehewer
Set SaveLoad_Items[46] = Stormcaller
Set SaveLoad_Items[47] = The Edge of Death
Set SaveLoad_Items[48] = Warpcaster
Set SaveLoad_Items[49] = Watchman's Longbow
Set SaveLoad_Items[50] = Baron's Chestguard
Set SaveLoad_Items[51] = Beserkers Hauberk
Set SaveLoad_Items[52] = Bloodmail Hauberk
Set SaveLoad_Items[53] = Blue Linen Robe
Set SaveLoad_Items[54] = Breastplate of Holyness
Set SaveLoad_Items[55] = Breastplate of Retribution
Set SaveLoad_Items[56] = Breastplate of Vindication
Set SaveLoad_Items[57] = Breastplate of the Slayer
Set SaveLoad_Items[58] = Champion's Chestpiece
Set SaveLoad_Items[59] = Chestpiece of Earth
Set SaveLoad_Items[60] = Cloak of the Dark Lord
Set SaveLoad_Items[61] = Coyote Hide Tunic
Set SaveLoad_Items[62] = Deathmantle Chestplate
Set SaveLoad_Items[63] = Guardian Breastplate
Set SaveLoad_Items[64] = Hardened Leather Armor
Set SaveLoad_Items[65] = Knight's Armor
Set SaveLoad_Items[66] = Knight's Shroud
Set SaveLoad_Items[67] = Knight's Tunic
Set SaveLoad_Items[68] = Mantle of the Mystics
Set SaveLoad_Items[69] = Mithril Vest of the Slayer
Set SaveLoad_Items[70] = Nightshroud Robe
Set SaveLoad_Items[71] = Recruits Mail Chestguard
Set SaveLoad_Items[72] = Red Silken Robes
Set SaveLoad_Items[73] = Robes of Holyness
Set SaveLoad_Items[74] = Robes of Retribution
Set SaveLoad_Items[75] = Robes of Vindication
Set SaveLoad_Items[76] = Robes of the Slayer
Set SaveLoad_Items[77] = Rusty Mail Armor
Set SaveLoad_Items[78] = Scorpion Scale Vest
Set SaveLoad_Items[79] = Shell of the Earth Lord
Set SaveLoad_Items[80] = Soldiers Armor
Set SaveLoad_Items[81] = Stormweave Robe
Set SaveLoad_Items[82] = Stormwyrm Scale Breastplate
Set SaveLoad_Items[83] = Tunic of Holyness
Set SaveLoad_Items[84] = Tunic of Retribution
Set SaveLoad_Items[85] = Tunic of Vindication
Set SaveLoad_Items[86] = Wanderer's Vest
Set SaveLoad_Items[87] = Wolf Pelt Chestguard
Set SaveLoad_Items[88] = Wyrmhide Robe
Set SaveLoad_Items[89] = Blessing of the Crusader
Set SaveLoad_Items[90] = Fang of the Den Mother
-------- Number of Items --------
Set SaveLoad_Items_LastIndex = 90
-------- List of Abilities --------
Set SaveLoad_Abilities[1] = Fury
Set SaveLoad_Abilities[2] = Arcane Lightning
Set SaveLoad_Abilities[3] = Arcane Missile
Set SaveLoad_Abilities[4] = Force
Set SaveLoad_Abilities[5] = Mental Blast
Set SaveLoad_Abilities[6] = Armageddon
Set SaveLoad_Abilities[7] = Assassaination
Set SaveLoad_Abilities[8] = Blizzara
Set SaveLoad_Abilities[9] = Bone Prison
Set SaveLoad_Abilities[10] = Bone Spear
Set SaveLoad_Abilities[11] = Chain Heal
Set SaveLoad_Abilities[12] = Chill
Set SaveLoad_Abilities[13] = Critical Strike
Set SaveLoad_Abilities[14] = Cyclone Armor
Set SaveLoad_Abilities[15] = Death Coil
Set SaveLoad_Abilities[16] = Divine Protection
Set SaveLoad_Abilities[17] = Enflame
Set SaveLoad_Abilities[18] = Envenomed Weapons
Set SaveLoad_Abilities[19] = Explosive Arrow
Set SaveLoad_Abilities[20] = Fira
Set SaveLoad_Abilities[21] = Fire Ball
Set SaveLoad_Abilities[22] = Fire Nova
Set SaveLoad_Abilities[23] = Fissure
Set SaveLoad_Abilities[24] = Fist of the Heavens
Set SaveLoad_Abilities[25] = Frost Bolt
Set SaveLoad_Abilities[26] = Frost Nova
Set SaveLoad_Abilities[27] = Heal
Set SaveLoad_Abilities[28] = Holy Blast
Set SaveLoad_Abilities[29] = Holy Fire
Set SaveLoad_Abilities[30] = Holy Light
Set SaveLoad_Abilities[31] = Holy Might
Set SaveLoad_Abilities[32] = Lethality
Set SaveLoad_Abilities[33] = Mangle
Set SaveLoad_Abilities[34] = Mass Arcane Missiles
Set SaveLoad_Abilities[35] = Maul
Set SaveLoad_Abilities[36] = Mutilate
Set SaveLoad_Abilities[37] = Osmose
Set SaveLoad_Abilities[38] = Piercing Shot
Set SaveLoad_Abilities[39] = Plague
Set SaveLoad_Abilities[40] = Poison-Tipped Arrow
Set SaveLoad_Abilities[41] = Retribution Aura
Set SaveLoad_Abilities[42] = Searing Arrow
Set SaveLoad_Abilities[43] = Shadow Clone
Set SaveLoad_Abilities[44] = Shiv
Set SaveLoad_Abilities[45] = Slam
Set SaveLoad_Abilities[46] = Smite
Set SaveLoad_Abilities[47] = Soothe
Set SaveLoad_Abilities[48] = Stealth
Set SaveLoad_Abilities[49] = Charge
Set SaveLoad_Abilities[50] = Warmth
-------- Number of Abilities --------
Set SaveLoad_Abilities_LastIndex = 50
-------- 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 Trigger
Code:
Trigger:
SaveLoad Save All
Collapse 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
Conditions
Collapse 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)
-------- Player's Lumber --------
Set SaveCount = (SaveCount + 1)
Set Save[SaveCount] = ((Triggering player) Current lumber)
-------- 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)
Collapse Unit Group - Pick every unit in UnitGroup and do (Actions)
Collapse 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 Dummy 0145 <gen>))))
-------- Hero Position Y --------
Set SaveCount = (SaveCount + 1)
Set Save[SaveCount] = (Integer((Y of (Position of Dummy 0145 <gen>))))
-------- How many items does he carry --------
Set SaveCount = (SaveCount + 1)
Set Save[SaveCount] = (Number of items carried by (Picked unit))
Collapse -------- Add all items --------
Collapse Do Multiple ActionsFor each (Integer A) from 1 to 6, do (Actions)
Collapse Loop - Actions
Collapse Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Collapse If - Conditions
Collapse Multiple ConditionsAnd - All (Conditions) are true
Collapse Conditions
Collapse ((Item carried by (Picked unit) in slot (Integer A)) is owned) Equal to (==) True
Collapse Multiple ConditionsOr - Any (Conditions) are true
Collapse Conditions
(Item-class of (Item carried by (Picked unit) in slot (Integer A))) Equal to (==) Permanent
(Item-class of (Item carried by (Picked unit) in slot (Integer A))) Equal to (==) Artifact
(Item-class of (Item carried by (Picked unit) in slot (Integer A))) Equal to (==) Campaign
Collapse 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 60.00 seconds the text: Code

Load Trigger
Code:
Trigger:
SaveLoad Load All
Collapse 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
Collapse Conditions
(Substring((Entered chat string), 1, 6)) Equal to (==) (Matched chat string)
(Length of (Entered chat string)) Greater than (>) 6
Collapse Actions
-------- Try to decode what was typed --------
Set Code = (Substring((Entered chat string), 7, (Length of (Entered chat string))))
Collapse Custom script: set udg_Validate = SaveLoad_Decode( udg_Code )
Collapse Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
Collapse If - Conditions
Validate Equal to (==) False
Collapse 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 --------
Collapse Unit Group - Pick every unit in (Units owned by (Triggering player) matching ((((Matching unit) is A Hero) Equal to (==) True) or ((Unit-type of (Matching unit)) Equal to (==) Hero Selector))) and do (Actions)
Collapse Loop - Actions
Unit - Remove (Picked unit) from the game
Set SaveCount = 1
-------- Restore Gold --------
Player - Set (Triggering player) Current gold to Save[SaveCount]
Set SaveCount = (SaveCount + 1)
-------- Restore Lumber --------
Player - Set (Triggering player) Current lumber to Save[SaveCount]
-------- For "number of Heroes", do --------
Collapse Set SaveCount = (SaveCount + 1)
Collapse Do Multiple ActionsFor each (Integer B) from 1 to Save[SaveCount], do (Actions)
Collapse 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
-------- 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 --------
Collapse Set SaveCount = (SaveCount + 1)
Collapse Do Multiple ActionsFor each (Integer A) from 1 to Save[SaveCount], do (Actions)
Collapse 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]

Anyone able to tell what I may have messed up the system with? Or see any issue in the system.

Any help would be greatly appreciated, I was going to release the map last night until this came up.


Edit: I did however put the consumables (Puchaseable) items back into the code and removed the charges so now they're just permanent with a cooldown.





===============================================================================

EDIT

I got it working with saving player items! It still isn't saving abilities again but thats not a huge issue since players are able to relearn abilities they chose at any time.

What I did was change the parts in the Save and Load triggers to goto each individual slot rather than for integers 1-6, for some reason that was bugging out and only was saving and loading slot 1 of the heroes inventory.
 

Chocobo

White-Flower
Reaction score
409
Is it possible to catch the code before it gets colored?
I tried to catch the string colorless in encoding but it seems to catch the colored text.

JASS:
function SaveLoad_EncodeValues takes nothing returns string
    local integer i
    local integer j
    local integer k
    local integer l
    local integer m
    local integer CodeLength = StringLength(udg_SaveLoad_Alphabet)
    local integer array a
    local string buffer = &quot;&quot;
    local string c = &quot;&quot;
    local integer skip = 0
    local integer CONST = 1000000
    local string abc = &quot;0123456789&quot;

    set i = 0
    loop
        set i = i + 1
        exitwhen i &gt; udg_SaveCount
        set buffer = buffer + I2S(udg_Save<i>) + &quot;-&quot;
    endloop
    set buffer = buffer + I2S(SaveLoad_EncodeVerify(buffer))
    if udg_Save[1] == 0 then
        set buffer = &quot;-&quot; + buffer
    endif

    set i = 0
    loop
        set a<i> = 0
        set i = i + 1
        exitwhen i &gt;= 100
    endloop

    set m = 0
    set i = 0
    loop
        set j = 0
        loop
            set a[j] = a[j] * 11
            set j = j + 1
            exitwhen j &gt; m
        endloop

        set l = 0
        set c = SubString(buffer,i,i + 1)
        loop
            exitwhen SubString(abc,l,l + 1) == c
            set l = l + 1
            exitwhen l &gt; 9
        endloop
        set a[0] = a[0] + l

        set j = 0
        loop
            set k = a[j] / CONST
            set a[j] = a[j] - k * CONST
            set a[j + 1] = a[j + 1] + k
            set j = j + 1
            exitwhen j &gt; m
        endloop
        if k &gt; 0 then
            set m = m + 1
        endif
        set i = i + 1
        exitwhen i &gt;= StringLength(buffer)
    endloop

    set buffer = &quot;&quot;
    loop
        exitwhen m &lt; 0
        set j = m
        loop
            exitwhen j &lt;= 0
            set k = a[j] / CodeLength
            set a[j - 1] = a[j - 1] + (a[j] - k * CodeLength) * CONST
            set a[j] = k
            set j = j - 1
        endloop
        set k = a[j] / CodeLength
        set i = a[j] - k * CodeLength
        set buffer = buffer + SubString(udg_SaveLoad_Alphabet,i,i + 1)
        set a[j] = k
        if a[m] == 0 then
            set m = m - 1
        endif
    endloop

    set i = StringLength(buffer)
    set skip = 0
    set c = &quot;&quot;
    loop
        set i = i - 1
        set c = c + SubString(buffer,i,i + 1)
        set skip = skip + 1
        if skip == 4 and i &gt; 0 then
            set c = c + &quot;-&quot;
            set skip = 0
        endif
        exitwhen i &lt;= 0
    endloop
    set udg_CodeCheck[udg_TempIntegers[2]] = c
    return c
endfunction</i></i>


(2 last lines)
 

Chocobo

White-Flower
Reaction score
409
the problem is for unknown reasons I'm catching the colored string.

I'm trying to make a function such as "-checkn <somecode>", where n is the custom alphabet used to save/load and <somecode> checking if the code matches the last code saved by the player. Turned out each time to compare to the colored text, which has the (horrible) |cff...
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Staff online

      • Ghan
        Administrator - Servers are fun

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top