This commit is contained in:
Liwanyi 2022-10-13 18:05:15 +08:00
parent d8631c8d7f
commit d7aa4cf021
14 changed files with 263 additions and 164 deletions

4
.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
/node_modules
/bundle.min.js
/bundle.js
/.fleet

View File

@ -2,7 +2,9 @@
<module type="JAVA_MODULE" version="4"> <module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true"> <component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output /> <exclude-output />
<content url="file://$MODULE_DIR$" /> <content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.fleet" />
</content>
<orderEntry type="inheritedJdk" /> <orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" /> <orderEntry type="sourceFolder" forTests="false" />
</component> </component>

View File

@ -5,6 +5,18 @@
# CHANGE # CHANGE
## 0.5.8
2022年10月13日
### 修改
- UI调整
### 添加
- PT一键购买开关
## 0.5.7 ## 0.5.7
2022年10月12日 2022年10月12日

View File

@ -1,6 +1,6 @@
{ {
"name": "wuhu-torn-helper", "name": "wuhu-torn-helper",
"version": "0.5.7", "version": "0.5.8",
"description": "芜湖助手", "description": "芜湖助手",
"dependencies": {}, "dependencies": {},
"scripts": { "scripts": {

File diff suppressed because one or more lines are too long

View File

@ -5,6 +5,7 @@ import { Common } from "./Common";
import UrlPattern from "./UrlMatch"; import UrlPattern from "./UrlMatch";
import WuhuConfig from "./WuhuConfig"; import WuhuConfig from "./WuhuConfig";
import translateMain from "../func/translate/translateMain"; import translateMain from "../func/translate/translateMain";
import Global from "./Global";
export default class Application { export default class Application {
@ -16,14 +17,14 @@ export default class Application {
let app = new WuHuTornHelper(); let app = new WuHuTornHelper();
app.init(); app.init();
let glob = WuhuBase.glob; // let glob = WuhuBase.glob;
ZhongIcon.getInstance().initialize(); ZhongIcon.getInstance();
Common.getInstance().resolve(); Common.getInstance().resolve();
UrlPattern.resolve(); UrlPattern.getInstance().resolve();
if (WuhuConfig.get('transEnable')) translateMain(glob.href); if (WuhuConfig.get('transEnable')) translateMain(Global.getInstance().href);
let runTime: number = (performance.now() - started) | 0; let runTime: number = (performance.now() - started) | 0;
ZhongIcon.ZhongNode.initTimer.innerHTML = `助手加载时间 ${ runTime }ms`; ZhongIcon.ZhongNode.initTimer.innerHTML = `助手加载时间 ${ runTime }ms`;

View File

@ -5,6 +5,9 @@ import Log from "./Log";
import InfoUtils from "./utils/InfoUtils"; import InfoUtils from "./utils/InfoUtils";
import BuyBeerHelper from "./action/BuyBeerHelper"; import BuyBeerHelper from "./action/BuyBeerHelper";
/**
*
*/
export default class Global extends WuhuBase implements IGlobal { export default class Global extends WuhuBase implements IGlobal {
GM_xmlhttpRequest: Function = null; GM_xmlhttpRequest: Function = null;

View File

@ -15,53 +15,20 @@ import RW_RIDER_HTML from "../static/html/rw_rider.html";
import christmasTownHelper from "../func/module/christmasTownHelper"; import christmasTownHelper from "../func/module/christmasTownHelper";
import LotteryHelper from "./action/LotteryHelper"; import LotteryHelper from "./action/LotteryHelper";
import TornStyleBlock from "./utils/TornStyleBlock"; import TornStyleBlock from "./utils/TornStyleBlock";
import PTHelper from "./action/PTHelper";
import StackHelper from "./action/StackHelper";
export default class UrlPattern extends WuhuBase { export default class UrlPattern extends WuhuBase {
static resolve() { public resolve(): void {
let { href, beer } = UrlPattern.glob; let { href, beer } = UrlPattern.glob;
// 捡垃圾助手 // 捡垃圾助手
if (href.includes('city.php') && WuhuConfig.get('cityFinder')) { if (href.includes('city.php') && WuhuConfig.get('cityFinder')) cityFinder();
cityFinder();
}
// pt一键购买 // pt一键购买
if (WuhuConfig.get('ptQuickBuy') && href.includes('pmarket.php')) { if (href.includes('pmarket.php')) PTHelper.getInstance();
new Alert('一键购买已开启');
// ns脚本
const rmv_cfm = (e) => {
let el = e.firstElementChild;
el.className += ' yes';
let old_href = el.getAttribute('href');
let new_href = old_href.replace(/=buy/, '=buy1').replace(/&points=\d{1,9}$/, '');
el.setAttribute('href', new_href);
};
let points_sales = document.querySelector('.users-point-sell');
for (const index in points_sales.children) {
'LI' === points_sales.children[index].tagName && rmv_cfm(points_sales.children[index])
}
new MutationObserver(e => {
for (const t of e) {
// for (const e of t.addedNodes) {
// 'LI' === e.tagName && rmv_cfm(e)
// }
t.addedNodes.forEach(e => 'LI' === (e as HTMLElement).tagName && rmv_cfm(e))
}
}).observe(points_sales, { childList: true });
}
// 叠e助手 // 叠e助手
if (href.includes('gym.php')) { if (href.includes('gym.php')) StackHelper.getInstance();
let block = new TornStyleBlock('叠E保护').insert2Dom();
block.setContent(`<label class="non-selection"><input class="" type="checkbox" ${ WuhuConfig.get('SEProtect') ? 'checked' : '' }/> 启用</label>`);
// 绑定点击事件
block.querySelector('input').onchange = e => {
let target = e.target as HTMLInputElement;
document.body.classList.toggle('wh-gym-stack');
WuhuConfig.set('SEProtect', target.checked, true);
};
if (WuhuConfig.get('SEProtect')) document.body.classList.add('wh-gym-stack');
}
// 啤酒店 // 啤酒店
if (href.includes('shops.php?step=bitsnbobs')) { if (href.includes('shops.php?step=bitsnbobs')) {
@ -271,8 +238,6 @@ export default class UrlPattern extends WuhuBase {
} }
// 彩票助手 // 彩票助手
if (href.includes('loader.php?sid=lottery')) { if (href.includes('loader.php?sid=lottery')) LotteryHelper.getInstance().init();
LotteryHelper.getInstance().init();
}
} }
} }

View File

@ -26,24 +26,23 @@ import QUICK_FLY_CSS from "../static/css/quick_fly.css";
import QUICK_LINK_CSS from "../static/css/quick_link.css"; import QUICK_LINK_CSS from "../static/css/quick_link.css";
import MDUtils from "./utils/MDUtils"; import MDUtils from "./utils/MDUtils";
import Test from "../test/Test"; import Test from "../test/Test";
import TornStyleSwitch from "./utils/TornStyleSwitch";
import Global from "./Global";
export default class ZhongIcon extends WuhuBase { export default class ZhongIcon extends WuhuBase {
public static ZhongNode: MyHTMLElement = null; public static ZhongNode: MyHTMLElement = null;
private menuItemList: MenuItemConfig[] = null; private menuItemList: MenuItemConfig[] = null;
private settingItemList: MenuItemConfig[] = null; private settingItemList: MenuItemConfig[] = null;
public initialize() { public constructor() {
Log.info('ZhongIcon初始化'); Log.info('ZhongIcon初始化, 设置图标开始');
super();
this.setDefaultSettings()
.constructWuhuSettingList()
.constructMenuList()
.insert2Dom();
this.setDefaultSettings(); Log.info('设置图标结束, ZhongIcon初始化结束');
Log.info('设置图标开始');
this.setSettingItems();
this.setMenuItems();
this.initIcon();
Log.info('设置图标结束');
Log.info('ZhongIcon初始化结束');
} }
private elemGenerator(setting: MenuItemConfig, root_node: Node) { private elemGenerator(setting: MenuItemConfig, root_node: Node) {
@ -52,20 +51,18 @@ export default class ZhongIcon extends WuhuBase {
switch (domType) { switch (domType) {
case 'checkbox': { case 'checkbox': {
new_node = document.createElement('div'); new_node = document.createElement('div');
let { domId, dictName, domText } = setting; let { domId, dictName, domText, changeEv } = setting;
let label = document.createElement('label');
(tip) && (label.setAttribute('title', tip)); let switcher = new TornStyleSwitch(domText);
let input = document.createElement('input'); let _input = switcher.getInput();
input.type = 'checkbox'; switcher.getBase().id = domId;
input.id = domId; (tip) && (switcher.getBase().setAttribute('title', tip));
input.checked = WuhuConfig.get(dictName); _input.checked = WuhuConfig.get(dictName);
input.onchange = e => { _input.onchange = e => {
WuhuConfig.set(dictName, (e.target as HTMLInputElement).checked, true); WuhuConfig.set(dictName, _input.checked, true);
if (setting.changeEv) setting.changeEv(e); if (changeEv) changeEv(e);
}; };
label.innerHTML = domText; new_node.appendChild(switcher.getBase());
label.prepend(input);
new_node.appendChild(label);
break; break;
} }
case 'button': { case 'button': {
@ -118,7 +115,7 @@ export default class ZhongIcon extends WuhuBase {
/** /**
* *
*/ */
private initIcon(): MyHTMLElement { private insert2Dom() {
let zhong_node: MyHTMLElement = document.querySelector('div#wh-trans-icon'); let zhong_node: MyHTMLElement = document.querySelector('div#wh-trans-icon');
let settings = this.menuItemList; let settings = this.menuItemList;
let { version } = WuhuBase.glob; let { version } = WuhuBase.glob;
@ -129,9 +126,6 @@ export default class ZhongIcon extends WuhuBase {
zhong_node.innerHTML = ZHONG_MENU_HTML.replace('{{}}', version.slice(-1) === '$' ? 'DEV' : version); zhong_node.innerHTML = ZHONG_MENU_HTML.replace('{{}}', version.slice(-1) === '$' ? 'DEV' : version);
// 助手菜单 // 助手菜单
const menu_cont = zhong_node.querySelector('#wh-gSettings'); const menu_cont = zhong_node.querySelector('#wh-gSettings');
// 设置选项
zhong_node.setting_root = document.createElement('div');
zhong_node.setting_root.classList.add('gSetting');
// 遍历菜单node设置、生成node、插入dom // 遍历菜单node设置、生成node、插入dom
this.menuItemList.forEach(setting => this.elemGenerator(setting, menu_cont)); this.menuItemList.forEach(setting => this.elemGenerator(setting, menu_cont));
// 计时node // 计时node
@ -208,19 +202,19 @@ export default class ZhongIcon extends WuhuBase {
// 加载torn mini profile // 加载torn mini profile
initMiniProf('#wh-trans-icon'); initMiniProf('#wh-trans-icon');
ZhongIcon.ZhongNode = zhong_node; ZhongIcon.ZhongNode = zhong_node;
return zhong_node; // return zhong_node;
} }
// 菜单 // 菜单
private setMenuItems(): MenuItemConfig[] { private constructMenuList(): ZhongIcon {
let glob = WuhuBase.glob; let glob = Global.getInstance();
const date = new Date(); const date = new Date();
const menu_list: MenuItemConfig[] = []; let list: MenuItemConfig[] = [];
// 欢迎 显示玩家id // 欢迎 显示玩家id
if (glob.player_info.userID !== 0) { if (glob.player_info.userID !== 0) {
menu_list.push({ list.push({
domType: 'plain', domType: 'plain',
domId: 'wh-trans-welcome', domId: 'wh-trans-welcome',
domHTML: `<span>欢迎 <a href="/profiles.php?XID=${ glob.player_info.userID }" target="_blank">${ glob.player_info.playername }</a>[${ glob.player_info.userID }] 大佬</span>`, domHTML: `<span>欢迎 <a href="/profiles.php?XID=${ glob.player_info.userID }" target="_blank">${ glob.player_info.playername }</a>[${ glob.player_info.userID }] 大佬</span>`,
@ -231,8 +225,8 @@ export default class ZhongIcon extends WuhuBase {
{ {
// 节日字典 // 节日字典
const dict = FEST.val; const dict = FEST.val;
menu_list.fest_date_dict = dict; list.fest_date_dict = dict;
menu_list.fest_date_list = Object.keys(dict); list.fest_date_list = Object.keys(dict);
const formatMMDD = (m, d) => { const formatMMDD = (m, d) => {
const MM = m < 10 ? `0${ m }` : m.toString(); const MM = m < 10 ? `0${ m }` : m.toString();
const DD = d < 10 ? `0${ d }` : d.toString(); const DD = d < 10 ? `0${ d }` : d.toString();
@ -260,7 +254,7 @@ export default class ZhongIcon extends WuhuBase {
fest_date_html += `${ left }天后 - ${ next_fest_date.name }(<button title="${ next_fest_date.eff }">效果</button>)`; fest_date_html += `${ left }天后 - ${ next_fest_date.name }(<button title="${ next_fest_date.eff }">效果</button>)`;
} }
} }
menu_list.push({ list.push({
domType: 'plain', domType: 'plain',
domId: 'wh-trans-fest-date', domId: 'wh-trans-fest-date',
domHTML: fest_date_html, domHTML: fest_date_html,
@ -271,7 +265,7 @@ export default class ZhongIcon extends WuhuBase {
daysLeft: Infinity, daysLeft: Infinity,
events: EVENTS.default, events: EVENTS.default,
}; };
menu_list.events = eventObj.events; list.events = eventObj.events;
eventObj.events.forEach((obj, index) => { eventObj.events.forEach((obj, index) => {
if (eventObj.onEv) return; if (eventObj.onEv) return;
// 当前年份 // 当前年份
@ -304,13 +298,13 @@ export default class ZhongIcon extends WuhuBase {
eventObj.onEv eventObj.onEv
? eventObj.html += `${ eventObj.current.name }(<button title="${ eventObj.current.eff }">详情</button>) - 剩余${ eventObj.daysLeft }` ? eventObj.html += `${ eventObj.current.name }(<button title="${ eventObj.current.eff }">详情</button>) - 剩余${ eventObj.daysLeft }`
: eventObj.html += `${ eventObj.daysLeft }天后 - ${ eventObj.next.name }(<button title="${ eventObj.next.eff }">详情</button>)`; : eventObj.html += `${ eventObj.daysLeft }天后 - ${ eventObj.next.name }(<button title="${ eventObj.next.eff }">详情</button>)`;
menu_list.push({ list.push({
domType: 'plain', domType: 'plain',
domId: 'wh-trans-event-cont', domId: 'wh-trans-event-cont',
domHTML: eventObj.html, domHTML: eventObj.html,
}); });
// 飞花库存 // 飞花库存
menu_list.push({ list.push({
domType: 'button', domType: 'button',
domId: 'wh-foreign-stock-btn', domId: 'wh-foreign-stock-btn',
domText: '🌸 飞花库存', domText: '🌸 飞花库存',
@ -321,7 +315,7 @@ export default class ZhongIcon extends WuhuBase {
}, },
}); });
// 一键起飞 // 一键起飞
menu_list.push({ list.push({
domType: 'button', domType: 'button',
domId: 'wh-quick-fly-btn', domId: 'wh-quick-fly-btn',
domText: '✈️ 一键起飞', domText: '✈️ 一键起飞',
@ -382,7 +376,7 @@ export default class ZhongIcon extends WuhuBase {
}, },
}); });
// NPC LOOT // NPC LOOT
menu_list.push({ list.push({
domType: 'button', domType: 'button',
domId: 'wh-npc-loot-btn', domId: 'wh-npc-loot-btn',
domText: '🔫 LOOT', domText: '🔫 LOOT',
@ -394,7 +388,7 @@ export default class ZhongIcon extends WuhuBase {
tip: '显示5个可击杀NPC的开打时间', tip: '显示5个可击杀NPC的开打时间',
}); });
// 查看NNB // 查看NNB
menu_list.push({ list.push({
domType: 'button', domType: 'button',
domId: 'wh-nnb-info', domId: 'wh-nnb-info',
domText: '👮‍ 查看NNB', domText: '👮‍ 查看NNB',
@ -453,7 +447,7 @@ export default class ZhongIcon extends WuhuBase {
}, },
}); });
// 常用链接 // 常用链接
menu_list.push({ list.push({
domType: 'button', domType: 'button',
domId: 'wh-link-collection', domId: 'wh-link-collection',
domText: '🔗 常用链接', domText: '🔗 常用链接',
@ -536,7 +530,7 @@ export default class ZhongIcon extends WuhuBase {
}, },
}); });
// 飞贼 // 飞贼
menu_list.push({ list.push({
domType: 'button', domType: 'button',
domId: 'wh-gs-btn', domId: 'wh-gs-btn',
domText: '🐏 飞贼小助手', domText: '🐏 飞贼小助手',
@ -547,7 +541,7 @@ export default class ZhongIcon extends WuhuBase {
tip: '加载从PC端移植的伞佬的油猴版飞贼小助手', tip: '加载从PC端移植的伞佬的油猴版飞贼小助手',
}); });
// 物品价格监视 // 物品价格监视
menu_list.push({ list.push({
domType: 'button', domType: 'button',
domId: 'wh-price-watcher-btn', domId: 'wh-price-watcher-btn',
domText: '💊 价格监视', domText: '💊 价格监视',
@ -570,7 +564,7 @@ export default class ZhongIcon extends WuhuBase {
} }
}); });
// 小窗犯罪 // 小窗犯罪
menu_list.push({ list.push({
domType: 'button', domType: 'button',
domId: 'wh-crime-iframe-btn', domId: 'wh-crime-iframe-btn',
domText: '🤑 小窗犯罪', domText: '🤑 小窗犯罪',
@ -662,7 +656,7 @@ export default class ZhongIcon extends WuhuBase {
} }
}); });
// 危险行为开关⚠️ // 危险行为开关⚠️
menu_list.push({ list.push({
domType: 'button', domType: 'button',
domId: 'wh-danger-zone', domId: 'wh-danger-zone',
domText: '⚠️ 危险功能', domText: '⚠️ 危险功能',
@ -681,14 +675,14 @@ export default class ZhongIcon extends WuhuBase {
}, },
}); });
// 传单助手 // 传单助手
menu_list.push({ list.push({
domType: 'button', domType: 'button',
domId: '', domId: '',
domText: '📜️ 传单助手', domText: '📜️ 传单助手',
clickFunc: adHelper clickFunc: adHelper
}); });
// 守望者 // 守望者
menu_list.push({ list.push({
domType: 'button', domType: 'button',
domId: '', domId: '',
domText: '🛡️ 守望者', domText: '🛡️ 守望者',
@ -697,7 +691,7 @@ export default class ZhongIcon extends WuhuBase {
}, },
}); });
// 更新历史 // 更新历史
menu_list.push({ list.push({
domType: 'button', domId: '', domText: '🐞 更新历史', clickFunc: async () => { domType: 'button', domId: '', domText: '🐞 更新历史', clickFunc: async () => {
let popup = new Popup( let popup = new Popup(
'更新历史:<br/><a target="_blank" href="https://gitlab.com/JJins/wuhu-torn-helper/-/blob/dev/CHANGELOG.md">https://gitlab.com/JJins/wuhu-torn-helper/-/blob/dev/CHANGELOG.md</a><br/>', '更新历史:<br/><a target="_blank" href="https://gitlab.com/JJins/wuhu-torn-helper/-/blob/dev/CHANGELOG.md">https://gitlab.com/JJins/wuhu-torn-helper/-/blob/dev/CHANGELOG.md</a><br/>',
@ -730,19 +724,18 @@ export default class ZhongIcon extends WuhuBase {
}, },
}); });
// 助手设置 // 助手设置
menu_list.push({ list.push({
domType: 'button', domId: '', domText: '⚙️ 助手设置', clickFunc: () => { domType: 'button', domId: '', domText: '⚙️ 助手设置', clickFunc: () => {
let $zhongNode = ZhongIcon.ZhongNode;
$zhongNode.setting_root = document.createElement('div');
$zhongNode.setting_root.classList.add('gSetting');
// ZhongIcon.getSettingItems(glob).forEach(set => ZhongIcon.elemGenerator(set, $zhongNode.setting_root));
let startTime = performance.now(); let startTime = performance.now();
Log.info('构造设置开始'); Log.info('构造设置开始');
this.settingItemList.forEach(set => this.elemGenerator(set, $zhongNode.setting_root)); let pop = new Popup(CommonUtils.loading_gif_html(), '芜湖助手设置');
let pop = new Popup('', '芜湖助手设置'); let tmp = document.createElement('div');
pop.getElement().appendChild($zhongNode.setting_root); tmp.classList.add('gSetting');
this.settingItemList.forEach(set => this.elemGenerator(set, tmp));
pop.getElement().innerHTML = '';
pop.getElement().appendChild(tmp);
// 本日不提醒 // 本日不提醒
$zhongNode.setting_root.querySelector('#wh-qua-alarm-check-btn').addEventListener('click', glob.beer.skip_today); pop.getElement().querySelector('#wh-qua-alarm-check-btn').addEventListener('click', () => glob.beer.skip_today());
// 开发详情按钮 // 开发详情按钮
// if (Log.debug()) $zhongNode.setting_root.querySelector('button#wh-devInfo').onclick = () => { // if (Log.debug()) $zhongNode.setting_root.querySelector('button#wh-devInfo').onclick = () => {
// const date = new Date(); // const date = new Date();
@ -760,7 +753,7 @@ export default class ZhongIcon extends WuhuBase {
}, },
}); });
// 测试 // 测试
if (Log.debug()) menu_list.push({ if (Log.debug()) list.push({
domType: 'button', domType: 'button',
domId: '', domId: '',
domText: '📐️ 测试', domText: '📐️ 测试',
@ -777,34 +770,34 @@ export default class ZhongIcon extends WuhuBase {
}, },
}); });
this.menuItemList = menu_list; this.menuItemList = list;
return menu_list; return this;
} }
// 设置 // 设置
private setSettingItems(): MenuItemConfig[] { private constructWuhuSettingList(): ZhongIcon {
const date = new Date(); const date = new Date();
let { beer, popup_node } = ZhongIcon.glob; let { beer, popup_node } = ZhongIcon.glob;
let setting_list: MenuItemConfig[] = []; let list: MenuItemConfig[] = [];
// 12月时加入圣诞小镇选项 // 12月时加入圣诞小镇选项
if (date.getMonth() === 11) { if (date.getMonth() === 11) {
setting_list.push({ list.push({
domType: 'plain', domType: 'plain',
domId: '', domId: '',
domHTML: '圣诞小镇', domHTML: '圣诞小镇',
tagName: 'h4', tagName: 'h4',
}) })
setting_list.push({ list.push({
domType: 'checkbox', domType: 'checkbox',
domId: 'wh-xmastown-wt', domId: 'wh-xmastown-wt',
domText: ' 圣诞小镇攻略', domText: ' 圣诞小镇攻略',
dictName: 'xmasTownWT', dictName: 'xmasTownWT',
isHide: true, isHide: true,
}); });
setting_list.push({ list.push({
domType: 'checkbox', domType: 'checkbox',
domId: 'wh-xmastown-notify', domId: 'wh-xmastown-notify',
domText: ' 圣诞小镇物品提示', domText: ' 圣诞小镇物品提示',
@ -814,14 +807,14 @@ export default class ZhongIcon extends WuhuBase {
} }
// 翻译 // 翻译
setting_list.push({ list.push({
domType: 'plain', domType: 'plain',
domId: '', domId: '',
domHTML: '翻译', domHTML: '翻译',
tagName: 'h4', tagName: 'h4',
}); });
// 开启翻译 // 开启翻译
setting_list.push({ list.push({
domType: 'checkbox', domType: 'checkbox',
domId: 'wh-trans-enable', domId: 'wh-trans-enable',
domText: ' 开启翻译', domText: ' 开启翻译',
@ -829,7 +822,7 @@ export default class ZhongIcon extends WuhuBase {
isHide: true, isHide: true,
}); });
// 更新翻译词库 // 更新翻译词库
setting_list.push({ list.push({
domType: 'button', domType: 'button',
domId: '', domId: '',
domText: '更新翻译词库', domText: '更新翻译词库',
@ -837,14 +830,14 @@ export default class ZhongIcon extends WuhuBase {
}); });
// 战斗优化 // 战斗优化
setting_list.push({ list.push({
domType: 'plain', domType: 'plain',
domId: '', domId: '',
domHTML: '战斗优化', domHTML: '战斗优化',
tagName: 'h4', tagName: 'h4',
}); });
// 光速拔刀 // 光速拔刀
setting_list.push({ list.push({
domType: 'select', domType: 'select',
domId: 'wh-quick-attack-index', domId: 'wh-quick-attack-index',
domText: '光速拔刀 ', domText: '光速拔刀 ',
@ -883,7 +876,7 @@ export default class ZhongIcon extends WuhuBase {
tip: '将Start Fight按钮移动到指定格子上', tip: '将Start Fight按钮移动到指定格子上',
}); });
// 光速跑路 // 光速跑路
setting_list.push({ list.push({
domType: 'select', domType: 'select',
domId: 'wh-quick-mug', domId: 'wh-quick-mug',
domText: '光速跑路 ', domText: '光速跑路 ',
@ -910,7 +903,7 @@ export default class ZhongIcon extends WuhuBase {
tip: '将结束后指定按钮移动到上面指定的格子上', tip: '将结束后指定按钮移动到上面指定的格子上',
}); });
// 攻击链接转跳 // 攻击链接转跳
setting_list.push({ list.push({
domType: 'checkbox', domType: 'checkbox',
domId: 'wh-attack-relocate', domId: 'wh-attack-relocate',
domText: ' 真·攻击界面转跳', domText: ' 真·攻击界面转跳',
@ -920,14 +913,14 @@ export default class ZhongIcon extends WuhuBase {
}); });
// 飞行 // 飞行
setting_list.push({ list.push({
domType: 'plain', domType: 'plain',
domId: '', domId: '',
domHTML: '飞行', domHTML: '飞行',
tagName: 'h4', tagName: 'h4',
}); });
// 起飞警告 // 起飞警告
setting_list.push({ list.push({
domType: 'checkbox', domType: 'checkbox',
domId: 'wh-energy-alert', domId: 'wh-energy-alert',
domText: ' 起飞爆E警告', domText: ' 起飞爆E警告',
@ -936,7 +929,7 @@ export default class ZhongIcon extends WuhuBase {
isHide: true, isHide: true,
}); });
// 飞行闹钟 // 飞行闹钟
setting_list.push({ list.push({
domType: 'checkbox', domType: 'checkbox',
domId: 'wh-trv-alarm-check', domId: 'wh-trv-alarm-check',
domText: ' 飞行闹钟', domText: ' 飞行闹钟',
@ -945,7 +938,7 @@ export default class ZhongIcon extends WuhuBase {
isHide: true, isHide: true,
}); });
// 海外警告 // 海外警告
setting_list.push({ list.push({
domType: 'checkbox', domType: 'checkbox',
domId: '', domId: '',
domText: ' 海外警告', domText: ' 海外警告',
@ -953,17 +946,17 @@ export default class ZhongIcon extends WuhuBase {
tip: '海外落地后每30秒通知警告', tip: '海外落地后每30秒通知警告',
}); });
// 落地转跳 // 落地转跳
setting_list.push({ domType: 'button', domId: '', domText: '落地转跳', clickFunc: landedRedirect }); list.push({ domType: 'button', domId: '', domText: '落地转跳', clickFunc: landedRedirect });
// 公司 // 公司
setting_list.push({ list.push({
domType: 'plain', domType: 'plain',
domId: '', domId: '',
domHTML: '公司', domHTML: '公司',
tagName: 'h4', tagName: 'h4',
}); });
// 浮动存钱框 // 浮动存钱框
setting_list.push({ list.push({
domType: 'checkbox', domType: 'checkbox',
domId: '', domId: '',
domText: ' 浮动存钱框', domText: ' 浮动存钱框',
@ -971,7 +964,7 @@ export default class ZhongIcon extends WuhuBase {
tip: '打开公司或帮派的存钱页面后存钱框将浮动显示', tip: '打开公司或帮派的存钱页面后存钱框将浮动显示',
}); });
// 公司转跳存钱 // 公司转跳存钱
setting_list.push({ list.push({
domType: 'checkbox', domType: 'checkbox',
domId: '', domId: '',
domText: ' 公司转跳存钱', domText: ' 公司转跳存钱',
@ -979,7 +972,7 @@ export default class ZhongIcon extends WuhuBase {
tip: '打开公司页面时自动打开存钱选项卡', tip: '打开公司页面时自动打开存钱选项卡',
}); });
// 收起公司冰蛙效率表 // 收起公司冰蛙效率表
setting_list.push({ list.push({
domType: 'checkbox', domType: 'checkbox',
domId: '', domId: '',
domText: ' 收起公司冰蛙效率表', domText: ' 收起公司冰蛙效率表',
@ -987,7 +980,7 @@ export default class ZhongIcon extends WuhuBase {
tip: '开启后可手动显示隐藏冰蛙公司表格', tip: '开启后可手动显示隐藏冰蛙公司表格',
}); });
// 任何位置一键存钱 // 任何位置一键存钱
setting_list.push({ list.push({
domType: 'checkbox', domType: 'checkbox',
domId: '', domId: '',
domText: ' 任何位置一键存钱', domText: ' 任何位置一键存钱',
@ -996,14 +989,14 @@ export default class ZhongIcon extends WuhuBase {
}); });
// 啤酒 // 啤酒
setting_list.push({ list.push({
domType: 'plain', domType: 'plain',
domId: '', domId: '',
domHTML: '啤酒', domHTML: '啤酒',
tagName: 'h4', tagName: 'h4',
}); });
// 啤酒提醒 // 啤酒提醒
setting_list.push({ list.push({
domType: 'checkbox', domType: 'checkbox',
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>',
@ -1015,7 +1008,7 @@ export default class ZhongIcon extends WuhuBase {
}, },
}); });
// 啤酒提醒状态 // 啤酒提醒状态
setting_list.push({ list.push({
domType: 'button', domType: 'button',
domId: '', domId: '',
domText: '啤酒提醒状态', domText: '啤酒提醒状态',
@ -1024,7 +1017,7 @@ export default class ZhongIcon extends WuhuBase {
} }
}); });
// 啤酒提醒时间 // 啤酒提醒时间
setting_list.push({ list.push({
domType: 'button', domType: 'button',
domId: '', domId: '',
domText: '啤酒提醒时间设定', domText: '啤酒提醒时间设定',
@ -1051,14 +1044,14 @@ export default class ZhongIcon extends WuhuBase {
}); });
// 其他 // 其他
setting_list.push({ list.push({
domType: 'plain', domType: 'plain',
domId: '', domId: '',
domHTML: '其他', domHTML: '其他',
tagName: 'h4', tagName: 'h4',
}); });
// 任务助手 // 任务助手
setting_list.push({ list.push({
domType: 'checkbox', domType: 'checkbox',
domId: 'wh-mission-lint', domId: 'wh-mission-lint',
domText: ' 任务助手', domText: ' 任务助手',
@ -1067,7 +1060,7 @@ export default class ZhongIcon extends WuhuBase {
isHide: true, isHide: true,
}); });
// 捡垃圾助手 // 捡垃圾助手
setting_list.push({ list.push({
domType: 'checkbox', domType: 'checkbox',
domId: 'wh-city-finder', domId: 'wh-city-finder',
domText: ' 捡垃圾助手', domText: ' 捡垃圾助手',
@ -1076,7 +1069,7 @@ export default class ZhongIcon extends WuhuBase {
isHide: true, isHide: true,
}); });
// 快速crime // 快速crime
setting_list.push({ list.push({
domType: 'checkbox', domType: 'checkbox',
domId: 'wh-quick-crime', domId: 'wh-quick-crime',
domText: ' 快速犯罪', domText: ' 快速犯罪',
@ -1085,7 +1078,7 @@ export default class ZhongIcon extends WuhuBase {
isHide: true, isHide: true,
}); });
// 叠E保护 // 叠E保护
setting_list.push({ list.push({
domType: 'checkbox', domType: 'checkbox',
domId: 'wh-SEProtect-check', domId: 'wh-SEProtect-check',
domText: ' 叠E保护', domText: ' 叠E保护',
@ -1094,7 +1087,7 @@ export default class ZhongIcon extends WuhuBase {
isHide: true, isHide: true,
}); });
// PT一键购买 // PT一键购买
setting_list.push({ list.push({
domType: 'checkbox', domType: 'checkbox',
domId: 'wh-ptQuickBuy-check', domId: 'wh-ptQuickBuy-check',
domText: ' PT一键购买', domText: ' PT一键购买',
@ -1103,7 +1096,7 @@ export default class ZhongIcon extends WuhuBase {
isHide: true, isHide: true,
}); });
// 4条转跳 // 4条转跳
setting_list.push({ list.push({
domType: 'checkbox', domType: 'checkbox',
domId: '', domId: '',
domText: ' 4条转跳', domText: ' 4条转跳',
@ -1111,7 +1104,7 @@ export default class ZhongIcon extends WuhuBase {
tip: '点击4条时转跳对应页面', tip: '点击4条时转跳对应页面',
}); });
// 清除多余的脚本 // 清除多余的脚本
setting_list.push({ list.push({
domType: 'checkbox', domType: 'checkbox',
domId: '', domId: '',
domText: ' 清除多余的脚本', domText: ' 清除多余的脚本',
@ -1121,7 +1114,7 @@ export default class ZhongIcon extends WuhuBase {
// 危险行为⚠️ // 危险行为⚠️
if (WuhuConfig.get('dangerZone') === true) { if (WuhuConfig.get('dangerZone') === true) {
// 攻击界面自刷新 // 攻击界面自刷新
setting_list.push({ list.push({
domType: 'select', domType: 'select',
domId: 'wh-attack-reload', domId: 'wh-attack-reload',
domText: '⚠️攻击界面自动刷新 ', domText: '⚠️攻击界面自动刷新 ',
@ -1160,7 +1153,7 @@ export default class ZhongIcon extends WuhuBase {
tip: '危险功能:接机时常用,将自动刷新页面直到目标落地', tip: '危险功能:接机时常用,将自动刷新页面直到目标落地',
}); });
// 自动开打和结束 // 自动开打和结束
setting_list.push({ list.push({
domType: 'checkbox', domType: 'checkbox',
domId: 'wh-auto-start-finish', domId: 'wh-auto-start-finish',
domText: ' ⚠️自动开打和结束', domText: ' ⚠️自动开打和结束',
@ -1173,7 +1166,7 @@ export default class ZhongIcon extends WuhuBase {
WuhuConfig.set('attReload', 6) WuhuConfig.set('attReload', 6)
} }
// dev // dev
setting_list.push({ list.push({
domType: 'checkbox', domType: 'checkbox',
domId: 'wh-dev-mode', domId: 'wh-dev-mode',
domText: ` 开发者模式${ Log.debug() ? ' <button id="wh-devInfo">详情</button>' : '' }`, domText: ` 开发者模式${ Log.debug() ? ' <button id="wh-devInfo">详情</button>' : '' }`,
@ -1181,7 +1174,7 @@ export default class ZhongIcon extends WuhuBase {
isHide: true, isHide: true,
}); });
// 查看logs // 查看logs
setting_list.push({ list.push({
domType: 'button', domType: 'button',
domId: null, domId: null,
domText: '查看日志', domText: '查看日志',
@ -1194,7 +1187,7 @@ export default class ZhongIcon extends WuhuBase {
} }
}); });
// 更多设定 // 更多设定
if (Log.debug()) setting_list.push({ if (Log.debug()) list.push({
domType: 'button', domId: 'wh-otherBtn', domText: '更多设定', domType: 'button', domId: 'wh-otherBtn', domText: '更多设定',
clickFunc: () => { clickFunc: () => {
new Popup(`清空设置数据、请求通知权限、测试跨域请求`, '更多设定'); new Popup(`清空设置数据、请求通知权限、测试跨域请求`, '更多设定');
@ -1202,12 +1195,12 @@ export default class ZhongIcon extends WuhuBase {
isHide: true, isHide: true,
}); });
this.settingItemList = setting_list; this.settingItemList = list;
return setting_list; return this;
} }
// 默认设置 // 默认设置
private setDefaultSettings(): void { private setDefaultSettings(): ZhongIcon {
Log.info('设置默认值开始'); Log.info('设置默认值开始');
let count = 0; let count = 0;
[ [
@ -1275,6 +1268,7 @@ export default class ZhongIcon extends WuhuBase {
} }
}); });
Log.info('设置默认值结束,新:' + count); Log.info('设置默认值结束,新:' + count);
return this;
} }
} }

View File

@ -0,0 +1,65 @@
import WuhuBase from "../WuhuBase";
import TornStyleBlock from "../utils/TornStyleBlock";
import WuhuConfig from "../WuhuConfig";
import Alert from "../utils/Alert";
import TornStyleSwitch from "../utils/TornStyleSwitch";
export default class PTHelper extends WuhuBase {
private readonly observer;
private readonly usersPointSell;
constructor() {
super();
this.observer = new MutationObserver(e => {
for (const t of e) {
t.addedNodes.forEach(e => 'LI' === (e as HTMLElement).tagName && this.removeConfirm(e))
}
});
this.usersPointSell = document.querySelector('.users-point-sell');
let block = new TornStyleBlock('PT一键购买').insert2Dom();
let switcher = new TornStyleSwitch('开启');
block.append(switcher.getBase());
let toggle = switcher.getInput();
toggle.checked = WuhuConfig.get('ptQuickBuy');
if (toggle.checked) {
new Alert('一键购买已开启');
for (const index in this.usersPointSell.children) {
'LI' === this.usersPointSell.children[index].tagName && this.removeConfirm(this.usersPointSell.children[index])
}
this.observer.observe(this.usersPointSell, { childList: true })
}
toggle.addEventListener('change', () => {
WuhuConfig.set('ptQuickBuy', toggle.checked, false);
if (toggle.checked) {
for (const index in this.usersPointSell.children) {
'LI' === this.usersPointSell.children[index].tagName && this.removeConfirm(this.usersPointSell.children[index])
}
this.observer.observe(this.usersPointSell, { childList: true });
new Alert('一键购买已开启');
} else {
for (const index in this.usersPointSell.children) {
'LI' === this.usersPointSell.children[index].tagName && this.rollbackConfirm(this.usersPointSell.children[index])
}
this.observer.disconnect();
new Alert('一键购买已关闭');
}
});
}
private removeConfirm(elem): void {
let el = elem.firstElementChild;
el.classList.add('yes');
let old_href = el.getAttribute('href');
let new_href = old_href.replace(/=buy/, '=buy1').replace(/&points=\d{1,9}$/, '');
el.setAttribute('href', new_href);
}
private rollbackConfirm(elem): void {
let el = elem.firstElementChild;
el.classList.remove('yes');
let old_href = el.getAttribute('href');
let new_href = old_href.replace(/=buy1/, '=buy');
el.setAttribute('href', new_href);
}
}

View File

@ -0,0 +1,23 @@
import WuhuBase from "../WuhuBase";
import TornStyleBlock from "../utils/TornStyleBlock";
import WuhuConfig from "../WuhuConfig";
import TornStyleSwitch from "../utils/TornStyleSwitch";
export default class StackHelper extends WuhuBase {
constructor() {
super();
let block = new TornStyleBlock('叠E保护').insert2Dom();
let switcher = new TornStyleSwitch('启用');
let input = switcher.getInput();
block.append(switcher.getBase());
input.checked = WuhuConfig.get('SEProtect');
if (input.checked) document.body.classList.add('wh-gym-stack');
// 绑定点击事件
input.onchange = e => {
let target = e.target as HTMLInputElement;
document.body.classList.toggle('wh-gym-stack');
WuhuConfig.set('SEProtect', target.checked, true);
};
}
}

View File

@ -28,6 +28,9 @@ export default class Popup extends WuhuBase {
this.showChat(); this.showChat();
} }
/**
* @return {HTMLElement} id=wh-popup-cont
*/
public getElement(): HTMLElement { public getElement(): HTMLElement {
return this.node; return this.node;
} }

View File

@ -0,0 +1,22 @@
import MathUtils from "./MathUtils";
export default class TornStyleSwitch {
private readonly baseElement;
private readonly randomId;
constructor(label: string) {
this.randomId = MathUtils.getInstance().getRandomInt(0, 100)
this.baseElement = document.createElement('span');
this.baseElement.id = 'WHSwitch' + this.randomId;
this.baseElement.innerHTML = `<input class="checkbox-css" type="checkbox" name="searchConditionNot" id="WHCheck${ this.randomId }">
<label for="WHCheck${ this.randomId }" class="non-selection marker-css search-condition-not">${ label }</label>`;
}
public getBase() {
return this.baseElement
};
public getInput(): HTMLInputElement {
return this.baseElement.querySelector('input');
}
}

View File

@ -1,9 +1,13 @@
import WuhuBase from "../class/WuhuBase"; import WuhuBase from "../class/WuhuBase";
import Log from "../class/Log"; import Log from "../class/Log";
import Popup from "../class/utils/Popup";
import TornStyleSwitch from "../class/utils/TornStyleSwitch";
export default class Test extends WuhuBase { export default class Test extends WuhuBase {
public test(): void { public test(): void {
Log.info(Test.getPool()); let popup = new Popup('test');
popup.getElement()['__POOL__'] = Test.getPool();
popup.getElement().append(new TornStyleSwitch('123').getBase());
// this.case2() // this.case2()
// this.case3(); // this.case3();