MUTATOR_CALLHOOK(ClientConnect, this);
if (player_count == 1)
+ {
+ if (autocvar_sv_autopause && server_is_dedicated)
+ setpause(0);
localcmd("\nsv_hook_firstjoin\n");
+ }
}
/*
=============
});
}
-void Pause_TryPause(bool ispaused)
+void Pause_TryPause_Dedicated(entity this)
{
- int n = 0;
- FOREACH_CLIENT(IS_PLAYER(it) && IS_REAL_CLIENT(it), {
- if (PHYS_INPUT_BUTTON_CHAT(it) != ispaused) return;
+ if (player_count == 0)
+ setpause(1);
+}
+
+void Pause_TryPause()
+{
+ int n = 0, p = 0;
+ FOREACH_CLIENT(IS_REAL_CLIENT(it), {
+ if (PHYS_INPUT_BUTTON_CHAT(it)) ++p;
++n;
});
if (!n) return;
- setpause(ispaused);
+ if (n == p)
+ setpause(1);
+ else
+ setpause(0);
}
void SV_PausedTic(float elapsedtime)
{
- if (!server_is_dedicated) Pause_TryPause(false);
+ if (!server_is_dedicated)
+ {
+ if (autocvar_sv_autopause)
+ Pause_TryPause();
+ else
+ setpause(0);
+ }
}
void dedicated_print(string input)
bool game_delay_last;
-bool autocvar_sv_autopause = false;
void systems_update();
void sys_phys_update(entity this, float dt);
void StartFrame()
IL_EACH(g_players, IS_FAKE_CLIENT(it), PlayerPreThink(it));
execute_next_frame();
- if (autocvar_sv_autopause && !server_is_dedicated) Pause_TryPause(true);
+ if (autocvar_sv_autopause && !server_is_dedicated) Pause_TryPause();
delete_fn = remove_unsafely; // not during spawning!
serverprevtime = servertime;
#define autocvar_slowmo cvar("slowmo")
float autocvar_sys_ticrate;
+bool autocvar_sv_autopause;
+void Pause_TryPause_Dedicated(entity this);
+
bool dropclient_schedule(entity this);
/** print(), but only print if the server is not local */
BADCVAR("leadlimit_override");
BADCVAR("pausable");
BADCVAR("sv_announcer");
+ BADCVAR("sv_autopause");
BADCVAR("sv_checkforpacketsduringsleep");
BADCVAR("sv_damagetext");
BADCVAR("sv_db_saveasdump");
WinningConditionHelper(this); // set worldstatus
+ if (autocvar_sv_autopause && server_is_dedicated && !wantrestart)
+ // INITPRIO_LAST is to soon: bots either didn't join yet or didn't leave yet, see: bot_fixcount()
+ defer(this, 5, Pause_TryPause_Dedicated);
+
world_initialized = 1;
__spawnfunc_spawn_all();
}
seta cl_announcer_antispam 2 "number of seconds before an announcement of the same sound can be played again"
seta cl_announcer_maptime 3 "play announcer sound telling you the remaining maptime - 0: do not play at all, 1: play at one minute, 2: play at five minutes, 3: play both"
+set snd_cdautopause 0
+
// aliases:
alias +fire +attack
alias -fire -attack
set sv_timeout_leadtime 4 "how long the players will be informed that a timeout was called before it starts, in seconds"
set sv_timeout_resumetime 3 "how long the remaining timeout-time will be after a player called the timein command"
+set sv_autopause 1 "Single player or listen server: pause while all clients have the menu, console or chat open. Dedicated server: pause after starting a map if the server is empty and unpause when the first player joins the empty server."
+
set g_telefrags 1 "telefragging, i.e. killing someone who stands in the way of someone who is teleporting"
set g_telefrags_teamplay 1 "never telefrag team mates"
set g_telefrags_avoid 1 "when teleporters have a random destination, avoid teleporting to locations where a telefrag would happen"