}
void AnnounceTo(entity e, string snd) {
- msg_entity = e;
- WriteByte(MSG_ONE, SVC_TEMPENTITY);
- WriteByte(MSG_ONE, TE_CSQC_ANNOUNCE);
- WriteString(MSG_ONE, snd);
+ if (clienttype(e) == CLIENTTYPE_REAL)
+ {
+ msg_entity = e;
+ WriteByte(MSG_ONE, SVC_TEMPENTITY);
+ WriteByte(MSG_ONE, TE_CSQC_ANNOUNCE);
+ WriteString(MSG_ONE, snd);
+ }
}
float ClientData_Send(entity to, float sf)
{
if(substring(plyermodel,-4,4) != ".zym")
if(substring(plyermodel,-4,4) != ".dpm")
+ if(substring(plyermodel,-4,4) != ".iqm")
if(substring(plyermodel,-4,4) != ".md3")
if(substring(plyermodel,-4,4) != ".psk")
return FallbackPlayerModel;
modelsource = self;
#ifdef ALLOW_FORCEMODELS
- if(other.cvar_cl_forceplayermodelsfromnexuiz)
- if not(self.modelindex_lod0_from_nexuiz)
+ if(other.cvar_cl_forceplayermodelsfromxonotic)
+ if not(self.modelindex_lod0_from_xonotic)
modelsource = other;
if(other.cvar_cl_forceplayermodels && sv_clforceplayermodels)
modelsource = other;
return TRUE;
}
-void UpdatePlayerSounds();
void setmodel_lod(entity e, string modelname)
{
string s;
}
s = whichpack(self.model);
- self.modelindex_lod0_from_nexuiz = ((s == "") || (substring(s, 0, 4) == "data"));
+ self.modelindex_lod0_from_xonotic = ((s == "") || (substring(s, 0, 4) == "data"));
player_setupanimsformodel();
- UpdatePlayerSounds();
}
/*
}
DropAllRunes(self);
- kh_Key_DropAll(self, TRUE);
Portal_ClearAll(self);
}
else
self.frags = FRAGS_SPECTATOR;
+
+ MUTATOR_CALLHOOK(MakePlayerObserver);
}
float RestrictSkin(float s)
self.weapons = randombits(self.weapons, g_weaponarena_random, FALSE);
self.items = start_items;
- self.switchweapon = w_getbestweapon(self);
- self.cnt = self.switchweapon;
- self.weapon = 0;
self.jump_interval = time;
self.spawnshieldtime = time + cvar("g_spawnshieldtime");
}
self.cnt = WEP_LASER;
- self.nixnex_lastchange_id = -1;
CL_SpawnWeaponentity();
self.alpha = default_player_alpha;
target_voicescript_clear(self);
// reset fields the weapons may use
- for (j = WEP_FIRST; j <= WEP_LAST; ++j)
- weapon_action(j, WR_RESETPLAYER);
+ for (j = WEP_FIRST; j <= WEP_LAST; ++j)
+ weapon_action(j, WR_RESETPLAYER);
oldself = self;
self = spot;
SUB_UseTargets();
activator = world;
self = oldself;
+
+ MUTATOR_CALLHOOK(PlayerSpawn);
+
+ self.switchweapon = w_getbestweapon(self);
+ self.cnt = self.switchweapon;
+ self.weapon = 0;
} else if(self.classname == "observer" || (g_ca && !allowed_to_spawn)) {
PutObserverInServer ();
}
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.classname = "clientinit";
+ e.think = ClientInit_CheckUpdate;
+ e.nextthink = time;
+ Net_LinkEntity(e, FALSE, 0, ClientInit_SendEntity);
+ o = self;
+ self = e;
+ ClientInit_CheckUpdate();
+ self = o;
}
/*
SoundEntity_Detach(self);
DropAllRunes(self);
- kh_Key_DropAll(self, TRUE);
+ MUTATOR_CALLHOOK(ClientDisconnect);
Portal_ClearAll(self);
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();
}
}
void GetPressedKeys(void) {
+ MUTATOR_CALLHOOK(GetPressedKeys);
if (self.movement_x > 0) // get if movement keys are pressed
{ // forward key pressed
self.pressedkeys |= KEY_FORWARD;
} else
update_stats (0, spectatee.cvar_cl_accuracy_data_share * spectatee.stat_hit, spectatee.cvar_cl_accuracy_data_share * spectatee.stat_fired);
- self.kh_state = spectatee.kh_state;
+ other = spectatee;
+ MUTATOR_CALLHOOK(SpectateCopy);
self.armortype = spectatee.armortype;
self.armorvalue = spectatee.armorvalue;
self.ammo_cells = spectatee.ammo_cells;
// version nagging
if(self.version_nagtime)
- if(self.cvar_g_nexuizversion)
+ if(self.cvar_g_xonoticversion)
if(time > self.version_nagtime)
{
- if(strstr(self.cvar_g_nexuizversion, "svn", 0) < 0)
+ if(strstr(self.cvar_g_xonoticversion, "svn", 0) < 0)
{
- if(strstr(cvar_string("g_nexuizversion"), "svn", 0) >= 0)
+ if(strstr(cvar_string("g_xonoticversion"), "svn", 0) >= 0)
{
- dprint("^1NOTE^7 to ", self.netname, "^7 - the server is running ^3Nexuiz ", cvar_string("g_nexuizversion"), " (beta)^7, you have ^3Nexuiz ", self.cvar_g_nexuizversion, "^1\n");
- sprint(self, strcat("\{1}^1NOTE: ^7the server is running ^3Nexuiz ", cvar_string("g_nexuizversion"), " (beta)^7, you have ^3Nexuiz ", self.cvar_g_nexuizversion, "^1\n"));
+ dprint("^1NOTE^7 to ", self.netname, "^7 - the server is running ^3Xonotic ", cvar_string("g_xonoticversion"), " (beta)^7, you have ^3Xonotic ", self.cvar_g_xonoticversion, "^1\n");
+ sprint(self, strcat("\{1}^1NOTE: ^7the server is running ^3Xonotic ", cvar_string("g_xonoticversion"), " (beta)^7, you have ^3Xonotic ", self.cvar_g_xonoticversion, "^1\n"));
}
else
{
float r;
- r = vercmp(self.cvar_g_nexuizversion, cvar_string("g_nexuizversion"));
+ r = vercmp(self.cvar_g_xonoticversion, cvar_string("g_xonoticversion"));
if(r < 0)
{
- dprint("^1NOTE^7 to ", self.netname, "^7 - ^3Nexuiz ", cvar_string("g_nexuizversion"), "^7 is out, and you still have ^3Nexuiz ", self.cvar_g_nexuizversion, "^1 - get the update from ^4http://www.nexuiz.com/^1!\n");
- sprint(self, strcat("\{1}^1NOTE: ^3Nexuiz ", cvar_string("g_nexuizversion"), "^7 is out, and you still have ^3Nexuiz ", self.cvar_g_nexuizversion, "^1 - get the update from ^4http://www.nexuiz.com/^1!\n"));
+ dprint("^1NOTE^7 to ", self.netname, "^7 - ^3Xonotic ", cvar_string("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 ", cvar_string("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"));
}
else if(r > 0)
{
- dprint("^1NOTE^7 to ", self.netname, "^7 - the server is running ^3Nexuiz ", cvar_string("g_nexuizversion"), "^7, you have ^3Nexuiz ", self.cvar_g_nexuizversion, "^1\n");
- sprint(self, strcat("\{1}^1NOTE: ^7the server is running ^3Nexuiz ", cvar_string("g_nexuizversion"), "^7, you have ^3Nexuiz ", self.cvar_g_nexuizversion, "^1\n"));
+ dprint("^1NOTE^7 to ", self.netname, "^7 - the server is running ^3Xonotic ", cvar_string("g_xonoticversion"), "^7, you have ^3Xonotic ", self.cvar_g_xonoticversion, "^1\n");
+ sprint(self, strcat("\{1}^1NOTE: ^7the server is running ^3Xonotic ", cvar_string("g_xonoticversion"), "^7, you have ^3Xonotic ", self.cvar_g_xonoticversion, "^1\n"));
}
}
}
return;
#endif
+ MUTATOR_CALLHOOK(PlayerPreThink);
+
if(self.classname == "player") {
// if(self.netname == "Wazat")
// bprint(self.classname, "\n");
self.effects = self.effects - (self.effects & EF_NODRAW);
}
- Nixnex_GiveCurrentWeapon();
-
if(frametime > 0) // don't do this in cl_movement frames, just in server ticks
UpdateSelectedPlayer();
if(frametime)
{
- if(cvar("gameversion") >= 20600) // only do this for 2.6 and above FIXME remove this check when making 2.6
- self.glowmod = colormapPaletteColor(self.clientcolors & 0x0F, TRUE) * 2;
+ self.glowmod = colormapPaletteColor(self.clientcolors & 0x0F, TRUE) * 2;
player_powerups();
}
ImpulseCommands();
if (intermission_running)
return; // intermission or finale
-
GetPressedKeys();
} else if (self.classname == "observer") {
//do nothing