// ==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/js-yaml@4.1.0/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 // @downloadURL none // ==/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 += ` `; panel.innerHTML = `

设置面板










帮助 dc讨论 BY从前我跟你一样 `; 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 = `

${safe(character.name)}

${safe(character.health)}
${safe(character.mana)}
`; } 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 = `当前拥有金币:`;//; // 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 += `

${safe(eq.部位)}

` if (eq.hasOwnProperty("附带技能")&&Object.keys(eq.附带技能).length !== 0) { innerHTML += `
` } innerHTML += `
` if(Number(eq.数量)>=10){ innerHTML += `
`; } eqs.push(eq); itemList2.innerHTML+=innerHTML; } else { itemList2.innerHTML += `

${safe(eq.名称)}列表没有?

` } }//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 +=`

${safe(eq.名称)}

` 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 += `
`; 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 += `
`; innerHTML += `
` if(Number(eq.数量)>=10){ innerHTML += `
`; } eqs.push(eq); itemList2.innerHTML+=innerHTML; } else { itemList2.innerHTML += `

${safe(eq.名称)}列表没有?

` } } } 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 +=`

${safe(eq.名称)}

` innerHTML += `
` if(Number(eq.数量)>=10){ innerHTML += `
`; } eqs.push(eq); itemList2.innerHTML+=innerHTML; } else { itemList2.innerHTML += `

${safe(eq.名称)}列表没有?

` } } } ////////卖东西 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 += `

${safe(eq.部位)}

` if (eq.hasOwnProperty("附带技能")&&Object.keys(eq.附带技能).length !== 0) { innerHTML += `
` } innerHTML += `
` if(Number(eq.数量)>=10){ innerHTML += `
`; } eqs2.push(eq); itemList2.innerHTML+=innerHTML; } else { itemList2.innerHTML += `

${safe(eq.名称)}列表没有?

` } } } 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

${safe(eq.名称)}

` 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 += `
`; 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 += `
`; innerHTML += `
` if(Number(eq.数量)>=10){ innerHTML += `
`; } eqs2.push(eq); itemList2.innerHTML+=innerHTML; } else { itemList2.innerHTML += `

${safe(eq.名称)}列表没有?

` } } } 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 +=`

${safe(eq.名称)}

` innerHTML += `
` if(Number(eq.数量)>=10){ innerHTML += `
`; } eqs2.push(eq); itemList2.innerHTML+=innerHTML; } else { itemList2.innerHTML += `

${safe(eq.名称)}列表没有?

` } } } console.log("eqs",eqs) for(let e=0;e

${safe(eq.部位)}

` if (eq.hasOwnProperty("附带技能")&&Object.keys(eq.附带技能).length !== 0) { innerHTML += `
` } innerHTML += `
` innerHTML += `
`; eqs.push(eq); itemList2.innerHTML+=innerHTML; } if(Object.keys(eq).length !== 0&&eq.物品分类=="可消耗物品"){ innerHTML +=`

${safe(eq.物品分类)}

` 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 += `
`; 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 += `
`; innerHTML += `
` innerHTML += `
`; eqs.push(eq); itemList2.innerHTML+=innerHTML; } }//for if(eqs.length>0){ for(let i=0;i

${safe(eq.名称)}

` 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 += `
`; 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 += `
`; innerHTML += `
` eqs.push(eq); itemList2.innerHTML+=innerHTML; //////////////////////// }//内容 }//循环 if(eqs.length>0){ for(let i=0;i0){ cls2.push("1"); } if(cnum<0){ alert("材料不足"); return false; } } } } if(cls.length !== cls2.length){ alert("材料不足") return; } for(let c=0;c0){ rpg["用户背包"][1]["json"]["材料"][c].数量=cnum; } if(cnum<0){ alert("材料不足"); return false; } } } } } let go=true; for(let y=0;y0){ cls2.push("1"); } if(cnum<0){ alert("材料不足"); return false; } } } } if(cls.length !== cls2.length){ alert("材料不足") return; } for(let c=0;c0){ rpg["用户背包"][1]["json"]["材料"][c].数量=cnum; } if(cnum<0){ alert("材料不足"); return false; } } } } let go=true; for(let y=0;y { 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 += `

${safe(eq.名称)}

` 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 += `
`; innerHTML += `
`; 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 = `

${safe(character.name)}

${safe(character.health)}
${safe(character.mana)}
`; } 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 += `

${safe(eq.部位)}

` if (eq.hasOwnProperty("附带技能")&&Object.keys(eq.附带技能).length !== 0) { itemList.innerHTML += `
` } itemList.innerHTML += `
`; } else { itemList.innerHTML += `

${safe(key)}

` } } } 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 += `

${safe(eq.名称)}

` 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 += `
`; 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 += `
`; innerHTML += `
`; 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 += `

${safe(eq.名称)}

` 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 += `
`; 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 += `
`; innerHTML += `
`; 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 += `

${safe(eq.名称)}

` 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 += `
`; 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 += `
`; innerHTML += `
`; 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 + `
` 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('')) { console.log("element", "包含myHiddenElement"); const regex = /([\s\S]*?)(