System GameStatus

Bribe

vJass errors are legion
Reaction score
67
JASS:
library GameStatus initializer Ini /*
    
    GameStatus 2.0 by Bribe, special thanks to Troll-Brain
    
    Check if a game is single-player online or is a single-player replay. Due
    to Warcraft 3 limitations there is no known bugfree way to detect a multi-
    player replay.
    
    Even if you start a timer, pause the game, wait 0 seconds and unpause the
    game, the timer will show 0.025 elapsed for both online games and for re-
    plays.
    
    However, the main thing you need to detect is when the game is single-
    player, which means it's possible for the user to cheat. If you are doing
    an RPG and the user wants to play it single-player, the player can do it
    by selecting "LAN" as the method of play which doesn't even require an
    Internet connection. This way he/she can progress through the story line
    without needing other players and without you risking the player cheating.
    
    function IsGameSinglePlayer
        takes nothing
            returns boolean
    
        Returns true if the game is single player, where cheat codes can be
        used. This can be called during map initialization reliably.
    
    function OnGameStatusFound
        takes string func
            returns nothing
    
        Executes the function when the game's status has been detected. The 2
        functions "IsGameOnline" and "IsGameReplay" cannot be used reliably
        from an initializer, you must wait for this function to run first.
    
    function IsGameOnline
        takes nothing
            returns boolean
        
        Returns true if the game is being played over a network or a replay
        from a network game.
    
    function IsGameReplay
        takes nothing
            returns boolean
    
        Returns true if the game is a single-player replay. I have not been
        able to find a bug-free way to detect a replay from a game which was
        played online.
*/
    globals
        //If RGCFD returns true, cheat codes can be used (it's a non-network
        //single-player game).
        private integer iGame = IntegerTertiaryOp(ReloadGameCachesFromDisk(), 0, 1)
        private integer n = 0
        private string array funcs
    endglobals
    
    //=======================================================================
    function IsGameOnline takes nothing returns boolean
        return iGame == 2
    endfunction
    
    //=======================================================================
    function IsGameReplay takes nothing returns boolean
        return iGame == 1
    endfunction
    
    //=======================================================================
    function IsGameSinglePlayer takes nothing returns boolean
        return iGame == 0
    endfunction
    
    //=======================================================================
    function OnGameStatusFound takes string func returns nothing
        set funcs[n] = func
        set n = n + 1
    endfunction
    
    //=======================================================================
    /* private */ function GameStatus___aDs0F83254K43593Jfs takes nothing returns nothing
        call TriggerSleepAction(0)
        loop
            set n = n - 1
            exitwhen n < 0
            call ExecuteFunc(funcs[n])
        endloop
    endfunction
    
    //=======================================================================
    private function Ini takes nothing returns nothing
        call ExecuteFunc("GameStatus___aDs0F83254K43593Jfs")
        if iGame > 0 then
            //Replays ignore any thread-sleep type things which were not in
            //the original game - thus this is perfect for detecting a single-
            //player replay. TriggerSyncReady fires before TriggerSleepAction.
            call TriggerSyncReady()
            set iGame = 2
        endif
    endfunction
    
endlibrary
 

GFreak45

I didnt slap you, i high 5'd your face.
Reaction score
130
i could see this being usefull for someone making a higher quality rpg, but other than that what would its uses be?
 

PurgeandFire

zxcvmkgdfg
Reaction score
509
Not much. But some people like to know this kind of information just in general to control saving and things like that. For example, I think Gaia or TKoK (forget which) disables single-player save-load codes. (which is kind of annoying)
 

Sgqvur

FullOfUltimateTruthsAndEt ernalPrinciples, i.e shi
Reaction score
62
[ljass]private boolean replay = not ReloadGameCachesFromDisk()[/ljass]

So gamecache does not load in a replay is that correct? This is really a nice resource though, some "cool things" could be done for replays only I think.
 

NoobImbaPro

You can change this now in User CP.
Reaction score
60
Q1:Bribe are you sure about that delay?
Q2:Can it show "online" if it is LAN too?

EDIT: pff idiot questions, let me do a better. Can you see in jass if the game is played in WAN or LAN?
 

Bribe

vJass errors are legion
Reaction score
67
LAN and Battle.net return the same results.

I have to update this resource however. There is a selection event delay in replays too which is completely bogus.
 

Bribe

vJass errors are legion
Reaction score
67
Update to 2.0 to fix some known issues. There is no known, bug-free way to differentiate between replay and network game.
 

Sgqvur

FullOfUltimateTruthsAndEt ernalPrinciples, i.e shi
Reaction score
62
Bribe:
1. Update to 2.0 to fix some known issues. There is no known, bug-free way to differentiate between replay and network game.

1. What about this resource?: http://www.wc3c.net/showthread.php?t=101256, then network_play = not is_single and not is_replay right?
 

Bribe

vJass errors are legion
Reaction score
67
There is no known, bug-free way to differentiate between replay and network game.

I highlighted part of the spot you quoted me on.

If the game is minimized (this happens a lot when waiting for the game to start by the way) it will be treated as a replay. It also takes up a pause.

That is a serious bug! That could reveal secret "replay-only" information to an actual online game. The bug cannot be ignored, it is catastrophic.
 

Sgqvur

FullOfUltimateTruthsAndEt ernalPrinciples, i.e shi
Reaction score
62
Bribe:
1. I highlighted part of the spot you quoted me on.

1. Wait what?... Anyway what about this resource: http://www.wc3c.net/showthread.php?t=104921, then is_replay = not is_single and not is_online right?

It has a con "It will display "cheat enabled\disabled" message." this could be worked around by clearing the screen buffer perhaps I think, or
if it doesn't work this way, then... idk.
 

Bribe

vJass errors are legion
Reaction score
67
I said that if the screen is minimized it bugs, because it thinks it is a replay.

Don't read between the lines dude, just read what I am writing. I am not trying to trick you, what I am saying is that this camera method for detecting replays is horribly flawed.
 
General chit-chat
Help Users
  • No one is chatting at the moment.
  • Ghan Ghan:
    Howdy
  • Ghan Ghan:
    Still lurking
    +3
  • The Helper The Helper:
    I am great and it is fantastic to see you my friend!
    +1
  • The Helper The Helper:
    If you are new to the site please check out the Recipe and Food Forum https://www.thehelper.net/forums/recipes-and-food.220/
  • Monovertex Monovertex:
    How come you're so into recipes lately? Never saw this much interest in this topic in the old days of TH.net
  • Monovertex Monovertex:
    Hmm, how do I change my signature?
  • tom_mai78101 tom_mai78101:
    Signatures can be edit in your account profile. As for the old stuffs, I'm thinking it's because Blizzard is now under Microsoft, and because of Microsoft Xbox going the way it is, it's dreadful.
  • The Helper The Helper:
    I am not big on the recipes I am just promoting them - I use the site as a practice place promoting stuff
    +2
  • Monovertex Monovertex:
    @tom_mai78101 I must be blind. If I go on my profile I don't see any area to edit the signature; If I go to account details (settings) I don't see any signature area either.
  • The Helper The Helper:
    You can get there if you click the bell icon (alerts) and choose preferences from the bottom, signature will be in the menu on the left there https://www.thehelper.net/account/preferences
  • The Helper The Helper:
    I think I need to split the Sci/Tech news forum into 2 one for Science and one for Tech but I am hating all the moving of posts I would have to do
  • The Helper The Helper:
    What is up Old Mountain Shadow?
  • The Helper The Helper:
    Happy Thursday!
    +1
  • Varine Varine:
    Crazy how much 3d printing has come in the last few years. Sad that it's not as easily modifiable though
  • Varine Varine:
    I bought an Ender 3 during the pandemic and tinkered with it all the time. Just bought a Sovol, not as easy. I'm trying to make it use a different nozzle because I have a fuck ton of Volcanos, and they use what is basically a modified volcano that is just a smidge longer, and almost every part on this thing needs to be redone to make it work
  • Varine Varine:
    Luckily I have a 3d printer for that, I guess. But it's ridiculous. The regular volcanos are 21mm, these Sovol versions are about 23.5mm
  • Varine Varine:
    So, 2.5mm longer. But the thing that measures the bed is about 1.5mm above the nozzle, so if I swap it with a volcano then I'm 1mm behind it. So cool, new bracket to swap that, but THEN the fan shroud to direct air at the part is ALSO going to be .5mm to low, and so I need to redo that, but by doing that it is a little bit off where it should be blowing and it's throwing it at the heating block instead of the part, and fuck man
  • Varine Varine:
    I didn't realize they designed this entire thing to NOT be modded. I would have just got a fucking Bambu if I knew that, the whole point was I could fuck with this. And no one else makes shit for Sovol so I have to go through them, and they have... interesting pricing models. So I have a new extruder altogether that I'm taking apart and going to just design a whole new one to use my nozzles. Dumb design.
  • Varine Varine:
    Can't just buy a new heatblock, you need to get a whole hotend - so block, heater cartridge, thermistor, heatbreak, and nozzle. And they put this fucking paste in there so I can't take the thermistor or cartridge out with any ease, that's 30 dollars. Or you can get the whole extrudor with the direct driver AND that heatblock for like 50, but you still can't get any of it to come apart
  • Varine Varine:
    Partsbuilt has individual parts I found but they're expensive. I think I can get bits swapped around and make this work with generic shit though
  • Ghan Ghan:
    Heard Houston got hit pretty bad by storms last night. Hope all is well with TH.
  • The Helper The Helper:
    Power back on finally - all is good here no damage
    +1
  • V-SNES V-SNES:
    Happy Friday!
    +1

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top