mirror of
https://github.com/diamante0018/BlackOpsPlugin.git
synced 2025-04-22 11:05:43 +00:00
override vstr in another way
This commit is contained in:
parent
b0c23745d6
commit
cfc8bc2e9f
@ -13,7 +13,9 @@ namespace command {
|
|||||||
std::unordered_map<std::string, std::function<void(params&)>> handlers;
|
std::unordered_map<std::string, std::function<void(params&)>> handlers;
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
void cmd_vstr_f(const params& params) {
|
void cmd_vstr_f() {
|
||||||
|
const params params;
|
||||||
|
|
||||||
if (params.size() < 2) {
|
if (params.size() < 2) {
|
||||||
game::Com_Printf(game::CON_CHANNEL_DONT_FILTER,
|
game::Com_Printf(game::CON_CHANNEL_DONT_FILTER,
|
||||||
"vstr <variablename> : execute a variable command\n");
|
"vstr <variablename> : execute a variable command\n");
|
||||||
@ -31,6 +33,7 @@ void cmd_vstr_f(const params& params) {
|
|||||||
|
|
||||||
if (dvar->type == game::DVAR_TYPE_STRING ||
|
if (dvar->type == game::DVAR_TYPE_STRING ||
|
||||||
dvar->type == game::DVAR_TYPE_ENUM) {
|
dvar->type == game::DVAR_TYPE_ENUM) {
|
||||||
|
// Adds \n automatically
|
||||||
execute(dvar->current.string);
|
execute(dvar->current.string);
|
||||||
} else {
|
} else {
|
||||||
game::Com_Printf(game::CON_CHANNEL_DONT_FILTER,
|
game::Com_Printf(game::CON_CHANNEL_DONT_FILTER,
|
||||||
@ -77,7 +80,7 @@ std::string params::join(const int index) const {
|
|||||||
void add_raw(const char* name, void (*callback)()) {
|
void add_raw(const char* name, void (*callback)()) {
|
||||||
game::Cmd_AddCommandInternal(
|
game::Cmd_AddCommandInternal(
|
||||||
name, callback,
|
name, callback,
|
||||||
utils::memory::get_allocator()->allocate<game::cmd_function_t>());
|
utils::memory::get_allocator()->allocate<game::cmd_function_s>());
|
||||||
}
|
}
|
||||||
|
|
||||||
void add(const char* name, const std::function<void(const params&)>& callback) {
|
void add(const char* name, const std::function<void(const params&)>& callback) {
|
||||||
@ -116,8 +119,11 @@ private:
|
|||||||
game::Com_Printf(game::CON_CHANNEL_DONT_FILTER, "\n");
|
game::Com_Printf(game::CON_CHANNEL_DONT_FILTER, "\n");
|
||||||
});
|
});
|
||||||
|
|
||||||
game::Cmd_RemoveCommand("vstr");
|
// Override vstr this way
|
||||||
add("vstr", cmd_vstr_f);
|
auto* cmd = game::Cmd_FindCommand("vstr");
|
||||||
|
if (cmd != nullptr) {
|
||||||
|
cmd->function = cmd_vstr_f;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
} // namespace command
|
} // namespace command
|
||||||
|
@ -130,8 +130,8 @@ struct usercmd_s {
|
|||||||
|
|
||||||
static_assert(sizeof(usercmd_s) == 52);
|
static_assert(sizeof(usercmd_s) == 52);
|
||||||
|
|
||||||
struct cmd_function_t {
|
struct cmd_function_s {
|
||||||
cmd_function_t* next;
|
cmd_function_s* next;
|
||||||
const char* name;
|
const char* name;
|
||||||
const char* autoCompleteDir;
|
const char* autoCompleteDir;
|
||||||
const char* autoCompleteExt;
|
const char* autoCompleteExt;
|
||||||
@ -139,7 +139,7 @@ struct cmd_function_t {
|
|||||||
bool consoleAccess;
|
bool consoleAccess;
|
||||||
};
|
};
|
||||||
|
|
||||||
static_assert(sizeof(cmd_function_t) == 24);
|
static_assert(sizeof(cmd_function_s) == 24);
|
||||||
|
|
||||||
struct CmdArgs {
|
struct CmdArgs {
|
||||||
int nesting;
|
int nesting;
|
||||||
|
@ -49,10 +49,10 @@ WEAK symbol<const dvar_s*(const char*, int, int, int, unsigned __int16,
|
|||||||
const char*)>
|
const char*)>
|
||||||
Dvar_RegisterInt{0x58D900, 0x651910};
|
Dvar_RegisterInt{0x58D900, 0x651910};
|
||||||
|
|
||||||
WEAK symbol<void(const char*, void(), cmd_function_t*)> Cmd_AddCommandInternal{
|
WEAK symbol<void(const char*, void(), cmd_function_s*)> Cmd_AddCommandInternal{
|
||||||
0x6AD580, 0x661400};
|
0x6AD580, 0x661400};
|
||||||
WEAK symbol<void(const char* cmdName)> Cmd_RemoveCommand{0x527EA0, 0x5F1A90};
|
WEAK symbol<void(const char* cmdName)> Cmd_RemoveCommand{0x527EA0, 0x5F1A90};
|
||||||
WEAK symbol<cmd_function_t*(const char*)> Cmd_FindCommand{0x445B60, 0x479DD0};
|
WEAK symbol<cmd_function_s*(const char*)> Cmd_FindCommand{0x445B60, 0x479DD0};
|
||||||
|
|
||||||
WEAK symbol<char*(char*)> I_CleanStr{0x4B0700, 0x0};
|
WEAK symbol<char*(char*)> I_CleanStr{0x4B0700, 0x0};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user