add listassetpool & others
This commit is contained in:
parent
4747735487
commit
3af1d21166
@ -277,6 +277,15 @@ namespace command
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void enum_assets(const game::XAssetType type, const std::function<void(game::XAssetHeader)>& callback, const bool includeOverride)
|
||||||
|
{
|
||||||
|
game::DB_EnumXAssets_Internal(type, static_cast<void(*)(game::XAssetHeader, void*)>([](game::XAssetHeader header, void* data)
|
||||||
|
{
|
||||||
|
const auto& cb = *static_cast<const std::function<void(game::XAssetHeader)>*>(data);
|
||||||
|
cb(header);
|
||||||
|
}), &callback, includeOverride);
|
||||||
|
}
|
||||||
|
|
||||||
class component final : public component_interface
|
class component final : public component_interface
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -339,7 +348,7 @@ namespace command
|
|||||||
console::info("================================ END COMMAND DUMP =================================\n");
|
console::info("================================ END COMMAND DUMP =================================\n");
|
||||||
});
|
});
|
||||||
|
|
||||||
/*add("listassetpool", [](const params& params)
|
add("listassetpool", [](const params& params)
|
||||||
{
|
{
|
||||||
if (params.size() < 2)
|
if (params.size() < 2)
|
||||||
{
|
{
|
||||||
@ -378,7 +387,7 @@ namespace command
|
|||||||
console::info("%s\n", asset_name);
|
console::info("%s\n", asset_name);
|
||||||
}, true);
|
}, true);
|
||||||
}
|
}
|
||||||
});*/
|
});
|
||||||
|
|
||||||
add("vstr", [](const params& params)
|
add("vstr", [](const params& params)
|
||||||
{
|
{
|
||||||
@ -570,7 +579,7 @@ namespace command
|
|||||||
: "^1off"));
|
: "^1off"));
|
||||||
});
|
});
|
||||||
|
|
||||||
/*add_sv("give", [](const int client_num, const params_sv& params)
|
add_sv("give", [](const int client_num, const params_sv& params)
|
||||||
{
|
{
|
||||||
if (!game::Dvar_FindVar("sv_cheats")->current.enabled)
|
if (!game::Dvar_FindVar("sv_cheats")->current.enabled)
|
||||||
{
|
{
|
||||||
@ -620,7 +629,7 @@ namespace command
|
|||||||
{
|
{
|
||||||
game::G_TakePlayerWeapon(ps, wp);
|
game::G_TakePlayerWeapon(ps, wp);
|
||||||
}
|
}
|
||||||
});*/
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -177,58 +177,6 @@ namespace game_console
|
|||||||
game::R_AddCmdDrawText(text, 0x7FFFFFFF, console_font, con.globals.x + offset_x, _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)
|
|
||||||
{
|
|
||||||
if (exact && text == input) return true;
|
|
||||||
if (!exact && text.find(input) != std::string::npos) return true;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
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.name);
|
|
||||||
if (game::Dvar_FindVar(name.data()) && match_compare(input, name, exact))
|
|
||||||
{
|
|
||||||
suggestions.push_back(dvar);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (exact && suggestions.size() > 1)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (suggestions.size() == 0 && game::Dvar_FindVar(input.data()))
|
|
||||||
{
|
|
||||||
suggestions.push_back({input.data(), ""});
|
|
||||||
}
|
|
||||||
|
|
||||||
game::cmd_function_s* cmd = (*game::cmd_functions);
|
|
||||||
while (cmd)
|
|
||||||
{
|
|
||||||
if (cmd->name)
|
|
||||||
{
|
|
||||||
std::string name = utils::string::to_lower(cmd->name);
|
|
||||||
|
|
||||||
if (match_compare(input, name, exact))
|
|
||||||
{
|
|
||||||
suggestions.push_back({cmd->name, ""});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (exact && suggestions.size() > 1)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
cmd = cmd->next;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void draw_input()
|
void draw_input()
|
||||||
{
|
{
|
||||||
con.globals.font_height = static_cast<float>(console_font->pixelHeight);
|
con.globals.font_height = static_cast<float>(console_font->pixelHeight);
|
||||||
@ -718,6 +666,57 @@ namespace game_console
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool match_compare(const std::string& input, const std::string& text, const bool exact)
|
||||||
|
{
|
||||||
|
if (exact && text == input) return true;
|
||||||
|
if (!exact && text.find(input) != std::string::npos) return true;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void find_matches(std::string input, std::vector<std::string>& suggestions, const bool exact)
|
||||||
|
{
|
||||||
|
input = utils::string::to_lower(input);
|
||||||
|
|
||||||
|
for (const auto& dvar : dvars::dvar_list)
|
||||||
|
{
|
||||||
|
auto name = utils::string::to_lower(dvar);
|
||||||
|
if (game::Dvar_FindVar(name.data()) && match_compare(input, name, exact))
|
||||||
|
{
|
||||||
|
suggestions.push_back(dvar);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (exact && suggestions.size() > 1)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (suggestions.size() == 0 && game::Dvar_FindVar(input.data()))
|
||||||
|
{
|
||||||
|
suggestions.push_back(input.data());
|
||||||
|
}
|
||||||
|
|
||||||
|
game::cmd_function_s* cmd = (*game::cmd_functions);
|
||||||
|
while (cmd)
|
||||||
|
{
|
||||||
|
if (cmd->name)
|
||||||
|
{
|
||||||
|
std::string name = utils::string::to_lower(cmd->name);
|
||||||
|
|
||||||
|
if (game_console::match_compare(input, name, exact))
|
||||||
|
{
|
||||||
|
suggestions.push_back(cmd->name);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (exact && suggestions.size() > 1)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
cmd = cmd->next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
class component final : public component_interface
|
class component final : public component_interface
|
||||||
{
|
{
|
||||||
|
@ -4,4 +4,7 @@ namespace game_console
|
|||||||
{
|
{
|
||||||
bool console_char_event(int local_client_num, int key);
|
bool console_char_event(int local_client_num, int key);
|
||||||
bool console_key_event(int local_client_num, int key, int down);
|
bool console_key_event(int local_client_num, int key, int down);
|
||||||
|
|
||||||
|
bool match_compare(const std::string& input, const std::string& text, const bool exact);
|
||||||
|
void find_matches(std::string input, std::vector<std::string>& suggestions, const bool exact);
|
||||||
}
|
}
|
@ -82,6 +82,12 @@ namespace game
|
|||||||
|
|
||||||
WEAK symbol<void()> G_Glass_Update{0x14026C570, 0x14033A640};
|
WEAK symbol<void()> G_Glass_Update{0x14026C570, 0x14033A640};
|
||||||
WEAK symbol<int(int clientNum)> G_GetClientScore{0, 0x140342F90};
|
WEAK symbol<int(int clientNum)> G_GetClientScore{0, 0x140342F90};
|
||||||
|
WEAK symbol<unsigned int(const char* name)> G_GetWeaponForName{0x1402C2A90, 0x14038C300};
|
||||||
|
WEAK symbol<int(playerState_s* ps, unsigned int weapon, int dualWield,
|
||||||
|
int startInAltMode, int, int, int, char, ...)> G_GivePlayerWeapon{0x1402C2DF0, 0x14038C750};
|
||||||
|
WEAK symbol<void(playerState_s* ps, unsigned int weapon, int hadWeapon)> G_InitializeAmmo{0x140270980, 0x14033EDD0};
|
||||||
|
WEAK symbol<void(int clientNum, unsigned int weapon)> G_SelectWeapon{0x1402C3750, 0x14038D1B0};
|
||||||
|
WEAK symbol<int(playerState_s* ps, unsigned int weapon)> G_TakePlayerWeapon{0x1402C3900, 0x14038D370};
|
||||||
|
|
||||||
WEAK symbol<char*(char* string)> I_CleanStr{0x1403CD230, 0x140503D00};
|
WEAK symbol<char*(char* string)> I_CleanStr{0x1403CD230, 0x140503D00};
|
||||||
|
|
||||||
@ -128,6 +134,9 @@ namespace game
|
|||||||
|
|
||||||
WEAK symbol<ScreenPlacement* ()> ScrPlace_GetViewPlacement{0x1401981F0, 0x140288550};
|
WEAK symbol<ScreenPlacement* ()> ScrPlace_GetViewPlacement{0x1401981F0, 0x140288550};
|
||||||
|
|
||||||
|
WEAK symbol<void(XAssetType type, void(__cdecl* func)(XAssetHeader, void*), const void* inData, bool includeOverride)>
|
||||||
|
DB_EnumXAssets_Internal{0x1401C9C10, 0x1402BA830};
|
||||||
|
WEAK symbol<const char* (const XAsset* asset)> DB_GetXAssetName{0x14019A390, 0x14028BE50};
|
||||||
WEAK symbol<int(XAssetType type)> DB_GetXAssetTypeSize{0x14019A3B0, 0x14028BE70};
|
WEAK symbol<int(XAssetType type)> DB_GetXAssetTypeSize{0x14019A3B0, 0x14028BE70};
|
||||||
|
|
||||||
WEAK symbol<void(int clientNum, const char* menu,
|
WEAK symbol<void(int clientNum, const char* menu,
|
||||||
@ -211,6 +220,7 @@ namespace game
|
|||||||
WEAK symbol<dvar_t> dvarPool{0x14C217D20, 0x14D064D00};
|
WEAK symbol<dvar_t> dvarPool{0x14C217D20, 0x14D064D00};
|
||||||
|
|
||||||
WEAK symbol<void*> DB_XAssetPool{0x140DE8C80, 0x140FEB5D0};
|
WEAK symbol<void*> DB_XAssetPool{0x140DE8C80, 0x140FEB5D0};
|
||||||
|
WEAK symbol<const char*> g_assetNames{0x1408B0870, 0x140FEA240};
|
||||||
|
|
||||||
WEAK symbol<int> keyCatchers{0x14243DAF0, 0x142D0BA9C};
|
WEAK symbol<int> keyCatchers{0x14243DAF0, 0x142D0BA9C};
|
||||||
WEAK symbol<PlayerKeyState> playerKeys{0x1422A873C, 0x142C19AFC};
|
WEAK symbol<PlayerKeyState> playerKeys{0x1422A873C, 0x142C19AFC};
|
||||||
|
Loading…
Reference in New Issue
Block a user