diff --git a/lib/ClientHelper.cpp b/lib/ClientHelper.cpp index 6338d01..63bba9c 100644 --- a/lib/ClientHelper.cpp +++ b/lib/ClientHelper.cpp @@ -1,6 +1,9 @@ #include "pch-il2cpp.h" +#include "helpers.h" + #include "ClientHelper.h" +#include "wrapper.h" bool IsSinglePlayer() { @@ -17,3 +20,42 @@ bool IsHost() return app::BoltNetwork_get_IsServer(NULL); } +app::Menu* get_HorrorMenu() { + Wrapper wrapper; + + const Il2CppImage* image = wrapper.GetImage("Assembly-CSharp.dll"); + + // DO_APP_FUNC(0x0065B240, void, Menu_OnLobbyStartButtonClick, (Menu * __this, MethodInfo * method)); + // menu.OnLobbyStartButtonClick(); + + Il2CppObject* object = wrapper.GetObjectFromClass(image, "Horror", "Menu"); + + if (object != nullptr) { + + app::Object_1* Horror_MenuObject = app::Object_1_FindObjectOfType(reinterpret_cast(object), nullptr); + + if (Horror_MenuObject) { + app::Menu* HorrorMenu = reinterpret_cast(Horror_MenuObject); + + if (HorrorMenu) { + return HorrorMenu; + } + } + } + + return nullptr; +} + +std::string get_SceneName() +{ + app::SaveHelpers* SaveHelper = app::SaveHelpers_get_singleton(nullptr); + + if (SaveHelper) { + + std::string str = il2cppi_to_string(SaveHelper->fields.sceneName); + + return str; + } + + return std::string("unknown"); +} diff --git a/lib/ClientHelper.h b/lib/ClientHelper.h index 15bb2fb..2cd4844 100644 --- a/lib/ClientHelper.h +++ b/lib/ClientHelper.h @@ -1,5 +1,9 @@ #pragma once +#include + bool IsSinglePlayer(); bool IsOnline(); bool IsHost(); +app::Menu* get_HorrorMenu(); +std::string get_SceneName(); \ No newline at end of file diff --git a/lib/wrapper.cpp b/lib/wrapper.cpp index bb47cf3..5ba74b8 100644 --- a/lib/wrapper.cpp +++ b/lib/wrapper.cpp @@ -21,12 +21,10 @@ Wrapper::Wrapper() if (assembly) { const char* assemblyName = il2cpp_image_get_name(assembly->image); assemblyMap[assemblyName] = assembly; - std::cout << "\t- " << assemblyName << std::endl; } } } - const Il2CppAssembly* Wrapper::GetAssembly(const char* _assembly) { for (const auto& entry : assemblyMap) { if (strcmp(entry.first, _assembly) == 0) { diff --git a/user/features/menu.cpp b/user/features/menu.cpp index 1ab4571..2226d94 100644 --- a/user/features/menu.cpp +++ b/user/features/menu.cpp @@ -3,6 +3,8 @@ #include "../main.h" #include "../settings/settings.hpp" +#include "misc/misc.h" + #include #include @@ -187,7 +189,7 @@ void DrawMapSpecificTab() { } if (ImGui::Button("Force start game")) { - //Misc::ForceStart(); + Misc::ForceStart(); } if (ImGui::Button("Knock out everyone")) { diff --git a/user/features/misc/misc.cpp b/user/features/misc/misc.cpp index 3d41b6b..ccc8f0c 100644 --- a/user/features/misc/misc.cpp +++ b/user/features/misc/misc.cpp @@ -1,6 +1,7 @@ #include "pch-il2cpp.h" #include "misc.h" +#include "ClientHelper.h" void Misc::SetRank(int rank) { @@ -9,4 +10,12 @@ void Misc::SetRank(int rank) void Misc::SetSteamName(std::string& name) { + get_HorrorMenu()->fields.steamName = reinterpret_cast(il2cpp_string_new("0x")); +} + +void Misc::ForceStart() +{ + if (IsHost()) { + app::Menu_OnLobbyStartButtonClick(get_HorrorMenu(), nullptr); + } } diff --git a/user/features/misc/misc.h b/user/features/misc/misc.h index c4a7ea6..18bcc6c 100644 --- a/user/features/misc/misc.h +++ b/user/features/misc/misc.h @@ -7,4 +7,5 @@ namespace Misc { void SetRank(int rank); void SetSteamName(std::string& name); + void ForceStart(); } \ No newline at end of file