diff --git a/src/gui/im/Im.cpp b/src/gui/im/Im.cpp index c3ce75d6..b6131498 100644 --- a/src/gui/im/Im.cpp +++ b/src/gui/im/Im.cpp @@ -31,6 +31,7 @@ void CatVar_Integer(CatVar& var) { int value = var; ImGui::PushItemWidth(120.0f); int step = var.restricted ? (var.max - var.min) / 50 : 1; + if (step == 0) step = 1; if (ImGui::InputInt(label, &value, step, step * 20)) { var = value; } diff --git a/src/hack.cpp b/src/hack.cpp index 3746fbca..87e29fdf 100644 --- a/src/hack.cpp +++ b/src/hack.cpp @@ -272,6 +272,7 @@ void hack::Initialize() { hacks::shared::anticheat::Init(); hacks::tf2::healarrow::Init(); InitSpinner(); + hacks::shared::spam::Init(); logging::Info("Initialized Fidget Spinner"); } diff --git a/src/hacks/KillSay.cpp b/src/hacks/KillSay.cpp index 18c9e128..8ec75c48 100644 --- a/src/hacks/KillSay.cpp +++ b/src/hacks/KillSay.cpp @@ -82,6 +82,9 @@ void Reload() { void Init() { g_IEventManager2->AddListener(&getListener(), (const char*)"player_death", false); + filename.InstallChangeCallback([](IConVar* var, const char* pszOV, float flOV) { + file.TryLoad(std::string(filename.GetString())); + }); } void Shutdown() { diff --git a/src/hacks/Spam.cpp b/src/hacks/Spam.cpp index bc53e301..b56798d2 100644 --- a/src/hacks/Spam.cpp +++ b/src/hacks/Spam.cpp @@ -137,6 +137,12 @@ int QueryPlayer(Query query) { return index_result; } +void Init() { + filename.InstallChangeCallback([](IConVar* var, const char* pszOV, float flOV) { + file.TryLoad(std::string(filename.GetString())); + }); +} + bool SubstituteQueries(std::string& input) { size_t index = input.find("%query:"); while (index != std::string::npos) { diff --git a/src/hacks/Spam.h b/src/hacks/Spam.h index f32375ee..bab2173a 100644 --- a/src/hacks/Spam.h +++ b/src/hacks/Spam.h @@ -25,6 +25,7 @@ extern CatVar enabled; extern CatVar filename; extern CatCommand reload; +void Init(); void CreateMove(); void Reset(); void Reload(); diff --git a/src/textfile.cpp b/src/textfile.cpp index 0499c562..28c1b7d2 100644 --- a/src/textfile.cpp +++ b/src/textfile.cpp @@ -18,6 +18,21 @@ TextFile::TextFile() : lines {} {} +bool TextFile::TryLoad(std::string name) { + if (name.length() == 0) return false; + std::string filename = format("cathook/", name); + std::ifstream file(filename, std::ios::in); + if (!file) { + return false; + } + lines.clear(); + for (std::string line; std::getline(file, line);) { + if (*line.rbegin() == '\r') line.erase(line.length() - 1, 1); + lines.push_back(line); + } + return true; +} + void TextFile::Load(std::string name) { std::string filename = format("cathook/", name); std::ifstream file(filename, std::ios::in); @@ -27,6 +42,7 @@ void TextFile::Load(std::string name) { } lines.clear(); for (std::string line; std::getline(file, line);) { + if (*line.rbegin() == '\r') line.erase(line.length() - 1, 1); lines.push_back(line); } } diff --git a/src/textfile.h b/src/textfile.h index 29ee7523..e9df7356 100644 --- a/src/textfile.h +++ b/src/textfile.h @@ -17,6 +17,7 @@ class TextFile { public: TextFile(); void Load(std::string filename); + bool TryLoad(std::string filename); size_t LineCount() const; const std::string& Line(size_t id) const; public: