forked from chinosk/gkms-local
				
			Fix game crash (#6)
This commit is contained in:
		
							parent
							
								
									f82e73845a
								
							
						
					
					
						commit
						6e512d9380
					
				| 
						 | 
					@ -474,12 +474,41 @@ namespace GakumasLocal::HookMain {
 | 
				
			||||||
        PictureBookLiveThumbnailView_SetData_Orig(self, liveData, isUnlocked, isNew, ct, mtd);
 | 
					        PictureBookLiveThumbnailView_SetData_Orig(self, liveData, isUnlocked, isNew, ct, mtd);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    void* PictureBookWindowPresenter_instance = nullptr;
 | 
				
			||||||
 | 
					    std::string PictureBookWindowPresenter_charaId;
 | 
				
			||||||
 | 
					    DEFINE_HOOK(void*, PictureBookWindowPresenter_GetLiveMusics, (void* self, Il2cppString* charaId, void* mtd)) {
 | 
				
			||||||
 | 
					        // Log::DebugFmt("GetLiveMusics: %s", charaId->ToString().c_str());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (Config::unlockAllLive) {
 | 
				
			||||||
 | 
					            PictureBookWindowPresenter_instance = self;
 | 
				
			||||||
 | 
					            PictureBookWindowPresenter_charaId = charaId->ToString();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return PictureBookWindowPresenter_GetLiveMusics_Orig(self, charaId, mtd);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    DEFINE_HOOK(void, PictureBookLiveSelectScreenModel_ctor, (void* self, void* transitionParam, void* musics, void* mtd)) {
 | 
				
			||||||
 | 
					        // Log::DebugFmt("PictureBookLiveSelectScreenModel_ctor");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (Config::unlockAllLive) {
 | 
				
			||||||
 | 
					            static auto GetLiveMusics = Il2cppUtils::GetMethod("Assembly-CSharp.dll", "Campus.OutGame",
 | 
				
			||||||
 | 
					                                                               "PictureBookWindowPresenter", "GetLiveMusics");
 | 
				
			||||||
 | 
					            if (PictureBookWindowPresenter_instance && !PictureBookWindowPresenter_charaId.empty()) {
 | 
				
			||||||
 | 
					                auto fullMusics = GetLiveMusics->Invoke<void*>(PictureBookWindowPresenter_instance,
 | 
				
			||||||
 | 
					                                                               Il2cppString::New(PictureBookWindowPresenter_charaId));
 | 
				
			||||||
 | 
					                return PictureBookLiveSelectScreenModel_ctor_Orig(self, transitionParam, fullMusics, mtd);
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return PictureBookLiveSelectScreenModel_ctor_Orig(self, transitionParam, musics, mtd);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    bool needRestoreHides = false;
 | 
					    bool needRestoreHides = false;
 | 
				
			||||||
    DEFINE_HOOK(void*, PictureBookLiveSelectScreenPresenter_MoveLiveScene, (void* self, void* produceLive,
 | 
					    DEFINE_HOOK(void*, PictureBookLiveSelectScreenPresenter_MoveLiveScene, (void* self, void* produceLive,
 | 
				
			||||||
            Il2cppString* characterId, Il2cppString* costumeId, Il2cppString* costumeHeadId)) {
 | 
					            Il2cppString* characterId, Il2cppString* idolCardId, Il2cppString* costumeId, Il2cppString* costumeHeadId, void* mtd)) {
 | 
				
			||||||
        needRestoreHides = false;
 | 
					        needRestoreHides = false;
 | 
				
			||||||
        Log::InfoFmt("MoveLiveScene: characterId: %s, costumeId: %s, costumeHeadId: %s,",
 | 
					        Log::InfoFmt("MoveLiveScene: characterId: %s, idolCardId: %s, costumeId: %s, costumeHeadId: %s,",
 | 
				
			||||||
                     characterId->ToString().c_str(), costumeId->ToString().c_str(), costumeHeadId->ToString().c_str());
 | 
					                     characterId->ToString().c_str(), idolCardId->ToString().c_str(), costumeId->ToString().c_str(), costumeHeadId->ToString().c_str());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /*
 | 
					        /*
 | 
				
			||||||
         characterId: hski, costumeId: hski-cstm-0002, costumeHeadId: costume_head_hski-cstm-0002,
 | 
					         characterId: hski, costumeId: hski-cstm-0002, costumeHeadId: costume_head_hski-cstm-0002,
 | 
				
			||||||
| 
						 | 
					@ -488,12 +517,13 @@ namespace GakumasLocal::HookMain {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (Config::dbgMode && Config::enableLiveCustomeDress) {
 | 
					        if (Config::dbgMode && Config::enableLiveCustomeDress) {
 | 
				
			||||||
            // 修改 LiveFixedData_GetCharacter 可以更改 Loading 角色和演唱者名字,而不变更实际登台人
 | 
					            // 修改 LiveFixedData_GetCharacter 可以更改 Loading 角色和演唱者名字,而不变更实际登台人
 | 
				
			||||||
            return PictureBookLiveSelectScreenPresenter_MoveLiveScene_Orig(self, produceLive, characterId,
 | 
					            return PictureBookLiveSelectScreenPresenter_MoveLiveScene_Orig(self, produceLive, characterId, idolCardId,
 | 
				
			||||||
                                                                           Config::liveCustomeCostumeId.empty() ? costumeId : Il2cppString::New(Config::liveCustomeCostumeId),
 | 
					                                                                           Config::liveCustomeCostumeId.empty() ? costumeId : Il2cppString::New(Config::liveCustomeCostumeId),
 | 
				
			||||||
                                                                           Config::liveCustomeHeadId.empty() ? costumeHeadId : Il2cppString::New(Config::liveCustomeHeadId));
 | 
					                                                                           Config::liveCustomeHeadId.empty() ? costumeHeadId : Il2cppString::New(Config::liveCustomeHeadId),
 | 
				
			||||||
 | 
					                                                                           mtd);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return PictureBookLiveSelectScreenPresenter_MoveLiveScene_Orig(self, produceLive, characterId, costumeId, costumeHeadId);
 | 
					        return PictureBookLiveSelectScreenPresenter_MoveLiveScene_Orig(self, produceLive, characterId, idolCardId, costumeId, costumeHeadId, mtd);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // std::string lastMusicId;
 | 
					    // std::string lastMusicId;
 | 
				
			||||||
| 
						 | 
					@ -883,6 +913,12 @@ namespace GakumasLocal::HookMain {
 | 
				
			||||||
        ADD_HOOK(PictureBookLiveThumbnailView_SetData,
 | 
					        ADD_HOOK(PictureBookLiveThumbnailView_SetData,
 | 
				
			||||||
                 Il2cppUtils::GetMethodPointer("Assembly-CSharp.dll", "Campus.OutGame.PictureBook",
 | 
					                 Il2cppUtils::GetMethodPointer("Assembly-CSharp.dll", "Campus.OutGame.PictureBook",
 | 
				
			||||||
                                               "PictureBookLiveThumbnailView", "SetDataAsync", {"*", "*", "*", "*"}));
 | 
					                                               "PictureBookLiveThumbnailView", "SetDataAsync", {"*", "*", "*", "*"}));
 | 
				
			||||||
 | 
					        ADD_HOOK(PictureBookWindowPresenter_GetLiveMusics,
 | 
				
			||||||
 | 
					                 Il2cppUtils::GetMethodPointer("Assembly-CSharp.dll", "Campus.OutGame",
 | 
				
			||||||
 | 
					                                               "PictureBookWindowPresenter", "GetLiveMusics"));
 | 
				
			||||||
 | 
					        ADD_HOOK(PictureBookLiveSelectScreenModel_ctor,
 | 
				
			||||||
 | 
					                 Il2cppUtils::GetMethodPointer("Assembly-CSharp.dll", "Campus.OutGame",
 | 
				
			||||||
 | 
					                                               "PictureBookLiveSelectScreenModel", ".ctor"));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        ADD_HOOK(PictureBookLiveSelectScreenPresenter_MoveLiveScene,
 | 
					        ADD_HOOK(PictureBookLiveSelectScreenPresenter_MoveLiveScene,
 | 
				
			||||||
                 Il2cppUtils::GetMethodPointer("Assembly-CSharp.dll", "Campus.OutGame",
 | 
					                 Il2cppUtils::GetMethodPointer("Assembly-CSharp.dll", "Campus.OutGame",
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue