Snippet PreventSave

Reaction score
341
Introduction
This library is simple enough. It allows you to enable or disabled game saving. It works by showing a dialog instantly before a game is saved. This closes the save screen therefor the game is never actually saved. Nothing visually happens to the game except for maybe a quick open and close of the save dialog, though it's hardly noticeable.

This even works in single player surprisngly without pausing the game which usually happens when a dialog is opened offline. You can toggle allowing or disallowing saving by setting GAME_ALLOW_SAVE to true, or false.

Code

JASS:
//====================================
// PreventSave
//====================================
//
//   This library is simple enough. It allows you to enable or
//   disabled game saving. It works by showing a dialog instantly
//   before a game is saved. This closes the save screen therefor
//   the game is never actually saved.
//
//   Nothing visually happens to the game except for maybe a quick open
//   and close of the save dialog, though it's hardly noticeable.
//   This even works in single player surprisngly without pausing the game
//   which usually happens when a dialog is opened offline.
//
//   You can toggle allowing or disallowing saving by setting
//   GameAllowSave to true, or false.
//
//====================================
// Import Instructions
//====================================
//
//   1. Copy this entire script.
//   2. Create a new trigger in your trigger
//      editor and convert it to Jass.
//   3. Paste this in there and save the map.
//
//      This requires JassHelper which is included
//      in JassNewGenPack.
//

library PreventSave initializer onInit
    
    globals
        boolean GameAllowSave = false
    endglobals
    
    globals
        private dialog D = DialogCreate()
        private timer T  = CreateTimer()
    endglobals
    
    private function Exit takes nothing returns nothing
        call DialogDisplay(GetLocalPlayer(), D, false)
    endfunction
    
    private function StopSave takes nothing returns nothing
        if not GameAllowSave then
            call DialogDisplay(GetLocalPlayer(), D, true)
            call TimerStart(T, 0.00, false, function Exit)
        endif
    endfunction
    
    private function onInit takes nothing returns nothing
        local trigger t = CreateTrigger()
        call TriggerRegisterGameEvent(t, EVENT_GAME_SAVE)
        call TriggerAddAction(t, function StopSave)
    endfunction

endlibrary
 

Viikuna

No Marlo no game.
Reaction score
265
Thats damn cool. Ive seen something like this in some single player maps. You can actually make some save points now, where saving is only allowed.
 

Jesus4Lyf

Good Idea™
Reaction score
397
JASS:
    private function StopSave takes nothing returns nothing
        local integer i = 0
        if not GAME_ALLOW_SAVE then
            call DialogDisplay(GetLocalPlayer(), D, true)
            call TimerStart(T, 0.00, false, function Exit)
        endif
    endfunction
    
    private function onInit takes nothing returns nothing
        local trigger t = CreateTrigger()
        call TriggerRegisterGameEvent(t, EVENT_GAME_SAVE)
        call TriggerAddAction(t, function StopSave)
    endfunction

-->
JASS:
    private function StopSave takes nothing returns boolean
        //local integer i = 0
        if not GAME_ALLOW_SAVE then
            call DialogDisplay(GetLocalPlayer(), D, true)
            call TimerStart(T, 0.00, false, function Exit)
        endif
        return false
    endfunction
    
    private function onInit takes nothing returns nothing
        local trigger t = CreateTrigger()
        call TriggerRegisterGameEvent(t, EVENT_GAME_SAVE)
        call TriggerAddCondition(t, Filter(function StopSave))
    endfunction

Of course, this is irrelevant to the awesomeness of this. Well done. :)

Edit: Will approve if we can get a verify that this works online without desynchs...
 
Reaction score
341
I've tested online, but not the GetLocalPlayer() version, before I used a player loop.

That's where the [ljass]local integer i[/ljass] came from :p

I had the other player save too, just to make sure that the save wasn't added with delay.
 

Viikuna

No Marlo no game.
Reaction score
265
Id guss that displaying dialog is local stuff, but testing it is ofc the best way to find out.

Lols, I sometimes actually forget multiplayer saving, since I see it used so rarely.
 

Lyerae

I keep popping up on this site from time to time.
Reaction score
105
[ljass]boolean GAME_ALLOW_SAVE = false[/ljass]

-->

[ljass]private constant boolean GAME_ALLOW_SAVE = false[/ljass]

Other than that, system looks good. +rep
 

Viikuna

No Marlo no game.
Reaction score
265
That would totally fuck up that cool saving point idea :(
 

Executor

I see you
Reaction score
57
JASS:
//   This library is simple enough. It allows you to enable or
//   disabled game saving.


"disabled"

Nice Idea!
 

tooltiperror

Super Moderator
Reaction score
231
This is grand!

I hate how in so many games that people are asses and they all save to lag and annoy people.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top