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

[Trigger] making a save code @ end game

Status
Not open for further replies.
Level 14
Joined
Apr 20, 2009
Messages
1,543
Hi all, I'm having a bit of trouble with a save/load code system I use in one of my maps... And what I want to know is:
is it possible to make a code whenever the game ends instead of typing
-save? There won't be a lot of leavers this way ;)

I tryed this:

  • My game is ending
    • Events
      • My game ends :)
    • Conditions
    • Actions
      • Set Save[1] = Total_Score_of_player[1]
      • Set Save[2] = double_kills_player[1]
      • Set Save[3] = triple_kills_player[1]
      • Set Save[4] = overkills_player[1]
      • Set Save[5] = killtaculars_player[1]
      • Set Save[6] = killtrocitys_player[1]
      • Set Save[7] = killinmanjaros_player[1]
      • Set SaveCount = 7
      • Custom script: set udg_Code = SaveLoad_Encode()
      • Game - Display to Player Group - Player 1 (Red) for 60.00 seconds the text: Code
      • Set Save[1] = Total_Score_of_player[2]
      • Set Save[2] = double_kills_player[2]
      • Set Save[3] = triple_kills_player[2]
      • Set Save[4] = overkills_player[2]
      • Set Save[5] = killtaculars_player[2]
      • Set Save[6] = killtrocitys_player[2]
      • Set Save[7] = killinmanjaros_player[2]
      • Set SaveCount = 7
      • Custom script: set udg_Code = SaveLoad_Encode()
      • Game - Display to Player Group - Player 2 (Blue) for 60.00 seconds the text: Code
      • Set Save[1] = Total_Score_of_player[3]
      • Set Save[1] = Total_Score_of_player[3]
      • Set Save[2] = double_kills_player[3]
      • Set Save[3] = triple_kills_player[3]
      • Set Save[4] = overkills_player[3]
      • Set Save[5] = killtaculars_player[3]
      • Set Save[6] = killtrocitys_player[3]
      • Set Save[7] = killinmanjaros_player[3]
      • Set SaveCount = 7
      • Custom script: set udg_Code = SaveLoad_Encode()
      • Game - Display to Player Group - Player 3 (Teal) for 60.00 seconds the text: Code
      • Set Save[2] = double_kills_player[4]
      • Set Save[3] = triple_kills_player[4]
      • Set Save[4] = overkills_player[4]
      • Set Save[5] = killtaculars_player[4]
      • Set Save[6] = killtrocitys_player[4]
      • Set Save[7] = killinmanjaros_player[4]
      • Set SaveCount = 7
      • Custom script: set udg_Code = SaveLoad_Encode()
      • Game - Display to Player Group - Player 4 (Purple) for 60.00 seconds the text: Code
      • Set Save[2] = double_kills_player[5]
      • Set Save[3] = triple_kills_player[5]
      • Set Save[4] = overkills_player[5]
      • Set Save[5] = killtaculars_player[5]
      • Set Save[6] = killtrocitys_player[5]
      • Set Save[7] = killinmanjaros_player[5]
      • Set SaveCount = 7
      • Custom script: set udg_Code = SaveLoad_Encode()
      • Game - Display to Player Group - Player 5 (Yellow) for 60.00 seconds the text: Code
      • Set Save[1] = Total_Score_of_player[6]
      • Set Save[2] = double_kills_player[6]
      • Set Save[3] = triple_kills_player[6]
      • Set Save[4] = overkills_player[6]
      • Set Save[5] = killtaculars_player[6]
      • Set Save[6] = killtrocitys_player[6]
      • Set Save[7] = killinmanjaros_player[6]
      • Set SaveCount = 7
      • Custom script: set udg_Code = SaveLoad_Encode()
      • Game - Display to Player Group - Player 6 (Orange) for 60.00 seconds the text: Code
      • Set Save[1] = Total_Score_of_player[7]
      • Set Save[2] = double_kills_player[7]
      • Set Save[3] = triple_kills_player[7]
      • Set Save[4] = overkills_player[7]
      • Set Save[5] = killtaculars_player[7]
      • Set Save[6] = killtrocitys_player[7]
      • Set Save[7] = killinmanjaros_player[7]
      • Set SaveCount = 7
      • Custom script: set udg_Code = SaveLoad_Encode()
      • Game - Display to Player Group - Player 7 (Green) for 60.00 seconds the text: Code
      • Set Save[1] = Total_Score_of_player[8]
      • Set Save[1] = Total_Score_of_player[8]
      • Set Save[2] = double_kills_player[8]
      • Set Save[3] = triple_kills_player[8]
      • Set Save[4] = overkills_player[8]
      • Set Save[5] = killtaculars_player[8]
      • Set Save[6] = killtrocitys_player[8]
      • Set Save[7] = killinmanjaros_player[8]
      • Set SaveCount = 7
      • Custom script: set udg_Code = SaveLoad_Encode()
      • Game - Display to Player Group - Player 8 (Pink) for 60.00 seconds the text: Code
      • Set Save[2] = double_kills_player[9]
      • Set Save[3] = triple_kills_player[9]
      • Set Save[4] = overkills_player[9]
      • Set Save[5] = killtaculars_player[9]
      • Set Save[6] = killtrocitys_player[9]
      • Set Save[7] = killinmanjaros_player[9]
      • Set SaveCount = 7
      • Custom script: set udg_Code = SaveLoad_Encode()
      • Game - Display to Player Group - Player 9 (Gray) for 60.00 seconds the text: Code
      • Set Save[2] = double_kills_player[10]
      • Set Save[3] = triple_kills_player[10]
      • Set Save[4] = overkills_player[10]
      • Set Save[5] = killtaculars_player[10]
      • Set Save[6] = killtrocitys_player[10]
      • Set Save[7] = killinmanjaros_player[10]
      • Set SaveCount = 7
      • Custom script: set udg_Code = SaveLoad_Encode()
      • Game - Display to Player Group - Player 10 (Light Blue) for 60.00 seconds the text: Code
but this didnt work... When I tryed loading this code it said that its an invalid code :(
(didn't loop it since I wanted to see if it works first.. And it didnt :()

I used the save/load code made by acehart
save/load code
 
Level 14
Joined
Apr 20, 2009
Messages
1,543
yes these are all integers, and I use this to load the code:

  • SaveLoad 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
      • Player - Player 5 (Yellow) types a chat message containing -load as A substring
      • Player - Player 6 (Orange) types a chat message containing -load as A substring
      • Player - Player 7 (Green) types a chat message containing -load as A substring
      • Player - Player 8 (Pink) types a chat message containing -load as A substring
      • Player - Player 9 (Gray) types a chat message containing -load as A substring
      • Player - Player 10 (Light Blue) 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 True
        • Then - Actions
          • For each (Integer A) from 1 to SaveCount, do (Actions)
            • Loop - Actions
              • Set Total_Score_of_player[(Integer A)] = Save[1]
              • Set double_kills_player[(Integer A)] = Save[2]
              • Set triple_kills_player[(Integer A)] = Save[3]
              • Set overkills_player[(Integer A)] = Save[4]
              • Set killtaculars_player[(Integer A)] = Save[5]
              • Set killtrocitys_player[(Integer A)] = Save[6]
              • Set killinmanjaros_player[(Integer A)] = Save[7]
        • Else - Actions
          • Game - Display to (Player group((Triggering player))) the text: Invalid Code!
check the link in the post above to the system if you are unsure of how this save/load code works...
 
Level 5
Joined
Dec 18, 2007
Messages
205
i checked it. is the code always telling in-game that it is invalid or are the loading values messed up?

--> because u cant use the loop to load!

  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
  • If - Conditions
  • Validate Equal to True
  • Then - Actions
  • For each (Integer A) from 1 to SaveCount, do (Actions)
  • Loop - Actions
  • Set Total_Score_of_player[(Integer A)] = Save[1]
  • Set double_kills_player[(Integer A)] = Save[2]
  • Set triple_kills_player[(Integer A)] = Save[3]
  • Set overkills_player[(Integer A)] = Save[4]
  • Set killtaculars_player[(Integer A)] = Save[5]
  • Set killtrocitys_player[(Integer A)] = Save[6]
  • Set killinmanjaros_player[(Integer A)] = Save[7]
  • Else - Actions
must be

  • If - Conditions
  • Validate Equal to True
  • Then - Actions
  • Set SaveCount = 1
  • Set Total_Score_of_player[GetPlayerNumberOf(GetTriggeringPlayer())] = Save[Savecount]
  • Set SaveCount = (SaveCount + 1)
  • Set double_kills_player[GetPlayerNumberOf(GetTriggeringPlayer())] = Save[Savecount]
  • Set SaveCount = (SaveCount + 1)
  • Set triple_kills_player[GetPlayerNumberOf(GetTriggeringPlayer())] = Save[Savecount]
  • Set SaveCount = (SaveCount + 1)
  • Set overkills_player[GetPlayerNumberOf(GetTriggeringPlayer())] = Save[Savecount]
  • Set SaveCount = (SaveCount + 1)
  • Set killtaculars_player[GetPlayerNumberOf(GetTriggeringPlayer())] = Save[Savecount]
  • Set SaveCount = (SaveCount + 1)
  • Set killtrocitys_player[GetPlayerNumberOf(GetTriggeringPlayer())] = Save[Savecount]
  • Set SaveCount = (SaveCount + 1)
  • Set killinmanjaros_player[GetPlayerNumberOf(GetTriggeringPlayer())] = Save[Savecount]
if i read the save/load - code correct.
 
Level 14
Joined
Apr 20, 2009
Messages
1,543
i checked it. is the code always telling in-game that it is invalid or are the loading values messed up?

no, when I use this trigger to save the code it works fine:

  • SaveLoad 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
      • Player - Player 5 (Yellow) types a chat message containing -save as An exact match
      • Player - Player 6 (Orange) types a chat message containing -save as An exact match
      • Player - Player 7 (Green) types a chat message containing -save as An exact match
      • Player - Player 8 (Pink) types a chat message containing -save as An exact match
      • Player - Player 9 (Gray) types a chat message containing -save as An exact match
      • Player - Player 10 (Light Blue) types a chat message containing -save as An exact match
    • Conditions
    • Actions
      • -------- Those values need saving --------
      • Set Save[1] = Total_Score_of_player[(Player number of (Triggering player))]
      • Set Save[2] = double_kills_player[(Player number of (Triggering player))]
      • Set Save[3] = triple_kills_player[(Player number of (Triggering player))]
      • Set Save[4] = overkills_player[(Player number of (Triggering player))]
      • Set Save[5] = killtaculars_player[(Player number of (Triggering player))]
      • Set Save[6] = killtrocitys_player[(Player number of (Triggering player))]
      • Set Save[7] = killinmanjaros_player[(Player number of (Triggering player))]
      • Set Save[8] = killtastrophes_player[(Player number of (Triggering player))]
      • Set Save[9] = killpocalypses_player[(Player number of (Triggering player))]
      • Set Save[10] = killionaires_player[(Player number of (Triggering player))]
      • -------- The number of values we have --------
      • Set SaveCount = 10
      • -------- 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
but when i try to display the code to a player without using the -save method it will be a invalid code for some reason :S
 
Level 5
Joined
Dec 18, 2007
Messages
205
So when loading it jumps in the else action and displays

Game - Display to (Player group((Triggering player))) the text: Invalid Code!

??

Okay then i failed too, sorry cant help ;(

EDIT: just read what you wrote, then my upper post could be completely wrong and you understood the save/load-code better than me
 
Level 14
Joined
Apr 20, 2009
Messages
1,543
So when loading it jumps in the else action and displays

Game - Display to (Player group((Triggering player))) the text: Invalid Code!

??

Okay then i failed too, sorry cant help ;(

EDIT: just read what you wrote, then my upper post could be completely wrong and you understood the save/load-code better than me

no problem man... I think I'm lost in this challenge :( that makes me sad...
I have no idea at all why it says that it is invalid ;(
 
I also use this system though I haven't tried running it at end game... maybe there is something in the custom script that needs the -save command.... I think you should try looking for aceheart to know about the error...

I think it has something to do with the player name perhaps? Aceheart's system has an initially enabled player name filter which makes the code only usable by the player who saved it...
 
Level 14
Joined
Apr 20, 2009
Messages
1,543
already fixed it @ October 8th, 2009, 10:09 AM ;) it was in the jass script...

JASS:
function SaveLoad_EncodeVerify takes string buffer returns integer
    local integer i = 0
    local integer j = 0
    local string name = GetPlayerName(GetTriggerPlayer())
    if udg_SaveLoad_UsePlayername == true then
        loop
            set j = j + SaveLoad_EncodeChar(SubString(name,i,i + 1))
            set i = i + 1
            exitwhen i >= StringLength(name)
        endloop
    endif
    set i = 0
    loop
        set j = j + SaveLoad_EncodeChar(SubString(buffer,i,i + 1))
        set i = i + 1
        exitwhen i >= StringLength(buffer)
    endloop
    return j
endfunction

changed it to:

JASS:
function SaveLoad_EncodeVerify takes string buffer returns integer
    local integer i = 0
    local integer j = 0
    local string name = GetPlayerName(GetLocalPlayer())
    if udg_SaveLoad_UsePlayername == true then
        loop
            set j = j + SaveLoad_EncodeChar(SubString(name,i,i + 1))
            set i = i + 1
            exitwhen i >= StringLength(name)
        endloop
    endif
    set i = 0
    loop
        set j = j + SaveLoad_EncodeChar(SubString(buffer,i,i + 1))
        set i = i + 1
        exitwhen i >= StringLength(buffer)
    endloop
    return j
endfunction
 
already fixed it @ October 8th, 2009, 10:09 AM ;) it was in the jass script...

JASS:
function SaveLoad_EncodeVerify takes string buffer returns integer
    local integer i = 0
    local integer j = 0
    local string name = GetPlayerName(GetTriggerPlayer())
    if udg_SaveLoad_UsePlayername == true then
        loop
            set j = j + SaveLoad_EncodeChar(SubString(name,i,i + 1))
            set i = i + 1
            exitwhen i >= StringLength(name)
        endloop
    endif
    set i = 0
    loop
        set j = j + SaveLoad_EncodeChar(SubString(buffer,i,i + 1))
        set i = i + 1
        exitwhen i >= StringLength(buffer)
    endloop
    return j
endfunction

changed it to:

JASS:
function SaveLoad_EncodeVerify takes string buffer returns integer
    local integer i = 0
    local integer j = 0
    local string name = GetPlayerName(GetLocalPlayer())
    if udg_SaveLoad_UsePlayername == true then
        loop
            set j = j + SaveLoad_EncodeChar(SubString(name,i,i + 1))
            set i = i + 1
            exitwhen i >= StringLength(name)
        endloop
    endif
    set i = 0
    loop
        set j = j + SaveLoad_EncodeChar(SubString(buffer,i,i + 1))
        set i = i + 1
        exitwhen i >= StringLength(buffer)
    endloop
    return j
endfunction

so its really on the script....
 
Status
Not open for further replies.
Top