From: terencehill Date: Fri, 4 Jan 2013 18:53:47 +0000 (+0100) Subject: Make use of ClientConnect hook in Arena and CA X-Git-Tag: xonotic-v0.7.0~61^2~65 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=bfc0636c1f40c815e43955ed6d7ced109b8bf266;p=xonotic%2Fxonotic-data.pk3dir.git Make use of ClientConnect hook in Arena and CA --- diff --git a/qcsrc/server/cl_client.qc b/qcsrc/server/cl_client.qc index da4ed37a9..b59d98164 100644 --- a/qcsrc/server/cl_client.qc +++ b/qcsrc/server/cl_client.qc @@ -1461,13 +1461,6 @@ void ClientConnect (void) else stuffcmd(self, "set _teams_available 0\n"); - if(g_arena || g_ca) - { - self.classname = "observer"; - if(g_arena) - Spawnqueue_Insert(self); - } - attach_entcs(); bot_relinkplayerlist(); @@ -1543,13 +1536,11 @@ void ClientConnect (void) CSQCMODEL_AUTOINIT(); self.model_randomizer = random(); - - if(clienttype(self) != CLIENTTYPE_REAL) - return; - - sv_notice_join(); - - MUTATOR_CALLHOOK(ClientConnect); + + if(clienttype(self) == CLIENTTYPE_REAL) + sv_notice_join(); + + MUTATOR_CALLHOOK(ClientConnect); } /* ============= diff --git a/qcsrc/server/mutators/gamemode_arena.qc b/qcsrc/server/mutators/gamemode_arena.qc index 21576bdf6..132b116bb 100644 --- a/qcsrc/server/mutators/gamemode_arena.qc +++ b/qcsrc/server/mutators/gamemode_arena.qc @@ -182,6 +182,13 @@ MUTATOR_HOOKFUNCTION(arena_PutClientInServer) return 1; } +MUTATOR_HOOKFUNCTION(arena_ClientConnect) +{ + self.classname = "observer"; + Spawnqueue_Insert(self); + return 1; +} + MUTATOR_HOOKFUNCTION(arena_PlayerSpawn) { Spawnqueue_Remove(self); @@ -245,6 +252,7 @@ MUTATOR_DEFINITION(gamemode_arena) MUTATOR_HOOK(reset_map_players, arena_reset_map_players, CBC_ORDER_ANY); MUTATOR_HOOK(MakePlayerObserver, arena_MakePlayerObserver, CBC_ORDER_ANY); MUTATOR_HOOK(PutClientInServer, arena_PutClientInServer, CBC_ORDER_ANY); + MUTATOR_HOOK(ClientConnect, arena_ClientConnect, CBC_ORDER_ANY); MUTATOR_HOOK(PlayerSpawn, arena_PlayerSpawn, CBC_ORDER_ANY); MUTATOR_HOOK(PlayerPreThink, arena_PlayerPreThink, CBC_ORDER_ANY); MUTATOR_HOOK(ForbidPlayerScore_Clear, arena_ForbidPlayerScore_Clear, CBC_ORDER_ANY); diff --git a/qcsrc/server/mutators/gamemode_ca.qc b/qcsrc/server/mutators/gamemode_ca.qc index d8ecf4c48..528a8812a 100644 --- a/qcsrc/server/mutators/gamemode_ca.qc +++ b/qcsrc/server/mutators/gamemode_ca.qc @@ -165,6 +165,12 @@ MUTATOR_HOOKFUNCTION(ca_reset_map_players) return 1; } +MUTATOR_HOOKFUNCTION(ca_ClientConnect) +{ + self.classname = "observer"; + return 1; +} + MUTATOR_HOOKFUNCTION(ca_reset_map_global) { allowed_to_spawn = TRUE; @@ -222,6 +228,7 @@ MUTATOR_DEFINITION(gamemode_ca) MUTATOR_HOOK(PlayerSpawn, ca_PlayerSpawn, CBC_ORDER_ANY); MUTATOR_HOOK(PutClientInServer, ca_PutClientInServer, CBC_ORDER_ANY); MUTATOR_HOOK(MakePlayerObserver, ca_MakePlayerObserver, CBC_ORDER_ANY); + MUTATOR_HOOK(ClientConnect, ca_ClientConnect, CBC_ORDER_ANY); MUTATOR_HOOK(reset_map_global, ca_reset_map_global, CBC_ORDER_ANY); MUTATOR_HOOK(reset_map_players, ca_reset_map_players, CBC_ORDER_ANY); MUTATOR_HOOK(GetTeamCount, ca_GetTeamCount, CBC_ORDER_EXCLUSIVE); diff --git a/qcsrc/server/mutators/mutator_superspec.qc b/qcsrc/server/mutators/mutator_superspec.qc index 8b6bf05a2..fdf3e8a25 100644 --- a/qcsrc/server/mutators/mutator_superspec.qc +++ b/qcsrc/server/mutators/mutator_superspec.qc @@ -443,6 +443,9 @@ void superspec_hello() MUTATOR_HOOKFUNCTION(superspec_ClientConnect) { + if(clienttype(self) != CLIENTTYPE_REAL) + return FALSE; + string fn = "superspec-local.options"; float fh;