rpg测试

配合酒馆游玩

当前为 2024-08-12 提交的版本,查看 最新版本

// ==UserScript==
// @name rpg测试
// @namespace http://tampermonkey.net/
// @version 0.5
// @license GPL
// @description 配合酒馆游玩
// @author 从前跟你一样
// @grant unsafeWindow
// @match *://*/*
// @require https://code.jquery.com/jquery-3.4.1.min.js
// @require https://cdnjs.cloudflare.com/ajax/libs/jszip/3.7.1/jszip.min.js
// @require https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js
// @require https://cdn.jsdelivr.net/npm/[email protected]/dist/js-yaml.min.js
// @require https://cdnjs.cloudflare.com/ajax/libs/dompurify/3.1.6/purify.min.js
// @connect vagrantup.com
// @grant unsafeWindow
// @grant GM_xmlhttpRequest
// @connect sd则此处换成你的电脑域名ip、不需要带端口。
// @connect *
// @connect 192.168.10.2
// @connect 127.0.0.1
// @connect novelai.net
// @match *://*/*
// @description Save user settings
// @grant GM_setValue
// @grant GM_getValue
// ==/UserScript==

(function () {
  'use strict';
  let rpgster = "";
  let rpg = {};
  rpg["rpg"] = false;

  // 添加点击事件监听器到您的按钮或元素上
  $(document).ready(function () {
    rpgster = setInterval(addNewElement, 2000);
  });
  // 定义默认设置
  const defaultSettings = {
    say: "测试",
    key: "测试"
  };
  let settings = {};
  for (const [key, defaultValue] of Object.entries(defaultSettings)) {
    settings[key] = GM_getValue(key, defaultValue);
    // 如果没有读取到值,就使用默认值并保存
    if (settings[key] === defaultValue) {
      GM_setValue(key, defaultValue);
    }
  }
  function addNewElement() {
    const targetElement = document.querySelector('#option_toggle_AN');
    if (targetElement) {
      clearInterval(rpgster);
      const newElement = document.createElement('a');
      newElement.id = 'option_toggle_AN3';

      const icon = document.createElement('i');
      icon.className = 'fa-lg fa-solid fa-note-sticky';
      newElement.appendChild(icon);

      const span = document.createElement('span');
      span.setAttribute('data-i18n', "打开设置");
      span.textContent = '打开rpg工具';
      newElement.appendChild(span);
      // return true; // 表示操作成功完成

      targetElement.parentNode.insertBefore(newElement, targetElement.nextSibling);
      console.log("New element added successfully");
      document.getElementById('option_toggle_AN3').addEventListener('click', showSettingsPanel);
    }
  }

  function createrpgSettingsPanel() {
    const panel = document.createElement('div');
    panel.id = 'rpgsettings-panel';
    panel.style.position = 'absolute';
    panel.style.top = '50%';
    panel.style.left = '50%';
    panel.style.transform = 'translate(-50%, -50%)';
    panel.style.backgroundColor = 'black'; // 设置背景为黑色
    panel.style.color = 'white';// 设置字体为白色
    panel.style.padding = '20px';
    panel.style.border = '1px solid white';// 设置边框为白色
    panel.style.zIndex = '10000';
    panel.style.display = 'none';
    panel.style.overflowY = 'auto';
    panel.style.maxHeight = '80vh';
    panel.innerHTML += `
<style>
  #rpgsettings-panel input,
  #settings-panel select {
    background-color: #444;
    color: white;
    background-color: black;
    border: none;
    padding: 5px;
    margin: 5px 0;
  }

  #rpgsettings-panel button {
    background-color: #444;
    color: white;
    border: none;
    padding: 5px 10px;
    cursor: pointer;
  }

  #rpgsettings-panel button:hover {
    background-color: #555;
  }
</style>
`;
    panel.innerHTML = `
<h2>设置面板</h2>
        <label class="switch">
      <input type="checkbox" id="rpgscriptToggle" 'checked' : ''}>
      <span class="slider"></span>
    </label>
    <label  style="display: inline-block; margin-left: 10px;">启用rpg</label>
    <br><br>
<br><br>
<label>说明:<input type="text" id="say" value="${safe(settings.say)}"></label><br>
<label>秘钥:<input type="text" id="key" value="${safe(settings.key)}"></label><br>
<button id="save-AESEword">加密世界书</button>
<button id="save-AESDword">解密世界书</button><br>
<button id="save-AESErole">加密角色栏</button>
<button id="save-AESDrole">解密角色栏</button><br>
<button id="testbu">测试按钮</button><br>
<button id="close-rpgsettings">关闭</button>
<a id="visit-website-link"
  href="https://asgdd1kjanhq.sg.larksuite.com/wiki/I5e5wz7BDiVouJk5DQBlDwcJgAg?from=from_copylink"
  target="_blank">帮助</a>
<a id="visit-website-link"
  href="https://discord.com/channels/1134557553011998840/1264813484437409813/1264813484437409813"
  target="_blank">dc讨论</a>
<a id="visit-website-link">BY从前我跟你一样</a>
`;
    const style = document.createElement('style');
    style.textContent = `
#rpgsettings-panel input {
background-color: black !important;
color: white;
border: none;
padding: 5px;
margin: 5px 0;
}
#rpgsettings-panel input, #settings-panel select {
background-color: #444;
color: white;
background-color: black;
border: none;
padding: 5px;
margin: 5px 0;
}
#rpgsettings-panel button {
background-color: #444;
color: white;
border: none;
padding: 5px 10px;
cursor: pointer;
}
#rpgsettings-panel button:hover {
background-color: #555;
}
.switch {
position: relative;
display: inline-block;
width: 60px;
height: 34px;
}
.switch input {
opacity: 0;
width: 0;
height: 0;
}
.slider {
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #ccc;
transition: .4s;
border-radius: 34px;
}
.slider:before {
position: absolute;
content: "";
height: 26px;
width: 26px;
left: 4px;
bottom: 4px;
background-color: white;
transition: .4s;
border-radius: 50%;
}
input:checked + .slider {
background-color: #2196F3;
}
input:checked + .slider:before {
transform: translateX(26px);
}
`;

    document.body.appendChild(panel);
    document.head.appendChild(style);
    document.getElementById('save-AESEword').addEventListener('click', aesEword);
    document.getElementById('save-AESDword').addEventListener('click', aesDword);
    document.getElementById('save-AESErole').addEventListener('click', aesErole);
    document.getElementById('save-AESDrole').addEventListener('click', aesDrole);
    document.getElementById('testbu').addEventListener('click', testbu);
    document.getElementById('close-rpgsettings').addEventListener('click', hideSettingsPanel);






    // 添加滑块切换事件监听器



    const toggleCheckbox = document.getElementById('rpgscriptToggle');

    toggleCheckbox.addEventListener('change', function () {
      if (this.checked) {
        rpg["rpg"] = true; // 如果复选框被选中,将变量值设置为true
      } else {
        rpg["rpg"] = false; // 如果复选框未被选中,将变量值设置为false
      }
      console.log('isToggled:', rpg["rpg"]); // 打印变量的当前值
    });
    return panel;
  }







  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  // 加解密
  // 定义加密函数
  function aesEncrypt(plaintext, key, iv) {
    const encrypted = CryptoJS.AES.encrypt(plaintext, key, {
      iv: iv,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.Pkcs7
    });
    return encrypted.toString();
  }

  // 定义解密函数
  function aesDecrypt(ciphertext, key, iv) {
    const decrypted = CryptoJS.AES.decrypt(ciphertext, key, {
      iv: iv,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.Pkcs7
    });
    let txt = "";
    try {
      txt = decrypted.toString(CryptoJS.enc.Utf8);
    } catch (e) {
      throw e;
    }
    return txt
  }

  const secretIv = '1234567890123456';
  function aesEword() {
    const key = document.getElementById("key");
    let secretKey = key.value
    // 使用 querySelectorAll 查找所有匹配的元素
    const elements = document.querySelectorAll('[data-i18n="[placeholder]What this keyword should mean to the AI, sent verbatim"]');

    let p = false;
    if (!(elements.length > 0)) {
      alert("未找到加密文111本")
      return;
      // 遍历找到的元素
    }
    elements.forEach(element => {
      // 打印元素的 placeholder 属性值
      if (p) {
        return;
      }
      if (element.value == "") {
        return;
      }
      if (isEncrypted(removeExplanation(element.value))) {
        alert("已经加密")
        p = true;
        return;
      }
      let aesEtxt = "";
      try {
        aesEtxt = aesEncrypt(element.value, secretKey, secretIv);
      } catch (e) {
        alert("加密出错")
        p = true;
        return;
      }
      element.value = addExplanation(aesEtxt, document.getElementById("say").value);
      element.dispatchEvent(new Event('input'));
    });
    if (!p) {
      saveSettings()
      alert("加密成功")
    }

  }

  function aesErole() {
    const key = document.getElementById("key");
    let secretKey = key.value
    const element2 = document.getElementById("description_textarea");
    const element3 = document.getElementById("firstmessage_textarea");
    // 使用 querySelectorAll 查找所有匹配的元素
    if (!element2 || !element3) {
      alert("未找到加密文本")
      return;
    }
    if (element2.value != "") {
      if (isEncrypted(removeExplanation(element2.value))) {
        alert("已经加密")
      } else {
        let aesEtxt = "";
        try {
          aesEtxt = aesEncrypt(element2.value, secretKey, secretIv);
        } catch (e) {
          alert("加密出错")
          return;
        }
        element2.value = addExplanation(aesEtxt, document.getElementById("say").value);
        element2.dispatchEvent(new Event('input'));
      }
    }
    if (element3.value != "") {
      if (isEncrypted(removeExplanation(element3.value))) {
        alert("已经加密")
      } else {
        let aesEtxt = "";
        try {
          aesEtxt = aesEncrypt(element3.value, secretKey, secretIv);
        } catch (e) {
          alert("加密出错")
          return;
        }
        element3.value = addExplanation(aesEtxt, document.getElementById("say").value);
        element3.dispatchEvent(new Event('input'));
      }
    }

    saveSettings()
    alert("加密成功")
  }
  function aesDword() {
    const txt = document.getElementById("key");
    let secretKey = txt.value
    const elements = document.querySelectorAll('[data-i18n="[placeholder]What this keyword should mean to the AI, sent verbatim"]');
    let p = false;
    if (!(elements.length > 0)) {
      alert("未找到加密文本")
      return;
    }
    elements.forEach(element => {
      // 打印元素的 placeholder 属性值

      if (element.value == "") {
        return;
      }
      let value = removeExplanation(element.value);
      if (!isEncrypted(value)) {
        p = true;
        return;
      }
      try {
        element.value = aesDecrypt(value, secretKey, secretIv);
      } catch (e) {
        if (p) {
          return;
        }
        alert("秘钥错误")
        p = true;
        return;
      }
      element.dispatchEvent(new Event('input'));
      console.log(element.value);
    });
    alert("解密成功")

  }
  function aesDrole() {
    const key = document.getElementById("key");
    let secretKey = key.value
    const element2 = document.getElementById("description_textarea");
    const element3 = document.getElementById("firstmessage_textarea");
    // 使用 querySelectorAll 查找所有匹配的元素
    if (!element2 || !element3) {
      alert("未找到解密文本")
      return;
    }
    if (element2.value != "") {
      let value = removeExplanation(element2.value);

      if (!isEncrypted(value)) {

      } else {
        let aesDtxt = "";
        try {
          aesDtxt = aesDecrypt(value, secretKey, secretIv);
        } catch (e) {
          alert("秘钥错误")
          return;
        }
        element2.value = aesDtxt
        element2.dispatchEvent(new Event('input'));
      }
    }
    if (element3.value != "") {
      let value = removeExplanation(element3.value);
      if (!isEncrypted(value)) {

      } else {
        let aesDtxt = "";
        try {
          aesDtxt = aesDecrypt(value, secretKey, secretIv);
        } catch (e) {
          alert("秘钥错误")
          return;
        }
        element3.value = aesDtxt
        element3.dispatchEvent(new Event('input'));
      }
    }


    alert("解密成功")
  }

  function isEncrypted(str) {
    // 检查字符串是否只包含 Base64 字符
    const base64Regex = /^[A-Za-z0-9+/=]+$/;
    if (!base64Regex.test(str)) {
      return false;
    }

    // 检查字符串长度是否为 4 的倍数
    if (str.length % 4 !== 0) {
      return false;
    }

    return true;
  }
  function saveSettings() {
    for (const key of Object.keys(defaultSettings)) {
      const element = document.getElementById(key);
      if (element) {
        settings[key] = element.value;
        GM_setValue(key, element.value);
      }
    }
    console.log('rpgSettings saved');
    // hideSettingsPanel();
  }
  function closeSettings() {

    hideSettingsPanel();
  }

  function showSettingsPanel() {
    for (const key of Object.keys(defaultSettings)) {
      const element = document.getElementById(key);
      if (element) {
        settings[key] = element.value;
        GM_setValue(key, element.value);
      }
    }
    console.log('Settings saved:', settings);
    const panel = document.getElementById('rpgsettings-panel');
    if (!panel) {
      createrpgSettingsPanel();
    }
    document.getElementById('rpgsettings-panel').style.display = 'block';
  }

  function hideSettingsPanel() {
    document.getElementById('rpgsettings-panel').style.display = 'none';
  }
  // Your code here...

  // 函数1:在字符串中添加<说明>标签
  function addExplanation(str, explanation) {
    return "<说明>" + explanation + "</说明>" + str;
  }

  // 函数2:去除字符串中的<说明>标签及其内容
  function removeExplanation(str) {

    return str.replace(/<说明>.*?<\/说明>/g, "");


  }


  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

  function testbu() {


    renwu();

  }

  function gift(name) {

  }
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //其他人物界面


  function otherCharacters(name) {

    let character = getOtherAttributes(name);
    const inventory = document.createElement('div');
    inventory.id = 'inventory';
    inventory.style.position = 'absolute';
    inventory.style.top = '50%';
    inventory.style.left = '50%';
    inventory.style.transform = 'translate(-50%, -50%)';
    inventory.style.backgroundColor = 'black';
    inventory.style.color = 'white';
    inventory.style.padding = '20px';
    inventory.style.border = '1px solid white';
    inventory.style.zIndex = '10000';
    inventory.style.display = 'block';
    inventory.style.overflowY = 'auto';
    inventory.style.borderRadius = '8px';
    inventory.style.maxHeight = '80vh';
    inventory.style.width = '80%';
    inventory.style.maxWidth = '600px';

    const closeButton = document.createElement('button');
    closeButton.textContent = '关闭';
    closeButton.style.position = 'absolute';
    closeButton.style.top = '10px';
    closeButton.style.right = '10px';
    closeButton.addEventListener('click', () => {
      inventory.style.display = 'none';
      inventory.remove();
    });
    inventory.appendChild(closeButton);

    const categories = ['人物信息'];

    if (rpg[name][1]["角色"].hasOwnProperty("rpg属性json")) {


      if (rpg[name][1]["角色"]["rpg属性json"].hasOwnProperty("可出售物品")) {

        categories.push("商店");

      }

      if (rpg[name][1]["角色"]["rpg属性json"].hasOwnProperty("可制造物品")) {

        categories.push("制造");

      }
      if (rpg[name][1]["角色"]["rpg属性json"].hasOwnProperty("可接任务")) {

        categories.push("可接任务");

      }
      if (rpg[name][1]["角色"]["rpg属性json"].hasOwnProperty("可学习技能")) {

        categories.push("可学习技能");

      }
    }
    const buttons = categories.map(category => {
      const button = document.createElement('button');
      button.textContent = category;
      button.style.marginRight = '10px';
      button.addEventListener('click', () => {
        showItems(category);
      });
      return button;
    });
    const buttonContainer = document.createElement('div');
    buttonContainer.style.marginBottom = '10px';
    buttons.forEach(button => buttonContainer.appendChild(button));
    inventory.appendChild(buttonContainer);
    const itemList = document.createElement('ul');
    itemList.style.listStyle = 'none';
    itemList.style.padding = '0';
    inventory.appendChild(itemList);
    document.body.appendChild(inventory);
    function showItems(category) {
      if (category == "人物信息") {
        var health = Number(character.health.split('/')[0]) / Number(character.health.split('/')[1]) * 100; //分割字符串
        var mana = Number(character.mana.split('/')[0]) / Number(character.mana.split('/')[1]) * 100; //分割字符串
        var xp = Number(character.xp.split('/')[0]) / Number(character.xp.split('/')[1]) * 100;
        itemList.innerHTML = `<div class="info-box">
        <p><span id="name">${safe(character.name)}</span></p>
          <div class="progress-bar">
          <label>等级:</label>
          <label id="level-text" >${safe(character.level)}</label>
          </div>
           <div class="progress-bar">
          <label>阵营:</label>
          <label id="camp-text" >${safe(character.camp)}</label>
        </div>
         <div class="progress-bar">
          <label>人物简介:</label>
          <label id="Biography-text" >${safe(character.Biography)}</label>
        </div>
        <div class="progress-bar">
          <label>性别:</label>
          <label>${safe(character.gender)}</label>
        </div>
        <div class="health-container">
          <label>血量:</label>
          <div class="health-bar">
            <div id="health" class="fill" style="width: ${safe(health)}%;"></div>
            <div id="health-text" class="fill-text">${safe(character.health)}</div>
          </div>
        </div>
        <div class="mana-container">
          <label>蓝量:</label>
          <div class="mana-bar">
            <div id="mana" class="mana" style="width: ${safe(mana)}%;"></div>
            <div id="mana-text" class="mana-text">${safe(character.mana)}</div>
          </div>
        </div>
        <div class="progress-bar">
          <label>攻击力:</label>
          <label id="attack-text">${safe(character.attack)}</label>
        </div>
        <div class="progress-bar">
          <label>防御力:</label>
          <label id="defense-text" >${safe(character.defense)}</label>
        </div>
        <div class="progress-bar">
          <label>经验值:</label>
          <progress id="xp" value="${safe(xp)}" max="100"></progress>
        </div>
      </div>
    </div>
    `;
      }
      if (category == "商店") {
        const categories= ['装备', "可消耗物品", "材料"];
        const buttons = categories.map(category => {
          const button = document.createElement('button');
          button.style.marginRight = '10px';
          button.style.marginRight = '10px';
          button.style.backgroundColor = '#007bff';
          button.style.color = '#fff';
          button.style.border = 'none';
          button.style.borderRadius = '1px';
          button.style.cursor = 'pointer';
          button.textContent = category;
          button.style.marginRight = '10px';
          button.id=name;
          button.addEventListener('click', (Event) => {
            showshop(category,Event.target.id);
          });
          return button;
        });
        const buttonContainer = document.createElement('div');
        buttonContainer.style.marginBottom = '10px';
        buttons.forEach(button => buttonContainer.appendChild(button));
        // let nowgold=document.createElement('button');
        // nowgold.style.marginRight = '10px';
        // nowgold.textContent = `当前拥有金币:`;//<label  style=color:gold>${safe(rpg["用户"][1]["角色"]["拥有金币"]||"0")}</label>;
        // nowgold.style.marginRight = '10px';
        // nowgold.style.backgroundColor = '#007bff';
        // nowgold.style.color = '#fff';
        // nowgold.style.border = 'none';
        // nowgold.style.borderRadius = '1px';
        // nowgold.style.cursor = 'pointer';
        // nowgold.style.marginRight = '10px';


       // nowgold.id="nowgold";

      //  buttonContainer.appendChild(nowgold);
        let nowgoldnumber=document.createElement('div');
        nowgoldnumber.style.marginRight = '10px';
        nowgoldnumber.textContent = `$10`;
        nowgoldnumber.style.marginRight = '10px';
        nowgoldnumber.style.border = 'none';
        nowgoldnumber.style.borderRadius = '1px';
        nowgoldnumber.width='100%';
        nowgoldnumber.height='100%';
        nowgoldnumber.style.marginRight = '10px';
        nowgoldnumber.id="coinContainer";
        nowgoldnumber.classList.add('coin');
        const style = document.createElement('style');//  line-height: 100px; //   border-radius: 50%;  // box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
        style.textContent = `
          .coin {
            background: linear-gradient(45deg, #ffd700, #c79810);
            display: inline-block;
            margin: 10px;
            text-align: center;
            font-size: 18px;
            color: #fff;
            text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
          }
        `;
        itemList.innerHTML='';
        document.head.appendChild(style);
        buttonContainer.appendChild(nowgoldnumber);

        //出售按钮
        const buttons2 = categories.map(category => {
          const button = document.createElement('button');
          button.style.marginRight = '10px';
          button.style.marginRight = '10px';
          button.style.backgroundColor = '#007bff';
          button.style.color = '#fff';
          button.style.border = 'none';
          button.style.borderRadius = '1px';
          button.style.cursor = 'pointer';
          button.textContent = "卖"+category;
          button.style.marginRight = '10px';
          button.id=name;
          button.addEventListener('click', (Event) => {
            showshop("卖"+category,Event.target.id);
          });
          return button;
        });
        buttons2.forEach(button => buttonContainer.appendChild(button));
        itemList.appendChild(buttonContainer);
        const coinContainer = document.getElementById('coinContainer');
        coinContainer.textContent = `$${safe(rpg["用户"][1]["角色"]["拥有金币"]||"0")}`;
        const itemList2 = document.createElement('ul');
        itemList2.style.listStyle = 'none';
        itemList2.style.padding = '0';
        itemList.appendChild(itemList2);
        function showshop(category,name){  //商店
          ///////////买装备
          let eqs=[];
          let eqs2=[]
          if (category == "装备") {
            console.log("name",name)
            let commodity = rpg[name][1]["角色"]["rpg属性json"]["可出售物品"];
            itemList2.innerHTML = ``;
            for (let i = 0; i < commodity.length; i++) {
              let eq = commodity[i];
              if (eq.物品分类 != "装备") {
                continue;
              }
              console.log("可出售物品",commodity)
             for(let w=0;w < rpg[eq.物品分类][1]["json"].length;w++){
                if(rpg[eq.物品分类][1]["json"][w].名称==eq.名称){
                  let 数量=eq.数量;
                  eq=rpg[eq.物品分类][1]["json"][w];
                  eq.数量=数量;
                  break;
                }
             }
              console.log("eq", eq);
              let  price=Number(`${safe(eq.价值)}`)

              let innerHTML="";
              if (Object.keys(eq).length !== 0) {
                innerHTML += `<div class="info-box">
          <p><span id="${safe(eq.名称)}name">${safe(eq.部位)}</span></p>
            <div class="progress-bar">
            <label>名称:</label>
            <label id="${safe(eq.名称)}名称" >${safe(eq.名称)}</label>
            </div>
         <div class="progress-bar">
            <label>简介:</label>
            <label id="${safe(eq.名称)}简介" >${safe(eq.简介)}</label>
          </div>
           <div class="progress-bar">
            <label>攻击力:</label>
            <label id="${safe(eq.名称)}攻击力" >${safe(eq.攻击力 || '无')}</label>
          </div>
           <div class="progress-bar">
            <label>防御:</label>
            <label id="${safe(eq.名称)}防御" >${safe(eq.防御 || '无')}</label>
          </div>
           <div class="progress-bar">
         <label>价格:</label>
         <label id="${safe(eq.名称)}价格" >${price}金币</label>
         </div>
         <div class="progress-bar">
         <label>数量:</label>
         <label id="${safe(eq.名称)}数量" >${safe(eq.数量)}个</label>
         </div>
          `
                if (eq.hasOwnProperty("附带技能")&&Object.keys(eq.附带技能).length !== 0) {
                  innerHTML += `<div class="progress-bar">
            <label>附带技能:</label>
            <label id="${safe(eq.名称)}名称">${safe(eq.附带技能[名称] || '无')}</label>
            </div>
            <div class="progress-bar">
            <label>技能简介:</label>
            <label id="${safe(eq.名称)}简介">${safe(eq.附带技能[简介] || '无')}</label>
            </div>`
                }
                innerHTML += `</div>
        </div>
        <div id="buttons">
          <button class="buyeq" id="${safe(eq.名称)}">购买</button>
        </div>`
        if(Number(eq.数量)>=10){
         innerHTML += `<div id="buttons">
          <button class="buyeq" id="${safe(eq.名称)}10">购买10个</button>
        </div>
        `;
        }
        eqs.push(eq);

        itemList2.innerHTML+=innerHTML;

              } else {
          itemList2.innerHTML += `<div class="info-box">
          <p><span id="${safe(eq.名称)}name">${safe(eq.名称)}列表没有?</span></p>

           </div>
            `

              }
            }//for


          }



          if (category == "可消耗物品") {
            console.log("name",name)
            let commodity = rpg[name][1]["角色"]["rpg属性json"]["可出售物品"];

            itemList2.innerHTML = ``;
            for (let i = 0; i < commodity.length; i++) {
              let eq = commodity[i];
              if (eq.物品分类 != "可消耗物品") {
                continue;
              }
              console.log("可出售物品",commodity)
             for(let w=0;w < rpg[eq.物品分类][1]["json"].length;w++){
                if(rpg[eq.物品分类][1]["json"][w].名称==eq.名称){
                  let 数量=eq.数量;
                  eq=rpg[eq.物品分类][1]["json"][w];
                  eq.数量=数量;
                  break;
                }
             }
             console.log("eq", eq);
             let  innerHTML="";
             if (Object.keys(eq).length !== 0) {
               innerHTML +=`<div class="info-box">
        <p><span id="${safe(eq.名称)}名称">${safe(eq.名称)}</span></p>
          <div class="progress-bar">
          <label>简介:</label>
          <label id="${safe(eq.名称)}简介" >${safe(eq.简介)}</label>
          </div>
         <div class="progress-bar">
         <label>价格:</label>
         <label id="${safe(eq.名称)}价格" >${safe(eq.价值)}金币</label>
         </div>
         <div class="progress-bar">
         <label>数量:</label>
         <label id="${safe(eq.名称)}数量" >${safe(eq.数量)}个</label>
         </div>
        `
              let textContent1 = ``;
              for (let w = 0; w < eq.我方效果.length; w++) {
                if (eq.我方效果[w] !== "0") {
                  switch (w) {
                    case 0:
                      textContent1 += `|回复生命: ${safe(eq.我方效果[w])}`;
                      break;
                    case 1:
                      textContent1 += `|回复蓝量: ${safe(eq.我方效果[w])}`;
                      break;
                    case 2:
                      textContent1 += `|增加攻击力: ${safe(eq.我方效果[w])}`;
                      break;
                    case 3:
                      textContent1 += `|增加防御: ${safe(eq.我方效果[w])}`;
                      break;
                  }
                }
              }
              innerHTML += `
          <div class="progress-bar">
          <label>我方效果:</label>
          <label id="${safe(eq.名称)}我方效果" >${safe(textContent1)}</label>
          </div>`;

              let textContent2 = ``;
              for (let w = 0; w < eq.敌方效果.length; w++) {
                if (eq.敌方效果[w] !== "0") {
                  switch (w) {
                    case 0:
                      textContent2 += `|造成伤害: ${safe(eq.敌方效果[w])}`;
                      break;
                    case 1:
                      textContent2 += `|损失蓝量: ${safe(eq.敌方效果[w])}`;
                      break;
                    case 2:
                      textContent2 += `|降低攻击力: ${safe(eq.敌方效果[w])}`;
                      break;
                    case 3:
                      textContent2 += `|降低防御: ${safe(eq.敌方效果[w])}`;
                      break;
                  }
                }
              }
              innerHTML += `
         <div class="progress-bar">
         <label>敌方效果:</label>
         <label id="${safe(eq.名称)}敌方效果" >${safe(textContent2)}</label>
         </div>
         </div>`;


         innerHTML += `</div>
        <div id="buttons">
          <button class="buyeq" id="${safe(eq.名称)}">购买</button>
        </div>`
        if(Number(eq.数量)>=10){
        innerHTML += `<div id="buttons">
          <button class="buyeq" id="${safe(eq.名称)}10">购买10个</button>
        </div>
        `;
        }
        eqs.push(eq);
          itemList2.innerHTML+=innerHTML;
        } else {
          itemList2.innerHTML += `<div class="info-box">
          <p><span id="${safe(eq.名称)}name">${safe(eq.名称)}列表没有?</span></p>
           </div>
            `
              }

            }
          }




          if (category == "材料") {
            console.log("name",name)
            let commodity = rpg[name][1]["角色"]["rpg属性json"]["可出售物品"];


            itemList2.innerHTML = ``;
            for (let i = 0; i < commodity.length; i++) {
              let eq = commodity[i];
              if (eq.物品分类 != "材料") {
                continue;
              }
              console.log("材料",commodity)
             for(let w=0;w < rpg[eq.物品分类][1]["json"].length;w++){
                if(rpg[eq.物品分类][1]["json"][w].名称==eq.名称){
                  let 数量=eq.数量;
                  eq=rpg[eq.物品分类][1]["json"][w];
                  eq.数量=数量;
                  break;
                }
             }
             console.log("eq", eq);
             let  innerHTML="";
             if (Object.keys(eq).length !== 0) {
               innerHTML +=`<div class="info-box">
        <p><span id="${safe(eq.名称)}名称">${safe(eq.名称)}</span></p>
          <div class="progress-bar">
          <label>简介:</label>
          <label id="${safe(eq.名称)}简介" >${safe(eq.简介)}</label>
          </div>
         <div class="progress-bar">
         <label>价格:</label>
         <label id="${safe(eq.名称)}价格" >${safe(eq.价值)}金币</label>
         </div>
         <div class="progress-bar">
         <label>数量:</label>
         <label id="${safe(eq.名称)}数量" >${safe(eq.数量)}个</label>
         </div>
        `
         innerHTML += `</div>
        <div id="buttons">
          <button class="buyeq" id="${safe(eq.名称)}">购买</button>
        </div>`
        if(Number(eq.数量)>=10){
        innerHTML += `<div id="buttons">
          <button class="buyeq" id="${safe(eq.名称)}10">购买10个</button>
        </div>
        `;
        }
        eqs.push(eq);

          itemList2.innerHTML+=innerHTML;
        } else {
          itemList2.innerHTML += `<div class="info-box">
          <p><span id="${safe(eq.名称)}name">${safe(eq.名称)}列表没有?</span></p>
           </div>
            `
              }

            }
          }

          ////////卖东西

          if (category == "卖装备") {
            console.log("name",name)
            let commodity = rpg["用户背包"][1]["json"]["装备"]
            itemList2.innerHTML = ``;
            for (let i = 0; i < commodity.length; i++) {
              let eq = commodity[i];
              let innerHTML="";
              if (eq.物品分类 != "装备") {
                continue;
              }
             if(rpg["用户"][1]["角色"]["战斗属性json"]["已装备"][eq.部位].名称==eq.名称){
              continue;
             }

              console.log("装备",commodity)
             for(let w=0;w < rpg[eq.物品分类][1]["json"].length;w++){
                if(rpg[eq.物品分类][1]["json"][w].名称==eq.名称){
                  let 数量=eq.数量;
                  eq=rpg[eq.物品分类][1]["json"][w];
                  eq.数量=数量;
                  break;
                }
             }
              console.log("eq", eq);
              if (Object.keys(eq).length !== 0) {

                innerHTML += `<div class="info-box">
          <p><span id="${safe(eq.名称)}name">${safe(eq.部位)}</span></p>
            <div class="progress-bar">
            <label>名称:</label>
            <label id="${safe(eq.名称)}名称" >${safe(eq.名称)}</label>
            </div>
         <div class="progress-bar">
            <label>简介:</label>
            <label id="${safe(eq.名称)}简介" >${safe(eq.简介)}</label>
          </div>
           <div class="progress-bar">
            <label>攻击力:</label>
            <label id="${safe(eq.名称)}攻击力" >${safe(eq.攻击力 || '无')}</label>
          </div>
           <div class="progress-bar">
            <label>防御:</label>
            <label id="${safe(eq.名称)}防御" >${safe(eq.防御 || '无')}</label>
          </div>
           <div class="progress-bar">
         <label>价格:</label>
         <label id="${safe(eq.名称)}价格" >${safe(Number(eq.价值)/100*80)}金币</label>
         </div>
         <div class="progress-bar">
         <label>数量:</label>
         <label id="${safe(eq.名称)}数量" >${safe(eq.数量)}个</label>
         </div>
          `
                if (eq.hasOwnProperty("附带技能")&&Object.keys(eq.附带技能).length !== 0) {
                  innerHTML += `<div class="progress-bar">
            <label>附带技能:</label>
            <label id="${safe(eq.名称)}名称">${safe(eq.附带技能[名称] || '无')}</label>
            </div>
            <div class="progress-bar">
            <label>技能简介:</label>
            <label id="${safe(eq.名称)}简介">${safe(eq.附带技能[简介] || '无')}</label>
            </div>`
                }
                innerHTML += `</div>
        <div id="buttons">
          <button class="selleq" id="${safe(eq.名称)}">出售</button>
        </div>`
        if(Number(eq.数量)>=10){
        innerHTML += `<div id="buttons">
          <button class="selleq" id="${safe(eq.名称)}10">出售10个</button>
        </div>
        `;
        }
        eqs2.push(eq);
        itemList2.innerHTML+=innerHTML;
              } else {
          itemList2.innerHTML += `<div class="info-box">
          <p><span id="${safe(eq.名称)}name">${safe(eq.名称)}列表没有?</span></p>

           </div>
            `

              }
            }
          }


          if (category == "卖可消耗物品") {
            console.log("name",name)
            let commodity = rpg["用户背包"][1]["json"]["可消耗物品"]
            itemList2.innerHTML = ``;
            for (let i = 0; i < commodity.length; i++) {
              let eq = commodity[i];
              if (eq.物品分类 != "可消耗物品") {
                continue;
              }
              let eqeq=rpg["用户"][1]["角色"]["战斗属性json"]["可消耗物品"];
              let go=false;
              for(let w=0;w<eqeq.length;w++){
                  if(eqeq[w].名称==eq.名称){
                    go=true;
                  }
                }
            if(go){
              continue;
            }

              console.log("可消耗物品",commodity)
             for(let w=0;w < rpg[eq.物品分类][1]["json"].length;w++){
                if(rpg[eq.物品分类][1]["json"][w].名称==eq.名称){
                  let 数量=eq.数量;
                  eq=rpg[eq.物品分类][1]["json"][w];
                  eq.数量=数量;
                  break;
                }
             }
              console.log("eq", eq);
              let innerHTML="";
             if (Object.keys(eq).length !== 0) {
               innerHTML +=`<div class="info-box">
        <p><span id="${safe(eq.名称)}名称">${safe(eq.名称)}</span></p>
          <div class="progress-bar">
          <label>简介:</label>
          <label id="${safe(eq.名称)}简介" >${safe(eq.简介)}</label>
          </div>
         <div class="progress-bar">
         <label>价格:</label>
         <label id="${safe(eq.名称)}价格" >${safe(Number(eq.价值)/100*80)}金币</label>
         </div>
         <div class="progress-bar">
         <label>数量:</label>
         <label id="${safe(eq.名称)}数量" >${safe(eq.数量)}个</label>
         </div>
        `
              let textContent1 = ``;
              for (let w = 0; w < eq.我方效果.length; w++) {
                if (eq.我方效果[w] !== "0") {
                  switch (w) {
                    case 0:
                      textContent1 += `|回复生命: ${safe(eq.我方效果[w])}`;
                      break;
                    case 1:
                      textContent1 += `|回复蓝量: ${safe(eq.我方效果[w])}`;
                      break;
                    case 2:
                      textContent1 += `|增加攻击力: ${safe(eq.我方效果[w])}`;
                      break;
                    case 3:
                      textContent1 += `|增加防御: ${safe(eq.我方效果[w])}`;
                      break;
                  }
                }
              }
              innerHTML += `
          <div class="progress-bar">
          <label>我方效果:</label>
          <label id="${safe(eq.名称)}我方效果" >${safe(textContent1)}</label>
          </div>`;

              let textContent2 = ``;
              for (let w = 0; w < eq.敌方效果.length; w++) {
                if (eq.敌方效果[w] !== "0") {
                  switch (w) {
                    case 0:
                      textContent2 += `|造成伤害: ${safe(eq.敌方效果[w])}`;
                      break;
                    case 1:
                      textContent2 += `|损失蓝量: ${safe(eq.敌方效果[w])}`;
                      break;
                    case 2:
                      textContent2 += `|降低攻击力: ${safe(eq.敌方效果[w])}`;
                      break;
                    case 3:
                      textContent2 += `|降低防御: ${safe(eq.敌方效果[w])}`;
                      break;
                  }
                }
              }
              innerHTML += `
         <div class="progress-bar">
         <label>敌方效果:</label>
         <label id="${safe(eq.名称)}敌方效果" >${safe(textContent2)}</label>
         </div>
         </div>`;


         innerHTML += `</div>
         <div id="buttons">
           <button class="selleq" id="${safe(eq.名称)}">出售</button>
         </div>`
         if(Number(eq.数量)>=10){
         innerHTML += `<div id="buttons">
           <button class="selleq" id="${safe(eq.名称)}10">出售10个</button>
         </div>
         `;
         }
         eqs2.push(eq);

          itemList2.innerHTML+=innerHTML;
        } else {
          itemList2.innerHTML += `<div class="info-box">
          <p><span id="${safe(eq.名称)}name">${safe(eq.名称)}列表没有?</span></p>
           </div>
            `
              }

            }
          }



          if (category == "卖材料") {
            console.log("name",name)
            let commodity = rpg["用户背包"][1]["json"]["材料"]
            itemList2.innerHTML = ``;
            for (let i = 0; i < commodity.length; i++) {
              let eq = commodity[i];
              if (eq.物品分类 != "材料") {
                continue;
              }

              console.log("材料",commodity)
             for(let w=0;w < rpg[eq.物品分类][1]["json"].length;w++){
                if(rpg[eq.物品分类][1]["json"][w].名称==eq.名称){
                  let 数量=eq.数量;
                  eq=rpg[eq.物品分类][1]["json"][w];
                  eq.数量=数量;
                  break;
                }
             }
              console.log("eq", eq);
              let innerHTML="";
             if (Object.keys(eq).length !== 0) {
               innerHTML +=`<div class="info-box">
        <p><span id="${safe(eq.名称)}名称">${safe(eq.名称)}</span></p>
          <div class="progress-bar">
          <label>简介:</label>
          <label id="${safe(eq.名称)}简介" >${safe(eq.简介)}</label>
          </div>
         <div class="progress-bar">
         <label>价格:</label>
         <label id="${safe(eq.名称)}价格" >${safe(Number(eq.价值)/100*80)}金币</label>
         </div>
         <div class="progress-bar">
         <label>数量:</label>
         <label id="${safe(eq.名称)}数量" >${safe(eq.数量)}个</label>
         </div>
        `
        innerHTML += `</div>
        <div id="buttons">
          <button class="selleq" id="${safe(eq.名称)}">出售</button>
        </div>`
        if(Number(eq.数量)>=10){
        innerHTML += `<div id="buttons">
          <button class="selleq" id="${safe(eq.名称)}10">出售10个</button>
        </div>
        `;
        }
        eqs2.push(eq);
          itemList2.innerHTML+=innerHTML;
        } else {
          itemList2.innerHTML += `<div class="info-box">
          <p><span id="${safe(eq.名称)}name">${safe(eq.名称)}列表没有?</span></p>
           </div>
            `
              }

            }
          }


          console.log("eqs",eqs)
          for(let e=0;e<eqs.length;e++){
            let eq=eqs[e];
            let elements = document.getElementById(`${safe(eq.名称)}`);
            if (elements) {
              elements.addEventListener("click", function (Event) {
                  buyeq(eq,Number(eq.价值)*1,showshop,name,1);
                })

            }
            let elements2 = document.getElementById(`${safe(eq.名称)}10`);
            if (elements2) {
                elements2.addEventListener("click", function (Event) {
                  buyeq(eq,Number(eq.价值)*1,showshop,name,10);
                })
            }
          }

          console.log("eqs2",eqs2)
          for(let e2=0;e2<eqs2.length;e2++){
            let eq=eqs2[e2];
            let elements = document.getElementById(`${safe(eq.名称)}`);
            if (elements) {
              elements.addEventListener("click", function (Event) {
                selleq(eq,Number(eq.价值)/100*80,showshop,name,1);
                })

            }
            let elements2 = document.getElementById(`${safe(eq.名称)}10`);
            if (elements2) {
                elements2.addEventListener("click", function (Event) {
                  selleq(eq,Number(eq.价值)/100*80,showshop,name,10);
                })
            }
          }









        }
        showshop("装备",name);

        ////商店
      }

      if(category == "制造"){
        let eqs=[];
        console.log("name",name)
        let commodity = rpg[name][1]["角色"]["rpg属性json"]["可制造物品"];
        itemList.innerHTML = ``;
        let nowgoldnumber=document.createElement('div');
        nowgoldnumber.textContent = `$${rpg["用户"][1]["角色"]["拥有金币"]}`;
        nowgoldnumber.style.border = 'none';
        nowgoldnumber.style.borderRadius = '1px';
        nowgoldnumber.style.marginLeft='40%';
  //      nowgoldnumber.width='100%';
     //   nowgoldnumber.height='100%';
        nowgoldnumber.id="coinContainer";
        nowgoldnumber.classList.add('coin2');
        const style = document.createElement('style');//  line-height: 100px; //   border-radius: 50%;  // box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
        style.textContent = `
          .coin2 {
              background: linear-gradient(45deg, #ffd700, #c79810);
              display: inline-block;
              font-size: 18px;
              color: #fff;
              text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
          }
        `;
        document.head.appendChild(style);
       // itemList.style.textAlign = 'center';
        itemList.appendChild(nowgoldnumber);
        const itemList2 = document.createElement('ul');
        itemList2.style.listStyle = 'none';
        itemList2.style.padding = '0';
        itemList.appendChild(itemList2);

        for (let i = 0; i < commodity.length; i++) {
          let eq = commodity[i];
          console.log("可制造物品",commodity)
         for(let w=0;w < rpg[eq.物品分类][1]["json"].length;w++){
            if(rpg[eq.物品分类][1]["json"][w].名称==eq.名称){
              let 数量=eq.数量;
              eq=rpg[eq.物品分类][1]["json"][w];
              eq.数量=数量;
              break;
            }
         }
          console.log("eq", eq);
          let  price=Number(`${safe(eq.价值)}`)
          let innerHTML="";
          if (Object.keys(eq).length !== 0&&eq.物品分类=="装备") {
            innerHTML += `<div class="info-box">
      <p><span id="${safe(eq.名称)}name">${safe(eq.部位)}</span></p>
        <div class="progress-bar">
        <label>名称:</label>
        <label id="${safe(eq.名称)}名称" >${safe(eq.名称)}</label>
        </div>
     <div class="progress-bar">
        <label>简介:</label>
        <label id="${safe(eq.名称)}简介" >${safe(eq.简介)}</label>
      </div>
       <div class="progress-bar">
        <label>攻击力:</label>
        <label id="${safe(eq.名称)}攻击力" >${safe(eq.攻击力 || '无')}</label>
      </div>
       <div class="progress-bar">
        <label>防御:</label>
        <label id="${safe(eq.名称)}防御" >${safe(eq.防御 || '无')}</label>
      </div>
       <div class="progress-bar">
     <label>价格:</label>
     <label id="${safe(eq.名称)}价格" >${price}金币</label>
     </div>
     <div class="progress-bar">
        <label>所需材料:</label>
        <label id="${safe(eq.名称)}所需材料" >${safe(eq.所需材料)}个</label>
        </div>
      `
     if (eq.hasOwnProperty("附带技能")&&Object.keys(eq.附带技能).length !== 0) {
              innerHTML += `<div class="progress-bar">
        <label>附带技能:</label>
        <label id="${safe(eq.名称)}名称">${safe(eq.附带技能[名称] || '无')}</label>
        </div>
        <div class="progress-bar">
        <label>技能简介:</label>
        <label id="${safe(eq.名称)}简介">${safe(eq.附带技能[简介] || '无')}</label>
        </div>`
            }
            innerHTML += `</div>
    </div>
    <div id="buttons">
      <button class="buyeq" id="${safe(eq.名称)}">制作</button>
    </div>`
     innerHTML += `<div id="buttons">
      <button class="buyeq" id="${safe(eq.名称)}10">制作10个</button>
    </div>
    `;
    eqs.push(eq);

    itemList2.innerHTML+=innerHTML;

   }

   if(Object.keys(eq).length !== 0&&eq.物品分类=="可消耗物品"){
              innerHTML +=`<div class="info-box">
        <p><span id="${safe(eq.名称)}名称">${safe(eq.物品分类)}</span></p>
                  <div class="progress-bar">
          <label>简介:</label>
          <label id="${safe(eq.名称)}简介" >${safe(eq.名称)}</label>
          </div>
          <div class="progress-bar">
          <label>简介:</label>
          <label id="${safe(eq.名称)}简介" >${safe(eq.简介)}</label>
          </div>
        <div class="progress-bar">
        <label>价格:</label>
        <label id="${safe(eq.名称)}价格" >${safe(eq.价值)}金币</label>
        </div>
        <div class="progress-bar">
        <label>所需材料:</label>
        <label id="${safe(eq.名称)}所需材料" >${safe(eq.所需材料)}个</label>
        </div>
        `
      let textContent1 = ``;
      for (let w = 0; w < eq.我方效果.length; w++) {
        if (eq.我方效果[w] !== "0") {
          switch (w) {
            case 0:
              textContent1 += `|回复生命: ${safe(eq.我方效果[w])}`;
              break;
            case 1:
              textContent1 += `|回复蓝量: ${safe(eq.我方效果[w])}`;
              break;
            case 2:
              textContent1 += `|增加攻击力: ${safe(eq.我方效果[w])}`;
              break;
            case 3:
              textContent1 += `|增加防御: ${safe(eq.我方效果[w])}`;
              break;
          }
        }
      }
            innerHTML += `
        <div class="progress-bar">
        <label>我方效果:</label>
        <label id="${safe(eq.名称)}我方效果" >${safe(textContent1)}</label>
        </div>`;

            let textContent2 = ``;
            for (let w = 0; w < eq.敌方效果.length; w++) {
              if (eq.敌方效果[w] !== "0") {
                switch (w) {
                  case 0:
                    textContent2 += `|造成伤害: ${safe(eq.敌方效果[w])}`;
                    break;
                  case 1:
                    textContent2 += `|损失蓝量: ${safe(eq.敌方效果[w])}`;
                    break;
                  case 2:
                    textContent2 += `|降低攻击力: ${safe(eq.敌方效果[w])}`;
                    break;
                  case 3:
                    textContent2 += `|降低防御: ${safe(eq.敌方效果[w])}`;
                    break;
                }
              }
            }
              innerHTML += `
        <div class="progress-bar">
        <label>敌方效果:</label>
        <label id="${safe(eq.名称)}敌方效果" >${safe(textContent2)}</label>
        </div>
        </div>`;


        innerHTML += `</div>
        <div id="buttons">
          <button class="buyeq" id="${safe(eq.名称)}">制作</button>
        </div>`

        innerHTML += `<div id="buttons">
          <button class="buyeq" id="${safe(eq.名称)}10">制作10个</button>
        </div>
        `;

        eqs.push(eq);
        itemList2.innerHTML+=innerHTML;
        }
        }//for

        if(eqs.length>0){


          for(let i=0;i<eqs.length;i++){
            let eq=eqs[i];
            let Element= document.getElementById(`${safe(eq.名称)}`)
            if(Element){
              Element.onclick=function(){
                 zhizao(eq,Number(eq.价值)*1,showItems,name,1);
              }

            }
            let Element2= document.getElementById(`${safe(eq.名称)}10`)
            if(Element2){
              Element2.onclick=function(){
                 zhizao(eq,Number(eq.价值)*1,showItems,name,10);
              }

            }


            }


        }


      }//制造


      if(category == "可学习技能"){
          let eqs=[];
        console.log("name",name)
        let commodity = rpg[name][1]["角色"]["rpg属性json"]["可学习技能"];
        itemList.innerHTML = ``;
        let nowgoldnumber=document.createElement('div');
        nowgoldnumber.textContent = `$${rpg["用户"][1]["角色"]["拥有金币"]}`;
        nowgoldnumber.style.border = 'none';
        nowgoldnumber.style.borderRadius = '1px';
        nowgoldnumber.style.marginLeft='40%';
  //      nowgoldnumber.width='100%';
     //   nowgoldnumber.height='100%';
        nowgoldnumber.id="coinContainer";
        nowgoldnumber.classList.add('coin2');
        const style = document.createElement('style');//  line-height: 100px; //   border-radius: 50%;  // box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
        style.textContent = `
          .coin2 {
              background: linear-gradient(45deg, #ffd700, #c79810);
              display: inline-block;
              font-size: 18px;
              color: #fff;
              text-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
          }
        `;
        document.head.appendChild(style);
       // itemList.style.textAlign = 'center';
        itemList.appendChild(nowgoldnumber);
        const itemList2 = document.createElement('ul');
        itemList2.style.listStyle = 'none';
        itemList2.style.padding = '0';
        itemList.appendChild(itemList2);

        for (let i = 0; i < commodity.length; i++) {
          let eq = commodity[i];
          console.log("可学习技能",commodity)
         for(let w=0;w < rpg[eq.物品分类][1]["json"].length;w++){
            if(rpg[eq.物品分类][1]["json"][w].名称==eq.名称){
              let 数量=eq.数量;
              eq=rpg[eq.物品分类][1]["json"][w];
              eq.数量=数量;
              break;
            }
         }
         let beibao=rpg["用户背包"][1]["json"][eq.物品分类]
         let go=false;

         for(let b=0;b<beibao.length;b++){

              if(beibao[b].名称==eq.名称) {

                go=true;
                break;

              }

         }

         if(go){
            continue;

         }
          console.log("eq", eq);
          let  price=Number(`${safe(eq.价值)}`)
          let innerHTML="";
          if (Object.keys(eq).length !== 0&&eq.物品分类=="技能"){
            innerHTML += `<div class="info-box">
      <p><span id="${safe(eq.名称)}名称">${safe(eq.名称)}</span></p>
       <div class="progress-bar">
      <label>是否主动:</label>
      <label id="${safe(eq.名称)}是否主动" >${safe(eq.是否主动)}</label>
      </div>
      <div class="progress-bar">
      <label>简介:</label>
      <label id="${safe(eq.名称)}简介" >${safe(eq.简介)}</label>
      </div>
      <div class="progress-bar">
      <label>消耗蓝量:</label>
      <label id="${safe(eq.消耗蓝量)}消耗蓝量" >${safe(eq.消耗蓝量)}</label>
      </div>
      <div class="progress-bar">
      <label>特殊效果:</label>
      <label id="${safe(eq.名称)}特殊效果" >${safe(eq.特殊效果)}</label>
      </div>
      <div class="progress-bar">
      <label>价格:</label>
      <label id="${safe(eq.名称)}价格" >${safe(eq.价值)}</label>
      </div>
    `
          let textContent1 = ``;
          for (let w = 0; w < eq.我方效果.length; w++) {
            if (eq.我方效果[w] !== "0") {
              switch (w) {
                case 0:
                  textContent1 += `\n回复生命: ${safe(eq.我方效果[w])}`;
                  break;
                case 1:
                  textContent1 += `\n回复蓝量: ${safe(eq.我方效果[w])}`;
                  break;
                case 2:
                  textContent1 += `\n增加攻击力: ${safe(eq.我方效果[w])}`;
                  break;
                case 3:
                  textContent1 += `\n增加防御: ${safe(eq.我方效果[w])}`;
                  break;
              }
            }
          }
          innerHTML += `
      <div class="progress-bar">
      <label>我方效果:</label>
      <label id="${safe(eq.名称)}我方效果" >${safe(textContent1)}</label>
      </div>`;

          let textContent2 = ``;
          for (let w = 0; w < eq.敌方效果.length; w++) {
            if (eq.敌方效果[w] !== "0") {
              switch (w) {
                case 0:
                  textContent2 += `|造成伤害: ${safe(eq.敌方效果[w])}`;
                  break;
                case 1:
                  textContent2 += `|损失蓝量: ${safe(eq.敌方效果[w])}`;
                  break;
                case 2:
                  textContent2 += `|降低攻击力: ${safe(eq.敌方效果[w])}`;
                  break;
                case 3:
                  textContent2 += `|降低防御: ${safe(eq.敌方效果[w])}`;
                  break;
              }
            }
          }
          innerHTML += `
     <div class="progress-bar">
     <label>敌方效果:</label>
     <label id="${safe(eq.名称)}敌方效果" >${safe(textContent2)}</label>
     </div>
     </div>`;



     innerHTML += `</div>
      </div>
      <div id="buttons">
        <button class="学习技能" id="${safe(eq.名称)}">学习</button>
      </div>`
      eqs.push(eq);
      itemList2.innerHTML+=innerHTML;

      ////////////////////////
     }//内容

    }//循环
    if(eqs.length>0){
      for(let i=0;i<eqs.length;i++){
        let eq=eqs[i];
        let Element= document.getElementById(`${safe(eq.名称)}`)
        if(Element){
          Element.onclick=function(){
             xuexijineng(eq,Number(eq.价值)*1,showItems,name,1);
          }

        }


        }


    }


       }//学习技能


    }
    showItems("人物信息");


}//其他角色信息

//____________________________________________________________________________
//学习技能

function xuexijineng(eq,price,showItems,shop,eqnum){


  let neweq="";

  for(let i=0;i< rpg[eq.物品分类][1]["json"].length;i++){

  if(rpg[eq.物品分类][1]["json"][i].名称==eq.名称){

    neweq=rpg[eq.物品分类][1]["json"][i];
    break;

  }
  }
  if(neweq!=""){
    console.log("eq",eq);
    let userGold=rpg["用户"][1]["角色"]["拥有金币"];
    console.log("userGold",userGold);
    if(Number(userGold)<(Number(price)*Number(eqnum))){
      alert("你钱不够");
      return false;
    }
    if(!confirm("确定是否学习:"+neweq.名称)){
     return false;
    }
    function updatenowgold(gold){
      let nowgold= document.getElementById("coinContainer");
      if(nowgold){
       nowgold.textContent=`$${safe(rpg["用户"][1]["角色"]["拥有金币"]||"0")}`;
      }
    }

    console.log("neweq",neweq);
    if(neweq.hasOwnProperty("所需材料")){
    let cls=neweq.所需材料.split("|");
    let cls2=[];
    for(let c=0;c<rpg["用户背包"][1]["json"]["材料"].length;c++){
      for(let c2=0;c2<cls.length;c2++){

          if(rpg["用户背包"][1]["json"]["材料"][c].名称==cls[c2].split("*")[0]){
                 let cnum=Number(rpg["用户背包"][1]["json"]["材料"][c].数量)-Number(cls[c2].split("*")[1]);
               if(cnum==0){
                cls2.push("1");
                 }
               if(cnum>0){
                cls2.push("1");
               }
               if(cnum<0){
                alert("材料不足");
                return false;
               }

          }
      }

    }
    if(cls.length !== cls2.length){
       alert("材料不足")
      return;
    }


    for(let c=0;c<rpg["用户背包"][1]["json"]["材料"].length;c++){
      for(let c2=0;c2<cls.length;c2++){

          if(rpg["用户背包"][1]["json"]["材料"][c].名称==cls[c2].split("*")[0]){
                 let cnum=Number(rpg["用户背包"][1]["json"]["材料"][c].数量)-Number(cls[c2].split("*")[1]);
               if(cnum==0){
                rpg["用户背包"][1]["json"]["材料"].splice(c, 1);
                 }
               if(cnum>0){
                rpg["用户背包"][1]["json"]["材料"][c].数量=cnum;
               }
               if(cnum<0){
                alert("材料不足");
                return false;
               }

          }
      }

    }
  }

    let go=true;
    for(let y=0;y<rpg["用户背包"][1]["json"][neweq.物品分类].length;y++){

      if(rpg["用户背包"][1]["json"][neweq.物品分类][y].名称==eq.名称){
        rpg["用户背包"][1]["json"][neweq.物品分类][y].数量=Number(rpg["用户背包"][1]["json"][neweq.物品分类][y].数量)+Number(eqnum);
        rpg["用户"][1]["角色"]["拥有金币"]=Number(userGold)-(Number(price)*Number(eqnum));
        alert("成功学习!数量加一!");
        updatenowgold(rpg["用户"][1]["角色"]["拥有金币"])
        console.log("neweq",neweq);
        showItems("可学习技能");
        go=false;
        break;
      }

    }

    if(go){
      neweq.数量=eqnum;
      rpg["用户背包"][1]["json"][neweq.物品分类].push(JSON.parse(JSON.stringify(neweq)));
      rpg["用户"][1]["角色"]["拥有金币"]=Number(userGold)-(Number(price)*Number(eqnum));
      alert("成功学习"+neweq.数量);
      updatenowgold(rpg["用户"][1]["角色"]["拥有金币"])
      showItems("可学习技能");
    }


  }else{


    alert("出错!找不到购买的商品")

  }



}









 //____________________________________________________________________________
//制造装备

function zhizao(eq,price,showItems,shop,eqnum){


  let neweq="";

  for(let i=0;i< rpg[eq.物品分类][1]["json"].length;i++){

  if(rpg[eq.物品分类][1]["json"][i].名称==eq.名称){

    neweq=rpg[eq.物品分类][1]["json"][i];
    break;

  }
  }
  if(neweq!=""){
    console.log("eq",eq);
    let userGold=rpg["用户"][1]["角色"]["拥有金币"];
    console.log("userGold",userGold);
    if(Number(userGold)<(Number(price)*Number(eqnum))){
      alert("你钱不够");
      return false;
    }
    if(!confirm("确定是否制造:"+eqnum+"个"+neweq.名称)){
     return false;
    }
    function updatenowgold(gold){
      let nowgold= document.getElementById("coinContainer");
      if(nowgold){
       nowgold.textContent=`$${safe(rpg["用户"][1]["角色"]["拥有金币"]||"0")}`;
      }
    }

    console.log("neweq",neweq);

    let cls=neweq.所需材料.split("|");
    let cls2=[];
    for(let c=0;c<rpg["用户背包"][1]["json"]["材料"].length;c++){
      for(let c2=0;c2<cls.length;c2++){

          if(rpg["用户背包"][1]["json"]["材料"][c].名称==cls[c2].split("*")[0]){
                 let cnum=Number(rpg["用户背包"][1]["json"]["材料"][c].数量)-Number(cls[c2].split("*")[1]);
               if(cnum==0){
                cls2.push("1");
                 }
               if(cnum>0){
                cls2.push("1");
               }
               if(cnum<0){
                alert("材料不足");
                return false;
               }

          }
      }

    }
    if(cls.length !== cls2.length){
       alert("材料不足")
      return;
    }

    for(let c=0;c<rpg["用户背包"][1]["json"]["材料"].length;c++){
      for(let c2=0;c2<cls.length;c2++){

          if(rpg["用户背包"][1]["json"]["材料"][c].名称==cls[c2].split("*")[0]){
                 let cnum=Number(rpg["用户背包"][1]["json"]["材料"][c].数量)-Number(cls[c2].split("*")[1]);
               if(cnum==0){
                rpg["用户背包"][1]["json"]["材料"].splice(c, 1);
                 }
               if(cnum>0){
                rpg["用户背包"][1]["json"]["材料"][c].数量=cnum;
               }
               if(cnum<0){
                alert("材料不足");
                return false;
               }

          }
      }

    }

     let go=true;
    for(let y=0;y<rpg["用户背包"][1]["json"][neweq.物品分类].length;y++){

      if(rpg["用户背包"][1]["json"][neweq.物品分类][y].名称==eq.名称){
        rpg["用户背包"][1]["json"][neweq.物品分类][y].数量=Number(rpg["用户背包"][1]["json"][neweq.物品分类][y].数量)+Number(eqnum);
        rpg["用户"][1]["角色"]["拥有金币"]=Number(userGold)-(Number(price)*Number(eqnum));
        alert("制造成功!数量加一!");
        updatenowgold(rpg["用户"][1]["角色"]["拥有金币"])
        console.log("neweq",neweq);
        showItems("制造");
        go=false;
        break;
      }

    }

    if(go){
      neweq.数量=eqnum;
      rpg["用户背包"][1]["json"][neweq.物品分类].push(JSON.parse(JSON.stringify(neweq)));
      rpg["用户"][1]["角色"]["拥有金币"]=Number(userGold)-(Number(price)*Number(eqnum));
      alert("制造成功"+neweq.数量);
      updatenowgold(rpg["用户"][1]["角色"]["拥有金币"])
      showItems("制造");
    }


  }else{


    alert("出错!找不到购买的商品")

  }



}





  //____________________________________________________________________________
//出售装备

function selleq(eq,price,showshop,shop,eqnum){


  let neweq="";

  for(let i=0;i< rpg[eq.物品分类][1]["json"].length;i++){

  if(rpg[eq.物品分类][1]["json"][i].名称==eq.名称){

    neweq=rpg[eq.物品分类][1]["json"][i];
    break;

  }
  }
  if(neweq!=""){
    console.log("eq",eq);
    let userGold=rpg["用户"][1]["角色"]["拥有金币"];
    console.log("userGold",userGold);
    if(!confirm("确定是否出售:"+eq.名称)){
     return false;
    }
     function updatenowgold(gold){
      let nowgold= document.getElementById("coinContainer");
      if(nowgold){
       nowgold.textContent=`$${safe(rpg["用户"][1]["角色"]["拥有金币"]||"0")}`;
      }
    }

    for(let y=0;y<rpg["用户背包"][1]["json"][neweq.物品分类].length;y++){

      if(rpg["用户背包"][1]["json"][neweq.物品分类][y].名称==neweq.名称){
        var num = Number(rpg["用户背包"][1]["json"][neweq.物品分类][y]["数量"]) - Number(eqnum);
        if (num < 1) {
          rpg["用户背包"][1]["json"][neweq.物品分类].splice(y, 1);
        } else {
          rpg["用户背包"][1]["json"][neweq.物品分类][y]["数量"] = num

        }
        rpg["用户"][1]["角色"]["拥有金币"]=Number(userGold)+(Number(price)*eqnum);
        alert("出售成功!");
        updatenowgold(rpg["用户"][1]["角色"]["拥有金币"])
        console.log("neweq",neweq);
        showshop("卖"+eq.物品分类,shop);
        return true;
      }

    }
  }else{
    alert("出错!找不到购买的商品")
  }



}


//____________________________________________________________________________
//购买装备

function updatashop(neweq,price,showshop,shop,num){    //更新商店 装备 价格  函数  人物名称  数量
  let commoditys = rpg[shop][1]["角色"]["rpg属性json"]["可出售物品"];
  for (let i = 0; i < commoditys.length; i++) {
    let commodity = commoditys[i];
    if (neweq.物品分类==commodity.物品分类&&neweq.名称 == commodity.名称) {
      var num2 = Number(rpg[shop][1]["角色"]["rpg属性json"]["可出售物品"][i]["数量"]) - Number(num);
      if (num2 < 1) {
        rpg[shop][1]["角色"]["rpg属性json"]["可出售物品"].splice(i, 1);
      } else {
        rpg[shop][1]["角色"]["rpg属性json"]["可出售物品"][i]["数量"] = num2;
      }
      showshop(neweq.物品分类,shop);
    }
  }
}

function buyeq(eq,price,showshop,shop,num){//装备 价格  函数  人物名称  数量
  let neweq="";

  for(let i=0;i< rpg[eq.物品分类][1]["json"].length;i++){

      if(rpg[eq.物品分类][1]["json"][i].名称==eq.名称){

        neweq=rpg[eq.物品分类][1]["json"][i];
        neweq.数量=num;
        break;
      }
  }
  if(neweq!=""){
    console.log("eq",eq);
    let userGold=rpg["用户"][1]["角色"]["拥有金币"];
    console.log("userGold",userGold);
    if(Number(userGold)<(Number(price)*Number(num))){
      alert("你钱不够");
      return false;
    }
    if(!confirm("确定是否购买:"+neweq.名称)){
     return false;
    }
    function updatenowgold(gold){
      let nowgold= document.getElementById("coinContainer");
      if(nowgold){
       nowgold.textContent=`$${safe(rpg["用户"][1]["角色"]["拥有金币"]||"0")}`;
      }
    }

     let go=true;
    for(let y=0;y<rpg["用户背包"][1]["json"][neweq.物品分类].length;y++){

      if(rpg["用户背包"][1]["json"][neweq.物品分类][y].名称==eq.名称){
        rpg["用户背包"][1]["json"][neweq.物品分类][y].数量=Number(rpg["用户背包"][1]["json"][neweq.物品分类][y].数量)+Number(num);
        rpg["用户"][1]["角色"]["拥有金币"]=Number(userGold)-(Number(price)*Number(num));
        alert("购买成功!数量加一!");
        updatashop(eq,price,showshop,shop,num);
        updatenowgold(rpg["用户"][1]["角色"]["拥有金币"])
        console.log("neweq",neweq);
        go=false;
        break;
      }

    }

    if(go){
      neweq.数量=num;
      rpg["用户背包"][1]["json"][neweq.物品分类].push(JSON.parse(JSON.stringify(neweq)));
      rpg["用户"][1]["角色"]["拥有金币"]=Number(userGold)-(Number(price)*Number(num));
      alert("购买成功"+neweq.数量);
      updatenowgold(rpg["用户"][1]["角色"]["拥有金币"])
      updatashop(eq,price,showshop,shop,num);
    }


  }else{


    alert("出错!找不到购买的商品")

  }



}


  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //已接任务
  function quests() {
    const inventory = document.createElement('div');
    inventory.id = 'inventory';
    inventory.style.position = 'absolute';
    inventory.style.top = '50%';
    inventory.style.left = '50%';
    inventory.style.transform = 'translate(-50%, -50%)';
    inventory.style.backgroundColor = 'black';
    inventory.style.color = 'white';
    inventory.style.padding = '20px';
    inventory.style.border = '1px solid white';
    inventory.style.zIndex = '10000';
    inventory.style.display = 'block';
    inventory.style.overflowY = 'auto';
    inventory.style.borderRadius = '8px';
    inventory.style.maxHeight = '80vh';
    inventory.style.width = '80%';
    inventory.style.maxWidth = '600px';

    const closeButton = document.createElement('button');
    closeButton.textContent = '关闭';
    closeButton.style.position = 'absolute';
    closeButton.style.top = '10px';
    closeButton.style.right = '10px';
    closeButton.addEventListener('click', () => {
      inventory.style.display = 'none';
      inventory.remove();
    });
    inventory.appendChild(closeButton);

    const categories = ['已接任务', "已完成任务"];
    const buttons = categories.map(category => {
      const button = document.createElement('button');
      button.textContent = category;
      button.style.marginRight = '10px';
      button.addEventListener('click', () => {
        showItems(category);
      });
      return button;
    });
    const buttonContainer = document.createElement('div');
    buttonContainer.style.marginBottom = '10px';
    buttons.forEach(button => buttonContainer.appendChild(button));
    inventory.appendChild(buttonContainer);
    const itemList = document.createElement('ul');
    itemList.style.listStyle = 'none';
    itemList.style.padding = '0';
    inventory.appendChild(itemList);
    document.body.appendChild(inventory);
    function showItems(category) {
      itemList.innerHTML = '';
      if (category == "已接任务") {
        let character = rpg["用户"][1]["角色"]["rpg属性json"]["已接任务"];
        itemList.innerHTML = "";
        let innerHTML = '';
        for (let i = 0; i < character.length; i++) {
          let eq = character[i];
          innerHTML += `<div class="info-box">
          <p><span id="${safe(eq.名称)}名称">${safe(eq.名称)}</span></p>
            <div class="progress-bar">
            <label>发布者:</label>
            <label id="${safe(eq.名称)}发布者" >${safe(eq.发布者)}</label>
            </div>
             <div class="progress-bar">
            <label>详情:</label>
            <label id="${safe(eq.名称)}详情" >${safe(eq.详情)}</label>
            </div>
             <div class="progress-bar">
            <label>完成条件:</label>
            <label id="${safe(eq.名称)}完成条件" >${safe(eq.完成条件)}</label>
            </div>
          `
          let textContent1 = ``;
          for (let w = 0; w < eq.奖励.length; w++) {
            if (eq.奖励[w] !== "0") {
              textContent1 += `\n奖励${safe(eq.奖励[w]["物品分类"])}${safe(eq.奖励[w]["名称"])}${safe(eq.奖励[w]["数量"])}个`
            }
          }


          innerHTML += `
            <div class="progress-bar">
            <label>奖励:</label>
            <label id="${safe(eq.名称)}奖励" >${safe(textContent1)}</label>
            </div>
            </div>`;
          innerHTML += `
            </div>
            <div id="buttons">
              <button class="unloadmission" id="${safe(i)}">放弃任务</button>
            </div>
            `;

          console.log("innerHTML", innerHTML)
          itemList.innerHTML = innerHTML;
          let elements = document.getElementsByClassName("unloadmission");
          if (elements.length > 0) {
            for (let i = 0; i < elements.length; i++) {
              elements[i].addEventListener("click", function (Event) {
                unloadmission(Event.target.id);

              })

            }
          }
        }

      }

    }
    function unloadmission(id) {
      let character = rpg["用户"][1]["角色"]["rpg属性json"];
      character["已接任务"].splice(id, 1);
      alert("成功放弃任务");
      showItems("已接任务");
    }
    showItems("已接任务");

  }











  //_______________________________________________________________________________________________________________________
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //人物
  function renwu() {
    const inventory = document.createElement('div');
    inventory.id = 'inventory';
    inventory.style.position = 'absolute';
    inventory.style.top = '50%';
    inventory.style.left = '50%';
    inventory.style.transform = 'translate(-50%, -50%)';
    inventory.style.backgroundColor = 'black';
    inventory.style.color = 'white';
    inventory.style.padding = '20px';
    inventory.style.border = '1px solid white';
    inventory.style.zIndex = '10000';
    inventory.style.display = 'block';
    inventory.style.overflowY = 'auto';
    inventory.style.borderRadius = '8px';
    inventory.style.maxHeight = '80vh';
    inventory.style.width = '80%';
    inventory.style.maxWidth = '600px';

    const closeButton = document.createElement('button');
    closeButton.textContent = '关闭';
    closeButton.style.position = 'absolute';
    closeButton.style.top = '10px';
    closeButton.style.right = '10px';
    closeButton.addEventListener('click', () => {
      inventory.style.display = 'none';
      inventory.remove();
    });
    inventory.appendChild(closeButton);

    const categories = ['人物信息', '装备', '可消耗物品', "技能", 'buff'];
    const buttons = categories.map(category => {
      const button = document.createElement('button');
      button.textContent = category;
      button.style.marginRight = '10px';
      button.addEventListener('click', () => {
        showItems(category);
      });
      return button;
    });
    const buttonContainer = document.createElement('div');
    buttonContainer.style.marginBottom = '10px';
    buttons.forEach(button => buttonContainer.appendChild(button));
    inventory.appendChild(buttonContainer);
    const itemList = document.createElement('ul');
    itemList.style.listStyle = 'none';
    itemList.style.padding = '0';
    inventory.appendChild(itemList);
    document.body.appendChild(inventory);
    function showItems(category) {
      if (category == "人物信息") {
        let character = rpg["用户属性"];
        var health = Number(character.health.split('/')[0]) / Number(character.health.split('/')[1]) * 100; //分割字符串
        var mana = Number(character.mana.split('/')[0]) / Number(character.mana.split('/')[1]) * 100; //分割字符串
        var xp = Number(character.xp.split('/')[0]) / Number(character.xp.split('/')[1]) * 100;
        itemList.innerHTML = `<div class="info-box">
      <p><span id="name">${safe(character.name)}</span></p>
        <div class="progress-bar">
        <label>等级:</label>
        <label id="level-text" >${safe(character.level)}</label>
        </div>
         <div class="progress-bar">
        <label>阵营:</label>
        <label id="camp-text" >${safe(character.camp)}</label>
      </div>
       <div class="progress-bar">
        <label>人物简介:</label>
        <label id="Biography-text" >${safe(character.Biography)}</label>
      </div>
      <div class="progress-bar">
        <label>性别:</label>
        <label>${safe(character.gender)}</label>
      </div>
      <div class="health-container">
        <label>血量:</label>
        <div class="health-bar">
          <div id="health" class="fill" style="width: ${safe(health)}%;"></div>
          <div id="health-text" class="fill-text">${safe(character.health)}</div>
        </div>
      </div>
      <div class="mana-container">
        <label>蓝量:</label>
        <div class="mana-bar">
          <div id="mana" class="mana" style="width: ${safe(mana)}%;"></div>
          <div id="mana-text" class="mana-text">${safe(character.mana)}</div>
        </div>
      </div>
      <div class="progress-bar">
        <label>攻击力:</label>
        <label id="attack-text">${safe(character.attack)}</label>
      </div>
      <div class="progress-bar">
        <label>防御力:</label>
        <label id="defense-text" >${safe(character.defense)}</label>
      </div>
      <div class="progress-bar">
        <label>经验值:</label>
        <progress id="xp" value="${safe(xp)}" max="100"></progress>
      </div>
    </div>
  </div>

  `;

      }
      if (category == "装备") {
        let character = rpg["用户"][1]["角色"]["战斗属性json"]["已装备"];
        itemList.innerHTML = "";
        for (let [key, eq] of Object.entries(character)) {
          console.log("eq", eq.附带技能);
          if (Object.keys(eq).length !== 0) {
            itemList.innerHTML += `<div class="info-box">
      <p><span id="${safe(key)}name">${safe(eq.部位)}</span></p>
        <div class="progress-bar">
        <label>名称:</label>
        <label id="${safe(key)}名称" >${safe(eq.名称)}</label>
        </div>
     <div class="progress-bar">
        <label>简介:</label>
        <label id="${safe(key)}简介" >${safe(eq.简介)}</label>
      </div>
       <div class="progress-bar">
        <label>攻击力:</label>
        <label id="${safe(key)}攻击力" >${safe(eq.攻击力 || '无')}</label>
      </div>
       <div class="progress-bar">
        <label>防御:</label>
        <label id="${safe(key)}防御" >${safe(eq.防御 || '无')}</label>
      </div>

      `
            if (eq.hasOwnProperty("附带技能")&&Object.keys(eq.附带技能).length !== 0) {

              itemList.innerHTML += `<div class="progress-bar">
        <label>附带技能:</label>
        <label id="${safe(key)}名称">${safe(eq.附带技能[名称] || '无')}</label>
        </div>
        <div class="progress-bar">
        <label>技能简介:</label>
        <label id="${safe(key)}简介">${safe(eq.附带技能[简介] || '无')}</label>
        </div>`
            }

            itemList.innerHTML += `</div>
    </div>
    <div id="buttons">
      <button class="unloadeq" id="${safe(key)}">卸下装备</button>
    </div>
    `;
          } else {
            itemList.innerHTML += `<div class="info-box">
      <p><span id="${safe(key)}name">${safe(key)}</span></p>
        <div class="progress-bar">
        <label>名称:</label>
        <label id="${safe(key)}名称" >'无'</label>
        </div>
        </div>
      <div id="buttons">

       </div>
        `

          }
        }
      }

      let elements = document.getElementsByClassName("unloadeq");
      if (elements.length > 0) {
        for (let i = 0; i < elements.length; i++) {
          elements[i].addEventListener("click", function (Event) {
            unloadeq(Event.target.id);
          })


        }
      }



      if (category == "可消耗物品") {
        let character = rpg["用户"][1]["角色"]["战斗属性json"]["可消耗物品"];
        itemList.innerHTML = "";
        let innerHTML = '';
        for (let i = 0; i < character.length; i++) {
          let eq = character[i];
          innerHTML += `<div class="info-box">
    <p><span id="${safe(eq.名称)}名称">${safe(eq.名称)}</span></p>
      <div class="progress-bar">
      <label>简介:</label>
      <label id="${safe(eq.名称)}简介" >${safe(eq.简介)}</label>
      </div>
    `
          let textContent1 = ``;
          for (let w = 0; w < eq.我方效果.length; w++) {
            if (eq.我方效果[w] !== "0") {
              switch (w) {
                case 0:
                  textContent1 += `\n回复生命: ${safe(eq.我方效果[w])}`;
                  break;
                case 1:
                  textContent1 += `\n回复蓝量: ${safe(eq.我方效果[w])}`;
                  break;
                case 2:
                  textContent1 += `\n增加攻击力: ${safe(eq.我方效果[w])}`;
                  break;
                case 3:
                  textContent1 += `\n增加防御: ${safe(eq.我方效果[w])}`;
                  break;
              }
            }
          }
          innerHTML += `
      <div class="progress-bar">
      <label>我方效果:</label>
      <label id="${safe(eq.名称)}我方效果" >${safe(textContent1)}</label>
      </div>`;

          let textContent2 = ``;
          for (let w = 0; w < eq.敌方效果.length; w++) {
            if (eq.敌方效果[w] !== "0") {
              switch (w) {
                case 0:
                  textContent2 += `|造成伤害: ${safe(eq.敌方效果[w])}`;
                  break;
                case 1:
                  textContent2 += `|损失蓝量: ${safe(eq.敌方效果[w])}`;
                  break;
                case 2:
                  textContent2 += `|降低攻击力: ${safe(eq.敌方效果[w])}`;
                  break;
                case 3:
                  textContent2 += `|降低防御: ${safe(eq.敌方效果[w])}`;
                  break;
              }
            }
          }
          innerHTML += `
     <div class="progress-bar">
     <label>敌方效果:</label>
     <label id="${safe(eq.名称)}敌方效果" >${safe(textContent2)}</label>
     </div>
     </div>`;


          innerHTML += `
      </div>
      <div id="buttons">
        <button class="unloadwp" id="${safe(i)}">卸下可消耗物品</button>
      </div>
      `;

          console.log("innerHTML", innerHTML)
          itemList.innerHTML = innerHTML;
          let elements = document.getElementsByClassName("unloadwp");
          if (elements.length > 0) {
            for (let i = 0; i < elements.length; i++) {
              elements[i].addEventListener("click", function (Event) {
                unloadwp(Event.target.id);

              })

            }
          }

        }
      }


      if (category == "技能") {
        let character = rpg["用户"][1]["角色"]["战斗属性json"]["技能"];
        itemList.innerHTML = "";
        let innerHTML = '';
        for (let i = 0; i < character.length; i++) {
          let eq = character[i];
          innerHTML += `<div class="info-box">
    <p><span id="${safe(eq.名称)}名称">${safe(eq.名称)}</span></p>
       <div class="progress-bar">
      <label>是否主动:</label>
      <label id="${safe(eq.名称)}是否主动" >${safe(eq.是否主动)}</label>
      </div>
      <div class="progress-bar">
      <label>简介:</label>
      <label id="${safe(eq.名称)}简介" >${safe(eq.简介)}</label>
      </div>
      <div class="progress-bar">
      <label>消耗蓝量:</label>
      <label id="${safe(eq.消耗蓝量)}消耗蓝量" >${safe(eq.消耗蓝量)}</label>
      </div>
      <div class="progress-bar">
      <label>特殊效果:</label>
      <label id="${safe(eq.名称)}特殊效果" >${safe(eq.特殊效果)}</label>
      </div>
    `
          let textContent1 = ``;
          for (let w = 0; w < eq.我方效果.length; w++) {
            if (eq.我方效果[w] !== "0") {
              switch (w) {
                case 0:
                  textContent1 += `\n回复生命: ${safe(eq.我方效果[w])}`;
                  break;
                case 1:
                  textContent1 += `\n回复蓝量: ${safe(eq.我方效果[w])}`;
                  break;
                case 2:
                  textContent1 += `\n增加攻击力: ${safe(eq.我方效果[w])}`;
                  break;
                case 3:
                  textContent1 += `\n增加防御: ${safe(eq.我方效果[w])}`;
                  break;
              }
            }
          }
          innerHTML += `
      <div class="progress-bar">
      <label>我方效果:</label>
      <label id="${safe(eq.名称)}我方效果" >${safe(textContent1)}</label>
      </div>`;

          let textContent2 = ``;
          for (let w = 0; w < eq.敌方效果.length; w++) {
            if (eq.敌方效果[w] !== "0") {
              switch (w) {
                case 0:
                  textContent2 += `|造成伤害: ${safe(eq.敌方效果[w])}`;
                  break;
                case 1:
                  textContent2 += `|损失蓝量: ${safe(eq.敌方效果[w])}`;
                  break;
                case 2:
                  textContent2 += `|降低攻击力: ${safe(eq.敌方效果[w])}`;
                  break;
                case 3:
                  textContent2 += `|降低防御: ${safe(eq.敌方效果[w])}`;
                  break;
              }
            }
          }
          innerHTML += `
     <div class="progress-bar">
     <label>敌方效果:</label>
     <label id="${safe(eq.名称)}敌方效果" >${safe(textContent2)}</label>
     </div>
     </div>`;


          innerHTML += `
      </div>
      <div id="buttons">
        <button class="unloadjineng" id="${safe(i)}">卸下技能</button>
      </div>
      `;

          console.log("innerHTML", innerHTML)
          itemList.innerHTML = innerHTML;
          let elements = document.getElementsByClassName("unloadjineng");
          if (elements.length > 0) {
            for (let i = 0; i < elements.length; i++) {
              elements[i].addEventListener("click", function (Event) {
                unloadjineng(Event.target.id);

              })

            }
          }

        }
      }



      if (category == "buff") {
        let character = rpg["用户"][1]["角色"]["战斗属性json"]["buff"];
        itemList.innerHTML = "";
        let innerHTML = '';
        for (let i = 0; i < character.length; i++) {
          let eq = character[i];
          innerHTML += `<div class="info-box">
    <p><span id="${safe(eq.名称)}名称">${safe(eq.名称)}</span></p>
      <div class="progress-bar">
      <label>简介:</label>
      <label id="${safe(eq.名称)}简介" >${safe(eq.简介)}</label>
      </div>
      <div class="progress-bar">
      <label>特殊效果:</label>
      <label id="${safe(eq.名称)}特殊效果" >${safe(eq.特殊效果 || "无")}</label>
      </div>
    `
          let textContent1 = ``;
          for (let w = 0; w < eq.我方效果.length; w++) {
            if (eq.我方效果[w] !== "0") {
              switch (w) {
                case 0:
                  textContent1 += `\n回复生命: ${safe(eq.我方效果[w])}`;
                  break;
                case 1:
                  textContent1 += `\n回复蓝量: ${safe(eq.我方效果[w])}`;
                  break;
                case 2:
                  textContent1 += `\n增加攻击力: ${safe(eq.我方效果[w])}`;
                  break;
                case 3:
                  textContent1 += `\n增加防御: ${safe(eq.我方效果[w])}`;
                  break;
              }
            }
          }
          innerHTML += `
      <div class="progress-bar">
      <label>我方效果:</label>
      <label id="${safe(eq.名称)}我方效果" >${safe(textContent1)}</label>
      </div>`;

          let textContent2 = ``;
          for (let w = 0; w < eq.敌方效果.length; w++) {
            if (eq.敌方效果[w] !== "0") {
              switch (w) {
                case 0:
                  textContent2 += `|造成伤害: ${safe(eq.敌方效果[w])}`;
                  break;
                case 1:
                  textContent2 += `|损失蓝量: ${safe(eq.敌方效果[w])}`;
                  break;
                case 2:
                  textContent2 += `|降低攻击力: ${safe(eq.敌方效果[w])}`;
                  break;
                case 3:
                  textContent2 += `|降低防御: ${safe(eq.敌方效果[w])}`;
                  break;
              }
            }
          }
          innerHTML += `
     <div class="progress-bar">
     <label>敌方效果:</label>
     <label id="${safe(eq.名称)}敌方效果" >${safe(textContent2)}</label>
     </div>
     </div>`;


          innerHTML += `
      </div>
      <div id="buttons">

      </div>
      `;

          console.log("innerHTML", innerHTML)
          itemList.innerHTML = innerHTML;

        }
      }


    }
    function unloadeq(key) {
      let character = rpg["用户"][1]["角色"]["战斗属性json"]["已装备"];
      character[key] = "";
      alert("成功卸下装备");
      showItems("装备");
    }
    function unloadwp(id) {
      let character = rpg["用户"][1]["角色"]["战斗属性json"];
      character["可消耗物品"].splice(id, 1);
      alert("成功卸下可消耗物品");
      showItems("可消耗物品");
    }
    function unloadjineng(id) {
      let character = rpg["用户"][1]["角色"]["战斗属性json"];
      character["技能"].splice(id, 1);
      alert("成功卸下技能");
      showItems("技能");
    }
    showItems("人物信息");
  }






  //_______________________________________________________________________________________________________________________
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //背包
  function beibao() {
    //document.body.appendChild(stylebeibao);
    const inventory = document.createElement('div');
    inventory.id = 'inventory';
    inventory.style.position = 'absolute';
    inventory.style.top = '50%';
    inventory.style.left = '50%';
    inventory.style.transform = 'translate(-50%, -50%)';
    inventory.style.backgroundColor = 'black';
    inventory.style.color = 'white';
    inventory.style.padding = '20px';
    inventory.style.border = '1px solid white';
    inventory.style.zIndex = '10000';
    inventory.style.display = 'block';
    inventory.style.overflowY = 'auto';
    inventory.style.borderRadius = '8px';
    inventory.style.maxHeight = '80vh';
    inventory.style.width = '80%';
    inventory.style.maxWidth = '600px';

    const closeButton = document.createElement('button');
    closeButton.textContent = '关闭';
    closeButton.style.position = 'absolute';
    closeButton.style.top = '10px';
    closeButton.style.right = '10px';
    closeButton.addEventListener('click', () => {
      inventory.style.display = 'none';
      inventory.remove();
    });
    inventory.appendChild(closeButton);

    const categories = ['技能', '可消耗物品', '装备', '材料'];
    const buttons = categories.map(category => {
      const button = document.createElement('button');
      button.textContent = category;
      button.style.marginRight = '10px';
      button.addEventListener('click', () => {
        showItems(category);
      });
      return button;
    });
    const buttonContainer = document.createElement('div');
    buttonContainer.style.marginBottom = '10px';
    buttons.forEach(button => buttonContainer.appendChild(button));
    inventory.appendChild(buttonContainer);
    const itemList = document.createElement('ul');
    itemList.style.listStyle = 'none';
    itemList.style.padding = '0';
    inventory.appendChild(itemList);
    document.body.appendChild(inventory);
    function showItems(category) {
      itemList.innerHTML = '';
      const items = rpg["用户背包"][1]["json"][category];
      console.log("items", items);
      // const items = rpg["用户背包"];//data.filter(item => item.物品分类 === category);

      for (var i = 0; i < items.length; i++) {
        let item = items[i]
        let ii = i;
        const listItem = document.createElement('li');
        listItem.style.marginBottom = '10px';
        const name = document.createElement('div');
        name.textContent = item.名称;
        name.style.fontWeight = 'bold';
        listItem.appendChild(name);

        const intro = document.createElement('div');
        intro.textContent = item.简介;
        listItem.appendChild(intro);

        if (item.物品分类 === '技能') {
          const activeType = document.createElement('div');
          activeType.textContent = `类型: ${safe(item.是否主动)}`;
          listItem.appendChild(activeType);

          const mpCost = document.createElement('div');
          mpCost.textContent = `消耗蓝量: ${safe(item.消耗蓝量)}`;
          listItem.appendChild(mpCost);

        }
        if (item.物品分类 === '技能' || item.物品分类 === '可消耗物品') {
          const effect = document.createElement('div');
          effect.textContent = `特殊效果: ${safe(item.特殊效果)}`;
          listItem.appendChild(effect);
        }
        if (item.物品分类 === '可消耗物品' || item.物品分类 === '技能') {
          const effect = document.createElement('div');
          effect.textContent = `我方效果:`;
          for (let w = 0; w < item.我方效果.length; w++) {
            if (item.我方效果[w] !== "0") {
              switch (w) {
                case 0:
                  effect.textContent += `\n回复生命: ${safe(item.我方效果[w])}`;
                  break;
                case 1:
                  effect.textContent += `\n回复蓝量: ${safe(item.我方效果[w])}`;
                  break;
                case 2:
                  effect.textContent += `\n增加攻击力: ${safe(item.我方效果[w])}`;
                  break;
                case 3:
                  effect.textContent += `\n增加防御: ${safe(item.我方效果[w])}`;
                  break;
              }

            }
          }
          listItem.appendChild(effect);
          const effect2 = document.createElement('div');
          effect2.textContent = `敌方效果:`;
          for (let d = 0; d < item.敌方效果.length; d++) {
            if (item.敌方效果[d] !== "0") {
              switch (d) {
                case 0:
                  effect2.textContent += `\n造成伤害: ${safe(item.敌方效果[0])}`;
                  break;
                case 1:
                  effect2.textContent += `\n损失蓝量: ${safe(item.敌方效果[1])}`;
                  break;
                case 2:
                  effect2.textContent += `\n降低攻击力: ${safe(item.敌方效果[2])}`;
                  break;
                case 3:
                  effect2.textContent += `\n降低防御: ${safe(item.敌方效果[3])}`;
                  break;
              }
            }
          }
          listItem.appendChild(effect2);
        }
        if (item.物品分类 === "装备") {
          const attack = document.createElement('div');
          attack.textContent = `攻击力: ${safe(item.攻击力 || '无')}`;
          listItem.appendChild(attack);
          const buwei = document.createElement('div');
          buwei.textContent = `部位: ${safe(item.部位 || '无')}`;
          listItem.appendChild(buwei);
          const defense = document.createElement('div');
          defense.textContent = `防御: ${safe(item.防御 || '无')}`;
          listItem.appendChild(defense);
        }
        const shuliang = document.createElement('div');
        shuliang.textContent = `数量: ${safe(item.数量 || '无')}`;
        listItem.appendChild(shuliang);
        const buttonContainer = document.createElement('div');
        buttonContainer.style.marginBottom = '10px';
        if (item.物品分类 === "装备") { //装备按钮
          const eqbutton = document.createElement('button');
          eqbutton.style.marginRight = '10px';
          eqbutton.textContent = '装备';
          eqbutton.style.marginRight = '10px';
          eqbutton.style.backgroundColor = '#007bff';
          eqbutton.style.color = '#fff';
          eqbutton.style.border = 'none';
          eqbutton.style.borderRadius = '1px';
          eqbutton.style.cursor = 'pointer';
          if (item["名称"] == rpg["用户"][1]["角色"]["战斗属性json"]["已装备"][item.部位]["名称"]) {
            eqbutton.textContent = '已装备';
            eqbutton.disabled = true;
            buttonContainer.appendChild(eqbutton);
          } else {
            eqbutton.addEventListener('click', (event) => {
              console.log("item", item);
              var a = eqeq(event.target, "用户", item, showItems);
            });

            const delbut = document.createElement('button');
            delbut.id = Math.random().toString(36).substr(2, 9);
            eqbutton.name = delbut.id;
            buttonContainer.appendChild(eqbutton);
            delbut.style.marginRight = '10px';
            delbut.textContent = '丢弃';
            delbut.style.marginRight = '10px';
            // eqbutton.style.padding = '10px 20px';
            delbut.style.backgroundColor = '#6c757d';
            delbut.style.color = '#fff';
            delbut.style.border = 'none';
            delbut.style.borderRadius = '1px';
            delbut.style.cursor = 'pointer';
            delbut.addEventListener('click', (event) => {
              var b = stylishConfirm("确定要丢弃吗").then((result) => {
                if (result) {
                  console.log("丢弃", rpg["用户背包"][1]["json"]["装备"][ii]);

                  var num = Number(rpg["用户背包"][1]["json"]["装备"][ii]["数量"]) - 1;

                  if (num < 1) {
                    rpg["用户背包"][1]["json"]["装备"].splice(ii, 1);
                  } else {
                    rpg["用户背包"][1]["json"]["装备"][ii]["数量"] = num

                  }
                  showItems('装备');
                  return true;
                } else {
                  return false;
                }
              })
            });
            buttonContainer.appendChild(delbut);
          }
        }

        if (item.物品分类 === "技能") { //技能按钮
          const eqbutton = document.createElement('button');
          eqbutton.style.marginRight = '10px';
          eqbutton.textContent = '装备';
          eqbutton.style.marginRight = '10px';
          eqbutton.style.backgroundColor = '#007bff';
          eqbutton.style.color = '#fff';
          eqbutton.style.border = 'none';
          eqbutton.style.borderRadius = '1px';
          eqbutton.style.cursor = 'pointer';

          const eqbutton2 = document.createElement('button');
          eqbutton2.style.marginRight = '10px';
          eqbutton2.textContent = '使用';
          eqbutton2.style.marginRight = '10px';
          eqbutton2.style.backgroundColor = '#007bff';
          eqbutton2.style.color = '#fff';
          eqbutton2.style.border = 'none';
          eqbutton2.style.borderRadius = '1px';
          eqbutton2.style.cursor = 'pointer';
          eqbutton2.addEventListener('click', (event) => {

            var a = usejineng(event.target, "用户", item, showItems);

          });

          if (item["是否主动"] == "主动") {

            buttonContainer.appendChild(eqbutton2);

          }

          var eqsjineng = rpg["用户"][1]["角色"]["战斗属性json"]["技能"]
          for (var m = 0; m < eqsjineng.length; m++) {
            if (eqsjineng[m]["名称"] == item["名称"]) {
              eqbutton.disabled = true;
              eqbutton.textContent = '已装备';
            }
          }
          if (eqbutton.textContent == "已装备") {
            buttonContainer.appendChild(eqbutton);
          } else {
            console.log("技能", eqbutton.textContent);
            eqbutton.addEventListener('click', (event) => {
              var a = eqjineng(event.target, "用户", item, showItems);
            });
            const delbut = document.createElement('button');
            delbut.id = Math.random().toString(36).substr(2, 9);
            eqbutton.name = delbut.id;
            buttonContainer.appendChild(eqbutton);
            delbut.style.marginRight = '10px';
            delbut.textContent = '丢弃';
            delbut.style.marginRight = '10px';
            // eqbutton.style.padding = '10px 20px';
            delbut.style.backgroundColor = '#6c757d';
            delbut.style.color = '#fff';
            delbut.style.border = 'none';
            delbut.style.borderRadius = '1px';
            delbut.style.cursor = 'pointer';
            delbut.addEventListener('click', (event) => {
              var b = stylishConfirm("确定要丢弃吗").then((result) => {
                if (result) {
                  console.log("丢弃", rpg["用户背包"][1]["json"]["技能"][ii]);
                  var num = Number(rpg["用户背包"][1]["json"]["技能"][ii]["数量"]) - 1;
                  if (num < 1) {

                    rpg["用户背包"][1]["json"]["技能"].splice(ii, 1);
                  } else {
                    rpg["用户背包"][1]["json"]["技能"][ii]["数量"] = num

                  }
                  showItems('技能');
                  return true;
                } else {
                  return false;
                }
              })
            });
            buttonContainer.appendChild(delbut);
          }
        }



        if (item.物品分类 === "可消耗物品") { //可消耗物品按钮
          const eqbutton = document.createElement('button');
          eqbutton.style.marginRight = '10px';
          eqbutton.textContent = '使用';
          eqbutton.style.marginRight = '10px';
          eqbutton.style.backgroundColor = '#007bff';
          eqbutton.style.color = '#fff';
          eqbutton.style.border = 'none';
          eqbutton.style.borderRadius = '1px';
          eqbutton.style.cursor = 'pointer';

          const eqbutton2 = document.createElement('button');
          eqbutton2.style.marginRight = '10px';
          eqbutton2.textContent = '装备';
          eqbutton2.style.marginRight = '10px';
          eqbutton2.style.backgroundColor = '#007bff';
          eqbutton2.style.color = '#fff';
          eqbutton2.style.border = 'none';
          eqbutton2.style.borderRadius = '1px';
          eqbutton2.style.cursor = 'pointer';

          let eqswp = rpg["用户"][1]["角色"]["战斗属性json"]["可消耗物品"]
          for (var m = 0; m < eqswp.length; m++) {
            if (eqswp[m]["名称"] == item["名称"]) {
              eqbutton2.disabled = true;
              eqbutton2.textContent = '已装备';
            }
          }
          if (eqbutton.textContent == "已装备") {

          } else {
            eqbutton2.addEventListener('click', (event) => {
              var a = eqwp(event.target, "用户", item, showItems);
            });

            console.log("可消耗物品", eqbutton.textContent);
            eqbutton.addEventListener('click', (event) => {

              var a = usewp(event.target, "用户", item, showItems);

            });
            const delbut = document.createElement('button');
            if (eqbutton.textContent == "已装备") {
              delbut.name = true;
            } else {
              delbut.name = false;
            }
            delbut.id = Math.random().toString(36).substr(2, 9);
            eqbutton.name = delbut.id;
            buttonContainer.appendChild(eqbutton);
            delbut.style.marginRight = '10px';
            delbut.textContent = '丢弃';
            delbut.style.marginRight = '10px';
            // eqbutton.style.padding = '10px 20px';
            delbut.style.backgroundColor = '#6c757d';
            delbut.style.color = '#fff';
            delbut.style.border = 'none';
            delbut.style.borderRadius = '1px';
            delbut.style.cursor = 'pointer';
            delbut.addEventListener('click', (event) => {
              var b = stylishConfirm("确定要丢弃吗").then((result) => {
                if (result) {
                  console.log("丢弃", rpg["用户背包"][1]["json"]["可消耗物品"][ii]);
                  let num = Number(rpg["用户背包"][1]["json"]["可消耗物品"][ii]["数量"]) - 1;
                  if (num < 1) {
                    rpg["用户背包"][1]["json"]["可消耗物品"].splice(ii, 1);
                    if (event.target.name) {
                      let eqswp = rpg["用户"][1]["角色"]["战斗属性json"]["可消耗物品"]
                      for (var eqd = 0; eqd < eqswp.length; eqd++) {
                        if (eqswp[eqd]["名称"] == item["名称"]) {

                          rpg["用户"][1]["角色"]["战斗属性json"]["可消耗物品"].splice(eqd, 1);

                        }
                      }

                    }
                  } else {
                    rpg["用户背包"][1]["json"]["可消耗物品"][ii]["数量"] = num
                    if (event.target.name) {
                      let eqswp = rpg["用户"][1]["角色"]["战斗属性json"]["可消耗物品"]
                      for (var eqd = 0; eqd < eqswp.length; eqd++) {
                        if (eqswp[eqd]["名称"] == item["名称"]) {
                          rpg["用户"][1]["角色"]["战斗属性json"]["可消耗物品"][eqd]["数量"] = num;
                        }
                      }
                    }

                  }
                  showItems('可消耗物品');
                  return true;
                } else {
                  return false;
                }
              })
            });
            buttonContainer.appendChild(eqbutton);
            buttonContainer.appendChild(eqbutton2);
            buttonContainer.appendChild(delbut);
          }
        }

        if (item.物品分类 === "材料") { //可消耗物品按钮
          const delbut = document.createElement('button');
          delbut.id = Math.random().toString(36).substr(2, 9);
          delbut.style.marginRight = '10px';
          delbut.textContent = '丢弃';
          delbut.style.marginRight = '10px';
          // eqbutton.style.padding = '10px 20px';
          delbut.style.backgroundColor = '#6c757d';
          delbut.style.color = '#fff';
          delbut.style.border = 'none';
          delbut.style.borderRadius = '1px';
          delbut.style.cursor = 'pointer';
          delbut.addEventListener('click', (event) => {
            var b = stylishConfirm("确定要丢弃吗").then((result) => {
              if (result) {
                console.log("丢弃", rpg["用户背包"][1]["json"]["材料"][ii]);
                var num = Number(rpg["用户背包"][1]["json"]["材料"][ii]["数量"]) - 1;
                if (num < 1) {

                  rpg["用户背包"][1]["json"]["材料"].splice(ii, 1);
                } else {
                  rpg["用户背包"][1]["json"]["材料"][ii]["数量"] = num
                }
                showItems('材料');
                return true;
              } else {
                return false;
              }
            })
          });
          buttonContainer.appendChild(delbut);

        }


        listItem.appendChild(buttonContainer);
        var __123 = document.createElement('div');
        __123.textContent = `_____________________`;
        listItem.appendChild(__123);
        itemList.appendChild(listItem);
      };
    }
    // 初始显示技能分类
    showItems('技能');

  }


  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //使用技能

  function usejineng(but, user, newjineng, showItems) {
    var b = stylishConfirm("确定要使用吗").then((result) => {
      if (result) {
        let buff = rpg["用户"][1]["角色"]["战斗属性json"]["buff"][0];
        let enemy = [];
        if (Object.keys(user).includes("敌人")) {

          enemy = rpg["敌人"]

        } else {
          if (!confirm("不存在敌人是否继续使用?")) {
            return false;
          }
        }
        for (let d = 0; d < newjineng.我方效果.length; d++) {

          switch (d) {
            case 0:
              // effect2.textContent += `\n造成伤害: ${safe(neweq.敌方效果[0])}`;
              let num = Number(buff["我方效果"][0]) + Number(newjineng.我方效果[0]);
              if (num > 0) {
                buff["我方效果"][0] = '0';
              } else {
                buff["我方效果"][0] = num;
              }
              rpg["用户属性"]["health"] = (Number(rpg["用户属性"]["health"].split("/")[0]) + Number(newjineng.我方效果[0])) + "/" + rpg["用户属性"]["health"].split("/")[1];
              break;
            case 1:
              //  effect2.textContent += `\n损失蓝量: ${safe(neweq.敌方效果[1])}`;
              let num2 = Number(buff["我方效果"][1]) + Number(newjineng.我方效果[1]);
              if (num2 > 0) {
                buff["我方效果"][1] = '0';
              } else {
                buff["我方效果"][1] = num2;
              }
              rpg["用户属性"]["mana"] = (Number(rpg["用户属性"]["mana"].split("/")[0]) + Number(newjineng.我方效果[1])) + "/" + rpg["用户属性"]["mana"].split("/")[1];
              break;
            case 2:
              //  effect2.textContent += `\n降低攻击力: ${safe(neweq.敌方效果[2])}`;
              let num3 = Number(buff["我方效果"][2]) + Number(newjineng.我方效果[2]);
              if (num3 > 0) {
                buff["我方效果"][2] = '0';
              } else {
                buff["我方效果"][2] = num3;
              }
              rpg["用户属性"]["attack"] = (Number(rpg["用户属性"]["attack"].split("/")[0]) + Number(newjineng.我方效果[2])) + "/" + (Number(rpg["用户属性"]["attack"].split("/")[1]) + Number(newjineng.我方效果[2]));
              break;
            case 3:
              //  effect2.textContent += `\n降低防御: ${safe(neweq.敌方效果[3])}`;
              let num4 = Number(buff["我方效果"][3]) + Number(newjineng.我方效果[3]);
              if (num4 > 0) {
                buff["我方效果"][3] = '0';
              } else {
                buff["我方效果"][3] = num4;
              }
              rpg["用户属性"]["defense"] = Number(rpg["用户属性"]["defense"]) + Number(newjineng.我方效果[3]);
              break;
          }



        }


        if (Object.keys(user).includes("敌人")) {

          for (let d = 0; d < newjineng.敌方效果.length; d++) {
            if (newjineng.敌方效果[d] !== "0") {
              switch (d) {
                case 0:
                  // effect2.textContent += `\n造成伤害: ${safe(neweq.敌方效果[0])}`;
                  break;
                case 1:
                  //  effect2.textContent += `\n损失蓝量: ${safe(neweq.敌方效果[1])}`;
                  break;
                case 2:
                  //  effect2.textContent += `\n降低攻击力: ${safe(neweq.敌方效果[2])}`;
                  break;
                case 3:
                  //  effect2.textContent += `\n降低防御: ${safe(neweq.敌方效果[3])}`;
                  break;
              }
            }
          }
        }


        showItems("技能");
        updataAttributes();

      }

    });


  }




  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //使用物品

  function usewp(but, user, newwp, showItems) {
    var b = stylishConfirm("确定要使用吗").then((result) => {
      if (result) {
        let buff = rpg["用户"][1]["角色"]["战斗属性json"]["buff"][0];
        let enemy = [];
        if (Object.keys(user).includes("敌人")) {

          enemy = rpg["敌人"]

        } else {
          if (!confirm("不存在敌人是否继续使用?")) {
            return false;
          }
        }
        for (let d = 0; d < newwp.我方效果.length; d++) {

          switch (d) {
            case 0:
              // effect2.textContent += `\n造成伤害: ${safe(neweq.敌方效果[0])}`;
              let num = Number(buff["我方效果"][0]) + Number(newwp.我方效果[0]);
              if (num > 0) {
                buff["我方效果"][0] = '0';
              } else {
                buff["我方效果"][0] = num;
              }
              rpg["用户属性"]["health"] = (Number(rpg["用户属性"]["health"].split("/")[0]) + Number(newwp.我方效果[0])) + "/" + rpg["用户属性"]["health"].split("/")[1];
              break;
            case 1:
              //  effect2.textContent += `\n损失蓝量: ${safe(neweq.敌方效果[1])}`;
              let num2 = Number(buff["我方效果"][1]) + Number(newwp.我方效果[1]);
              if (num2 > 0) {
                buff["我方效果"][1] = '0';
              } else {
                buff["我方效果"][1] = num2;
              }
              rpg["用户属性"]["mana"] = (Number(rpg["用户属性"]["mana"].split("/")[0]) + Number(newwp.我方效果[1])) + "/" + rpg["用户属性"]["mana"].split("/")[1];
              break;
            case 2:
              //  effect2.textContent += `\n降低攻击力: ${safe(neweq.敌方效果[2])}`;
              let num3 = Number(buff["我方效果"][2]) + Number(newwp.我方效果[2]);
              if (num3 > 0) {
                buff["我方效果"][2] = '0';
              } else {
                buff["我方效果"][2] = num3;
              }
              rpg["用户属性"]["attack"] = (Number(rpg["用户属性"]["attack"].split("/")[0]) + Number(newwp.我方效果[2])) + "/" + (Number(rpg["用户属性"]["attack"].split("/")[1]) + Number(newwp.我方效果[2]));
              break;
            case 3:
              //  effect2.textContent += `\n降低防御: ${safe(neweq.敌方效果[3])}`;
              let num4 = Number(buff["我方效果"][3]) + Number(newwp.我方效果[3]);
              if (num4 > 0) {
                buff["我方效果"][3] = '0';
              } else {
                buff["我方效果"][3] = num4;
              }
              rpg["用户属性"]["defense"] = Number(rpg["用户属性"]["defense"]) + Number(newwp.我方效果[3]);
              break;
          }



        }



        if (Object.keys(user).includes("敌人")) {

          for (let d = 0; d < neweq.敌方效果.length; d++) {
            if (newwp.敌方效果[d] !== "0") {
              switch (d) {
                case 0:
                  // effect2.textContent += `\n造成伤害: ${safe(neweq.敌方效果[0])}`;
                  break;
                case 1:
                  //  effect2.textContent += `\n损失蓝量: ${safe(neweq.敌方效果[1])}`;
                  break;
                case 2:
                  //  effect2.textContent += `\n降低攻击力: ${safe(neweq.敌方效果[2])}`;
                  break;
                case 3:
                  //  effect2.textContent += `\n降低防御: ${safe(neweq.敌方效果[3])}`;
                  break;
              }
            }
          }
        }

        let shuliang = Number(newwp.数量) - 1
        if (shuliang < 1) {
          let eqswp = rpg["用户"][1]["角色"]["战斗属性json"]["可消耗物品"]
          for (let m = 0; m < eqswp.length; m++) {
            if (eqswp[m]["名称"] == newwp["名称"]) {

              rpg["用户"][1]["角色"]["战斗属性json"]["可消耗物品"].splice(m, 1);

            }
          }

          let beibaowp = rpg["用户背包"][1]["json"]["可消耗物品"];
          for (let m2 = 0; m2 < beibaowp.length; m2++) {
            if (beibaowp[m2]["名称"] == newwp["名称"]) {
              rpg["用户背包"][1]["json"]["可消耗物品"].splice(m2, 1);
            }
          }
        } else {
          let eqswp = rpg["用户"][1]["角色"]["战斗属性json"]["可消耗物品"]
          for (let m3 = 0; m3 < eqswp.length; m3++) {
            if (eqswp[m3]["名称"] == newwp["名称"]) {

              rpg["用户"][1]["角色"]["战斗属性json"]["可消耗物品"][m3]["数量"] = shuliang;

            }
          }

          let beibaowp = rpg["用户背包"][1]["json"]["可消耗物品"]
          for (let m4 = 0; m4 < beibaowp.length; m4++) {
            if (beibaowp[m4]["名称"] == newwp["名称"]) {
              rpg["用户背包"][1]["json"]["可消耗物品"][m4]["数量"] = shuliang;
            }
          }
        }
        showItems("可消耗物品");
        updataAttributes();

      }

    });


  }

  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //装上可消耗物品


  function eqwp(but, user, neweq, showItems) {
    var b = stylishConfirm("确定要装备吗").then((result) => {
      if (result) {
        var eqwp = JSON.parse(JSON.stringify(neweq));
        var eqswp = rpg["用户"][1]["角色"]["战斗属性json"]["可消耗物品"]
        if (eqswp.length < 3) {
          rpg["用户"][1]["角色"]["战斗属性json"]["可消耗物品"].push(eqwp);
          showItems("可消耗物品");
        } else {
          eqwpConfirm(but, eqwp, eqswp, showItems);
        }
        return true;
      } else {
        return false;
      }
    })
    if (b) {

      return true;

    } else {

      return false;

    }

  }

  //装备




  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //装上技能


  function eqjineng(but, user, neweq, showItems) {
    var b = stylishConfirm("确定要装备吗").then((result) => {
      if (result) {
        var eqjineng = JSON.parse(JSON.stringify(neweq));
        delete eqjineng.数量;

        var eqsjineng = rpg["用户"][1]["角色"]["战斗属性json"]["技能"]
        if (eqsjineng.length < 3) {
          rpg["用户"][1]["角色"]["战斗属性json"]["技能"].push(eqjineng);
          showItems("技能");
        } else {
          jinengConfirm(but, eqjineng, eqsjineng, showItems);
        }

        return true;
      } else {
        return false;
      }
    })
    if (b) {

      return true;

    } else {

      return false;

    }

  }

  //装备

  function eqeq(but, user, neweq, showItems) {
    var b = stylishConfirm("确定要装备吗").then((result) => {
      if (result) {
        var neweq2 = JSON.parse(JSON.stringify(neweq));
        delete neweq2.数量;
        rpg[user][1]["角色"]["战斗属性json"]["已装备"][neweq["部位"]] = neweq2;
        but.textContent = '已装备';
        but.disabled = true;
        document.getElementById(but.name).remove();
        showItems("装备");
        return true;
      } else {
        return false;
      }
    })
    if (b) {

      return true;

    } else {

      return false;

    }

  }
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //物品确认框

  function eqwpConfirm(but, newwp, eqswp, showItems) {
    return new Promise((resolve) => {
      // 创建遮罩层
      var message = "请选择替换的消耗品";
      const overlay = document.createElement('div');
      overlay.style.position = 'fixed';
      overlay.style.top = '0';
      overlay.style.left = '0';
      overlay.style.width = '100%';
      overlay.style.height = '100%';
      overlay.style.backgroundColor = 'rgba(0, 0, 0, 0.5)';
      overlay.style.zIndex = '9999';
      document.body.appendChild(overlay);

      // 创建确认框
      const confirmBox = document.createElement('div');
      // confirmBox.style.position = 'fixed';
      // confirmBox.style.top = '50%';
      // confirmBox.style.left = '50%';
      // confirmBox.style.transform = 'translate(-50%, -50%)';
      confirmBox.style.position = 'absolute';
      confirmBox.style.top = '50%';
      confirmBox.style.left = '50%';
      confirmBox.style.transform = 'translate(-50%, -50%)';
      confirmBox.style.backgroundColor = '#fff';
      confirmBox.style.padding = '20px';
      confirmBox.style.borderRadius = '5px';
      confirmBox.style.boxShadow = '0 2px 10px rgba(0, 0, 0, 0.2)';
      confirmBox.style.zIndex = '10000';
      document.body.appendChild(confirmBox);

      // 创建消息文本
      const messageText = document.createElement('p');
      messageText.textContent = message;
      messageText.style.marginBottom = '20px';
      messageText.style.color = '#333';
      confirmBox.appendChild(messageText);

      // 创建按钮容器
      const buttonContainer = document.createElement('div');
      //buttonContainer.style.textAlign = 'right';
      buttonContainer.style.display = 'flex';
      buttonContainer.style.justifyContent = 'center';
      buttonContainer.style.marginTop = '3px';
      confirmBox.appendChild(buttonContainer);

      const buttonContainer2 = document.createElement('div');
      buttonContainer2.style.display = 'flex';
      buttonContainer2.style.justifyContent = 'center';
      buttonContainer2.style.marginTop = '3px';
      // buttonContainer2.style.textAlign = 'right';
      confirmBox.appendChild(buttonContainer2);

      const buttonContainer3 = document.createElement('div');
      buttonContainer3.style.display = 'flex';
      buttonContainer3.style.justifyContent = 'center';
      buttonContainer3.style.marginTop = '3px';
      // buttonContainer3.style.textAlign = 'right';
      confirmBox.appendChild(buttonContainer3);

      // 创建技能按钮
      const cancelButton = document.createElement('button');
      cancelButton.textContent = eqswp[0]["名称"];
      cancelButton.style.marginRight = '10px';
      cancelButton.style.padding = '10px 20px';
      cancelButton.style.backgroundColor = '#6c757d';
      cancelButton.style.color = '#fff';
      cancelButton.style.border = 'none';
      cancelButton.style.borderRadius = '5px';
      cancelButton.style.cursor = 'pointer';

      const cancelButton2 = document.createElement('button');
      cancelButton2.textContent = eqswp[1]["名称"];
      cancelButton2.style.marginRight = '10px';
      cancelButton2.style.padding = '10px 20px';
      cancelButton2.style.backgroundColor = '#6c757d';
      cancelButton2.style.color = '#fff';
      cancelButton2.style.border = 'none';
      cancelButton2.style.borderRadius = '5px';
      cancelButton2.style.cursor = 'pointer';

      const cancelButton3 = document.createElement('button');
      cancelButton3.textContent = eqswp[2]["名称"];
      cancelButton3.style.marginRight = '10px';
      cancelButton3.style.padding = '10px 20px';
      cancelButton3.style.backgroundColor = '#6c757d';
      cancelButton3.style.color = '#fff';
      cancelButton3.style.border = 'none';
      cancelButton3.style.borderRadius = '5px';
      cancelButton3.style.cursor = 'pointer';

      buttonContainer.appendChild(cancelButton);
      buttonContainer2.appendChild(cancelButton2);
      buttonContainer3.appendChild(cancelButton3);
      // 创建确定按钮
      // const confirmButton = document.createElement('button');
      // confirmButton.textContent = '确定';
      // confirmButton.style.padding = '10px 20px';
      // confirmButton.style.backgroundColor = '#007bff';
      // confirmButton.style.color = '#fff';
      // confirmButton.style.border = 'none';
      // confirmButton.style.borderRadius = '5px';
      // confirmButton.style.cursor = 'pointer';
      // buttonContainer.appendChild(confirmButton);

      // 点击取消按钮关闭确认框并返回 false
      cancelButton.addEventListener('click', () => {
        document.body.removeChild(overlay);
        document.body.removeChild(confirmBox);
        rpg["用户"][1]["角色"]["战斗属性json"]["可消耗物品"][0] = newwp;
        but.textContent = '已装备';
        but.disabled = true;
        //  document.getElementById(but.name).remove();
        showItems("可消耗物品");
        resolve(false);

      });
      cancelButton2.addEventListener('click', () => {
        document.body.removeChild(overlay);
        document.body.removeChild(confirmBox);
        rpg["用户"][1]["角色"]["战斗属性json"]["可消耗物品"][1] = newwp;
        but.textContent = '已装备';
        but.disabled = true;
        //   document.getElementById(but.name).remove();
        showItems("可消耗物品");
        resolve(false);
      });
      cancelButton3.addEventListener('click', () => {
        document.body.removeChild(overlay);
        document.body.removeChild(confirmBox);
        rpg["用户"][1]["角色"]["战斗属性json"]["可消耗物品"][2] = newwp;
        but.textContent = '已装备';
        but.disabled = true;
        //  document.getElementById(but.name).remove();
        showItems("可消耗物品");
        resolve(false);
      });

      // 点击确定按钮关闭确认框并返回 true
      // confirmButton.addEventListener('click', () => {
      //   document.body.removeChild(overlay);
      //   document.body.removeChild(confirmBox);
      //   resolve(true);
      // });
    });
  }

  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //技能确认框

  function jinengConfirm(but, neweq, eqsjineng, showItems) {
    return new Promise((resolve) => {
      // 创建遮罩层
      var message = "请选择替换的技能";
      const overlay = document.createElement('div');
      overlay.style.position = 'fixed';
      overlay.style.top = '0';
      overlay.style.left = '0';
      overlay.style.width = '100%';
      overlay.style.height = '100%';
      overlay.style.backgroundColor = 'rgba(0, 0, 0, 0.5)';
      overlay.style.zIndex = '9999';
      document.body.appendChild(overlay);

      // 创建确认框
      const confirmBox = document.createElement('div');
      // confirmBox.style.position = 'fixed';
      // confirmBox.style.top = '50%';
      // confirmBox.style.left = '50%';
      // confirmBox.style.transform = 'translate(-50%, -50%)';
      confirmBox.style.position = 'absolute';
      confirmBox.style.top = '50%';
      confirmBox.style.left = '50%';
      confirmBox.style.transform = 'translate(-50%, -50%)';
      confirmBox.style.backgroundColor = '#fff';
      confirmBox.style.padding = '20px';
      confirmBox.style.borderRadius = '5px';
      confirmBox.style.boxShadow = '0 2px 10px rgba(0, 0, 0, 0.2)';
      confirmBox.style.zIndex = '10000';
      document.body.appendChild(confirmBox);

      // 创建消息文本
      const messageText = document.createElement('p');
      messageText.textContent = message;
      messageText.style.marginBottom = '20px';
      messageText.style.color = '#333';
      confirmBox.appendChild(messageText);

      // 创建按钮容器
      const buttonContainer = document.createElement('div');
      //buttonContainer.style.textAlign = 'right';
      buttonContainer.style.display = 'flex';
      buttonContainer.style.justifyContent = 'center';
      buttonContainer.style.marginTop = '3px';
      confirmBox.appendChild(buttonContainer);

      const buttonContainer2 = document.createElement('div');
      buttonContainer2.style.display = 'flex';
      buttonContainer2.style.justifyContent = 'center';
      buttonContainer2.style.marginTop = '3px';
      // buttonContainer2.style.textAlign = 'right';
      confirmBox.appendChild(buttonContainer2);

      const buttonContainer3 = document.createElement('div');
      buttonContainer3.style.display = 'flex';
      buttonContainer3.style.justifyContent = 'center';
      buttonContainer3.style.marginTop = '3px';
      // buttonContainer3.style.textAlign = 'right';
      confirmBox.appendChild(buttonContainer3);

      // 创建技能按钮
      const cancelButton = document.createElement('button');
      cancelButton.textContent = eqsjineng[0]["名称"];
      cancelButton.style.marginRight = '10px';
      cancelButton.style.padding = '10px 20px';
      cancelButton.style.backgroundColor = '#6c757d';
      cancelButton.style.color = '#fff';
      cancelButton.style.border = 'none';
      cancelButton.style.borderRadius = '5px';
      cancelButton.style.cursor = 'pointer';

      const cancelButton2 = document.createElement('button');
      cancelButton2.textContent = eqsjineng[1]["名称"];
      cancelButton2.style.marginRight = '10px';
      cancelButton2.style.padding = '10px 20px';
      cancelButton2.style.backgroundColor = '#6c757d';
      cancelButton2.style.color = '#fff';
      cancelButton2.style.border = 'none';
      cancelButton2.style.borderRadius = '5px';
      cancelButton2.style.cursor = 'pointer';

      const cancelButton3 = document.createElement('button');
      cancelButton3.textContent = eqsjineng[2]["名称"];
      cancelButton3.style.marginRight = '10px';
      cancelButton3.style.padding = '10px 20px';
      cancelButton3.style.backgroundColor = '#6c757d';
      cancelButton3.style.color = '#fff';
      cancelButton3.style.border = 'none';
      cancelButton3.style.borderRadius = '5px';
      cancelButton3.style.cursor = 'pointer';

      buttonContainer.appendChild(cancelButton);
      buttonContainer2.appendChild(cancelButton2);
      buttonContainer3.appendChild(cancelButton3);
      // 创建确定按钮
      // const confirmButton = document.createElement('button');
      // confirmButton.textContent = '确定';
      // confirmButton.style.padding = '10px 20px';
      // confirmButton.style.backgroundColor = '#007bff';
      // confirmButton.style.color = '#fff';
      // confirmButton.style.border = 'none';
      // confirmButton.style.borderRadius = '5px';
      // confirmButton.style.cursor = 'pointer';
      // buttonContainer.appendChild(confirmButton);

      // 点击取消按钮关闭确认框并返回 false
      cancelButton.addEventListener('click', () => {
        document.body.removeChild(overlay);
        document.body.removeChild(confirmBox);
        rpg["用户"][1]["角色"]["战斗属性json"]["技能"][0] = neweq;
        but.textContent = '已装备';
        but.disabled = true;
        document.getElementById(but.name).remove();
        showItems("技能");
        resolve(false);

      });
      cancelButton2.addEventListener('click', () => {
        document.body.removeChild(overlay);
        document.body.removeChild(confirmBox);
        rpg["用户"][1]["角色"]["战斗属性json"]["技能"][1] = neweq;
        but.textContent = '已装备';
        but.disabled = true;
        document.getElementById(but.name).remove();
        showItems("技能");
        resolve(false);
      });
      cancelButton3.addEventListener('click', () => {
        document.body.removeChild(overlay);
        document.body.removeChild(confirmBox);
        rpg["用户"][1]["角色"]["战斗属性json"]["技能"][2] = neweq;
        but.textContent = '已装备';
        but.disabled = true;
        document.getElementById(but.name).remove();
        showItems("技能");
        resolve(false);
      });

      // 点击确定按钮关闭确认框并返回 true
      // confirmButton.addEventListener('click', () => {
      //   document.body.removeChild(overlay);
      //   document.body.removeChild(confirmBox);
      //   resolve(true);
      // });
    });
  }
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //确认框
  function stylishConfirm(message) {
    return new Promise((resolve) => {
      // 创建遮罩层
      const overlay = document.createElement('div');
      overlay.style.position = 'fixed';
      overlay.style.top = '0';
      overlay.style.left = '0';
      overlay.style.width = '100%';
      overlay.style.height = '100%';
      overlay.style.backgroundColor = 'rgba(0, 0, 0, 0.5)';
      overlay.style.zIndex = '9999';
      document.body.appendChild(overlay);

      // 创建确认框
      const confirmBox = document.createElement('div');
      // confirmBox.style.position = 'fixed';
      // confirmBox.style.top = '50%';
      // confirmBox.style.left = '50%';
      // confirmBox.style.transform = 'translate(-50%, -50%)';
      confirmBox.style.backgroundColor = '#fff';
      confirmBox.style.padding = '20px';
      confirmBox.style.borderRadius = '5px';
      confirmBox.style.boxShadow = '0 2px 10px rgba(0, 0, 0, 0.2)';
      confirmBox.style.zIndex = '10000';
      confirmBox.style.position = 'absolute';
      confirmBox.style.top = '50%';
      confirmBox.style.left = '50%';
      confirmBox.style.transform = 'translate(-50%, -50%)';
      document.body.appendChild(confirmBox);

      // 创建消息文本
      const messageText = document.createElement('p');
      messageText.textContent = message;
      messageText.style.marginBottom = '20px';
      messageText.style.color = '#333';
      confirmBox.appendChild(messageText);

      // 创建按钮容器
      const buttonContainer = document.createElement('div');
      buttonContainer.style.textAlign = 'right';
      confirmBox.appendChild(buttonContainer);

      // 创建取消按钮
      const cancelButton = document.createElement('button');
      cancelButton.textContent = '取消';
      cancelButton.style.marginRight = '10px';
      cancelButton.style.padding = '10px 20px';
      cancelButton.style.backgroundColor = '#6c757d';
      cancelButton.style.color = '#fff';
      cancelButton.style.border = 'none';
      cancelButton.style.borderRadius = '5px';
      cancelButton.style.cursor = 'pointer';
      buttonContainer.appendChild(cancelButton);

      // 创建确定按钮
      const confirmButton = document.createElement('button');
      confirmButton.textContent = '确定';
      confirmButton.style.padding = '10px 20px';
      confirmButton.style.backgroundColor = '#007bff';
      confirmButton.style.color = '#fff';
      confirmButton.style.border = 'none';
      confirmButton.style.borderRadius = '5px';
      confirmButton.style.cursor = 'pointer';
      buttonContainer.appendChild(confirmButton);

      // 点击取消按钮关闭确认框并返回 false
      cancelButton.addEventListener('click', () => {
        document.body.removeChild(overlay);
        document.body.removeChild(confirmBox);

        resolve(false);
      });

      // 点击确定按钮关闭确认框并返回 true
      confirmButton.addEventListener('click', () => {
        document.body.removeChild(overlay);
        document.body.removeChild(confirmBox);
        resolve(true);
      });
    });
  }
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //动画
  function donghua() {
    // alert("111")
    const mesTextElements = document.getElementsByClassName('mes_text');
    const lastMesText = mesTextElements[mesTextElements.length - 1];
    lastMesText.innerHTML = lastMesText.innerHTML + `  <div id="container">
    <div id="player" class="character"></div>
    <div id="enemy" class="character"></div>
  </div>
        `
    const style2 = document.createElement('style');

    style2.textContent = `#container {
      position: relative;
      width: 400px;
      height: 150px;
      border: 1px solid black;
    }

    .character {
      position: absolute;
      width: 50px;
      height: 50px;
    }

    #player {
      background-color: red;
      left: 50px;
      top: 50px;
    }

    #enemy {
      background-color: blue;
      right: 50px;
      top: 50px;
      transition: transform 0.3s;
    }

    .shake {
      animation: shake 0.5s;
    }

    @keyframes shake {
      0% { transform: translateX(0); }
      20% { transform: translateX(-10px); }
      40% { transform: translateX(10px); }
      60% { transform: translateX(-10px); }
      80% { transform: translateX(10px); }
      100% { transform: translateX(0); }
    }`
    document.head.appendChild(style2);
    const player = document.getElementById('player');
    const enemy = document.getElementById('enemy');

    function attack() {
      const playerInitialPosition = player.offsetLeft;
      const enemyInitialPosition = enemy.offsetLeft;
      const attackDistance = enemyInitialPosition - playerInitialPosition - 25;

      player.animate([
        { transform: 'translateX(0)' },
        { transform: `translateX(${safe(attackDistance * 0.8)}px)`, offset: 0.6 },
        { transform: `translateX(${safe(attackDistance)}px)`, offset: 0.8 },
        { transform: `translateX(${safe(attackDistance)}px)`, offset: 0.9 },
        { transform: `translateX(${safe(attackDistance * 0.8)}px)`, offset: 0.95 },
        { transform: `translateX(${safe(attackDistance * 0.8)}px)` }
      ], {
        duration: 600,
        easing: 'ease-in-out',
        fill: 'forwards'
      });

      setTimeout(() => {
        player.animate([
          { transform: `translateX(${safe(attackDistance * 0.8)}px)` },
          { transform: 'translateX(0)' }
        ], {
          duration: 400,
          easing: 'ease-out',
          fill: 'forwards'
        });
      }, 600);

      setTimeout(() => {
        enemy.classList.add('shake');
        enemy.style.transform = 'translateX(50px)';
        setTimeout(() => {
          enemy.style.transform = '';
          enemy.classList.remove('shake');
        }, 500);
      }, 500);
    }
    document.addEventListener('click', attack);

  }

  $(document).ready(function () {


  });

  function load() {
    //选择世界书

    if (Object.keys(rpg).includes("rpg世界世界书")) {

      return;

    }
    replshijieshu();

    // const elements = document.querySelectorAll('[data-i18n="[placeholder]What this keyword should mean to the AI,sent verbatim"]');
    const elements = document.querySelectorAll('[data-i18n="[placeholder]What this keyword should mean to the AI, sent verbatim"]');
    let p = false;
    if (!(elements.length > 0)) {
      //alert("未找到加密文本")
      console.log("未找到世界书");
      return;
    }
    var your_name = document.getElementById("your_name");
    rpg["your_name"] = your_name.value;
    console.log(rpg["your_name"]);
    for (let i = 0; i < elements.length; i++) {
      var element = elements[i];
      let tx = element.value;
      tx=safe(tx);
      let name = "";
      const regex = /^--- #(.*)/;
      const match = tx.match(regex);

      if (match) {
        name = match[1].trim();
        console.log(name);

      } else {
        console.log("No match found.");
      }

      try {
        const data = jsyaml.load(tx);
        console.log("data.", data);
        if (!data) {
          return;
        }

        // let keys = Object.keys(data);
        for (var key in data) {

          if (key == "角色") {

            for (var key2 in data["角色"]) {

              if (key2.includes('json')) {

                let zdsx = JSON.parse(data["角色"][key2]);

                data["角色"][key2] = zdsx;


              }

            }

          }
          if (key.includes('json')) {

            let keyjson = JSON.parse(data[key]);

            data[key] = keyjson;


          }

        }
        rpg["rpg世界世界书"] = true;
        rpg[name] = [element, data]


        // if(keys.includes('分类')&&data['分类']=='用户'){
        // console.log("战斗属性.",data["角色"]['战斗属性json']);
        // let zdsx=JSON.parse(data["角色"]['战斗属性json']);
        // console.log("zdsx.",zdsx);
        // zdsx["人物简介"]=zdsx["人物简介"]+"1234"
        // let zdsxtx= JSON.stringify(zdsx, null, 2);
        // zdsxtx=`${safe(zdsxtx.replace(/\n/g, '\n '))}`;
        // data["角色"]['战斗属性json']=zdsxtx;
        // let jsdata=jsyaml.dump(data,{ lineWidth: -1 });
        // jsdata="--- #"+name+"\n"+jsdata
        // element.value=jsdata;
        // }

      } catch (e) {
        console.error(e);
      }
    }

    console.log("rpg属性.", rpg);
  }
  function sent() {

    // ID of the target textarea
    var textareaId = 'send_textarea';

    // Get the textarea element
    var textarea = document.getElementById(textareaId);
    var send_but = document.getElementById("send_but");
    send_but.addEventListener('click', function (event) {
      console.log('Element clicked');
      textarea.value = "11111" + textarea.value;

    })
  }
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //生成界面
  function generaterpg() {
    const mesTextElements = document.getElementsByClassName('mes_text');
    const lastMesText = mesTextElements[mesTextElements.length - 1];

    Array.from(mesTextElements).forEach(function (element) {

      if (element == lastMesText) {
        //console.log("lastMesText.","最后一个返回");
        return;
      }
      if (element.innerHTML.includes('<div id="myHiddenElement" hidden="">star</div>')) {
        console.log("element", "包含myHiddenElement");
        const regex = /([\s\S]*?)(<div id="myHiddenElement" hidden="">star<\/div>)[\s\S]*?(<div id="myHiddenElement" hidden="">end<\/div>)([\s\S]*?)/;
        const matches = element.innerHTML.match(regex);

        if (matches) {
          const [, beforeContent, , , afterContent] = matches;
          element.innerHTML = beforeContent + afterContent;
          console.log("element", "删除老的");
        }
      }

    })


    if (lastMesText.innerHTML.includes('<div id="myHiddenElement" hidden="">star</div>') || !lastMesText.innerHTML.includes('聊天模式')) {

      return;

    }
    //聊天结算
    if (lastMesText.innerHTML.includes("聊天结算")) {

     // var regex = /<聊天结算>([\s\S]*)\}(?=\s*$)/;
     var regex = /<聊天结算>([\s\S]*)\}/;
      const txt = lastMesText.textContent.replace("json:", "").replace("json:", "").replace("\n","")
      console.log("txt",txt)
      const matches = txt.match(regex);
      console.log("matches111111111",matches)

      // console.log("聊天txt",txt);
      //  console.log("聊天结算",matches);
      if (matches) {
        var jsontx = matches[1];
        jsontx=jsontx+'}';
        jsontx=safe(jsontx);
        var json = JSON.parse(jsontx)

        Object.keys(json).forEach(key => {

          rpg[key] = json[key];

        })
      }
    }

    const style2 = document.createElement('style');

    //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    // 设置style
    let html3 = generatePage();
    style2.textContent = `
        .health-container {
        display: flex;
        align-items: center;
        gap: 10px;
         position: relative;
        }
        label {
        flex-shrink: 0;
        }
        .mana-container {
        display: flex;
        align-items: center;
        gap: 10px;
         position: relative;
        }

        #container {
        font-family: Arial, sans-serif;
        background-color: #222;
        padding: 5px;
        max-width:1024px;
        margin: 0 auto;
        color: #fff;
        }

        #character-info, #other-character {
        display: flex;
        align-items: center;
        margin-bottom: 10px;
        }

        .image-container {
        width: 60%;
        height: 50%;
        border-radius: 5px;
        overflow: hidden;
        margin-right: 3px;
        }

        .image-container img {
        width: 100%;
        height: 100%;
        object-fit: cover;
        }

        .info-box {
        flex: 0.3;
        padding: 5px;
        background-color: #333;
        border-radius: 5px;
        }

        /* 调整进度条样式,使其更加紧致 */
        .health-bar {
        width: 60%; /* 血条的总宽度 */
        height: 15px; /* 血条的高度 */
        background-color: #444; /* 血条的背景色 */
        border-radius: 5px; /* 圆角效果 */
        overflow: hidden; /* 超出部分隐藏 */
        font-size: 13px;
        line-height: 15px; /* 与血条的高度相同 */
        position: relative;
        }
        .mana-bar {
        width: 60%; /* 血条的总宽度 */
        height: 15px; /* 血条的高度 */
        background-color: #444; /* 血条的背景色 */
        border-radius: 5px; /* 圆角效果 */
        overflow: hidden; /* 超出部分隐藏 */
        line-height: 15px; /* 与血条的高度相同 */
        font-size: 13px;
        position: relative;
        }
        .fill {
        height: 100%; /* 填充部分的高度与血条一致 */
        background-color: red; /* 填充部分的颜色为红色 */
        transition: width 0.5s; /* 动画效果,宽度变化时平滑过渡 */
        line-height: 15px; /* 与血条的高度相同 */
        font-size: 13px;
        position: absolute;
        top: 0;
        left: 0;
        }
        .mana {
        height: 100%; /* 填充部分的高度与血条一致 */
        background-color: blue; /* 填充部分的颜色为红色 */
        transition: width 0.5s; /* 动画效果,宽度变化时平滑过渡 */
        line-height: 15px; /* 与血条的高度相同 */
        font-size: 13px;
        position: absolute;
        top: 0;
        left: 0;
        }
        .mana-text {
        position: absolute;
        top: 50%;
        left: 50%;
        line-height: 15px; /* 与血条的高度相同 */
        transform: translate(-100%, -50%);
         font-size: 8px;
         color: white;
         white-space: nowrap;
        }
        .fill-text {
        position: absolute;
        line-height: 15px; /* 与血条的高度相同 */
        top: 50%;
        left: 50%;
        transform: translate(-100%, -50%);
         font-size: 8px;
         color: white;
         white-space: nowrap;
        }
        .progress-bar label {
        margin-right: 1px;
        width: 20px;
        }

        progress {
        flex: 0.2;
        height: 10px;
        appearance: none;
        border-radius: 2px;
        overflow: hidden;
        }

        progress::-webkit-progress-bar {
        background-color: #444;
        }

        progress::-webkit-progress-value {
        background-color: #4CAF50;
        }

        #buttons, #other-buttons {
        display: flex;
        justify-content: center;
        padding: 5px 0;
        }

        button {
        padding: 5px 10px;
        margin: 0 5px;
        font-size: 13px;
        border: none;
        background-color: #4CAF50;
        color: white;
        border-radius: 2px;
        cursor: pointer;
        }

        button:hover {
        background-color: #45a049;
        }`
    style2.setAttribute('data-style2', '');
    const style2Selector = 'style[data-style2]';
    if (!document.querySelector(style2Selector)) {
      document.head.appendChild(style2);
    }
    lastMesText.innerHTML = lastMesText.innerHTML + html3;
    document.getElementById('inventory').addEventListener("click", function () {
      beibao();
    });
    document.getElementById('character').addEventListener("click", function () {
      renwu();
    });
    document.getElementById('quests').addEventListener("click", function () {
      quests();
    });
    let otherCharactersElements = document.getElementsByClassName('otherCharacters')
    for (let i = 0; i < otherCharactersElements.length; i++) {
      otherCharactersElements[i].addEventListener("click", function (Event) {
        otherCharacters(Event.target.id);
      });
    }
    let giftElements = document.getElementsByClassName('gift')
    for (let i = 0; i < giftElements.length; i++) {
      giftElements[i].addEventListener("click", function (Event) {
        gift(Event.target.id);
      });
    }

    //
  }
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  // 更换世界书
  function replshijieshu() {

    const selectElement = document.getElementById("world_editor_select");
    const optionName = "rpg世界世界书"; // 替换为你要选中的选项名称

    for (let i = 0; i < selectElement.options.length; i++) {
      if (selectElement.options[i].text === optionName) {
        selectElement.selectedIndex = i;
        var event = new Event('change');
        selectElement.dispatchEvent(event);
        break;
      }
    }

  }
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  //---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  // 主角色数据

  // <div class="image-container">
  // <img src="${safe(character.image)}" alt="角色照片">
  // </div>
  function generateMainCharacterHTML(character) {
    console.log("character", character);
    var txt = "";
    if (isMobileDevice()) {
      txt = `<img src="${safe(character.image)}" alt="角色照片">
             <div id="character-info">`
    } else {
      txt = `<div id="character-info">
            <div class="image-container">
              <img src="${safe(character.image)}" alt="角色照片">
            </div>`
    }
    var health = Number(character.health.split('/')[0]) / Number(character.health.split('/')[1]) * 100; //分割字符串
    var mana = Number(character.mana.split('/')[0]) / Number(character.mana.split('/')[1]) * 100; //分割字符串
    var xp = Number(character.xp.split('/')[0]) / Number(character.xp.split('/')[1]) * 100;
    console.log("health", health);
    console.log("mana", mana);
    return txt + `<div class="info-box">
              <p><span id="name">${safe(character.name)}</span></p>
              <div class="progress-bar">
                <label>性别:</label>
                <label>${safe(character.gender)}</label>
              </div>
              <div class="health-container">
                <label>血量:</label>
                <div class="health-bar">
                  <div id="health" class="fill" style="width: ${safe(health)}%;"></div>
                  <div id="health-text" class="fill-text">${safe(character.health)}</div>
                </div>
              </div>
              <div class="mana-container">
                <label>蓝量:</label>
                <div class="mana-bar">
                  <div id="mana" class="mana" style="width: ${safe(mana)}%;"></div>
                  <div id="mana-text" class="mana-text">${safe(character.mana)}</div>
                </div>
              </div>
              <div class="progress-bar">
                <label>攻击力:</label>
                <label id="attack-text">${safe(character.attack)}</label>
              </div>
              <div class="progress-bar">
                <label>防御力:</label>
                <label id="defense-text" >${safe(character.defense)}</label>
              </div>
              <div class="progress-bar">
                <label>经验值:</label>
                <progress id="xp" value="${safe(xp)}" max="100"></progress>
              </div>
            </div>
          </div>
        <div id="buttons">
            <button id="inventory">背包</button>
            <button id="character">人物</button>
            <button id="quests">任务</button>
          </div>

          `;
  }
  //<div class="image-container">
  // <img src="${safe(character.image)}" alt="其他角色照片">
  // </div>
  function generateOtherCharacterHTML(character) {
    var txt = "";
    if (isMobileDevice()) {
      txt = `<img src="${safe(character.image)}" alt="角色照片">
          <div id="character-info">`

    } else {
      txt = `<div id="character-info">
              <div class="image-container">
                <img src="${safe(character.image)}" alt="角色照片">
              </div>`

    }
    var affinity = Number(character.affinity.split('/')[0]) / Number(character.affinity.split('/')[1]) * 100;
    txt += `
              <div class="info-box">
                <p><span class="other-name">${safe(DOMPurify.sanitize(character.name))}</span></p>
                <div class="progress-bar">
                  <label>性别:</label>
                  <label>${safe(character.gender)}</label>
                </div>
                <div class="progress-bar">
                  <label>种族:</label>
                  <label>${safe(DOMPurify.sanitize(character.race))}</label>
                </div>
                <div class="progress-bar">
                  <label>好感度:</label>
                  <progress class="affinity" value="${safe(affinity)}" max="100"></progress>
                </div>
              </div>
            </div>
            <div id="other-buttons">`


      ;


    txt += `<button class="otherCharacters" id="${safe(character.name)}">人物</button>`

    txt += `
                <button class="gift" id="${safe(character.name)}">赠送</button>
            </div>`

    return txt
  }

  function getuserAttributes() {
    // 获取用户数据 属性计算
    var includes = false;
    if (Object.keys(rpg).includes("用户属性")) {
      includes = true;
    }
    var user = rpg["用户"][1]["角色"];
    var Attributes = {};
    Attributes.name = rpg["your_name"];
    Attributes.gender = user["性别"];
    Attributes.image = user["照片"];
    Attributes.race = user["种族"];
    Attributes.xp = user["战斗属性json"]["经验条"];
    Attributes.level = user["战斗属性json"]["等级"];
    Attributes.camp = user["战斗属性json"]["阵营"];
    Attributes.Biography = user["战斗属性json"]["人物简介"];

    var sattack = Number(user["战斗属性json"]["攻击"].split('/')[0]);//最小攻击力
    var dattack = Number(user["战斗属性json"]["攻击"].split('/')[1]);//最大攻击力

    var equip = user["战斗属性json"]['已装备']
    for (let key in equip) {
      // console.log(key + ": " + jsonObject[key]);
      if (Object.keys(equip[key]).includes("攻击力")) {
        console.log("攻击力 ", equip[key]);
        sattack = sattack + Number(equip[key]["攻击力"].split('/')[0]);
        dattack = dattack + Number(equip[key]["攻击力"].split('/')[1]);
      }
    }
    Attributes.attack = sattack + "/" + dattack;

    var dhealth = Number(user["战斗属性json"]["血量"].split('/')[1]);
    var dh = dhealth - Number(user["战斗属性json"]["血量"].split('/')[0]);

    for (let key in equip) {
      // console.log(key + ": " + jsonObject[key]);
      if (Object.keys(equip[key]).includes("血量")) {

        dhealth = dhealth + Number(equip[key]["血量"]);

      }
    }
    Attributes.health = dhealth + "/" + dhealth;

    var dmana = Number(user["战斗属性json"]["蓝量"].split('/')[1]);
    var dm = dmana - Number(user["战斗属性json"]["蓝量"].split('/')[0]);
    for (let key in equip) {
      // console.log(key + ": " + jsonObject[key]);
      if (Object.keys(equip[key]).includes("蓝量")) {
        dmana = dmana + Number(equip[key]["蓝量"]);
      }
    }
    Attributes.mana = dmana + "/" + dmana;

    Attributes.defense = Number(user["战斗属性json"]["防御"]);
    for (let key in equip) {
      // console.log(key + ": " + jsonObject[key]);
      if (Object.keys(equip[key]).includes("防御")) {
        Attributes.defense = Attributes.defense + Number(equip[key]["防御"]);
      }
    }
    Attributes.xp = user["战斗属性json"]["经验条"];
    //-----------------------------------------------------------------------------------------
    //buff!!!!!!!!!!!!!!!!!!!!!!!!!
    let buff = rpg["用户"][1]["角色"]["战斗属性json"]["buff"];
    for (let a = 0; a < buff.length; a++) {
      for (let d = 0; d < buff[a].我方效果.length; d++) {
        if (buff[a].我方效果[d] !== "0") {
          switch (d) {
            case 0:
              // effect2.textContent += `\n造成伤害: ${safe(neweq.敌方效果[0])}`;
              Attributes.health = (Number(Attributes.health.split('/')[0]) + Number(buff[a]["我方效果"][0])) + "/" + (Number(Attributes.health.split('/')[1]));
              break;
            case 1:
              //  effect2.textContent += `\n损失蓝量: ${safe(neweq.敌方效果[1])}`;
              Attributes.mana = Number(Attributes.mana.split('/')[0]) + Number(buff[a]["我方效果"][1]) + "/" + (Number(Attributes.mana.split('/')[1]));
              break;
            case 2:
              //  effect2.textContent += `\n降低攻击力: ${safe(neweq.敌方效果[2])}`;
              Attributes.attack = Number(Attributes.attack.split('/')[0]) + Number(buff[a]["我方效果"][2]) + "/" + (Number(Attributes.attack.split('/')[1]));
              break;
            case 3:
              //  effect2.textContent += `\n降低防御: ${safe(neweq.敌方效果[3])}`;
              Attributes.defense = Number(Attributes.defense) + Number(buff[a]["我方效果"][3]);
              break;
          }
        }
      }
    };
    if (includes) {
      if (Number(rpg["用户属性"]["mana"].split('/')[0]) < Number(Attributes.mana.split('/')[1])) {

        Attributes.mana = rpg["用户属性"]["mana"].split('/')[0] + "/" + Number(Attributes.mana.split('/')[1]);

      }
    }
    if (includes) {
      if (Number(rpg["用户属性"]["health"].split('/')[0]) < Number(Attributes.health.split('/')[1])) {
        Attributes.health = rpg["用户属性"]["health"].split('/')[0] + "/" + Number(Attributes.health.split('/')[1]);
      }
    }

    rpg["用户属性"] = Attributes;
    return Attributes;

  }
  //_______________________________________________________________________________________________________
  //更新属性数据

  function updataAttributes() {

    let Attributes = getuserAttributes();
    let mana = Number(Attributes.mana.split('/')[0]) / Number(Attributes.mana.split('/')[1]) * 100;
    let health = Number(Attributes.health.split('/')[0]) / Number(Attributes.health.split('/')[1]) * 100;
    document.getElementById("health-text").textContent = Attributes.health;
    document.getElementById("health").style = `width: ${safe(health)}%`;
    document.getElementById("mana").style = `width: ${safe(mana)}%`;
    document.getElementById("mana-text").textContent = rpg["用户属性"]["mana"];
    document.getElementById("attack-text").textContent = rpg["用户属性"]["attack"];
    document.getElementById("defense-text").textContent = rpg["用户属性"]["defense"];
    document.getElementById("xp").value = Number(rpg["用户属性"]["xp"].split('/')[0]) / Number(rpg["用户属性"]["xp"].split('/')[1]) * 100;


  }


//弃用

  function getotherCharactersAttributes(name) {

    var Attributes = {};
    console.log(name);
    console.log(rpg[name]);
    var Characters = rpg[name][1]["角色"]
    console.log("角色", Characters);
    Attributes.name = Characters["姓名"];
    Attributes.age = Characters["年龄"];
    Attributes.gender = Characters["性别"];
    Attributes.race = Characters["种族"];
    Attributes.affinity = Characters["战斗属性json"]["对{{user}}的好感度"]
    Attributes.image = Characters["照片"];
    Attributes.health = Characters["战斗属性json"]["血量"];
    Attributes.attack = Characters["战斗属性json"]["攻击力"];
    Attributes.defense = Characters["战斗属性json"]["防御"];
    Attributes.mana = Characters["战斗属性json"]["蓝量"];
    if (Characters["战斗属性json"]["经验条"] == "") {
      Attributes.xp = 0;
    } else {
      Attributes.xp = Characters["战斗属性json"]["经验条"];
    }

    return Attributes;
  }
  //_______________________________________________________________________________________________________________
  //获取其他角色信息
  function getOtherAttributes(name) {
    // 获取用户数据 属性计算
    var includes = false;


    if (!Object.keys(rpg).includes("其他人物属性")) {
      rpg["其他人物属性"] = {};
    }
    if (Object.keys(rpg).includes("其他人物属性") && Object.keys(rpg["其他人物属性"]).includes(name)) {
      includes = true;
    }


    var user = rpg[name][1]["角色"];
    var Attributes = {};
    Attributes.name = name;
    Attributes.affinity = user["战斗属性json"]["对{{user}}的好感度"]
    Attributes.gender = user["性别"];
    Attributes.image = user["照片"];
    Attributes.race = user["种族"];
    Attributes.xp = user["战斗属性json"]["经验条"];
    Attributes.level = user["战斗属性json"]["等级"];
    Attributes.camp = user["战斗属性json"]["阵营"];
    Attributes.Biography = user["战斗属性json"]["人物简介"];

    var sattack = Number(user["战斗属性json"]["攻击"].split('/')[0]);//最小攻击力
    var dattack = Number(user["战斗属性json"]["攻击"].split('/')[1]);//最大攻击力

    var equip = user["战斗属性json"]['已装备']
    for (let key in equip) {
      // console.log(key + ": " + jsonObject[key]);
      if (Object.keys(equip[key]).includes("攻击力")) {
        console.log("攻击力 ", equip[key]);
        sattack = sattack + Number(equip[key]["攻击力"].split('/')[0]);
        dattack = dattack + Number(equip[key]["攻击力"].split('/')[1]);
      }
    }
    Attributes.attack = sattack + "/" + dattack;

    var dhealth = Number(user["战斗属性json"]["血量"].split('/')[1]);
    var dh = dhealth - Number(user["战斗属性json"]["血量"].split('/')[0]);

    for (let key in equip) {
      // console.log(key + ": " + jsonObject[key]);
      if (Object.keys(equip[key]).includes("血量")) {

        dhealth = dhealth + Number(equip[key]["血量"]);

      }
    }
    Attributes.health = dhealth + "/" + dhealth;

    var dmana = Number(user["战斗属性json"]["蓝量"].split('/')[1]);
    var dm = dmana - Number(user["战斗属性json"]["蓝量"].split('/')[0]);
    for (let key in equip) {
      // console.log(key + ": " + jsonObject[key]);
      if (Object.keys(equip[key]).includes("蓝量")) {
        dmana = dmana + Number(equip[key]["蓝量"]);
      }
    }
    Attributes.mana = dmana + "/" + dmana;

    Attributes.defense = Number(user["战斗属性json"]["防御"]);
    for (let key in equip) {
      // console.log(key + ": " + jsonObject[key]);
      if (Object.keys(equip[key]).includes("防御")) {
        Attributes.defense = Attributes.defense + Number(equip[key]["防御"]);
      }
    }
    Attributes.xp = user["战斗属性json"]["经验条"];
    //-----------------------------------------------------------------------------------------
    //buff!!!!!!!!!!!!!!!!!!!!!!!!!
    let buff = rpg["用户"][1]["角色"]["战斗属性json"]["buff"];
    for (let a = 0; a < buff.length; a++) {
      for (let d = 0; d < buff[a].我方效果.length; d++) {
        if (buff[a].我方效果[d] !== "0") {
          switch (d) {
            case 0:
              // effect2.textContent += `\n造成伤害: ${safe(neweq.敌方效果[0])}`;
              Attributes.health = (Number(Attributes.health.split('/')[0]) + Number(buff[a]["我方效果"][0])) + "/" + (Number(Attributes.health.split('/')[1]));
              break;
            case 1:
              //  effect2.textContent += `\n损失蓝量: ${safe(neweq.敌方效果[1])}`;
              Attributes.mana = Number(Attributes.mana.split('/')[0]) + Number(buff[a]["我方效果"][1]) + "/" + (Number(Attributes.mana.split('/')[1]));
              break;
            case 2:
              //  effect2.textContent += `\n降低攻击力: ${safe(neweq.敌方效果[2])}`;
              Attributes.attack = Number(Attributes.attack.split('/')[0]) + Number(buff[a]["我方效果"][2]) + "/" + (Number(Attributes.attack.split('/')[1]));
              break;
            case 3:
              //  effect2.textContent += `\n降低防御: ${safe(neweq.敌方效果[3])}`;
              Attributes.defense = Number(Attributes.defense) + Number(buff[a]["我方效果"][3]);
              break;
          }
        }
      }
    };
    if (includes) {
      if (Number(rpg["其他人物属性"][name]["mana"].split('/')[0]) < Number(Attributes.mana.split('/')[1])) {

        Attributes.mana = rpg["其他人物属性"][name]["mana"].split('/')[0] + "/" + Number(Attributes.mana.split('/')[1]);

      }
    }
    if (includes) {
      if (Number(rpg["其他人物属性"][name]["health"].split('/')[0]) < Number(Attributes.health.split('/')[1])) {
        Attributes.health = rpg["其他人物属性"][name]["health"].split('/')[0] + "/" + Number(Attributes.health.split('/')[1]);
      }
    }

    rpg["其他人物属性"][name] = Attributes;
    return Attributes;

  }












  function generatePage() {
    var mainCharacter = getuserAttributes();
    // 其他角色数组
    var nowCharacters = rpg["当前角色"];
    var otherCharacters = [];
    nowCharacters.forEach(function (character) {
      if (character == rpg["your_name"] || !rpg.hasOwnProperty(character)) {
        return;
      }
      otherCharacters.push(getOtherAttributes(character));
    });
    // 生成主角色HTML
    var mainHTML = generateMainCharacterHTML(mainCharacter);

    // 生成其他角色HTML
    const otherCharactersHTML = otherCharacters.map(generateOtherCharacterHTML).join('');

    // 添加其他角色的按钮
    return '<div id="myHiddenElement" hidden>star</div>' + mainHTML + otherCharactersHTML + '<div id="myHiddenElement" hidden>end</div>'

  }
  function isMobileDevice() {
    return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
  }
  function rpgmain() {
    if (checkSendBuClass()) {
      return;
    }
    load();
    console.log("rgp全部", rpg);
    generaterpg();
  }
  function checkSendBuClass() {
    const element = document.getElementById('send_but');
    if (element && element.className.includes('displayNone')) {
      return true;
    }
    if (!rpg["rpg"]) {

      return true;

    }
    return false;
  }

  function safe(str) {
    return DOMPurify.sanitize(str, {FORBID_TAGS: ['style']});
  }

  setInterval(rpgmain, 2000);

})();