tweak(game): better cbuf execution
not the best but efficient
This commit is contained in:
parent
b491b03dfc
commit
9bce3c24b3
@ -5,30 +5,55 @@
|
|||||||
#include <utils/flags.hpp>
|
#include <utils/flags.hpp>
|
||||||
#include <utils/string.hpp>
|
#include <utils/string.hpp>
|
||||||
#include <utils/io.hpp>
|
#include <utils/io.hpp>
|
||||||
|
#include <utils/nt.hpp>
|
||||||
|
#include <utils/json.hpp>
|
||||||
|
|
||||||
namespace game
|
namespace game
|
||||||
{
|
{
|
||||||
uint64_t base_address;
|
uint64_t base_address = (uint64_t)GetModuleHandleA(0);;
|
||||||
|
|
||||||
cmd_text* cmd_textArray = (cmd_text*)0x14BD83728;
|
auto* const cmd_textArray = reinterpret_cast<cmd_text*>(0x14BD83728);
|
||||||
|
|
||||||
void Cbuf_AddText(int localClientNum, const char* text)
|
void Cbuf_AddText(int localClientNum, const char* text)
|
||||||
{
|
{
|
||||||
Sys_EnterCriticalSection(193);
|
Sys_EnterCriticalSection(193);
|
||||||
|
|
||||||
cmd_text* cmd_text_array = &cmd_textArray[localClientNum];
|
auto* cmd_texts = &cmd_textArray[localClientNum];
|
||||||
|
auto text_length = static_cast<int>(strlen(text));
|
||||||
|
|
||||||
int v4 = strlen(text);
|
if (cmd_texts->cmdsize + text_length < cmd_texts->maxsize)
|
||||||
int v5 = cmd_text_array->cmdsize;
|
|
||||||
if ((int)v5 + v4 < cmd_text_array->maxsize)
|
|
||||||
{
|
{
|
||||||
memcpy(&cmd_text_array->data[v5], text, v4 + 1);
|
memcpy(&cmd_texts->data[cmd_texts->cmdsize], text, text_length + 1);
|
||||||
cmd_text_array->cmdsize += v4;
|
cmd_texts->cmdsize += text_length;
|
||||||
}
|
}
|
||||||
|
|
||||||
Sys_LeaveCriticalSection(193);
|
Sys_LeaveCriticalSection(193);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const auto list_json = utils::nt::load_resource(DVAR_LIST);
|
||||||
|
const auto list = nlohmann::json::parse(list_json);
|
||||||
|
|
||||||
|
void command_execute(int localClientNum, std::string text)
|
||||||
|
{
|
||||||
|
if (!list.is_array()) return;
|
||||||
|
|
||||||
|
for (const auto& dvar_info : list)
|
||||||
|
{
|
||||||
|
if (dvar_info.is_array() && dvar_info.size() == 2)
|
||||||
|
{
|
||||||
|
const auto name = dvar_info[1].get<std::string>(); // name
|
||||||
|
const auto dvar_id = dvar_info[0].get<std::string>(); // id
|
||||||
|
|
||||||
|
if (!name.empty() && !dvar_id.empty())
|
||||||
|
{
|
||||||
|
text = utils::string::replace(utils::string::to_lower(text), name, dvar_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Cbuf_AddText(localClientNum, utils::string::va("%s \n", text.data()));
|
||||||
|
}
|
||||||
|
|
||||||
int Cmd_Argc()
|
int Cmd_Argc()
|
||||||
{
|
{
|
||||||
return cmd_args->argc[cmd_args->nesting];
|
return cmd_args->argc[cmd_args->nesting];
|
||||||
|
@ -10,6 +10,7 @@ namespace game
|
|||||||
extern uint64_t base_address;
|
extern uint64_t base_address;
|
||||||
|
|
||||||
void Cbuf_AddText(int localClientNum, const char* text);
|
void Cbuf_AddText(int localClientNum, const char* text);
|
||||||
|
void command_execute(int localClientNum, std::string text);
|
||||||
|
|
||||||
namespace environment
|
namespace environment
|
||||||
{
|
{
|
||||||
|
@ -10,6 +10,8 @@
|
|||||||
|
|
||||||
#define MENU_MAIN 304
|
#define MENU_MAIN 304
|
||||||
|
|
||||||
#define TLS_DLL 305
|
#define DVAR_LIST 305
|
||||||
|
|
||||||
#define ICON_IMAGE 306
|
#define TLS_DLL 306
|
||||||
|
|
||||||
|
#define ICON_IMAGE 307
|
||||||
|
@ -109,6 +109,8 @@ TLS_DLL RCDATA "../../build/bin/x64/Debug/tlsdll.dll"
|
|||||||
TLS_DLL RCDATA "../../build/bin/x64/Release/tlsdll.dll"
|
TLS_DLL RCDATA "../../build/bin/x64/Release/tlsdll.dll"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
DVAR_LIST RCDATA "resources/dvar_list.json"
|
||||||
|
|
||||||
ICON_IMAGE RCDATA "resources/icon.png"
|
ICON_IMAGE RCDATA "resources/icon.png"
|
||||||
|
|
||||||
#endif // English (United States) resources
|
#endif // English (United States) resources
|
||||||
|
26
src/client/resources/dvar_list.json
Normal file
26
src/client/resources/dvar_list.json
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
[
|
||||||
|
[
|
||||||
|
"2562",
|
||||||
|
"cg_draw2d"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"1762",
|
||||||
|
"cg_drawgun"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"2377",
|
||||||
|
"cg_drawfps"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"5401",
|
||||||
|
"timescale"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"1673",
|
||||||
|
"mapname"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"2757",
|
||||||
|
"snd_musicdisabled"
|
||||||
|
]
|
||||||
|
]
|
Loading…
x
Reference in New Issue
Block a user