From a2bb32f80b3a153351511676a3b22329c6d8c1a1 Mon Sep 17 00:00:00 2001 From: jeefo Date: Sat, 20 Jan 2024 12:09:27 +0300 Subject: [PATCH] fix: prevent bots from executing all forced client commands --- src/linkage.cpp | 30 ++++++++++-------------------- 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/src/linkage.cpp b/src/linkage.cpp index 444f9f6..7fbbcd1 100644 --- a/src/linkage.cpp +++ b/src/linkage.cpp @@ -49,11 +49,17 @@ namespace Hooks { // sometimes actually by their side, that's why we strongly recommend to check it here too. In // case it's a bot asking for a client command, we handle it like we do for bot commands - if (game.isNullEntity (ent) || (!game.isNullEntity (ent) && (ent->v.flags & FL_DORMANT))) { - if (game.is (GameFlags::Metamod)) { - RETURN_META (MRES_SUPERCEDE); + if (!game.isNullEntity (ent)) { + if (bots[ent] || util.isFakeClient (ent) || (ent->v.flags & FL_DORMANT)) { + if (game.is (GameFlags::Metamod)) { + RETURN_META (MRES_SUPERCEDE); // prevent bots to be forced to issue client commands + } + return; } - return; + } + + if (game.is (GameFlags::Metamod)) { + RETURN_META (MRES_IGNORED); } va_list ap; @@ -63,22 +69,6 @@ namespace Hooks { vsnprintf (buffer, StringBuffer::StaticBufferSize, format, ap); va_end (ap); - if (util.isFakeClient (ent)) { - auto bot = bots[ent]; - - if (bot) { - game.botCommand (bot->pev->pContainingEntity, buffer); - } - - if (game.is (GameFlags::Metamod)) { - RETURN_META (MRES_SUPERCEDE); // prevent bots to be forced to issue client commands - } - return; - } - - if (game.is (GameFlags::Metamod)) { - RETURN_META (MRES_IGNORED); - } engfuncs.pfnClientCommand (ent, buffer); } }