Script Archived
This script has been archived by the author. The script may be no longer functional, and the author no longer maintains it. You cannot provide feedback for this script.
// ==UserScript==
// @name 宝可梦点击(Poke Clicker)辅助脚本 [额外设定] Script
// @namespace PokeClickerHelper
// @version 0.1.7
// @description 在 开始菜单 => 设置 => 新增了一些额外设定的功能可自行开启!
// @author 苍猫
// @match https://www.pokeclicker.com
// @match https://g8hh.github.io/pokeclicker/
// @match https://pokeclicker.g8hh.com
// @match https://yx.g8hh.com/pokeclicker/
// @match https://dreamnya.github.io/pokeclicker/
// @icon data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAP8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/319hf99fYX/fX2F/319hf8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////////////////99fYX/fX2F/319hf8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////////////////wAAAP8AAAD/fX2F/319hf99fYX/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////8AAAD/AAAA/wAAAP99fYX/fX2F/wAAAP8AAAD/AAAA/319hf8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/HBT//xwU//8AAAD//////319hf8AAAD/Dgim/w4Ipv8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAD/HBT//xwU//8cFP//HBT//wAAAP8AAAD/Dgim/w4Ipv8OCKb/Dgim/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAA/xwU//8cFP//HBT//xwU/44cFP//HBT//xwU//8cFP//Dgim/w4Ipv8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/HBT//xwU/47/////HBT/jhwU//8cFP//HBT//w4Ipv8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/xwU//8cFP//HBT/jhwU//8OCKb/Dgim/w4Ipv8OCKb/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/xwU//8OCKb/Dgim/w4Ipv8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAPw/AADwDwAA4AcAAOAHAADAAwAAwAMAAMADAADAAwAA4AcAAOAHAADwDwAA/D8AAP//AAD//wAA//8AAA==
// @grant none
// @license MIT
// @run-at document-end
// ==/UserScript==
/* global App, $, PokeClickerHelper, GameConstants, player, PokemonShops:true, Shop, ItemList, MapHelper, TownList, EvolutionStone, pokeLeagueShop*/
if (typeof PokeClickerHelper == typeof void 0) {
alert('宝可梦点击(Poke Clicker)辅助脚本 [额外设定] Script加载失败\n\n未找到核心模块,需要先安装核心模块才可正常使用\n\n论坛主页:https://bbs.tampermonkey.net.cn/forum.php?mod=viewthread&tid=3842')
window.open("https://bbs.tampermonkey.net.cn/forum.php?mod=viewthread&tid=3842")
return
}
const NotifierBak = Notifier.notify;
// UI相关
PokeClickerHelper.UIScript.push(`
<tr>
<td class="p-2"><label class="m-0">客户端模式(勾选后请刷新页面):</label></td>
<td class="p-2"><input class="clickable" type="checkbox" id="PokeClickerHelperClientStatus" value="false"></td>
</tr>
<tr>
<td class="p-2"><label class="m-0">#宝可梦商店(便捷窗口新增额外的商店,售卖各种道具):</label></td>
<td class="p-2"><input class="clickable" type="checkbox" id="PokeClickerHelperPokeShopStatus" value="false"></td>
</tr>
<tr>
<td class="p-2">宝可梦商店区域设置(售卖当前或全部区域物品 => 带有#符号的功能有效):</td>
<td class="p-0">
<select class="form-control" id="PokeClickerHelperSettingRegionStatus">
<option value="0">当前区域</option>
<option value="1">最高区域</option>
</select>
</td>
</tr>
<tr>
<td class="p-2"><label class="m-0">交易中心(便捷窗口新增额外的功能 => 浆果大师/#交易中心/宝石大师):</label></td>
<td class="p-2"><input class="clickable" type="checkbox" id="PokeClickerHelperTradingCenterStatus"></td>
</tr>
<tr>
<td class="p-2"><label class="m-0">人才市场(便捷窗口新增额外的商店,招聘人才! => 需要每次单独开启):</label></td>
<td class="p-2"><input class="clickable" type="checkbox" id="PokeClickerHelperTalentMarketStatus"></td>
</tr>
<tr>
<td class="p-2"><label class="m-0">码头(地图窗口新增码头按钮,可快速旅行):</label></td>
<td class="p-2"><input class="clickable" type="checkbox" id="PokeClickerHelperWharfStatus" value="false"></td>
</tr>
<tr>
<td class="p-2"><label class="m-0">隐藏道路宝可梦信息(图片/名称/血量/击败等相关动画,关闭后切换区域可恢复):</label></td>
<td class="p-2"><input class="clickable" type="checkbox" id="PokeClickerHelperHideWildPokemonStatus" value="false"></td>
</tr>
<tr>
<td class="p-2"><label class="m-0">自动对战开拓区(快速秒杀过层/重复自动挑战):</label></td>
<td class="p-2"><input class="clickable" type="checkbox" id="PokeClickerHelperBattleFrontierStatus" value="false"></td>
</tr>
<tr>
<td class="p-2"><label class="m-0">*对战开拓区结算退出(可中途结算奖励退出) *影响游戏体验,请谨慎开启*:</label></td>
<td class="p-2"><input class="clickable" type="checkbox" id="PokeClickerHelperBattleFrontierQuitStatus" value="false"></td>
</tr>
<tr>
<td class="p-2"><label class="m-0">屏蔽所有通知(你将收不到任何提示信息):</label></td>
<td class="p-2"><input class="clickable" type="checkbox" id="PokeClickerHelperCloseNotifierStatus" value="false"></td>
</tr>
<tr>
<td class="p-2"><label class="m-0">便捷兑换Discord宝可梦(在菜单->保存里可以看到该功能):</label></td>
<td class="p-2"><input class="clickable" type="checkbox" id="PokeClickerHelperDiscordPokemonStatus" value="false"></td>
</tr>
<tr>
<td class="p-2"><label class="m-0">删除非法的宝可梦(用于存档里有MissingNo的宝可梦的时候进行删除):</label></td>
<td class="p-2"><input class="clickable" type="button" id="PokeClickerHelperDeleteMissingNo" value="Delete"></td>
</tr>
`)
// 初始化后加载功能 客户端模式
JSON.parse(PokeClickerHelper.get('ClientStatus', 'false')) ? App.isUsingClient = true : App.isUsingClient = false
let fuc = () => {
// 初始化
ScriptSetting.initialize('ClientStatus', '#PokeClickerHelperClientStatus')//客户端模式
ScriptSetting.initialize('PokeShopStatus', '#PokeClickerHelperPokeShopStatus')//宝可梦商店
ScriptSetting.initialize('SettingRegionStatus', '#PokeClickerHelperSettingRegionStatus', 'select')//宝可梦商店区域设置
ScriptSetting.initialize('WharfStatus', '#PokeClickerHelperWharfStatus')//码头
ScriptSetting.initialize('HideWildPokemonStatus', '#PokeClickerHelperHideWildPokemonStatus')//隐藏道路宝可梦信息
ScriptSetting.initialize('BattleFrontierStatus', '#PokeClickerHelperBattleFrontierStatus')//自动对战开拓区
ScriptSetting.initialize('BattleFrontierQuitStatus', '#PokeClickerHelperBattleFrontierQuitStatus')//*对战开拓区(中途结算退出)
ScriptSetting.initialize('CloseNotifierStatus', '#PokeClickerHelperCloseNotifierStatus')//屏蔽所有通知
ScriptSetting.initialize('TradingCenterStatus', '#PokeClickerHelperTradingCenterStatus')//浆果大师/交易中心/宝石大师
ScriptSetting.initialize('DiscordPokemonStatus', '#PokeClickerHelperDiscordPokemonStatus')//便捷兑换Discord宝可梦
$('#PokeClickerHelperDeleteMissingNo').click(ScriptSetting.DeleteMissingNo)//删除非法的宝可梦
// 初始化商店数据
ConvenientStore.initialize()//宝可梦商店
TalentMarket.initialize()//人才市场
ScriptSetting.HighestRegion = player.highestRegion();//初始化记录玩家最高区域 用于生成最高区域商店总物品
ConvenientStore.getHeadOfficeItem()//首次获取最高区域的商店物品
TradingCenter.initialize()//浆果大师和交易中心
TradingCenter.getHeadOffice()//生成最高区域交易中心
// 初始化后加载功能
if (JSON.parse(PokeClickerHelper.get('PokeShopStatus', 'false'))) ConvenientStore.LoadFunction()//宝可梦商店
if (JSON.parse(PokeClickerHelper.get('WharfStatus', 'false'))) ScriptSetting.LoadWharf()//码头
if (JSON.parse(PokeClickerHelper.get('HideWildPokemonStatus', 'false'))) PokeClickerHelper.hookGameTickList.add(ScriptSetting.HideWildPokemon)//隐藏道路宝可梦信息
if (JSON.parse(PokeClickerHelper.get('BattleFrontierStatus', 'false'))) PokeClickerHelper.hookGameTickList.add(BattleFrontier.AutoBattle)//自动对战开拓区
if (JSON.parse(PokeClickerHelper.get('BattleFrontierQuitStatus', 'false'))) PokeClickerHelper.hookGameTickList.add(BattleFrontier.LoadQuit)//*对战开拓区(中途结算退出)
if (JSON.parse(PokeClickerHelper.get('CloseNotifierStatus', 'false'))) ScriptSetting.CloseNotifier('remove')//屏蔽所有通知
if (JSON.parse(PokeClickerHelper.get('TradingCenterStatus', 'false'))) ScriptSetting.LoadTradingCenter()//浆果大师和交易中心
if (JSON.parse(PokeClickerHelper.get('DiscordPokemonStatus', 'false'))) ScriptSetting.LoadDiscordPokemon()//便捷兑换Discord宝可梦
ScriptSetting.SettingRegionStatus = JSON.parse(PokeClickerHelper.get('SettingRegionStatus', '0'))//读取宝可梦商店区域设置
}
const listener = () => {
// 客户端模式 checkbox 监听
$('#PokeClickerHelperClientStatus').on('change', function () {
if (JSON.parse(PokeClickerHelper.get('ClientStatus', 'false'))) {
PokeClickerHelper.set('ClientStatus', 'false')
} else {
PokeClickerHelper.set('ClientStatus', 'true')
}
PokeClickerHelper.Notify({ title: '宝可梦点击(Poke Clicker)辅助脚本', message: "客户端模式设置成功,请重新刷新游戏!" });
})
// 宝可梦商店 checkbox 监听
$('#PokeClickerHelperPokeShopStatus').on('change', function () {
if (JSON.parse(PokeClickerHelper.get('PokeShopStatus', 'false'))) {
PokeClickerHelper.set('PokeShopStatus', 'false')
ConvenientStore.LoadFunction('remove')
} else {
PokeClickerHelper.set('PokeShopStatus', 'true')
ConvenientStore.LoadFunction()
}
})
// 浆果大师和交易中心 checkbox 监听
$('#PokeClickerHelperTradingCenterStatus').on('change', function () {
if (JSON.parse(PokeClickerHelper.get('TradingCenterStatus', 'false'))) {
PokeClickerHelper.set('TradingCenterStatus', 'false')
ScriptSetting.LoadTradingCenter('remove')
} else {
PokeClickerHelper.set('TradingCenterStatus', 'true')
ScriptSetting.LoadTradingCenter()
}
})
// 功能区域设置 select 监听
$('#PokeClickerHelperSettingRegionStatus').on('change', function () {
ScriptSetting.SettingRegionStatus = +this.value
PokeClickerHelper.set('SettingRegionStatus', ScriptSetting.SettingRegionStatus.toString())
})
// 人才市场 checkbox 监听
$('#PokeClickerHelperTalentMarketStatus').on('change', function () {
if (this.checked) {
TalentMarket.LoadFunction()
} else {
TalentMarket.LoadFunction('remove')
}
})
// 码头 checkbox 监听
$('#PokeClickerHelperWharfStatus').on('change', function () {
if (JSON.parse(PokeClickerHelper.get('WharfStatus', 'false'))) {
PokeClickerHelper.set('WharfStatus', 'false')
ScriptSetting.LoadWharf('remove')
} else {
PokeClickerHelper.set('WharfStatus', 'true')
ScriptSetting.LoadWharf()
}
})
// 隐藏道路宝可梦信息 checkbox 监听
$('#PokeClickerHelperHideWildPokemonStatus').on('change', function () {
if (JSON.parse(PokeClickerHelper.get('HideWildPokemonStatus', 'false'))) {
PokeClickerHelper.set('HideWildPokemonStatus', 'false')
PokeClickerHelper.hookGameTickList.delete(ScriptSetting.HideWildPokemon)
} else {
PokeClickerHelper.set('HideWildPokemonStatus', 'true')
PokeClickerHelper.hookGameTickList.add(ScriptSetting.HideWildPokemon)
}
})
// 屏蔽所有通知 checkbox 监听
$('#PokeClickerHelperCloseNotifierStatus').on('change', function () {
if (JSON.parse(PokeClickerHelper.get('CloseNotifierStatus', 'false'))) {
PokeClickerHelper.set('CloseNotifierStatus', 'false')
ScriptSetting.CloseNotifier('load')
} else {
PokeClickerHelper.set('CloseNotifierStatus', 'true')
ScriptSetting.CloseNotifier('remove')
}
})
// 便捷兑换Discord宝可梦 checkbox 监听
$('#PokeClickerHelperDiscordPokemonStatus').on('change', function () {
if (JSON.parse(PokeClickerHelper.get('DiscordPokemonStatus', 'false'))) {
PokeClickerHelper.set('DiscordPokemonStatus', 'false')
ScriptSetting.LoadDiscordPokemon('remove')
} else {
PokeClickerHelper.set('DiscordPokemonStatus', 'true')
ScriptSetting.LoadDiscordPokemon('load')
}
})
// 自动对战开拓区 checkbox 监听
$('#PokeClickerHelperBattleFrontierStatus').on('change', function () {
if (JSON.parse(PokeClickerHelper.get('BattleFrontierStatus', 'false'))) {
PokeClickerHelper.set('BattleFrontierStatus', 'false')
PokeClickerHelper.hookGameTickList.delete(BattleFrontier.AutoBattle)
// 移除自定义层数控件 和 自动挑战
if (App.game.gameState == GameConstants.GameState.battleFrontier) {
if (document.getElementById('PokeClickerHelperSetQuitStage') != null) $("#PokeClickerHelperSetQuitStage").parent().remove()
if (document.getElementById('PokeClickerHelperBattleFrontierRepeatStart') != null) $("#PokeClickerHelperBattleFrontierRepeatStart").remove()
}
} else {
PokeClickerHelper.set('BattleFrontierStatus', 'true')
PokeClickerHelper.hookGameTickList.add(BattleFrontier.AutoBattle)
}
})
// *对战开拓区(中途结算退出) checkbox 监听
$('#PokeClickerHelperBattleFrontierQuitStatus').on('change', function () {
if (JSON.parse(PokeClickerHelper.get('BattleFrontierQuitStatus', 'false'))) {
PokeClickerHelper.set('BattleFrontierQuitStatus', 'false')
PokeClickerHelper.hookGameTickList.delete(BattleFrontier.LoadQuit)
// 移除自定义层数控件
if (App.game.gameState == GameConstants.GameState.battleFrontier) {
if (document.getElementById('PokeClickerHelperSetQuitStage') != null) $("#PokeClickerHelperSetQuitStage").parent().remove()
}
} else {
PokeClickerHelper.set('BattleFrontierQuitStatus', 'true')
PokeClickerHelper.hookGameTickList.add(BattleFrontier.LoadQuit)
}
})
}
PokeClickerHelper.UIContainerID.push("#PokeClickerHelperWharf");
PokeClickerHelper.UIContainerID.push("#PokeClickerHelperPokemonShops");
PokeClickerHelper.UICustomFuc.push(fuc);
PokeClickerHelper.UIlistener.push(listener);
// 暴露对象方法到全局
const ScriptSetting = {}; //脚本设置变量
ScriptSetting.SettingRegionStatus = 0; //设置的区域状态
ScriptSetting.HighestRegion = -1; //玩家最高区域
const ConvenientStore = {}; //宝可梦超市变量
const BattleFrontier = {}; //对战开拓区变量
BattleFrontier.ReStartStatus = false; //自动挑战状态变量,用于判断是否自动挑战
const TalentMarket = {}; //人才市场变量
const TradingCenter = {}; //交易中心变量
PokeClickerHelper.BattleFrontier = BattleFrontier;
PokeClickerHelper.ConvenientStore = ConvenientStore;
PokeClickerHelper.ScriptSetting = ScriptSetting;
PokeClickerHelper.TalentMarket = TalentMarket;
PokeClickerHelper.TradingCenter = TradingCenter;
// 初始化的函数 用于初始化赋值 和 检查功能的状态 checked/select
ScriptSetting.initialize = (key, id, type = 'checked') => {
if (type == 'checked') {
// 初始化赋值
if (PokeClickerHelper.get(key, '') === '') PokeClickerHelper.set(key, 'false')
// 检查功能状态
JSON.parse(PokeClickerHelper.get(key, 'false')) ? $(id).prop('checked', true) : $(id).prop('checked', false)
} else if (type == 'select') {
// 初始化赋值
if (PokeClickerHelper.get(key, '') === '') PokeClickerHelper.set(key, '0')
// 检查功能状态
$(id).prop('value', JSON.parse(PokeClickerHelper.get(key, '0')))
}
}
// 加载码头功能 可空 默认加载 cmd = 'remove' 移除
ScriptSetting.LoadWharf = (cmd = 'load') => {
if (cmd == 'load') {
let text = `<button class="btn btn-block btn-success" id="PokeClickerHelperWharf" style="position: absolute; left: 32px; top: 0px; width: auto; height: 41px; font-size: 11px;">码头</button>`
$('#townMap').append(text)
// 码头 button 监听 => 由于在html元素未append之前设置监听会导致监听无效,所以append后加入
document.getElementById('PokeClickerHelperWharf').addEventListener('click', MapHelper.openShipModal, false)
} else if (cmd = 'remove') {
document.getElementById('PokeClickerHelperWharf').removeEventListener('click', MapHelper.openShipModal, false)
$("#PokeClickerHelperWharf").remove()
}
}
// 加载兑换Discord宝可梦功能 可空 默认加载 cmd = 'remove' 移除
ScriptSetting.LoadDiscordPokemon = (cmd = 'load') => {
if (cmd == 'load') {
let text = `<button id="PokeClickerHelperClaimDiscord" class="btn btn-primary btn-block">一键获取所有Discord宝可梦</button>`
$('#saveTab .btn.btn-primary.btn-block').eq(0).before(text)
document.getElementById('PokeClickerHelperClaimDiscord').addEventListener('click', PokeClickerHelper.ScriptSetting.ClaimDiscord, false)
} else if (cmd = 'remove') {
$('#PokeClickerHelperClaimDiscord').remove()
}
}
// 隐藏道路宝可梦信息功能
ScriptSetting.HideWildPokemon = () => {
// 移除击败动画 暂时废除,开启后会导致道路击杀数不见
//if ($('knockout[data-bind*="App.game.statistics.routeKills"]').length > 0) $('knockout[data-bind*="App.game.statistics.routeKills"]')[0].remove()
// 移除宝可梦图片
if ($('img.enemy').length > 0) $('img.enemy').parent().remove()
// 移除宝可梦血条
if ($('.progress.hitpoints').length > 0) $('.progress.hitpoints')[0].remove()
// 移除宝可梦名字、性别
if ($('knockout[data-bind*="template: { name: \'pokemonNameTemplate\', data: { \'pokemon\': Battle.enemyPokemon() } }"]').length > 0) $('knockout[data-bind*="template: { name: \'pokemonNameTemplate\', data: { \'pokemon\': Battle.enemyPokemon() } }"]')[0].remove()
// 移除宝可梦捕获图标
if ($('knockout[data-bind*="caughtStatusTemplate"').length > 0) $('knockout[data-bind*="caughtStatusTemplate"')[0].remove()
// 移除宝可梦病毒图标
if ($('knockout[data-bind*="if: App.game.party.getPokemonByName(Battle.enemyPokemon().name)?.pokerus > GameConstants.Pokerus.Uninfected"]').length > 0) $('knockout[data-bind*="if: App.game.party.getPokemonByName(Battle.enemyPokemon().name)?.pokerus > GameConstants.Pokerus.Uninfected"]')[0].remove()
// 移除捕获动画
if ($('div .catchChance').length > 0) $('div .catchChance')[0].remove()
// 移除道馆的npc图
if ($('.trainer').length > 0) $('.trainer').remove()
}
// 屏蔽所有通知功能 可空 默认屏蔽通知 cmd = 'remove' 屏蔽 / cmd = 'load' 取消屏蔽
ScriptSetting.CloseNotifier = (cmd = 'remove') => {
if (cmd == 'remove') {
// if ($('#toaster').length > 0) $('#toaster').remove()
Notifier.notify = function (message) {
const sound = message.sound;
if (typeof sound != 'undefined') {
sound.play();
}
}
} else if (cmd == 'load') {
// if ($('#toaster').length == 0) $('#dynamic-background').after('<div id="toaster"></div>')
Notifier.notify = NotifierBak;
}
}
// 一键兑换Discord宝可梦功能
ScriptSetting.ClaimDiscord = () => {
var codes = App.game.discord.codes.length;//获取可兑换宝可梦数量
if (App.game.discord.ID() == null) {
App.game.discord.ID(Math.floor((Math.random() * 65536) + 1));//生成Discord登录账号ID
for (let i = 0; i < codes; i++) {
document.getElementById("redeemable-code-input").value = App.game.discord.calcCode(App.game.discord.codes[i]);//自动填写兑换码
RedeemableCodeController.enterCode();//兑换
}
App.game.discord.logout();//退出登录
} else {
for (let i = 0; i < codes; i++) {
document.getElementById("redeemable-code-input").value = App.game.discord.calcCode(App.game.discord.codes[i]);
RedeemableCodeController.enterCode();
}
App.game.discord.logout();
}
}
// 加载宝可梦商店功能 可空 默认加载 cmd = 'remove' 移除
ScriptSetting.LoadTradingCenter = (cmd = 'load') => {
if (cmd == 'load') {
let text = `<tr><td class="p-0">
<button id="PokeClickerHelperBerryMaster" class="col-12 col-md-4 btn btn-block btn-primary m-0" data-toggle="modal" style="float: left;">浆果大师</button>
<button id="PokeClickerHelperShardTrader" class="col-12 col-md-4 btn btn-block btn-primary m-0" data-toggle="modal" style="float: right;">交易中心</button>
<button id="PokeClickerHelperGemMaster" class="col-12 col-md-4 btn btn-block btn-primary m-0" data-toggle="modal" style="float: right;">宝石大师</button>
</td></tr>`
$("#shortcutsBody tbody").append(text)
// 可梦商店 button 监听 => 由于在html元素未append之前设置监听会导致监听无效,所以append后加入
document.getElementById('PokeClickerHelperBerryMaster').addEventListener('click', PokeClickerHelper.TradingCenter.OpenBerryMaster, false)
document.getElementById('PokeClickerHelperShardTrader').addEventListener('click', PokeClickerHelper.TradingCenter.OpenTradingCenter, false)
document.getElementById('PokeClickerHelperGemMaster').addEventListener('click', PokeClickerHelper.TradingCenter.OpenGemMasterMaster, false)
} else if (cmd = 'remove') {
document.getElementById('PokeClickerHelperBerryMaster').removeEventListener('click', PokeClickerHelper.TradingCenter.OpenBerryMaster, false)
document.getElementById('PokeClickerHelperShardTrader').removeEventListener('click', PokeClickerHelper.TradingCenter.OpenTradingCenter, false)
document.getElementById('PokeClickerHelperGemMaster').removeEventListener('click', PokeClickerHelper.TradingCenter.OpenGemMasterMaster, false)
$("#PokeClickerHelperBerryMaster").parent().parent().remove()
}
}
// 删除非法的宝可梦
ScriptSetting.DeleteMissingNo = () => {
var PlayercaughtPokemon = App.game.party.caughtPokemon;
var DeletePM_ID = new Array;
for (let i = 0; i < PlayercaughtPokemon.length; i++) {
if (PlayercaughtPokemon[i].id == 0) {
DeletePM_ID[DeletePM_ID.length] = i;
}
}
if (DeletePM_ID.length > 0) {
for (let i = 0; i < DeletePM_ID.length; i++) {
PlayercaughtPokemon.splice(DeletePM_ID[i] - i, 1);
}
Save.store();
location.reload();
} else {
Notifier.notify({
message: `不存在MissingNo的宝可梦!`,
type: NotificationConstants.NotificationOption.danger
});
}
}
// 自动对战开拓区功能
BattleFrontier.AutoBattle = () => {
// 秒杀过层
if (BattleFrontierRunner.started()) {
// 计算无属性克制的伤害>宝可梦的血量 直接跳过该层 否者 计算属性克制后的伤害>宝可梦的血量 跳过该宝可梦
if (App.game.party.calculatePokemonAttack(Battle.enemyPokemon().None, Battle.enemyPokemon().None, true) > PokemonFactory.routeHealth(BattleFrontierRunner.stage() + 10, GameConstants.Region.none)) {
BattleFrontierRunner.nextStage();
} else if (App.game.party.calculatePokemonAttack(Battle.enemyPokemon().type1, Battle.enemyPokemon().type2, true) > PokemonFactory.routeHealth(BattleFrontierRunner.stage() + 10, GameConstants.Region.none)) {
BattleFrontierBattle.defeatPokemon();
}
}
// 创建 自动挑战 标签
if (App.game.gameState == GameConstants.GameState.battleFrontier && document.getElementById('PokeClickerHelperBattleFrontierRepeatStart') == null) {
const RepeatStartText = `<a id="PokeClickerHelperBattleFrontierRepeatStart" class="btn btn-block btn-danger text-light">自动挑战 [OFF]</a>`
$('#battleFrontierInformation .card-header').eq(0).after(RepeatStartText)
BattleFrontier.ReStartStatus = false; //初始化自动挑战状态
document.getElementById('PokeClickerHelperBattleFrontierRepeatStart').addEventListener('click', () => {
PCH.BattleFrontier.ReStartStatus ? PCH.BattleFrontier.ReStartStatus = false : PCH.BattleFrontier.ReStartStatus = true
PCH.BattleFrontier.ReStartStatus ? $('#PokeClickerHelperBattleFrontierRepeatStart').text('自动挑战 [ON]') : $('#PokeClickerHelperBattleFrontierRepeatStart').text('自动挑战 [OFF]')
PCH.BattleFrontier.ReStartStatus ? $('#PokeClickerHelperBattleFrontierRepeatStart')[0].classList.replace('btn-danger', 'btn-success') : $('#PokeClickerHelperBattleFrontierRepeatStart')[0].classList.replace('btn-success', 'btn-danger')
PCH.BattleFrontier.ReStartStatus ? PokeClickerHelper.hookGameTickList.add(PCH.BattleFrontier.ReStart) : PokeClickerHelper.hookGameTickList.delete(PCH.BattleFrontier.ReStart)
}, false)
}
}
// 自动对战开拓区功能 自动挑战 如果开启*对战开拓区(中途结算退出)可根据设定的自定义层数退出重新挑战
BattleFrontier.ReStart = () => {
if (PCH.BattleFrontier.ReStartStatus) {
if (!BattleFrontierRunner.started() && BattleFrontierRunner.hasCheckpoint()) return BattleFrontierRunner.start(true)//有些判断是否有历史挑战
if (!BattleFrontierRunner.started()) return BattleFrontierRunner.start(false)//无历史挑战从新开始挑战
//获取 设置的循环层数
let stage = +PokeClickerHelper.get('SetQuitStage', '0')
if (BattleFrontierRunner.stage() > stage && stage != 0 && BattleFrontierRunner.started() && JSON.parse(PokeClickerHelper.get('BattleFrontierQuitStatus', 'false'))) return BattleFrontierRunner.battleLost()
}
}
// 加载*对战开拓区(中途结算退出)功能 ==> 开始战斗后新增 结算退出按钮
BattleFrontier.LoadQuit = () => {
// 创建 结算退出 按钮
if (BattleFrontierRunner.started() && document.getElementById('PokeClickerHelperQuitBattleFrontier') == null) {
const QuitText = `<a id="PokeClickerHelperQuitBattleFrontier" class="btn btn-block btn-danger text-light">结算退出</a>`
$('#battleFrontierInformation .card-body').append(QuitText)
document.getElementById('PokeClickerHelperQuitBattleFrontier').addEventListener('click', PokeClickerHelper.BattleFrontier.battleLost, false)
}
// 创建 自定义层数 输入框
if (JSON.parse(PokeClickerHelper.get('BattleFrontierStatus', 'false')) && document.getElementById('PokeClickerHelperSetQuitStage') == null && App.game.gameState == GameConstants.GameState.battleFrontier) {
const text = `
<div class="card-header p-0">
<span>自动挑战层数(超过该层结算退出):</span><input id="PokeClickerHelperSetQuitStage" title="超过设置层数即结算退出,设置0则挑战失败才退出." type="text" style="text-align: center;" value="0">
</div>`
$('#battleFrontierInformation .card-header').after(text)
$('#PokeClickerHelperSetQuitStage').on('change', event => {
let SetQuitStage = +event.target.value.replace(/[A-Za-z!@#$%^&*()]/g, '').replace(/[,]/g, "");
!isNaN(SetQuitStage) ? PokeClickerHelper.set('SetQuitStage', SetQuitStage) : PokeClickerHelper.set('SetQuitStage', SetQuitStage = 0)
event.target.value = SetQuitStage.toLocaleString('en-US');
});
$('#PokeClickerHelperSetQuitStage')[0].value = PokeClickerHelper.get('SetQuitStage', '0')
$('#PokeClickerHelperSetQuitStage').change()
}
if (!JSON.parse(PokeClickerHelper.get('BattleFrontierStatus', 'false')) && document.getElementById('PokeClickerHelperSetQuitStage') != null && App.game.gameState == GameConstants.GameState.battleFrontier) {
$("#PokeClickerHelperSetQuitStage").parent().remove()
}
}
// 结算退出方法
BattleFrontier.battleLost = () => {
BattleFrontierRunner.battleLost();
}
// 加载宝可梦商店功能 可空 默认加载 cmd = 'remove' 移除
ConvenientStore.LoadFunction = (cmd = 'load') => {
if (cmd == 'load') {
let text = `<tr><td class="p-0"><button id="PokeClickerHelperPokemonShops" class="btn btn-block btn-primary m-0" href="#shopModal" data-toggle="modal">宝可梦商店</button></td></tr>`
$("#shortcutsBody tbody").append(text)
// 可梦商店 button 监听 => 由于在html元素未append之前设置监听会导致监听无效,所以append后加入
document.getElementById('PokeClickerHelperPokemonShops').addEventListener('click', PokeClickerHelper.ConvenientStore.OpenShops, false)
} else if (cmd = 'remove') {
document.getElementById('PokeClickerHelperPokemonShops').removeEventListener('click', PokeClickerHelper.ConvenientStore.OpenShops, false)
$("#PokeClickerHelperPokemonShops").parent().parent().remove()
}
}
// 初始化商店物品数据
ConvenientStore.initialize = () => {
ConvenientStore.PokeShopItem = new Array;//商店物品 存放该地区 蛋物品、宝可梦物品、进化物品、联盟物品
ConvenientStore.PokemonItem = new Array;//宝可梦物品数据 一维数组
ConvenientStore.EvolutionStone = new Array;//进化物品数据 一维数组
ConvenientStore.PokeLeagueItem = new Array;//联盟物品数据
ConvenientStore.EggsItem = new Array;//蛋物品数据
Object.keys(GameConstants.Region).filter(stone => isNaN(stone) && stone !== 'none').forEach(RegionNmae => {
ConvenientStore.EvolutionStone[GameConstants.Region[RegionNmae]] = new Array; //进化物品数据 二维数组
ConvenientStore.PokemonItem[GameConstants.Region[RegionNmae]] = new Array;//宝可梦物品数据 二维数组 后面调用
//遍历 进化道具 存储变量 ConvenientStore.EvolutionStone[地区编号]
Object.values(TownList).filter(t => t.region === GameConstants.Region[RegionNmae] && t.constructor.name === 'Town').forEach(p => {
for (let i = 0; i < p.content.length; i++) {
if (p.content[i] instanceof Shop) {
for (let j = 0; j < p.content[i].items.length; j++) {
if (p.content[i].items[j] instanceof EvolutionStone) ConvenientStore.EvolutionStone[GameConstants.Region[RegionNmae]].push(p.content[i].items[j])
}
}
}
})
})
//遍历 蛋 存储变量 ConvenientStore.PokeEggsItem
Object.values(ItemList).filter(({ name }) => name.includes('egg') && name != 'Lucky_egg' && name != 'Pokemon_egg').forEach(egg => {
ConvenientStore.EggsItem.push(egg)
})
//遍历 宝可梦 存储变量 ConvenientStore.PokemonItem[地区编号] ==> 1.5 移除条件 town.constructor.name == 'Town'
Object.values(TownList).filter(town => town.content.length > 0).forEach(city => {
city.content.filter(p => p.constructor.name == 'Shop').forEach(shop => {
for (let i = 0; i < shop.items.length; i++) {
if (shop.items[i].constructor.name == 'PokemonItem') ConvenientStore.PokemonItem[city.region].push(shop.items[i])
}
})
})
//遍历 联盟商店 存储变量 ConvenientStore.PokeLeagueItem
for (let i = 0; i < pokeLeagueShop().items.length; i++) {
ConvenientStore.PokeLeagueItem.push(pokeLeagueShop().items[i])
}
//地区区域物品拼接 存储变量 ConvenientStore.PokeShopItem
Object.keys(GameConstants.Region).filter(stone => isNaN(stone) && stone !== 'none').forEach(RegionNmae => {
ConvenientStore.PokeShopItem[GameConstants.Region[RegionNmae]] = ConvenientStore.EggsItem.concat(ConvenientStore.PokemonItem[GameConstants.Region[RegionNmae]], ConvenientStore.EvolutionStone[GameConstants.Region[RegionNmae]], ConvenientStore.PokeLeagueItem)
})
}
// 获取最高地区的商店总物品 存储变量 ConvenientStore.HeadOffice
ConvenientStore.getHeadOfficeItem = () => {
ConvenientStore.HeadOffice = new Array;
//拷贝蛋物品数据
ConvenientStore.HeadOffice = ConvenientStore.HeadOffice.concat(ConvenientStore.EggsItem)
//拷贝宝可梦物品数据
for (let i = 0; i < ScriptSetting.HighestRegion; i++) {
ConvenientStore.HeadOffice = ConvenientStore.HeadOffice.concat(ConvenientStore.PokemonItem[i])
}
//拷贝进化物品数据 => 去重
for (let i = 0; i < ScriptSetting.HighestRegion; i++) {
for (item1 of ConvenientStore.EvolutionStone[i]) {
let flag = true;
for (item2 of ConvenientStore.HeadOffice) {
if (item1.name == item2.name) flag = false
}
if (flag) { ConvenientStore.HeadOffice.push(item1) }
}
}
//拷贝联盟物品数据
ConvenientStore.HeadOffice = ConvenientStore.HeadOffice.concat(ConvenientStore.PokeLeagueItem)
}
// 打开商店方法 根据玩家所在区域进行读取商店物品数据
ConvenientStore.OpenShops = () => {
if (ScriptSetting.SettingRegionStatus == 0) {
PokemonShops = new Shop(ConvenientStore.PokeShopItem[player.region], GameConstants.camelCaseToString(GameConstants.Region[player.region]) + '(⁎˃ᴗ˂⁎)宝可梦商店');
} else if (ScriptSetting.SettingRegionStatus == 1) {
if (player.highestRegion() == ScriptSetting.HighestRegion) {
PokemonShops = new Shop(ConvenientStore.HeadOffice, '宝可梦商店(⁎˃ᴗ˂⁎)总店');
} else {
ScriptSetting.HighestRegion = player.highestRegion();
ConvenientStore.getHeadOfficeItem();
PokemonShops = new Shop(ConvenientStore.HeadOffice, '宝可梦商店(⁎˃ᴗ˂⁎)总店');
}
}
PokemonShops.protectedOnclick();
}
// 初始化人才市场数据
TalentMarket.initialize = () => {
TalentMarket.TalentsShop = new Array;
Object.keys(ItemList).filter(name => name.includes('FarmHand') || name.includes('HatcheryHelper')).forEach(p => { TalentMarket.TalentsShop.push(ItemList[p]) })
}
// 加载人才市场功能 可空 默认加载 cmd = 'remove' 移除
TalentMarket.LoadFunction = (cmd = 'load') => {
if (cmd == 'load') {
let text = `<tr><td class="p-0"><button id="PokeClickerHelperTalentMarket" class="btn btn-block btn-primary m-0" href="#shopModal" data-toggle="modal">人才市场</button></td></tr>`
$("#shortcutsBody tbody").append(text)
// 可梦商店 button 监听 => 由于在html元素未append之前设置监听会导致监听无效,所以append后加入
document.getElementById('PokeClickerHelperTalentMarket').addEventListener('click', PokeClickerHelper.TalentMarket.OpenShops, false)
} else if (cmd = 'remove') {
document.getElementById('PokeClickerHelperTalentMarket').removeEventListener('click', PokeClickerHelper.TalentMarket.OpenShops, false)
$("#PokeClickerHelperTalentMarket").parent().parent().remove()
}
}
// 打开商店方法
TalentMarket.OpenShops = () => {
TalentsShop = new Shop(TalentMarket.TalentsShop, '世界顶尖(⁎˃ᴗ˂⁎)招聘市场');
TalentsShop.protectedOnclick();
}
// 初始化交易中心数据
TradingCenter.initialize = () => {
//初始化浆果大师BerryMaster
BerryDeal.list[1000] = ko.observableArray();
for (let i = 0; i < Object.keys(BerryDeal.list).length - 1; i++) {
for (let j = 0; j < BerryDeal.list[i]().length; j++) {
BerryDeal.list[1000]().push(BerryDeal.list[i]()[j])
}
}
TradingCenter.BerryMasterShop = new BerryMasterShop(1000, Object.values(ItemList).filter(item => item.constructor.name == 'MulchShovelItem' || item.constructor.name == 'MulchItem' || item.constructor.name == 'ShovelItem'));
//初始化交易中心ShardTrader
TradingCenter.TradingCenterShop = new Array;
Object.keys(GameConstants.Region).filter(stone => isNaN(stone) && stone !== 'none').forEach(RegionNmae => {
ShardDeal.list[1000 + GameConstants.Region[RegionNmae]] = ko.observableArray();
TradingCenter.TradingCenterShop[GameConstants.Region[RegionNmae]] = new Array;
})
Object.values(TownList).filter(town => town.constructor.name == 'Town' && town.content.length > 0).forEach(city => {
for (let i = 0; i < city.content.length; i++) {
if (city.content[i].constructor.name == 'ShardTraderShop') {
for (let j = 0; j < ShardDeal.list[city.content[i].location]?.().length; j++) {
ShardDeal.list[1000 + city.region]().push(ShardDeal.list[city.content[i].location]()[j])
}
}
}
})
Object.keys(GameConstants.Region).filter(stone => isNaN(stone) && stone !== 'none').forEach(RegionNmae => {
TradingCenter.TradingCenterShop[GameConstants.Region[RegionNmae]] = new ShardTraderShop(1000 + GameConstants.Region[RegionNmae], '地区(⁎˃ᴗ˂⁎)交易中心')
})
}
// 获取最高区域交易中心数据
TradingCenter.getHeadOffice = () => {
let ShardItem = new Array;
ShardDeal.list[999] = ko.observableArray();
Object.values(TownList).filter(town => town.constructor.name == 'Town' && town.content.length > 0).forEach(city => {
if (city.region <= ScriptSetting.HighestRegion) {
for (let i = 0; i < city.content.length; i++) {
if (city.content[i].constructor.name == 'ShardTraderShop') {
for (let j = 0; j < ShardDeal.list[city.content[i].location]().length; j++) {
if (!ShardItem.includes(ShardDeal.list[city.content[i].location]()[j].item.itemType.name)) {
ShardItem.push(ShardDeal.list[city.content[i].location]()[j].item.itemType.name);
ShardDeal.list[999]().push(ShardDeal.list[city.content[i].location]()[j]);
}
}
}
}
}
})
TradingCenter.HeadOfficeShop = new ShardTraderShop(999, '世界(⁎˃ᴗ˂⁎)交易中心')
}
// 打开商店 浆果大师
TradingCenter.OpenBerryMaster = () => {
TradingCenter.BerryMasterShop.protectedOnclick();
}
// 打开商店 交易中心
TradingCenter.OpenTradingCenter = () => {
if (ScriptSetting.SettingRegionStatus == 0) {
TradingCenter.TradingCenterShop[player.region].protectedOnclick()
} else if (ScriptSetting.SettingRegionStatus == 1) {
if (player.highestRegion() == ScriptSetting.HighestRegion) {
TradingCenter.HeadOfficeShop.protectedOnclick()
} else {
ScriptSetting.HighestRegion = player.highestRegion();
TradingCenter.getHeadOffice()
TradingCenter.HeadOfficeShop.protectedOnclick()
}
}
}
// 打开交易 宝石大师
TradingCenter.OpenGemMasterMaster = () => {
if (ScriptSetting.GemMasterShop === undefined) ScriptSetting.GemMasterShop = new GemMasterShop();
ScriptSetting.GemMasterShop.onclick();
}