steam name changer added
+ Horror.menu update hooked + UnlockAchievements added but crashes when used
This commit is contained in:
@@ -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")) {
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user