Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // ==UserScript==
- // @name Wystawianie itemków
- // @version 1.1
- // @author yetrr#4049
- // @match https://zemyna.margonem.pl/
- // @require https://pastebin.com/raw/Vs5sxakw
- // @grant none
- // ==/UserScript==
- // Sekcja konfiguracji
- const config = {
- putAuction: {
- // Czy wystawianie na aukcje ma być włączone
- enabled: true,
- // Za ile można licytować
- // Wpisz '', jeśli ma nie wystawiać na licytację
- bidPrice: '',
- // Za ile ma wystawić
- // Wpisz '', jeśli ma nie wystawiać na kup teraz
- buyPrice: '1,5m',
- // Na ile wystawić (czas w godzinach, maks. 168h)
- time: 168,
- // Minimalny poziom przemiotu do wystawienia
- minLvl: 100,
- // Maksymalny poziom przedmiotu do wystawienia
- maxLvl: 270,
- },
- sendGold: {
- // Czy wysyłanie golda ma być włączone
- enabled: false,
- // Minimalna ilość złota, od której ma wysyłać
- minAmount: '25m',
- // Ilość złota, którą ma zostawiać
- saveGold: '5m',
- // Na jaki nick ma wysyłać
- target: 'Kapitan Wycieczki'
- },
- getMails: {
- // Czy ma odbierać przedmioty z poczty
- enabled: true
- }
- };
- let opened = false, lastClick = 0, lastTalk = 0, stayCounter = 0;
- const options = {
- 1: 0, 2: 1,
- 9: 2, 35: 3,
- 33: 4, 574: 5,
- 589: 6, 114: 7,
- };
- function sleep(ms) {
- return new Promise(resolve => setTimeout(resolve, ms));
- }
- function calcFreeSpace() {
- return [0, 1, 2].reduce((total, curr) => total + g.bags[curr][0] - g.bags[curr][1], 0);
- }
- function checkMenogramBookmark() {
- if ($(".ui-draggable:contains('Aktualna wersja bota')").length === 0) {
- $("#lagmeter").click();
- }
- if ($("button:contains('Relog')").css('display') === 'none') {
- $("button:contains('Exp/e2')").click();
- }
- }
- function getMenogramStatus() {
- checkMenogramBookmark();
- return $("label:contains('Stan') > label > input:checked").length === 1;
- }
- function toggleMenogramStatus() {
- $("label:contains('Stan') > label > input").click();
- }
- async function getStartMaps() {
- checkMenogramBookmark();
- const element = $("label:contains('ID map po których ma wracać bot') > textarea");
- if (element.length === 0) {
- await sleep(100);
- return getStartMaps();
- }
- return element.val().split(',').map(it => Number(it));
- }
- function isProperToSell(item) {
- const stat = parseItemStat(item.stat);
- if (item.loc !== 'g' || item.st !== 0 || item.cl >= 15) {
- return false;
- }
- if (item.own !== hero.id || stat.soulbound === null || stat.permbound === null || stat.rarity !== 'unique') {
- return false;
- }
- if (stat.lvl && (stat.lvl < config.putAuction.minLvl || stat.lvl > config.putAuction.maxLvl)) {
- return false;
- }
- return true;
- }
- function getItemsToSell() {
- return Object.values(g.item).filter(item => isProperToSell(item));
- }
- function waitFor(condition, interval = 100, attempts = Infinity) {
- let times = 0;
- const promise = (resolve, reject) => {
- if (condition()) {
- resolve();
- } else if (attempts === -1 || times < attempts) {
- times++;
- setTimeout(() => promise(resolve, reject), interval);
- } else {
- reject();
- }
- };
- return new Promise(promise);
- }
- function goToGateway(x, y) {
- if (hero.x == x && hero.y == y) {
- if (stayCounter++ >= 5) {
- _g('walk');
- stayCounter = 0;
- }
- } else {
- goTo(x, y);
- }
- }
- const main = async () => {
- await sleep(250);
- if (map.name === 'Thuzal') {
- // Disable menogram if player has unique items, gold to send or mails to get
- if (getMenogramStatus() && (
- (config.putAuction.enabled && getItemsToSell().length >= 1) ||
- (config.sendGold.enabled && hero.gold >= parsePrice(config.sendGold.minAmount) + 100) ||
- (config.getMails.enabled && hero.mails >= 1)
- )) {
- toggleMenogramStatus();
- }
- // Check if player has mails to get or gold to send
- if (
- (config.getMails.enabled && hero.mails >= 1) ||
- (config.sendGold.enabled && hero.gold > parsePrice(config.sendGold.minAmount) + 100)
- ) {
- // Go to mailbox
- if (!(hero.x === 72 && hero.y === 19)) {
- goTo(72, 19);
- return;
- }
- // Talk with mailbox
- if (!g.mails && Date.now() - lastTalk >= 350) {
- _g(`talk&id=58930`, () => lastTalk = Date.now());
- return;
- }
- }
- // Check if mailbox is opened and player has mails or gold to send
- if (g.mails) {
- if (config.getMails.enabled && $('.getdel').length >= 1 && calcFreeSpace() > 0) {
- if (Date.now() - lastClick >= 350) {
- $('.getdel')[0].click();
- lastClick = Date.now();
- }
- return;
- }
- if (config.sendGold.enabled && hero.gold >= parsePrice(config.sendGold.minAmount) + 100) {
- if (Date.now() - lastTalk >= 350) {
- const amount = hero.gold - 100 - parsePrice(config.sendGold.saveGold);
- _g('mail&a=send&r=' + esc(config.sendGold.target) + '&gold=' + amount + '&iid=&msg=', () => lastTalk = Date.now());
- }
- return;
- }
- window.hideMails();
- return;
- }
- // Go to auctioneer if player has unique items
- // Otherwise enable menogram and go to start map
- if (config.putAuction.enabled && getItemsToSell().length >= 1) {
- goToGateway(77, 26);
- } else {
- // Enable menogram
- if (!getMenogramStatus()) {
- toggleMenogramStatus();
- }
- // Go to 'Gildia Magów' gateway if current map is not a part of setup
- if ((await getStartMaps()).indexOf(114) === -1) {
- goToGateway(66, 18);
- }
- }
- }
- if (map.name === 'Ratusz Thuzal') {
- // Go to 'Thuzal' gateway
- if (getItemsToSell().length === 0) {
- goToGateway(20, 5);
- return;
- }
- // Go to auctioneer
- if (!(hero.x === 20 && hero.y === 10)) {
- goTo(20, 10);
- return;
- }
- if (!g.auctions && g.talk.id === 0) {
- _g('talk&id=60088');
- } else {
- if (!$('#auction-window .auction-window').length) {
- document.querySelector('#replies > li:nth-child(1)').click();
- return;
- }
- if (!opened) {
- opened = true;
- for (const item of getItemsToSell()) {
- let bidPrice = parsePrice(config.putAuction.bidPrice), buyPrice = parsePrice(config.putAuction.buyPrice);
- _g('ah&action=sell&item=' + item.id + '&price=' + bidPrice + '&buy_out=' + buyPrice + '&time=' + config.putAuction.time + '&is_featured=0');
- await sleep(1500);
- }
- g.auctions.close();
- }
- }
- }
- if (map.name === 'Gsildia Magów') {
- // Go to teleport
- if (!(hero.x === 17 && hero.y === 14)) {
- goTo(17, 14);
- return;
- }
- // Talk with teleport
- if (!g.talk.id && Date.now() - lastTalk >= 350) {
- _g('talk&id=59861', () => lastTalk = Date.now());
- } else if ($('#dialog').css('display') === 'block') {
- const mapId = (await getStartMaps())[0];
- $(`#dlgin li:eq(${options[mapId]})`).click();
- }
- }
- }
- // Wait for game load
- waitFor(() => {
- return window.g && window.g.init > 4;
- }).then(() => {
- const old = window.parseInput;
- window.parseInput = (d, callback, xhr) => {
- old(d, callback, xhr);
- main();
- }
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement