X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fcl_client.qc;h=66a838a31cfa0e2ebdfb8aee4ccad1a6e197bc68;hb=4fc59bbd7e2d4f25ba21952ed50ae754295a7faa;hp=7dc5520abfe036f2065f1acd66b526c0e9734645;hpb=cbdd35a0599206a1e656c9cf95e7834fb108a789;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/cl_client.qc b/qcsrc/server/cl_client.qc index 7dc5520ab..66a838a31 100644 --- a/qcsrc/server/cl_client.qc +++ b/qcsrc/server/cl_client.qc @@ -6,18 +6,6 @@ void send_CSQC_teamnagger() { WriteByte(0, TE_CSQC_TEAMNAGGER); } -void send_CSQC_nexvelocity(entity e) { - msg_entity = e; - WriteByte(MSG_ONE, SVC_TEMPENTITY); - WriteByte(MSG_ONE, TE_CSQC_NEX_VELOCITY); - WriteByte(MSG_ONE, bound(0, fabs(cvar("g_balance_nex_velocitydependent_halflife")), 1)); - WriteShort(MSG_ONE, cvar("g_balance_nex_velocitydependent_minspeed")); - WriteShort(MSG_ONE, cvar("g_balance_nex_velocitydependent_maxspeed")); - WriteByte(MSG_ONE, cvar("g_balance_nex_velocitydependent_falloff_rate")); - WriteByte(MSG_ONE, cvar("g_balance_nex_secondary_charge")); - WriteByte(MSG_ONE, cvar("g_balance_nex_secondary_charge_rate")); -} - void send_CSQC_cr_maxbullets(entity e) { msg_entity = e; WriteByte(MSG_ONE, SVC_TEMPENTITY); @@ -901,6 +889,8 @@ void PutClientInServer (void) self.effects = 0; self.air_finished = time + 12; self.dmg = 2; + if(cvar("g_balance_nex_charge")) + self.nex_charge = cvar("g_balance_nex_charge_start"); if(inWarmupStage) { @@ -1315,7 +1305,28 @@ void ClientKill_TeamChange (float targetteam) // 0 = don't change, -1 = auto void ClientKill (void) { - ClientKill_TeamChange(0); + if((g_arena || g_ca) && ((champion && champion.classname == "player" && player_count > 1) || player_count == 1)) // don't allow a kill in this case either + { + // do nothing + } + else + ClientKill_TeamChange(0); +} + +void CTS_ClientKill_Think (void) +{ + self = self.owner; // set self to the player to be killed + sprint(self, "^1You were killed in order to prevent cheating!"); + ClientKill_Now(); +} + +void CTS_ClientKill (float t) // silent version of ClientKill +{ + entity e; + e = spawn(); + e.owner = self; + e.think = CTS_ClientKill_Think; + e.nextthink = t; } void DoTeamChange(float destteam) @@ -1407,10 +1418,6 @@ Called when a client connects to the server string ColoredTeamName(float t); void DecodeLevelParms (void); //void dom_player_join_team(entity pl); -#ifdef UID -.float uid_kicktime; -.string uid; -#endif void ClientConnect (void) { float t; @@ -1588,12 +1595,6 @@ void ClientConnect (void) else self.hitplotfh = -1; -#ifdef UID - if(clienttype(self) == CLIENTTYPE_REAL) - if not(self.uid) - self.uid_kicktime = time + 60; -#endif - if(g_race || g_cts) { string rr; if(g_cts) @@ -1602,11 +1603,12 @@ void ClientConnect (void) rr = RACE_RECORD; t = stof(db_get(ServerProgsDB, strcat(GetMapname(), rr, "time"))); + msg_entity = self; race_send_recordtime(MSG_ONE); race_send_speedaward(MSG_ONE); speedaward_alltimebest = stof(db_get(ServerProgsDB, strcat(GetMapname(), rr, "speed/speed"))); - speedaward_alltimebest_holder = db_get(ServerProgsDB, strcat(GetMapname(), rr, "speed/netname")); + speedaward_alltimebest_holder = uid2name(db_get(ServerProgsDB, strcat(GetMapname(), rr, "speed/crypto_idfp"))); race_send_speedaward_alltimebest(MSG_ONE); float i; @@ -1617,7 +1619,6 @@ void ClientConnect (void) else if(cvar("sv_teamnagger") && !(cvar("bot_vs_human") && (c3==-1 && c4==-1)) && !g_ca) // teamnagger is currently bad for ca send_CSQC_teamnagger(); - send_CSQC_nexvelocity(self); send_CSQC_cr_maxbullets(self); CheatInitClient(); @@ -1711,6 +1712,8 @@ void ClientDisconnect (void) strunzone(self.netname_previous); if(self.clientstatus) strunzone(self.clientstatus); + if(self.weaponorder_byimpulse) + strunzone(self.weaponorder_byimpulse); ClearPlayerSounds(); @@ -2239,6 +2242,7 @@ void SpectateCopy(entity spectatee) { self.health = spectatee.health; self.impulse = 0; self.items = spectatee.items; + self.last_pickup = spectatee.last_pickup; self.metertime = spectatee.metertime; self.strength_finished = spectatee.strength_finished; self.invincible_finished = spectatee.invincible_finished; @@ -2934,16 +2938,6 @@ void PlayerPostThink (void) self.stat_count -= 1; } -#ifdef UID - if(self.uid_kicktime) - if(time > self.uid_kicktime) - { - bprint("^3", self.netname, "^3 was kicked for missing UID.\n"); - dropclient(self); - return; - } -#endif - if(sv_maxidle && frametime) { // WORKAROUND: only use dropclient in server frames (frametime set). Never use it in cl_movement frames (frametime zero). @@ -3040,6 +3034,18 @@ void PlayerPostThink (void) playerdemo_write(); + if((g_cts || g_race) && self.cvar_cl_allow_uid2name) + { + if(!self.stored_netname) + self.stored_netname = strzone(uid2name(self.crypto_idfp)); + if(self.stored_netname != self.netname) + { + db_put(ServerProgsDB, strcat("uid2name", self.crypto_idfp), self.netname); + strunzone(self.stored_netname); + self.stored_netname = strzone(self.netname); + } + } + /* if(g_race) dprint(sprintf("%f %.6f\n", time, race_GetFractionalLapCount(self)));