X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Fcl_client.qc;h=391bff6829be36236d585090d5a5b0392218728a;hp=d6715e95044371e319137f2943e9cf08a40d586f;hb=8dd9e564bf844bd71312218ce4714e6324d6beb5;hpb=b360e3bcadb965e34aacfab91b3f8683d6c9e628 diff --git a/qcsrc/server/cl_client.qc b/qcsrc/server/cl_client.qc index d6715e9504..391bff6829 100644 --- a/qcsrc/server/cl_client.qc +++ b/qcsrc/server/cl_client.qc @@ -415,7 +415,7 @@ void PutObserverInServer (void) } if(self.vehicle) - vehicles_exit(VHEF_RELESE); + vehicles_exit(VHEF_RELESE); if(self.flagcarried) DropFlag(self.flagcarried, world, world); @@ -472,6 +472,7 @@ void PutObserverInServer (void) self.invincible_finished = 0; self.superweapons_finished = 0; self.pushltime = 0; + self.istypefrag = 0; self.think = SUB_Null; self.nextthink = 0; self.hook_time = 0; @@ -1069,8 +1070,7 @@ void ClientKill_Now_TeamChange() { if(self.killindicator_teamchange == -1) { - self.team = -1; - JoinBestTeam( self, FALSE, FALSE ); + JoinBestTeam( self, FALSE, TRUE ); } else if(self.killindicator_teamchange == -2) { @@ -1118,7 +1118,7 @@ void KillIndicator_Think() return; } - if (self.owner.alpha < 0) + if (self.owner.alpha < 0 && !self.owner.vehicle) { self.owner.killindicator = world; remove(self); @@ -1439,7 +1439,7 @@ void ClientConnect (void) } else { if(teamplay) { - if(autocvar_g_balance_teams || autocvar_g_balance_teams_force) + if(autocvar_g_balance_teams) { self.classname = "player"; campaign_bots_may_start = 1; @@ -2122,6 +2122,15 @@ void GetPressedKeys(void) { self.pressedkeys |= KEY_CROUCH; else self.pressedkeys &~= KEY_CROUCH; + + if (self.BUTTON_ATCK) + self.pressedkeys |= KEY_ATCK; + else + self.pressedkeys &~= KEY_ATCK; + if (self.BUTTON_ATCK2) + self.pressedkeys |= KEY_ATCK2; + else + self.pressedkeys &~= KEY_ATCK2; } /* @@ -2162,29 +2171,24 @@ void SpectateCopy(entity spectatee) { self.minelayer_mines = spectatee.minelayer_mines; self.punchangle = spectatee.punchangle; self.view_ofs = spectatee.view_ofs; - self.v_angle = spectatee.v_angle; self.velocity = spectatee.velocity; self.dmg_take = spectatee.dmg_take; self.dmg_save = spectatee.dmg_save; self.dmg_inflictor = spectatee.dmg_inflictor; + self.v_angle = spectatee.v_angle; self.angles = spectatee.v_angle; if(!self.BUTTON_USE) self.fixangle = TRUE; setorigin(self, spectatee.origin); setsize(self, spectatee.mins, spectatee.maxs); SetZoomState(spectatee.zoomstate); - - anticheat_spectatecopy(spectatee); - - //self.vehicle = spectatee.vehicle; - + + anticheat_spectatecopy(spectatee); self.hud = spectatee.hud; if(spectatee.vehicle) { - setorigin(self, spectatee.origin); - self.velocity = spectatee.vehicle.velocity; - self.v_angle += spectatee.vehicle.angles; - //self.v_angle_x *= -1; + self.fixangle = FALSE; + //self.velocity = spectatee.vehicle.velocity; self.vehicle_health = spectatee.vehicle_health; self.vehicle_shield = spectatee.vehicle_shield; self.vehicle_energy = spectatee.vehicle_energy; @@ -2192,11 +2196,18 @@ void SpectateCopy(entity spectatee) { self.vehicle_ammo2 = spectatee.vehicle_ammo2; self.vehicle_reload1 = spectatee.vehicle_reload1; self.vehicle_reload2 = spectatee.vehicle_reload2; - + msg_entity = self; - WriteByte (MSG_ONE, SVC_SETVIEWPORT); - WriteEntity(MSG_ONE, spectatee); - //self.tur_head = spectatee.vehicle.vehicle_viewport; + + WriteByte (MSG_ONE, SVC_SETVIEWANGLES); + WriteAngle(MSG_ONE, spectatee.v_angle_x); + WriteAngle(MSG_ONE, spectatee.v_angle_y); + WriteAngle(MSG_ONE, spectatee.v_angle_z); + + //WriteByte (MSG_ONE, SVC_SETVIEW); + // WriteEntity(MSG_ONE, self); + //makevectors(spectatee.v_angle); + //setorigin(self, spectatee.origin - v_forward * 400 + v_up * 300);*/ } } @@ -2239,8 +2250,13 @@ entity CA_SpectateNext(entity start) { return other; } -float SpectateNext() { - other = find(self.enemy, classname, "player"); +float SpectateNext(entity _prefer) { + + if(_prefer) + other = _prefer; + else + other = find(self.enemy, classname, "player"); + if (g_ca && !autocvar_g_ca_spectate_enemies && self.caplayer) { // CA and ca players when spectating enemies is forbidden other = CA_SpectateNext(other); @@ -2254,17 +2270,19 @@ float SpectateNext() { self.enemy = other; if(self.enemy.classname == "player") { - if(self.enemy.vehicle) + /*if(self.enemy.vehicle) { + msg_entity = self; - WriteByte(MSG_ONE, SVC_SETVIEWPORT); + WriteByte(MSG_ONE, SVC_SETVIEW); 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); @@ -2274,7 +2292,7 @@ float SpectateNext() { if(!SpectateUpdate()) PutObserverInServer(); - } + //} return 1; } else { return 0; @@ -2314,7 +2332,7 @@ void LeaveSpectatorMode() if(!teamplay || autocvar_g_campaign || autocvar_g_balance_teams || (self.wasplayer && autocvar_g_changeteam_banned) || self.team_forced > 0) { self.classname = "player"; - if(autocvar_g_campaign || autocvar_g_balance_teams || autocvar_g_balance_teams_force) + if(autocvar_g_campaign || autocvar_g_balance_teams) JoinBestTeam(self, FALSE, TRUE); if(autocvar_g_campaign) @@ -2452,7 +2470,7 @@ void ObserverThink() self.flags |= FL_SPAWNING; } else if(self.BUTTON_ATCK && !self.version_mismatch) { self.flags &~= FL_JUMPRELEASED; - if(SpectateNext() == 1) { + if(SpectateNext(world) == 1) { self.classname = "spectator"; } } else { @@ -2483,7 +2501,7 @@ void SpectatorThink() self.flags |= FL_SPAWNING; } else if(self.BUTTON_ATCK) { self.flags &~= FL_JUMPRELEASED; - if(SpectateNext() == 1) { + if(SpectateNext(world) == 1) { self.classname = "spectator"; } else { self.classname = "observer"; @@ -2781,7 +2799,8 @@ void PlayerPreThink (void) self.prevorigin = self.origin; - if (((self.BUTTON_CROUCH && !self.hook.state) || self.health <= g_bloodloss) && self.animstate_startframe != self.anim_melee_x) // prevent crouching if using melee attack + if (!self.vehicle) + if (((self.BUTTON_CROUCH && !self.hook.state) || self.health <= g_bloodloss) && self.animstate_startframe != self.anim_melee_x && !self.freezetag_frozen) // prevent crouching if using melee attack { if (!self.crouch) {