It is more then dooable in GUI.. no idea what people in here are talking about, but you need patience and understanding to do it:
I'm personally not going to do it for you because I would naturally want to do it in JASS and im way to lazy to use GUI to do it.
All code, GUI or otherwise is all about design. A save/load system is just a string that takes integer values and encodes them. Let's visualize it so it's either.
"-save" would be the required event.
then "-load" + ">code<" would be our other required event. Now you said you wanted attributes, level, and items.
Now, we want to simplify these things into their simplist form. You could try using a different base to describe numbers if you want to shorten your code, but let's just go with easy stuff:
-load ###-###-###-###-##-##-##-##-##-##
Now, what are we loading: strength-agility-intelligence-level-1stitem-2nd-3rd-4th-5th-6th
With items especially you need a way of recording them in smaller integer values, for example, if you only have 99 items and no more, just assign each item to a specific value. You can also add the players name to this mix if you want (since we're working a with strength, simplifying everything to integers is not required, just makes things easier to explain).
So now let's load up a hero (well we forgot the unit didn't we, guess will slap on an end value)
-load 020-010-030-002-02-20-00-00-00-00-1 (this last value is storing the hero type)
Or in other words.
-load 0200100300020220000000001
Ta da, you have a save/load, the only problem is it's very easy to crack, and that's were substition and encoding comes into play. Basically all you do is assign a set of "unknown" values for a given segment So we could say that for the first 3 positions in the string, 0 can be either A B c or D, and whenever we find either of those 4 values in that position, it becomes 0 instead of that.
The way you shorten your code is by taking sets of integers and taking them to a higher base. i.e. adding letters into the mix of the number line, so instead of 0-9 you also would have A B C D and E or what have you at the end. This also makes encoding a little more complicated, as you can't substitute as broad of letters/numbers to the same position, but hey, hopefully you get the point.
If you don't understand how to generate a code, just get the necessary information, accumulate it into a consistent ordered string. Then give that string to the user, they can then input that string to get the hero back, once you've succesfully accomplished this you can start encoding the string so people can't crack it extremely easily.
Hope this helpled. Drat.. i forgot gold.. oh whatever same procedure.