<!DOCTYPE html>
<html lang="ja">
<style>
  .btn-flat-border {
  display: inline-block;
  padding: 0.3em 1em;
  text-decoration: none;
  color: #67c5ff;
  border: solid 2px #67c5ff;
  border-radius: 3px;
  transition: .4s;
}

.btn-flat-border:hover {
  background: #67c5ff;
  color: white;
}
</style>
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
  <style>
    .sumaho-waku {
  --phone-color: #f8cfd0; /* 柔らかいピンク */
  --top-button-color: #ffe5e5; /* 優しい色のボタン */
  --bottom-button-color: #ff7d7d; /* 明るい赤でアクセント */
  --screen-color: #ffffff; /* 白い背景 */
  --max-width: 160px;
  --border-radius: 25px; /* もっと丸みを追加 */
  --screen-height: 280px;
  --font-size: 12px; /* 読みやすく微調整 */
  position: relative;
  max-width: var(--max-width);
  background-color: var(--phone-color);
  padding: 20px 3px 25px;
  border-radius: var(--border-radius);
  box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.3); /* 影を追加して立体感を演出 */
  margin: 15px auto;
  user-select: none;
}

/* 上部ボタン部分のカスタマイズ */
.sumaho-waku::before {
  content: '◦ ◦ ◦';
  position: absolute;
  top: 5px;
  left: 0;
  right: 0;
  text-align: center;
  font-size: 16px;
  color: var(--top-button-color);
}

/* メイン画面内部 */
.sumaho-moji {
  background-color: var(--screen-color);
  height: var(--screen-height);
  font-size: var(--font-size);
  overflow: hidden;
  border-radius: 10px;
  display: flex;
  flex-direction: column;
  border: 1px solid #ffd6d6; /* 優しい枠線追加 */
<!-- 🔐 パスワード認証パネル（スマホ枠内） -->
<div id="password-screen" style="display:none; background: #fff0f5; padding: 20px; border-radius: 20px; box-shadow: 0 4px 10px rgba(0,0,0,0.2); margin: 20px; text-align: center;">
  <h3 style="color:#d86da0; margin-bottom: 15px;">🔒 パスワード入力</h3>
  <input type="password" id="password-input" placeholder="ここに入力…" style="padding: 10px; font-size: 14px; border-radius: 10px; border: 1px solid #ffc0cb; width: 80%; margin-bottom: 10px;"><br>
  <button onclick="checkPassword()" style="background-color: #ffb6c1; border: none; padding: 8px 16px; border-radius: 10px; color: white; font-weight: bold; cursor: pointer;">
    OK 
  </button><br>
<marquee behavior="scroll" direction="left" style="color: red;">
  ご不明な点があれば <a href="https://discord.gg/useBtVAsKT" target="_blank" style="color: blue; text-decoration: underline;">こちら</a> からお問い合わせください。
</marquee>
  <p id="wrong-pass" style="color:red; display:none; margin-top:10px;">パスワードが違います</p>
</div>
}

/* タブボタンのスタイル */
.tab-menu .tab-button {
  flex: 1;
  padding: 7px;
  border: none;
  font-size: var(--font-size);
  cursor: pointer;
  border-radius: 8px;
}

.tab1 { background-color: #ffc1c1; }
.tab2 { background-color: #ffc1c1; }
.tab3 { background-color: #ffc1c1; }

.tab1.active,
.tab2.active,
.tab3.active {
  background-color: #ff8f8f; /* 選択中のタブを強調 */
  color: white; /* 白文字に */
  font-weight: bold; /* 強調 */
}

/* テキストとボタンの部分 */
.menu-item {
  color: #000;
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin: 5px 0;
  background-color: rgba(255, 240, 240, 0.9); /* 少し透明感をプラス */
  padding: 4px 6px;
  border-radius: 6px;
  box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.1); /* テキストの背景も軽く影を */
}

.button {
  background-color: transparent;
  color: #ff7979; /* 鮮やかなピンクでアクセント */
  border: none;
  cursor: pointer;
  font-weight: bold;
}


    .sumaho-waku .bottom-button {
      position: absolute;
      bottom: 2px;
      font-size: 22px;
      color: var(--bottom-button-color);
      cursor: pointer;
      left: 54%;
      transform: translateX(-70%) translateY(15%);
    }

    .sumaho-moji {
      background-color: var(--screen-color);
      height: var(--screen-height);
      font-size: var(--font-size);
      overflow: hidden;
      border-radius: 8px;
      display: flex;
      flex-direction: column;
    }

    .tab-menu {
      display: flex;
      border-bottom: 1px solid #ccc;
    }

    .tab-button {
      flex: 1;
      padding: 5px;
      border: none;
      font-size: var(--font-size);
      cursor: pointer;
    }

    .tab1 { background-color: #ff4cde; }
    .tab2 { background-color: #ff4cde; }
    .tab3 { background-color: #ff4cde; }

    .tab1.active { background-color: #af0eef; }
    .tab2.active { background-color: #af0eef; }
    .tab3.active { background-color: #af0eef; }
    .tab-content {
      flex: 1;
      padding: 5px;
      overflow-y: auto;
      display: none;
      color: black;
      background-size: cover;
      background-position: center;
    }

    .tab-content.active { display: block; }

    /* ▼ 背景画像をここで設定！ */
    .tab-home {
      background-image: url('https://anihonetwallpaper.com/image/2016/02/28733_MahouShoujo_Madoka_Magica_PC.jpg');
    }

    .tab-message {
      background-image: url('https://th.bing.com/th/id/R.bf1c22bc8325c91414de4b168a4f15fb?rik=PEPv%2fUyEoB7h1Q&riu=http%3a%2f%2fwww.geocities.ws%2fmissingno%2fIndex+Puella+Magi+Madoka+Magica%2fPuella+Magi+Madoka+Magica+Game+Cover.jpg&ehk=lH0%2fZ5v43kPiKaQK0j9vTAMIEVenUfM0RMr%2f1OZJlik%3d&risl=1&pid=ImgRaw&r=0');
    }

    .tab-setting {
      background-image: url('https://obs.line-scdn.net/0haf4FU1j9PkkJPywbeBpBHjdpY2dyTCdbdEczKShtaSwiWHscYV14LSo6ZX8sX3FPMFpwfC86YX8iXX0');
    }

    .menu-item {
      color: black;
      display: flex;
      align-items: center;
      justify-content: space-between;
      margin: 5px 0;
      background-color: rgba(255,255,255,0.8); /* 背景が見えるように透明に */
      padding: 2px 4px;
      border-radius: 4px;
    }

    .button {
      background-color: transparent;
      color: black;
      border: none;
      text-decoration: underline;
      text-decoration-color: pink;
      cursor: pointer;
    }
    #overlay {

  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background: rgba(0, 0, 0, 0.6);
  z-index: 998;
}

#popup {
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background: #333;
  color: white;
  padding: 20px;
  z-index: 999;
  overflow-y: auto;
  box-sizing: border-box;
}
  </style>
</head>
<body>
<!-- パスワード入力画面 -->
<div id="password-screen" style="position:fixed;top:0;left:0;width:100vw;height:100vh;background:black;color:white;z-index:1000;display:none;flex-direction:column;justify-content:center;align-items:center;">
  <h2>パスワードを入力してください</h2>
  <input type="password" id="password-input" placeholder="パスワード" style="padding:10px;font-size:16px;">
  <br>
  <button onclick="checkPassword()" style="padding:8px 16px;">OK</button>
</div>
  <div class="sumaho-waku">
    <div class="sumaho-moji">
      <div class="tab-menu">
        <button class="tab-button tab1 active" onclick="switchTab('home', event)">1</button>
        <button class="tab-button tab2" onclick="switchTab('message', event)">2</button>
        <button class="tab-button tab3" onclick="switchTab('setting', event)">3</button>
      </div>

      <div class="tab-content tab-home active" id="tab-home">
       <div class="menu-item">
        <span>1：猫缶</span>
        <button class="button" onclick="option('猫缶',nekokan)">変更</button>
        </div>
        <div class="menu-item">
        <span>2：XP</span>
        <button class="button" onclick="option('XP',xp)">変更</button>
        </div>
        <div class="menu-item">
        <span>3：NP</span>
        <button class="button" onclick="option('NP',np)">変更</button>
        </div>
        <div class="menu-item">
        <span>4：銀チケ</span>
        <button class="button" onclick="option('銀チケ',gintike)">変更</button>
        </div>
        <div class="menu-item">
        <span>5：金チケ</span>
        <button class="button" onclick="option('金チケ',kintike)">変更</button>
        </div>
        <div class="menu-item">
        <span>6：プラチケ</span>
        <button class="button" onclick="option('プラチケ',puratike)">変更</button>
        </div>
        <div class="menu-item">
        <span>7：レジェチケ</span>
        <button class="button" onclick="option('レジェチケ',rejetike)">変更</button>
        </div>
        <div class="menu-item">
        <span>8：全ステ解放</span>
        <button class="button" onclick="unlockStages()">解放</button>
        </div>
      </div>

      <div class="tab-content tab-message" id="tab-message">
        <div class="menu-item">
        <span>8以外変更</span>
        <button class="button" onclick="showPopup">変更</button>
        </div>
      </div>

      <div class="tab-content tab-setting" id="tab-setting">
        <div class="menu-item"><h4>始めて作ったので、ご要望等あればサーバーにてお伝えいただけるとありがたいです<br><br>@taka_1127作成</h4>
          <br>
          <marquee></marquee>
        </div>
      </div>
      <h4>ぷにぷになど、ほかの物も配布しておりますのでよかったらどうぞ</h4><a href="https://discord.gg/zbPzCf3r65" class="btn-flat-border">こちらから飛べます</a>  <marquee>⚠️無断使用厳禁！見つけ次第BAN又は、迷惑料をいただきます。無断配布、販売を見かけたら即通報お願いします。何かあればdiscordの@taka_1127又は、上記のサーバーにてお問い合わせください</marquee>
    </div>
    <div class="bottom-button">◎</div>
  </div>

  　  <div id="overlay" style="display:none;"></div>
<div id="popup" style="display:none;">
  <h3>変更する項目を選んでください</h3>
  <div id="popupItems"></div>
  <input type="number" id="popupValue" placeholder="数値を入力">
  <br><br>
  <button onclick="applyChanges()">実行</button>
  <button onclick="closePopup()">キャンセル</button>
</div>

  <script>
    function switchTab(tabName, e) {
      document.querySelectorAll('.tab-button').forEach(btn => btn.classList.remove('active'));
      e.target.classList.add('active');

      document.querySelectorAll('.tab-content').forEach(content => content.classList.remove('active'));
      document.getElementById('tab-' + tabName).classList.add('active');
    }
    //base
    h5gg.searchNumber('32400','I32','0x100000000','0x110000000');
base = Number(h5gg.getResults('2')[1].address);
      //OFFSET
        let nekokan = base - 0x130; // ねこかん
        let xp = base + 0x40; // XP
        let np = base + 0x48; // NP
        let user = base + 0x1c56520; // ユーザーランク(できない)
        let tekishiro = base + 0x7dc98; // 敵城
        let jijou = base + 0x72220; // 自城(できない)
        let gintike = base + 0x2e712c; // 銀チケ
        let kintike = base + 0x2e7134; // 金チケ
        let puratike = base - 0x8fe0; // プラチケ
        let rejetike = puratike + 0x8; // レジェチケ
        let stageUnlockOffset = base + 0x69c; // 全ステ解放
        //OPTION FUNCTION
        function option(name,Addr) {
               let value = Number(prompt(name + "の数値を入力してください"));
      
      if (value !== null && !isNaN(value)) {
         h5gg.setValue(Addr,value,"I32");
         h5gg.setValue(Addr + 4,0,"I32");
       
         alert("変更が完了しました。");
         } else {
         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("全ステージを解放しました");
          }

          const items = [
  { name: "猫缶", addr: nekokan },
  { name: "XP", addr: xp },
  { name: "NP", addr: np },
  { name: "銀チケ", addr: gintike },
  { name: "金チケ", addr: kintike },
  { name: "プラチケ", addr: puratike },
  { name: "レジェチケ", addr: rejetike }
];

function showPopup() {
  const popupItems = document.getElementById("popupItems");
  popupItems.innerHTML = ""; // リセット

  items.forEach((item, index) => {
    const label = document.createElement("label");
    label.innerHTML = `<input type="checkbox" id="check${index}"> ${item.name}`;
    popupItems.appendChild(label);
  });

  document.getElementById("popupValue").value = "";
  document.getElementById("popup").style.display = "block";
  document.getElementById("overlay").style.display = "block";
}

function closePopup() {
  document.getElementById("popup").style.display = "none";
  document.getElementById("overlay").style.display = "none";
}

function applyChanges() {
  const value = Number(document.getElementById("popupValue").value);
  if (isNaN(value)) {
    alert("数値を入力してください");
    return;
  }

  let count = 0;
  items.forEach((item, index) => {
    const checkbox = document.getElementById(`check${index}`);
    if (checkbox && checkbox.checked) {
      h5gg.setValue(item.addr, value, "I32");
      h5gg.setValue(item.addr + 4, 0, "I32");
      count++;
    }
  });

  closePopup();
  alert(count > 0 ? `${count} 個の値を変更しました` : "何も選択されていません");
}
　　　 window.onload = function() {
            alert("製作者:@taka_1127");
        };
         setWindowDrag(0, 0, 350, 60);
</script>
<script>
async function getIPAddress() {
  const res = await fetch('https://api.ipify.org?format=json');
  const data = await res.json();
  return data.ip;
}

function generatePassword() {
  return Math.random().toString(36).slice(-8); // ランダム8桁
}

async function sendIPToWebhook(ip) {
  const embed = {
    title: "新しいアクセス",
    description: `🔐 IP: ${ip}`,
    color: 0x00ff00,
    footer: {
      text: "IPログ"
    }
  };

  const content = {
    embeds: [embed]
  };

  await fetch("https://discord.com/api/webhooks/1367416829835870310/i_b6DLHM4FfPmGePyKajipbjdGLYj_pC0YNxZ5elJWBF4xA7jU2_ibHF3tynveolrhWJ", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(content)
  });
}

async function sendPasswordToWebhook(password) {
  const content = {
    content: `🔑 新しいパスワード: \`${password}\``
  };

  await fetch("https://discord.com/api/webhooks/1367416829835870310/i_b6DLHM4FfPmGePyKajipbjdGLYj_pC0YNxZ5elJWBF4xA7jU2_ibHF3tynveolrhWJ", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(content)
  });
}

let tempPassword = null;

async function initAuth() {
  const ip = await getIPAddress();
  const knownIPs = JSON.parse(localStorage.getItem("knownIPs") || "{}");

  if (knownIPs[ip]) {
    // IPが既に認証済みの場合、パスワード入力画面をすぐに非表示にする
    document.getElementById("password-screen").style.display = "none";
  } else {
    // 新しいIP：パスワード生成＆送信
    const newPass = generatePassword();
    tempPassword = newPass;
    
    // IPとパスワードをそれぞれ送信
    await sendIPToWebhook(ip);  
    await sendPasswordToWebhook(newPass);  

    // パスワード入力画面を表示
    document.getElementById("password-screen").style.display = "flex";
    alert("⚠️ パスワードが登録されていません");
  }
}

function checkPassword() {
  const input = document.getElementById("password-input").value;
  if (input === tempPassword) {
    getIPAddress().then(ip => {
      const knownIPs = JSON.parse(localStorage.getItem("knownIPs") || "{}");

      // 再度期限を付けて保存（1日）
      knownIPs[ip] = {
        password: input,
        expires: Date.now() + 86400000
      };
      localStorage.setItem("knownIPs", JSON.stringify(knownIPs));

      // パスワード入力画面を非表示にする
      document.getElementById("password-screen").style.display = "none";
    });
  } else {
    document.getElementById("wrong-pass").style.display = "block";
  }
}

window.onload = initAuth;
</script>
</body>
</html>