添加pt一键购买开关

中菜单现已折叠部分设置
完善一键起飞的内容,修复有关错误
This commit is contained in:
woohoo 2022-04-01 21:11:14 +08:00
parent 428c9d9519
commit bf0a4b55c9

View File

@ -1,8 +1,8 @@
// ==UserScript== // ==UserScript==
// @lastmodified 202203312033 // @lastmodified 202204012110
// @name 芜湖助手 // @name 芜湖助手
// @namespace WOOH // @namespace WOOH
// @version 0.3.29 // @version 0.3.30
// @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,20 @@
if (window.WHTRANS) return; if (window.WHTRANS) return;
window.WHTRANS = true; window.WHTRANS = true;
// 版本 // 版本
const version = '0.3.29'; const version = '0.3.30';
// 修改历史 // 修改历史
const changelist = [ const changelist = [
{ {
todo: true, todo: true,
cont: `翻译baza npc商店、imarket、imarket搜索结果`, cont: `翻译baza npc商店、imarket、imarket搜索结果`,
}, },
{
ver: '0.3.30',
date: '20220401',
cont: `添加pt一键购买开关
中菜单现已折叠部分设置
完善一键起飞的内容修复有关错误`,
},
{ {
ver: '0.3.29', ver: '0.3.29',
date: '20220331', date: '20220331',
@ -3224,6 +3231,8 @@
{key: 'cityFinder', val: false}, {key: 'cityFinder', val: false},
// 叠E保护 // 叠E保护
{key: 'SEProtect', val: false}, {key: 'SEProtect', val: false},
// PT一键购买
{key: 'ptQuickBuy', val: false},
// 光速拔刀 6-关闭 // 光速拔刀 6-关闭
{key: 'quickAttIndex', val: 2}, {key: 'quickAttIndex', val: 2},
// 光速跑路 0-leave 1-mug 2-hos 3-关闭 // 光速跑路 0-leave 1-mug 2-hos 3-关闭
@ -3391,12 +3400,15 @@
domId: 'wh-trans-event-cont', domId: 'wh-trans-event-cont',
domHTML: eventObj.html, domHTML: eventObj.html,
}); });
// 折叠部分
{
// 开启翻译 // 开启翻译
settingsArr.push({ settingsArr.push({
domType: 'checkbox', domType: 'checkbox',
domId: 'wh-trans-enable', domId: 'wh-trans-enable',
domText: ' 开启翻译 <button id="wh-trans-data-update">更新词库</button>', domText: ' 开启翻译 <button id="wh-trans-data-update">更新词库</button>',
dictName: 'transEnable', dictName: 'transEnable',
isHide: true,
}); });
// 12月时加入圣诞小镇选项 // 12月时加入圣诞小镇选项
if (date.getMonth() === 11) { if (date.getMonth() === 11) {
@ -3405,22 +3417,16 @@
domId: 'wh-xmastown-wt', domId: 'wh-xmastown-wt',
domText: ' 圣诞小镇攻略', domText: ' 圣诞小镇攻略',
dictName: 'xmasTownWT', dictName: 'xmasTownWT',
isHide: true,
}); });
settingsArr.push({ settingsArr.push({
domType: 'checkbox', domType: 'checkbox',
domId: 'wh-xmastown-notify', domId: 'wh-xmastown-notify',
domText: ' 圣诞小镇物品提示', domText: ' 圣诞小镇物品提示',
dictName: 'xmasTownNotify', dictName: 'xmasTownNotify',
isHide: true,
}); });
} }
// 快速crime
settingsArr.push({
domType: 'checkbox',
domId: 'wh-quick-crime',
domText: ' 快速犯罪 <button id="wh-quick-crime-btn">小窗开启</button>',
dictName: 'quickCrime',
tip: '显示快捷操作按钮,目前不支持自定义',
});
// 任务助手 // 任务助手
settingsArr.push({ settingsArr.push({
domType: 'checkbox', domType: 'checkbox',
@ -3428,6 +3434,7 @@
domText: ' 任务助手', domText: ' 任务助手',
dictName: 'missionHint', dictName: 'missionHint',
tip: 'Duke任务的一些中文小提示', tip: 'Duke任务的一些中文小提示',
isHide: true,
}); });
// 起飞警告 // 起飞警告
settingsArr.push({ settingsArr.push({
@ -3436,14 +3443,16 @@
domText: ' 起飞爆E警告', domText: ' 起飞爆E警告',
dictName: 'energyAlert', dictName: 'energyAlert',
tip: '起飞前计算来回是否会爆体,红字警告', tip: '起飞前计算来回是否会爆体,红字警告',
isHide: true,
}); });
// 飞行闹钟 // 飞行闹钟
settingsArr.push({ settingsArr.push({
domType: 'checkbox', domType: 'checkbox',
domId: 'wh-trv-alarm-check', domId: 'wh-trv-alarm-check',
domText: ' 飞行闹钟 (仅PC)', domText: ' 飞行闹钟',
dictName: 'trvAlarm', dictName: 'trvAlarm',
tip: '飞行页面将显示一个内建的闹钟,落地前声音提醒,需要打开浏览器声音权限', tip: '(仅PC) 飞行页面将显示一个内建的闹钟,落地前声音提醒,需要打开浏览器声音权限',
isHide: true,
}); });
// 啤酒提醒 // 啤酒提醒
settingsArr.push({ settingsArr.push({
@ -3452,6 +3461,7 @@
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分钟的倍数时通知提醒抢啤酒或者血包', tip: '每小时的整15分钟的倍数时通知提醒抢啤酒或者血包',
isHide: true,
}); });
// 攻击链接转跳 // 攻击链接转跳
settingsArr.push({ settingsArr.push({
@ -3460,6 +3470,7 @@
domText: ' 真·攻击界面转跳', domText: ' 真·攻击界面转跳',
dictName: 'attRelocate', dictName: 'attRelocate',
tip: '在无法打开攻击界面的情况下依然可以转跳到正确的攻击页面', tip: '在无法打开攻击界面的情况下依然可以转跳到正确的攻击页面',
isHide: true,
}); });
// 捡垃圾助手 // 捡垃圾助手
settingsArr.push({ settingsArr.push({
@ -3468,6 +3479,17 @@
domText: ' 捡垃圾助手', domText: ' 捡垃圾助手',
dictName: 'cityFinder', dictName: 'cityFinder',
tip: '城市地图中放大显示物品并且估计价值', tip: '城市地图中放大显示物品并且估计价值',
isHide: true,
});
// 快速crime
settingsArr.push({
domType: 'checkbox',
domId: 'wh-quick-crime',
domText: ' 快速犯罪 <button id="wh-quick-crime-btn">小窗开启</button>',
// domText: ' 快速犯罪 <button id="wh-quick-crime-btn">小窗开启</button>',
dictName: 'quickCrime',
tip: '显示快捷操作按钮,目前不支持自定义',
isHide: true,
}); });
// 叠E保护 // 叠E保护
settingsArr.push({ settingsArr.push({
@ -3476,6 +3498,16 @@
domText: ' 叠E保护', domText: ' 叠E保护',
dictName: 'SEProtect', dictName: 'SEProtect',
tip: '隐藏健身房的锻炼按钮,防止误操作', tip: '隐藏健身房的锻炼按钮,防止误操作',
isHide: true,
});
// PT一键购买
settingsArr.push({
domType: 'checkbox',
domId: 'wh-ptQuickBuy-check',
domText: ' PT一键购买',
dictName: 'ptQuickBuy',
tip: 'PT市场页面购买时跳过确认',
isHide: true,
}); });
// 光速拔刀 // 光速拔刀
settingsArr.push({ settingsArr.push({
@ -3513,6 +3545,8 @@
}, },
], ],
dictName: 'quickAttIndex', dictName: 'quickAttIndex',
isHide: true,
tip: '将Start Fight按钮移动到指定格子上',
}); });
// 光速跑路 // 光速跑路
settingsArr.push({ settingsArr.push({
@ -3538,6 +3572,8 @@
}, },
], ],
dictName: 'quickFinishAtt', dictName: 'quickFinishAtt',
isHide: true,
tip: '将结束后指定按钮移动到上面指定的格子上',
}); });
// 危险行为⚠️ // 危险行为⚠️
if (getWhSettingObj()['dangerZone'] === true) { if (getWhSettingObj()['dangerZone'] === true) {
@ -3577,6 +3613,8 @@
domText: '关闭', domText: '关闭',
}, },
], ],
isHide: true,
tip: '危险功能:接机时常用,将自动刷新页面直到目标落地',
}); });
// 自动开打和结束 // 自动开打和结束
settingsArr.push({ settingsArr.push({
@ -3585,16 +3623,34 @@
domText: ' ⚠️自动开打和结束', domText: ' ⚠️自动开打和结束',
dictName: 'autoStartFinish', dictName: 'autoStartFinish',
tip: '脚本将会自动按下战斗和结束按钮', tip: '脚本将会自动按下战斗和结束按钮',
isHide: true,
}); });
} else { } else {
setWhSetting('autoStartFinish', false, false) setWhSetting('autoStartFinish', false, false)
setWhSetting('attReload', 6, false) setWhSetting('attReload', 6, false)
} }
// dev
settingsArr.push({
domType: 'checkbox',
domId: 'wh-dev-mode',
domText: ` 开发者模式${isDev() ? ' <button id="wh-devInfo">详情</button>' : ''}`,
dictName: 'isDev',
isHide: true,
});
// 其他设置
if (isDev()) settingsArr.push({
domType: 'button', domId: 'wh-otherBtn', domText: '其他设置', clickFunc: () => {
const html = `清空设置数据、请求通知权限、测试跨域请求`;
const popup = popupMsg(html, '其他设置');
},
isHide: true,
});
}
// 飞花库存 // 飞花库存
settingsArr.push({ settingsArr.push({
domType: 'button', domType: 'button',
domId: 'wh-foreign-stock-btn', domId: 'wh-foreign-stock-btn',
domText: '飞花库存', domText: '🌸 飞花库存',
clickFunc: async function (e) { clickFunc: async function (e) {
e.target.blur(); e.target.blur();
if (getScriptEngine() === UserScriptEngine.RAW) { if (getScriptEngine() === UserScriptEngine.RAW) {
@ -3676,7 +3732,7 @@
settingsArr.push({ settingsArr.push({
domType: 'button', domType: 'button',
domId: 'wh-quick-fly-btn', domId: 'wh-quick-fly-btn',
domText: '✈一键起飞', domText: '✈ 一键起飞',
clickFunc: async function () { clickFunc: async function () {
if (window.hasWHQuickFlyOpt) return; if (window.hasWHQuickFlyOpt) return;
window.hasWHQuickFlyOpt = true; window.hasWHQuickFlyOpt = true;
@ -3693,6 +3749,7 @@
width: 220px; width: 220px;
z-index: 999999; z-index: 999999;
} }
#wh-quick-fly-opt p{margin:4px 0;}
#wh-quick-fly-opt label{ #wh-quick-fly-opt label{
display:block; display:block;
} }
@ -3704,22 +3761,29 @@ width: 100%;
#wh-quick-fly-opt button{ #wh-quick-fly-opt button{
font-size: 16px; font-size: 16px;
color: white; color: white;
cursor: pointer;
float: right;
background: #00BCD4;
padding: 8px;
border-radius: 4px;
} }
`); `);
const node = document.createElement('div'); const node = document.createElement('div');
node.id = 'wh-quick-fly-opt'; node.id = 'wh-quick-fly-opt';
node.innerHTML = ` node.innerHTML = `
<p>先选好目的地和飞机出院后点起飞</p> <p>主要用途出院秒飞</p>
<p>选好目的地和飞机出院后点起飞</p>
<p>页面加载完成后会马上飞走</p>
<div> <div>
<label>目的地<select><option selected></option><option></option><option></option><option></option><option></option><option></option><option>s</option><option></option><option></option><option></option><option></option></select></label> <label>目的地<select><option selected>西哥</option><option></option><option></option><option></option><option></option><option></option><option></option><option></option><option></option><option></option><option></option></select></label>
<label>飞机<select><option>普通飞机</option><option selected>PI</option><option></option><option></option></select></label> <label>飞机<select><option>普通飞机 - 不推荐</option><option selected>PI</option><option> - </option><option> - </option></select></label>
<button>起飞</button> <button>起飞</button>
</div> </div>
`; `;
const [dest_node, type_node] = node.querySelectorAll('select'); const [dest_node, type_node] = node.querySelectorAll('select');
const btn_node = node.querySelector('button'); const btn_node = node.querySelector('button');
btn_node.addEventListener('click', () => { btn_node.addEventListener('click', () => {
WHNotify('即将转跳'); WHNotify('正在转跳');
sessionStorage['wh-quick-fly'] = `${dest_node.selectedIndex} ${type_node.selectedIndex} ${new Date().getTime()}`; sessionStorage['wh-quick-fly'] = `${dest_node.selectedIndex} ${type_node.selectedIndex} ${new Date().getTime()}`;
location.href = 'https://www.torn.com/travelagency.php'; location.href = 'https://www.torn.com/travelagency.php';
}); });
@ -3730,7 +3794,7 @@ color:white;
settingsArr.push({ settingsArr.push({
domType: 'button', domType: 'button',
domId: 'wh-npc-loot-btn', domId: 'wh-npc-loot-btn',
domText: 'NPC LOOT (真·世界BOSS)', domText: '🔫 LOOT',
clickFunc: function (e) { clickFunc: function (e) {
e.target.blur(); e.target.blur();
const insert = `<p>点击开打:</p> const insert = `<p>点击开打:</p>
@ -3744,12 +3808,13 @@ color:white;
<div><img alt="stock.png" src="https://jjins.github.io/t2i/loot.png?${performance.now()}" style="max-width:100%;display:block;margin:0 auto;" /></div>`; <div><img alt="stock.png" src="https://jjins.github.io/t2i/loot.png?${performance.now()}" style="max-width:100%;display:block;margin:0 auto;" /></div>`;
popupMsg(insert, 'NPC LOOT'); popupMsg(insert, 'NPC LOOT');
}, },
tip: '显示5个可击杀NPC的开打时间',
}); });
// 查看NNB // 查看NNB
settingsArr.push({ settingsArr.push({
domType: 'button', domType: 'button',
domId: 'wh-nnb-info', domId: 'wh-nnb-info',
domText: '查看NNB', domText: '👮‍ 查看NNB',
clickFunc: function (e) { clickFunc: function (e) {
e.target.blur(); e.target.blur();
const insert = `<style> const insert = `<style>
@ -3828,7 +3893,7 @@ color:white;
settingsArr.push({ settingsArr.push({
domType: 'button', domType: 'button',
domId: 'wh-link-collection', domId: 'wh-link-collection',
domText: '常用链接', domText: '🔗 常用链接',
clickFunc: function (e) { clickFunc: function (e) {
if (!this.styleAdded) { if (!this.styleAdded) {
addStyle(` addStyle(`
@ -3904,17 +3969,18 @@ height:30px;
settingsArr.push({ settingsArr.push({
domType: 'button', domType: 'button',
domId: 'wh-gs-btn', domId: 'wh-gs-btn',
domText: '飞贼小助手 (by 伞佬)', domText: '🐏 飞贼小助手',
clickFunc: function (e) { clickFunc: function (e) {
e.target.blur(); e.target.blur();
loadGS(getScriptEngine()); loadGS(getScriptEngine());
}, },
tip: '加载从PC端移植来的伞佬的油猴版飞贼小助手',
}); });
// 物品价格监视 // 物品价格监视
settingsArr.push({ settingsArr.push({
domType: 'button', domType: 'button',
domId: 'wh-price-watcher-btn', domId: 'wh-price-watcher-btn',
domText: '价格监视', domText: '💊 价格监视',
clickFunc: function () { clickFunc: function () {
const watcher_conf = getWhSettingObj()['priceWatcher']; const watcher_conf = getWhSettingObj()['priceWatcher'];
const pre_str = JSON.stringify(watcher_conf); const pre_str = JSON.stringify(watcher_conf);
@ -3941,92 +4007,12 @@ height:30px;
}; };
} }
}); });
// 危险行为开关⚠️ // 小窗犯罪
settingsArr.push({ settingsArr.push({
domType: 'button', domType: 'button',
domId: 'wh-danger-zone', domId: 'wh-crime-iframe-btn',
domText: '危险功能', domText: '🤑 小窗犯罪',
clickFunc: function (e) { clickFunc: function () {
e.target.blur();
const insert = `<p>即将打开危险功能,使用这些功能可能会造成账号封禁。请自行考虑是否使用。</p>
<p><label><input type="checkbox" ${getWhSettingObj()['dangerZone'] ? 'checked ' : ' '}/> 知道了开启</label></p>
<div><button disabled>保存</button></div>`;
const popup = popupMsg(insert, '⚠️警告');
const warning_check = popup.querySelector('input');
const ok_btn = popup.querySelector('button');
warning_check.onchange = () => ok_btn.disabled = false;
ok_btn.onclick = () => {
setWhSetting('dangerZone', warning_check.checked);
popup.close();
window.location.reload();
};
},
});
// dev
settingsArr.push({
domType: 'checkbox',
domId: 'wh-dev-mode',
domText: ` 开发者模式${isDev() ? ' <button id="wh-devInfo">详情</button>' : ''}`,
dictName: 'isDev',
});
// 更新历史
settingsArr.push({
domType: 'button', domId: 'wh-changeList', domText: '更新历史', clickFunc: () => {
let insert = '';
changelist.forEach(e => {
if (!e.todo) {
insert += `版本: ${e.ver}<br/>
时间: ${e.date.slice(0, 4)}年${e.date.slice(4, 6)}月${e.date.slice(6)}<br/>
更新: ${e.cont.replaceAll('\n', '<br/>')}<br/><br/>`;
}
});
popupMsg(insert, '更新历史');
},
});
// 其他设置
if (isDev()) settingsArr.push({
domType: 'button', domId: 'wh-otherBtn', domText: '其他设置', clickFunc: () => {
const html = `清空设置数据、请求通知权限、测试跨域请求`;
const popup = popupMsg(html, '其他设置');
},
});
// 测试按钮
// if (isDev()) settingsArr.push({
// domType: 'button',
// domId: 'wh-test-btn',
// domText: '测试按钮',
// clickFunc: function () {
// WHNotify('123',{timeout:60})
// },
// });
}
// 菜单node
const $zhongNode = initIcon(settingsArr);
// 菜单中额外的按钮
if ($zhongNode) {
// 更新词库按钮
$zhongNode.querySelector('button#wh-trans-data-update').onclick = () => popupMsg('计划中');
// 节日
$zhongNode.querySelectorAll('#wh-trans-fest-date button').forEach((el, i) => i === 0
? el.addEventListener('click', () => {
let html = '<table>';
settingsArr.fest_date_list.sort().forEach(date => html += `<tr><td>${1 + (date.slice(0, 2) | 0)}${date.slice(2)}日</td><td>${settingsArr.fest_date_dict[date].name}</td><td>${settingsArr.fest_date_dict[date].eff}</td></tr>`);
popupMsg(html += '</table>', '节日');
})
: el.addEventListener('click', ev => popupMsg(ev.target.attributes['title'].nodeValue))
);
// 活动
$zhongNode.querySelectorAll('#wh-trans-event-cont button').forEach((el, i) => i === 0
? el.addEventListener('click', () => {
let html = '<table>';
settingsArr.events.forEach(el =>
html += `<tr><td><b>${el.name}</b></td><td>${el.start[0] + 1}${el.start[1]}${el.start[2]}:00~${el.end[0] + 1}${el.end[1]}${el.end[2]}:00</td></tr><tr><td colspan="2">${el.eff}</td></tr>`);
popupMsg(html += '</table><p>更多信息请关注群聊和公众号</p>', '活动');
})
: el.addEventListener('click', ev => popupMsg(ev.target.attributes['title'].nodeValue))
);
// 小窗犯罪按钮
$zhongNode.querySelector('button#wh-quick-crime-btn').onclick = () => {
// 弹出小窗口 // 弹出小窗口
const ifHTML = `<iframe src="/crimes.php?step=main" style="width:100%;max-width: 450px;margin: 0 auto;display: none;height: 340px;"></iframe>`; const ifHTML = `<iframe src="/crimes.php?step=main" style="width:100%;max-width: 450px;margin: 0 auto;display: none;height: 340px;"></iframe>`;
const popup_insert = `<p>加载中请稍后${loading_gif_html()}</p><div id="wh-quick-crime-if-container"></div>`; const popup_insert = `<p>加载中请稍后${loading_gif_html()}</p><div id="wh-quick-crime-if-container"></div>`;
@ -4126,7 +4112,180 @@ height:30px;
loading_node.append(reload_btn); loading_node.append(reload_btn);
} }
}, 1000); }, 1000);
}
});
// 危险行为开关⚠️
settingsArr.push({
domType: 'button',
domId: 'wh-danger-zone',
domText: '⚠️ 危险功能',
clickFunc: function (e) {
e.target.blur();
const insert = `<p>即将打开危险功能,使用这些功能可能会造成账号封禁。请自行考虑是否使用。</p>
<p><label><input type="checkbox" ${getWhSettingObj()['dangerZone'] ? 'checked ' : ' '}/> 知道了开启</label></p>
<div><button disabled>保存</button></div>`;
const popup = popupMsg(insert, '⚠️警告');
const warning_check = popup.querySelector('input');
const ok_btn = popup.querySelector('button');
warning_check.onchange = () => ok_btn.disabled = false;
ok_btn.onclick = () => {
setWhSetting('dangerZone', warning_check.checked);
popup.close();
window.location.reload();
}; };
},
});
// 更新历史
settingsArr.push({
domType: 'button', domId: 'wh-changeList', domText: '🐞 更新历史', clickFunc: () => {
let insert = '';
changelist.forEach(e => {
if (!e.todo) {
insert += `版本: ${e.ver}<br/>
时间: ${e.date.slice(0, 4)}年${e.date.slice(4, 6)}月${e.date.slice(6)}<br/>
更新: ${e.cont.replaceAll('\n', '<br/>')}<br/><br/>`;
}
});
popupMsg(insert, '更新历史');
},
});
// 测试按钮
// if (isDev()) settingsArr.push({
// domType: 'button',
// domId: 'wh-test-btn',
// domText: '测试按钮',
// clickFunc: function () {
// WHNotify('123',{timeout:60})
// },
// });
}
// 菜单node
const $zhongNode = initIcon(settingsArr);
// 菜单中额外的按钮
if ($zhongNode) {
// 更新词库按钮
$zhongNode.querySelector('button#wh-trans-data-update').onclick = () => popupMsg('计划中');
// 节日
$zhongNode.querySelectorAll('#wh-trans-fest-date button').forEach((el, i) => i === 0
? el.addEventListener('click', () => {
let html = '<table>';
settingsArr.fest_date_list.sort().forEach(date => html += `<tr><td>${1 + (date.slice(0, 2) | 0)}${date.slice(2)}日</td><td>${settingsArr.fest_date_dict[date].name}</td><td>${settingsArr.fest_date_dict[date].eff}</td></tr>`);
popupMsg(html += '</table>', '节日');
})
: el.addEventListener('click', ev => popupMsg(ev.target.attributes['title'].nodeValue))
);
// 活动
$zhongNode.querySelectorAll('#wh-trans-event-cont button').forEach((el, i) => i === 0
? el.addEventListener('click', () => {
let html = '<table>';
settingsArr.events.forEach(el =>
html += `<tr><td><b>${el.name}</b></td><td>${el.start[0] + 1}${el.start[1]}${el.start[2]}:00~${el.end[0] + 1}${el.end[1]}${el.end[2]}:00</td></tr><tr><td colspan="2">${el.eff}</td></tr>`);
popupMsg(html += '</table><p>更多信息请关注群聊和公众号</p>', '活动');
})
: el.addEventListener('click', ev => popupMsg(ev.target.attributes['title'].nodeValue))
);
// 小窗犯罪按钮
// $zhongNode.querySelector('button#wh-quick-crime-btn').onclick = () => {
// // 弹出小窗口
// const ifHTML = `<iframe src="/crimes.php?step=main" style="width:100%;max-width: 450px;margin: 0 auto;display: none;height: 340px;"></iframe>`;
// const popup_insert = `<p>加载中请稍后${loading_gif_html()}</p><div id="wh-quick-crime-if-container"></div>`;
// const $popup = popupMsg(popup_insert, '小窗快速犯罪');
// // 运行状态node
// let loading_node = $popup.querySelector('p:first-of-type');
// // if容器
// const if_cont = $popup.querySelector('#wh-quick-crime-if-container');
// if_cont.innerHTML = ifHTML;
//
// // if内未加载脚本时插入的快捷crime node
// const mobile_prepend_node = document.createElement('div');
// mobile_prepend_node.classList.add('wh-translate');
// mobile_prepend_node.innerHTML = `<div class="title-black" style="border-radius: 5px 5px 0 0;"><span>快捷操作:</span></div><div class="cont-gray" style="padding: 6px 0;border-radius: 0 0 5px 5px;">
// <form id="wh-translate-quick" action="crimes.php?step=docrime4" method="post" style="display: inline-block;margin: 0 5px">
// <input name="nervetake" type="hidden" value="18">
// <input name="crime" type="hidden" value="hackbank">
// <input style="-webkit-appearance:none;padding: 4px;background: #e91e63;border-radius: 5px;color: white;" type="submit" value="18-1" />
// </form>
// <form id="wh-translate-quick" action="crimes.php?step=docrime4" method="post" style="display: inline-block;margin: 0 5px">
// <input name="nervetake" type="hidden" value="11">
// <input name="crime" type="hidden" value="warehouse">
// <input style="-webkit-appearance:none;padding: 4px;background: #2196f3;border-radius: 5px;color: white;" type="submit" value="烧仓库" />
// </form>
// <form id="wh-translate-quick" action="crimes.php?step=docrime4" method="post" style="display: inline-block;margin: 0 5px">
// <input name="nervetake" type="hidden" value="4">
// <input name="crime" type="hidden" value="jacket">
// <input style="-webkit-appearance:none;padding: 4px;background: #009688;border-radius: 5px;color: white;" type="submit" value="偷夹克" />
// </form></div><hr class="page-head-delimiter m-top10 m-bottom10 r1854">`;
//
// // if对象加载后运行
// let cIframe = $popup.querySelector('iframe');
//
// // 加载状态
// const if_onload_func = () => {
// // if内部文档对象
// const ifDocu = cIframe.contentWindow.document;
// // 内部插件运行flag
// const ifWH = cIframe.contentWindow.WHTRANS;
// // 文档加载完成后移除
// if (!!loading_node) loading_node.remove();
// // 文档加载完成后才显示if
// cIframe.style.display = 'block';
// // 验证码flag
// const isValidate = ifDocu.querySelector('h4#skip-to-content').innerText.toLowerCase().includes('validate');
// // 如果iframe内部未运行脚本
// if (ifWH === undefined) {
// // 隐藏顶部
// elementReady('#header-root', ifDocu).then(e => e.style.display = 'none');
// // 隐藏4条
// elementReady('#sidebarroot', ifDocu).then(e => e.style.display = 'none');
// // 隐藏聊天
// elementReady('#chatRoot', ifDocu).then(e => e.style.display = 'none');
// // 非验证码页面隐藏滚动条
// if (!isValidate) ifDocu.body.style.overflow = 'hidden';
// // 调整容器位置
// elementReady('.content-wrapper', ifDocu).then(elem => {
// // 加入
// elem.prepend(mobile_prepend_node);
// elem.style.margin = '0px';
// elem.style.position = 'absolute';
// elem.style.top = '-35px';
// new MutationObserver((m, o) => {
// o.disconnect();
// if (!elem.querySelector('.wh-translate')) elem.prepend(mobile_prepend_node);
// o.observe(elem, {childList: true, subtree: true});
// })
// .observe(elem, {childList: true, subtree: true});
// });
// // 隐藏返回顶部按钮
// elementReady('#go-to-top-btn button', ifDocu).then(e => e.style.display = 'none');
// }
// };
// cIframe.onload = if_onload_func;
//
// // 超时判断
// let time_counter = 0;
// let time_out_id = window.setInterval(() => {
// loading_node = $popup.querySelector('p:first-of-type');
// if (!loading_node) {
// clearInterval(time_out_id);
// time_out_id = undefined;
// return;
// }
// time_counter++;
// if (time_counter > 0 && !loading_node.querySelector('button')) {
// const reload_btn = document.createElement('button');
// reload_btn.innerHTML = '重新加载';
// reload_btn.onclick = () => {
// reload_btn.remove();
// time_counter = 0;
// if_cont.innerHTML = null;
// if_cont.innerHTML = ifHTML;
// cIframe = $popup.querySelector('iframe');
// cIframe.onload = if_onload_func;
// };
// loading_node.append(reload_btn);
// }
// }, 1000);
// };
// 今日不提醒 // 今日不提醒
$zhongNode.querySelector('button#wh-qua-alarm-check-btn').onclick = () => WHNotify('没有打开提醒呢,点击无效'); $zhongNode.querySelector('button#wh-qua-alarm-check-btn').onclick = () => WHNotify('没有打开提醒呢,点击无效');
// 开发详情按钮 // 开发详情按钮
@ -4203,7 +4362,10 @@ color:black;
})(); })();
} }
} }
addStyle(`#wh-trans-icon{ addStyle(`
.wh-hide{display:none;}
#wh-trans-icon{
user-select:none;
display: inline-block; display: inline-block;
position: fixed; position: fixed;
top:5px; top:5px;
@ -4218,6 +4380,7 @@ box-shadow: 0 0 3px 1px #8484848f;
top:0;left:112px; top:0;left:112px;
} }
} }
#wh-trans-icon select {width:110px;}
#wh-trans-icon a { #wh-trans-icon a {
text-decoration: none; text-decoration: none;
color: #006599; color: #006599;
@ -4240,11 +4403,11 @@ color: #333;
box-shadow: 0px 0px 3px 1px #25252573; box-shadow: 0px 0px 3px 1px #25252573;
border-radius: 2px; border-radius: 2px;
padding: 6px; padding: 6px;
max-width: 14em; max-width: 13em;
font-size: 13px; font-size: 13px;
line-height: 14px; line-height: 14px;
} }
#wh-gSettings div:hover .wh-tip{display: block;} #wh-gSettings div:hover > .wh-tip{display: block;}
#wh-gSettings .wh-tip:hover{display:none !important;} #wh-gSettings .wh-tip:hover{display:none !important;}
#wh-trans-icon .wh-container{ #wh-trans-icon .wh-container{
margin:0; margin:0;
@ -4626,14 +4789,19 @@ display:none;
// 一键起飞 // 一键起飞
if (sessionStorage['wh-quick-fly'] && href.includes('travelagency.php')) { if (sessionStorage['wh-quick-fly'] && href.includes('travelagency.php')) {
// [id-dest,type(1...4),timestamp] // [id: dest, _type: (1...4), ts: timestamp]
const [_id, _type, ts] = sessionStorage['wh-quick-fly'].trim().split(' '); const [_id, _type, ts] = sessionStorage['wh-quick-fly'].trim().split(' ');
sessionStorage['wh-quick-fly'] = undefined; delete sessionStorage['wh-quick-fly'];
if (new Date().getTime() - ts > 60000) { if (new Date().getTime() - ts > 20000) {
log('超时,一键起飞计划已取消'); WHNotify('超时,一键起飞计划已取消');
return; return;
} }
const _key = document.querySelector('div[data-id][data-key]').getAttribute('data-key'); const keynode = document.querySelector('div[data-id][data-key]');
if (!keynode) {
WHNotify('出错了,无法起飞,已取消');
return;
}
const _key = keynode.getAttribute('data-key');
getAction({ getAction({
type: 'post', type: 'post',
data: { data: {
@ -4644,6 +4812,11 @@ display:none;
}, },
success: function (str) { success: function (str) {
WHNotify(str) WHNotify(str)
if(str.includes('err')) {
WHNotify('起飞出错了');
return;
}
window.location.href = 'https://www.torn.com/index.php'
}, },
before: function () { before: function () {
} }
@ -5036,7 +5209,7 @@ display:inline-block;
} }
// pt一键购买 // pt一键购买
if (href.includes('pmarket.php')) { if (getWhSettingObj()['ptQuickBuy'] && href.includes('pmarket.php')) {
WHNotify('一键购买已开启'); WHNotify('一键购买已开启');
// ns脚本 // ns脚本
const rmv_cfm = (e) => { const rmv_cfm = (e) => {
@ -6897,6 +7070,9 @@ margin: 0 0 3px;
</div> </div>
</div>`; </div>`;
const settingNode = zhongNode.querySelector('#wh-gSettings'); const settingNode = zhongNode.querySelector('#wh-gSettings');
let hideNode = null;
const btn = document.createElement('button');
btn.innerHTML = '+ 展开设置';
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>` : ''; const tip = setting['tip'] ? `<div class="wh-tip">${setting['tip']}</div>` : '';
@ -6910,7 +7086,7 @@ margin: 0 0 3px;
break; break;
} }
case 'button': { case 'button': {
newNode.innerHTML += `<button id="${setting.domId}">${setting.domText}</button>`; newNode.innerHTML += `<button id="${setting.domId}">${setting.domText}</button>${tip}`;
settingNode.appendChild(newNode); settingNode.appendChild(newNode);
settingNode.querySelector(`#${setting.domId}`).onclick = setting.clickFunc; settingNode.querySelector(`#${setting.domId}`).onclick = setting.clickFunc;
break; break;
@ -6921,7 +7097,7 @@ margin: 0 0 3px;
const selected = i === getWhSettingObj()[setting.dictName] ? 'selected' : ''; const selected = i === getWhSettingObj()[setting.dictName] ? 'selected' : '';
optHtml += `<option value="${optObj.domVal}" ${selected}>${optObj.domText}</option>`; optHtml += `<option value="${optObj.domVal}" ${selected}>${optObj.domText}</option>`;
}); });
newNode.innerHTML += `<label>${setting.domText}<select id="${setting.domId}">${optHtml}</select></label>`; newNode.innerHTML += `<label>${setting.domText}<select id="${setting.domId}">${optHtml}</select></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.selectedIndex); setWhSetting(setting.dictName, elem.target.selectedIndex);
@ -6935,6 +7111,19 @@ margin: 0 0 3px;
break; break;
} }
} }
if (setting.isHide === true) {
if (!hideNode) {
hideNode = document.createElement('div');
hideNode.classList.add('wh-hide');
btn.addEventListener('click', () => {
hideNode.classList.toggle('wh-hide');
btn.innerHTML = btn.innerHTML === '+ 展开设置' ? '- 收起' : '+ 展开设置';
});
}
settingNode.append(btn);
settingNode.append(hideNode);
hideNode.append(newNode);
}
}); });
// 菜单点击按钮 // 菜单点击按钮
zhongNode.querySelector('#wh-trans-icon-btn').onclick = () => { zhongNode.querySelector('#wh-trans-icon-btn').onclick = () => {