]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Add mutator hook PutClientInServer
authorterencehill <piuntn@gmail.com>
Wed, 26 Dec 2012 15:14:57 +0000 (16:14 +0100)
committerterencehill <piuntn@gmail.com>
Wed, 26 Dec 2012 22:35:05 +0000 (23:35 +0100)
qcsrc/server/cl_client.qc
qcsrc/server/mutators/base.qh
qcsrc/server/mutators/gamemode_ca.qc
qcsrc/server/teamplay.qc

index 60582fecfd8c54be295b21d4badfe59f1fb10d21..35f678e2d232b8e14bb390619ed008cdd0ec7c26 100644 (file)
@@ -643,11 +643,7 @@ Called when a client spawns in the server
 void PutClientInServer (void)
 {
        if(clienttype(self) == CLIENTTYPE_BOT)
-       {
                self.classname = "player";
-               if(g_ca)
-                       self.caplayer = 1;
-       }
        else if(clienttype(self) == CLIENTTYPE_REAL)
        {
                msg_entity = self;
@@ -665,10 +661,11 @@ void PutClientInServer (void)
                if(PlayerScore_Add(self, SP_LMS_RANK, 0) > 0)
                        self.classname = "observer";
        }
-
-       if((g_arena && !self.spawned) || (g_ca && !allowed_to_spawn))
+       else if(g_arena && !self.spawned)
                self.classname = "observer";
 
+       MUTATOR_CALLHOOK(PutClientInServer);
+
        if(gameover)
                self.classname = "observer";
 
index 2a3eb795eeff68ea8101120e1cfcfba1b124bc6f..04b725fad6a94952bef23167f86cf612041e50e8 100644 (file)
@@ -44,6 +44,9 @@ void Mutator_Remove(mutatorfunc_t func, string name); // calls error() on fail
 MUTATOR_HOOKABLE(MakePlayerObserver);
        // called when a player becomes observer, after shared setup
 
+MUTATOR_HOOKABLE(PutClientInServer);
+       entity self; // client wanting to spawn
+
 MUTATOR_HOOKABLE(PlayerSpawn);
        entity spawn_spot; // spot that was used, or world
        // called when a player spawns as player, after shared setup, before his weapon is chosen (so items may be changed in here)
index 0db2c5beb6f2a2d7524bab24f210e5b4afe0070f..51daf6f2ea286c1b0d275280aebe301a2621a35a 100644 (file)
@@ -140,6 +140,15 @@ MUTATOR_HOOKFUNCTION(ca_PlayerSpawn)
        return 1;
 }
 
+MUTATOR_HOOKFUNCTION(ca_PutClientInServer)
+{
+       if(clienttype(self) == CLIENTTYPE_BOT)
+               self.caplayer = TRUE;
+       if(!allowed_to_spawn)
+               self.classname = "observer";
+       return 1;
+}
+
 MUTATOR_HOOKFUNCTION(ca_reset_map_players)
 {
        FOR_EACH_CLIENT(self)
@@ -180,6 +189,7 @@ MUTATOR_HOOKFUNCTION(ca_ForbidPlayerScore_Clear)
 {
        return 1;
 }
+
 MUTATOR_HOOKFUNCTION(ca_ForbidThrowCurrentWeapon)
 {
        return 1;
@@ -200,6 +210,7 @@ void ca_Initialize()
 MUTATOR_DEFINITION(gamemode_ca)
 {
        MUTATOR_HOOK(PlayerSpawn, ca_PlayerSpawn, CBC_ORDER_ANY);
+       MUTATOR_HOOK(PutClientInServer, ca_PutClientInServer, 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);
index 2a82b164f51c90ef8d6bdb8f670094653be8103a..674b1c8b7d4ba2d4ae594869676ccb8bd02440ff 100644 (file)
@@ -183,6 +183,7 @@ void InitGameplayMode()
                leadlimit_override = autocvar_g_ca_point_leadlimit;
                MUTATOR_ADD(gamemode_ca);
        }
+
        if(g_keyhunt)
        {
                ActivateTeamplay();