您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Find routes to farm
- // ==UserScript==
- // @name TypeFinder
- // @namespace Pokeclicker Scripts
- // @version 0.1
- // @description Find routes to farm
- // @author Maxteke
- // @match https://www.pokeclicker.com/
- // @grant none
- // @license MIT
- // ==/UserScript==
- var scriptName = 'typeFinder'
- var types = []
- function hasType(pokemon, type) {
- var pokemon = pokemonList.find(element => element.name == pokemon)
- if (pokemon == undefined)
- return false;
- for (var t of pokemon.type) {
- if (PokemonType[t] == type)
- return true;
- }
- return false;
- }
- function getScore(route, type) {
- var pokemons = [];
- var find = 0;
- pokemons = pokemons.concat(route.pokemon.headbutt);
- pokemons = pokemons.concat(route.pokemon.land);
- pokemons = pokemons.concat(route.pokemon.special);
- pokemons = pokemons.concat(route.pokemon.water);
- pokemons.forEach(pokemon => {
- if (hasType(pokemon, type))
- find++;
- });
- if (find == 0)
- return undefined;
- else
- return pokemons.length - find;
- }
- function bestRoadForType(region, type) {
- var routes = Routes.getRoutesByRegion(region);
- var bestScore = 100;
- var bestRoute = undefined;
- routes.forEach(route => {
- var score = getScore(route, type);
- if (score < bestScore) {
- bestScore = score;
- bestRoute = route;
- }
- });
- return { route: bestRoute, score: bestScore };
- }
- function findForEachRegion(type) {
- var regions = [];
- for (var i = 0; i <= player.highestRegion(); i++) {
- regions.push(bestRoadForType(i, type));
- }
- regions.sort((a, b) => a.score - b.score);
- types[type] = regions;
- }
- function addOption(select, type) {
- var option = document.createElement('option');
- option.value = type;
- option.innerHTML = type;
- select.appendChild(option);
- }
- function typeFinderCard() {
- var card = document.createElement('div');
- card.id = 'typeFinder';
- card.classList.add('card')
- card.classList.add('sortable')
- card.classList.add('border-secondary')
- card.classList.add('mb-3')
- var header = document.createElement('div');
- header.classList.add('card-header');
- header.classList.add('p-0');
- header.setAttribute('data-toggle', 'collapse');
- header.setAttribute('href', '#typeFinderBody');
- var title = document.createElement('span');
- title.innerHTML = 'Type finder';
- header.appendChild(title);
- card.appendChild(header);
- var body = document.createElement('div');
- body.id = 'typeFinderBody'
- body.classList.add('card-body');
- body.classList.add('p-0');
- body.classList.add('collapse');
- body.classList.add('show');
- var container = document.createElement('div');
- container.style.display = 'flex';
- container.style.flexDirection = 'column';
- container.style.alignContent = 'center';
- container.style.alignItems = 'center';
- var result = document.createElement('div');
- result.style.display = 'flex';
- result.style.flexDirection = 'column';
- result.style.alignContent = 'center';
- result.style.alignItems = 'center';
- result.style.width = '100%';
- var select = document.createElement('select');
- select.name = 'TypeSelect'
- select.autocomplete = 'off';
- select.classList.add('custom-select');
- select.onchange = function() {findRoutes(result, select.value)};
- for (let type in PokemonType) {
- if (isNaN(Number(type)) && type != 'None') {
- findForEachRegion(type);
- addOption(select, type);
- }
- }
- container.appendChild(select);
- container.appendChild(result);
- body.appendChild(container);
- card.appendChild(body);
- document.getElementById('left-column').prepend(card);
- findRoutes(result, 'Normal');
- }
- function addResult(result, route) {
- var button = document.createElement('button');
- button.classList.add('btn');
- button.classList.add('btn-block');
- button.classList.add('btn-primary');
- button.classList.add('m-0');
- button.onclick = function() {
- MapHelper.moveToRoute(route.route.number, route.route.region);
- };
- button.innerHTML = route.route.routeName;
- result.appendChild(button);
- }
- function clearResult(result) {
- result.innerHTML = '';
- }
- function findRoutes(result, type) {
- clearResult(result);
- types[type].forEach(route => {
- if (route.route != undefined)
- addResult(result, route);
- });
- }
- function initTypeFinder() {
- typeFinderCard();
- }
- function loadScript(){
- var oldInit = Preload.hideSplashScreen
- Preload.hideSplashScreen = function(){
- var result = oldInit.apply(this, arguments)
- initTypeFinder()
- console.log(`[${GameConstants.formatDate(new Date())}] %cType finder loaded`, 'color:#8e44ad;font-weight:900;');
- return result
- }
- }
- if (document.getElementById('scriptHandler') != undefined){
- var scriptElement = document.createElement('div')
- scriptElement.id = scriptName
- document.getElementById('scriptHandler').appendChild(scriptElement)
- if (localStorage.getItem(scriptName) != null){
- if (localStorage.getItem(scriptName) == 'true'){
- loadScript()
- }
- }
- else{
- localStorage.setItem(scriptName, 'true')
- loadScript()
- }
- }
- else{
- loadScript();
- }