// ==UserScript== // @name 自动换装 // @namespace http://your-namespace.com // @version 2026-06-05 // @description 页面元素监控与操作 // @author 生猛的程序 // @match https://aring.cc/awakening-of-war-soul-ol/ // @grant none // ==/UserScript== (function() { 'use strict'; //----如果复制不了装备F12 检查Sources下的assets/index-****.js是否匹配,不匹配需要重更新复制路径替换下面这个变量 let jsPath //= `https://aring.cc/awakening-of-war-soul-ol/assets/index-nMbDFSxf.js`; let checkType=1; //---共斗类型 0 普通 1 进阶 特别说明【战斗换装优先级高于共斗】 const publicData=[] //{'hp':30,'cin':5,'ctype':1}---【共斗】装备规则切换 hp 血量值 cin 装备套路位置 ctype : 0 大于 1 小于 const pkData=[] //---【挑战】装备规则切换 hp 血量值 cin 装备套路位置 ctype : 0 大于 1 小于 //---------------------------------换装UI const htmlData= { styles:` /* 弹窗遮罩 */ .modal-overlay-change { position: fixed; top: 0; width: 100%; max-width: 540px; height: 100%; box-sizing: border-box; background-color: rgba(0, 0, 0, 0.6); display: flex; justify-content: center; align-items: center; z-index: 1000; opacity: 0; visibility: hidden; left: 50%; /* 居中定位 */ transform: translateX(-50%); /* 水平居中 */ } .modal-overlay-change.show { opacity: 1; visibility: visible; } /* 弹窗主体 */ .modalchange { background-color: #000; box-sizing: border-box; border: 2px solid #fff; border-radius: 10px; margin: 0 auto; padding: 15px; width: 90%; max-width: 500px; max-height: 90vh; overflow-y: auto; transform: scale(0.7); transition: transform 0.3s ease; } @media (min-width: 1001px) { .modal-overlay.show { position: fixed; transform: scale(1); /* 定位到右侧 */ left: auto; right: calc(50% - 770px); } } .modal-overlay-change.show .modalchange { transform: scale(1); } /* 顶部模块样式 */ .input-module { background-color: #1e1e1e; padding: 20px; border-radius: 8px; margin-bottom: 20px; border: 1px solid #333; } .input-module h2 { margin-bottom: 15px; } .form-group { display: flex; flex-wrap: wrap; margin-bottom: 15px; } .form-row { display: flex; gap: 15px; min-width: 0; /* 添加这一行 */ margin-bottom: 15px; } .condition-btn { flex: 1; /* 平均分配剩余空间 */ background-color: #444444; padding: 8px 5px; border: none; color: #999; border-radius: 3px; cursor: pointer; font-size: 0.9em; } .condition-btn:hover { background-color: #555555; } .condition-btn.active { color: white; background-color: #0066cc; } .form-row:last-child { margin-bottom: 0; } .button-item { flex: 0 0 auto; } .button-item .add-btn, .button-item .complete-btn { width: auto; padding: 10px 20px; min-width: 80px; } .button-group { display: flex; gap: 8px; width: 100%; /* 确保容器占满父元素宽度 */ } .complete-btn { background-color: #28a745; color: white; border: 1px solid #444; border-radius: 4px; cursor: pointer; font-size: 14px; align-self: center; } .complete-btn:hover { background-color: #218838; } .form-change-item { display: flex; flex-direction: column; flex: 1 1 0; /* 明确设置 flex 属性 */ min-width: 0; } .form-change-item label { margin-bottom: 5px; font-size: 14px; } .form-change-item input { padding: 10px; background-color: #2d2d2d; border: 1px solid #444; border-radius: 4px; color: white; font-size: 14px; min-width: 0; /* 添加这一行 */ } .form-change-item select { padding: 7px; background-color: #2d2d2d; border: 1px solid #444; border-radius: 4px; color: white; font-size: 14px; min-width: 0; /* 添加这一行 */ } .form-change-item input:focus, .form-change-item select:focus { outline: none; border-color: #666; } .button-item { flex: 0 0 auto; } .add-btn { align-self: center; padding: 10px 20px; background-color: #333; color: white; border: 1px solid #444; border-radius: 4px; cursor: pointer; font-size: 14px; } .add-btn:hover { background-color: #444; } /* 中间列表模块样式 */ /* 中间列表模块样式 */ .list-module { background-color: #1e1e1e; padding: 10px; border-radius: 8px; margin-bottom: 10px; border: 1px solid #333; } .list-module ul { padding-inline-start: 0; /* 重置默认内边距 */ padding-left: 0; /* 兼容性处理 */ margin: 0; /* 如需要也可重置外边距 */ } .list-module h3 { margin-bottom: 6px; } .boss-list { list-style: none; } .boss-item { display: flex; justify-content: space-between; align-items: flex-start; /* 改为flex-start */ padding: 3px 5px; background-color: #2d2d2d; margin-bottom: 8px; border-radius: 4px; border: 1px solid #444; cursor: pointer; } .boss-item .content-wrapper { flex: 1; margin-right: 8px; } .delete-child-btn, .content-wrapper { align-self: center; /* 垂直居中 */ flex-shrink: 0; /* 防止按钮被压缩 */ } .boss-item:hover { background-color: #333; } .boss-item.selected { background-color: #444; border-color: #666; } .delete-btn, .delete-child-btn { background-color: #dc3545; color: white; border: none; padding: 5px 10px; border-radius: 4px; cursor: pointer; font-size: 12px; } .delete-btn:hover, .delete-child-btn:hover { background-color: #c82333; } /* 底部详情模块样式 */ .detail-module { background-color: #1e1e1e; padding: 10px; border-radius: 8px; border: 1px solid #333; } .detail-module ul { padding-inline-start: 0; /* 重置默认内边距 */ padding-left: 0; /* 兼容性处理 */ margin: 0; /* 如需要也可重置外边距 */ } .detail-module h3 { margin-bottom: 15px; } .detail-content { display: flex; flex-direction: column; gap: 10px; } .detail-item { display: flex; justify-content: space-between; padding: 10px 0; border-bottom: 1px solid #333; } .detail-label { font-weight: bold; } .detail-value { text-align: right; } .no-selection { text-align: center; color: #888; padding: 20px; } .detail-delete-btn { align-self: flex-end; background-color: #dc3545; color: white; border: none; padding: 10px 20px; border-radius: 4px; cursor: pointer; font-size: 14px; margin-top: 10px; } .detail-delete-btn:hover { background-color: #c82333; }`, bodyv:`
`, buttonXML:` ` } function findMsg(){ //const listview = document.querySelector('dungeon-list'); //const listview = document.querySelectorAll('.dungeon.affix'); // 获取父容器和所有子元素 const container = document.querySelector('.home-btn-wrap'); if (container) { initView(); const children = container.children; // 创建新元素 const newElement = document.createElement(`div`); newElement.className = 'common-btn-wrap'; newElement.setAttribute(`color`,"#626aef") newElement.setAttribute(`dark`,"true") newElement.setAttribute(`data-v-ab3b4a1b`,"") newElement.setAttribute(`style`,"grid-column: span 3;width:100%;") newElement.innerHTML = htmlData.buttonXML; // 添加点击事件(可选) newElement.addEventListener('click', () => { // console.log('新按钮被点击',T); document.getElementById('modalOverChangelay').classList.add('show'); }); container.appendChild(newElement); }else{ //每隔10秒一刷新 setTimeout(findMsg, 2000); } } function initView(){ injectStyleTag() injectDivTag() // 点击遮罩关闭弹窗 document.getElementById('modalOverChangelay').addEventListener('click', function(e) { if (e.target === this) { closeModal(); } }); // ESC键关闭弹窗 document.addEventListener('keydown', function(e) { if (e.key === 'Escape') { closeModal(); } }); bossNameInput = document.getElementById('bossName'); bossHealthInput = document.getElementById('bossHealth'); equipmentPlanSelect = document.getElementById('equipmentPlan'); addBtn = document.getElementById('addBtn'); completeBtn = document.getElementById('completeBtn'); bossList = document.getElementById('bossList'); aboveBtn = document.getElementById('aboveBtn'); belowBtn = document.getElementById('belowBtn'); detailContent = document.getElementById('detailContent'); // 在页面加载时初始化数据 loadData(); loadBossData(); createListener(); } function closeModal() { document.getElementById('modalOverChangelay').classList.remove('show'); } function injectStyleTag() { const style = document.createElement('style'); style.type = 'text/css'; style.textContent = htmlData.styles; document.head.appendChild(style); } function injectDivTag() { const div = document.createElement('div'); div.innerHTML = htmlData.bodyv document.body.appendChild(div); } function findIndexJS(){ const scripts = document.querySelectorAll('script[src]'); scripts.forEach(script => { const src = script.src; if (src.includes('assets') && src.includes('index') && src.endsWith('.js')) { jsPath=src; findMsg() return // console.log('找到目标文件:', src); } }); console.log('文件筛选完毕:'); } setTimeout(findIndexJS, 2000); // 数据存储 let savekey='' let bossData = []; let isLarge = true; let selectedBossId = null; let selectedChildId = null; let equippedRoutineList = []// DOM元素 let bossNameInput = document.getElementById('bossName'); let bossHealthInput = document.getElementById('bossHealth'); let equipmentPlanSelect = document.getElementById('equipmentPlan'); let addBtn = document.getElementById('addBtn'); let completeBtn = document.getElementById('completeBtn'); let bossList = document.getElementById('bossList'); let aboveBtn = document.getElementById('aboveBtn'); let belowBtn = document.getElementById('belowBtn'); let detailContent = document.getElementById('detailContent'); let UserData =null function loadData(){ if(!jsPath){ return; } if(UserData){ initEquipmentPlans() }else{ const getModuleExports = async () => { try { const module = await import(jsPath); // 替换为实际路径 const data={}; data.userD=module.u; return data; } catch (e) { console.error('模块加载失败:', e); } } getModuleExports().then(tool => { tool && (UserData=tool.userD,initEquipmentPlans()); }); } } function createListener(){ // 添加BOSS addBtn.addEventListener('click', () => { atkDataWrite(false) }); completeBtn.addEventListener('click', () => { //这里是修改 //clearForm(true); atkDataWrite(true) }); aboveBtn.addEventListener('click', () => { changeCondition(1) }); belowBtn.addEventListener('click', () => { changeCondition(2) }); } function atkDataWrite(isupdate){ const name = bossNameInput.value.trim(); let hp = bossHealthInput.value.trim(); // 解析选中的装备方案信息 const selectedPlan = JSON.parse(equipmentPlanSelect.value); const planId = selectedPlan.id; const planName = selectedPlan.name; if (!name) { alert('请输入BOSS名称'); return; } const newBoss = { id: Date.now(), hp: hp || '未设置', isLarge: isLarge, bossName: name, planId: planId, // 记录ID planName: planName // 记录name }; let bossModel = bossData.find(item => item.bossName === name); let isNew = false; if (!bossModel) { bossModel = { id: Date.now() + 300, } isNew = true bossModel.bossName = name // 记录name bossModel.atks = [] // 记录name } if(isupdate){ let bossatk = bossModel.atks.find(item => item.id === selectedChildId); bossatk.hp = hp; bossatk.isLarge = isLarge; bossatk.planId = planId; bossatk.planName = planName; } !isupdate && bossModel.atks.push(newBoss); isNew && bossData.push(bossModel); saveBossData(); renderBossList(); renderDetail(); clearForm(false); completeBtn.style.display = 'none'; } // 初始化装备方案下拉框数据 function initEquipmentPlans() { // 清空现有选项 equipmentPlanSelect.innerHTML = ''; if(!UserData){ return } const r = UserData() if(r.username){ savekey=r.username // 添加新选项 let itemindex=1; r.equippedRoutineList.forEach(item => { const option = document.createElement('option'); option.value = JSON.stringify({ id: itemindex, name: item.name }); // 存储ID和name option.textContent = item.name; equipmentPlanSelect.appendChild(option); itemindex++; }); loadBossData() }else{ setTimeout(initEquipmentPlans, 2000); } } function changeCondition(clicktype) { isLarge = clicktype == 1; if (isLarge) { aboveBtn.classList.add('active'); belowBtn.classList.remove('active'); } else { aboveBtn.classList.remove('active'); belowBtn.classList.add('active'); } } // 渲染BOSS列表 function renderBossList() { bossList.innerHTML = ''; if (bossData.length === 0) { bossList.innerHTML = '