fix:设置快捷键录像bug
This commit is contained in:
parent
9fbd97eeac
commit
c8956a15ae
@ -2252,6 +2252,8 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
|
|||||||
form.append('towername', towerName);
|
form.append('towername', towerName);
|
||||||
form.append('comment', comment);
|
form.append('comment', comment);
|
||||||
form.append('tags', tags);
|
form.append('tags', tags);
|
||||||
|
form.append('userid', 2324);
|
||||||
|
form.append('password', '77c8fd5ff49c370342e4472ebdda5903');
|
||||||
utils.prototype.http(
|
utils.prototype.http(
|
||||||
'POST',
|
'POST',
|
||||||
'https://h5mota.com/backend/tower/barrage.php',
|
'https://h5mota.com/backend/tower/barrage.php',
|
||||||
@ -2265,8 +2267,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
|
|||||||
} else {
|
} else {
|
||||||
core.drawTip('提交失败!' + res?.message);
|
core.drawTip('提交失败!' + res?.message);
|
||||||
}
|
}
|
||||||
}
|
} catch (err) {
|
||||||
catch (err) {
|
|
||||||
core.drawFailTip('提交失败!' + err.message);
|
core.drawFailTip('提交失败!' + err.message);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -3572,249 +3573,248 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
|
|||||||
core.registerReplayAction("equip", core.control._replayAction_equip);
|
core.registerReplayAction("equip", core.control._replayAction_equip);
|
||||||
core.registerReplayAction("unEquip", core.control._replayAction_unEquip);
|
core.registerReplayAction("unEquip", core.control._replayAction_unEquip);
|
||||||
},
|
},
|
||||||
"autoChangeEquip":
|
"autoChangeEquip": function () {
|
||||||
function () {
|
// 调用方法:在合适的位置调用函数figureEquip即可,例如在脚本编辑-按键处理加入case 89: core.plugin.figureEquip(); break;
|
||||||
// 调用方法:在合适的位置调用函数figureEquip即可,例如在脚本编辑-按键处理加入case 89: core.plugin.figureEquip(); break;
|
// 即按Y键进入切装模式
|
||||||
// 即按Y键进入切装模式
|
|
||||||
|
|
||||||
let compareMode = false;
|
let compareMode = false;
|
||||||
let equipStatus = [];
|
let equipStatus = [];
|
||||||
let equipIncluded;
|
let equipIncluded;
|
||||||
|
|
||||||
////// 请在[]中填好不参与换装的装备孔的序号。
|
////// 请在[]中填好不参与换装的装备孔的序号。
|
||||||
// 例如,0号,4号装备孔不参与换装,则 ignoreList 应设为[0,4]
|
// 例如,0号,4号装备孔不参与换装,则 ignoreList 应设为[0,4]
|
||||||
// 所有装备孔都参与换装,则 ignoreList 应设为[]
|
// 所有装备孔都参与换装,则 ignoreList 应设为[]
|
||||||
let ignoreList = [];
|
let ignoreList = [];
|
||||||
|
|
||||||
////// 请在{}中根据装备的穿脱事件手动填写装备穿脱时要执行的函数,没有则不填。只填写有效的数值变化即可。
|
////// 请在{}中根据装备的穿脱事件手动填写装备穿脱时要执行的函数,没有则不填。只填写有效的数值变化即可。
|
||||||
// 例如:{'sword3':{'equip':function(){core.setFlag('mms3',1);},'unequip':function(){core.setFlag('mms3',0);}}}
|
// 例如:{'sword3':{'equip':function(){core.setFlag('mms3',1);},'unequip':function(){core.setFlag('mms3',0);}}}
|
||||||
let equipEvents = {};
|
let equipEvents = {};
|
||||||
|
|
||||||
function compareEquip() {
|
function compareEquip() {
|
||||||
|
|
||||||
return new Promise(function (res) {
|
return new Promise(function (res) {
|
||||||
|
|
||||||
const canvas = 'compareEquip',
|
const canvas = 'compareEquip',
|
||||||
width = core._PX_ || core.__PIXELS__,
|
width = core._PX_ || core.__PIXELS__,
|
||||||
height = core._PY_ || core.__PIXELS__;
|
height = core._PY_ || core.__PIXELS__;
|
||||||
|
|
||||||
core.lockControl();
|
core.lockControl();
|
||||||
|
|
||||||
function finish() {
|
function finish() {
|
||||||
compareMode = false;
|
compareMode = false;
|
||||||
core.unregisterAction('onclick', 'bestEquip');
|
core.unregisterAction('onclick', 'bestEquip');
|
||||||
core.deleteCanvas(canvas);
|
core.deleteCanvas(canvas);
|
||||||
res();
|
res();
|
||||||
}
|
}
|
||||||
|
|
||||||
core.createCanvas(canvas, 0, 0, width, height, 160);
|
core.createCanvas(canvas, 0, 0, width, height, 160);
|
||||||
core.setTextAlign(canvas, 'center');
|
core.setTextAlign(canvas, 'center');
|
||||||
core.fillText(canvas, '点击选择一个怪物,点击非怪物图块自动退出', width / 2, 20, 'red', '18px Arial');
|
core.fillText(canvas, '点击选择一个怪物,点击非怪物图块自动退出', width / 2, 20, 'red', '18px Arial');
|
||||||
|
|
||||||
core.registerAction('onclick', 'bestEquip', function (x, y, px, py) {
|
core.registerAction('onclick', 'bestEquip', function (x, y, px, py) {
|
||||||
const cls = core.getBlockCls(x, y),
|
const cls = core.getBlockCls(x, y),
|
||||||
id = core.getBlockId(x, y);
|
id = core.getBlockId(x, y);
|
||||||
if (!(cls === 'enemys' || cls === "enemy48")) {
|
if (!(cls === 'enemys' || cls === "enemy48")) {
|
||||||
finish();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
figureBestEquip(id, x, y);
|
|
||||||
core.updateDamage();
|
|
||||||
finish();
|
finish();
|
||||||
}, 100);
|
return false;
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
function figureBestEquip(id, x, y) {
|
|
||||||
compareMode = true;
|
|
||||||
const equipNum = core.status.globalAttribute.equipName.length; // 装备总数量
|
|
||||||
|
|
||||||
// 角色初始各项数值,用于推算出最优切装后复原初始状态
|
|
||||||
const oriEffect = {
|
|
||||||
'value': { 'atk': core.status.hero.atk, 'def': core.status.hero.def, 'mdef': core.status.hero.mdef, },
|
|
||||||
'percentage': { 'atk': core.getBuff('atk'), 'def': core.getBuff('def'), 'mdef': core.getBuff('mdef'), },
|
|
||||||
'equipment': core.clone(core.status.hero.equipment),
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!equipIncluded) equipIncluded = getEquipIncluded(equipNum);
|
|
||||||
|
|
||||||
const equipIncludedNum = equipIncluded.length;
|
|
||||||
const equipNameList = core.status.globalAttribute.equipName.filter((ele, i) => { return !ignoreList.includes(i); });
|
|
||||||
|
|
||||||
equipStatus = equipIncluded.map((ele) => core.getEquip(ele)); //当前参与计算的各个装备孔的装备
|
|
||||||
const equipOwned = getEquipOwned(equipNum);
|
|
||||||
let equipList = getEquipList(equipIncludedNum, equipOwned, equipNameList);
|
|
||||||
|
|
||||||
const equipCombination = traverseSetCombinations(equipList);
|
|
||||||
|
|
||||||
const bestCombination = findBestEquipComb(equipCombination, equipOwned, id, x, y);
|
|
||||||
|
|
||||||
['atk', 'def', 'mdef'].forEach((ele) => {
|
|
||||||
core.setStatus(ele, oriEffect.value[ele]);
|
|
||||||
core.setBuff(ele, oriEffect.percentage[ele]);
|
|
||||||
});
|
|
||||||
core.status.hero.equipment = core.clone(oriEffect.equipment);
|
|
||||||
|
|
||||||
equipBestComb(bestCombination, equipIncluded, equipNameList);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 返回一个包含所有参与切装计算的装备孔的序号的数组。
|
|
||||||
// 例如,0,2,4号装备孔参与切装计算,则本函数返回[0,2,4]
|
|
||||||
function getEquipIncluded(equipNum) {
|
|
||||||
let equipIncluded = [];
|
|
||||||
for (let i = 0; i < equipNum; i++) {
|
|
||||||
if (!ignoreList.includes(i)) equipIncluded.push(i);
|
|
||||||
}
|
|
||||||
return equipIncluded;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getEquipOwned(equipNum) {
|
|
||||||
// equipOwned:当前拥有的所有装备的数量
|
|
||||||
// 形如{sword1: 2, sword2: 1}
|
|
||||||
let equipOwned = core.clone(core.status.hero.items.equips);
|
|
||||||
for (let i = 0; i < equipNum; i++) {
|
|
||||||
if (ignoreList.includes(i)) continue;
|
|
||||||
const currEquip = core.getEquip(i);
|
|
||||||
if (currEquip !== null)
|
|
||||||
if (equipOwned.hasOwnProperty(currEquip)) equipOwned[currEquip]++;
|
|
||||||
else equipOwned[currEquip] = 1;
|
|
||||||
}
|
|
||||||
return equipOwned;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 生成切装列表,为一个二维数组
|
|
||||||
function getEquipList(equipNum, equipOwned, equipNameList) {
|
|
||||||
// equipNameList:计入切装计算的装备格子的名称列表,可重复
|
|
||||||
// 形如['武器', '武器', '盾牌']
|
|
||||||
let equipList = Array(equipNameList.length).fill().map(() => new Set([null]));
|
|
||||||
|
|
||||||
//对每个装备孔展开
|
|
||||||
for (let i = 0, l = equipNameList.length; i < l; i++) {
|
|
||||||
for (let j in equipOwned) {
|
|
||||||
let equipType = core.material.items[j].equip.type;
|
|
||||||
switch (typeof equipType) {
|
|
||||||
case 'number':
|
|
||||||
for (let k = 0, l = equipOwned[j]; k < l; k++) { equipList[equipIncluded.indexOf(equipType)].add(j); }
|
|
||||||
break;
|
|
||||||
case 'string':
|
|
||||||
if (equipType === equipNameList[i])
|
|
||||||
for (let k = 0, l = equipOwned[j]; k < l; k++) { equipList[i].add(j); }
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
figureBestEquip(id, x, y);
|
||||||
return equipList;
|
core.updateDamage();
|
||||||
|
finish();
|
||||||
|
}, 100);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function figureBestEquip(id, x, y) {
|
||||||
|
compareMode = true;
|
||||||
|
const equipNum = core.status.globalAttribute.equipName.length; // 装备总数量
|
||||||
|
|
||||||
|
// 角色初始各项数值,用于推算出最优切装后复原初始状态
|
||||||
|
const oriEffect = {
|
||||||
|
'value': { 'atk': core.status.hero.atk, 'def': core.status.hero.def, 'mdef': core.status.hero.mdef, },
|
||||||
|
'percentage': { 'atk': core.getBuff('atk'), 'def': core.getBuff('def'), 'mdef': core.getBuff('mdef'), },
|
||||||
|
'equipment': core.clone(core.status.hero.equipment),
|
||||||
}
|
}
|
||||||
|
|
||||||
function traverseSetCombinations(arr) {
|
if (!equipIncluded) equipIncluded = getEquipIncluded(equipNum);
|
||||||
const result = [];
|
|
||||||
const currentCombination = [];
|
|
||||||
|
|
||||||
function backtrack(index) {
|
const equipIncludedNum = equipIncluded.length;
|
||||||
if (index === arr.length) {
|
const equipNameList = core.status.globalAttribute.equipName.filter((ele, i) => { return !ignoreList.includes(i); });
|
||||||
result.push([...currentCombination]);
|
|
||||||
return;
|
equipStatus = equipIncluded.map((ele) => core.getEquip(ele)); //当前参与计算的各个装备孔的装备
|
||||||
}
|
const equipOwned = getEquipOwned(equipNum);
|
||||||
const currentSet = Array.from(arr[index]);
|
let equipList = getEquipList(equipIncludedNum, equipOwned, equipNameList);
|
||||||
for (let value of currentSet) {
|
|
||||||
currentCombination[index] = value;
|
const equipCombination = traverseSetCombinations(equipList);
|
||||||
backtrack(index + 1);
|
|
||||||
}
|
const bestCombination = findBestEquipComb(equipCombination, equipOwned, id, x, y);
|
||||||
}
|
|
||||||
backtrack(0);
|
['atk', 'def', 'mdef'].forEach((ele) => {
|
||||||
return result;
|
core.setStatus(ele, oriEffect.value[ele]);
|
||||||
|
core.setBuff(ele, oriEffect.percentage[ele]);
|
||||||
|
});
|
||||||
|
core.status.hero.equipment = core.clone(oriEffect.equipment);
|
||||||
|
|
||||||
|
equipBestComb(bestCombination, equipIncluded, equipNameList);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 返回一个包含所有参与切装计算的装备孔的序号的数组。
|
||||||
|
// 例如,0,2,4号装备孔参与切装计算,则本函数返回[0,2,4]
|
||||||
|
function getEquipIncluded(equipNum) {
|
||||||
|
let equipIncluded = [];
|
||||||
|
for (let i = 0; i < equipNum; i++) {
|
||||||
|
if (!ignoreList.includes(i)) equipIncluded.push(i);
|
||||||
}
|
}
|
||||||
|
return equipIncluded;
|
||||||
|
}
|
||||||
|
|
||||||
function getEleCount(ele, arr) {
|
function getEquipOwned(equipNum) {
|
||||||
let count = 0;
|
// equipOwned:当前拥有的所有装备的数量
|
||||||
for (let i = 0, l = arr.length; i < l; i++) {
|
// 形如{sword1: 2, sword2: 1}
|
||||||
if (arr[i] === ele) count++;
|
let equipOwned = core.clone(core.status.hero.items.equips);
|
||||||
}
|
for (let i = 0; i < equipNum; i++) {
|
||||||
return count;
|
if (ignoreList.includes(i)) continue;
|
||||||
|
const currEquip = core.getEquip(i);
|
||||||
|
if (currEquip !== null)
|
||||||
|
if (equipOwned.hasOwnProperty(currEquip)) equipOwned[currEquip]++;
|
||||||
|
else equipOwned[currEquip] = 1;
|
||||||
}
|
}
|
||||||
|
return equipOwned;
|
||||||
|
}
|
||||||
|
|
||||||
function hasEnoughEquip(currComb, equipOwned) {
|
// 生成切装列表,为一个二维数组
|
||||||
for (let i in equipOwned) {
|
function getEquipList(equipNum, equipOwned, equipNameList) {
|
||||||
const equipNeed = getEleCount(i, currComb);
|
// equipNameList:计入切装计算的装备格子的名称列表,可重复
|
||||||
if (equipOwned[i] < equipNeed) return false;
|
// 形如['武器', '武器', '盾牌']
|
||||||
}
|
let equipList = Array(equipNameList.length).fill().map(() => new Set([null]));
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 按照给定的列表aimStatus,形如['sword1','sword2',null,'sword1'],修改equipStatus进行模拟切装
|
//对每个装备孔展开
|
||||||
function simulateEquip(equipStatus, aimStatus) {
|
for (let i = 0, l = equipNameList.length; i < l; i++) {
|
||||||
equipIncluded.forEach((ele, i) => { core.status.hero.equipment[ele] = aimStatus[i]; })
|
for (let j in equipOwned) {
|
||||||
for (let i = 0, l = equipStatus.length; i < l; i++) {
|
let equipType = core.material.items[j].equip.type;
|
||||||
if (equipStatus[i] !== aimStatus[i]) {
|
switch (typeof equipType) {
|
||||||
if (aimStatus[i] === null) {
|
case 'number':
|
||||||
const unequipId = equipStatus[i];
|
for (let k = 0, l = equipOwned[j]; k < l; k++) { equipList[equipIncluded.indexOf(equipType)].add(j); }
|
||||||
if (equipEvents.hasOwnProperty(unequipId) &&
|
break;
|
||||||
equipEvents[unequipId].hasOwnProperty('unequip'))
|
case 'string':
|
||||||
equipEvents[unequipId].unequip();
|
if (equipType === equipNameList[i])
|
||||||
core.items._loadEquipEffect(null, unequipId);
|
for (let k = 0, l = equipOwned[j]; k < l; k++) { equipList[i].add(j); }
|
||||||
} else {
|
break;
|
||||||
const equipId = aimStatus[i];
|
|
||||||
if (equipEvents.hasOwnProperty(equipId) &&
|
|
||||||
equipEvents[equipId].hasOwnProperty('equip'))
|
|
||||||
equipEvents[equipId].equip();
|
|
||||||
core.items._loadEquipEffect(equipId, equipStatus[i]);
|
|
||||||
}
|
|
||||||
equipStatus[i] = aimStatus[i];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return equipList;
|
||||||
|
}
|
||||||
|
|
||||||
function findBestEquipComb(equipCombination, equipOwned, id, x, y) {
|
function traverseSetCombinations(arr) {
|
||||||
let minDamage = core.getDamage(id, x, y),
|
const result = [];
|
||||||
bestCombination = core.clone(equipStatus);
|
const currentCombination = [];
|
||||||
for (let i = 0, l = equipCombination.length; i < l; i++) {
|
|
||||||
const currComb = equipCombination[i];
|
function backtrack(index) {
|
||||||
if (!hasEnoughEquip(currComb, equipOwned)) continue;
|
if (index === arr.length) {
|
||||||
simulateEquip(equipStatus, currComb);
|
result.push([...currentCombination]);
|
||||||
let damage = core.getDamage(id, x, y);
|
return;
|
||||||
if (damage !== null && (minDamage === null || damage < minDamage)) {
|
}
|
||||||
minDamage = damage;
|
const currentSet = Array.from(arr[index]);
|
||||||
bestCombination = core.clone(equipStatus);
|
for (let value of currentSet) {
|
||||||
}
|
currentCombination[index] = value;
|
||||||
|
backtrack(index + 1);
|
||||||
}
|
}
|
||||||
return bestCombination;
|
|
||||||
}
|
}
|
||||||
|
backtrack(0);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
function equipBestComb(bestCombination, equipIncluded, equipNameList) {
|
function getEleCount(ele, arr) {
|
||||||
const duplicatedName = new Set([]),
|
let count = 0;
|
||||||
name = core.status.globalAttribute.equipName;
|
for (let i = 0, l = arr.length; i < l; i++) {
|
||||||
|
if (arr[i] === ele) count++;
|
||||||
|
}
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
// 脱下重复装备
|
function hasEnoughEquip(currComb, equipOwned) {
|
||||||
equipNameList.forEach((ele) => {
|
for (let i in equipOwned) {
|
||||||
if (getEleCount(ele, equipNameList) > 1) duplicatedName.add(ele);
|
const equipNeed = getEleCount(i, currComb);
|
||||||
})
|
if (equipOwned[i] < equipNeed) return false;
|
||||||
equipIncluded.forEach((ele) => {
|
}
|
||||||
if (duplicatedName.has(name[ele]) && core.getEquip(ele) !== null) {
|
return true;
|
||||||
core.unloadEquip(ele);
|
}
|
||||||
core.status.route.push("unEquip:" + ele.toString());
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
for (let i = 0, l = bestCombination.length; i < l; i++) {
|
// 按照给定的列表aimStatus,形如['sword1','sword2',null,'sword1'],修改equipStatus进行模拟切装
|
||||||
const currEquip = bestCombination[i],
|
function simulateEquip(equipStatus, aimStatus) {
|
||||||
pos = equipIncluded[i];
|
equipIncluded.forEach((ele, i) => { core.status.hero.equipment[ele] = aimStatus[i]; })
|
||||||
if (core.getEquip(pos) === currEquip) continue;
|
for (let i = 0, l = equipStatus.length; i < l; i++) {
|
||||||
else if (currEquip === null) {
|
if (equipStatus[i] !== aimStatus[i]) {
|
||||||
core.unloadEquip(pos);
|
if (aimStatus[i] === null) {
|
||||||
core.status.route.push("unEquip:" + pos.toString());
|
const unequipId = equipStatus[i];
|
||||||
|
if (equipEvents.hasOwnProperty(unequipId) &&
|
||||||
|
equipEvents[unequipId].hasOwnProperty('unequip'))
|
||||||
|
equipEvents[unequipId].unequip();
|
||||||
|
core.items._loadEquipEffect(null, unequipId);
|
||||||
} else {
|
} else {
|
||||||
core.loadEquip(currEquip);
|
const equipId = aimStatus[i];
|
||||||
core.status.route.push("equip:" + currEquip.toString());
|
if (equipEvents.hasOwnProperty(equipId) &&
|
||||||
|
equipEvents[equipId].hasOwnProperty('equip'))
|
||||||
|
equipEvents[equipId].equip();
|
||||||
|
core.items._loadEquipEffect(equipId, equipStatus[i]);
|
||||||
}
|
}
|
||||||
|
equipStatus[i] = aimStatus[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
this.figureEquip = function () {
|
function findBestEquipComb(equipCombination, equipOwned, id, x, y) {
|
||||||
compareEquip().then(function (confirm) {
|
let minDamage = core.getDamage(id, x, y),
|
||||||
core.unlockControl();
|
bestCombination = core.clone(equipStatus);
|
||||||
})
|
for (let i = 0, l = equipCombination.length; i < l; i++) {
|
||||||
|
const currComb = equipCombination[i];
|
||||||
|
if (!hasEnoughEquip(currComb, equipOwned)) continue;
|
||||||
|
simulateEquip(equipStatus, currComb);
|
||||||
|
let damage = core.getDamage(id, x, y);
|
||||||
|
if (damage !== null && (minDamage === null || damage < minDamage)) {
|
||||||
|
minDamage = damage;
|
||||||
|
bestCombination = core.clone(equipStatus);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
return bestCombination;
|
||||||
|
}
|
||||||
|
|
||||||
|
function equipBestComb(bestCombination, equipIncluded, equipNameList) {
|
||||||
|
const duplicatedName = new Set([]),
|
||||||
|
name = core.status.globalAttribute.equipName;
|
||||||
|
|
||||||
|
// 脱下重复装备
|
||||||
|
equipNameList.forEach((ele) => {
|
||||||
|
if (getEleCount(ele, equipNameList) > 1) duplicatedName.add(ele);
|
||||||
|
})
|
||||||
|
equipIncluded.forEach((ele) => {
|
||||||
|
if (duplicatedName.has(name[ele]) && core.getEquip(ele) !== null) {
|
||||||
|
core.unloadEquip(ele);
|
||||||
|
core.status.route.push("unEquip:" + ele.toString());
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
for (let i = 0, l = bestCombination.length; i < l; i++) {
|
||||||
|
const currEquip = bestCombination[i],
|
||||||
|
pos = equipIncluded[i];
|
||||||
|
if (core.getEquip(pos) === currEquip) continue;
|
||||||
|
else if (currEquip === null) {
|
||||||
|
core.unloadEquip(pos);
|
||||||
|
core.status.route.push("unEquip:" + pos.toString());
|
||||||
|
} else {
|
||||||
|
core.loadEquip(currEquip);
|
||||||
|
core.status.route.push("equip:" + currEquip.toString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
this.figureEquip = function () {
|
||||||
|
compareEquip().then(function (confirm) {
|
||||||
|
core.unlockControl();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
},
|
||||||
"setting": function () {
|
"setting": function () {
|
||||||
// 自绘设置界面
|
// 自绘设置界面
|
||||||
// 请保持本插件在所有插件的最下方
|
// 请保持本插件在所有插件的最下方
|
||||||
@ -4278,7 +4278,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
|
|||||||
const aimItem = Object.values(itemInfo).find((item) => item.name === value || item.id === value);
|
const aimItem = Object.values(itemInfo).find((item) => item.name === value || item.id === value);
|
||||||
if (aimItem) {
|
if (aimItem) {
|
||||||
if (['constants', 'tools'].includes(aimItem.cls)) {
|
if (['constants', 'tools'].includes(aimItem.cls)) {
|
||||||
core.setFlag('hotkey' + num, aimItem.id);
|
core.setLocalStorage('hotkey' + num, aimItem.id);
|
||||||
this.menu.drawContent();
|
this.menu.drawContent();
|
||||||
}
|
}
|
||||||
else core.drawFailTip('错误:该类型的物品不支持快捷使用!');
|
else core.drawFailTip('错误:该类型的物品不支持快捷使用!');
|
||||||
@ -4289,10 +4289,10 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
'给选定的数字键绑定一个可快捷使用的物品。',
|
'给选定的数字键绑定一个可快捷使用的物品。',
|
||||||
true,
|
false,
|
||||||
function (ctx) {
|
function (ctx) {
|
||||||
const num = this.eventArgs[0];
|
const num = this.eventArgs[0];
|
||||||
const item = core.getFlag('hotkey' + num, null);
|
const item = core.getLocalStorage('hotkey' + num, null);
|
||||||
let icon, itemName;
|
let icon, itemName;
|
||||||
if (item && core.material.items.hasOwnProperty(item)) {
|
if (item && core.material.items.hasOwnProperty(item)) {
|
||||||
icon = item;
|
icon = item;
|
||||||
@ -4300,28 +4300,28 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
switch (num) {
|
switch (num) {
|
||||||
case 1:
|
case '1':
|
||||||
icon = 'pickaxe';
|
icon = 'pickaxe';
|
||||||
itemName = '破墙镐';
|
itemName = '破墙镐';
|
||||||
break;
|
break;
|
||||||
case 2:
|
case '2':
|
||||||
icon = 'bomb';
|
icon = 'bomb';
|
||||||
itemName = '炸弹';
|
itemName = '炸弹';
|
||||||
break;
|
break;
|
||||||
case 3:
|
case '3':
|
||||||
icon = 'centerFly';
|
icon = 'centerFly';
|
||||||
itemName = '中心飞';
|
itemName = '中心飞';
|
||||||
break;
|
break;
|
||||||
case 4:
|
case '4':
|
||||||
itemName = '杂物';
|
itemName = '杂物';
|
||||||
break;
|
break;
|
||||||
case 5:
|
case '5':
|
||||||
itemName = '回退一步';
|
itemName = '回退一步';
|
||||||
break;
|
break;
|
||||||
case 6:
|
case '6':
|
||||||
itemName = '撤销回退';
|
itemName = '撤销回退';
|
||||||
break;
|
break;
|
||||||
case 7:
|
case '7':
|
||||||
itemName = '轻按';
|
itemName = '轻按';
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -4338,20 +4338,20 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
|
|||||||
() => '',
|
() => '',
|
||||||
function () {
|
function () {
|
||||||
for (let i = 1; i <= 7; i++) {
|
for (let i = 1; i <= 7; i++) {
|
||||||
core.setFlag('hotkey' + i, null);
|
core.setLocalStorage('hotkey' + i, null);
|
||||||
}
|
}
|
||||||
this.menu.drawContent();
|
this.menu.drawContent();
|
||||||
core.drawSuccessTip('快捷键已重置到默认状态。')
|
core.drawSuccessTip('快捷键已重置到默认状态。')
|
||||||
},
|
},
|
||||||
'重置本页面所有快捷键到默认状态。',
|
'重置本页面所有快捷键到默认状态。',
|
||||||
true,
|
false,
|
||||||
function (ctx) {
|
function (ctx) {
|
||||||
core.fillRoundRect(ctx, this.x, this.y, this.w, this.h, 3, ' #D3D3D3');
|
core.fillRoundRect(ctx, this.x, this.y, this.w, this.h, 3, ' #D3D3D3');
|
||||||
core.strokeRoundRect(ctx, this.x, this.y, this.w, this.h, 3, ' #888888');
|
core.strokeRoundRect(ctx, this.x, this.y, this.w, this.h, 3, ' #888888');
|
||||||
core.fillText(ctx, '重置', this.x + 5, this.y + this.h / 2 + 5, ' #333333', '16px Verdana');
|
core.fillText(ctx, '重置', this.x + 5, this.y + this.h / 2 + 5, ' #333333', '16px Verdana');
|
||||||
},
|
},
|
||||||
)],
|
)],
|
||||||
['wallHacking', new Setting(
|
['debug_wallHacking', new Setting(
|
||||||
() => ' 穿墙:' + (core.hasFlag('debug_wallHacking') ? '开' : '关'),
|
() => ' 穿墙:' + (core.hasFlag('debug_wallHacking') ? '开' : '关'),
|
||||||
() => {
|
() => {
|
||||||
core.setFlag('debug', true);
|
core.setFlag('debug', true);
|
||||||
@ -4596,7 +4596,7 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
|
|||||||
super(x, y, w, h);
|
super(x, y, w, h);
|
||||||
this.name = name;
|
this.name = name;
|
||||||
/**
|
/**
|
||||||
* @type {Array<unknown>}
|
* @type {Array<string>}
|
||||||
*/
|
*/
|
||||||
this.eventArgs = eventArgs || [];
|
this.eventArgs = eventArgs || [];
|
||||||
/**
|
/**
|
||||||
@ -4616,7 +4616,13 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
|
|||||||
if (this.disable) return;
|
if (this.disable) return;
|
||||||
this.setting.effect.apply(this, eventArgs);
|
this.setting.effect.apply(this, eventArgs);
|
||||||
this.menu.drawContent();
|
this.menu.drawContent();
|
||||||
if (this.setting.replay) core.status.route.push('cSet:' + name);
|
if (this.setting.replay) {
|
||||||
|
let actionString = 'cSet:' + name;
|
||||||
|
if (this.eventArgs.length > 0) {
|
||||||
|
actionString += ':' + this.eventArgs.map(arg => encodeURIComponent(arg)).join(':');
|
||||||
|
}
|
||||||
|
core.status.route.push(actionString);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -4626,7 +4632,15 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
|
|||||||
if (strArr[0] !== 'cSet') return false;
|
if (strArr[0] !== 'cSet') return false;
|
||||||
const btn = settingMap.get(strArr[1]);
|
const btn = settingMap.get(strArr[1]);
|
||||||
if (!btn.replay || strArr[1].startsWith('debug')) return false;
|
if (!btn.replay || strArr[1].startsWith('debug')) return false;
|
||||||
btn.effect();
|
|
||||||
|
let params = strArr.slice(2);
|
||||||
|
|
||||||
|
if (params.length > 0) {
|
||||||
|
btn.effect.apply(btn, params);
|
||||||
|
} else {
|
||||||
|
btn.effect.call(btn);
|
||||||
|
}
|
||||||
|
|
||||||
core.status.route.push(action);
|
core.status.route.push(action);
|
||||||
core.replay();
|
core.replay();
|
||||||
return true;
|
return true;
|
||||||
@ -4900,19 +4914,19 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
|
|||||||
const keyMenu = new SettingOnePage('key');
|
const keyMenu = new SettingOnePage('key');
|
||||||
keyMenu.initBtnList([
|
keyMenu.initBtnList([
|
||||||
['1,1', new SettingButton(40, 160, 150, 25, 'leftHand')],
|
['1,1', new SettingButton(40, 160, 150, 25, 'leftHand')],
|
||||||
['1,2', new SettingButton(40, 220, 150, 25, 'setHotKey', [1])],
|
['1,2', new SettingButton(40, 220, 150, 25, 'setHotKey', ['1'])],
|
||||||
['2,2', new SettingButton(220, 220, 150, 25, 'setHotKey', [2])],
|
['2,2', new SettingButton(220, 220, 150, 25, 'setHotKey', ['2'])],
|
||||||
['1,3', new SettingButton(40, 250, 150, 25, 'setHotKey', [3])],
|
['1,3', new SettingButton(40, 250, 150, 25, 'setHotKey', ['3'])],
|
||||||
['2,3', new SettingButton(220, 250, 150, 25, 'setHotKey', [4])],
|
['2,3', new SettingButton(220, 250, 150, 25, 'setHotKey', ['4'])],
|
||||||
['1,4', new SettingButton(40, 280, 150, 25, 'setHotKey', [5])],
|
['1,4', new SettingButton(40, 280, 150, 25, 'setHotKey', ['5'])],
|
||||||
['2,4', new SettingButton(220, 280, 150, 25, 'setHotKey', [6])],
|
['2,4', new SettingButton(220, 280, 150, 25, 'setHotKey', ['6'])],
|
||||||
['1,5', new SettingButton(40, 310, 150, 25, 'setHotKey', [7])],
|
['1,5', new SettingButton(40, 310, 150, 25, 'setHotKey', ['7'])],
|
||||||
['1,6', new SettingButton(300, 350, 42, 25, 'clearHotKeys')],
|
['1,6', new SettingButton(300, 350, 42, 25, 'clearHotKeys')],
|
||||||
]);
|
]);
|
||||||
|
|
||||||
const consoleMenu = new SettingOnePage('console');
|
const consoleMenu = new SettingOnePage('console');
|
||||||
consoleMenu.initBtnList([
|
consoleMenu.initBtnList([
|
||||||
['1,1', new SettingButton(40, 220, 150, 25, 'wallHacking')],
|
['1,1', new SettingButton(40, 220, 150, 25, 'debug_wallHacking')],
|
||||||
['1,2', new SettingButton(80, 250, 80, 20, 'debug_statusName')],
|
['1,2', new SettingButton(80, 250, 80, 20, 'debug_statusName')],
|
||||||
['2,2', new SettingButton(210, 250, 80, 20, 'debug_statusValue')],
|
['2,2', new SettingButton(210, 250, 80, 20, 'debug_statusValue')],
|
||||||
['3,2', new SettingButton(340, 250, 40, 20, 'debug_setStatus')],
|
['3,2', new SettingButton(340, 250, 40, 20, 'debug_setStatus')],
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user