Merge pull request #690 from diamante0018/better-status

fix(server_status): format it properly
This commit is contained in:
Maurice Heumann 2023-05-14 08:10:47 +01:00 committed by GitHub
commit da3b90171d
2 changed files with 47 additions and 3 deletions

View File

@ -62,9 +62,6 @@ namespace patches
{
void post_unpack() override
{
// print hexadecimal xuids in status command
utils::hook::copy_string(game::select(0x143050560, 0x140E85B00), "%12llx ");
// print hexadecimal xuids in chat game log command
utils::hook::set<char>(game::select(0x142FD9362, 0x140E16FA2), 'x');

View File

@ -0,0 +1,47 @@
#include <std_include.hpp>
#include "loader/component_loader.hpp"
#include <game/game.hpp>
#include <utils/hook.hpp>
namespace status
{
namespace
{
thread_local int client_num_;
void print_client_num(int channel, int label, const char* fmt, const int client_num)
{
client_num_ = client_num;
game::Com_Printf(channel, label, fmt, client_num);
}
void print_client_xuid(int channel, int label, [[maybe_unused]] const char* fmt, const uint64_t xuid)
{
if (game::SV_IsTestClient(client_num_))
{
game::Com_Printf(channel, label, "%16s ", "bot0");
return;
}
game::Com_Printf(channel, label, "%12llx ", xuid);
}
}
struct component final : generic_component
{
void post_unpack() override
{
// Patch the status command for test clients
utils::hook::call(game::select(0x142246E37, 0x14052C527), print_client_num);
utils::hook::call(game::select(0x142246EDE, 0x14052C5CE), print_client_xuid);
utils::hook::copy_string(game::select(0x143050480, 0x140E85A20),
"num score ping xuid name address qport \n");
utils::hook::copy_string(game::select(0x1430504E0, 0x140E85A80),
"--- ----- ---- ---------------- ---------------- ------------------------ ------ \n");
}
};
}
REGISTER_COMPONENT(status::component)