X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fcl_client.qc;h=432fa7c503a517303d8af692235c1e335e4c5ecb;hb=231cfd5ae54a9611a07c5cdbe6fd3bed02f19fb5;hp=a146e183c113b98edca54b11200798fe198c08b7;hpb=5017d330f62c303d97b3a7ea3ce8b71d3353a545;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/cl_client.qc b/qcsrc/server/cl_client.qc index a146e183c..432fa7c50 100644 --- a/qcsrc/server/cl_client.qc +++ b/qcsrc/server/cl_client.qc @@ -705,6 +705,7 @@ void PutObserverInServer (void) self.model = ""; self.modelindex = 0; self.weapon = 0; + self.switchingweapon = 0; self.weaponmodel = ""; self.weaponentity = world; self.exteriorweaponentity = world; @@ -739,6 +740,13 @@ void PutObserverInServer (void) else self.frags = FRAGS_LMS_LOSER; } + else if(g_ca) + { + if(self.caplayer) + self.frags = FRAGS_LMS_LOSER; + else + self.frags = FRAGS_SPECTATOR; + } else self.frags = FRAGS_SPECTATOR; } @@ -1103,6 +1111,7 @@ void PutClientInServer (void) self.switchweapon = w_getbestweapon(self); self.cnt = self.switchweapon; self.weapon = 0; + self.switchingweapon = 0; if(!self.alivetime) self.alivetime = time; @@ -1334,9 +1343,11 @@ void KillIndicator_Think() } } +float clientkilltime; void ClientKill_TeamChange (float targetteam) // 0 = don't change, -1 = auto, -2 = spec { float killtime; + float starttime; entity e; if (gameover) @@ -1372,13 +1383,16 @@ void ClientKill_TeamChange (float targetteam) // 0 = don't change, -1 = auto, -2 } else { + starttime = max(time, clientkilltime); + self.killindicator = spawn(); self.killindicator.owner = self; self.killindicator.scale = 0.5; setattachment(self.killindicator, self, ""); setorigin(self.killindicator, '0 0 52'); self.killindicator.think = KillIndicator_Think; - self.killindicator.nextthink = time + (self.lip) * 0.05; + self.killindicator.nextthink = starttime + (self.lip) * 0.05; + clientkilltime = max(clientkilltime, self.killindicator.nextthink + 0.05); self.killindicator.cnt = ceil(killtime); self.killindicator.count = bound(0, ceil(killtime), 10); //sprint(self, strcat("^1You'll be dead in ", ftos(self.killindicator.cnt), " seconds\n")); @@ -1393,7 +1407,8 @@ void ClientKill_TeamChange (float targetteam) // 0 = don't change, -1 = auto, -2 setattachment(e.killindicator, e, ""); setorigin(e.killindicator, '0 0 52'); e.killindicator.think = KillIndicator_Think; - e.killindicator.nextthink = time + (e.lip) * 0.05; + e.killindicator.nextthink = starttime + (e.lip) * 0.05; + clientkilltime = max(clientkilltime, e.killindicator.nextthink + 0.05); e.killindicator.cnt = ceil(killtime); } self.lip = 0; @@ -1658,8 +1673,7 @@ void ClientConnect (void) bprint("\n"); stuffcmd(self, strcat(clientstuff, "\n")); - stuffcmd(self, strcat("exec maps/", mapname, ".cfg\n")); - stuffcmd(self, "cl_particles_reloadeffects\n"); + stuffcmd(self, "cl_particles_reloadeffects\n"); // TODO do we still need this? FixClientCvars(self); @@ -2299,6 +2313,7 @@ void SpectateCopy(entity spectatee) { self.pressedkeys = spectatee.pressedkeys; self.weapons = spectatee.weapons; self.switchweapon = spectatee.switchweapon; + self.switchingweapon = spectatee.switchingweapon; self.weapon = spectatee.weapon; self.nex_charge = spectatee.nex_charge; self.nex_chargepool_ammo = spectatee.nex_chargepool_ammo; @@ -2396,29 +2411,30 @@ float SpectateNext() { if (other) self.enemy = other; - + if(self.enemy.classname == "player") { - if(self.enemy.vehicle) - { - msg_entity = self; - WriteByte(MSG_ONE, SVC_SETVIEWPORT); - WriteEntity(MSG_ONE, self.enemy); - //stuffcmd(self, "set viewsize $tmpviewsize \n"); - self.movetype = MOVETYPE_NONE; - accuracy_resend(self); - } - else - { - msg_entity = self; - WriteByte(MSG_ONE, SVC_SETVIEW); - WriteEntity(MSG_ONE, self.enemy); - //stuffcmd(self, "set viewsize $tmpviewsize \n"); - self.movetype = MOVETYPE_NONE; - accuracy_resend(self); - if(!SpectateUpdate()) - PutObserverInServer(); - } - return 1; + if(self.enemy.vehicle) + { + msg_entity = self; + WriteByte(MSG_ONE, SVC_SETVIEWPORT); + WriteEntity(MSG_ONE, self.enemy); + //stuffcmd(self, "set viewsize $tmpviewsize \n"); + self.movetype = MOVETYPE_NONE; + accuracy_resend(self); + } + else + { + msg_entity = self; + WriteByte(MSG_ONE, SVC_SETVIEW); + WriteEntity(MSG_ONE, self.enemy); + //stuffcmd(self, "set viewsize $tmpviewsize \n"); + self.movetype = MOVETYPE_NONE; + accuracy_resend(self); + + if(!SpectateUpdate()) + PutObserverInServer(); + } + return 1; } else { return 0; } @@ -2450,6 +2466,7 @@ void ShowRespawnCountdown() } } +.float prevent_join_msgtime; void LeaveSpectatorMode() { if(nJoinAllowed(1)) { @@ -2471,6 +2488,12 @@ void LeaveSpectatorMode() if (time < self.jointime + autocvar_welcome_message_time) Send_CSQC_Centerprint_Generic_Expire(self, CPID_MOTD); // clear MOTD + if (self.prevent_join_msgtime) + { + Send_CSQC_Centerprint_Generic_Expire(self, CPID_PREVENT_JOIN); + self.prevent_join_msgtime = 0; + } + return; } else { if (g_ca && self.caplayer) { @@ -2482,7 +2505,11 @@ void LeaveSpectatorMode() } else { //player may not join because of g_maxplayers is set - centerprint(self, PREVENT_JOIN_TEXT); + if (time - self.prevent_join_msgtime > 2) + { + Send_CSQC_Centerprint_Generic(self, CPID_PREVENT_JOIN, PREVENT_JOIN_TEXT, 0, 0); + self.prevent_join_msgtime = time; + } } } @@ -2529,6 +2556,42 @@ void checkSpectatorBlock() { } } +.float motd_actived_time; // used for both motd and campaign_message +void PrintWelcomeMessage() +{ + if (self.motd_actived_time == 0) { // is there already a message showing? + if (autocvar_g_campaign) { + if ((self.classname == "player" && self.BUTTON_INFO) || (self.classname != "player")) { + self.motd_actived_time = time; + Send_CSQC_Centerprint_Generic(self, CPID_MOTD, campaign_message, -1, 0); + } + } else { + if ((time - self.jointime > autocvar_welcome_message_time) && self.BUTTON_INFO) { + self.motd_actived_time = time; + Send_CSQC_Centerprint_Generic(self, CPID_MOTD, getwelcomemessage(), -1, 0); + } + } + } else { // showing MOTD or campaign message + if (autocvar_g_campaign) { + if (self.BUTTON_INFO) + self.motd_actived_time = time; + else if ((time - self.motd_actived_time > 2) && self.classname == "player") { // hide it some seconds after BUTTON_INFO has been released + self.motd_actived_time = 0; + Send_CSQC_Centerprint_Generic_Expire(self, CPID_MOTD); + } + } else { + if ((time - self.jointime) > autocvar_welcome_message_time) { + if (self.BUTTON_INFO) + self.motd_actived_time = time; + else if (time - self.motd_actived_time > 2) { // hide it some seconds after BUTTON_INFO has been released + self.motd_actived_time = 0; + Send_CSQC_Centerprint_Generic_Expire(self, CPID_MOTD); + } + } + } + } +} + void ObserverThink() { float prefered_movetype; @@ -2557,6 +2620,8 @@ void ObserverThink() } } } + + PrintWelcomeMessage(); } void SpectatorThink() @@ -2595,6 +2660,7 @@ void SpectatorThink() PutObserverInServer(); } + PrintWelcomeMessage(); self.flags |= FL_CLIENT | FL_NOTARGET; } @@ -2630,7 +2696,6 @@ Called every frame for each client before the physics are run void() ctf_setstatus; void() nexball_setstatus; .float items_added; -.float motd_actived_time; // used for both motd and campaign_message void PlayerPreThink (void) { WarpZone_PlayerPhysics_FixVAngle(); @@ -2665,10 +2730,12 @@ void PlayerPreThink (void) if(self.cvar_g_xonoticversion) if(time > self.version_nagtime) { - if(strstr(self.cvar_g_xonoticversion, "git", 0) < 0) + // don't notify git users + if(strstr(self.cvar_g_xonoticversion, "git", 0) < 0 && strstr(self.cvar_g_xonoticversion, "autobuild", 0) < 0) { - if(strstr(autocvar_g_xonoticversion, "git", 0) >= 0) + if(strstr(autocvar_g_xonoticversion, "git", 0) >= 0 || strstr(autocvar_g_xonoticversion, "autobuild", 0) >= 0) { + // notify release users if connecting to git dprint("^1NOTE^7 to ", self.netname, "^7 - the server is running ^3Xonotic ", autocvar_g_xonoticversion, " (beta)^7, you have ^3Xonotic ", self.cvar_g_xonoticversion, "^1\n"); sprint(self, strcat("\{1}^1NOTE: ^7the server is running ^3Xonotic ", autocvar_g_xonoticversion, " (beta)^7, you have ^3Xonotic ", self.cvar_g_xonoticversion, "^1\n")); } @@ -2678,12 +2745,14 @@ void PlayerPreThink (void) r = vercmp(self.cvar_g_xonoticversion, autocvar_g_xonoticversion); if(r < 0) { - dprint("^1NOTE^7 to ", self.netname, "^7 - ^3Xonotic ", autocvar_g_xonoticversion, "^7 is out, and you still have ^3Xonotic ", self.cvar_g_xonoticversion, "^1 - get the update from ^4http://www.xonotic.com/^1!\n"); - sprint(self, strcat("\{1}^1NOTE: ^3Xonotic ", autocvar_g_xonoticversion, "^7 is out, and you still have ^3Xonotic ", self.cvar_g_xonoticversion, "^1 - get the update from ^4http://www.xonotic.com/^1!\n")); + // give users new version + dprint("^1NOTE^7 to ", self.netname, "^7 - ^3Xonotic ", autocvar_g_xonoticversion, "^7 is out, and you still have ^3Xonotic ", self.cvar_g_xonoticversion, "^1 - get the update from ^4http://www.xonotic.org/^1!\n"); + sprint(self, strcat("\{1}^1NOTE: ^3Xonotic ", autocvar_g_xonoticversion, "^7 is out, and you still have ^3Xonotic ", self.cvar_g_xonoticversion, "^1 - get the update from ^4http://www.xonotic.org/^1!\n")); } else if(r > 0) { - dprint("^1NOTE^7 to ", self.netname, "^7 - the server is running ^3Xonotic ", autocvar_g_xonoticversion, "^7, you have ^3Xonotic ", self.cvar_g_xonoticversion, "^1\n"); + // notify users about old server version + print("^1NOTE^7 to ", self.netname, "^7 - the server is running ^3Xonotic ", autocvar_g_xonoticversion, "^7, you have ^3Xonotic ", self.cvar_g_xonoticversion, "^1\n"); sprint(self, strcat("\{1}^1NOTE: ^7the server is running ^3Xonotic ", autocvar_g_xonoticversion, "^7, you have ^3Xonotic ", self.cvar_g_xonoticversion, "^1\n")); } } @@ -2709,39 +2778,7 @@ void PlayerPreThink (void) PlayerUseKey(); self.usekeypressed = self.BUTTON_USE; - if (self.motd_actived_time == 0) { - if (autocvar_g_campaign) { - if (self.classname == "player" && self.BUTTON_INFO) { - self.motd_actived_time = time; - Send_CSQC_Centerprint_Generic(self, CPID_MOTD, campaign_message, -1, 0); - } - } else { - if ((self.classname == "player" || time - self.jointime > autocvar_welcome_message_time) && self.BUTTON_INFO) { - self.motd_actived_time = time; - Send_CSQC_Centerprint_Generic(self, CPID_MOTD, getwelcomemessage(), -1, 0); - } - } - } else { // showing MOTD or campaign message - if (autocvar_g_campaign) { - if (self.classname == "player") { - if (self.BUTTON_INFO) - self.motd_actived_time = time; - else if (time - self.motd_actived_time > 2) { // hide it some seconds after BUTTON_INFO has been released - self.motd_actived_time = 0; - Send_CSQC_Centerprint_Generic_Expire(self, CPID_MOTD); - } - } - } else { - if (self.classname == "player" || (time - self.jointime) > autocvar_welcome_message_time) { - if (self.BUTTON_INFO) - self.motd_actived_time = time; - else if (time - self.motd_actived_time > 2) { // hide it some seconds after BUTTON_INFO has been released - self.motd_actived_time = 0; - Send_CSQC_Centerprint_Generic_Expire(self, CPID_MOTD); - } - } - } - } + PrintWelcomeMessage(); if(self.classname == "player") { // if(self.netname == "Wazat") @@ -3132,6 +3169,8 @@ void PlayerPostThink (void) CheatFrame(); + //CheckPlayerJump(); + if(self.classname == "player") { CheckRules_Player(); UpdateChatBubble();