// ==UserScript==
// @name repair
// @namespace http://tampermonkey.net/
// @version 0.5.2
// @description try to take over the world!
// @author SalmonGod
// @license MIT
// @include /^https{0,1}:\/\/((www|my)\.(heroeswm|lordswm)\.(ru|com)|178\.248\.235\.15)\/(inventory|mod_workbench).php*/
// @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant none
// ==/UserScript==
(function() {
'use strict';
//common
const createEl = (el, style, innerText, placeholder, className) => {
let element = document.createElement(el);
if (style) element.style = style;
if (innerText) element.innerText = innerText;
if (placeholder) element.placeholder = placeholder;
if (className) element.className = className;
return element;
}
let toogleRepair = JSON.parse(localStorage.getItem('toogleRepair'));
if (toogleRepair === null) localStorage.setItem('toogleRepair', JSON.stringify(false));
const toogle = createEl('div', 'margin: 7px', `${toogleRepair === false ? 'Auto repair off' : 'Auto repair on'}`, '', 'btn_standard inv_cut_text btn_txt_hover');
toogle.addEventListener('click', () => {
localStorage.setItem('toogleRepair', JSON.stringify(!toogleRepair));
location.reload();
})
//common constants
const links = ['https://my.lordswm.com', 'https://www.heroeswm.ru'];
const link = location.href.slice(0,22) === 'https://my.lordswm.com' ? links[0] : links[1];
//checking if there some arts to repair
const checkRepairs = () => {
const xhr = new XMLHttpRequest();
xhr.open('get', `${link}/inventory.php`);
xhr.setRequestHeader('Content-type', 'text/html; charset=windows-1251');
if (xhr.overrideMimeType) {
xhr.overrideMimeType('text/html; charset=windows-1251');
}
xhr.addEventListener('load', () => {
let parser = new DOMParser();
let doc = parser.parseFromString(xhr.responseText, "text/html");
const peredachki = [...doc.querySelectorAll('.inv_peredachka')];
if (peredachki.length > 0) location.href = `${link}/inventory.php`;
})
xhr.send();
}
//code for workbench
if (location.href.includes(`${link}/mod_workbench.php`)) {
if (toogleRepair === false) return;
console.log(toogleRepair)
let element = document.getElementsByClassName('wbwhite')[2];
if (element === undefined) {
checkRepairs()
}
setInterval(() => {
location.reload();
}, 180000)
}
//code for inventory
if (location.href === `${link}/inventory.php`) {
//Local storage settings
let friendsListRepair = JSON.parse(localStorage.getItem('friendsListRepair'));
if (friendsListRepair === null) localStorage.setItem('friendsListRepair', JSON.stringify([]));
let wageRepair = JSON.parse(localStorage.getItem('wageRepair'));
if (wageRepair === null) {
localStorage.setItem('wageRepair', JSON.stringify(101));
location.reload();
};
//UI
const uiBlock = document.getElementsByClassName('container_block')[0];
const repairMenu = createEl('div', '','','','inv_note_kukla');
//wage UI block
const wageBlock = createEl('div', 'display: flex; gap: 3px; padding: 10px;', '','','inv_note_kukla');
const wageInput = createEl('input','','','change wage here','divs_inline');
wageInput.addEventListener('input', () => {
wage.innerText = `wage: ${wageInput.value}`;
localStorage.setItem('wageRepair', wageInput.value);
wageRepair = Number(wageInput.value);
})
const wage = createEl('div','height: 30px',`wage: ${wageRepair | 101}`,'','btn_standard inv_cut_text btn_txt_hover');
wageBlock.appendChild(wageInput);
wageBlock.appendChild(wage);
//create friends helper
const createFriend = (bro) => {
const friend = createEl('li', 'display: flex; gap: 3px', bro);
const deleteFriendBtn = createEl('div', 'cursor: pointer', '✘');
deleteFriendBtn.addEventListener('click', () => {
friendsListRepair = friendsListRepair.filter(el => el !== bro);
localStorage.setItem('friendsListRepair', JSON.stringify(friendsListRepair));
friend.remove();
})
friend.appendChild(deleteFriendBtn);
return friend;
}
//friends UI block
const friendsList = createEl('ul', '', 'Friends list');
for (let i = 0; i < friendsListRepair.length; i++) {
friendsList.appendChild(createFriend(friendsListRepair[i]));
}
const addFriendBlock = createEl('div', 'display: flex; padding: 10px;')
const addFriendsInput = createEl('input', '', '', 'Friend nickname', 'divs_inline');
const addFriendsBtn = createEl('div', 'height: 30px;', 'ADD', '', 'btn_standard inv_cut_text btn_txt_hover');
addFriendsBtn.addEventListener('click', () => {
let val = addFriendsInput.value;
val = val.split(',');
val.forEach(val => {
friendsListRepair.push(val);
friendsList.appendChild(createFriend(val));
localStorage.setItem('friendsListRepair', JSON.stringify(friendsListRepair));
});
addFriendsInput.value = '';
});
addFriendBlock.appendChild(addFriendsInput);
addFriendBlock.appendChild(addFriendsBtn);
//merging UI
repairMenu.appendChild(addFriendBlock);
repairMenu.appendChild(friendsList)
uiBlock.appendChild(toogle)
uiBlock.appendChild(wageBlock)
uiBlock.appendChild(repairMenu)
//repair settings
const allTradesToMe = document.getElementById('all_trades_to_me');
let peredachki;
if (allTradesToMe) {
peredachki = [...allTradesToMe.getElementsByClassName('inv_peredachka')];
peredachki = peredachki.filter(peredachka => peredachka.innerText.includes('%'));
}
const repairItem = () => {
if (peredachki) {
let item = peredachki[0];
let charNick = item.getElementsByTagName('a')[0].innerText;
let percent = Number(item.getElementsByClassName('inv_request_info')[0].innerText.match(/\d+%/gi)[0].replace('%', ''));
let buttons = item.getElementsByClassName('inv_buttons_to_right ');
let denyRepair = () => {
buttons[0].children[1].firstChild.click();
}
let acceptRepair = () => {
buttons[0].children[0].click();
let confirm = document.getElementsByClassName('confirm')[0].click();
}
if (friendsListRepair.includes(charNick) && percent >= 100) {
acceptRepair();
} else if (!friendsListRepair.includes(charNick) && percent >= Number(wageRepair | 101)) {
acceptRepair();
} else {
denyRepair();
}
} else {
setInterval(() => {
location.reload();
}, 180000)
}
}
if (toogleRepair === true) repairItem();
}
})();