Add dvar descriptions
This commit is contained in:
parent
ef87904c8b
commit
1dfa31b23c
@ -1,16 +1,17 @@
|
||||
#include <std_include.hpp>
|
||||
#include "loader/component_loader.hpp"
|
||||
|
||||
#include "command.hpp"
|
||||
#include "console.hpp"
|
||||
#include "game_console.hpp"
|
||||
|
||||
#include "game/game.hpp"
|
||||
#include "game/dvars.hpp"
|
||||
|
||||
#include <utils/hook.hpp>
|
||||
#include <utils/string.hpp>
|
||||
#include <utils/memory.hpp>
|
||||
#include "utils/io.hpp"
|
||||
#include <game/dvars.hpp>
|
||||
#include <utils/io.hpp>
|
||||
|
||||
namespace command
|
||||
{
|
||||
@ -112,9 +113,12 @@ namespace command
|
||||
const auto current = game::Dvar_ValueToString(dvar, dvar->current);
|
||||
const auto reset = game::Dvar_ValueToString(dvar, dvar->reset);
|
||||
|
||||
console::info("\"%s\" is: \"%s\" default: \"%s\" hash: 0x%08lX",
|
||||
console::info("\"%s\" is: \"%s\" default: \"%s\" hash: 0x%08lX\n",
|
||||
args[0], current, reset, dvar->hash);
|
||||
|
||||
const auto dvar_info = dvars::dvar_get_description(args[0]);
|
||||
|
||||
console::info("%s\n", dvar_info.data());
|
||||
console::info(" %s\n", dvars::dvar_get_domain(dvar->type, dvar->domain).data());
|
||||
}
|
||||
else
|
||||
|
@ -185,10 +185,10 @@ namespace dedicated
|
||||
#endif
|
||||
|
||||
// Register dedicated dvar
|
||||
dvars::register_bool("dedicated", true, game::DVAR_FLAG_READ);
|
||||
dvars::register_bool("dedicated", true, game::DVAR_FLAG_READ, "Dedicated server");
|
||||
|
||||
// Add lanonly mode
|
||||
dvars::register_bool("sv_lanOnly", false, game::DVAR_FLAG_NONE);
|
||||
dvars::register_bool("sv_lanOnly", false, game::DVAR_FLAG_NONE, "Don't send heartbeat");
|
||||
|
||||
// Disable VirtualLobby
|
||||
dvars::override::register_bool("virtualLobbyEnabled", false, game::DVAR_FLAG_READ);
|
||||
|
@ -253,7 +253,7 @@ namespace exception
|
||||
void post_unpack() override
|
||||
{
|
||||
dvars::cg_legacyCrashHandling = dvars::register_bool("cg_legacyCrashHandling",
|
||||
false, game::DVAR_FLAG_SAVED, true);
|
||||
false, game::DVAR_FLAG_SAVED, "Disable new crash handling");
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -127,7 +127,7 @@ namespace fps
|
||||
game::dvar_t* cg_draw_fps_register_stub(const char* name, const char** _enum, const int value, unsigned int /*flags*/,
|
||||
const char* desc)
|
||||
{
|
||||
cg_drawfps = dvars::register_int("cg_drawFps", 0, 0, 2, game::DVAR_FLAG_SAVED, false);
|
||||
cg_drawfps = dvars::register_int("cg_drawFps", 0, 0, 2, game::DVAR_FLAG_SAVED, "Draw frames per second");
|
||||
return cg_drawfps;
|
||||
}
|
||||
}
|
||||
@ -160,7 +160,7 @@ namespace fps
|
||||
|
||||
if (game::environment::is_sp())
|
||||
{
|
||||
cg_drawfps = dvars::register_int("cg_drawFps", 0, 0, 2, game::DVAR_FLAG_SAVED, false);
|
||||
cg_drawfps = dvars::register_int("cg_drawFps", 0, 0, 2, game::DVAR_FLAG_SAVED, "Draw frames per second");
|
||||
}
|
||||
|
||||
if (game::environment::is_mp())
|
||||
@ -168,13 +168,13 @@ namespace fps
|
||||
// fix ping value
|
||||
utils::hook::nop(0x14025AC41, 2);
|
||||
|
||||
cg_drawping = dvars::register_int("cg_drawPing", 0, 0, 1, game::DVAR_FLAG_SAVED, true);
|
||||
cg_drawping = dvars::register_int("cg_drawPing", 0, 0, 1, game::DVAR_FLAG_SAVED, "Choose to draw ping");
|
||||
|
||||
scheduler::loop(cg_draw_ping, scheduler::pipeline::renderer);
|
||||
}
|
||||
|
||||
dvars::register_bool("cg_infobar_fps", false, game::DVAR_FLAG_SAVED, true);
|
||||
dvars::register_bool("cg_infobar_ping", false, game::DVAR_FLAG_SAVED, true);
|
||||
dvars::register_bool("cg_infobar_fps", false, game::DVAR_FLAG_SAVED, "Show server latency");
|
||||
dvars::register_bool("cg_infobar_ping", false, game::DVAR_FLAG_SAVED, "Show FPS counter");
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -56,7 +56,7 @@ namespace game_console
|
||||
std::deque<std::string> history{};
|
||||
|
||||
std::string fixed_input{};
|
||||
std::vector<std::string> matches{};
|
||||
std::vector<dvars::dvar_info> matches{};
|
||||
|
||||
float color_white[4] = {1.0f, 1.0f, 1.0f, 1.0f};
|
||||
float color_title[4] = {0.25f, 0.62f, 0.3f, 1.0f};
|
||||
@ -159,21 +159,22 @@ namespace game_console
|
||||
con.globals.x = game::R_TextWidth(str, 0, console_font) + con.globals.x + 6.0f;
|
||||
}
|
||||
|
||||
void draw_hint_box(const int lines, float* color, [[maybe_unused]] float offset_x = 0.0f,
|
||||
float draw_hint_box(const int lines, float* color, [[maybe_unused]] float offset_x = 0.0f,
|
||||
[[maybe_unused]] float offset_y = 0.0f)
|
||||
{
|
||||
const auto _h = lines * con.globals.font_height + 12.0f;
|
||||
const auto _y = con.globals.y - 3.0f + con.globals.font_height + 12.0f;
|
||||
const auto _y = con.globals.y - 3.0f + con.globals.font_height + 12.0f + offset_y;
|
||||
const auto _w = (con.screen_max[0] - con.screen_min[0]) - ((con.globals.x - 6.0f) - con.screen_min[0]);
|
||||
|
||||
draw_box(con.globals.x - 6.0f, _y, _w, _h, color);
|
||||
return _h;
|
||||
}
|
||||
|
||||
void draw_hint_text(const int line, const char* text, float* color, const float offset = 0.0f)
|
||||
void draw_hint_text(const int line, const char* text, float* color, const float offset_x = 0.0f, const float offset_y = 0.0f)
|
||||
{
|
||||
const auto _y = con.globals.font_height + con.globals.y + (con.globals.font_height * (line + 1)) + 15.0f;
|
||||
const auto _y = con.globals.font_height + con.globals.y + (con.globals.font_height * (line + 1)) + 15.0f + offset_y;
|
||||
|
||||
game::R_AddCmdDrawText(text, 0x7FFFFFFF, console_font, con.globals.x + offset, _y, 1.0f, 1.0f, 0.0f, color, 0);
|
||||
game::R_AddCmdDrawText(text, 0x7FFFFFFF, console_font, con.globals.x + offset_x, _y, 1.0f, 1.0f, 0.0f, color, 0);
|
||||
}
|
||||
|
||||
bool match_compare(const std::string& input, const std::string& text, const bool exact)
|
||||
@ -183,13 +184,13 @@ namespace game_console
|
||||
return false;
|
||||
}
|
||||
|
||||
void find_matches(std::string input, std::vector<std::string>& suggestions, const bool exact)
|
||||
void find_matches(std::string input, std::vector<dvars::dvar_info>& suggestions, const bool exact)
|
||||
{
|
||||
input = utils::string::to_lower(input);
|
||||
|
||||
for (const auto& dvar : dvars::dvar_list)
|
||||
{
|
||||
auto name = utils::string::to_lower(dvar);
|
||||
auto name = utils::string::to_lower(dvar.name);
|
||||
if (game::Dvar_FindVar(name.data()) && match_compare(input, name, exact))
|
||||
{
|
||||
suggestions.push_back(dvar);
|
||||
@ -203,7 +204,7 @@ namespace game_console
|
||||
|
||||
if (suggestions.size() == 0 && game::Dvar_FindVar(input.data()))
|
||||
{
|
||||
suggestions.push_back(input.data());
|
||||
suggestions.push_back({input.data(), ""});
|
||||
}
|
||||
|
||||
game::cmd_function_s* cmd = (*game::cmd_functions);
|
||||
@ -215,7 +216,7 @@ namespace game_console
|
||||
|
||||
if (match_compare(input, name, exact))
|
||||
{
|
||||
suggestions.push_back(cmd->name);
|
||||
suggestions.push_back({cmd->name, ""});
|
||||
}
|
||||
|
||||
if (exact && suggestions.size() > 1)
|
||||
@ -280,39 +281,46 @@ namespace game_console
|
||||
}
|
||||
else if (matches.size() == 1)
|
||||
{
|
||||
auto* const dvar = game::Dvar_FindVar(matches[0].data());
|
||||
const auto line_count = dvar ? 2 : 1;
|
||||
auto* const dvar = game::Dvar_FindVar(matches[0].name.data());
|
||||
const auto line_count = dvar ? 3 : 1;
|
||||
|
||||
draw_hint_box(line_count, dvars::con_inputHintBoxColor->current.vector);
|
||||
draw_hint_text(0, matches[0].data(), dvar
|
||||
const auto height = draw_hint_box(line_count, dvars::con_inputHintBoxColor->current.vector);
|
||||
draw_hint_text(0, matches[0].name.data(), dvar
|
||||
? dvars::con_inputDvarMatchColor->current.vector
|
||||
: dvars::con_inputCmdMatchColor->current.vector);
|
||||
|
||||
if (dvar)
|
||||
{
|
||||
const auto offset = (con.screen_max[0] - con.globals.x) / 2.5f;
|
||||
const auto offset = (con.screen_max[0] - con.globals.x) / 4.f;
|
||||
|
||||
draw_hint_text(0, game::Dvar_ValueToString(dvar, dvar->current),
|
||||
dvars::con_inputDvarValueColor->current.vector, offset);
|
||||
draw_hint_text(1, " default", dvars::con_inputDvarInactiveValueColor->current.vector);
|
||||
draw_hint_text(1, game::Dvar_ValueToString(dvar, dvar->reset),
|
||||
dvars::con_inputDvarInactiveValueColor->current.vector, offset);
|
||||
draw_hint_text(2, matches[0].description.data(),
|
||||
color_white, 0);
|
||||
|
||||
const auto offset_y = height + 3.f;
|
||||
draw_hint_box(1, dvars::con_inputHintBoxColor->current.vector, 0, offset_y);
|
||||
draw_hint_text(0, dvars::dvar_get_domain(dvar->type, dvar->domain).data(),
|
||||
dvars::con_inputCmdMatchColor->current.vector, 0, offset_y);
|
||||
}
|
||||
|
||||
strncpy_s(con.globals.auto_complete_choice, matches[0].data(), 64);
|
||||
strncpy_s(con.globals.auto_complete_choice, matches[0].name.data(), 64);
|
||||
con.globals.may_auto_complete = true;
|
||||
}
|
||||
else if (matches.size() > 1)
|
||||
{
|
||||
draw_hint_box(static_cast<int>(matches.size()), dvars::con_inputHintBoxColor->current.vector);
|
||||
|
||||
const auto offset = (con.screen_max[0] - con.globals.x) / 2.5f;
|
||||
const auto offset = (con.screen_max[0] - con.globals.x) / 4.f;
|
||||
|
||||
for (size_t i = 0; i < matches.size(); i++)
|
||||
{
|
||||
auto* const dvar = game::Dvar_FindVar(matches[i].data());
|
||||
auto* const dvar = game::Dvar_FindVar(matches[i].name.data());
|
||||
|
||||
draw_hint_text(static_cast<int>(i), matches[i].data(),
|
||||
draw_hint_text(static_cast<int>(i), matches[i].name.data(),
|
||||
dvar
|
||||
? dvars::con_inputDvarMatchColor->current.vector
|
||||
: dvars::con_inputCmdMatchColor->current.vector);
|
||||
@ -321,10 +329,13 @@ namespace game_console
|
||||
{
|
||||
draw_hint_text(static_cast<int>(i), game::Dvar_ValueToString(dvar, dvar->current),
|
||||
dvars::con_inputDvarValueColor->current.vector, offset);
|
||||
|
||||
draw_hint_text(static_cast<int>(i), matches[i].description.data(),
|
||||
dvars::con_inputDvarValueColor->current.vector, offset * 1.5f);
|
||||
}
|
||||
}
|
||||
|
||||
strncpy_s(con.globals.auto_complete_choice, matches[0].data(), 64);
|
||||
strncpy_s(con.globals.auto_complete_choice, matches[0].name.data(), 64);
|
||||
con.globals.may_auto_complete = true;
|
||||
}
|
||||
}
|
||||
|
@ -45,10 +45,10 @@ namespace gameplay
|
||||
}
|
||||
|
||||
utils::hook::call(0x1401E8830, jump_apply_slowdown_stub);
|
||||
jump_slowDownEnable = dvars::register_bool("jump_slowDownEnable", true, game::DVAR_FLAG_REPLICATED, true);
|
||||
jump_slowDownEnable = dvars::register_bool("jump_slowDownEnable", true, game::DVAR_FLAG_REPLICATED, "Slow player movement after jumping");
|
||||
|
||||
utils::hook::call(0x1401E490F, pm_crashland_stub);
|
||||
jump_enableFallDamage = dvars::register_bool("jump_enableFallDamage", true, game::DVAR_FLAG_REPLICATED, true);
|
||||
jump_enableFallDamage = dvars::register_bool("jump_enableFallDamage", true, game::DVAR_FLAG_REPLICATED, "Enable fall damage");
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -93,7 +93,7 @@ namespace logger
|
||||
|
||||
void print_dev(const char* msg, ...)
|
||||
{
|
||||
static auto* enabled = dvars::register_bool("logger_dev", false, game::DVAR_FLAG_SAVED, true);
|
||||
static auto* enabled = dvars::register_bool("logger_dev", false, game::DVAR_FLAG_SAVED, "Print dev stuff");
|
||||
if (!enabled->current.enabled)
|
||||
{
|
||||
return;
|
||||
|
@ -162,9 +162,9 @@ namespace map_rotation
|
||||
|
||||
scheduler::once([]()
|
||||
{
|
||||
dvars::register_string("sv_mapRotation", "", game::DVAR_FLAG_NONE, true);
|
||||
dvars::register_string("sv_mapRotationCurrent", "", game::DVAR_FLAG_NONE, true);
|
||||
dvars::register_string("sv_autoPriority", "", game::DVAR_FLAG_NONE, true);
|
||||
dvars::register_string("sv_mapRotation", "", game::DVAR_FLAG_NONE, "");
|
||||
dvars::register_string("sv_mapRotationCurrent", "", game::DVAR_FLAG_NONE, "");
|
||||
dvars::register_string("sv_autoPriority", "", game::DVAR_FLAG_NONE, "Lowers the process priority during map changes to not cause lags on other servers.");
|
||||
}, scheduler::pipeline::main);
|
||||
|
||||
command::add("map_rotate", &perform_map_rotation);
|
||||
|
@ -209,7 +209,7 @@ namespace network
|
||||
const char* description)
|
||||
{
|
||||
game::dvar_t* dvar;
|
||||
dvar = dvars::register_int("net_port", 27016, 0, 0xFFFFu, game::DVAR_FLAG_LATCHED);
|
||||
dvar = dvars::register_int("net_port", 27016, 0, 0xFFFFu, game::DVAR_FLAG_LATCHED, "Network port");
|
||||
|
||||
// read net_port from command line
|
||||
command::read_startup_variable("net_port");
|
||||
|
@ -56,10 +56,10 @@ namespace patches
|
||||
if (game::environment::is_mp())
|
||||
{
|
||||
// Make name save
|
||||
dvars::register_string("name", get_login_username().data(), game::DVAR_FLAG_SAVED, true);
|
||||
dvars::register_string("name", get_login_username().data(), game::DVAR_FLAG_SAVED, "Player name.");
|
||||
|
||||
// Disable data validation error popup
|
||||
dvars::register_int("data_validation_allow_drop", 0, 0, 0, game::DVAR_FLAG_NONE, true);
|
||||
dvars::register_int("data_validation_allow_drop", 0, 0, 0, game::DVAR_FLAG_NONE, "");
|
||||
}
|
||||
|
||||
return com_register_dvars_hook.invoke<void>();
|
||||
@ -206,7 +206,7 @@ namespace patches
|
||||
// client side aim assist dvar
|
||||
dvars::aimassist_enabled = dvars::register_bool("aimassist_enabled", true,
|
||||
game::DvarFlags::DVAR_FLAG_SAVED,
|
||||
true);
|
||||
"Enables aim assist for controllers");
|
||||
utils::hook::call(0x14009EE9E, aim_assist_add_to_target_list);
|
||||
|
||||
// isProfanity
|
||||
@ -235,6 +235,9 @@ namespace patches
|
||||
utils::hook::nop(0x140190C16, 5);
|
||||
utils::hook::set<uint8_t>(0x14021D22A, 0xEB);
|
||||
|
||||
// some anti tamper thing that kills performance
|
||||
dvars::override::register_int("dvl", 0, 0, 0, game::DVAR_FLAG_READ);
|
||||
|
||||
// unlock safeArea_*
|
||||
utils::hook::jump(0x1402624F5, 0x140262503);
|
||||
utils::hook::jump(0x14026251C, 0x140262547);
|
||||
@ -252,7 +255,7 @@ namespace patches
|
||||
dvars::override::register_int("cl_connectTimeout", 120, 120, 1800, game::DVAR_FLAG_NONE); // Seems unused
|
||||
dvars::override::register_int("sv_connectTimeout", 120, 120, 1800, game::DVAR_FLAG_NONE); // 60 - 0 - 1800
|
||||
|
||||
dvars::register_int("scr_game_spectatetype", 1, 0, 99, game::DVAR_FLAG_REPLICATED);
|
||||
dvars::register_int("scr_game_spectatetype", 1, 0, 99, game::DVAR_FLAG_REPLICATED, "");
|
||||
|
||||
dvars::override::register_bool("ui_drawcrosshair", true, game::DVAR_FLAG_WRITE);
|
||||
|
||||
|
@ -32,7 +32,7 @@ namespace ranked
|
||||
dvars::override::register_bool("xblive_privatematch", false, game::DVAR_FLAG_REPLICATED | game::DVAR_FLAG_WRITE);
|
||||
|
||||
// Skip some check in _menus.gsc
|
||||
dvars::register_bool("force_ranking", true, game::DVAR_FLAG_WRITE);
|
||||
dvars::register_bool("force_ranking", true, game::DVAR_FLAG_WRITE, "");
|
||||
}
|
||||
|
||||
// Always run bots, even if xblive_privatematch is 0
|
||||
|
@ -55,7 +55,7 @@ namespace renderer
|
||||
return;
|
||||
}
|
||||
|
||||
dvars::r_fullbright = dvars::register_int("r_fullbright", 0, 0, 3, game::DVAR_FLAG_SAVED);
|
||||
dvars::r_fullbright = dvars::register_int("r_fullbright", 0, 0, 3, game::DVAR_FLAG_SAVED, "Toggles rendering without lighting");
|
||||
|
||||
r_init_draw_method_hook.create(SELECT_VALUE(0x1404BD140, 0x1405C46E0), &r_init_draw_method_stub);
|
||||
r_update_front_end_dvar_options_hook.create(SELECT_VALUE(0x1404F8870, 0x1405FF9E0), &r_update_front_end_dvar_options_stub);
|
||||
|
@ -35,7 +35,8 @@ namespace shaders
|
||||
|
||||
const auto has_flag = utils::flags::has_flag("noshadercaching");
|
||||
|
||||
disable_shader_caching = dvars::register_bool("disable_shader_caching", has_flag, game::DVAR_FLAG_SAVED, true);
|
||||
disable_shader_caching = dvars::register_bool("disable_shader_caching", has_flag,
|
||||
game::DVAR_FLAG_SAVED, "Disable shader caching");
|
||||
if (has_flag)
|
||||
{
|
||||
dvars::override::set_bool("disable_shader_caching", 1);
|
||||
|
@ -62,8 +62,10 @@ namespace stats
|
||||
return;
|
||||
}
|
||||
|
||||
cg_unlock_all_items = dvars::register_bool("cg_unlockall_items", false, game::DVAR_FLAG_SAVED, true);
|
||||
dvars::register_bool("cg_unlockall_classes", false, game::DVAR_FLAG_SAVED, true);
|
||||
cg_unlock_all_items = dvars::register_bool("cg_unlockall_items", false, game::DVAR_FLAG_SAVED,
|
||||
"Whether items should be locked based on the player's stats or always unlocked.");
|
||||
dvars::register_bool("cg_unlockall_classes", false, game::DVAR_FLAG_SAVED,
|
||||
"Whether classes should be locked based on the player's stats or always unlocked.");
|
||||
|
||||
is_item_unlocked_hook.create(0x140413E60, is_item_unlocked_stub);
|
||||
is_item_unlocked_hook2.create(0x140413860, is_item_unlocked_stub2);
|
||||
|
@ -462,7 +462,8 @@ namespace updater
|
||||
void post_unpack() override
|
||||
{
|
||||
delete_old_file();
|
||||
cl_auto_update = dvars::register_bool("cg_auto_update", true, game::DVAR_FLAG_SAVED, true);
|
||||
cl_auto_update = dvars::register_bool("cg_auto_update", true, game::DVAR_FLAG_SAVED,
|
||||
"Automatically check for updates");
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -52,7 +52,8 @@ namespace virtuallobby
|
||||
return;
|
||||
}
|
||||
|
||||
virtualLobby_fovscale = dvars::register_float("virtualLobby_fovScale", 0.7f, 0.0f, 2.0f, game::DVAR_FLAG_SAVED);
|
||||
virtualLobby_fovscale = dvars::register_float("virtualLobby_fovScale", 0.7f, 0.0f, 2.0f,
|
||||
game::DVAR_FLAG_SAVED, "Field of view scaled for the virtual lobby");
|
||||
|
||||
utils::hook::nop(0x1400B555C, 14);
|
||||
utils::hook::jump(0x1400B555C, get_fovscale_stub, true);
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -6,6 +6,12 @@
|
||||
|
||||
namespace dvars
|
||||
{
|
||||
struct dvar_info
|
||||
{
|
||||
std::string name;
|
||||
std::string description;
|
||||
};
|
||||
|
||||
extern game::dvar_t* aimassist_enabled;
|
||||
|
||||
extern game::dvar_t* con_inputBoxColor;
|
||||
@ -25,14 +31,20 @@ namespace dvars
|
||||
|
||||
extern game::dvar_t* cg_legacyCrashHandling;
|
||||
|
||||
extern std::vector<std::string> dvar_list;
|
||||
extern std::vector<dvar_info> dvar_list;
|
||||
|
||||
std::string dvar_get_vector_domain(const int components, const game::dvar_limits& domain);
|
||||
std::string dvar_get_domain(const game::dvar_type type, const game::dvar_limits& domain);
|
||||
std::string dvar_get_description(const std::string& name);
|
||||
|
||||
game::dvar_t* register_int(const std::string& name, int value, int min, int max, game::DvarFlags flags, bool add_to_list = true);
|
||||
game::dvar_t* register_bool(const std::string& name, bool value, game::DvarFlags flags, bool add_to_list = true);
|
||||
game::dvar_t* register_string(const std::string& name, const char* value, game::DvarFlags flags, bool add_to_list = true);
|
||||
game::dvar_t* register_float(const std::string& name, float value, float min, float max, game::DvarFlags flags, bool add_to_list = true);
|
||||
game::dvar_t* register_vec4(const std::string& name, float x, float y, float z, float w, float min, float max, game::DvarFlags flags, bool add_to_list = true);
|
||||
game::dvar_t* register_int(const std::string& name, int value, int min, int max,
|
||||
game::DvarFlags flags, const std::string& description);
|
||||
game::dvar_t* register_bool(const std::string& name, bool value,
|
||||
game::DvarFlags flags, const std::string& description);
|
||||
game::dvar_t* register_string(const std::string& name, const char* value,
|
||||
game::DvarFlags flags, const std::string& description);
|
||||
game::dvar_t* register_float(const std::string& name, float value, float min, float max,
|
||||
game::DvarFlags flags, const std::string& description);
|
||||
game::dvar_t* register_vec4(const std::string& name, float x, float y, float z, float w, float min,
|
||||
float max, game::DvarFlags flags, const std::string& description);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user