Merge pull request #385 from LightyPonce/master

xd
This commit is contained in:
BenCat07 2018-04-19 15:26:34 +02:00 committed by GitHub
commit 706d086f1d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 138 additions and 35 deletions

View File

@ -16,6 +16,7 @@ namespace shared
namespace announcer namespace announcer
{ {
void playsound(const std::string&);
void init(); void init();
void shutdown(); void shutdown();
} }

View File

@ -28,6 +28,8 @@ public:
void FillWithCatVars(std::vector<CatVar *> vec); void FillWithCatVars(std::vector<CatVar *> vec);
void OpenSublist(List *sublist, int dy); void OpenSublist(List *sublist, int dy);
bool ShouldClose(); bool ShouldClose();
static void ShowInvalidCatVars();
static void ShowMissingCatVars();
static List *FromString(const std::string &string); static List *FromString(const std::string &string);
@ -48,6 +50,20 @@ public:
List *open_sublist{ nullptr }; List *open_sublist{ nullptr };
std::string title; std::string title;
}; };
class DecoyCatVar
{
CatVar_t type{ CV_SWITCH };
const std::string name;
int defaults{ 0 };
const std::string desc_short{ "" };
const std::string desc_long{ "INVALID COMMAND" };
bool registered{ false };
public:
DecoyCatVar(const std::string value) : desc_short(value)
{
}
};
} }
} }
#endif #endif

View File

@ -50,6 +50,9 @@ CatVar tauntslide(CV_SWITCH, "tauntslide", "0", "TF2C tauntslide",
CatVar tauntslide_tf2(CV_SWITCH, "tauntslide_tf2", "0", "Tauntslide", CatVar tauntslide_tf2(CV_SWITCH, "tauntslide_tf2", "0", "Tauntslide",
"Allows free movement while taunting with movable " "Allows free movement while taunting with movable "
"taunts\nOnly works in tf2"); "taunts\nOnly works in tf2");
CatVar
show_spectators(CV_SWITCH, "show_spectators", "0", "Show spectators",
"Show who's spectating you\nonly works in valve servers");
void *C_TFPlayer__ShouldDraw_original = nullptr; void *C_TFPlayer__ShouldDraw_original = nullptr;
@ -108,7 +111,6 @@ CatCommand
void CreateMove() void CreateMove()
{ {
// Crithack // Crithack
static IClientEntity *localplayer, *weapon, *last_weapon = nullptr; static IClientEntity *localplayer, *weapon, *last_weapon = nullptr;
static int tries, cmdn, md5seed, rseed, c, b; static int tries, cmdn, md5seed, rseed, c, b;
@ -123,22 +125,23 @@ void CreateMove()
static IClientEntity *last_checked_weapon = nullptr; static IClientEntity *last_checked_weapon = nullptr;
/*IF_GAME (IsTF2()) { /*IF_GAME (IsTF2()) {
if (crit_hack_next && CE_GOOD(LOCAL_E) && CE_GOOD(LOCAL_W) && WeaponCanCrit() && RandomCrits()) { if (crit_hack_next && CE_GOOD(LOCAL_E) && CE_GOOD(LOCAL_W) &&
PROF_SECTION(CM_misc_crit_hack_prediction); WeaponCanCrit() && RandomCrits()) {
weapon = RAW_ENT(LOCAL_W); PROF_SECTION(CM_misc_crit_hack_prediction);
// IsBaseCombatWeapon weapon = RAW_ENT(LOCAL_W);
if (weapon && // IsBaseCombatWeapon
vfunc<bool(*)(IClientEntity*)>(weapon, 1944 / 4, 0)(weapon)) { if (weapon &&
/*if (experimental_crit_hack.KeyDown()) { vfunc<bool(*)(IClientEntity*)>(weapon, 1944 / 4, 0)(weapon)) {
if (!g_pUserCmd->command_number || critWarmup < 8) { /*if (experimental_crit_hack.KeyDown()) {
if (g_pUserCmd->buttons & IN_ATTACK) { if (!g_pUserCmd->command_number || critWarmup < 8) {
critWarmup++; if (g_pUserCmd->buttons & IN_ATTACK) {
} else { critWarmup++;
critWarmup = 0; } else {
} critWarmup = 0;
g_pUserCmd->buttons &= ~(IN_ATTACK); }
} g_pUserCmd->buttons &= ~(IN_ATTACK);
}*/ /* }
}*/ /*
if (g_pUserCmd->command_number && if (g_pUserCmd->command_number &&
(last_checked_weapon != (last_checked_weapon !=
weapon || last_checked_command_number < weapon || last_checked_command_number <
@ -280,7 +283,7 @@ void CreateMove()
static bool flswitch = false; static bool flswitch = false;
if (flswitch && !g_pUserCmd->impulse) if (flswitch && !g_pUserCmd->impulse)
g_pUserCmd->impulse = 100; g_pUserCmd->impulse = 100;
flswitch = !flswitch; flswitch = !flswitch;
} }
} }
@ -317,7 +320,7 @@ void CreateMove()
if (!(hacks::shared::antiaim::enabled && if (!(hacks::shared::antiaim::enabled &&
hacks::shared::antiaim::yaw_mode && hacks::shared::antiaim::yaw_mode &&
!(side || forward))) !(side || forward)))
g_pUserCmd->viewangles.y = camera_angle[1]; g_pUserCmd->viewangles.y = camera_angle[1];
g_pLocalPlayer->v_OrigViewangles.y = camera_angle[1]; g_pLocalPlayer->v_OrigViewangles.y = camera_angle[1];
// Use silent since we dont want to prevent the player from // Use silent since we dont want to prevent the player from
@ -375,7 +378,37 @@ void DrawText()
fonts::font_main, color); fonts::font_main, color);
}*/ }*/
if (show_spectators)
{
for (int i = 0; i < 32; i++)
{
// Assign the for loops tick number to an ent
CachedEntity *ent = ENTITY(i);
player_info_s info;
if (!CE_BAD(ent) && ent != LOCAL_E &&
ent->m_Type == ENTITY_PLAYER &&
(CE_INT(ent, netvar.hObserverTarget) & 0xFFF) ==
LOCAL_E->m_IDX &&
CE_INT(ent, netvar.iObserverMode) >= 4 &&
g_IEngine->GetPlayerInfo(i, &info))
{
auto observermode = "N/A";
switch (CE_INT(ent, netvar.iObserverMode))
{
case 4:
observermode = "Firstperson";
break;
case 5:
observermode = "Thirdperson";
break;
case 7:
observermode = "Freecam";
break;
}
AddSideString(format(info.name, " ", observermode));
}
}
}
if (!debug_info) if (!debug_info)
return; return;
if (CE_GOOD(g_pLocalPlayer->weapon())) if (CE_GOOD(g_pLocalPlayer->weapon()))
@ -655,9 +688,9 @@ static CatCommand
const char *ft = (args.ArgC() > 1 ? args[2] : 0); const char *ft = (args.ArgC() > 1 ? args[2] : 0);
DumpRecvTable(ent, clz->m_pRecvTable, 0, ft, 0); DumpRecvTable(ent, clz->m_pRecvTable, 0, ft, 0);
}); });
} } // namespace misc
} } // namespace shared
} } // namespace hacks
/*void DumpRecvTable(CachedEntity* ent, RecvTable* table, int depth, const char* /*void DumpRecvTable(CachedEntity* ent, RecvTable* table, int depth, const char*
ft, unsigned acc_offset) { bool forcetable = ft && strlen(ft); if (!forcetable ft, unsigned acc_offset) { bool forcetable = ft && strlen(ft); if (!forcetable

View File

@ -37,8 +37,10 @@ CatVar gui_visible(CV_SWITCH, "gui_visible", "0", "GUI Active",
"GUI switch (bind it to a key!)"); "GUI switch (bind it to a key!)");
CatVar gui_draw_bounds(CV_SWITCH, "gui_bounds", "0", "Draw Bounds", CatVar gui_draw_bounds(CV_SWITCH, "gui_bounds", "0", "Draw Bounds",
"Draw GUI elements' bounding boxes"); "Draw GUI elements' bounding boxes");
// CatVar gui_nullcore(CV_SWITCH, "gui_nullcore", "1", "NullCore GUI", "Use CatCommand debug_invalid("debug_invalid", "Display all invalid CatVars",
// NullCoreCheat GUI"); []() { menu::ncc::List::ShowInvalidCatVars(); });
CatCommand debug_missing("debug_missing", "Display all missing CatVars",
[]() { menu::ncc::List::ShowMissingCatVars(); });
CatGUI::CatGUI() CatGUI::CatGUI()
{ {
@ -76,6 +78,7 @@ int NCGUIColor()
void CatGUI::Setup() void CatGUI::Setup()
{ {
menu::ncc::Init(); menu::ncc::Init();
menu::ncc::List::ShowInvalidCatVars();
root_nullcore = menu::ncc::root; root_nullcore = menu::ncc::root;
gui_visible.OnRegister([](CatVar *var) { gui_visible.OnRegister([](CatVar *var) {
var->convar->InstallChangeCallback(GUIVisibleCallback); var->convar->InstallChangeCallback(GUIVisibleCallback);

View File

@ -40,7 +40,8 @@ void ItemVariable::Change(float amount)
{ {
case CV_SWITCH: case CV_SWITCH:
{ {
catvar = !catvar; if (catvar.desc_long != "INVALID COMMAND")
catvar = !catvar;
} }
break; break;
case CV_ENUM: case CV_ENUM:
@ -89,7 +90,8 @@ void ItemVariable::OnMousePress()
capturing = true; capturing = true;
} }
if (catvar.type == CV_SWITCH) if (catvar.type == CV_SWITCH)
catvar = !catvar; if (catvar.desc_long != "INVALID COMMAND")
catvar = !catvar;
} }
void ItemVariable::OnFocusLose() void ItemVariable::OnFocusLose()
@ -107,7 +109,7 @@ void ItemVariable::OnKeyPress(ButtonCode_t key, bool repeat)
if (capturing) if (capturing)
{ {
if (key == ButtonCode_t::KEY_ESCAPE) if (key == ButtonCode_t::KEY_ESCAPE)
key = (ButtonCode_t) 0; key = (ButtonCode_t) 0;
catvar = (int) key; catvar = (int) key;
capturing = false; capturing = false;
return; return;
@ -159,10 +161,10 @@ void ItemVariable::OnKeyPress(ButtonCode_t key, bool repeat)
if (key == ButtonCode_t::MOUSE_WHEEL_UP) if (key == ButtonCode_t::MOUSE_WHEEL_UP)
{ {
if (catvar.type == CV_FLOAT && if ((catvar.type == CV_FLOAT || catvar.type == CV_INT) &&
g_IInputSystem->IsButtonDown(ButtonCode_t::KEY_LSHIFT)) g_IInputSystem->IsButtonDown(ButtonCode_t::KEY_LSHIFT))
Change(change * 2); Change(change * 2);
else if (catvar.type == CV_FLOAT && else if ((catvar.type == CV_FLOAT || catvar.type == CV_INT) &&
g_IInputSystem->IsButtonDown(ButtonCode_t::KEY_LCONTROL)) g_IInputSystem->IsButtonDown(ButtonCode_t::KEY_LCONTROL))
Change(change / 4); Change(change / 4);
else else
@ -189,7 +191,8 @@ void ItemVariable::Draw(int x, int y)
{ {
case CV_SWITCH: case CV_SWITCH:
{ {
val = catvar ? "ON" : "OFF"; if (catvar.desc_long != "INVALID COMMAND")
val = catvar ? "ON" : "OFF";
} }
break; break;
case CV_INT: case CV_INT:

View File

@ -18,6 +18,7 @@ namespace menu
{ {
namespace ncc namespace ncc
{ {
std::vector<std::string> invalidvars, missingvars, menu_vars;
List::List(std::string title) List::List(std::string title)
: open_sublist(nullptr), title(title), got_mouse(false), : open_sublist(nullptr), title(title), got_mouse(false),
@ -100,8 +101,51 @@ CatVar *FindCatVar(const std::string name)
if (var->name == name) if (var->name == name)
return var; return var;
} }
logging::Info("can't find %s", name.c_str()); invalidvars.push_back(name);
throw std::runtime_error("can't find catvar " + name); DecoyCatVar *unknownvar =
new DecoyCatVar(format("Error, can't find ", name));
logging::Info("Can't find %s", name.c_str());
return (CatVar *) unknownvar;
}
void FindMissingCatVars()
{
for (auto var : CatVarList())
{
if (std::find(menu_vars.begin(), menu_vars.end(), var->name) ==
menu_vars.end())
missingvars.push_back(var->name);
}
}
void List::ShowInvalidCatVars()
{
if (invalidvars.size())
{
g_ICvar->ConsolePrintf("The following CatVars are invalid\n");
for (int i = 0; i < invalidvars.size(); i++)
g_ICvar->ConsolePrintf("%s\n", invalidvars[i].c_str());
}
else
g_ICvar->ConsolePrintf("No CatVars are invalid\n");
static bool init = false;
if (!init)
{
FindMissingCatVars();
init = true;
}
}
void List::ShowMissingCatVars()
{
if (missingvars.size())
{
g_ICvar->ConsolePrintf("The following CatVars are missing\n");
for (int i = 0; i < missingvars.size(); i++)
g_ICvar->ConsolePrintf("%s\n", missingvars[i].c_str());
}
else
g_ICvar->ConsolePrintf("No CatVars are missing\n");
} }
// abc def, ghj, [, fdg sgf saqw rter, ], gs // abc def, ghj, [, fdg sgf saqw rter, ], gs
void FillFromTokens(List *list, const std::vector<std::string> &tokens) void FillFromTokens(List *list, const std::vector<std::string> &tokens)
@ -114,6 +158,7 @@ void FillFromTokens(List *list, const std::vector<std::string> &tokens)
if (i == tokens.size() - 1 || tokens[i + 1] != "[") if (i == tokens.size() - 1 || tokens[i + 1] != "[")
{ {
list->AddChild(new ItemVariable(*FindCatVar(str))); list->AddChild(new ItemVariable(*FindCatVar(str)));
menu_vars.push_back(str);
} }
else else
{ {

View File

@ -451,6 +451,7 @@ static const std::string list_tf2 = R"(
"gui_ncc_font_family" "gui_ncc_font_family"
"gui_ncc_font_title_family" "gui_ncc_font_title_family"
"fast_outline" "fast_outline"
"show_spectators"
"ESP" [ "ESP" [
"ESP Menu" "ESP Menu"
"esp_enabled" "esp_enabled"
@ -586,7 +587,7 @@ static const std::string list_tf2 = R"(
"Air Stuck Menu" "Air Stuck Menu"
"airstuck" "airstuck"
] ]
"Anti-/Anti-Aim" [ "Anti-Aim" [
"Anti-Aim Menu" "Anti-Aim Menu"
"aa_enabled" "aa_enabled"
"aa_realfakes" "aa_realfakes"
@ -603,7 +604,8 @@ static const std::string list_tf2 = R"(
"aa_no_clamp" "aa_no_clamp"
"resolver" "resolver"
"identify" "identify"
"Anti Anti Aim" [ "Anti-/Anti-Aim" [
"Anti-/Anti-Aim"
"aa_aaaa_enabled" "aa_aaaa_enabled"
"aa_aaaa_flip_key" "aa_aaaa_flip_key"
"aa_aaaa_mode" "aa_aaaa_mode"