调整翻译逻辑,添加一些菜单的说明,健身房页面添加了叠E保护开关

This commit is contained in:
woohoo 2022-03-08 17:24:17 +08:00
parent bd73bf0281
commit c818730095

View File

@ -1,8 +1,8 @@
// ==UserScript== // ==UserScript==
// @lastmodified 202203031354 // @lastmodified 202203081723
// @name 芜湖助手 // @name 芜湖助手
// @namespace WOOH // @namespace WOOH
// @version 0.3.23 // @version 0.3.24
// @description 托恩,起飞! // @description 托恩,起飞!
// @author Woohoo[2687093] Sabrina_Devil[2696209] // @author Woohoo[2687093] Sabrina_Devil[2696209]
// @match https://www.torn.com/* // @match https://www.torn.com/*
@ -23,13 +23,18 @@
if (window.WHTRANS) return; if (window.WHTRANS) return;
window.WHTRANS = true; window.WHTRANS = true;
// 版本 // 版本
const version = '0.3.23'; const version = '0.3.24';
// 修改历史 // 修改历史
const changelist = [ const changelist = [
{ {
todo: true, todo: true,
cont: `翻译baza npc商店、imarket、imarket搜索结果`, cont: `翻译baza npc商店、imarket、imarket搜索结果`,
}, },
{
ver: '0.3.24',
date: '20220308',
cont: `调整翻译逻辑添加一些菜单的说明健身房页面添加了叠E保护开关`,
},
{ {
ver: '0.3.23', ver: '0.3.23',
date: '20220303', date: '20220303',
@ -3087,6 +3092,20 @@
} }
}; };
// 原始fetch
const ori_fetch = window.fetch;
// 监听fetch
window.fetch = async (url, init) => {
log(url)
const res = await ori_fetch(url, init);
// mini profile 翻译
if (url.includes('profiles.php?step=getUserNameContextMenu') && getWhSettingObj()['transEnable']) {
setTimeout(() => miniprofTrans(), 200);
}
// const res_clone = res.clone();
return res;
};
// const transDict = {}; // const transDict = {};
// transDict.titleDict = titleDict; // transDict.titleDict = titleDict;
// transDict.titleLinksDict = titleLinksDict; // transDict.titleLinksDict = titleLinksDict;
@ -3241,7 +3260,7 @@
const DD = d < 10 ? `0${d}` : d.toString(); const DD = d < 10 ? `0${d}` : d.toString();
return MM + DD; return MM + DD;
} }
const fest_date_key = formatMMDD(date.getUTCMonth(),date.getUTCDate()); const fest_date_key = formatMMDD(date.getUTCMonth(), date.getUTCDate());
if (fest_date_dict[fest_date_key]) fest_date_html += `今天 - ${fest_date_dict[fest_date_key]['name']}(<button title="${fest_date_dict[fest_date_key]['eff']}">效果</button>)`; if (fest_date_dict[fest_date_key]) fest_date_html += `今天 - ${fest_date_dict[fest_date_key]['name']}(<button title="${fest_date_dict[fest_date_key]['eff']}">效果</button>)`;
else { else {
// 月日列表 // 月日列表
@ -3374,6 +3393,7 @@
domId: 'wh-quick-crime', domId: 'wh-quick-crime',
domText: ' 快速犯罪 <button id="wh-quick-crime-btn">小窗开启</button>', domText: ' 快速犯罪 <button id="wh-quick-crime-btn">小窗开启</button>',
dictName: 'quickCrime', dictName: 'quickCrime',
tip: '显示快捷操作按钮,目前不支持自定义',
}); });
// 任务助手 // 任务助手
settingsArr.push({ settingsArr.push({
@ -3388,6 +3408,7 @@
domId: 'wh-energy-alert', domId: 'wh-energy-alert',
domText: ' 起飞爆E警告', domText: ' 起飞爆E警告',
dictName: 'energyAlert', dictName: 'energyAlert',
tip: '起飞前计算来回是否会爆体,红字警告',
}); });
// 飞行闹钟 // 飞行闹钟
settingsArr.push({ settingsArr.push({
@ -3395,6 +3416,7 @@
domId: 'wh-trv-alarm-check', domId: 'wh-trv-alarm-check',
domText: ' 飞行闹钟 (仅PC)', domText: ' 飞行闹钟 (仅PC)',
dictName: 'trvAlarm', dictName: 'trvAlarm',
tip: '飞行页面将显示一个内建的闹钟,落地前声音提醒,需要打开浏览器声音权限',
}); });
// 啤酒提醒 // 啤酒提醒
settingsArr.push({ settingsArr.push({
@ -3402,6 +3424,7 @@
domId: 'wh-qua-alarm-check', domId: 'wh-qua-alarm-check',
domText: '<span> 啤酒提醒 </span><button id="wh-qua-alarm-check-btn">今日不提醒</button>', domText: '<span> 啤酒提醒 </span><button id="wh-qua-alarm-check-btn">今日不提醒</button>',
dictName: '_15Alarm', dictName: '_15Alarm',
tip: '每小时的整15分钟的倍数时通知提醒抢啤酒或者血包',
}); });
// 攻击链接转跳 // 攻击链接转跳
settingsArr.push({ settingsArr.push({
@ -3409,6 +3432,7 @@
domId: 'wh-attack-relocate', domId: 'wh-attack-relocate',
domText: ' 真·攻击界面转跳', domText: ' 真·攻击界面转跳',
dictName: 'attRelocate', dictName: 'attRelocate',
tip: '在无法打开攻击界面的情况下依然可以转跳到正确的攻击页面',
}); });
// 捡垃圾助手 // 捡垃圾助手
settingsArr.push({ settingsArr.push({
@ -3416,6 +3440,7 @@
domId: 'wh-city-finder', domId: 'wh-city-finder',
domText: ' 捡垃圾助手', domText: ' 捡垃圾助手',
dictName: 'cityFinder', dictName: 'cityFinder',
tip: '城市地图中放大显示物品并且估计价值',
}); });
// 叠E保护 // 叠E保护
settingsArr.push({ settingsArr.push({
@ -3423,6 +3448,7 @@
domId: 'wh-SEProtect-check', domId: 'wh-SEProtect-check',
domText: ' 叠E保护', domText: ' 叠E保护',
dictName: 'SEProtect', dictName: 'SEProtect',
tip: '隐藏健身房的锻炼按钮,防止误操作',
}); });
// 光速拔刀 // 光速拔刀
settingsArr.push({ settingsArr.push({
@ -3527,7 +3553,11 @@
}); });
// 自动开打和结束 // 自动开打和结束
settingsArr.push({ settingsArr.push({
domType: 'checkbox', domId: 'wh-auto-start-finish', domText: ' ⚠️自动开打和结束', dictName: 'autoStartFinish', domType: 'checkbox',
domId: 'wh-auto-start-finish',
domText: ' ⚠️自动开打和结束',
dictName: 'autoStartFinish',
tip: '脚本将会自动按下战斗和结束按钮',
}); });
} else { } else {
setWhSetting('autoStartFinish', false, false) setWhSetting('autoStartFinish', false, false)
@ -3880,7 +3910,7 @@ height:30px;
// }); // });
} }
// 菜单node // 菜单node
const $zhongNode = initIcon(); const $zhongNode = initIcon(settingsArr);
// 菜单中额外的按钮 // 菜单中额外的按钮
if ($zhongNode) { if ($zhongNode) {
// 更新词库按钮 // 更新词库按钮
@ -4110,6 +4140,20 @@ border:0;
cursor:pointer; cursor:pointer;
} }
#wh-gSettings div{margin: 4px 0 0;} #wh-gSettings div{margin: 4px 0 0;}
#wh-gSettings .wh-tip{display:none;}
#wh-gSettings div:hover .wh-tip{
display: block;
position: absolute;
margin: 0;
background: #f2f2f2;
color: #333;
box-shadow: 0px 0px 3px 1px #25252573;
border-radius: 2px;
padding: 6px;
max-width: 12em;
font-size: 12px;
line-height: 14px;
}
#wh-trans-icon .wh-container{ #wh-trans-icon .wh-container{
margin:0; margin:0;
padding:0 16px 16px; padding:0 16px 16px;
@ -4859,8 +4903,15 @@ display:inline-block;
} }
// 叠e助手 // 叠e助手
if (href.includes('gym.php') && getWhSettingObj()['SEProtect']) { if (href.includes('gym.php')) {
elementReady('#gymroot').then(node => { const switch_node = document.createElement('div');
switch_node.innerHTML = `<label><input type="checkbox" ${getWhSettingObj()['SEProtect'] ? 'checked' : ''}/> 叠E保护</label>`;
switch_node.id = 'wh-gym-info-cont';
switch_node.querySelector('input').onchange = (e) => {
$zhongNode.querySelector('#wh-SEProtect-check').checked = e.target.checked;
node.classList.toggle('wh-display-none');
setWhSetting('SEProtect', e.target.checked);
};
addStyle(`.wh-display-none{ addStyle(`.wh-display-none{
display:none !important; display:none !important;
} }
@ -4873,20 +4924,13 @@ display:none !important;
text-shadow: 0 0 2px black; text-shadow: 0 0 2px black;
background-image: linear-gradient(90deg,transparent 50%,rgba(0,0,0,.07) 0); background-image: linear-gradient(90deg,transparent 50%,rgba(0,0,0,.07) 0);
background-size: 4px; background-size: 4px;
} }`);
#wh-gym-info-cont button{color:white;cursor:pointer;}`); // const node = await elementReady('#gymroot');
node.classList.add('wh-display-none'); // if (getWhSettingObj()['SEProtect']) node.classList.add('wh-display-none');
const info = document.createElement('div'); // node.before(switch_node);
info.id = 'wh-gym-info-cont'; elementReady('#gymroot').then(node=>{
info.innerHTML = `<p>【叠E保护】已为您关闭健身房。<button>点击关闭【叠E保护】</button></p>`; if (getWhSettingObj()['SEProtect']) node.classList.add('wh-display-none');
node.after(info); node.before(switch_node);
info.querySelector('button').addEventListener('click', (e) => {
e.target.disabled = true;
info.remove();
node.classList.remove('wh-display-none');
setWhSetting('SEProtect', false);
if ($zhongNode) $zhongNode.querySelector('#wh-SEProtect-check').checked = false;
});
}); });
} }
@ -6542,7 +6586,7 @@ margin: 0 0 3px;
/* /*
添加左侧图标 添加左侧图标
*/ */
function initIcon() { function initIcon(settingsArr) {
if (isIframe) return; if (isIframe) return;
if (!!document.querySelector('div#wh-trans-icon')) return; if (!!document.querySelector('div#wh-trans-icon')) return;
const zhongNode = document.createElement('div'); const zhongNode = document.createElement('div');
@ -6560,9 +6604,10 @@ margin: 0 0 3px;
const settingNode = zhongNode.querySelector('#wh-gSettings'); const settingNode = zhongNode.querySelector('#wh-gSettings');
settingsArr.forEach(setting => { settingsArr.forEach(setting => {
const newNode = document.createElement('div'); const newNode = document.createElement('div');
const tip = setting['tip'] ? `<div class="wh-tip">${setting['tip']}</div>` : '';
switch (setting.domType) { switch (setting.domType) {
case 'checkbox': { case 'checkbox': {
newNode.innerHTML += `<label><input type="checkbox" id="${setting.domId}" ${getWhSettingObj()[setting.dictName] ? "checked" : ''} />${setting.domText}</label>`; newNode.innerHTML += `<label><input type="checkbox" id="${setting.domId}" ${getWhSettingObj()[setting.dictName] ? "checked" : ''} />${setting.domText}</label>${tip}`;
settingNode.appendChild(newNode); settingNode.appendChild(newNode);
settingNode.querySelector(`#${setting.domId}`).onchange = (elem) => { settingNode.querySelector(`#${setting.domId}`).onchange = (elem) => {
setWhSetting(setting.dictName, elem.target.checked); setWhSetting(setting.dictName, elem.target.checked);
@ -6596,6 +6641,7 @@ margin: 0 0 3px;
} }
} }
}); });
// 菜单点击按钮
zhongNode.querySelector('#wh-trans-icon-btn').onclick = () => { zhongNode.querySelector('#wh-trans-icon-btn').onclick = () => {
zhongNode.classList.toggle('wh-icon-expanded'); zhongNode.classList.toggle('wh-icon-expanded');
const click_func = e => { const click_func = e => {
@ -6616,6 +6662,7 @@ margin: 0 0 3px;
document.body.removeEventListener('click', click_func); document.body.removeEventListener('click', click_func);
} }
}; };
// 更新按钮
zhongNode.querySelector('#wh-update-btn').onclick = e => { zhongNode.querySelector('#wh-update-btn').onclick = e => {
e.target.blur(); e.target.blur();
const innerHtml = `<h4>电脑</h4> const innerHtml = `<h4>电脑</h4>
@ -6624,8 +6671,29 @@ margin: 0 0 3px;
<p></p> <p></p>
<h4>手机</h4> <h4>手机</h4>
<p>安卓 KIWI 等可以用油猴脚本的浏览器也可以点上面的链接安装👆</p> <p>安卓 KIWI 等可以用油猴脚本的浏览器也可以点上面的链接安装👆</p>
<p>Torn PDA app Alook 用户可打开<a href="//jjins.github.io/fyfuzhi/" target="_blank">这个网页</a></p>`; <p>Torn PDA app Alook 用户可打开<a href="//jjins.github.io/fyfuzhi/" target="_blank">这个网页</a></p>
popupMsg(innerHtml, '如何更新'); <h4>直接复制</h4>
<p>加载脚本然后直接复制粘贴到用户脚本处</p>
<p><button>加载</button></p>
`;
const node = popupMsg(innerHtml, '如何更新');
// 直接复制的按钮
node.querySelector('button').onclick = async (e) => {
e.target.innerHTML = '加载中';
const js_text = await COFetch(`https://jjins.github.io/fyfuzhi/torn-trans-zhcn.user.js?${performance.now()}`);
e.target.innerHTML = '复制';
e.target.onclick = () => {
const textarea_node = document.createElement('textarea');
textarea_node.innerHTML = js_text;
e.target.parentElement.append(textarea_node);
textarea_node.focus();
textarea_node.select();
document.execCommand('Copy');
textarea_node.remove();
e.target.innerHTML = '已复制';
e.target.onclick = null;
};
};
}; };
document.body.append(zhongNode); document.body.append(zhongNode);
return zhongNode; return zhongNode;
@ -7257,38 +7325,6 @@ z-index:100001;
clearInterval(sidebarInterval); clearInterval(sidebarInterval);
}, 1000); }, 1000);
// 迷你资料卡
const miniProfile = function miniprof() {
const miniprofOB = new MutationObserver(_ => {
miniprofOB.disconnect();
miniprofTrans();
miniprofOB.observe($('div.profile-mini-root').get(0), {
attributes: true,
childList: true,
subtree: true
});
});
const miniprofTrans = function miniprofTrans() {
// 迷你资料卡状态
playerStatusTrans($('div.profile-mini-root div.description span'));
// 转钱
sendCashTrans('div.profile-mini-root');
};
if ($('div.profile-mini-root').length > 0)
miniprofTrans();
else {
const intervalInit = setInterval(() => {
const miniProfileFirst = $('div.profile-mini-root').get(0);
if (miniProfileFirst) {
clearInterval(intervalInit);
miniprofTrans();
miniprofOB.observe(miniProfileFirst, {attributes: true, childList: true, subtree: true});
}
}, 1000);
}
};
miniProfile();
// header // header
if (document.querySelector('div#header-root')) { if (document.querySelector('div#header-root')) {
const headerOB = new MutationObserver(_ => { const headerOB = new MutationObserver(_ => {
@ -7733,6 +7769,7 @@ z-index:100001;
// 物品页面 // 物品页面
if (href.contains(/item\.php/)) { if (href.contains(/item\.php/)) {
if (href.includes('item.php?temp=')) return;
// 标题和右边的链接 // 标题和右边的链接
initOB(document.querySelector('.content-title'), {childList: true}, initOB(document.querySelector('.content-title'), {childList: true},
() => { () => {
@ -9268,4 +9305,12 @@ z-index:100001;
}); });
} }
} }
// mini profile 翻译
function miniprofTrans() {
// 迷你资料卡状态
playerStatusTrans($('div.profile-mini-root div.description span'));
// 转钱
sendCashTrans('div.profile-mini-root');
}
}()); }());