<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>ゆちとわんのスクリプト</title>
    <style>
        /* タブのスタイル */
        .tab-container {
            width: 300px;
           background: black;
          padding: 20px;
            max-width: 800px;
            margin: 20px auto;
            background: rgba(0, 0, 0, 0.6);
            border-radius: 10px;
           
        }
        .tab-buttons {
            display: flex;
            color: white;
            border-bottom: 2px solid #ddd;
        }
        .tab-button {
            padding: 10px 20px;
            cursor: pointer;
            color: white;
            border: none;
            background: none;
            outline: none;
            font-size: 16px;
        }
        .tab-button.active {
            border-bottom: 2px solid #007bff;
            font-weight: bold;
        }
        .tab-content {
            display: none;
            padding: 10px;
        }
        .tab-content.active {
            display: block;
        }
.menu-buttons {
    display: flex;
    flex-direction: column;
    gap: 20px;
    margin-top: 20px;
    max-height: 200px; /* メニューをスクロール可能に */
    overflow-y: auto;
}

.menu-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
}

#characterList {
    max-height: 200px;
    overflow-y: auto;
    margin-top: 10px;
}

.character-button {
    margin: 10px 0;
    padding: 10px;
    border: 1px solid #ccc;
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.2);
    color: #fff;
    text-align: center;
    cursor: pointer;
    display: none;
}

.hidden {
    display: none;
}

    </style>
</head>
<body>
    <!-- メインメニュー -->
    <div class="menu" id="mainMenu">

    <div class="tab-container">
        <!-- タブのボタン -->
        <div class="tab-buttons">
            <button class="tab-button active" onclick="openTab(event, 'tab1')">Main</button>
            <button class="tab-button" onclick="openTab(event, 'tab2')">Sab</button>
            <button class="tab-button" onclick="openTab(event, 'tab3')">Others</button>
        </div>


        <div id="tab1" class="tab-content active">
        <div class="menu-buttons">

            <div class="menu-item">
                <span style="color: white;">猫缶</span>
                <button class="button" onclick="changeValue('猫缶', nekokan)">変更</button>
            </div>
            <div class="menu-item">
                <span style="color: white;">XP</span>
                <button class="button" onclick="changeValue('XP', xp)">変更</button>
            </div>
            <div class="menu-item">
                <span style="color: white;">NP</span>
                <button class="button" onclick="changeValue('NP', np)">変更</button>
            </div>
            <div class="menu-item">
                <span style="color: white;">ユーザーランク</span>
                <button class="button" onclick="changeValue('ユーザーランク', userRank)">変更</button>
            </div>
            <div class="menu-item">
                <span style="color: white;">敵城</span>
                <button class="button" onclick="changeEnemyBase()">変更</button>
            </div>
            <div class="menu-item">
                <span style="color: white;">自城</span>
                <button class="button" onclick="changeValue('自城', myBase)">変更</button>
            </div>
            <div class="menu-item">
                <span style="color: white;">銀チケ</span>
                <button class="button" onclick="changeValue('銀チケ', gintike)">変更</button>
            </div>
            <div class="menu-item">
                <span style="color: white;">金チケ</span>
                <button class="button" onclick="changeValue('金チケ', kintike)">変更</button>
            </div>
            <div class="menu-item">
                <span style="color: white;">プラチケ</span>
                <button class="button" onclick="changeValue('プラチケ', puratike)">変更</button>
            </div>
            <div class="menu-item">
                <span style="color: white;">レジェチケ</span>
                <button class="button" onclick="changeValue('レジェチケ', rejetike)">変更</button>
            </div>
            <div class="menu-item">
                <span style="color: white;">DLチケット</span>
                <button class="button" onclick="changeValue('DLチケット', dl)">変更</button>
            </div>
           </div>
          </div>

        <div id="tab2" class="tab-content">
        <div class="menu-buttons">

            <div class="menu-item">
                <span style="color: white;">リーダーシップ</span>
                <button class="button" onclick="changeValue('リーダーシップ', ship)">変更</button>
            </div>
            <div class="menu-item">
                <span style="color: white;">キャッツアイ</span>
                <button class="button" onclick="changeCatsEye()">実行</button>
            </div>
            <div class="menu-item"> 
                <span style="color: white;">マタタビ</span>
                <button class="button" onclick="matt()">変更</button>
            </div>
            <div class="menu-item">
                <span style="color: white;">ネコビタン</span>
                <button class="button" onclick="nekobitan()">実行</button>
            </div>
            <div class="menu-item">
                <span style="color: white;">城素材</span>
                <button class="button" onclick="changeCastleMaterial()">変更</button>
            </div>
            <div class="menu-item">
                <span style="color: white;">バトルアイテム変更</span>
                <button class="button" onclick="itemBatchChange()">変更</button>
            </div>
            <div class="menu-item">
                <span style="color: white;">統率力とか変更</span>
                <button class="button" onclick="changeLeadership()">変更</button>
            </div>
           </div>
          </div>

        <div id="tab3" class="tab-content">
        <div class="menu-buttons">

            <div class="menu-item">
                <span style="color: white;">全キャラ開放</span>
                <button class="button" onclick="unlockAllCharacters()">開放</button>
            </div>
            <div class="menu-item">
                <span style="color: white;">全ステージ開放</span>
                <button class="button" onclick="unlockStages()">開放</button>
            </div>
            <div class="menu-item">
                <span style="color: white;">レベル一括上げ</span>
                <button class="button" onclick="levelUpAllCharacters()">実行</button>
            </div>
            <div class="menu-item">
                <span style="color: white;">第3形態</span>
                <button class="button" onclick="changeCharacterForms()">変更</button>
            </div>
            <div class="menu-item">
                <span style="color: white;">ガラス猫改造</span>
                <button class="button" onclick="modifyGlassCat()">改造</button>
            </div>
            <div class="menu-item">
                <span style="color: white;">指定キャラ解放＆削除</span>
                <button class="button" onclick="showCharacterMenu()">開く</button>
            </div>
            <div class="menu-item">
                <span style="color: white;">ガチャスキップ</span>
                <button class="button" onclick="startGachaSkip()">実行</button>
            </div>
            <div class="menu-item">
                <span style="color: white;">進化スキップ</span>
                <button class="button" onclick="startSinkaSkip()">実行</button>
            </div>
            <div class="menu-item">
                <span style="color: white;">再生産時間0</span>
                <button class="button" onclick="saiseisan()">実行</button>
            </div>
            <div class="menu-item">
                <span style="color: white;">クリア回数</span>
                <button class="button" onclick="changeClearCount()">変更</button>
            </div>
            <div class="menu-item">
                <span style="color: white;">お宝</span>
                <button class="button" onclick="changeTreasures()">変更</button>
            </div>
            <div class="menu-item">
                <span style="color: white;">広告削除</span>
                <button class="button" onclick="koukoku()">実行</button>
            </div>
            <div class="menu-item">
                <span style="color: white;">プレイ時間</span>
                <button class="button" onclick="multiplyAndChangeValue('プレイ時間', play)">変更</button>
            </div>
            <div class="menu-item">
                <span style="color: white;">ゴールド会員回数</span>
                <button class="button" onclick="changeValue('ゴールド会員回数', kaiin)">変更</button>
            </div>
        </div>
    </div>

    <!-- キャラ解放・削除画面 -->
    <div class="contents hidden" id="characterMenu">
        <header>
            <h3>キャラ解放・削除スクリプト</h3>
            <p class="info">名前の通りに検索してください。カタカナがひらがなになっているなどはヒットしません。名前の一部だけでもヒットはします。エラーキャラはエラーキャラと検索すれば一覧が出ます。</p>
        </header>
        <footer>
            <label for="searchInput">検索：</label>
            <input type="search" id="searchInput" placeholder="ここに入力">
        </footer>
        <div id="characterList"></div>
        <br>
        <button class="button" onclick="goBack()">戻る</button>
    </div>

    <script>
h5gg.searchNumber('32400','I32','0x100000000','0x110000000');  
base = Number(h5gg.getResults('2')[1].address);
        let nekokan = base - 0x130; // ねこかん
        let xp = base + 0x40; // XP
        let np = base + 0x48; // NP
        let userRank = base + 0x1c56520; // ユーザーランク
        let enemyBase = base + 0x7cf30; // 敵城
        let myBase = base + 0x714b8; // 自城
        let gintike = base + 0x2df4bc; // 銀チケ
        let kintike = base + 0x2df4c4; // 金チケ
        let puratike = base - 0x8e68; // プラチケ
        let rejetike = base - 0x8e60; // レジェチケ
        let dl = base - 0x8e50; // dlチケット
        let itemBatchOffset = base + 0x3dbd8; // バトルアイテム
        let characterUnlockOffset = base + 0x3a9f0; // ネコのオフセット
        let levelUpOffset = base + 0x3b640; // 猫レベル
        let gachaSkipOffset = base + 0x2e0d38; // ガチャスキップ
        let startSinkaoffset = base + 0x3b8540; // 進化スキップ
        let saiseisanOffset = base + 0x2de038; // 再生産時間
        let stageUnlockOffset = base + 0x654; // 全ステ解放
const catsEyeOffset = base + 0x3d782c;  // ここがキャッツアイのオフセット
       let castleMaterialOffset = base + 0x3d7874; // 城素材の初期オフセット
        let koukokuAddr = base + 0x3dd2c8; // 広告削除
        let ship = base - 0x95b6; // リーダーシップ
        let baseOffset = base + 0x3db24; // 統率力とかのオフセット
        let clearCountOffset = base + 0x680; // クリア回数の初期オフセット
        let nekobitanAddr = base + 0x3d785c; // ネコビタン
        let treasureOffset = base + 0xea0; // お宝のオフセット
        let glassCatOffset = base + 0x139f88; // ガラスネコの値段
        let charOffset = base + 0x3ced8 // 3形態
        const offsetStart = 0x3a9f0; // 普通にネコ解放の数値
        let play = base + 0x35ceec // プレイ時間
        let kaiin = base - 0x950c // ゴールド会員

        let attemptsLeft = 3;

        function openTab(event, tabId) {
            // すべてのタブの内容を非表示にする
            document.querySelectorAll('.tab-content').forEach(tab => {
                tab.classList.remove('active');
            });

            // すべてのタブボタンの "active" クラスを削除
            document.querySelectorAll('.tab-button').forEach(button => {
                button.classList.remove('active');
            });

            // 選択されたタブの内容を表示
            document.getElementById(tabId).classList.add('active');

            // クリックされたボタンをアクティブにする
            event.currentTarget.classList.add('active');
        }


        // キャッツアイの変更処理
        function changeCatsEye() {
            // 1つ飛ばしで6個の値を999に設定
            for (let i = 0; i < 6; i++) {
                h5gg.setValue(catsEyeOffset + (i * 8), 999, "I32");
            }

            // その次の6個の値を0に設定
            for (let i = 0; i < 6; i++) {
                h5gg.setValue(catsEyeOffset + (i * 8) + 4, 0, "I32");
            }

            alert("キャッツアイの数をマックスにしました");
        }

        function changeEnemyBase() {
            let input = prompt("敵城の数値を入力または固定と入力してください");

            if (input === "固定") {
                // 固定入力時の動作
                setInterval(() => {
                    h5gg.setValue(enemyBase, 0, "I32");  // 0にリセット
                    console.log("敵城がリセットされました");
                }, 500);  // 0.5秒おきにリセット
            } else {
                let value = Number(input);
                if (!isNaN(value)) {
                    h5gg.setValue(enemyBase, value, "I32");
                    alert("敵城を変更しました");
                } else {
                    alert("有効な数値を入力してください");
                }
            }
        }

        function changeValue(name, addr) {
            let value = Number(prompt(name + "の数値を入力してください"));
            if (!isNaN(value)) {
                h5gg.setValue(addr, value, "I32");
                h5gg.setValue(addr + 4, 0, "I32");  // 隣接アドレスを0にする
                alert(name + "を変更しました");
            } else {
                alert("有効な数値を入力してください");
            }
        }

        // ガチャスキップを0.1秒ごとに実行する
        function startGachaSkip() {
            let interval = setInterval(function() {
                let currentValue = h5gg.getValue(gachaSkipOffset, "I32");
                h5gg.setValue(gachaSkipOffset, 0, "I32"); // ガチャスキップのオフセットの数値を0にする
                console.log("ガチャスキップを実行しました");

                // 任意の回数後に処理を停止する場合
                let count = 10; // 10回繰り返す
                if (--count <= 0) {
                    clearInterval(interval); // インターバルを停止
                    alert("ガチャスキップ処理が完了しました");
                }
            }, 100); // 0.1秒おきに実行
        }

        // 進化スキップを0.1秒ごとに実行する
        function startSinkaSkip() {
            let interval = setInterval(function() {
                let currentValue = h5gg.getValue(startSinkaoffset, "I32");
                h5gg.setValue(startSinkaoffset, 0, "I32"); // ガチャスキップのオフセットの数値を0にする
                console.log("進化スキップを実行しました");

                // 任意の回数後に処理を停止する場合
                let count = 10; // 10回繰り返す
                if (--count <= 0) {
                    clearInterval(interval); // インターバルを停止
                    alert("進化スキップ処理が完了しました");
                }
            }, 100); // 0.1秒おきに実行
        }

function nekobitan() {
    // オフセットを含めて一個飛ばしで値を設定
    h5gg.setValue(nekobitanAddr, 999, "I32");        // 1つ目を999に
    h5gg.setValue(nekobitanAddr + 8, 999, "I32");    // 2つ目を999に
    h5gg.setValue(nekobitanAddr + 16, 999, "I32");   // 3つ目を999に

    // 次の一個飛ばした3つを0に設定
    h5gg.setValue(nekobitanAddr + 4, 0, "I32");     // 4つ目を0に
    h5gg.setValue(nekobitanAddr + 12, 0, "I32");     // 5つ目を0に
    h5gg.setValue(nekobitanAddr + 20, 0, "I32");     // 6つ目を0に

    alert("ネコビタンの数をマックスにしました");
}

        function matt() {
            var value = prompt("数値を入力してください");

            // 入力値が空の場合、アラートを表示
            if (!value) {
                alert("数値が入力されていません！");
                return;
            }

            // h5ggをクリア
            window.parent.h5gg.clearResults();

            // 検索条件を設定
            window.parent.h5gg.searchNumber('28', 'I32', '0x280000000', '0x360000000');
            window.parent.h5gg.searchNearby('27', 'I32', '0x8');
            window.parent.h5gg.searchNearby('26', 'I32', '0x16');
            window.parent.h5gg.searchNearby('25', 'I32', '0x24');
            window.parent.h5gg.searchNumber('28', 'I32', '0x280000000', '0x360000000');

            // 結果取得
            var count = window.parent.h5gg.getResultsCount();
            var results = window.parent.h5gg.getResults(count);
            var updatedCount = 0;

            for (var i = 0; i < count; i++) {
                var addr1 = results[i].address;
                var shuzhi1 = window.parent.h5gg.getValue((Number(addr1) - 8), "I32");
                var shuzhi2 = window.parent.h5gg.getValue((Number(addr1) - 16), "I32");
                var shuzhi3 = window.parent.h5gg.getValue((Number(addr1) - 24), "I32");
                var shuzhi4 = window.parent.h5gg.getValue((Number(addr1) - 32), "I32");
                
                var dizhi1 = (Number(addr1) - 220);
                if (shuzhi1 == 27 && shuzhi2 == 26 && shuzhi3 == 25 && shuzhi4 == 24) { 
                    for (let j = 0; j < 30; j++) {
                        window.parent.h5gg.setValue(dizhi1 + (j * 8), value, "I32");
                        updatedCount++;
                    }
                }
            }

            // 結果を表示
            if (updatedCount > 0) {
                alert("完了: " + updatedCount + "個のアドレスを変更しました");
            } else {
                alert("条件に一致するアドレスは見つかりませんでした");
            }

            // 検索結果をクリア
            window.parent.h5gg.clearResults();
        }

        function saiseisan() {
            let interval = setInterval(function() {
                let currentValue = h5gg.getValue(saiseisanOffset, "I32");
                h5gg.setValue(saiseisanOffset, 1, "I32"); 
                console.log("再生産時間を0にしました");

                // 任意の回数後に処理を停止する場合
                let count = 10; // 10回繰り返す
                if (--count <= 0) {
                    clearInterval(interval); // インターバルを停止
                    alert("再生産時間を0にしました");
                }
            }, 100); // 0.1秒おきに実行
        }

function unlockAllCharacters() {
    // 最初のオフセットの値を取得
    let firstValue = h5gg.getValue(characterUnlockOffset, "I32"); // 基準値を取得
    if (isNaN(firstValue)) {
        alert("オフセットの取得に失敗しました");
        return;
    }

    // 780個の数値をその取得した値に設定
    for (let i = 0; i < 787; i++) {
        h5gg.setValue(characterUnlockOffset + (i * 4), firstValue, "I32"); // 基準値で設定
    }

    alert("全キャラを解放しました");
}

        // 全ステージ開放
        function unlockStages() {
            let startOffset = stageUnlockOffset;
            for (let i = 0; i < 10; i++) {
                h5gg.setValue(startOffset + (i * 4), 0, "I32");
            }
            h5gg.setValue(startOffset + 40, 48, "I32"); // 48に設定
            alert("全ステージを解放しました");
        }

        // レベル一括上げ
        function levelUpAllCharacters() {
            let startOffset = levelUpOffset;
            for (let i = 0; i < 1574; i++) {
                h5gg.setValue(startOffset + (i * 4), 999, "I32");
            }
            alert("全キャラのレベルを一括で999にしました");
        }

        function changeCharacterForms() {
            for (let i = 0; i < 787; i++) {
                h5gg.setValue(charOffset + (i * 4), 2, "I32");
            }
            alert("キャラを第3形態に変更しました");
        }

    function changeClearCount() {
        let clearValue = Number(prompt("設定したいクリア回数を入力してください"));

        if (isNaN(clearValue) || clearValue <= 0) {
            alert("無効な数値です。操作を中断します。");
            return;
        }

        let currentOffset = clearCountOffset;

        for (let repeat = 0; repeat < 10; repeat++) { // 10回繰り返し
            // 48個の数値を設定
            for (let i = 0; i < 48; i++) {
                h5gg.setValue(currentOffset + (i * 4), clearValue, "I32");
            }

            // 48個目の数値から3つ空けた下の数値を0に設定
            let zeroOffset = currentOffset + (48 * 4) + (3 * 4); // 48個分+3つ分
            h5gg.setValue(zeroOffset, 0, "I32");

            // 次の処理用にオフセットを更新
            currentOffset = zeroOffset + 4; // 次のオフセット開始地点（4バイト分進む）
        }

        alert("クリア回数を " + clearValue + " に設定しました");
    }

function koukoku() {
    let value = 999999; // 設定する値
    h5gg.setValue(koukokuAddr, value, "I32");
    h5gg.setValue(koukokuAddr + 4, 0, "I32");
    alert("広告削除が成功しました");
}

function itemBatchChange() {
    let value = Number(prompt("変更する値を入力してください"));
    if (!isNaN(value)) {
        for (let i = 0; i < 6; i++) {
            let currentOffset = itemBatchOffset + (i * 8);
            h5gg.setValue(currentOffset, value, "I32"); // 数値を変更
            // 変更された数値のすぐ下のオフセットに0を設定
            h5gg.setValue(currentOffset + 4, 0, "I32"); // 次の6個の数値を0に設定
        }
        alert("アイテムを一括変更しました");
    } else {
        alert("有効な数値を入力してください");
    }
}

function changeCastleMaterial() {
            let currentOffset = castleMaterialOffset;

            for (let i = 0; i < 8; i++) { // 8回繰り返し
                h5gg.setValue(currentOffset, 999, "I32"); // 現在のオフセットを999に設定
                currentOffset += 4; // 次の位置へ移動
                h5gg.setValue(currentOffset, 0, "I32"); // 飛ばされた数値を0に設定
                currentOffset += 4; // 次の対象位置へ移動
            }

            alert("城素材を変更しました");
        }

function changeLeadership() {
    // ユーザーに値を入力してもらう
    const value = prompt("変更する値を入力してください:");

    // 入力が無効（キャンセルや空）だった場合は終了
    if (value === null || value.trim() === "") {
        alert("値が入力されていません。処理を中断します。");
        return;
    }

    let count = 0; // 値を変更した数をカウント

        const TargetOffset = baseOffset

    for (let i = 0; i < 9; i++) {
        const targetOffset = baseOffset + (4 * 4) + (i * 8); // 4個下の位置から1個飛ばしで計算
        const skippedOffset = targetOffset + 4; // 飛ばした位置の計算
        const SkippedOffset = TargetOffset + 4 // 飛ばした数値

        // ターゲット位置にユーザーが指定した値を設定
        
h5gg.setValue(TargetOffset, Number(value), "I32");

h5gg.setValue(targetOffset, Number(value), "I32");
        count++;

        // 飛ばした位置に0を設定
        
h5gg.setValue(SkippedOffset, 0, "I32");

h5gg.setValue(skippedOffset, 0, "I32");
        count++;
    }

    // 完了メッセージを表示
    alert(`変更が完了しました: ${count}個のアドレスを変更しました`);
}


function changeTreasures() {
    let currentOffset = treasureOffset; // 初期オフセット

    // ユーザーにお宝の状態を入力させる
    let input = prompt("お宝の状態を入力してください（無し=0, 銅=1, 銀=2, 金=3）");
    let value = parseInt(input);

    // 無効な値の場合は処理を終了
    if (![0, 1, 2, 3].includes(value)) {
        alert("無効な値です。もう一度入力してください。");
        return;
    }

    for (let repeat = 0; repeat < 10; repeat++) { // 10回繰り返し
        // 48個の数値を指定された値に設定
        for (let i = 0; i < 48; i++) {
            h5gg.setValue(currentOffset + (i * 4), value, "I32");
        }

        // 48個分の次の2個の数値を0に設定
        let zeroOffset1 = currentOffset + (48 * 4); // 48個分進んだ位置
        let zeroOffset2 = zeroOffset1 + 4;          // 次の1つ分の位置

        h5gg.setValue(zeroOffset1, 0, "I32");
        h5gg.setValue(zeroOffset2, 0, "I32");

        // 次の処理用にオフセットを更新
        currentOffset = zeroOffset2 + 4; // 次のオフセット開始地点（2つ分進む）
    }

    alert("お宝を変更しました");
}

    function multiplyAndChangeValue(name, addr) {
        let value = Number(prompt(name + "の数値を入力してください"));
        if (!isNaN(value)) {
            // 入力された数値に108000を掛ける
            let newValue = value * 108000;
            h5gg.setValue(addr, newValue, "I32");
            h5gg.setValue(addr + 4, 0, "I32");  // 隣接アドレスを0にする
            alert(name + "を変更しました");
        } else {
            alert("有効な数値を入力してください");
        }
    }

    function modifyGlassCat() {
        h5gg.setValue(glassCatOffset, 0, "I32"); // オフセットの数値を0
        h5gg.setValue(glassCatOffset - 4, 180, "I32"); // 1つ上の数値を180
        h5gg.setValue(glassCatOffset - 8, 0, "I32"); // 2つ上の数値を0
        h5gg.setValue(glassCatOffset - 12, 1800000, "I32"); // 3つ上の数値を1800000

h5gg.setValue(glassCatOffset - 16, 800, "I32"); // 4つ上の数値を800
        h5gg.setValue(glassCatOffset + 4, 0, "I32"); // 1つ下の数値を0
        h5gg.setValue(glassCatOffset + 16, 1, "I32"); // 4つ下の数値を1
        h5gg.setValue(glassCatOffset + 24, 1, "I32"); // オフセットから6個目を1

        // 10個目から90個目の間で31個目から70個目をスキップ
        for (let i = 10; i <= 90; i++) {
            if (i >= 31 && i <= 70) {
                continue; // 31個目から70個目をスキップ
            }
            h5gg.setValue(glassCatOffset + i * 4, 1, "I32");
        }

h5gg.setValue(glassCatOffset + 320, 1, "I32"); // 80個目
            h5gg.setValue(glassCatOffset + 324, 200, "I32"); // 81個目
            h5gg.setValue(glassCatOffset + 328, 200, "I32"); // 82個目
            h5gg.setValue(glassCatOffset + 332, 10, "I32"); // 83個目

            // 18個目から22個目までの数値を100に設定
            for (let i = 18; i <= 22; i++) {
                h5gg.setValue(glassCatOffset + i * 4, 100, "I32");
            }

            // 25個目の数値を100に設定
            h5gg.setValue(glassCatOffset + 25 * 4, 100, "I32");

            // 31個目から36個目までの数値を100に設定
            for (let i = 31; i <= 36; i++) {
                h5gg.setValue(glassCatOffset + i * 4, 100, "I32");
            }

            // 64個目、76個目、86個目など、指定された位置に100を設定
            h5gg.setValue(glassCatOffset + 64 * 4, 100, "I32"); // 64個目
            for (let i = 76; i <= 80; i++) {
                h5gg.setValue(glassCatOffset + i * 4, 100, "I32"); // 76個目から79個目
            }
            h5gg.setValue(glassCatOffset + 86 * 4, 100, "I32"); // 86個目
            h5gg.setValue(glassCatOffset + 87 * 4, 100, "I32"); // 87個目
            h5gg.setValue(glassCatOffset + 89 * 4, 100, "I32"); // 89個目


        alert("ガラス猫を改造しました");
    }

        // メニュー切り替え
        function showCharacterMenu() {
            document.getElementById('mainMenu').classList.add('hidden');
            document.getElementById('characterMenu').classList.remove('hidden');
        }

        function goBack() {
            document.getElementById('characterMenu').classList.add('hidden');
            document.getElementById('mainMenu').classList.remove('hidden');
        }

        // ネコの基準値を取得
        const nekoBaseOffset = base + offsetStart; // 「ネコ」のオフセット
        const nekoValue = h5gg.getValue(nekoBaseOffset, "I32");
        if (isNaN(nekoValue)) {
            alert("基準値の取得に失敗しました");
        }

        // ボタン生成
        const characterList = document.getElementById('characterList');
        characters.forEach(character => {
            const button = document.createElement('div');
            button.className = "character-button";
            button.innerHTML = `
                <span style="color: white;">${character.name}</span>
                <div class="button-container">
                    <button class="button" onclick="unlockCharacter(${character.offset})">解放</button>
                    <button class="button" onclick="deleteCharacter(${character.offset})">削除</button>
                </div>
            `;
            characterList.appendChild(button);
        });

        // 解放処理
        function unlockCharacter(offset) {
            const targetAddress = base + offsetStart + offset; // 対象キャラのアドレスを計算
            console.log(`解放対象アドレス: ${targetAddress.toString(16)}`);
            
            // ネコの基準値を対象キャラに設定
            h5gg.setValue(targetAddress, nekoValue, "I32");
            alert("解放が成功しました");
        }


        // 削除処理
        function deleteCharacter(offset) {
            const targetAddress = base + offsetStart + offset;
            const referenceOffset = base + offsetStart + (786 * 4);
            const lowerOffset = referenceOffset + 4;

            const lowerValue = h5gg.getValue(lowerOffset, "I32");
            if (isNaN(lowerValue)) {
                alert("参照値の取得に失敗しました");
                return;
            }

            h5gg.setValue(targetAddress, lowerValue, "I32");
            alert("削除が成功しました");
        }

        // 検索機能
        const searchInput = document.getElementById('searchInput');
        const characterButtons = document.querySelectorAll('.character-button');

        searchInput.addEventListener('input', () => {
            const query = searchInput.value.trim();
            
            // 検索欄が空の場合、すべて非表示
            if (query === "") {
                characterButtons.forEach(button => {
                    button.style.display = 'none';
                });
                return;
            }

            characterButtons.forEach(button => {
                const name = button.querySelector('span').textContent;
                if (name.includes(query)) {
                    button.style.display = 'block';
                } else {
                    button.style.display = 'none';
                }
            });
        });

        window.onload = function() {
            alert("製作者:わん＆ゆち。2時配布、2時販売禁止‼️");
        };

setButtonImage("https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcThFWs8cVEjYfM55yGD-c8BMQhRxJchx9O1EPo4ZP20VOo3-7lwa4_mpqBC&s=10");

　　setWindowDrag(0, 0, 350, 60);

    </script>
</body>
</html>
