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

SC2 Bank files - Critics

Status
Not open for further replies.
Level 12
Joined
Apr 15, 2008
Messages
1,063
Well is there a Galaxy preload bank function? I wasn't able to find it and when I tried converting from GUI to Galaxy, this function didn't get converted. It almost seems like the preload bank parameters were saved somewhere else but in script, which would explain why it can't take any variables or expressions as parameter.
 
Level 11
Joined
Aug 1, 2009
Messages
963
Pretty sure it runs the preload BEFORE anything else runs, IE it doesn't matter where you put the preload action, it will always work, you can put it after you open the bank and it still works.

EDIT: Also, couldn't we just save long encrypted strings in a bank? Needing more than 30 seems kinda silly.
 
Level 6
Joined
Sep 28, 2009
Messages
222
Shocking new results!


sc2 just failed so unbelievebly hard, i really cant believe it yet.
after 2 days of rewriting my entire RPG to a new save system, which stores all data in encrypted strings, i just tested my map in bnet.

The map didnt load.

i really couldnt believe it.
right now i have one bankfile for all 5 characters and game settings, each character is saved in a string that is ~ 400 chars long (includes talents, quest progress and so on) and it still doesnt work.

i just did some modifications of my bank test map.

result: the string length also matters. that means, you can store 10 short strings, but not 10 long.

with other words: im out of ideas blizzard. how the f*ck should i create a nice rpg right now? im not allowed to use much values, im not allowed to use long values, im not allowed to split banks up, im not even allowed to use variables for preloading to prevent idiots to delete my savefiles.

im really no flamer, but im really angry now. im really demotivated. if ANYONE has still ideas how to create savefiles, tell me, but at the moment it looks like banks are only useful for storing a score value like "123", more they dont seem to be captable off. im shocked

ok, cool guys, lets go back to savecodes. lets force the players to type in a code that is 50 chars long because we have so much possibilities with quests, spells talents now. lets do it that way. i didnt test the exact limit right now, but i roughly know whats loadable and whats not, and believe me, its a joke.

PS: i could report it and ask blizzard to fix this... oh wait i cant because i cant post in the US forums and EU forums get ignored anyways!

PPS: this bankfile is to much for sc2 (4 entries, each entry 493 chars long, 1972 chars total):


<?xml version="1.0" encoding="utf-8"?>
<Bank version="1">
<Section name="Test">
<Key name="4">
<Value string="This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!"/>
</Key>
<Key name="9">
<Value string="This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!"/>
</Key>
<Key name="6">
<Value string="This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!"/>
</Key>
<Key name="1">
<Value string="This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!This is a string!"/>
</Key>
</Section>
</Bank>
 
Level 11
Joined
Aug 1, 2009
Messages
963
Try just doing one character at a time - since bank files are open to editting by players, if you wanted to play a specific character you could just change which one had the correct name and swap them out.

Alternatively, load multiple banks at once so that you can have less information in each one.
 
Level 6
Joined
Sep 28, 2009
Messages
222
Try just doing one character at a time - since bank files are open to editting by players, if you wanted to play a specific character you could just change which one had the correct name and swap them out.

so how should i save 5 different character profiles?

Alternatively, load multiple banks at once so that you can have less information in each one.

read my post. its not possible to just use more banks. ALL BANKS TOGETHER are limited.

remember guys: im not even talking to try to load multiple banks of multiple players. the problem will get even worse. maybe all banks for all players together are also limited. i remember an old test of my rpg where i had no bank file at all and the second player had, and it still didnt load for me. i dont want to know what happens if you want to save 5 chars for each player for 12 players, shit. but i dont have any results for this yet, maybe i will test it this evening.
 
Level 9
Joined
Nov 28, 2008
Messages
704
I'm just going to say this: use colored text and I dont read your post. I ignore it and move on.

Edit: Banks have been tested... Yeeeeeeeahfail. Not found in script. Silly Blizzard.

Edit2: I have looked in native lists, I cant find out where to preload banks from.

Therefore, there must be a special file within the map containing this sort of information. THIS explains why you cant preload a bank with variables; it's not part of the scripting system, not set at runtime!
 
Level 6
Joined
Sep 28, 2009
Messages
222
I'm just going to say this: use colored text and I dont read your post. I ignore it and move on.

I'll test bank preloading in Galaxy now.

i just used colored text because its some important update to the knowledge i already had. if you dont want to know it, it belongs to u. i present my results to the communty, it belongs to u if you accept them or try it all by urself.

but sure, test it yourself, im really hoping that you will get other results, because mine are just destroying my illusion of creating some good maps in the future.

dont get me wrong guys: i dont think my results are unfailable and absolutly correct. you should all test it again with your methods. im really praying that im wrong. but i have controlled it so often, tested in in so much situations... i dont believe that i did any mistakes =/
 
Level 9
Joined
Nov 28, 2008
Messages
704
When I say Galaxy, I mean the scripting language, not just GUI in case its a silly Blizzard error with GUI.

As for important text being colored, just no. Everyone should be reading every post, so it shouldn tmatter. For those that dont, a heading with a huge text size of 4 or so should get their attention. No need to make it impossible to read.

For more evidence on bank preloading not being part of GUI/scripting/the actual code of the map, you can put the preload action in a trigger that never fires and it will still work.
 
Level 11
Joined
Aug 1, 2009
Messages
963
The idea is that each character profile would be stored in a different bank - if you wanted to play as character X, you would rename that characters bank to the name of the bank used by the map, if you wanted to create a new character you would pick the bank that is correctly named and rename it to something else, so that the map creates a new bank. Probably would be too much of a hassle for your average Bnet player, though. :\
 
Level 6
Joined
Sep 28, 2009
Messages
222
The idea is that each character profile would be stored in a different bank - if you wanted to play as character X, you would rename that characters bank to the name of the bank used by the map, if you wanted to create a new character you would pick the bank that is correctly named and rename it to something else, so that the map creates a new bank. Probably would be too much of a hassle for your average Bnet player, though. :\

ah ok, now i understand your idea.
i think that would be possible, but like you already said it would really suck to change the name everytime, also its very complicated.

and even with that method its not guaranteed that it would work with multiple players. maybe even one char for each player would be to much to preload. wouldnt surprise me anymore.
 
Level 6
Joined
Sep 28, 2009
Messages
222
You are complaining that your 1972 character long bank does not load..... Try creating it more efficently.

From my experience if your bank is too long, you do not load the map.

ok, your are right, my savecodes a are not the shortest, but you must keep in mind that they also save 100 quests, spells, talents and so on.

the even stranger thing is, that sc2 loads a bank with ONE STRING, that is 25000 chars long. i just tested it. it loads it without problems.

even if i dont understand why, its good news. so maybe i just need to put all data together in one string and load this. but why it cant load 4 strings with ~400 chars but one with 25000? i really dont get it. maybe a string cant store so much chars anyways and so its always cut at 600 or so? i dont know. i will test this by loading the string and displaying string length. then we will see if it loads the entire 25000 chars.

edit: ok, bad news, my theory was correct. it doesnt matter how long you make the string in the bank, the maximum chars he loads for a string is 781. that might mean that all strings together in a bank cant get more chars then 781, otherwise it wont load. that would actually mean if you got 5 charslots, you have a maximum of 781/5 chars per character. the big question is now: what happens if we have more then 1 player? will the limitiation also be effected by that? i might test this today.

edit2: this also seems not to be exactly correct. i just preloaded a bank with 5 strings each 167 chars long, whats > 781, and it worked. its really very confusing.

edit3: maybe the string variable cant store more then 781 chars and its not the bank itself. to test this i splitted the string into 4 variables.
restults:

var1 length: 750
var2 length: 31
var3 length: 0
var4 length: 0


so its really the bank file. damn it.

PS: is there an efficient method to store much booleans? at the moment i store them like this: 00110010101...
the problem is, i need to save quest progress and there are up to 100 questslots atm. so i need to save 300 booleans bacause there are 3 quest states (100 for hasquest, 100 for hasquestdone, 100 for hasquestfinished). so quests only would already be to much for the banks because if i have 5 charslots its already 1500 chars. any advice? :)
 
Last edited:
Level 2
Joined
May 15, 2008
Messages
22
PS: is there an efficient method to store much booleans? at the moment i store them like this: 00110010101...
the problem is, i need to save quest progress and there are up to 100 questslots atm. so i need to save 300 booleans bacause there are 3 quest states (100 for hasquest, 100 for hasquestdone, 100 for hasquestfinished). so quests only would already be to much for the banks because if i have 5 charslots its already 1500 chars. any advice? :)

You have to use the full array of characters.
For example:

000000 = "0"
000001 = "1"
000010 = "2"
....
001010 = "A"
001011 = "B"
....
100100 = "Y"
...
110110 = "/"

And so on. We've got 10 numbers, 26 small letters, 26 capital letters and a couple of other characters. So we can save at least 6 booleans (2^6) in 1 string character.

Btw, I really appreciate your efforts of testing banks thoroughly. Thanks a lot!

PS: In your case you can save even more space, since your booleans are exclusive. A person who does not have Quest 1 discovered will have no chance of having it completed. So instead of saving three boolean values you can save one integer value:

0 = Doesn't have quest
1 = Has quest discovered
2 = Has quest done
3 = Has quest completed

So we can save three quests:

000 = "0"
001 = "1"
002 = "2"
003 = "3"
010 = "4"
...
213 = "Y"
...
333 = "/"

This way you can save three full quests in one string character. With the other method you'd need 9 booleans, which would result in 1.5 string characters. I think that's as efficient as you can get. If there are many (MANY) special characters like , . - _ / & % § etc then you could save one more boolean.
 
Level 9
Joined
Nov 28, 2008
Messages
704
I feel sure that it would be possible to do some sort of compression algorithm on those strings, too.

Sadly, something like a huffman algorithm's nodes are going to take up 200+ bytes by themselves. Some other method would have to be found.
 
Level 11
Joined
Aug 1, 2009
Messages
963
Try sticking to 3 characters, few people would want more than that anyways and it would probably be easier spacewise.

Also, as for quests, you can store multiple quests in one character. You should also test if you can use special characters (ie •, ½, Ó, å), as this could greatly increase the amount of possible information stored.

EDIT: Just realized, strings won't be able to use special characters.

My testing shows that you can have 93 different characters in a string, so that should be enough to store a significant amount of information. You could store 99 quests in 33 characters, so for 5 characters that would be 165 spaces used up. You would still have 616 spaces left to store other data amongst your characters.
 
Level 6
Joined
Sep 28, 2009
Messages
222
New results again

today i tested how the playercount effects the bank files.
the idea of the test is the following:

i have a map that can create bank files. you can choose the number of bank keys and the key type. the tests were done with strings. each string is 493 chars long. (the number has no deeper sense at all, i just wanted to test medium long strings)

at first i tested how many strings i can load alone. so i created a bank file with one entry (493 chars) and it still loaded. then i created a bank with 2 keys (493*2 keys) and it still loaded. with 3 keys it didnt load anymore for me.

so the question is now: can you load 2 strings with 493 chars in total for ALL players or can EACH player load 2 strings? so i asked another mapper to assist me testing.

the results quite sucked. i created a bank file with 2 keys, he created one bank files with 2 keys, result: the map didnt load.
what this actually shows it that the playercound DOES infect the number of values being loadable from bank files. so i asked him to delete one string and try it again.

the map did still not load. he had 1 string, i had 2, so 3 strings in total. after i also deleted one string the map loaded again.

end result: ALL banks of ALL players together are limited. so if we can load ~ 800 chars in total, that would mean that you could load 66 chars with 12 players for each player, and only 13 chars for each character if each player can have 5 character slots.

its just ridicolous.

PS: much thanks to robbepop who supported and assisted me with all my tests and for all the mappers trying to get around this bank limits.

PPS: im really silly. s3rius, the idea with integers for each quest instead of booleans is much cleverer then mine, cant believe i didnt check this. i think i also understand your algorythm to compress the size. so if i for example want to save the progress of 3 quests i need 3^3 chars for it? or for 4 quests 3^4? so i could maybe reduce the chars for all quests from 300 to 100 (bool --> ints) and then from 100 to 25 (4 quests --> one char) if i can find 81 different chars? but the encryption of this 81 chars would be quite complicated, wouldnt i need a switch with 81 cases? because every case has its individual output? or wait no... i think i dont need switch cases, i could do it with an algorytm, i think i got it xD
 
Last edited:
Level 12
Joined
Apr 15, 2008
Messages
1,063
What characters can be used in strings? Wouldn't it be possible to use at least 128 characters (for 7 bits)? That way, you would have like 500 bits for each player in 10-player game (~750 characters in total, 75 per player, 525 bits), which should be enough to save virtually anything you need, assuming you have proper compression algorithm (like not saving status of quest that the player can't have started - for example because of level or prequisities requirement - in that case you can just ignore those quests)
 
Level 9
Joined
Nov 28, 2008
Messages
704
You cant use the \0 character and other things because these are strings and you cant put that kind of stuff in an XML file. And it would be 256 options, 8 bit.

Overall, quite sad.
 

Dr Super Good

Spell Reviewer
Level 64
Joined
Jan 18, 2005
Messages
27,198
Strings are arrays of 8 bit characters. If you could interact with them like any normal programming language (python, java, etc) you can save 8 booleans or a number between 0 and 255 or -128 and +127.

Do keep in mind that this is the beta. It might be something quite easy to edit like a hard codded cap which might be set larger in the final release.

However I do agree its a bit restricting. I would personally limit bank size to 1 KB per person. If they were made properly and not in some crappy HTML, you could get a 1000 long string into a bank or 250 32 bit integers/floats.
 
Level 6
Joined
Sep 28, 2009
Messages
222
Do keep in mind that this is the beta. It might be something quite easy to edit like a hard codded cap which might be set larger in the final release.

yeah, robbepop and i were also complaining about that it might be possible that blizz increases the limit, because atm the servers seem to be quite weak. maybe with stronger servers the bank limit also will be extended.

but dont know, i have a quite bad feeling about it.
 
Level 2
Joined
May 15, 2008
Messages
22
PPS: im really silly. s3rius, the idea with integers for each quest instead of booleans is much cleverer then mine, cant believe i didnt check this. i think i also understand your algorythm to compress the size. so if i for example want to save the progress of 3 quests i need 3^3 chars for it? or for 4 quests 3^4? so i could maybe reduce the chars for all quests from 300 to 100 (bool --> ints) and then from 100 to 25 (4 quests --> one char) if i can find 81 different chars? but the encryption of this 81 chars would be quite complicated, wouldnt i need a switch with 81 cases? because every case has its individual output? or wait no... i think i dont need switch cases, i could do it with an algorytm, i think i got it xD

To save the progress of 3 quests in ONE character you need 4^3 different letters.
To save the progress of 6 quests in TWO characters you still need 4^3 different letters.
To save the progress of 4 quests in ONE character you need 4^4 different letters. That's 256 letters. If strings are 8-bit (2^8) each then that's exactly how much we got. So basically you COULD save 4 quests in each string character. HOWEVER since there are certain combinations of string characters that create errors (like /0 or /n) we can't use the full array of 256. Thus we're limited to 2^7 different letters. But that's not enough to fully store that 4th quest.
So the best we can squeeze out is 3 full quests plus 1 boolean value.

You don't need so many switch-cases. You can either use an algorhithm or Data Tables for it.


I feel sure that it would be possible to do some sort of compression algorithm on those strings, too.

Sadly, something like a huffman algorithm's nodes are going to take up 200+ bytes by themselves. Some other method would have to be found.

In theory that's a good idea, but it won't work very well.
There is one condition to add further compression: The possible values need to have different probabilities.
Huffman (and all other similar compressions) take string with high probability to occur and reduce their length, while they take strings with low probability and increase their length.

In this case we have a relatively small string length with rather random occurances. Since you have to save the node values too, you'd probably take up more space than actually free.
Also you'd get variable code length, which is less comfortable to program with and could lead to disastrous problems with a system that doesn't load once it exceeds a certain string length.


Sooooo, all in all we have about 95 characters per person, when playing with 8 players.
That's bad, real bad, BUT it could be worse. With 95 chars you can already save quite a bit of info.

And we can always use the best way of compression: Compression through loss of information.
 
Level 12
Joined
Apr 15, 2008
Messages
1,063
I just tested string input, it won't let you use any special characters(ěščřžýá...) or weird symbols (♥◙), basically anything above ~#125. The characters start at ~#30, that gives 96 possible characters in total. (Btw. the special characters can't be input even in custom script... I am going to test it with included script file)

EDIT: " ' < > & won't save correctly (they will be transcribed as &quot; or simillar), so it's actually 91 possible characters.

EDIT 2: Just found out where "preload bank" is stored, in BankList.xml (you can look it up in import manager)
 
Level 1
Joined
Jun 13, 2010
Messages
1
Hi

I would imagine they will be increasing limits at or soon after release, hopefully at least.

I dunno if this would be any more efficient than what was already mentioned but you could also store up to 32 booleans in one integer, if their integers are stored regularly (32-bit).

When testing the banks you should check to see if a mix of strings and integers lets you store more than just a couple huge strings.
 
Level 6
Joined
Sep 28, 2009
Messages
222
Update - Patch 1.1.0

hello everyone,

as you all know in the patch notes there has smth changed about bank size limit in mp.

i just did some tests and they were successfull. robbepop and me were able to load a total of 33480 chars.

the test was done with 2 bank files. one was on robbepops pc and one on mine. both banks are equal and had one section and 120 keys in it. each key was a string with 248 chars from a-z, A-Z and 0-9. banksize is around 38kb.

robbepops bank loaded all 120 chars with a total key count of 29760 (whats absolutly correct), while my bank file only loaded 46 keys with 3720 chars loaded, whats quite strange because the bank had 120 keys and 248 chars each key. so even if there were only loaded 46 chars there should have been 11408 chars loaded. i dont know why the game didnt load all keys and each key only ~ 1/10 of chars in my bank, but with less keys it works perfect what means that there seems to be a limit at around ~30k of chars.

cant tell you more right now.

nevertheless, big THX to blizzard for increasing the limit to acceptable values :)


if you find any mistakes in the load trigger that could cause that result feel free to tell me, but should be ok (bank is preloaded at map init).

JASS:
show load dialog
    Events
        Timer - Elapsed time is 0.0 Game Time seconds
    Local Variables
        cc = 0 <Integer>
    Conditions
    Actions
        Player Group - Pick each player in (Active Players) and do (Actions)
            Actions
                Bank - Open bank "BankTest" for player (Picked player)
                General - If (Conditions) then do (Actions) else do (Actions)
                    If
                        (Section "Test" exists in bank (Last opened bank)) == true
                    Then
                        Variable - Set cc = 0
                        General - Pick each integer from 1 to (Count of keys in section "Test" of bank (Last opened bank)), and do (Actions)
                            Actions
                                Variable - Modify cc: + (Length of (Load key (String((Picked integer))) of section "Test" from bank (Last opened bank) as a String))
                        ------- Comment
                        Dialog - Set loaddialog label text to ("Bank key count: " + ((Text((Count of keys in section "Test" of bank (Last opened bank)))) + ".")) for (Player group((Picked player)))
                        Dialog - Set loaddialog label 2 text to ("char count: " + ((Text(cc)) + ".")) for (Player group((Picked player)))
                        Dialog - Show LoadDialog for (Player group((Picked player)))
                        Dialog - Hide SaveDialog for (Player group((Picked player)))
                    Else
                        UI - Display a Message custom dialog with Title "Error" and Text "No bank file found on your computer..." for (Player group((Picked player))) (Unpause game)
 
Level 1
Joined
Nov 4, 2010
Messages
1
Is that 80 value limitation stil activ?
i have a 12 player map, for each player i need 7 integer.
= 84 value
Should i store it in a string?
What do i do wrong?

Solved: Bank name can't have space in it.
INIT ACTION
JASS:
        General - If (Conditions) then do (Actions) else do (Actions)
            If
                (1 is in (Active Players)) == true
            Then
                Bank - Preload and synchronize bank "Player Highscore" for player 1
                Bank - Open bank "Player Highscore" for player 1
                Variable - Set player_banks[1] = (Last opened bank)
            Else
        General - If (Conditions) then do (Actions) else do (Actions)
            If
                (2 is in (Active Players)) == true
            Then
                Bank - Preload and synchronize bank "Player Highscore" for player 2
                Bank - Open bank "Player Highscore" for player 2
                Variable - Set player_banks[2] = (Last opened bank)

JASS:
get_bank_total
    Options: Function
    Return Type: Integer
    Parameters
        player = 0 <Integer>
        key = "" <String>
    Grammar Text: get_bank_total(player, key)
    Hint Text: (None)
    Custom Script Code
    Local Variables
    Actions
        General - Switch (Actions) depending on key
            Cases
                General - If (banks_key_total.total_tk)
                    Actions
                        General - Return (Load banks_key_total.total_tk of section bank_section from bank player_banks[player] as integer value)
                General - If (banks_key_total.total_clone)
                    Actions
                        General - Return (Load banks_key_total.total_clone of section bank_section from bank player_banks[player] as integer value)
                General - If (banks_key_total.total_game)
                    Actions
                        General - Return (Load banks_key_total.total_game of section bank_section from bank player_banks[player] as integer value)
                General - If (banks_key_total.total_get_cloned)
                    Actions
                        General - Return (Load banks_key_total.total_get_cloned of section bank_section from bank player_banks[player] as integer value)
                General - If (banks_key_total.total_start_as_thing)
                    Actions
                        General - Return (Load banks_key_total.total_start_as_thing of section bank_section from bank player_banks[player] as integer value)
                General - If (banks_key_total.total_thing_killed)
                    Actions
                        General - Return (Load banks_key_total.total_thing_killed of section bank_section from bank player_banks[player] as integer value)
                General - If (banks_key_total.total_win)
                    Actions
                        General - Return (Load banks_key_total.total_win of section bank_section from bank player_banks[player] as integer value)
            Default
                General - Return -1
JASS:
set_bank_total
    Options: Action
    Return Type: (None)
    Parameters
        player = 0 <Integer>
        key = "" <String>
        value = 0 <Integer>
    Grammar Text: set_bank_total(player, key, value)
    Hint Text: (None)
    Custom Script Code
    Local Variables
    Actions
        General - If (Conditions) then do (Actions) else do (Actions)
            If
                value >= 0
            Then
                General - Switch (Actions) depending on key
                    Cases
                        General - If (banks_key_total.total_clone)
                            Actions
                                Bank - Store integer value as banks_key_total.total_clone of section bank_section in bank player_banks[player]
                        General - If (banks_key_total.total_game)
                            Actions
                                Bank - Store integer value as banks_key_total.total_game of section bank_section in bank player_banks[player]
                        General - If (banks_key_total.total_get_cloned)
                            Actions
                                Bank - Store integer value as banks_key_total.total_get_cloned of section bank_section in bank player_banks[player]
                        General - If (banks_key_total.total_start_as_thing)
                            Actions
                                Bank - Store integer value as banks_key_total.total_start_as_thing of section bank_section in bank player_banks[player]
                        General - If (banks_key_total.total_thing_killed)
                            Actions
                                Bank - Store integer value as banks_key_total.total_thing_killed of section bank_section in bank player_banks[player]
                        General - If (banks_key_total.total_win)
                            Actions
                                Bank - Store integer value as banks_key_total.total_win of section bank_section in bank player_banks[player]
                        General - If (banks_key_total.total_tk)
                            Actions
                                Bank - Store integer value as banks_key_total.total_tk of section bank_section in bank player_banks[player]
                    Default
            Else

JASS:
save_all_high_score
    Options: Action
    Return Type: (None)
    Parameters
    Grammar Text: save_all_high_score()
    Hint Text: (None)
    Custom Script Code
    Local Variables
        _player = 0 <Integer>
    Actions
        Player Group - For each player _player in (Active Players) do (Actions)
            Actions
                General - If (Conditions) then do (Actions) else do (Actions)
                    If
                        want_save[_player] == true
                    Then
                        Bank - Save bank player_banks[_player]
                    Else
 
Last edited:
Status
Not open for further replies.
Top