您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds buttons to select the next/previous options for each dropdown. Automatically predicts, removing excess clicks. Adds option to copy scry image code with settings for auto copy & adult on load.
// ==UserScript== // @name Flight Rising: Predict Morphology - Next Option + Image Code Copy // @description Adds buttons to select the next/previous options for each dropdown. Automatically predicts, removing excess clicks. Adds option to copy scry image code with settings for auto copy & adult on load. // @namespace https://gf.qytechs.cn/en/users/547396 // @author https://gf.qytechs.cn/en/users/547396 // @match *://*.flightrising.com/scrying/predict* // @grant none // @version 0.4 // ==/UserScript== (function() { 'use strict'; const container = document.getElementById('predict-morphology'), optionsBlock = container.getElementsByClassName('scry-options')[0], commonRows = optionsBlock.getElementsByClassName('common-row'), predictBtn = document.getElementById('scry-button'), loadBtn = document.getElementById('load-morphology'), scryLoad = document.getElementsByClassName('scry-load')[0], copyBtn = document.createElement('button'), copyPasta = document.createElement('input'); // do it! init(); function init() { buildCopy(); loadScryUrl(); loadSettings(); for ( let row of commonRows ) { let selector = row.getElementsByTagName('select')[0], shuffle = row.getElementsByClassName('scry-shuffle')[0], selectName = selector.name, col = selector.parentNode; selector.style.maxWidth = '75%'; selector.style.order = 2; shuffle.style.right = '-12px'; col.style.display = 'flex'; col.style.alignItems = 'center'; col.style.columnGap = '.2rem'; appendDownSelect( col, selector, selectName, true ); appendDownSelect( col, selector, selectName, false ); } predictBtn.addEventListener('click', loadScryUrl); } // append next button function appendDownSelect( col, selector, name, down ) { const downAction = document.createElement('button'); downAction.innerHTML = down ? '↡' : '↟'; downAction.name = name; downAction.style.order = down ? 3 : 1; downAction.addEventListener('click', e => { changeSelect(selector, down, e); }); col.appendChild(downAction); } // select next/prev option, ignoring all disabled options function changeSelect(selector, dir, e) { const select = selector; const direction = dir ? 1 : -1; const collectionArr = Array .from(select.options) .reduce((arr, opt, idx) => { if (!opt.disabled) arr.push(idx); return arr; }, []); const pos = collectionArr.indexOf(select.selectedIndex); const length = collectionArr.length; const nextPos = (pos + direction + length) % length; select.selectedIndex = collectionArr[nextPos]; predict(); } // append copy button and field to scry load box function buildCopy() { scryLoad.style.height = '145px'; copyBtn.classList.add('beigebutton'); copyBtn.classList.add('thingbutton'); copyBtn.style.width = '100%'; copyBtn.innerText = 'Copy Image BBC Code'; scryLoad.appendChild(copyPasta); scryLoad.appendChild(copyBtn); copyBtn.addEventListener('click', copyToClipboard); } function loadScryUrl() { copyPasta.value = 'loading...'; setTimeout(function(){ copyPasta.value = '[img]' + getDragonImage() + '[/img]'; }, 500); } function getDragonImage() { const dImg = document.getElementById('dragon-image'), dImgSrc = dImg.getElementsByTagName('img')[0].src; return dImgSrc; } // load settings function loadSettings() { const settingsContainer = document.createElement('div'); let autoCopy = createCheck('autoCopy', 'Automatically Copy'); let growUp = createCheck('growUp', 'Adult On Load'); container.appendChild(settingsContainer); settingsContainer.style.position = 'absolute'; settingsContainer.style.top = '0'; settingsContainer.appendChild(autoCopy); settingsContainer.appendChild(growUp); } function copyToClipboard() { copyPasta.select(); copyPasta.setSelectionRange(0, 99999); navigator.clipboard.writeText(copyPasta.value); document.execCommand('copy'); appendMessage(); } // post Message function appendMessage() { const message = document.createElement('div'); message.innerHTML = 'copied to clipboard'; scryLoad.appendChild(message); message.style.font = 'italic normal 9px Times, serif'; message.style.margin = '3px 0'; setTimeout( function() { scryLoad.removeChild(message); }, 1000 ); } // checkbox el function createCheck( name, label ) { let itemContainer = document.createElement('div'), checkboxInput = document.createElement('input'), checkboxLabel = document.createElement('label'), getSavedVal = localStorage.getItem( name ); checkboxInput.type = 'checkbox'; checkboxInput.id = name; checkboxInput.name = name; checkboxLabel.innerText = label; checkboxLabel.setAttribute('for', name); itemContainer.appendChild(checkboxInput); itemContainer.appendChild(checkboxLabel); itemContainer.style.display = 'flex'; itemContainer.style.alignItems = 'center'; itemContainer.style.font = 'normal 10px/15px arial, sans-serif'; checkboxLabel.style.paddingLeft = '.5rem'; checkboxInput.checked = (getSavedVal == 'true' ) ? true : false; checkboxInput.addEventListener('click', updateSetting); applySetting( name, getSavedVal ); return itemContainer; } // apply setting logic if true function applySetting( name, returnVal ) { if ( name == 'growUp' && returnVal == 'true' ) { let ageVal = document.getElementsByName('age')[0]; if ( ageVal.value == 0 ) { changeSelect(ageVal); } } if ( name == 'autoCopy' && returnVal == 'true' ) { setTimeout(function(){ copyToClipboard(); }, 1000); } } function updateSetting( e ) { localStorage.setItem( e.target.name, e.target.checked ); } // trigger predict function predict() { predictBtn.click(); } })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址