From 3761d8e03c92fe90ec6cd2d2ba3bd9da325739d5 Mon Sep 17 00:00:00 2001 From: Fara <44729057+Faramour@users.noreply.github.com> Date: Tue, 23 Apr 2024 22:04:58 +0200 Subject: [PATCH] add `unban` command --- src/adminsystem.cpp | 39 +++++++++++++++++++++++++++++++++++++++ src/adminsystem.h | 1 + 2 files changed, 40 insertions(+) diff --git a/src/adminsystem.cpp b/src/adminsystem.cpp index 99e5fe347..fdac468ce 100644 --- a/src/adminsystem.cpp +++ b/src/adminsystem.cpp @@ -168,6 +168,30 @@ CON_COMMAND_CHAT_FLAGS(ban, " - ban a player", ADM PrintSingleAdminAction(pszCommandPlayerName, pTarget->GetPlayerName(), "permanently banned"); } +CON_COMMAND_CHAT_FLAGS(unban, " - unbans a player. Takes decimal STEAMID64", ADMFLAG_BAN) +{ + if (args.ArgC() < 2) + { + ClientPrint(player, HUD_PRINTTALK, CHAT_PREFIX "Usage: !unban "); + return; + } + + uint64 iTargetSteamId64 = V_StringToUint64(args[1], 0); + + bool bResult = g_pAdminSystem->FindAndRemoveInfractionSteamId64(iTargetSteamId64, CInfractionBase::Ban); + + if (!bResult) + { + ClientPrint(player, HUD_PRINTTALK, CHAT_PREFIX "Couldn't find user with STEAMID64 <%llu> in ban infractions.", iTargetSteamId64); + return; + } + + g_pAdminSystem->SaveInfractions(); + + // no need to broadcast this + ClientPrint(player, HUD_PRINTTALK, CHAT_PREFIX "User with STEAMID64 <%llu> has been unbanned.", iTargetSteamId64); +} + CON_COMMAND_CHAT_FLAGS(mute, " - mutes a player", ADMFLAG_CHAT) { if (args.ArgC() < 3) @@ -1564,6 +1588,21 @@ bool CAdminSystem::FindAndRemoveInfraction(ZEPlayer *player, CInfractionBase::EI return false; } +bool CAdminSystem::FindAndRemoveInfractionSteamId64(uint64 steamid64, CInfractionBase::EInfractionType type) +{ + FOR_EACH_VEC(m_vecInfractions, i) + { + if (m_vecInfractions[i]->GetSteamId64() == steamid64 && m_vecInfractions[i]->GetType() == type) + { + m_vecInfractions.Remove(i); + + return true; + } + } + + return false; +} + CAdmin *CAdminSystem::FindAdmin(uint64 iSteamID) { FOR_EACH_VEC(m_vecAdmins, i) diff --git a/src/adminsystem.h b/src/adminsystem.h index 8b872b4dd..a7f10ec7b 100644 --- a/src/adminsystem.h +++ b/src/adminsystem.h @@ -144,6 +144,7 @@ class CAdminSystem void SaveInfractions(); bool ApplyInfractions(ZEPlayer *player); bool FindAndRemoveInfraction(ZEPlayer *player, CInfractionBase::EInfractionType type); + bool FindAndRemoveInfractionSteamId64(uint64 steamid64, CInfractionBase::EInfractionType type); CAdmin *FindAdmin(uint64 iSteamID); uint64 ParseFlags(const char* pszFlags); void AddDisconnectedPlayer(const char* pszName, uint64 xuid, const char* pszIP);