steam name changer added

+ Horror.menu update hooked
+ UnlockAchievements added but crashes when used
This commit is contained in:
Jadis0x
2024-06-01 21:27:40 +03:00
parent 01c16909bf
commit 3c474a398e
4 changed files with 86 additions and 9 deletions

View File

@@ -300,25 +300,19 @@ void DrawMiscTab() {
//ImGui::Checkbox("Chat spam", &settings::chat_spam); //ImGui::Checkbox("Chat spam", &settings::chat_spam);
//ImGui::InputText("Message", &settings::message); //ImGui::InputText("Message", &settings::message);
/*
if (ImGui::Button("Unlock Achievements")) { if (ImGui::Button("Unlock Achievements")) {
Misc::CustomizedLobby(); Misc::UnlockAchievements();
} }
/*
if (ImGui::Button("TP Keys")) { if (ImGui::Button("TP Keys")) {
//Misc::TPKeys(); //Misc::TPKeys();
} }
*/
ImGui::Checkbox("Change Steam name", &settings::steam_name_spoof); ImGui::Checkbox("Change Steam name", &settings::steam_name_spoof);
ImGui::InputText("New name##steam", &settings::new_name); ImGui::InputText("New name##steam", &settings::new_name);
ImGui::Checkbox("Change server name", &settings::server_name_spoof);
ImGui::InputText("New name##server", &settings::server_name);
*/
ImGui::Checkbox("Fly", &settings::fly);
ImGui::SliderFloat("Speed: ", &settings::fly_speed, 5.f, 20.f);
/* /*
if (ImGui::Button("Make random noise")) { if (ImGui::Button("Make random noise")) {

View File

@@ -416,3 +416,52 @@ void Misc::TpToAzazel()
} }
} }
} }
void Misc::UnlockAchievements()
{
app::AchievementHelpers* achievementsSingleton = app::AchievementHelpers_get_singleton(nullptr);
if (achievementsSingleton != nullptr) {
const char* achievements[] = {
"ACH_ALL_CLIPBOARDS_READ", "ACH_ALL_NOTES_READ", "ACH_UNLOCKED_CAGE",
"ACH_UNLOCKED_ATTIC_CAGE", "ACH_CALMED_ANNA", "ACH_FRIED_RAT",
"ACH_BURNT_GOAT", "ACH_KNOCKED_OUT_BY_ANNA", "ACH_KNOCKOUT_OUT_BY_DEMON",
"ACH_KNOCKED_OUT_IN_HIDING", "STAT_NUM_BLEACH_USED", "ACH_WON_SP",
"ACH_WIN_NIGHTMARE", "ACH_WON_HARD_SP", "ACH_WON_COOP", "ACH_WON_HARD",
"ACH_WIN_NIGHTMARE_SP", "ACH_LOST", "ACH_NEVER_KNOCKED_OUT",
"ACH_ONLY_ONE_KNOCKED_OUT", "ACH_WON_HARD_NO_MEDKITS", "ACH_WON_NO_MEDKITS",
"ACH_WON_NO_BATTERIES", "ACH_WON_NIGHTMARE_NO_MEDKITS",
"ACH_WON_NO_KNOCKOUT_COOP", "ACH_WON_HARD_NO_BATTERIES",
"ACH_WON_HARD_{0}", "ACH_WON_NIGHTMARE_{0}", "ACH_WON_NIGHTMARE_NO_BATTERIES",
"ACH_SURVIVED_TO_7_GOATS", "ACH_SURVIVED_TO_5_GOATS", "ACH_SURVIVED_TO_3_GOATS",
"ACH_WON_Manor_NIGHTMARE_SP", "ACH_WON_NIGHTMARE_", "ACH_WON_MANOR_NIGHTMARE_SP",
"ACH_WON_TOWN_HARD", "ACH_WON_INN_HARD_SP", "ACH_ALL_FEATHERS",
"ACH_WON_SLAUGHTERHOUSE_COOP", "ACH_ALL_BARBED_WIRES", "ACH_WON_INN_HARD",
"ACH_WON_MOLLY_HARD", "ACH_ALL_HORSESHOES", "ACH_WON_MOLLY_HARD_SP",
"ACH_WON_TOWN_NIGHTMARE_SP", "ACH_100_GASOLINE_USED", "ACH_WON_INN_SP",
"ACH_WON_MANOR_HARD_SP", "ACH_WON_MOLLY_SP", "ACH_1000_PIGS_DESTROYED",
"ACH_1000_MIRRORS_DESTROYED", "ACH_100_EGGS_DESTROYED", "ACH_WON_SLAUGHTERHOUSE_HARD_SP",
"ACH_WON_TOWN_COOP", "ACH_100_FUSES_USED", "ACH_WON_MOLLY_COOP",
"ACH_WON_MOLLY_NIGHTMARE_SP", "ACH_1000_BOOKS_DESTROYED", "ACH_ALL_PATCHES",
"ACH_WON_SLAUGHTERHOUSE_SP", "ACH_WON_TOWN_NIGHTMARE", "ACH_WON_INN_COOP",
"ACH_ALL_CHERRY_BLOSSOM", "ACH_WON_TOWN_HARD_SP", "ACH_WON_MOLLY_NIGHTMARE",
"ACH_WON_INN_NIGHTMARE_SP", "ACH_ALL_ROSES", "ACH_WON_TOWN_SP",
"ACH_WON_SLAUGHTERHOUSE_NIGHTMARE_SP", "ACH_WON_INN_NIGHTMARE",
"ACH_WON_MANOR_COOP", "ACH_WON_SLAUGHTERHOUSE_HARD", "ACH_WON_SLAUGHTERHOUSE_NIGHTMARE",
"ACH_WON_MANOR_HARD", "ACH_WON_MANOR_NIGHTMARE", "ACH_WON_MANOR_SP"
};
int size = sizeof(achievements) / sizeof(achievements[0]);
std::cout << "Achievements length: " << size << "\n";
for (int i = 0; i < size; ++i) {
app::String* currentachievements = reinterpret_cast<app::String*>(il2cpp_string_new(achievements[i]));
// crash
app::AchievementHelpers_Unlock(achievementsSingleton, currentachievements, false, nullptr);
}
}
}

View File

@@ -18,4 +18,5 @@ namespace Misc {
void Kill(bool self); void Kill(bool self);
void RankSpoofer(int value); void RankSpoofer(int value);
void TpToAzazel(); void TpToAzazel();
void UnlockAchievements();
} }

View File

@@ -60,6 +60,32 @@ void __stdcall hNolanBehaviour_OnAttributeUpdateValue(app::NolanBehaviour* __thi
oNolanBehaviour_OnAttributeUpdateValue(__this, attribute, method); oNolanBehaviour_OnAttributeUpdateValue(__this, attribute, method);
} }
// DO_APP_FUNC(0x006406A0, void, Menu_Update, (Menu * __this, MethodInfo * method));
typedef void(__stdcall* TMenu_Update)(app::Menu*, MethodInfo*);
TMenu_Update oMenu_Update = NULL;
void __stdcall hMenu_Update(app::Menu* __this, MethodInfo* method) {
if (settings::steam_name_spoof) {
Il2CppString* steamId = il2cpp_string_new("43634643643");
Il2CppString* new_name = il2cpp_string_new(settings::new_name.c_str());
__this->fields.steamID = reinterpret_cast<app::String*>(steamId);
__this->fields.steamName = reinterpret_cast<app::String*>(new_name);
}
if (settings::server_name_spoof) {
app::String* newServerName = reinterpret_cast<app::String*>(il2cpp_string_new(settings::server_name.c_str()));
if (app::Text_set_text != nullptr) {
app::Text_set_text(__this->fields.serverNameText, newServerName, nullptr);
}
}
oMenu_Update(__this, method);
}
// DO_APP_FUNC(0x004AABA0, void, NolanBehaviour_Update, (NolanBehaviour * __this, MethodInfo * method)); // DO_APP_FUNC(0x004AABA0, void, NolanBehaviour_Update, (NolanBehaviour * __this, MethodInfo * method));
typedef void(__stdcall* TNolanBehaviour_Update)(app::NolanBehaviour*, MethodInfo*); typedef void(__stdcall* TNolanBehaviour_Update)(app::NolanBehaviour*, MethodInfo*);
TNolanBehaviour_Update oNolanBehaviour_Update = NULL; TNolanBehaviour_Update oNolanBehaviour_Update = NULL;
@@ -433,6 +459,13 @@ void CreateHooks() {
return; return;
} }
// Horror.Menu Hook
MH_STATUS status_Menu_Update = MH_CreateHook((LPVOID*)app::Menu_Update, &hMenu_Update, reinterpret_cast<LPVOID*>(&oMenu_Update));
if (status_Menu_Update != MH_OK) {
std::cout << "Failed to create status_Menu_Update hook: " << MH_StatusToString(status_Menu_Update) << std::endl;
return;
}
// NOLAN UPDATE HOOK // NOLAN UPDATE HOOK
MH_STATUS status_nolanUpdate = MH_CreateHook((LPVOID*)app::NolanBehaviour_Update, &hNolanBehaviour_Update, reinterpret_cast<LPVOID*>(&oNolanBehaviour_Update)); MH_STATUS status_nolanUpdate = MH_CreateHook((LPVOID*)app::NolanBehaviour_Update, &hNolanBehaviour_Update, reinterpret_cast<LPVOID*>(&oNolanBehaviour_Update));
if (status_nolanUpdate != MH_OK) { if (status_nolanUpdate != MH_OK) {