This commit is contained in:
Liwanyi 2024-01-08 11:11:09 +08:00
parent 773332f406
commit 5ec20fa327
5 changed files with 134 additions and 108 deletions

View File

@ -5,6 +5,15 @@
# CHANGE
## 1.1.6
2024年01月08日
### 修改
- refill功能改为菜单式新增支持3种refil
- 快速犯罪功能现已支持全部种类
## 1.1.5
2023年12月22日

View File

@ -1,6 +1,6 @@
{
"name": "wuhu-torn-helper",
"version": "1.1.5",
"version": "1.1.6",
"description": "芜湖助手",
"scripts": {
"release": "cross-env NODE_ENV=production rollup -c && node build.mjs",

File diff suppressed because one or more lines are too long

View File

@ -3,14 +3,14 @@
<el-button-group class="wh-menu-button" style="z-index: 1000000;">
<el-button circle @click="expanded = !expanded">
<el-icon>
<MoonNight/>
<MoonNight />
</el-icon>
</el-button>
<el-button v-for="item in globVars.buttons" @click="item.func">{{ item.txt }}</el-button>
<el-button v-if="editableTabs.length > 0" circle @click="showDrawer">
<el-badge :value="editableTabs.length" type="primary">
<el-icon>
<CopyDocument/>
<CopyDocument />
</el-icon>
</el-badge>
</el-button>
@ -18,12 +18,12 @@
<el-dialog v-model="drawer" :fullscreen="isMobilePhone" :lock-scroll="true" width="65%">
<el-tabs v-model="editableTabsValue" closable style="margin-top: -1em" type="border-card" @tab-remove="removeTab">
<el-tab-pane v-for="item in editableTabs" :key="item.name" :label="item.title" :name="item.name">
<component :is="item.content"/>
<component :is="item.content" />
</el-tab-pane>
</el-tabs>
</el-dialog>
<el-drawer v-model="expanded" :show-close="false" :size="isMobilePhone ? '85%' : '30%'" class="whDrawer"
:with-header="false" direction="rtl">
:with-header="false" direction="rtl">
<el-card :body-style="{ 'padding': '0' }" class="innerCard" style="margin-bottom: 0.5em">
<template #header>
<div>快捷动作</div>
@ -64,20 +64,18 @@
<el-menu-item @click="quickGymTrain.doTrain(BATTLE_STAT.DEX)">闪避 DEX
</el-menu-item>
</el-sub-menu>
<!-- <el-sub-menu index="3">-->
<!-- <template #title>-->
<!-- <el-icon>🪓</el-icon>-->
<!-- <span>老功能</span>-->
<!-- </template>-->
<!-- <el-menu-item index="3-1" @click="_adHelper">📜 传单助手</el-menu-item>-->
<!-- <el-menu-item index="3-2" @click="_safeKeeper">🛡 守望者</el-menu-item>-->
<!-- <el-menu-item index="3-3" @click="MUZHUANG">🌲 寻找木桩</el-menu-item>-->
<!--&lt;!&ndash; <el-menu-item index="3-4" @click="_setting"> 助手设置</el-menu-item>&ndash;&gt;-->
<!-- </el-sub-menu>-->
<!-- <el-menu-item v-for="(item, i) in menuItemList" :index="(4 + i).toString()" @click="menuClick(item)">-->
<!-- <el-icon>{{ item.title.slice(0, 2) }}</el-icon>-->
<!-- <span>{{ item.title.slice(2, item.title.length) }}</span>-->
<!-- </el-menu-item>-->
<el-sub-menu index="3">
<template #title>
<el-icon></el-icon>
<span>REFILL</span>
</template>
<el-menu-item @click="handleRefil('energyrefill2')">能量E
</el-menu-item>
<el-menu-item @click="handleRefil('nerverefill2')">犯罪N
</el-menu-item>
<el-menu-item @click="handleRefil('casinotokens2')">赌场代币
</el-menu-item>
</el-sub-menu>
</el-menu>
</el-card>
<el-card :body-style="{ 'padding': '4px' }" class="innerCard">
@ -87,7 +85,6 @@
<el-row style="display: flex;">
<el-col v-for="item in menuItemList" class="featureCol">
<el-card :body-class="'featureMenuBody'" class="featureMenu" shadow="never" @click="menuClick(item)">
<!-- <el-card class="featureMenu" @click="menuClick(item)" :body-style="{'padding': '0' }">-->
<div>
<el-icon class="icon">{{ item.title.slice(0, 2) }}</el-icon>
</div>
@ -104,13 +101,13 @@
<el-tooltip content="更新?" placement="bottom-start">
<el-button link @click="menuClick({ title: '关于助手', template: UpdateDate })">芜湖助手
<el-icon>
<Refresh/>
<Refresh />
</el-icon>
</el-button>
</el-tooltip>
<el-tag size="small" type="info">{{
globVars.version.startsWith('$') ? 'dev' : 'v' + globVars.version
}}
globVars.version.startsWith('$') ? 'dev' : 'v' + globVars.version
}}
</el-tag>
</el-col>
</el-row>
@ -131,8 +128,6 @@
</div>
</el-drawer>
</el-config-provider>
<!-- <div id="wh123">{{ sessionObject }}</div>-->
<!-- <div id="wh1234">{{ session }}</div>-->
</template>
<script lang="ts" setup>
@ -147,22 +142,22 @@ import SettingsHandler from "../ts/class/handler/SettingsHandler"
import { BATTLE_STAT } from "../ts/class/utils/NetHighLvlWrapper"
import adHelper from "../ts/func/module/adHelper"
import safeKeeper from "../ts/func/module/safeKeeper"
import getSidebarData from "../ts/func/utils/getSidebarData"
import useItem from "../ts/func/utils/useItem"
import globVars from "../ts/globVars"
import AutoLoginForm from "./AutoLoginForm.vue"
import ChangeLogView from "./ChangeLogView.vue"
import CityUItems from "./CityUItems.vue"
import CompanyWithdraw from "./CompanyWithdraw.vue"
import EventsViewer from "./EventsViewer.vue"
import ForeignStock from "./ForeignStock.vue"
import InventoryView from "./InventoryView.vue"
import MarketHelper from "./MarketHelper.vue"
import MonitorMgrView from "./MonitorMgrView.vue"
import PTMarketView from "./PTMarketView.vue"
import QuickCrime from "./QuickCrime.vue"
import UpdateDate from "./UpdateScript.vue"
import VirusProgramming from "./VirusProgramming.vue"
import getSidebarData from "../ts/func/utils/getSidebarData"
import MonitorMgrView from "./MonitorMgrView.vue"
import ChangeLogView from "./ChangeLogView.vue"
const logger = inject(LoggerKey)
const quickGymTrain = inject(QuickGymTrainKey)
@ -189,32 +184,32 @@ const menuItemList: MenuItem[] = [
ElMessage({ message: 'N: ' + nerve + ', CD: ' + cd + 'h', showClose: true })
},
},
{
title: '♻️ REFILL',
handler: () => fetch(window.addRFC("https://www.torn.com/points.php?step=pointsbuy&action=energyrefill2"), {
"headers": {
"accept": "text/plain, */*; q=0.01",
"sec-ch-ua-mobile": "?0",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-origin",
"x-requested-with": "XMLHttpRequest"
},
"referrer": "https://www.torn.com/points.php",
"referrerPolicy": "strict-origin-when-cross-origin",
"body": null,
"method": "GET",
"mode": "cors",
"credentials": "include"
})
.then(res => res.json())
.then(res => ElMessage({
message: `<p>${ res.msg }</p><p>剩余refill: ${ res["refills"] }</p>`,
type: res.state === 'done' ? 'success' : 'error',
dangerouslyUseHTMLString: true
}))
.catch(e => ElMessage.error(e.toString)),
},
// {
// title: ' REFILL',
// handler: () => fetch(window.addRFC("https://www.torn.com/points.php?step=pointsbuy&action=energyrefill2"), {
// "headers": {
// "accept": "text/plain, */*; q=0.01",
// "sec-ch-ua-mobile": "?0",
// "sec-fetch-dest": "empty",
// "sec-fetch-mode": "cors",
// "sec-fetch-site": "same-origin",
// "x-requested-with": "XMLHttpRequest"
// },
// "referrer": "https://www.torn.com/points.php",
// "referrerPolicy": "strict-origin-when-cross-origin",
// "body": null,
// "method": "GET",
// "mode": "cors",
// "credentials": "include"
// })
// .then(res => res.json())
// .then(res => ElMessage({
// message: `<p>${ res.msg }</p><p>refill: ${ res["refills"] }</p>`,
// type: res.state === 'done' ? 'success' : 'error',
// dangerouslyUseHTMLString: true
// }))
// .catch(e => ElMessage.error(e.toString)),
// },
{
title: '🚓 快速犯罪',
template: QuickCrime,
@ -303,6 +298,33 @@ const _globVars = ref(globVars)
const editableTabsValue = ref('')
const editableTabs = shallowRef([])
// refil
const handleRefil = (method: 'nerverefill2' | 'energyrefill2' | 'casinotokens2') => {
fetch(window.addRFC('https://www.torn.com/points.php?step=pointsbuy&action=' + method), {
"headers": {
"accept": "text/plain, */*; q=0.01",
"sec-ch-ua-mobile": "?0",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-origin",
"x-requested-with": "XMLHttpRequest"
},
"referrer": "https://www.torn.com/points.php",
"referrerPolicy": "strict-origin-when-cross-origin",
"body": null,
"method": "GET",
"mode": "cors",
"credentials": "include"
})
.then(res => res.json())
.then(res => ElMessage({
message: `<p>${res.msg}</p><p>剩余次数: ${res["refills"]}</p>`,
type: res.state === 'done' ? 'success' : 'error',
dangerouslyUseHTMLString: true
}))
.catch(e => ElMessage.error(e.toString))
}
// fast travel
const travelData = [
{ cName: "🇲🇽 墨西哥", index: 0 },
@ -387,25 +409,25 @@ const travelConfirm = (destIndex: number, typeIndex: number) => {
const destName = travelData[destIndex].cName;
const typeName = ['普通飞机', 'PI飞机', '股票飞机', '商务飞机(机票或内衣店)'][typeIndex];
ElMessageBox.confirm(
'即将使用「' + typeName + '」飞往「' + destName + '」',
'确认',
{
'即将使用「' + typeName + '」飞往「' + destName + '」',
'确认',
{
confirmButtonText: '好',
cancelButtonText: '算了',
type: 'info',
}
)
.then(async () => {
await quickFlyBtnHandler.directFly(destIndex, typeIndex);
ElMessageBox.confirm('是否转跳页面?', '确认', {
confirmButtonText: '好',
cancelButtonText: '算了',
type: 'info',
type: 'info'
}
)
.then(async () => {
await quickFlyBtnHandler.directFly(destIndex, typeIndex);
ElMessageBox.confirm('是否转跳页面?', '确认', {
confirmButtonText: '好',
cancelButtonText: '算了',
type: 'info'
}
).then(() => window.location.href = 'https://www.torn.com')
.catch(() => null);
})
.catch(() => null);
).then(() => window.location.href = 'https://www.torn.com')
.catch(() => null);
})
.catch(() => null);
};
const bazaarControl = {
@ -415,23 +437,23 @@ const bazaarControl = {
let response;
try {
response = await (await fetch(
"https://www.torn.com/bazaar.php?sid=bazaarData&step=" + (isClose ? "closeBazaar" : "openBazaar"),
{
"headers": {
"accept": "*/*",
"sec-ch-ua-mobile": "?0",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-origin",
"x-requested-with": "XMLHttpRequest"
},
"referrer": "https://www.torn.com/bazaar.php",
"referrerPolicy": "strict-origin-when-cross-origin",
"body": null,
"method": "GET",
"mode": "cors",
"credentials": "include"
}
"https://www.torn.com/bazaar.php?sid=bazaarData&step=" + (isClose ? "closeBazaar" : "openBazaar"),
{
"headers": {
"accept": "*/*",
"sec-ch-ua-mobile": "?0",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-origin",
"x-requested-with": "XMLHttpRequest"
},
"referrer": "https://www.torn.com/bazaar.php",
"referrerPolicy": "strict-origin-when-cross-origin",
"body": null,
"method": "GET",
"mode": "cors",
"credentials": "include"
}
)).json();
} catch (e) {
logger.error(e.stack);
@ -468,14 +490,6 @@ onMounted(() => {
documentHeight.value = document.documentElement.scrollHeight;
});
// watch(_globVars, (_globVars, pre) => {
// logger.info({ _globVars, pre })
// _buttons.value = []
// let keys = Object(globVars.buttons).keys()
// for (let i = 0; i < keys.length; i++) {
// _buttons.value.push(globVars.buttons[keys[i]])
// }
// }, { deep: true })
</script>
<style scoped>

View File

@ -1,9 +1,11 @@
<template>
<el-space direction="vertical">
<el-row>
<el-button @click="doCrime(11, 'warehouse')">烧仓库</el-button>
<el-button @click="doCrime(15, 'napcop')">做15-3</el-button>
<el-button @click="doCrime(18, 'hackbank')">做18-1</el-button>
<el-button-group>
<el-button @click="doCrime(11, 'warehouse')">烧仓库</el-button>
<el-button @click="doCrime(15, 'napcop')">做15-3</el-button>
<el-button @click="doCrime(18, 'hackbank')">做18-1</el-button>
</el-button-group>
</el-row>
<el-row>
<el-cascader :options="CrimeData" :show-all-levels="false" clearable v-model="crimeSelected" placeholder="选择其他" />
@ -16,11 +18,11 @@
</template>
<script lang="ts" setup>
import { inject, ref } from 'vue';
import { Coffee } from "@element-plus/icons-vue";
import { ElMessage } from "element-plus";
import { inject, ref } from 'vue';
import { LoggerKey } from "../ts/class/Logger";
import { CrimeData } from "./data/CrimeData"
import { Coffee } from "@element-plus/icons-vue"
import { CrimeData } from "./data/CrimeData";
const logger = inject(LoggerKey);
const results = ref("");