]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Autoscreenshot: allow screenshots to be taken for old clients connected to new server...
authorterencehill <piuntn@gmail.com>
Fri, 24 May 2024 17:18:44 +0000 (19:18 +0200)
committerterencehill <piuntn@gmail.com>
Fri, 24 May 2024 17:40:30 +0000 (19:40 +0200)
qcsrc/server/intermission.qc
xonotic-client.cfg

index ae753d275095fdfc084c74a9f3ce0e18ef29fa9d..713a72052aaeb7de6ea8cbfdac107e518343c652 100644 (file)
@@ -443,8 +443,32 @@ void IntermissionThink(entity this)
                this.autoscreenshot = -1;
                if(IS_REAL_CLIENT(this))
                {
-                       stuffcmd(this, sprintf("\ncl_autoscreenshot_screenshot %s %s; "
+                       // in old clients "cl_autoscreenshot_screenshot_s %s %s;" takes the screenshot
+                       // "cl_autoscreenshot_screenshot %s %s;" does nothing because the cl_autoscreenshot_screenshot alias
+                       // doesn't exist; the cl_autoscreenshot_screenshot dummy cvar is created
+                       // so that "cl_autoscreenshot_screenshot %s %s" doesn't print any warning in console
+
+                       // in new clients "cl_autoscreenshot_screenshot %s %s;" takes the screenshot
+                       // even if the cl_autoscreenshot_screenshot cvar is created, only the cl_autoscreenshot_screenshot alias
+                       // is executed since only the alias is executed if a cvar with the same name exists
+                       // cl_autoscreenshot_screenshot_s is not run as cl_autoscreenshot_screenshot alias clears it
+                       // (it doesn't delete it so that "unalias cl_autoscreenshot_screenshot_s;" doesn't print any warning)
+
+                       // this stuffcmd is needed only for Xonotic 0.8.6 or lower
+                       // the s in cl_autoscreenshot_screenshot_s stands for server alias (alias name can't be longer than 32)
+                       stuffcmd(this, sprintf("\n"
+                               "alias cl_autoscreenshot_screenshot_s \"screenshot screenshots/autoscreenshot/%s-%s.jpg\";"
+                               "set cl_autoscreenshot_screenshot 0;", GetMapname(), matchid));
+
+                       // keep only this stuffcmd after the next release
+                       stuffcmd(this, sprintf("\ncl_autoscreenshot_screenshot %s %s;"
                                "echo \"^5A screenshot has been taken at request of the server.\"\n", GetMapname(), matchid));
+
+                       // this stuffcmd is needed only for Xonotic 0.8.6 or lower
+                       stuffcmd(this, "\n"
+                               "cl_autoscreenshot_screenshot_s %s %s;"
+                               "unset cl_autoscreenshot_screenshot;"
+                               "unalias cl_autoscreenshot_screenshot_s;");
                }
                return;
        }
index 3c658a8658924c4eb66a3b44564e816b9bb4f2de..f71fdad12376d43437512e870037a64f736593c1 100644 (file)
@@ -695,11 +695,14 @@ seta cl_clippedspectating 1 "movement collision for spectators so that you can't
 
 // cl_autoscreenshot_screenshot is called by the server when the game ends with map name and match id as parameters
 // it takes care of hiding all the UI parts that may overlap the scoredoard before taking a screenshot
+// TODO remove "alias cl_autoscreenshot_screenshot_s;" after the next release
+// cl_autoscreenshot_screenshot_s is created by the server via stuffcmd for backwards compatibility
+// and not used by cl_autoscreenshot_screenshot, which intentionally clears it (not delete)
 seta cl_autoscreenshot 1 "Take a screenshot upon the end of a match... 0 = Disable completely, 1 = Allow sv_autoscreenshot to take a screenshot when requested, 2 = Always take an autoscreenshot anyway."
 alias _cl_autoscreenshot_save "set _con_chattime_save $con_chattime; set _hud_panel_scoreboard_fadeinspeed_save $hud_panel_scoreboard_fadeinspeed; set _menu_slowmo_save $menu_slowmo; set _scr_conheight_save $scr_conheight; set _con_textsize_save $con_textsize; set _scr_conalpha_save $scr_conalpha"
 alias _cl_autoscreenshot_set "con_chattime 0.001; hud_panel_scoreboard_fadeinspeed 999; menu_slowmo 999; scr_conheight 0; con_textsize 1; scr_conalpha 0"
 alias _cl_autoscreenshot_restore "set con_chattime $_con_chattime_save; set hud_panel_scoreboard_fadeinspeed $_hud_panel_scoreboard_fadeinspeed_save; set menu_slowmo $_menu_slowmo_save; set scr_conheight $_scr_conheight_save; set con_textsize $_con_textsize_save; set scr_conalpha $_scr_conalpha_save"
-alias cl_autoscreenshot_screenshot "togglemenu 0; -con_chat_maximize; _cl_autoscreenshot_save; _cl_autoscreenshot_set; defer 0.1 \"screenshot screenshots/autoscreenshot/${1}-${2}.jpg\"; defer 0.1 \"_cl_autoscreenshot_restore\""
+alias cl_autoscreenshot_screenshot "alias cl_autoscreenshot_screenshot_s ""; togglemenu 0; -con_chat_maximize; _cl_autoscreenshot_save; _cl_autoscreenshot_set; defer 0.1 \"screenshot screenshots/autoscreenshot/${1}-${2}.jpg\"; defer 0.1 \"_cl_autoscreenshot_restore\""
 
 seta cl_jetpack_jump 1 "Activate jetpack by pressing jump in the air. 0 = Disable, 1 = Stop when touching ground, 2 = Enable"