Returns a valid one in doubt.
=============
*/
-string FallbackPlayerModel = "models/player/marine.zym";
+string FallbackPlayerModel;
string CheckPlayerModel(string plyermodel) {
+ if(FallbackPlayerModel != cvar_defstring("_cl_playermodel"))
+ {
+ // note: we cannot summon Don Strunzone here, some player may
+ // still have the model string set. In case anyone manages how
+ // to change a cvar default, we'll have a small leak here.
+ FallbackPlayerModel = strzone(cvar_defstring("_cl_playermodel"));
+ }
if(strlen(plyermodel) < 4)
return FallbackPlayerModel;
if( substring(plyermodel,0,14) != "models/player/")
return TRUE;
}
-void UpdatePlayerSounds();
void setmodel_lod(entity e, string modelname)
{
string s;
WriteCoord(MSG_ENTITY, hook_shotorigin_x);
WriteCoord(MSG_ENTITY, hook_shotorigin_y);
WriteCoord(MSG_ENTITY, hook_shotorigin_z);
-
if(sv_foginterval && world.fog != "")
WriteString(MSG_ENTITY, world.fog);
else
WriteString(MSG_ENTITY, "");
- WriteByte(MSG_ENTITY, cvar("g_balance_armor_blockpercent") * 255.0);
- WriteByte(MSG_ENTITY, cvar("g_balance_weaponswitchdelay") * 255.0);
+ WriteByte(MSG_ENTITY, self.count * 255.0); // g_balance_armor_blockpercent
+ WriteByte(MSG_ENTITY, self.cnt * 255.0); // g_balance_weaponswitchdelay
+ WriteCoord(MSG_ENTITY, self.bouncefactor); // g_balance_grenadelauncher_secondary_bouncefactor
+ WriteCoord(MSG_ENTITY, self.bouncestop); // g_balance_grenadelauncher_secondary_bouncestop
return TRUE;
}
+void ClientInit_CheckUpdate()
+{
+ self.nextthink = time;
+ if(self.count != cvar("g_balance_armor_blockpercent"))
+ {
+ self.count = cvar("g_balance_armor_blockpercent");
+ self.SendFlags |= 1;
+ }
+ if(self.cnt != cvar("g_balance_weaponswitchdelay"))
+ {
+ self.cnt = cvar("g_balance_weaponswitchdelay");
+ self.SendFlags |= 1;
+ }
+ if(self.bouncefactor != cvar("g_balance_grenadelauncher_secondary_bouncefactor"))
+ {
+ self.bouncefactor = cvar("g_balance_grenadelauncher_secondary_bouncefactor");
+ self.SendFlags |= 1;
+ }
+ if(self.bouncestop != cvar("g_balance_grenadelauncher_secondary_bouncestop"))
+ {
+ self.bouncestop = cvar("g_balance_grenadelauncher_secondary_bouncestop");
+ self.SendFlags |= 1;
+ }
+}
+
void ClientInit_Spawn()
{
- Net_LinkEntity(spawn(), FALSE, 0, ClientInit_SendEntity);
+ entity o;
+ entity e;
+ e = spawn();
+ e.classname = "clientinit";
+ e.think = ClientInit_CheckUpdate;
+ Net_LinkEntity(e, FALSE, 0, ClientInit_SendEntity);
+
+ o = self;
+ self = e;
+ ClientInit_CheckUpdate();
+ self = o;
}
/*
DecodeLevelParms();
+#ifdef WATERMARK
+ sprint(self, strcat("^4SVQC Build information: ", WATERMARK(), "\n"));
+#endif
+
self.classname = "player_joining";
self.flags = FL_CLIENT;
else self.colormod = '1 1 1';
};*/
+.float oldcolormap;
void respawn(void)
{
+ if(self.modelindex != 0 && cvar("g_respawn_ghosts"))
+ {
+ self.solid = SOLID_NOT;
+ self.takedamage = DAMAGE_NO;
+ self.movetype = MOVETYPE_FLY;
+ self.velocity = '0 0 1' * cvar("g_respawn_ghosts_speed");
+ self.avelocity = randomvec() * cvar("g_respawn_ghosts_speed") * 3 - randomvec() * cvar("g_respawn_ghosts_speed") * 3;
+ self.effects |= EF_ADDITIVE;
+ self.oldcolormap = self.colormap;
+ self.colormap = 512;
+ pointparticles(particleeffectnum("respawn_ghost"), self.origin, '0 0 0', 1);
+ if(cvar("g_respawn_ghosts_maxtime"))
+ SUB_SetFade (self, time + cvar("g_respawn_ghosts_maxtime") / 2 + random () * (cvar("g_respawn_ghosts_maxtime") - cvar("g_respawn_ghosts_maxtime") / 2), 1.5);
+ }
+
CopyBody(1);
self.effects |= EF_NODRAW; // prevent another CopyBody
+ if(self.oldcolormap)
+ {
+ self.colormap = self.oldcolormap;
+ self.oldcolormap = 0;
+ }
PutClientInServer();
}
=============
*/
.float idlekick_lasttimeleft;
+.entity showheadshotbbox;
+void showheadshotbbox_think()
+{
+ if(self.owner.showheadshotbbox != self)
+ {
+ remove(self);
+ return;
+ }
+ self.nextthink = time;
+ setorigin(self, self.owner.origin);
+ setsize(self, GetHeadshotMins(self.owner), GetHeadshotMaxs(self.owner));
+}
void PlayerPostThink (void)
{
// Savage: Check for nameless players
if(self.waypointsprite_attachedforcarrier)
WaypointSprite_UpdateHealth(self.waypointsprite_attachedforcarrier, '1 0 0' * healtharmor_maxdamage(self.health, self.armorvalue, cvar("g_balance_armor_blockpercent")));
+ if(self.classname == "player" && self.deadflag == DEAD_NO && cvar("r_showbboxes"))
+ {
+ if(!self.showheadshotbbox)
+ {
+ self.showheadshotbbox = spawn();
+ self.showheadshotbbox.classname = "headshotbbox";
+ self.showheadshotbbox.owner = self;
+ self.showheadshotbbox.think = showheadshotbbox_think;
+ self.showheadshotbbox.nextthink = time;
+ self = self.showheadshotbbox;
+ self.think();
+ self = self.owner;
+ }
+ }
+ else
+ {
+ if(self.showheadshotbbox)
+ remove(self.showheadshotbbox);
+ }
+
playerdemo_write();
/*