配队模拟器:修订间差异
来自卡厄思梦境WIKI
创建页面,内容为“<script> (function() { 'use strict'; // ========== 工具函数 ========== function show(el) { if (el) el.style.display = 'block'; } function hide(el) { if (el) el.style.display = 'none'; } // ========== 战斗员选择 ========== const characterBox = document.getElementById('character-box'); const selectedCharacter = document.getElementById('selected-character'); characterBox.addEventListener('click', function(e) { e.…” |
无编辑摘要 |
||
| 第1行: | 第1行: | ||
<!-- JavaScript --> | |||
<script> | <script> | ||
// 存储当前选择状态 | |||
let currentSelection = { | |||
character: null, | |||
partner: null, | |||
cards: [], | |||
weapon: null, | |||
armor: null, | |||
ring: null | |||
}; | |||
// 打开选择模态框 | |||
function openSelectionModal(type) { | |||
const modal = document.getElementById('selection-modal'); | |||
const content = document.getElementById('modal-content'); | |||
switch(type) { | |||
case 'character': | |||
content.innerHTML = `{{#ask:[[分类:战斗员]] | |||
|?名称 | |||
|?稀有度 | |||
|?职业 | |||
|?属性 | |||
|sort=实装日期,稀有度,id | |||
|order=desc,desc,desc | |||
|mainlabel=- | |||
|link=none | |||
|template=配队/战斗员 | |||
|headers=hide | |||
|format=template | |||
|limit=1000 | |||
}}`; | |||
break; | |||
case 'partner': | |||
content.innerHTML = `{{#ask:[[分类:伙伴]] | |||
|?名称 | |||
|?稀有度 | |||
|?职业 | |||
|?属性 | |||
|?id | |||
|sort=实装日期,稀有度,id | |||
|order=desc,desc,desc | |||
|mainlabel=- | |||
|link=none | |||
|template=配队/伙伴 | |||
|headers=hide | |||
|format=template | |||
|limit=1000 | |||
}}`; | |||
break; | |||
case 'card': | |||
// 需要先选择角色才能选择卡牌 | |||
if (!currentSelection.character) { | |||
alert('请先选择角色'); | |||
return; | |||
} | |||
content.innerHTML = generateCardSelection(); | |||
break; | |||
case 'weapon': | |||
content.innerHTML = generateEquipmentSelection('武器'); | |||
break; | |||
case 'armor': | |||
content.innerHTML = generateEquipmentSelection('装甲'); | |||
break; | |||
case 'ring': | |||
content.innerHTML = generateEquipmentSelection('戒指'); | |||
break; | |||
} | |||
modal.style.display = 'block'; | |||
document.body.style.overflow = 'hidden'; | |||
// 为生成的元素添加点击事件 | |||
setTimeout(() => { | |||
addSelectionEvents(type); | |||
}, 100); | |||
} | |||
// 关闭选择模态框 | |||
const | function closeSelectionModal() { | ||
const modal = document.getElementById('selection-modal'); | |||
modal.style.display = 'none'; | |||
document.body.style.overflow = 'auto'; | |||
} | |||
// 生成卡牌选择界面 | |||
function generateCardSelection() { | |||
if (!currentSelection.character) return ''; | |||
// 这里需要根据选择的角色获取对应的卡牌数据 | |||
// 假设从模板中获取卡牌信息 | |||
return ` | |||
<div> | |||
<h3>选择卡牌 - ${currentSelection.character}</h3> | |||
<div | <div style="display: flex; flex-wrap: wrap; gap: 10px;"> | ||
<!-- 自我意识技能 --> | |||
<div class="card-selection" data-card-type="ego"> | |||
{{#invoke:卡牌|main|角色模块|自我意识技能卡牌}} | |||
</div> | |||
<!-- 起始卡牌 --> | |||
<div class="card-selection" data-card-type="start1"> | |||
{{#invoke:卡牌|main|角色模块|起始卡牌_1}} | |||
</div> | |||
<div class="card-selection" data-card-type="start2"> | |||
{{#invoke:卡牌|main|角色模块|起始卡牌_2}} | |||
</div> | |||
<div class="card-selection" data-card-type="start3"> | |||
{{#invoke:卡牌|main|角色模块|起始卡牌_3}} | |||
</div> | |||
<div class="card-selection" data-card-type="start4"> | |||
{{#invoke:卡牌|main|角色模块|起始卡牌_4}} | |||
</div> | |||
<!-- 独特卡牌 --> | |||
<div class="card-selection" data-card-type="unique1"> | |||
{{#invoke:卡牌|main|角色模块|独特卡牌_1}} | |||
</div> | </div> | ||
`; | <div class="card-selection" data-card-type="unique2"> | ||
{{#invoke:卡牌|main|角色模块|独特卡牌_2}} | |||
</div> | |||
<div class="card-selection" data-card-type="unique3"> | |||
{{#invoke:卡牌|main|角色模块|独特卡牌_3}} | |||
</div> | |||
<div class="card-selection" data-card-type="unique4"> | |||
{{#invoke:卡牌|main|角色模块|独特卡牌_4}} | |||
</div> | |||
</div> | |||
</div>`; | |||
} | |||
// 生成装备选择界面 | |||
function generateEquipmentSelection(type) { | |||
return ` | |||
<div> | |||
<h3>选择${type}</h3> | |||
<div style="display: flex; flex-wrap: wrap; gap: 10px;"> | |||
{{#invoke:装备|generateCards}} | |||
</div> | |||
</div>`; | |||
} | |||
// 添加选择事件 | |||
function addSelectionEvents(type) { | |||
const items = document.querySelectorAll('.selection-item'); | |||
items.forEach(item => { | |||
item.addEventListener('click', function() { | |||
const name = this.getAttribute('data-name'); | |||
const id = this.getAttribute('data-id'); | |||
switch(type) { | |||
case 'character': | |||
. | selectCharacter(name, id); | ||
const | break; | ||
case 'partner': | |||
selectPartner(name, id); | |||
break; | |||
case 'card': | |||
selectCard(name, this.getAttribute('data-card-type')); | |||
break; | |||
case 'weapon': | |||
selectWeapon(name, id); | |||
break; | |||
case 'armor': | |||
selectArmor(name, id); | |||
break; | |||
case 'ring': | |||
selectRing(name, id); | |||
break; | |||
} | |||
}); | closeSelectionModal(); | ||
}); | }); | ||
}); | }); | ||
} | |||
// 选择角色 | |||
const | function selectCharacter(name, id) { | ||
currentSelection.character = name; | |||
const slot = document.getElementById('character-slot'); | |||
slot.innerHTML = `[[File:战斗员图鉴_${name}.png|150px|link=]]`; | |||
slot.style.justifyContent = 'center'; | |||
} | |||
// 选择伙伴 | |||
function selectPartner(name, id) { | |||
currentSelection.partner = name; | |||
const slot = document.getElementById('partner-slot'); | |||
slot.innerHTML = `[[File:face_character_wide_${id}.png|150px|link=]]`; | |||
slot.style.justifyContent = 'center'; | |||
} | |||
// 选择卡牌 | |||
function selectCard(name, cardType) { | |||
currentSelection.cards.push({name, type: cardType}); | |||
updateDeckDisplay(); | |||
} | |||
// 选择武器 | |||
function selectWeapon(name, id) { | |||
currentSelection.weapon = name; | |||
const slot = document.getElementById('weapon-slot'); | |||
slot.innerHTML = generateEquipmentDisplay(name, id); | |||
slot.style.justifyContent = 'center'; | |||
} | |||
// 选择装甲 | |||
function selectArmor(name, id) { | |||
currentSelection.armor = name; | |||
const slot = document.getElementById('armor-slot'); | |||
slot.innerHTML = generateEquipmentDisplay(name, id); | |||
slot.style.justifyContent = 'center'; | |||
} | |||
// 选择戒指 | |||
function selectRing(name, id) { | |||
currentSelection.ring = name; | |||
const slot = document.getElementById('ring-slot'); | |||
slot.innerHTML = generateEquipmentDisplay(name, id); | |||
slot.style.justifyContent = 'center'; | |||
} | |||
// 生成装备显示 | |||
function generateEquipmentDisplay(name, id) { | |||
return ` | |||
<div style="position:relative;width:124px;height:124px"> | |||
<div style="position:absolute;top:0px;left:0px">[[File:frame_item_rarity_金.png|124px]]</div> | |||
<div style="position:absolute;top:8px;left:8px;width:108px;height:108px;border:1px solid #fff;"></div> | |||
<div style="position:absolute;top:6px;left:6px;">[[File:relic_${id.toString().padStart(4, '0')}.png|112px|center]]</div> | |||
<div style="position:absolute;bottom:2px;left:6px;">{{描边|黑|${name}}}</div> | |||
</div>`; | |||
} | |||
// 更新卡组显示 | |||
function updateDeckDisplay() { | |||
const deckArea = document.getElementById('deck-area'); | |||
} | if (currentSelection.cards.length === 0) { | ||
deckArea.innerHTML = '<div style="font-size: 48px; color: #ccc;">+</div>'; | |||
return; | |||
} | |||
let cardsHTML = '<div style="display: flex; flex-wrap: wrap; gap: 10px;">'; | |||
currentSelection.cards.forEach(card => { | |||
cardsHTML += `<div class="card-in-deck" data-card="${card.name}"> | |||
{{#invoke:卡牌|main|角色模块|${card.name}}} | |||
</div>`; | |||
}); | }); | ||
cardsHTML += '</div>'; | |||
deckArea.innerHTML = cardsHTML; | |||
} | |||
// | // 初始化点击事件 | ||
document.addEventListener('DOMContentLoaded', function() { | |||
// 战斗员选择 | |||
document.getElementById('character-slot').addEventListener('click', function() { | |||
openSelectionModal('character'); | |||
}); | |||
// 伙伴选择 | |||
document.getElementById('partner-slot').addEventListener('click', function() { | |||
openSelectionModal('partner'); | |||
}); | |||
// 卡组选择 | |||
document.getElementById('deck-area').addEventListener('click', function() { | |||
openSelectionModal('card'); | |||
}); | |||
// 装备选择 | |||
document.getElementById('weapon-slot').addEventListener('click', function() { | |||
openSelectionModal('weapon'); | |||
}); | |||
document.getElementById('armor-slot').addEventListener('click', function() { | |||
openSelectionModal('armor'); | |||
}); | |||
document.getElementById('ring-slot').addEventListener('click', function() { | |||
openSelectionModal('ring'); | |||
}); | }); | ||
}); | |||
</script> | |||
<style> | |||
.selection-slot { | |||
transition: all 0.3s ease; | |||
} | |||
.selection-slot:hover { | |||
border-color: #666; | |||
background: #f8f8f8; | |||
} | |||
.selection-item { | |||
cursor: pointer; | |||
transition: transform 0.2s ease; | |||
} | |||
.selection-item:hover { | |||
transform: scale(1.05); | |||
} | |||
.card-in-deck { | |||
cursor: pointer; | |||
} | |||
.card-in-deck:hover { | |||
opacity: 0.8; | |||
} | |||
</style> | |||
</ | |||
2025年10月18日 (六) 20:08的版本
<script> // 存储当前选择状态 let currentSelection = {
character: null, partner: null, cards: [], weapon: null, armor: null, ring: null
};
// 打开选择模态框 function openSelectionModal(type) {
const modal = document.getElementById('selection-modal');
const content = document.getElementById('modal-content');
switch(type) {
case 'character':
content.innerHTML = `
`;
break;
case 'partner':
content.innerHTML = `
`;
break;
case 'card':
// 需要先选择角色才能选择卡牌
if (!currentSelection.character) {
alert('请先选择角色');
return;
}
content.innerHTML = generateCardSelection();
break;
case 'weapon':
content.innerHTML = generateEquipmentSelection('武器');
break;
case 'armor':
content.innerHTML = generateEquipmentSelection('装甲');
break;
case 'ring':
content.innerHTML = generateEquipmentSelection('戒指');
break;
}
modal.style.display = 'block';
document.body.style.overflow = 'hidden';
// 为生成的元素添加点击事件
setTimeout(() => {
addSelectionEvents(type);
}, 100);
}
// 关闭选择模态框 function closeSelectionModal() {
const modal = document.getElementById('selection-modal');
modal.style.display = 'none';
document.body.style.overflow = 'auto';
}
// 生成卡牌选择界面 function generateCardSelection() {
if (!currentSelection.character) return ; // 这里需要根据选择的角色获取对应的卡牌数据 // 假设从模板中获取卡牌信息 return `
选择卡牌 - ${currentSelection.character}
错误: 找不到模块 "Module:卡牌/角色模块"
错误: 找不到模块 "Module:卡牌/角色模块"
错误: 找不到模块 "Module:卡牌/角色模块"
错误: 找不到模块 "Module:卡牌/角色模块"
错误: 找不到模块 "Module:卡牌/角色模块"
错误: 找不到模块 "Module:卡牌/角色模块"
错误: 找不到模块 "Module:卡牌/角色模块"
错误: 找不到模块 "Module:卡牌/角色模块"
错误: 找不到模块 "Module:卡牌/角色模块"
`;
}
// 生成装备选择界面 function generateEquipmentSelection(type) {
return `
选择${type}
`;
}
// 添加选择事件 function addSelectionEvents(type) {
const items = document.querySelectorAll('.selection-item');
items.forEach(item => {
item.addEventListener('click', function() {
const name = this.getAttribute('data-name');
const id = this.getAttribute('data-id');
switch(type) {
case 'character':
selectCharacter(name, id);
break;
case 'partner':
selectPartner(name, id);
break;
case 'card':
selectCard(name, this.getAttribute('data-card-type'));
break;
case 'weapon':
selectWeapon(name, id);
break;
case 'armor':
selectArmor(name, id);
break;
case 'ring':
selectRing(name, id);
break;
}
closeSelectionModal();
});
});
}
// 选择角色 function selectCharacter(name, id) {
currentSelection.character = name;
const slot = document.getElementById('character-slot');
slot.innerHTML = `[[File:战斗员图鉴_${name}.png|150px|link=]]`;
slot.style.justifyContent = 'center';
}
// 选择伙伴 function selectPartner(name, id) {
currentSelection.partner = name;
const slot = document.getElementById('partner-slot');
slot.innerHTML = `[[File:face_character_wide_${id}.png|150px|link=]]`;
slot.style.justifyContent = 'center';
}
// 选择卡牌 function selectCard(name, cardType) {
currentSelection.cards.push({name, type: cardType});
updateDeckDisplay();
}
// 选择武器 function selectWeapon(name, id) {
currentSelection.weapon = name;
const slot = document.getElementById('weapon-slot');
slot.innerHTML = generateEquipmentDisplay(name, id);
slot.style.justifyContent = 'center';
}
// 选择装甲 function selectArmor(name, id) {
currentSelection.armor = name;
const slot = document.getElementById('armor-slot');
slot.innerHTML = generateEquipmentDisplay(name, id);
slot.style.justifyContent = 'center';
}
// 选择戒指 function selectRing(name, id) {
currentSelection.ring = name;
const slot = document.getElementById('ring-slot');
slot.innerHTML = generateEquipmentDisplay(name, id);
slot.style.justifyContent = 'center';
}
// 生成装备显示 function generateEquipmentDisplay(name, id) {
return `
`;
}
// 更新卡组显示 function updateDeckDisplay() {
const deckArea = document.getElementById('deck-area');
if (currentSelection.cards.length === 0) {
deckArea.innerHTML = '
';
return; }
let cardsHTML = '
currentSelection.cards.forEach(card => {
cardsHTML += ` 错误: 找不到模块 "Module:卡牌/角色模块"}
});cardsHTML += '
';
deckArea.innerHTML = cardsHTML;
}
// 初始化点击事件 document.addEventListener('DOMContentLoaded', function() {
// 战斗员选择
document.getElementById('character-slot').addEventListener('click', function() {
openSelectionModal('character');
});
// 伙伴选择
document.getElementById('partner-slot').addEventListener('click', function() {
openSelectionModal('partner');
});
// 卡组选择
document.getElementById('deck-area').addEventListener('click', function() {
openSelectionModal('card');
});
// 装备选择
document.getElementById('weapon-slot').addEventListener('click', function() {
openSelectionModal('weapon');
});
document.getElementById('armor-slot').addEventListener('click', function() {
openSelectionModal('armor');
});
document.getElementById('ring-slot').addEventListener('click', function() {
openSelectionModal('ring');
});
}); </script>
<style> .selection-slot {
transition: all 0.3s ease;
}
.selection-slot:hover {
border-color: #666; background: #f8f8f8;
}
.selection-item {
cursor: pointer; transition: transform 0.2s ease;
}
.selection-item:hover {
transform: scale(1.05);
}
.card-in-deck {
cursor: pointer;
}
.card-in-deck:hover {
opacity: 0.8;
} </style>
































































































































































