X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Fteamplay.qc;h=2fbbd50b32e3c9dc78b214ae0dcda2c6a9f817e3;hp=7301cf9e0814f6bee6942a905bf74dd658144f00;hb=a97b89297fa91ae42b9d56c262662eb34ede3e45;hpb=6f37a8f8076a572097afb13de2c367a72717c927 diff --git a/qcsrc/server/teamplay.qc b/qcsrc/server/teamplay.qc index 7301cf9e08..2fbbd50b32 100644 --- a/qcsrc/server/teamplay.qc +++ b/qcsrc/server/teamplay.qc @@ -1,5 +1,5 @@ #include "teamplay.qh" -#include "_.qh" +#include "_all.qh" #include "cl_client.qh" #include "race.qh" @@ -41,6 +41,7 @@ void ActivateTeamplay() { serverflags |= SERVERFLAG_TEAMPLAY; teamplay = 1; + cvar_set("teamplay", "2"); // DP needs this for sending proper getstatus replies. } void InitGameplayMode() @@ -57,12 +58,13 @@ void InitGameplayMode() world.maxs = mi_max; MapInfo_LoadMapSettings(mapname); - teamplay = 0; serverflags &= ~SERVERFLAG_TEAMPLAY; + teamplay = 0; + cvar_set("teamplay", "0"); // DP needs this for sending proper getstatus replies. if (!cvar_value_issafe(world.fog)) { - print("The current map contains a potentially harmful fog setting, ignored\n"); + LOG_INFO("The current map contains a potentially harmful fog setting, ignored\n"); world.fog = string_null; } if(MapInfo_Map_fog != "") @@ -82,6 +84,7 @@ void InitGameplayMode() if(g_dm) { + MUTATOR_ADD(gamemode_deathmatch); } if(g_tdm) @@ -138,6 +141,8 @@ void InitGameplayMode() ActivateTeamplay(); fraglimit_override = autocvar_g_keyhunt_point_limit; leadlimit_override = autocvar_g_keyhunt_point_leadlimit; + if(autocvar_g_keyhunt_team_spawns) + have_team_spawns = -1; // request team spawns MUTATOR_ADD(gamemode_keyhunt); } @@ -161,6 +166,7 @@ void InitGameplayMode() if(g_onslaught) { ActivateTeamplay(); + fraglimit_override = autocvar_g_onslaught_point_limit; have_team_spawns = -1; // request team spawns MUTATOR_ADD(gamemode_onslaught); } @@ -241,9 +247,6 @@ void InitGameplayMode() MUTATOR_ADD(gamemode_invasion); } - if(teamplay) - entcs_init(); - cache_mutatormsg = strzone(""); cache_lastmutatormsg = strzone(""); @@ -263,7 +266,8 @@ void InitGameplayMode() InitializeEntity(world, default_delayedinit, INITPRIO_GAMETYPE_FALLBACK); } -string GetClientVersionMessage() { +string GetClientVersionMessage() +{SELFPARAM(); string versionmsg; if (self.version_mismatch) { if(self.version < autocvar_gameversion) { @@ -281,8 +285,7 @@ string getwelcomemessage(void) { string s, modifications, motd; - ret_string = ""; - MUTATOR_CALLHOOK(BuildMutatorsPrettyString); + MUTATOR_CALLHOOK(BuildMutatorsPrettyString, ""); modifications = ret_string; if(g_weaponarena) @@ -292,14 +295,12 @@ string getwelcomemessage(void) else modifications = strcat(modifications, ", ", g_weaponarena_list, " Arena"); } - if(cvar("g_balance_blaster_weaponstart") == 0) + else if(cvar("g_balance_blaster_weaponstart") == 0) modifications = strcat(modifications, ", No start weapons"); if(cvar("sv_gravity") < stof(cvar_defstring("sv_gravity"))) modifications = strcat(modifications, ", Low gravity"); if(g_cloaked && !g_cts) modifications = strcat(modifications, ", Cloaked"); - if(g_grappling_hook) - modifications = strcat(modifications, ", Hook"); if(g_weapon_stay && !g_cts) modifications = strcat(modifications, ", Weapons stay"); if(g_jetpack) @@ -319,9 +320,6 @@ string getwelcomemessage(void) if(modifications != "") s = strcat(s, "^8\nactive modifications: ^3", modifications, "^8\n"); - if (g_grappling_hook) - s = strcat(s, "\n\n^3grappling hook^8 is enabled, press 'e' to use it\n"); - if (cvar("g_nades")) s = strcat(s, "\n\n^3nades^8 are enabled, press 'g' to use them\n"); @@ -339,6 +337,12 @@ string getwelcomemessage(void) s = strcat(s, "\n\n^8special gameplay tips: ^7", cache_mutatormsg); } + string mutator_msg = ""; + MUTATOR_CALLHOOK(BuildGameplayTipsString, mutator_msg); + mutator_msg = ret_string; + + s = strcat(s, mutator_msg); // trust that the mutator will do proper formatting + motd = autocvar_sv_motd; if (motd != "") { s = strcat(s, "\n\n^8MOTD: ^7", strreplace("\\n", "\n", motd)); @@ -393,7 +397,7 @@ void SetPlayerTeam(entity pl, float t, float s, float noprint) // set c1...c4 to show what teams are allowed void CheckAllowedTeams (entity for_whom) -{ +{SELFPARAM(); float dm; entity head; string teament_name; @@ -430,8 +434,7 @@ void CheckAllowedTeams (entity for_whom) // cover anything else by treating it like tdm with no teams spawned dm = 2; - ret_float = dm; - MUTATOR_CALLHOOK(GetTeamCount); + MUTATOR_CALLHOOK(GetTeamCount, dm); dm = ret_float; if(dm >= 4) @@ -700,7 +703,7 @@ float FindSmallestTeam(entity pl, float ignore_pl) } float JoinBestTeam(entity pl, float only_return_best, float forcebestteam) -{ +{SELFPARAM(); float smallest, selectedteam; // don't join a team if we're not playing a team game @@ -777,7 +780,7 @@ float JoinBestTeam(entity pl, float only_return_best, float forcebestteam) //void() ctf_playerchanged; void SV_ChangeTeam(float _color) -{ +{SELFPARAM(); float scolor, dcolor, steam, dteam; //, dbotcount, scount, dcount; // in normal deathmatch we can just apply the color and we're done @@ -845,7 +848,11 @@ void SV_ChangeTeam(float _color) TeamchangeFrags(self); } - SetPlayerTeam(self, dteam, steam, false); + // since this is an engine function, and gamecode doesn't have any calls earlier than this, do the connecting message here + if(!IS_CLIENT(self)) + Send_Notification(NOTIF_ONE, self, MSG_INFO, INFO_CONNECTING, self.netname); + + SetPlayerTeam(self, dteam, steam, !IS_CLIENT(self)); if(IS_PLAYER(self) && steam != dteam) {