您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
allows you to send multiply elements in one click
// ==UserScript== // @name send_multiply_elements // @namespace http://tampermonkey.net/ // @version 3.0 // @description allows you to send multiply elements in one click // @author Лосось // @grant GM_addStyle // @match /^https{0,1}:\/\/((www|my)\.(heroeswm|lordswm)\.(ru|com)|178\.248\.235\.15)\/(el_transfer|transfer).php*/ // @include /^https{0,1}:\/\/((www|my)\.(heroeswm|lordswm)\.(ru|com)|178\.248\.235\.15)\/(el_transfer|transfer).php*/ // @icon https://www.google.com/s2/favicons?sz=64&domain=lordswm.com // @license MIT // ==/UserScript== (function() { 'use strict'; //My sign block code let myCode = localStorage.getItem('myCode'); let currentId = document.cookie.match(/pl_id=\d*/gi).join(''); let myId = localStorage.getItem('myId'); if (!myId) { localStorage.setItem('myId', currentId); location.reload(); } let links = ['https://my.lordswm.com', 'https://www.heroeswm.ru']; let link = location.href.slice(0,22) === 'https://my.lordswm.com' ? links[0] : links[1]; let fetchCode = async () => { fetch(`${link}/castle.php?show_castle_f=1`) .then(function(response) { return response.text() }) .then(function(html) { var parser = new DOMParser(); var doc = parser.parseFromString(html, "text/html"); var element = doc.getElementsByClassName('castle_yes_no_buttons')[0].getElementsByTagName('a')[0].href; var code = element.slice(-32); var plId = document.cookie.match(/pl_id=\d*/gi); localStorage.setItem('myCode', code); }) .catch(function(err) { }); } if (!myCode) fetchCode(); if (myId !== currentId) { fetchCode(); localStorage.setItem('myId', currentId); } let DMap = { 1027: 129, 8225: 135, 1046: 198, 8222: 132, 1047: 199, 1168: 165, 1048: 200, 1113: 154, 1049: 201, 1045: 197, 1050: 202, 1028: 170, 160: 160, 1040: 192, 1051: 203, 164: 164, 166: 166, 167: 167, 169: 169, 171: 171, 172: 172, 173: 173, 174: 174, 1053: 205, 176: 176, 177: 177, 1114: 156, 181: 181, 182: 182, 183: 183, 8221: 148, 187: 187, 1029: 189, 1056: 208, 1057: 209, 1058: 210, 8364: 136, 1112: 188, 1115: 158, 1059: 211, 1060: 212, 1030: 178, 1061: 213, 1062: 214, 1063: 215, 1116: 157, 1064: 216, 1065: 217, 1031: 175, 1066: 218, 1067: 219, 1068: 220, 1069: 221, 1070: 222, 1032: 163, 8226: 149, 1071: 223, 1072: 224, 8482: 153, 1073: 225, 8240: 137, 1118: 162, 1074: 226, 1110: 179, 8230: 133, 1075: 227, 1033: 138, 1076: 228, 1077: 229, 8211: 150, 1078: 230, 1119: 159, 1079: 231, 1042: 194, 1080: 232, 1034: 140, 1025: 168, 1081: 233, 1082: 234, 8212: 151, 1083: 235, 1169: 180, 1084: 236, 1052: 204, 1085: 237, 1035: 142, 1086: 238, 1087: 239, 1088: 240, 1089: 241, 1090: 242, 1036: 141, 1041: 193, 1091: 243, 1092: 244, 8224: 134, 1093: 245, 8470: 185, 1094: 246, 1054: 206, 1095: 247, 1096: 248, 8249: 139, 1097: 249, 1098: 250, 1044: 196, 1099: 251, 1111: 191, 1055: 207, 1100: 252, 1038: 161, 8220: 147, 1101: 253, 8250: 155, 1102: 254, 8216: 145, 1103: 255, 1043: 195, 1105: 184, 1039: 143, 1026: 128, 1106: 144, 8218: 130, 1107: 131, 8217: 146, 1108: 186, 1109: 190 }; for (let j = 0; j < 128; j++) { DMap[j] = j; } function UnicodeToWin1251(t) { for (var e = [], r = 0; r < t.length; r++) { var n = t.charCodeAt(r); if (!(n in DMap)) throw'e'; e.push(String.fromCharCode(DMap[n])) } return e.join('') } function getSendArray(body) { let converted_str = UnicodeToWin1251(body) let send_arr = new Uint8Array(converted_str.length) for (let x = 0; x < converted_str.length; ++x) { send_arr[x] = converted_str.charCodeAt(x); } return send_arr } //Common styles let styleGray = 'min-width: 175px;color: #fad49f;padding: .5em;margin: 5px 8px;text-align: center;background-color: #696969;-webkit-border-radius: 4px;-moz-border-radius: 4px;border-radius: 4px;transition-duration: .1s;-webkit-transition-duration: .1s;-moz-transition-duration: .1s;-o-transition-duration: .1s;-ms-transition-duration: .1s;box-shadow: inset 0 0 0 1px #e2b77d,inset 0 0 4px rgba(0,0,0,.5),inset 0 -13px 5px rgba(0,0,0,.4),0 1px 7px rgba(0,0,0,.7);text-shadow: 0 0 5px #000,0 0 3px #000;' let btnSendAllStyle = 'border: none;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;color: #592c08;font-family: verdana,geneva,arial cyr;position: relative;text-align: center;font-weight: 700;background: url(../i/homeico/art_btn_bg_gold.png) #dab761;background-size: 100% 100%;border-radius: 5px;box-shadow: inset 0 0 0 1px #fce6b0, inset 0 0 0 2px #a78750, 0 0 0 1px rgba(0,0,0,.13);line-height: 25px;cursor: pointer;transition: -webkit-filter .15s;transition: filter .15s;' let displayElemStyle = 'padding-left: 4px; padding-right: 4px; font-weight: bold;'; const createEl = (el, style, innerText, placeholder, type, value) => { let element = document.createElement(el); if (style) element.style = style; if (innerText) element.innerText = innerText; if (placeholder) element.placeholder = placeholder; if (type) element.type = type; if (value) element.value = value; return element; } if (location.href === 'https://my.lordswm.com/el_transfer.php' || location.href === 'https://www.heroeswm.ru/el_transfer.php') { //elements block let elements = [...document.getElementsByName('eltype')[0].options]; elements.shift(); //UI let parentTable = document.getElementsByTagName('table')[1]; let container = createEl('div', 'display: flex; justify-content: center; width: 970px; text-align: center;'); let panel = createEl('div', 'display: flex; flex-direction: column; width: 200px;'); let selectedElements = createEl('div', 'display: flex; flex-direction: column; width: 400px;'); selectedElements.id = 'selectedElements'; let nickInput = createEl('input', styleGray, '', 'NICK', 'text'); let selectType = createEl('select', styleGray); elements.forEach(el => { let option = createEl('option', '', el.innerText, '', '', el.value); selectType.appendChild(option); }); let amountInput = createEl('input', styleGray, '', 'AMOUNT', 'text'); let priceInput = createEl('input', styleGray, '', 'PRICE', 'text'); let addElemBtn = createEl('button', `${styleGray} cursor: pointer;`, 'ADD'); let elementsToSend = []; addElemBtn.addEventListener('click', () => { if (!nickInput.value) { alert('Enter a nickname'); return }; if (!amountInput.value) { alert('Enter an amount'); return }; let id = Date.now(); elementsToSend.push({ id, nick: nickInput.value, eltype: selectType.value, count: amountInput.value, gold: priceInput.value || 0, comment: '', sendtype: '1', art_id: '', sign: myCode, }); let selectedElement = createEl('div', 'display: flex;'); let nick = createEl('div', displayElemStyle, `${nickInput.value}`); let type = createEl('div', `${displayElemStyle} width: 55%`, `${[...selectType.options].filter(el => el.selected === true)[0].innerText.replace(/\(\d+\)/gi, '').trim()}`); let amount = createEl('div', displayElemStyle, `(${amountInput.value})`); let price = createEl('div', displayElemStyle, `${priceInput.value || 0}`); let goldImg = createEl('img', 'height: 18px; width: 18px'); goldImg.src = 'https://cfcdn.lordswm.com/i/r/48/gold.png?v=3.23de65'; let delBtn = createEl('div', `${displayElemStyle}; cursor: pointer;`, 'X'); delBtn.addEventListener('click', () => { elementsToSend = elementsToSend.filter(el => el.id !== id); selectedElement.remove(); }) selectedElement.appendChild(nick); selectedElement.appendChild(type); selectedElement.appendChild(amount); selectedElement.appendChild(goldImg); selectedElement.appendChild(price); selectedElement.appendChild(delBtn); selectedElements.appendChild(selectedElement); }) let sendAllBtn = createEl('button', btnSendAllStyle, 'SEND'); sendAllBtn.addEventListener('click', () => { let conf = confirm('Send?'); if (!conf) return; elementsToSend.forEach((el, index) => { function sendElements(formData) { let http = new XMLHttpRequest; http.open('POST', '/el_transfer.php', !0) http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded') http.setRequestHeader('Content-Type', 'text/plain; charset=windows-1251') http.send(formData); http.onload = () => { let children = document.getElementById('selectedElements').children; let okay = createEl('div', '', '✔') children[index].appendChild(okay); } http.onerror = () => { let children = document.getElementById('selectedElements').children; let error = createEl('div', '', '✘') children[index].appendChild(error); } } function sendFormData() { let form = new FormData() form.append('nick', el.nick) form.append('eltype', el.eltype) form.append('count', el.count) form.append('gold', el.gold) form.append('comment', el.comment) form.append('sendtype', '1') form.append('art_id', '') form.append('sign', el.sign); const data = [...form.entries()]; return data .map(x => `${x[0]}=${x[1]}`) .join('&') } sendElements(getSendArray(sendFormData())); }) }) panel.appendChild(selectType); panel.appendChild(nickInput); panel.appendChild(amountInput); panel.appendChild(priceInput); panel.appendChild(addElemBtn); panel.appendChild(sendAllBtn); container.appendChild(panel); container.appendChild(selectedElements); parentTable.appendChild(container); } if (location.href === 'https://my.lordswm.com/transfer.php' || location.href === 'https://www.heroeswm.ru/transfer.php') { let table = document.getElementsByTagName('table')[1]; let panel = createEl('div', 'display: flex; flex-direction: column; width: 200px;'); let container = createEl('div', 'position: absolute; display:flex; top: 133px;left: 37.5%; width: 700px; text-align: center;'); let selectedElements = createEl('div', 'display: flex; flex-direction: column; width: 100%;'); selectedElements.id = 'selectedElements'; let nickInput = createEl('input', styleGray, '', 'NICK', 'text'); let goldInput = createEl('input', styleGray, '', 'GOLD | ЗОЛОТО', 'text'); let woodInput = createEl('input', styleGray, '', 'WOOD | ДЕРЕВО', 'text'); let oreInput = createEl('input', styleGray, '', 'ORE | РУДА', 'text'); let mercuryInput = createEl('input', styleGray, '', 'MERCURY | РТУТЬ', 'text'); let sulphurInput = createEl('input', styleGray, '', 'SULPHUR | СЕРА', 'text'); let crystalInput = createEl('input', styleGray, '', 'CRYSTAL | КРИСТАЛЛ', 'text'); let gemInput = createEl('input', styleGray, '', 'GEM | САМОЦВЕТ', 'text'); let textInput = createEl('input', styleGray, '', 'TEXT', 'text'); let addHeroBtn = createEl('button', `${styleGray} cursor: pointer;`, 'ADD'); let elementsToSend = []; addHeroBtn.addEventListener('click', (e) => { e.preventDefault(); if (!nickInput.value) { alert('Enter a nickname'); return }; let id = Date.now(); elementsToSend.push({ id, nick: nickInput.value, gold: goldInput.value || 0, wood: woodInput.value || 0, ore: oreInput.value || 0, mercury: mercuryInput.value || 0, sulphur: sulphurInput.value || 0, crystal: crystalInput.value || 0, gem: gemInput.value || 0, desc: textInput.value || '', sign: myCode, }); let selectedElement = createEl('div', 'display: flex;'); let nick = createEl('div', displayElemStyle, `${nickInput.value}`); let gold = createEl('div', displayElemStyle, `${goldInput.value || 0}`); let wood = createEl('div', displayElemStyle, `${woodInput.value || 0}`); let ore = createEl('div', displayElemStyle, `${oreInput.value || 0}`); let mercury = createEl('div', displayElemStyle, `${mercuryInput.value || 0}`); let sulphur = createEl('div', displayElemStyle, `${sulphurInput.value || 0}`); let crystal = createEl('div', displayElemStyle, `${crystalInput.value || 0}`); let gem = createEl('div', displayElemStyle, `${gemInput.value || 0}`); let text = createEl('div', displayElemStyle, `${textInput.value || ''}`); let goldImg = createEl('img', 'height: 18px; width: 18px'); goldImg.src = 'https://cfcdn.lordswm.com/i/r/48/gold.png?v=3.23de65'; let woodImg = createEl('img', 'height: 18px; width: 18px'); woodImg.src = 'https://cfcdn.lordswm.com/i/r/48/wood.png?v=3.23de65'; let oreImg = createEl('img', 'height: 18px; width: 18px'); oreImg.src = 'https://cfcdn.lordswm.com/i/r/48/ore.png?v=3.23de65'; let mercuryImg = createEl('img', 'height: 18px; width: 18px'); mercuryImg.src = 'https://cfcdn.lordswm.com/i/r/48/mercury.png?v=3.23de65'; let sulphurImg = createEl('img', 'height: 18px; width: 18px'); sulphurImg.src = 'https://cfcdn.lordswm.com/i/r/48/sulfur.png?v=3.23de65'; let crystalImg = createEl('img', 'height: 18px; width: 18px'); crystalImg.src = 'https://cfcdn.lordswm.com/i/r/48/crystals.png?v=3.23de65'; let gemImg = createEl('img', 'height: 18px; width: 18px'); gemImg.src = 'https://cfcdn.lordswm.com/i/r/48/gems.png?v=3.23de65'; let delBtn = createEl('div', `${displayElemStyle}; cursor: pointer;`, 'X'); delBtn.addEventListener('click', () => { elementsToSend = elementsToSend.filter(el => el.id !== id); selectedElement.remove(); }) selectedElement.appendChild(nick); selectedElement.appendChild(goldImg); selectedElement.appendChild(gold); selectedElement.appendChild(woodImg); selectedElement.appendChild(wood); selectedElement.appendChild(oreImg); selectedElement.appendChild(ore); selectedElement.appendChild(mercuryImg); selectedElement.appendChild(mercury); selectedElement.appendChild(sulphurImg); selectedElement.appendChild(sulphur); selectedElement.appendChild(crystalImg); selectedElement.appendChild(crystal); selectedElement.appendChild(gemImg); selectedElement.appendChild(gem); selectedElement.appendChild(text); selectedElement.appendChild(delBtn); selectedElements.appendChild(selectedElement); }) let sendAllBtn = createEl('button', btnSendAllStyle, 'SEND | ОТПРАВИТЬ'); sendAllBtn.addEventListener('click', (e) => { e.preventDefault(); let conf = confirm('Send?'); if (!conf) return; elementsToSend.forEach((el, index) => { function sendResources(formData) { let http = new XMLHttpRequest; http.open('POST', '/transfer.php', !0) http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded') http.setRequestHeader('Content-Type', 'text/plain; charset=windows-1251') http.send(formData); http.onload = () => { let children = document.getElementById('selectedElements').children; let okay = createEl('div', '', '✔') children[index].appendChild(okay); } http.onerror = () => { let children = document.getElementById('selectedElements').children; let error = createEl('div', '', '✘') children[index].appendChild(error); } } function sendFormData() { let form = new FormData() form.append('nick', el.nick) form.append('gold', el.gold) form.append('wood', el.wood) form.append('ore', el.ore) form.append('mercury', el.mercury) form.append('sulphur', el.sulphur) form.append('crystal', el.crystal) form.append('gem', el.gem) form.append('desc', el.desc) form.append('sign', el.sign); const data = [...form.entries()]; return data .map(x => `${x[0]}=${x[1]}`) .join('&') } sendResources(getSendArray(sendFormData())); }) }) panel.appendChild(nickInput); panel.appendChild(goldInput); panel.appendChild(woodInput); panel.appendChild(oreInput); panel.appendChild(mercuryInput); panel.appendChild(sulphurInput); panel.appendChild(crystalInput); panel.appendChild(gemInput); panel.appendChild(textInput); panel.appendChild(addHeroBtn); panel.appendChild(sendAllBtn); container.appendChild(panel); container.appendChild(selectedElements); table.appendChild(container); } })();