Was working on implementing a save/load code (CodeGen 1.0.1) into a map. The custom scripts (posted below) seem to corrupt the map when the map is saved in the world editor (JassHelper finds errors and the map is not playable in game). I am not very knowledgeable with custom scripts or jass, but would like to find the problem in the triggering. Posted below are TriggerHappy's triggers for the save/load code exactly as found on the map (for reference). One would figure that the save/load system would work if just copied and pasted into a different map, but even without changing any of the GUI below and pasting it into my map, it still corrupts the map. Again, i am illiterate with JASS and custom script. any suggestions on how to get this to work? Feel free to state whatever further information you need.
-
CodeGen Init
-
Events
- Map initialization
- Conditions
-
Actions
- -------- -------------------- --------
- Set SaveLoad_Alphabet = abcdefghkmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ0123456789
- Set SaveLoad_CheckName = True
- Set SaveLoad_Security = True
- Set SaveLoad_HyphenSpace = 4
- Set SaveLoad_SeperationChar = -
- Set SaveLoad_Lower = |c002a4580
- Set SaveLoad_Number = |cffffcc00
- Set SaveLoad_Upper = |cff008000
- -------- -------------------- --------
- -------- -------------------- --------
- Set SaveLoad_MaxValue = 6
- -------- -------------------- --------
- -------- -------------------- --------
- Set SaveLoad_Item[0] = (Item-type of No item)
- Set SaveLoad_Item[1] = Claws of Attack +15
- Set SaveLoad_Item[2] = Crown of Kings +5
- Set SaveLoad_Item[3] = Kelen's Dagger of Escape
- Set SaveLoad_Item[4] = Mask of Death
- Set SaveLoad_Item[5] = Orb of Frost
- Set SaveLoad_Item[6] = Ring of Protection +5
- Set SaveLoad_ItemCount = 6
- -------- -------------------- --------
- -------- -------------------- --------
- Set SaveLoad_Hero[0] = Blood Mage
- Set SaveLoad_Hero[1] = Lich
- Set SaveLoad_HeroCount = 1
- -------- -------------------- --------
- -------- -------------------- --------
- Set SaveLoad_Full = SaveLoad_Alphabet
- Set SaveLoad_Error = <Empty String>
- Set SaveLoad_Base = (Length of SaveLoad_Alphabet)
- Set SaveLoad_Char[0] = <Empty String>
- Set Load[0] = 0
- Set LoadCount = 0
- Custom script: call CodeGen_Init()
-
Events
-
CodeGen Save
-
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
- Set SaveCount = 0
- Unit Group - Pick every unit in (Units owned by (Triggering player) matching (((Matching unit) is A Hero) Equal to True)) and do (Set Hero = (Picked unit))
- Custom script: set udg_Save[udg_SaveCount] = CodeGen_ConvertUnit(GetUnitTypeId(udg_Hero))
- -------- Save heroes level. --------
- Set SaveCount = (SaveCount + 1)
- Set Save[SaveCount] = (Hero level of Hero)
- -------- Save players gold. --------
- Set SaveCount = (SaveCount + 1)
- Set Save[SaveCount] = ((Triggering player) Current gold)
- -------- Save heroes items. --------
-
For each (Integer A) from 1 to 7, do (Actions)
-
Loop - Actions
- Set SaveCount = (SaveCount + 1)
- Set Item = (Item carried by Hero in slot (Integer A))
- Custom script: set udg_Save[udg_SaveCount] = CodeGen_ConvertItem(GetItemTypeId(udg_Item))
-
Loop - Actions
- -------- Show Code --------
- Custom script: set udg_Code = CodeGen_Compile()
- Game - Display to (Player group((Triggering player))) for 60.00 seconds the text: Code
-
Events
-
CodeGen Load
-
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 -load
-
Actions
- -------- Check if load is valid --------
- Set Code = (Substring((Entered chat string), 7, 999))
- Custom script: call CodeGen_Load(udg_Code)
-
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
-
If - Conditions
- SaveLoad_Valid Equal to False
-
Then - Actions
- Game - Display to (Player group((Triggering player))) for 10.00 seconds the text: SaveLoad_Error
- Skip remaining actions
- Else - Actions
-
If - Conditions
- -------- Start loading, load the hero first. --------
- Set LoadCount = 0
- Unit Group - Pick every unit in (Units owned by (Triggering player) matching (((Matching unit) is A Hero) Equal to True)) and do (Unit - Remove (Picked unit) from the game)
- Unit - Create 1 SaveLoad_Hero[Load[LoadCount]] for (Triggering player) at ((Triggering player) start location) facing Default building facing degrees
- Set Hero = (Last created unit)
- Selection - Select (Last created unit) for (Triggering player)
- -------- Load heroes level --------
- Set LoadCount = (LoadCount + 1)
- Hero - Set (Last created unit) Hero-level to Load[LoadCount], Hide level-up graphics
- -------- Now load players gold --------
- Set LoadCount = (LoadCount + 1)
- Player - Set (Triggering player) Current gold to Load[LoadCount]
- -------- Now items --------
-
For each (Integer A) from 1 to 6, do (Actions)
-
Loop - Actions
- Set LoadCount = (LoadCount + 1)
- Hero - Create SaveLoad_Item[Load[LoadCount]] and give it to Hero
-
Loop - Actions
-
Events