diff --git a/README.md b/README.md index 7611beb1..e9a42cfc 100644 --- a/README.md +++ b/README.md @@ -124,6 +124,7 @@ This means that plugins that do binary code analysis (Orpheu for example) probab | mp_ammo_respawn_time | 20 | 0.0 | - | The respawn time for ammunition. | | mp_vote_flags | km | 0 | - | Vote systems enabled in server.<br/>`0` voting disabled<br/>`k` votekick enabled via `vote` command<br/>`m` votemap enabled via `votemap` command | | mp_votemap_min_time | 180 | 0.0 | - | Minimum seconds that must elapse on map before `votemap` command can be used. | +| mp_logkills | 1 | 0 | 1 | Log kills.<br/>`0` disabled <br/>`1` enabled | | mp_jump_height | 45 | 0.0 | - | Player jump height. | | bot_excellent_morale | 0 | 0 | 1 | Bots always have great morale regardless of defeat or victory. | | mp_randomspawn | 0 | 0 | 1 | Random player spawns<br/>`0` disabled <br/>`1` enabled<br/>`NOTE`: Navigation `maps/.nav` file required | diff --git a/regamedll/dlls/game.cpp b/regamedll/dlls/game.cpp index 37b264fb..a6e15b26 100644 --- a/regamedll/dlls/game.cpp +++ b/regamedll/dlls/game.cpp @@ -190,6 +190,7 @@ cvar_t ammo_respawn_time = { "mp_ammo_respawn_time", "20", FCVAR_SERVER, 2 cvar_t vote_flags = { "mp_vote_flags", "km", 0, 0.0f, nullptr }; cvar_t votemap_min_time = { "mp_votemap_min_time", "180", 0, 180.0f, nullptr }; +cvar_t logkills = { "mp_logkills", "1", FCVAR_SERVER, 0.0f, nullptr }; cvar_t randomspawn = { "mp_randomspawn", "0", FCVAR_SERVER, 0.0f, nullptr }; void GameDLL_Version_f() @@ -469,6 +470,7 @@ void EXT_FUNC GameDLLInit() CVAR_REGISTER(&cv_bot_enable); CVAR_REGISTER(&cv_hostage_ai_enable); + CVAR_REGISTER(&logkills); // print version CONSOLE_ECHO("ReGameDLL version: " APP_VERSION "\n"); diff --git a/regamedll/dlls/game.h b/regamedll/dlls/game.h index f016c0f3..bf5130d2 100644 --- a/regamedll/dlls/game.h +++ b/regamedll/dlls/game.h @@ -210,6 +210,7 @@ extern cvar_t weapon_respawn_time; extern cvar_t ammo_respawn_time; extern cvar_t vote_flags; extern cvar_t votemap_min_time; +extern cvar_t logkills; extern cvar_t randomspawn; #endif diff --git a/regamedll/dlls/multiplay_gamerules.cpp b/regamedll/dlls/multiplay_gamerules.cpp index 7a84afd4..1ba7122b 100644 --- a/regamedll/dlls/multiplay_gamerules.cpp +++ b/regamedll/dlls/multiplay_gamerules.cpp @@ -4160,29 +4160,33 @@ void EXT_FUNC CHalfLifeMultiplay::__API_HOOK(DeathNotice)(CBasePlayer *pVictim, pVictim->CSPlayer()->m_iNumKilledByUnanswered[iPlayerIndexKiller - 1]++; } } +#ifdef REGAMEDLL_ADD + if (static_cast<int>(logkills.value)) +#endif + { + // Did he kill himself? + if (pVictim->pev == pevKiller) + { + // killed self + char *team = GetTeam(pVictim->m_iTeam); + UTIL_LogPrintf("\"%s<%i><%s><%s>\" committed suicide with \"%s\"\n", STRING(pVictim->pev->netname), GETPLAYERUSERID(pVictim->edict()), + GETPLAYERAUTHID(pVictim->edict()), team, killer_weapon_name); + } + else if (pevKiller->flags & FL_CLIENT) + { + const char *VictimTeam = GetTeam(pVictim->m_iTeam); + const char *KillerTeam = (pKiller && pKiller->IsPlayer()) ? GetTeam(pKiller->m_iTeam) : ""; - // Did he kill himself? - if (pVictim->pev == pevKiller) - { - // killed self - char *team = GetTeam(pVictim->m_iTeam); - UTIL_LogPrintf("\"%s<%i><%s><%s>\" committed suicide with \"%s\"\n", STRING(pVictim->pev->netname), GETPLAYERUSERID(pVictim->edict()), - GETPLAYERAUTHID(pVictim->edict()), team, killer_weapon_name); - } - else if (pevKiller->flags & FL_CLIENT) - { - const char *VictimTeam = GetTeam(pVictim->m_iTeam); - const char *KillerTeam = (pKiller && pKiller->IsPlayer()) ? GetTeam(pKiller->m_iTeam) : ""; - - UTIL_LogPrintf("\"%s<%i><%s><%s>\" killed \"%s<%i><%s><%s>\" with \"%s\"\n", STRING(pevKiller->netname), GETPLAYERUSERID(ENT(pevKiller)), GETPLAYERAUTHID(ENT(pevKiller)), - KillerTeam, STRING(pVictim->pev->netname), GETPLAYERUSERID(pVictim->edict()), GETPLAYERAUTHID(pVictim->edict()), VictimTeam, killer_weapon_name); - } - else - { - // killed by the world - char *team = GetTeam(pVictim->m_iTeam); - UTIL_LogPrintf("\"%s<%i><%s><%s>\" committed suicide with \"%s\" (world)\n", STRING(pVictim->pev->netname), GETPLAYERUSERID(pVictim->edict()), - GETPLAYERAUTHID(pVictim->edict()), team, killer_weapon_name); + UTIL_LogPrintf("\"%s<%i><%s><%s>\" killed \"%s<%i><%s><%s>\" with \"%s\"\n", STRING(pevKiller->netname), GETPLAYERUSERID(ENT(pevKiller)), GETPLAYERAUTHID(ENT(pevKiller)), + KillerTeam, STRING(pVictim->pev->netname), GETPLAYERUSERID(pVictim->edict()), GETPLAYERAUTHID(pVictim->edict()), VictimTeam, killer_weapon_name); + } + else + { + // killed by the world + char *team = GetTeam(pVictim->m_iTeam); + UTIL_LogPrintf("\"%s<%i><%s><%s>\" committed suicide with \"%s\" (world)\n", STRING(pVictim->pev->netname), GETPLAYERUSERID(pVictim->edict()), + GETPLAYERAUTHID(pVictim->edict()), team, killer_weapon_name); + } } // TODO: It is called in CBasePlayer::Killed too, most likely,