Server: add cvars mp_td_dmgToWarn and mp_td_dmgToKick
This commit is contained in:
parent
25cfc4938e
commit
e67d1b0da4
3 changed files with 53 additions and 7 deletions
|
@ -50,6 +50,19 @@ seta r_skipDetail 0 // Skip rendering of detail textures on surfaces.
|
|||
seta r_skipEnvmap 0 // Skip rendering of environment/cube maps on surfaces.
|
||||
seta r_skipFullbright 0 // Skip rendering of fullbright textures on surfaces.
|
||||
seta r_skipNormal 0 // Skip rendering of normal/bump maps on surfaces.
|
||||
seta r_showDlights 0 // Show debug info for dynamic light entities.
|
||||
seta r_showPhysicsInfo 0 // Show debug info for NSPhysicsEntity entities.
|
||||
seta r_showRenderInfo 0 // Show debug info for NSRenderableEntity entities.
|
||||
seta r_showSkeleton 0 // Shows joints for skeletal entities.
|
||||
seta r_showTexts 0 // Shows debug info for game_text messages.
|
||||
seta r_showView 0 // Shows debug info for NSView objects.
|
||||
seta r_showViewCone 0 // Shows view cone for actors and other similar entities.
|
||||
|
||||
// teamplay related cvars
|
||||
seta sv_friendlyFire 0 // When set to 1, players/actors/bots belonging to the same team can damage each other
|
||||
seta mp_td_dmgToKick 300 // Specifies how much damage one player has to inflict to others players before getting kicked.
|
||||
seta mp_td_dmgToWarn 200 // Specifies how much damage one player has to inflict to others players before getting warned.
|
||||
alias mp_friendlyfire sv_friendlyFire
|
||||
|
||||
// aliases for the older commands (may be removed some day)
|
||||
alias cl_autojump pm_autoJump
|
||||
|
|
|
@ -15,6 +15,8 @@
|
|||
*/
|
||||
|
||||
var bool autocvar_sv_friendlyFire = false;
|
||||
var int autocvar_mp_td_dmgToKick = 300i;
|
||||
var int autocvar_mp_td_dmgToWarn = 200i;
|
||||
|
||||
void
|
||||
NSGameRules::NSGameRules(void)
|
||||
|
@ -265,6 +267,8 @@ NSGameRules::IsMultiplayer(void)
|
|||
void
|
||||
NSGameRules::DamageApply(entity t, entity c, float dmg, int w, damageType_t type)
|
||||
{
|
||||
bool isFriendlyFire = false;
|
||||
|
||||
/* Damage */
|
||||
NSSurfacePropEntity eTarget = (NSSurfacePropEntity)t;
|
||||
|
||||
|
@ -280,13 +284,19 @@ NSGameRules::DamageApply(entity t, entity c, float dmg, int w, damageType_t type
|
|||
if (eTarget.flags & FL_CLIENT && eTarget.flags & FL_GODMODE)
|
||||
return;
|
||||
|
||||
/* friendly fire */
|
||||
if (autocvar_sv_friendlyFire == false)
|
||||
if (t != c)
|
||||
/* friendly fire check */
|
||||
if (t != c) {
|
||||
if (IsTeamplay()) {
|
||||
if (t.flags & FL_CLIENT && c.flags & FL_CLIENT)
|
||||
if (t.team == c.team)
|
||||
if (t.flags & FL_CLIENT && c.flags & FL_CLIENT) {
|
||||
if (t.team == c.team) {
|
||||
if (autocvar_sv_friendlyFire == false) {
|
||||
return;
|
||||
} else {
|
||||
isFriendlyFire = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* already dead, please avoid recursion */
|
||||
|
@ -346,6 +356,27 @@ NSGameRules::DamageApply(entity t, entity c, float dmg, int w, damageType_t type
|
|||
NSLog("\tFlags: %i", g_dmg_iFlags);
|
||||
NSLog("\tWeapon: %i", g_dmg_iWeapon);
|
||||
|
||||
/* friendly fire penalty */
|
||||
if (isFriendlyFire) {
|
||||
int lastDmg = 0i;
|
||||
NSClientPlayer plC = (NSClientPlayer)c;
|
||||
lastDmg = plC.m_iFriendlyDMG;
|
||||
plC.m_iFriendlyDMG += dmg;
|
||||
|
||||
/* kick the client. */
|
||||
if (plC.m_iFriendlyDMG >= autocvar_mp_td_dmgToKick) {
|
||||
NSLog("Kicking %S due to team damage rules.", plC.netname);
|
||||
dropclient(plC);
|
||||
} else if (plC.m_iFriendlyDMG >= autocvar_mp_td_dmgToWarn) {
|
||||
if (lastDmg < autocvar_mp_td_dmgToKick) {
|
||||
// warn player here
|
||||
sprint(plC, PRINT_CHAT, "Keep attacking teammates and you will be kicked!\n");
|
||||
}
|
||||
}
|
||||
|
||||
bprint(PRINT_CHAT, sprintf("%s ^7attacked a teammate.\n", c.netname));
|
||||
}
|
||||
|
||||
if (dmg > 0 || flArmor > 0) {
|
||||
vector dmg_origin;
|
||||
|
||||
|
|
|
@ -172,6 +172,8 @@ private:
|
|||
float pb_angle_delta;
|
||||
float pb_player_delta;
|
||||
vector pb_last_angles;
|
||||
|
||||
int m_iFriendlyDMG;
|
||||
#endif
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue