您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Allows Prefill values to be set for amounts and players
当前为
- // ==UserScript==
- // @name TORN: Prefill Item Send
- // @namespace http://torn.city.com.dot.com.com
- // @version 1.1.1
- // @description Allows Prefill values to be set for amounts and players
- // @author IronHydeDragon[2428902]
- // @match https://www.torn.com/item.php*
- // @license MIT
- // ==/UserScript==
- //////// PREFILL VALUES ////////
- const prefillAmountVal = ['2', '5', '999999', '']; // 999999 is just some rediculous number that should be equivalent to 'max'
- const prefillPlayerVal = ['Kv0the [2153277]', ''];
- const prefillMessageVal = ['Edit script message prefills', ''];
- //////// INDEXES USED BY FUNCTIONS
- // DO NOT CHANGE
- let amountIndex = 0;
- let playerIndex = 0;
- let messageIndex = 0;
- //////// FUNCIONS ////////
- function prefillAmount(inputEl) {
- const maxAmount = inputEl.dataset.max;
- inputEl.value = +prefillAmountVal[amountIndex] > +maxAmount ? +maxAmount : +prefillAmountVal[amountIndex];
- console.log('input', inputEl.value); // TEST
- inputEl.dispatchEvent(new Event('input', { bubbles: true }));
- }
- function prefillPlayer(inputEl) {
- inputEl.value = prefillPlayerVal[playerIndex];
- inputEl.dispatchEvent(new Event('input', { bubbles: true }));
- }
- function prefillMessage(inputEl, message) {
- console.log('message', message); // TEST
- if (message === undefined) {
- inputEl.value = prefillMessageVal[messageIndex];
- }
- if (message !== undefined) {
- inputEl.value = '';
- }
- inputEl.dispatchEvent(new Event('input', { bubbles: true }));
- }
- function amountClickHandler(e) {
- const max = prefillAmountVal.length - 1;
- if (++amountIndex > max) amountIndex = 0;
- prefillAmount(e.target);
- e.target.focus();
- e.target.select();
- }
- function playerClickHandler(e) {
- const max = prefillPlayerVal.length - 1;
- if (++playerIndex > max) playerIndex = 0;
- prefillPlayer(e.target);
- e.target.focus();
- e.target.select();
- }
- function messageClickHandler(e) {
- const max = prefillMessageVal.length - 1;
- if (++messageIndex > max) messageIndex = 0;
- prefillMessage(e.target);
- e.target.focus();
- e.target.select();
- }
- function removeMessageClickHandler(e, inputEl) {
- console.log('removeMessage'); // TEST
- prefillMessage(inputEl, '');
- }
- async function sendItemObserverCallback(mutationList, observer) {
- for (const mutation of mutationList) {
- if (mutation.target.classList.contains('cont-wrap') && mutation.type !== 'attributes') {
- if (mutation.addedNodes.length > 0 && mutation.addedNodes[0].classList.length > 0 && mutation.addedNodes[0].classList.contains('send-act')) {
- const sendActionEl = mutation.addedNodes[0];
- const amountInputEl = sendActionEl.querySelector('input.amount[type="text"]');
- const playerInputEl = sendActionEl.querySelector('input.user-id');
- prefillAmount(amountInputEl);
- prefillPlayer(playerInputEl);
- amountInputEl.addEventListener('click', amountClickHandler);
- playerInputEl.addEventListener('click', playerClickHandler);
- }
- }
- if (mutation.target.classList.contains('msg-active')) {
- console.log(mutation); // TEST
- const messageContainerEl = mutation.target;
- const messageInput = messageContainerEl.querySelector('input.message');
- const removeMessageBtn = messageContainerEl.querySelector('.action-remove');
- prefillMessage(messageInput);
- messageInput.addEventListener('click', messageClickHandler);
- removeMessageBtn.addEventListener('click', (e, messageInput) => removeMessageClickHandler(e, messageInput));
- }
- }
- }
- function createSenditemMutationObserver() {
- const observer = new MutationObserver(sendItemObserverCallback);
- observer.observe(document, {
- attributes: true,
- childList: true,
- subtree: true,
- });
- }
- // document.addEventListener('input', (e) => console.log(e)); // TEST)
- (async () => {
- console.log('🎁 Prefill item send script is ON!'); // TEST
- createSenditemMutationObserver();
- })();