From d09904643f99a27ff13c4aff48903cee0fca3f87 Mon Sep 17 00:00:00 2001 From: chinosk <2248589280@qq.com> Date: Tue, 18 Mar 2025 09:28:15 +0000 Subject: [PATCH] fixed crash --- app/src/main/cpp/GakumasLocalify/BaseDefine.h | 79 ++++-- app/src/main/cpp/GakumasLocalify/Hook.cpp | 62 ++++- .../main/cpp/GakumasLocalify/MasterLocal.cpp | 1 + .../cpp/GakumasLocalify/camera/camera.cpp | 1 - .../cpp/GakumasLocalify/config/Config.cpp | 63 +++++ .../cpp/GakumasLocalify/config/Config.hpp | 1 + app/src/main/res/values-ja/strings.xml | 254 ++++++++++++++++-- 7 files changed, 410 insertions(+), 51 deletions(-) diff --git a/app/src/main/cpp/GakumasLocalify/BaseDefine.h b/app/src/main/cpp/GakumasLocalify/BaseDefine.h index 18a5153..e10f49b 100644 --- a/app/src/main/cpp/GakumasLocalify/BaseDefine.h +++ b/app/src/main/cpp/GakumasLocalify/BaseDefine.h @@ -1,29 +1,58 @@ -#define KEY_W 51 -#define KEY_S 47 -#define KEY_A 29 -#define KEY_D 32 -#define KEY_R 46 -#define KEY_Q 45 -#define KEY_E 33 -#define KEY_F 34 -#define KEY_I 37 -#define KEY_K 39 -#define KEY_J 38 -#define KEY_L 40 -#define KEY_V 50 -#define KEY_UP 19 -#define KEY_DOWN 20 -#define KEY_LEFT 21 -#define KEY_RIGHT 22 -#define KEY_CTRL 113 -#define KEY_SHIFT 59 -#define KEY_ALT 57 -#define KEY_SPACE 62 -#define KEY_ADD 70 -#define KEY_SUB 69 +#include "../platformDefine.hpp" -#define WM_KEYDOWN 0 -#define WM_KEYUP 1 +#ifndef GKMS_WINDOWS + #define KEY_W 51 + #define KEY_S 47 + #define KEY_A 29 + #define KEY_D 32 + #define KEY_R 46 + #define KEY_Q 45 + #define KEY_E 33 + #define KEY_F 34 + #define KEY_I 37 + #define KEY_K 39 + #define KEY_J 38 + #define KEY_L 40 + #define KEY_V 50 + #define KEY_UP 19 + #define KEY_DOWN 20 + #define KEY_LEFT 21 + #define KEY_RIGHT 22 + #define KEY_CTRL 113 + #define KEY_SHIFT 59 + #define KEY_ALT 57 + #define KEY_SPACE 62 + #define KEY_ADD 70 + #define KEY_SUB 69 + + #define WM_KEYDOWN 0 + #define WM_KEYUP 1 +#else + #define KEY_W 'W' + #define KEY_S 'S' + #define KEY_A 'A' + #define KEY_D 'D' + #define KEY_R 'R' + #define KEY_Q 'Q' + #define KEY_E 'E' + #define KEY_F 'F' + #define KEY_I 'I' + #define KEY_K 'K' + #define KEY_J 'J' + #define KEY_L 'L' + #define KEY_V 'V' + #define KEY_UP 38 + #define KEY_DOWN 40 + #define KEY_LEFT 37 + #define KEY_RIGHT 39 + #define KEY_CTRL 17 + #define KEY_SHIFT 16 + #define KEY_ALT 18 + #define KEY_SPACE 32 + + #define KEY_ADD 187 + #define KEY_SUB 189 +#endif #define BTN_A 96 #define BTN_B 97 diff --git a/app/src/main/cpp/GakumasLocalify/Hook.cpp b/app/src/main/cpp/GakumasLocalify/Hook.cpp index 8140e9c..4d5073f 100644 --- a/app/src/main/cpp/GakumasLocalify/Hook.cpp +++ b/app/src/main/cpp/GakumasLocalify/Hook.cpp @@ -17,6 +17,7 @@ #ifdef GKMS_WINDOWS #include "../windowsPlatform.hpp" #include "cpprest/details/http_helpers.h" + #include "../resourceUpdate/resourceUpdate.hpp" #endif @@ -210,14 +211,25 @@ namespace GakumasLocal::HookMain { return Unity_set_position_Injected_Orig(self, data); } +#ifdef GKMS_WINDOWS + DEFINE_HOOK(void*, InternalSetOrientationAsync, (void* retstr, void* self, int type, void* c, void* tc, void* mtd)) { + switch (Config::gameOrientation) { + case 1: type = 0x2; break; // FixedPortrait + case 2: type = 0x3; break; // FixedLandscape + default: break; + } + return InternalSetOrientationAsync_Orig(retstr, self, type, c, tc, mtd); + } +#else DEFINE_HOOK(void*, InternalSetOrientationAsync, (void* self, int type, void* c, void* tc, void* mtd)) { switch (Config::gameOrientation) { - case 1: type = 0x2; break; // FixedPortrait - case 2: type = 0x3; break; // FixedLandscape - default: break; + case 1: type = 0x2; break; // FixedPortrait + case 2: type = 0x3; break; // FixedLandscape + default: break; } return InternalSetOrientationAsync_Orig(self, type, c, tc, mtd); } +#endif DEFINE_HOOK(void, EndCameraRendering, (void* ctx, void* camera, void* method)) { EndCameraRendering_Orig(ctx, camera, method); @@ -670,6 +682,17 @@ namespace GakumasLocal::HookMain { return ret; } +#ifdef GKMS_WINDOWS + DEFINE_HOOK(void, PictureBookLiveThumbnailView_SetDataAsync, (void* retstr, void* self, void* liveData, bool isReleased, bool isUnlocked, bool isNew, bool hasLiveSkin, void* ct, void* mtd)) { + // Log::DebugFmt("PictureBookLiveThumbnailView_SetDataAsync: isReleased: %d, isUnlocked: %d, isNew: %d, hasLiveSkin: %d", isReleased, isUnlocked, isNew, hasLiveSkin); + if (Config::dbgMode && Config::unlockAllLive) { + isUnlocked = true; + isReleased = true; + hasLiveSkin = true; + } + PictureBookLiveThumbnailView_SetDataAsync_Orig(retstr, self, liveData, isReleased, isUnlocked, isNew, hasLiveSkin, ct, mtd); + } +#else DEFINE_HOOK(void, PictureBookLiveThumbnailView_SetDataAsync, (void* self, void* liveData, bool isReleased, bool isUnlocked, bool isNew, bool hasLiveSkin, void* ct, void* mtd)) { // Log::DebugFmt("PictureBookLiveThumbnailView_SetDataAsync: isReleased: %d, isUnlocked: %d, isNew: %d, hasLiveSkin: %d", isReleased, isUnlocked, isNew, hasLiveSkin); if (Config::dbgMode && Config::unlockAllLive) { @@ -679,6 +702,7 @@ namespace GakumasLocal::HookMain { } PictureBookLiveThumbnailView_SetDataAsync_Orig(self, liveData, isReleased, isUnlocked, isNew, hasLiveSkin, ct, mtd); } +#endif enum class GetIdolIdType { MusicId, @@ -899,6 +923,12 @@ namespace GakumasLocal::HookMain { } // std::string lastMusicId; +#ifdef GKMS_WINDOWS + DEFINE_HOOK(void*, PictureBookLiveSelectScreenPresenter_OnSelectMusic, (void* retstr, void* self, void* itemModel, void* ct, void* mtd)) { + // if (!itemModel) return nullptr; + return PictureBookLiveSelectScreenPresenter_OnSelectMusic_Orig(retstr, self, itemModel, ct, mtd); + } +#else DEFINE_HOOK(void, PictureBookLiveSelectScreenPresenter_OnSelectMusic, (void* self, void* itemModel, void* ct, void* mtd)) { /* // 修改角色后,Live 结束返回时, itemModel 为 null Log::DebugFmt("OnSelectMusic itemModel at %p", itemModel); @@ -932,6 +962,7 @@ namespace GakumasLocal::HookMain { if (!itemModel) return; return PictureBookLiveSelectScreenPresenter_OnSelectMusic_Orig(self, itemModel, ct, mtd); } +#endif DEFINE_HOOK(bool, VLDOF_IsActive, (void* self)) { if (Config::enableFreeCamera) return false; @@ -1183,10 +1214,14 @@ namespace GakumasLocal::HookMain { } else { if (processedIOS) { - Log::DebugFmt("Restore API to Android"); + Log::DebugFmt("Restore API"); static auto ApiBase_klass = Il2cppUtils::get_class_from_instance(self); static auto platform_field = UnityResolve::Invoke("il2cpp_class_get_field_from_name", ApiBase_klass, "_platform"); +#ifdef GKMS_WINDOWS + Il2cppUtils::ClassSetFieldValue(self, platform_field, Il2cppString::New("dmm")); +#else Il2cppUtils::ClassSetFieldValue(self, platform_field, Il2cppString::New("Android")); +#endif processedIOS = nullptr; } } @@ -1382,6 +1417,7 @@ namespace GakumasLocal::HookMain { Log::ErrorFmt("GameAssembly.dll not loaded."); } UnityResolve::Init(il2cpp_module, UnityResolve::Mode::Il2Cpp, Config::lazyInit); + GakumasLocal::WinHooks::Keyboard::InstallWndProcHook(); #else UnityResolve::Init(xdl_open(hookInstaller->m_il2cppLibraryPath.c_str(), RTLD_NOW), UnityResolve::Mode::Il2Cpp, Config::lazyInit); @@ -1493,9 +1529,11 @@ namespace GakumasLocal::HookMain { ADD_HOOK(UserCostumeCollection_FindBy, UserCostumeCollection_FindBy_mtd->methodPointer); } + // 双端 ADD_HOOK(PictureBookLiveThumbnailView_SetDataAsync, - Il2cppUtils::GetMethodPointer("Assembly-CSharp.dll", "Campus.OutGame.PictureBook", - "PictureBookLiveThumbnailView", "SetDataAsync", {"*", "*", "*", "*", "*"})); + Il2cppUtils::GetMethodPointer("Assembly-CSharp.dll", "Campus.OutGame.PictureBook", + "PictureBookLiveThumbnailView", "SetDataAsync", { "*", "*", "*", "*", "*" })); + ADD_HOOK(PictureBookWindowPresenter_GetLiveMusics, Il2cppUtils::GetMethodPointer("Assembly-CSharp.dll", "Campus.OutGame", "PictureBookWindowPresenter", "GetLiveMusics")); @@ -1506,9 +1544,11 @@ namespace GakumasLocal::HookMain { ADD_HOOK(PictureBookLiveSelectScreenPresenter_MoveLiveScene, Il2cppUtils::GetMethodPointer("Assembly-CSharp.dll", "Campus.OutGame", "PictureBookLiveSelectScreenPresenter", "MoveLiveScene")); + + // 双端 ADD_HOOK(PictureBookLiveSelectScreenPresenter_OnSelectMusic, - Il2cppUtils::GetMethodPointer("Assembly-CSharp.dll", "Campus.OutGame", - "PictureBookLiveSelectScreenPresenter", "OnSelectMusicAsync")); + Il2cppUtils::GetMethodPointer("Assembly-CSharp.dll", "Campus.OutGame", + "PictureBookLiveSelectScreenPresenter", "OnSelectMusicAsync")); ADD_HOOK(VLDOF_IsActive, Il2cppUtils::GetMethodPointer("Unity.RenderPipelines.Universal.Runtime.dll", "VL.Rendering", @@ -1575,9 +1615,10 @@ namespace GakumasLocal::HookMain { ADD_HOOK(Internal_Log, Il2cppUtils::il2cpp_resolve_icall( "UnityEngine.DebugLogHandler::Internal_Log(UnityEngine.LogType,UnityEngine.LogOption,System.String,UnityEngine.Object)")); + // 双端 ADD_HOOK(InternalSetOrientationAsync, - Il2cppUtils::GetMethodPointer("campus-submodule.Runtime.dll", "Campus.Common", - "ScreenOrientationControllerBase", "InternalSetOrientationAsync")); + Il2cppUtils::GetMethodPointer("campus-submodule.Runtime.dll", "Campus.Common", + "ScreenOrientationControllerBase", "InternalSetOrientationAsync")); ADD_HOOK(Unity_set_position_Injected, Il2cppUtils::il2cpp_resolve_icall( "UnityEngine.Transform::set_position_Injected(UnityEngine.Vector3&)")); @@ -1595,6 +1636,7 @@ namespace GakumasLocal::HookMain { #ifdef GKMS_WINDOWS g_extra_assetbundle_paths.push_back((gakumasLocalPath / "local-files/gakumasassets").string()); LoadExtraAssetBundle(); + GkmsResourceUpdate::CheckUpdateFromAPI(false); #endif // GKMS_WINDOWS } diff --git a/app/src/main/cpp/GakumasLocalify/MasterLocal.cpp b/app/src/main/cpp/GakumasLocalify/MasterLocal.cpp index b1636dc..635bc39 100644 --- a/app/src/main/cpp/GakumasLocalify/MasterLocal.cpp +++ b/app/src/main/cpp/GakumasLocalify/MasterLocal.cpp @@ -694,6 +694,7 @@ namespace GakumasLocal::MasterLocal { } break; case JsonValueType::JVT_String: { auto readValue = fc.ReadStringField(mainPk); + if (!readValue) return; baseDataKey.append(readValue->ToString()); baseDataKey.push_back('|'); } break; diff --git a/app/src/main/cpp/GakumasLocalify/camera/camera.cpp b/app/src/main/cpp/GakumasLocalify/camera/camera.cpp index 406cc3b..ebd8ba7 100644 --- a/app/src/main/cpp/GakumasLocalify/camera/camera.cpp +++ b/app/src/main/cpp/GakumasLocalify/camera/camera.cpp @@ -3,7 +3,6 @@ #include #include "../Misc.hpp" #include "../BaseDefine.h" - #include "../../platformDefine.hpp" #ifdef GKMS_WINDOWS diff --git a/app/src/main/cpp/GakumasLocalify/config/Config.cpp b/app/src/main/cpp/GakumasLocalify/config/Config.cpp index 3fbc583..f8dd59a 100644 --- a/app/src/main/cpp/GakumasLocalify/config/Config.cpp +++ b/app/src/main/cpp/GakumasLocalify/config/Config.cpp @@ -2,6 +2,7 @@ #include "nlohmann/json.hpp" #include "../Log.h" #include +#include namespace GakumasLocal::Config { bool isConfigInit = false; @@ -107,4 +108,66 @@ namespace GakumasLocal::Config { } isConfigInit = true; } + + void SaveConfig(const std::string& configPath) { + try { + nlohmann::json config; + + #define SetConfigItem(name) config[#name] = name + + SetConfigItem(dbgMode); + SetConfigItem(enabled); + SetConfigItem(lazyInit); + SetConfigItem(replaceFont); + SetConfigItem(forceExportResource); + SetConfigItem(gameOrientation); + SetConfigItem(textTest); + SetConfigItem(useMasterTrans); + SetConfigItem(dumpText); + SetConfigItem(targetFrameRate); + SetConfigItem(enableFreeCamera); + SetConfigItem(unlockAllLive); + SetConfigItem(unlockAllLiveCostume); + SetConfigItem(enableLiveCustomeDress); + SetConfigItem(liveCustomeHeadId); + SetConfigItem(liveCustomeCostumeId); + SetConfigItem(loginAsIOS); + SetConfigItem(useCustomeGraphicSettings); + SetConfigItem(renderScale); + SetConfigItem(qualitySettingsLevel); + SetConfigItem(volumeIndex); + SetConfigItem(maxBufferPixel); + SetConfigItem(reflectionQualityLevel); + SetConfigItem(lodQualityLevel); + SetConfigItem(enableBreastParam); + SetConfigItem(bDamping); + SetConfigItem(bStiffness); + SetConfigItem(bSpring); + SetConfigItem(bPendulum); + SetConfigItem(bPendulumRange); + SetConfigItem(bAverage); + SetConfigItem(bRootWeight); + SetConfigItem(bUseArmCorrection); + SetConfigItem(bUseScale); + SetConfigItem(bScale); + SetConfigItem(bUseLimit); + SetConfigItem(bLimitXx); + SetConfigItem(bLimitXy); + SetConfigItem(bLimitYx); + SetConfigItem(bLimitYy); + SetConfigItem(bLimitZx); + SetConfigItem(bLimitZy); + + std::ofstream out(configPath); + if (!out) { + Log::ErrorFmt("SaveConfig error: Cannot open file: %s", configPath.c_str()); + return; + } + out << config.dump(4); + Log::Info("SaveConfig success"); + } + catch (std::exception& e) { + Log::ErrorFmt("SaveConfig error: %s", e.what()); + } + } } diff --git a/app/src/main/cpp/GakumasLocalify/config/Config.hpp b/app/src/main/cpp/GakumasLocalify/config/Config.hpp index f052454..49f2a67 100644 --- a/app/src/main/cpp/GakumasLocalify/config/Config.hpp +++ b/app/src/main/cpp/GakumasLocalify/config/Config.hpp @@ -52,4 +52,5 @@ namespace GakumasLocal::Config { extern float bLimitZy; void LoadConfig(const std::string& configStr); + void SaveConfig(const std::string& configPath); } diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index e0190e6..1f3a5e0 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -1,4 +1,32 @@ + + ホームに戻る + 前に戻る + その他のオプション + 完了 + すべて表示 + アプリの選択 + OFF + ON + Alt+ + Ctrl+ + Delete + Enter + Function+ + Meta+ + Shift+ + Space + Sym+ + Menu+ + 検索… + 検索キーワードを削除 + 検索キーワード + 検索 + 検索キーワードを送信 + 音声検索 + 共有 + %sと共有 + 折りたたむ 情報 このプラグインは完全に無料で提供されます。このプラグインで料金を支払ってしまった場合は、販売者に報告をしてください。 プラグインの QQ グループ: 975854705 @@ -8,8 +36,10 @@ 外部プラグインは関連する TOS に違反するため、自己責任でご使用ください。 警告 高度な設定 - APIアドレス (GitHub の最新リリース API) + androidx.startup + API アドレス (GitHub 最新リリース API) Gakumas Localify + com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior 平均 X 軸.x X 軸.y @@ -18,15 +48,28 @@ Z 軸.x Z 軸.y 基本設定 + com.google.android.material.bottomsheet.BottomSheetBehavior + ボトムシートを閉じる + ボトムシートを開く + 下半分を展開 + ハンドルをダブルタップしてドラッグ + ドラッグハンドル 胸のパラメーター 胸の大きさ + 応答 + 動画 + 拒否 + 通話終了 + 着信 + 通話中 + 着信をスクリーニング中 カメラ設定 キャンセル %1$d の %2$d に入力された文字 文字制限が %2$d 文字中、 %1$d 文字を超えています %1$d/%2$d - 内蔵アセットのアップデートを確認 - リソースアップデートを API から確認 + 内蔵アセットの更新を確認 + リソースの更新を API から確認 確認 テキストを消去 ナビゲーションメニューを閉じる @@ -37,7 +80,7 @@ https://api.github.com/repos/NatsumeLS/Gakumas-Translation-Data-EN/releases/latest 入力が無効です ポップアップウィンドウ - キャッシュファイルをアップデート後に削除 + キャッシュファイルを更新後に削除 プラグインリソースを削除 ダウンロード ダウンロードされたバージョン @@ -49,17 +92,19 @@ エラー テキストをエクスポート ドロップダウンメニューを表示 - リソースのアップデートを強制する - iOSとしてログイン + com.google.android.material.transformation.FabTransformationScrimBehavior + com.google.android.material.transformation.FabTransformationSheetBehavior + リソースの更新を強制する Gakumas Localify ゲームパッチ グラフィック設定 + com.google.android.material.behavior.HideBottomViewOnScrollBehavior ホーム 一部の機能が使用できません ダイアログアイコン 実行中 - 部分的にチェック済み + 部分的に確認済み インストール インストール中 無効なファイル @@ -70,9 +115,168 @@ ライブのキャラクターをカスタム ライブのカスタムヘッド ID (例: costume_head_hski-cstm-0002) ライブ衣装のカスタム ID (例: hski-cstm-0002) + iOS としてログイン + %1$s%2$s + sans-serif-medium + sans-serif + sans-serif-medium + sans-serif + path(M 0,0 C 0.05, 0, 0.133333, 0.06, 0.166666, 0.4 C 0.208333, 0.82, 0.25, 1, 1, 1) + cubic-bezier(0.3, 0, 0.8, 0.2) + cubic-bezier(0.1, 0.7, 0.1, 1) + M 0,0 C 0.05, 0, 0.133333, 0.06, 0.166666, 0.4 C 0.208333, 0.82, 0.25, 1, 1, 1 + cubic-bezier(0.4, 0, 0.2, 1) + cubic-bezier(0.4, 0, 1, 1) + cubic-bezier(0, 0, 0.2, 1) + cubic-bezier(0, 0, 1, 1) + cubic-bezier(0.2, 0, 0, 1) + cubic-bezier(0.3, 0, 1, 1) + cubic-bezier(0, 0, 0, 1) + ボトムシートを折りたたみます + ボトムシートを閉じます + ドラッグハンドル + ボトムシートを開きます + ボトムシート + 入力された日付 + 入力された日付: %1$s + 想定パターンと一致しない日付: %1$s + 許可されない日付: %1$s + 想定される年の範囲(%1$s~%2$s)から日付が外れています + 日付 + なし + 日付の選択 + 選択した日付 + 現在の選択: %1$s + 年に移動 %1$s + なし + これより前の年を表示するにはスクロールしてください + これより後の年を表示するにはスクロールしてください + カレンダー入力モードに切り替え + スワイプして年を選択するか、タップして日付の選択に戻ります + テキスト入力モードに切り替え + 翌月に変更 + 前月に変更 + 年の選択に切り替え + 日付の選択 + 今日 + 年の選択ツールの表示 + 入力された期間は無効です + 日付の入力 + 範囲内 + 終了日 + 翌月を表示するにはスクロールしてください + 前月を表示するにはスクロールしてください + 開始日 + 日付の選択 + ダイアログ + 閉じています + 開いています + 検索 + 閉じる + 検索候補は次のとおりです + AM + 時間 + %1$d 時間 + 時刻を選択 + "%1$d 時" + (時間単位) + + 分を選択 + %1$d 分 + (分単位) + 午前または午後を選択 + PM + ツールチップを表示 + ツールチップ + : + 午前または午後を選択 + %1$s 時間 + 時刻を選択してください + "%1$s時" + 分を選択 + %1$s分 + cubic-bezier(0.4, 0.0, 1.0, 1.0) + cubic-bezier(0.0, 0.0, 0.2, 1.0) + path(M 0,0 C 0.05, 0, 0.133333, 0.06, 0.166666, 0.4 C 0.208333, 0.82, 0.25, 1, 1, 1) + cubic-bezier(0.0, 0.0, 1.0, 1.0) + cubic-bezier(0.4, 0.0, 0.2, 1.0) + Range end + Range start + Value + AM + 時刻を時計で入力するモードに切り替えます。 + 時間 + + PM + 時間を選択 + 時刻をテキストで入力するモードに切り替えます。 ウルトラ + 新しい通知 + M14,18.2 11.4,15.6 10,17 14,21 22,13 20.6,11.6z + icon + M13.4,15 11,15 11,17 13.4,17 21,17 21,15z + icon path + M23,7H9C7.9,7,7,7.9,7,9v14c0,1.1,0.9,2,2,2h14c1.1,0,2-0.9,2-2V9C25,7.9,24.1,7,23,7z + button + button path + M23,7H9C7.9,7,7,7.9,7,9v14c0,1.1,0.9,2,2,2h14c1.1,0,2-0.9,2-2V9C25,7.9,24.1,7,23,7z M23,23H9V9h14V23z + オン + 一部オン + オフ + %1$s を削除します + %1$d 件以上の新しい通知 + %1$d%2$s + 翌月に変更 + 前月に変更 + 開始日の選択: %1$s – 終了日の選択: %2$s + 現在の選択: %1$s + なし + キャンセル + OK + %1$s + 日付を選択してください + 選択した日付 + %1$s + 終了日 %1$s + 形式が無効です。 + 例: %1$s + 使用: %1$s + 範囲が無効です。 + 現在の年(%1$d)に移動 + %1$d 年に移動 + 範囲外: %1$s + 開始日~%1$s + %1$s~終了日 + %1$s~%2$s + 期間を選択してください + 開始日~終了日 + 保存 + 開始日 %1$s + 日付 + 終了日 + 開始日 + d + m + y + 今日(%1$s) + カレンダー入力モードに切り替え + タップするとカレンダー表示に切り替わります + テキスト入力モードに切り替え + タップすると年表示に切り替わります + circle_group + M4,16 A12,12 0 0,1 16,4 H16 A12,12 0 0,1 16,28 H16 A12,12 0 0,1 4,16 + M0,16 A11,11 0 0,1 11,5 H21 A11,11 0 0,1 21,27 H11 A11,11 0 0,1 0,16 + circle + M2,16 A14,14 0 0,1 16,2 H16 A14,14 0 0,1 16,30 H16 A14,14 0 0,1 2,16 + M8,16 A8,8 0 0,1 16,8 H16 A8,8 0 0,1 16,24 H16 A8,8 0 0,1 8,16 + M1,16 A15,15 0 0,1 16,1 H36 A15,15 0 0,1 36,31 H16 A15,15 0 0,1 1,16 + M0,16 A16,16 0 0,1 16,0 H36 A16,16 0 0,1 36,32 H16 A16,16 0 0,1 0,16 + キャンセル + OK + ナビゲーションメニュー + 未選択 OFF OK ON @@ -84,12 +288,21 @@ デバッグを可能にする パッチが完了しました。インストールをしますか? 統合 - "モジュールを埋め込んだ状態なアプリでパッチを当てます。\nパッチを適用したアプリは LSPatch Manager なしで実行できますが、動的に管理はできません。\n統合パッチが適用されたアプリは、LSPatch Manager がインストールされていないデバイスでも使用が可能です。" + "モジュールを埋め込んだ状態なアプリでパッチを当てます。 +パッチを適用したアプリは LSPatch Manager なしで実行できますが、動的に管理はできません。 +統合パッチが適用されたアプリは、LSPatch Manager がインストールされていないデバイスでも使用が可能です。" ローカル - "モジュールを埋め込まずにアプリにパッチを当てます。\nXposed スコープは再パッチなしで動的に変更が可能です。\nローカルでのパッチを当てたアプリは、ローカルのデバイスでのみ実行可能です。" + "モジュールを埋め込まずにアプリにパッチを当てます。 +Xposed スコープは再パッチなしで動的に変更が可能です。 +ローカルでのパッチを当てたアプリは、ローカルのデバイスでのみ実行可能です。" パッチモード アンインストールをしてもよろしいですか? - "署名が異なるため、パッチをインストールする前に元となるアプリをアンインストールする必要があります。\n個人データのバックアップを設定済みであることを確認してください。" + "署名が異なるため、パッチをインストールする前に元となるアプリをアンインストールする必要があります。 +個人データのバックアップを設定済みであることを確認してください。" + M12,4.5C7,4.5 2.73,7.61 1,12c1.73,4.39 6,7.5 11,7.5s9.27,-3.11 11,-7.5c-1.73,-4.39 -6,-7.5 -11,-7.5zM12,17c-2.76,0 -5,-2.24 -5,-5s2.24,-5 5,-5 5,2.24 5,5 -2.24,5 -5,5zM12,9c-1.66,0 -3,1.34 -3,3s1.34,3 3,3 3,-1.34 3,-3 -1.34,-3 -3,-3z + M2,4.27 L19.73,22 L22.27,19.46 L4.54,1.73 L4.54,1 L23,1 L23,23 L1,23 L1,4.27 Z + M2,4.27 L2,4.27 L4.54,1.73 L4.54,1.73 L4.54,1 L23,1 L23,23 L1,23 L1,4.27 Z + M3.27,4.27 L19.74,20.74 揺れ 揺れの範囲 プラグインのコード @@ -101,26 +314,37 @@ パッチ済みの APK を予約する リソース設定 リソース URL - ルートウェイト + ルートウエイト + 検索 + com.google.android.material.search.SearchBar$ScrollingViewBehavior + テキストを消去 + 戻る 選択済み 最大 FPS (0 はオリジナルの設定を使用します) Shizuku サービスが有効です Shizuku サービスが接続されていません + サイドシート + com.google.android.material.sidesheet.SideSheetBehavior 跳ね ゲーム開始 / ホットリロードの設定 + 999+ 剛性 - "対応ファイル:\n単一または複数選択: apk\n単一選択: apks、xapk、zip" + "対応ファイル: +単一または複数選択: apk +単一選択: apks、xapk、zip" 切り替え タブ %1$d パーセント。 テストモード - ライブ テキストフックテストモード - MasterDB をローカライズする + ツールチップ + ツールチップを表示 翻訳のリポジトリ - 翻訳リソースをアップデート + 翻訳リソースを更新 すべてのライブを開放 すべてのライブ衣装を開放 カスタムグラフィック設定を使用する + MasterDB のローカライズを有効化 リモート ZIP リソースを使用する Arm コレクションを使用する リミットレンジの倍率 (0 は無制限) @@ -128,4 +352,4 @@ 胸の大きさを使用する 最高 警告 - \ No newline at end of file +