1. Are you planning to upload your awesome spell or system to Hive? Please review the rules here.
    Dismiss Notice
  2. Updated Resource Submission Rules: All model & skin resource submissions must now include an in-game screenshot. This is to help speed up the moderation process and to show how the model and/or texture looks like from the in-game camera.
    Dismiss Notice
  3. DID YOU KNOW - That you can unlock new rank icons by posting on the forums or winning contests? Click here to customize your rank or read our User Rank Policy to see a list of ranks that you can unlock. Have you won a contest and still havn't received your rank award? Then please contact the administration.
    Dismiss Notice
  4. The poll for Hive's 12th Concept Art Contest is up! Go cast your vote for your favourite genie!
    Dismiss Notice
  5. Travel to distant realms and encounter scenes unknown to the common folk. The Greatest of Adventures is upon us with the 8th Cinematic Contest. Join in on a fun ride.
    Dismiss Notice
  6. The 18th Icon Contest is ON! Choose any ingame unit and give him/her Hero abilities. Good luck to all.
    Dismiss Notice
  7. Contestants are to create a scene set in the Stone Age. Come and see what you can come up with. We wish you the best of luck!
    Dismiss Notice
  8. Colour outside the lines! Techtree Contest #13 is a go. The contest is optionally paired.
    Dismiss Notice
  9. Greetings cerebrates, our Swarm needs new spawners that will have numerous children. Join the HIVE's 31st Modeling Contest - Spawners and Spawned! The contest is optionally paired.
    Dismiss Notice
  10. Check out the Staff job openings thread.
    Dismiss Notice
Dismiss Notice
60,000 passwords have been reset on July 8, 2019. If you cannot login, read this.

Codeless Save and Load (Multiplayer) - v3.0.0

Submitted by TriggerHappy
This bundle is marked as approved. It works and satisfies the submission rules.
Information

If you've ever wanted to transfer progress between multiplayer maps, you probably needed to type in a long code.

That is no longer needed with this system. This will allow you to read save data from your WC3 folder and sync it to all other players in the map.

The demo map features:
  1. Load without typing anything
  2. Save Hero
    • Level/XP
    • Items
    • Abilities
    • Hero Name

  3. 5 Save Slots
* Everything is customizable and you can make the system save & load anything you want.

* This system is intended for GUI users.

Installation

To import the system, all you have to do is copy the trigger folders over to your map and save it.

Screenshots


[​IMG]
[​IMG]
[​IMG]
[​IMG]


Credits

Pipedream (optimal save system)
Previews
Contents

Codeless Save & Load v1.3.9 (Map)

Codeless Save & Load v3.0.0 (Map)

Reviews
Moderator
Awaiting further review
  1. Alucard 1944

    Alucard 1944

    Joined:
    Feb 15, 2014
    Messages:
    22
    Resources:
    2
    Maps:
    1
    Template:
    1
    Resources:
    2
    Hello!
    I added this system to my map and it worked perfect at the start. But at some point in the game the whole system suddenly stops working. It says that I have to check my name and that the code is invalid. But a few minutes ago everything worked perfectly. I tested this a few times and everytime it stops working after a few minutes in the game.
    Need Help. Thanks :)
     
  2. TriggerHappy

    TriggerHappy

    Code Moderator

    Joined:
    Jun 23, 2007
    Messages:
    3,659
    Resources:
    22
    Spells:
    11
    Tutorials:
    2
    JASS:
    9
    Resources:
    22
    Do you save and load a lot in-game? Like hundreds of times? There is a leak in pipedreams savecode system, but you would only notice it after many saves or loads. If you have a replay of this bug it would help.
     
  3. Alucard 1944

    Alucard 1944

    Joined:
    Feb 15, 2014
    Messages:
    22
    Resources:
    2
    Maps:
    1
    Template:
    1
    Resources:
    2
    No I dont really save alot in my games. It also happened when I only saved one time at the beginning of the game and when I tried to save an hour after that, it didnt work anymore. Very mysterious^^


    ----Edit----
    I figured out that that crash really depends on the played time. I saved my character at the start of the game (everything worked), left the game open for a while and after an hour or two I tried to save but it didnt work again.
     
    Last edited: Jul 10, 2018
  4. Santacruz

    Santacruz

    Joined:
    Oct 31, 2011
    Messages:
    28
    Resources:
    0
    Resources:
    0
    Turn off auto-save on system
     
  5. Daffa the Mage

    Daffa the Mage

    Map Moderator

    Joined:
    Jan 30, 2013
    Messages:
    7,642
    Resources:
    27
    Packs:
    1
    Maps:
    8
    Spells:
    16
    Tutorials:
    2
    Resources:
    27
    Does this support 1.29? Want to confirm.
     
  6. TriggerHappy

    TriggerHappy

    Code Moderator

    Joined:
    Jun 23, 2007
    Messages:
    3,659
    Resources:
    22
    Spells:
    11
    Tutorials:
    2
    JASS:
    9
    Resources:
    22
    Right I forgot about that. That's probably the issue

    Yes but it's broken on 1.30 PTR. I have been told it should be fixed in the next patch, although anything can happen.
     
  7. TriggerHappy

    TriggerHappy

    Code Moderator

    Joined:
    Jun 23, 2007
    Messages:
    3,659
    Resources:
    22
    Spells:
    11
    Tutorials:
    2
    JASS:
    9
    Resources:
    22
    Updated, 2.0.0.
    • The system now works without having to enable "Allow Local Files" as of Patch 1.30.
    • Added "SaveUseGUI" variable which lets you toggle between the GUI and vJass versions.
    • The dialog system will now save/load using the GUI triggers if "SaveUseGUI" is set to true.
    • Hero proper names are now stored in the save code and use
      BlzSetHeroProperName
      when loading.
    • Added every valid ASCII character to the save code alphabet to reduce code size.
    • Added "SaveLoadMaxLength" variable to define the max length that can be synced.
    • Added SaveFile library to help manage save slots.
    • Reworked SaveHelper library to be more vJass friendly.
    • Updated Sync to v1.3.0.
    • Updated SyncInteger to v1.2.1.
    • Updated PlayerUtils to v1.2.9.
    • Replaced Nestharus'
      FileIO
      library with a better version (FileIO).
    • Removed UnitDex and GroupUtils libraries.
    • Removed AutoSave (temporarily).
    This version will produce a code wipe if you try updating from v1.3.9. If you don't want the code wipe you need to make sure the alphabet and max values are the same between both versions.
     
  8. Santacruz

    Santacruz

    Joined:
    Oct 31, 2011
    Messages:
    28
    Resources:
    0
    Resources:
    0
    How do I always choose a slot to save the hero and not save in an automatic slot?
     
  9. Nordmar

    Nordmar

    Joined:
    Jan 13, 2008
    Messages:
    560
    Resources:
    1
    Skins:
    1
    Resources:
    1
    how do I now properly update the system? just replace everything or only some parts of it?
     
  10. TriggerHappy

    TriggerHappy

    Code Moderator

    Joined:
    Jun 23, 2007
    Messages:
    3,659
    Resources:
    22
    Spells:
    11
    Tutorials:
    2
    JASS:
    9
    Resources:
    22
    You can try replacing all the triggers, but make sure in the SaveInit trigger that all of your values are the same as before. You also need to make sure the alphabet is the same for the save system. It's in a vJass trigger called "save system". I haven't tried upgrading myself so there may be more to it.

    And to be honest, this version has some nice improvements but you can still use the old version on the latest patches and it will work fine.
     
  11. blufflegendaire

    blufflegendaire

    Joined:
    Jul 2, 2014
    Messages:
    45
    Resources:
    0
    Resources:
    0
    Hello, first, I haven't tested it out yet, but I had a few performances questions and before trying to implement it - if that's okay to ask, in order to avoid a possible waste of time - how many integers from range ~[-20000; 20000] can it hold ? So far I've identified that I'd need about 200 integers from this range, and around 400 from range ~[0; 1000], does the string length is enough ? Would it need some tinkering to split the code, would that even be possible to load multiple code one by one ?

    I'm sorry I look like a lazy ass, but I'd like to know if that's possible before I commit into adding this save/load and realize I just can't use it for my needs, thanks
     
  12. TriggerHappy

    TriggerHappy

    Code Moderator

    Joined:
    Jun 23, 2007
    Messages:
    3,659
    Resources:
    22
    Spells:
    11
    Tutorials:
    2
    JASS:
    9
    Resources:
    22
    It should work. The limit is 4099 for concatenated strings and sync speeds are pretty fast on the newest patches. And yes, you can split the code into multiple codes allowing you to bypass that limit.
     
  13. blufflegendaire

    blufflegendaire

    Joined:
    Jul 2, 2014
    Messages:
    45
    Resources:
    0
    Resources:
    0
    Okay thanks a lot, +rep for the speed tho' :D
     
  14. blufflegendaire

    blufflegendaire

    Joined:
    Jul 2, 2014
    Messages:
    45
    Resources:
    0
    Resources:
    0
    By the way, if I may, you may have inversed udg_HeroXPConstant = 0 & udg_HeroXPLevelFactor = 100 values in the Save Init trigger (default are LevelFactor = 0 & Constant = 100 from Gameplay Constant, can be confusing) and typo "Synchornizing..-" somewhere, had to delete that part so I couldn't tell where exactly.

    Plus, in SaveHelper.LoadSaveSlot there is a call to SaveHelper.IsUserLoading(u) but it is never set to true via SaveHelper.SetUserLoading(u, true), I added it just after the set req = SyncData.create(u) a few lines below, is it because you forgot or am I missing the point ?

    Would it be interesting to add the option to not set your slot automatically, I found myself removing this after looking through, for some reason one may want to preserve his older save and not erase it every save.

    Last, it is intended that whenever you save in a slot, it also creates the SaveSlot_Manual from the Save GUI ? I deleted the SaveFile.create() from the Save GUI to get rid of the SaveSlot_Manual.

    Other than that, this is state of the art, 'gratz and thanks for creating and updating this with the newest patches!
     
  15. cvb1

    cvb1

    Joined:
    Apr 16, 2009
    Messages:
    19
    Resources:
    0
    Resources:
    0
    I've tried copying and adding a way of saving gold and lumber to this system, but I just can't get it to work. Can someone tell me what I'm doing wrong? save 1.png save 2.png
     
  16. ckms3542

    ckms3542

    Joined:
    Oct 17, 2018
    Messages:
    1
    Resources:
    0
    Resources:
    0
    " You need to enable local files to load your character from disk on patches prior to 1.30! "

    I am using version 1.30.1. During the save, the message is no longer being tested. How do I know how to activate a local file?
     
  17. Daffa the Mage

    Daffa the Mage

    Map Moderator

    Joined:
    Jan 30, 2013
    Messages:
    7,642
    Resources:
    27
    Packs:
    1
    Maps:
    8
    Spells:
    16
    Tutorials:
    2
    Resources:
    27
    By default it's on.
     
  18. Sverkerman

    Sverkerman

    Joined:
    Feb 28, 2010
    Messages:
    1,282
    Resources:
    5
    Maps:
    5
    Resources:
    5
    @TriggerHappy Hello! Nice system, I am currently configuring it for my new ORPG. Would you be so kind as to tell me if this would work? I wish to save an item and then save the item's charges remaining. I feel that this would be a good way to save it since it makes it easy for me (GUI user) to extract it when loading, does it look correct to you? :)

    Code (Text):
    For each (Integer SaveTempInt) from 0 to 5, do (Actions)
        Loop - Actions
            Set SaveCount = (SaveCount + 1)
            Set SaveValue[SaveCount] = (Charges remaining in (Item carried by SaveTempUnit in slot (SaveTempInt + 1)))
            Set SaveMaxValue[SaveCount] = SaveItemChargesMax
            Set SaveCount = (SaveCount + 1)
            Custom script:   set udg_SaveValue[udg_SaveCount] = SaveHelper.ConvertItemId(GetItemTypeId(UnitItemInSlot(udg_SaveTempUnit, udg_SaveTempInt)))
            Set SaveMaxValue[SaveCount] = SaveItemTypeMax
     
     
  19. Sverkerman

    Sverkerman

    Joined:
    Feb 28, 2010
    Messages:
    1,282
    Resources:
    5
    Maps:
    5
    Resources:
    5
    To anyone who might be interested in using this system there are a few things that I have found out during the process of implementing this into my map that I thought I should share.
    Credit goes to @Wareditor @Illidan(Evil)X @Hagge5 who helped me with a lot of testing and figuring out.

    The first thing that should be noted about this system is:
    <SOLVED!> Please help! "//" not printed to file, Preloader

    I will quote @Illidan(Evil)X for a shorter version of this discovery:

    The second discovery was that this system has (some sort of) unit indexer that will interfere with the unit indexer inside your map, causing loads to never initiate/run Load GUI.

    One possible workaround to this that I decided to use myself was to add a check for the normal Footman unit, if the unit type that is about to be indexed by your own unit indexing system is of this type (Footman) then it shouldn't go through with the indexing as it interferes with how the system indexes the unit (this is used for syncing integers, nothing that we GUI users need to worry about)

    Hopefully if you had issues with this system before these two discoveries has been of help to you. Best of luck :)
     
  20. Quilnez

    Quilnez

    Joined:
    Oct 12, 2011
    Messages:
    3,250
    Resources:
    37
    Icons:
    2
    Tools:
    1
    Maps:
    7
    Spells:
    21
    Tutorials:
    2
    JASS:
    4
    Resources:
    37
    Hey @TriggerHappy, does the system work on newer patch versions (1.29 and up)?