Czogista

Customowe setUpy menogram 2.8

Aug 4th, 2020 (edited)
506
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // ==UserScript==
  2. // @name         Customowe setUpy menogram
  3. // @namespace    http://tampermonkey.net/
  4. // @version      2
  5. // @description  Nowa lepsza wersja customowych setupów umieszczona w oknie bota. W razie błędów proszę pisać: Czogi#0938
  6. // @author       Czogi
  7. // @match        http://*.margonem.pl/
  8. // @grant        none
  9. // ==/UserScript==
  10. const enabled = true;
  11. const sets = [
  12.   {
  13.     type: "exp",
  14.     name: "test",
  15.     travMaps: "1,2,3",
  16.     minLvl: 0,
  17.     maxLvl: 300,
  18.     expMaps: "1,2,3",
  19.   },
  20.   {
  21.     type: "exp",
  22.     name: "test 2",
  23.     travMaps: "3,2,1",
  24.     minLvl: 80,
  25.     maxLvl: 90,
  26.     expMaps: "1,9,3,7,6,4,5,3,1,2",
  27.   },
  28.   {
  29.     type: "e2",
  30.     name: "test",
  31.     travMaps: "3,2,1",
  32.     lvl: 3,
  33.     mapName: "Ithan",
  34.     eliteName: "Mietek",
  35.     cords: [0, 0],
  36.   },
  37.   {
  38.     type: "e2",
  39.     name: "test 2",
  40.     travMaps: "100,200,300,400",
  41.     lvl: 36,
  42.     mapName: "Adnarum Ilami",
  43.     eliteName: "Mushita",
  44.     cords: [0, 0],
  45.   },
  46.   {
  47.     type: "other",
  48.     name: "test",
  49.     travMaps:
  50.       "3,3,2,2,1,1" /*mapName oraz cords nie są wymagane ale mozna je wpisać*/,
  51.   },
  52.   {
  53.     type: "other",
  54.     name: "test 2",
  55.     travMaps:
  56.       "3,3,2,2,1,1,3,3,2,2,1,1" /*mapName oraz cords nie są wymagane ale mozna je wpisać*/,
  57.   },
  58. ];
  59.  
  60. const sleep = async (time) => {
  61.   return await new Promise((resolve) => setTimeout(resolve, time));
  62. };
  63.  
  64. String.prototype.escapeDiacritics = function () {
  65.   return this.replace(/ą/g, "a")
  66.     .replace(/Ą/g, "A")
  67.     .replace(/ć/g, "c")
  68.     .replace(/Ć/g, "C")
  69.     .replace(/ę/g, "e")
  70.     .replace(/Ę/g, "E")
  71.     .replace(/ł/g, "l")
  72.     .replace(/Ł/g, "L")
  73.     .replace(/ń/g, "n")
  74.     .replace(/Ń/g, "N")
  75.     .replace(/ó/g, "o")
  76.     .replace(/Ó/g, "O")
  77.     .replace(/ś/g, "s")
  78.     .replace(/Ś/g, "S")
  79.     .replace(/ż/g, "z")
  80.     .replace(/Ż/g, "Z")
  81.     .replace(/ź/g, "z")
  82.     .replace(/Ź/g, "Z");
  83. };
  84.  
  85. class SetUp {
  86.   constructor(set, index) {
  87.     this.type = set["type"];
  88.     this.name = set["name"];
  89.     this.travMaps = set["travMaps"];
  90.     switch (set.type) {
  91.       case "exp":
  92.         this.minLvl = set["minLvl"];
  93.         this.maxLvl = set["maxLvl"];
  94.         this.expMaps = set["expMaps"];
  95.         break;
  96.       case "e2":
  97.         this.lvl = set["lvl"];
  98.         this.mapName = set["mapName"];
  99.         this.eliteName = set["eliteName"];
  100.         this.cords = set["cords"];
  101.         break;
  102.       case "other":
  103.         this.lvl = 0;
  104.         this.mapName =
  105.           typeof set["mapName"] != "undefined" ? set["mapName"] : "brak";
  106.         this.cords = typeof set["cords"] != "undefined" ? set["cords"] : [0, 0];
  107.         break;
  108.       default:
  109.         return alert("Podano nieprawidłowy typ setUpa.");
  110.     }
  111.     this.elem = document.createElement("option");
  112.     this.elem.text =
  113.       this.name +
  114.       ` ${
  115.         this.type == "exp"
  116.           ? ` (${this.minLvl}-${this.maxLvl})`
  117.           : this.type == "e2"
  118.           ? `(${this.lvl}lvl)`
  119.           : ""
  120.       }`;
  121.     this.elem.value = `c|${this.type}|${index}`;
  122.   }
  123. }
  124. class MenoSetUps {
  125.   constructor() {
  126.     this.userID = getCookie("user_id");
  127.     this.char = getCookie("mchar_id");
  128.     this.mode = localStorage["last_t"];
  129.     this.setUps = { exp: [], e2: [], other: [] };
  130.     for (const set of sets) {
  131.       this.setUps[set.type].push(new SetUp(set, this.setUps[set.type].length));
  132.     }
  133.   }
  134.   async init() {
  135.     while (
  136.       this.mode != "exp" ||
  137.       !document.getElementsByClassName("b_set")[0] ||
  138.       !document.getElementsByClassName("b_set_filter")[0]
  139.     ) {
  140.       await sleep(200);
  141.       this.mode = localStorage["last_t"];
  142.     }
  143.     this.filterSelect = document.getElementsByClassName("b_set_filter")[0];
  144.     this.setSelect = document.getElementsByClassName("b_set")[0];
  145.     this.filterSelect.style.width = "100px";
  146.     const separation = document.createElement("option");
  147.     separation.text = "        ";
  148.     separation.disabled = true;
  149.     this.filterSelect.appendChild(separation);
  150.     for (const mode of [
  151.       ["Customowe Wszystko", "b_c_set_all"],
  152.       ["Customowy Exp", "b_c_set_exp"],
  153.       ["Customowe e2", "b_c_set_e2"],
  154.       ["Customowe Inne", "b_c_set_other"],
  155.       ["Customowe Dedykowane", "b_c_set_forme"],
  156.     ]) {
  157.       const filterElem = document.createElement("option");
  158.       filterElem.text = mode[0];
  159.       filterElem.value = mode[1];
  160.       this.filterSelect.appendChild(filterElem);
  161.     }
  162.  
  163.     this.appendSetUps();
  164.   }
  165.   appendSetUps() {
  166.     for (const elem of Object.entries(this.setUps)) {
  167.       const header = document.createElement("option");
  168.       header.text =
  169.         (elem[0] != "exp" ? "Customowe " : "Customowy ") +
  170.         elem[0][0].replace("o", "i").toUpperCase() +
  171.         elem[0].slice(1).replace("ther", "nne");
  172.       header.text;
  173.       header.disabled = true;
  174.       this.setSelect.appendChild(header);
  175.       for (const set of elem[1]) {
  176.         this.setSelect.appendChild(set.elem);
  177.       }
  178.     }
  179.     this.setSelect.onchange = () => {
  180.       const optValue = this.setSelect.options[this.setSelect.selectedIndex]
  181.         .value;
  182.       const optSplit = optValue.split("|");
  183.       if (optSplit[0] != "c") {
  184.         return;
  185.       }
  186.       const setUp = this.setUps[optSplit[1]][parseInt(optSplit[2])];
  187.       switch (optSplit[1]) {
  188.         case "exp":
  189.           if (!document.getElementsByClassName("b_mode")[0].checked)
  190.             document.getElementsByClassName("b_mode")[0].click();
  191.           localStorage.setItem(this.userID + "expMode" + this.char, "on");
  192.           localStorage.setItem(
  193.             this.userID + "otherMap" + this.char,
  194.             setUp.expMaps
  195.           );
  196.           localStorage.setItem(
  197.             this.userID + "mapsRet" + this.char,
  198.             setUp.travMaps
  199.           );
  200.           localStorage.setItem(this.userID + "myMax" + this.char, setUp.maxLvl);
  201.           localStorage.setItem(this.userID + "myMin" + this.char, setUp.minLvl);
  202.           document.getElementsByClassName("b_exp_ids")[0].value = setUp.expMaps;
  203.           document.getElementsByClassName("b_back_ids")[0].value =
  204.             setUp.travMaps;
  205.           document.getElementsByClassName("b_mob_lvl_min")[0].value =
  206.             setUp.minLvl;
  207.           document.getElementsByClassName("b_mob_lvl_max")[0].value =
  208.             setUp.maxLvl;
  209.           break;
  210.         case "e2":
  211.           if (document.getElementsByClassName("b_mode")[0].checked)
  212.             document.getElementsByClassName("b_mode")[0].click();
  213.           localStorage.setItem(this.userID + "expMode" + this.char, "off");
  214.           localStorage.setItem(
  215.             this.userID + "mainMap" + this.char,
  216.             setUp.mapName
  217.           );
  218.           localStorage.setItem(
  219.             this.userID + "mapsRet" + this.char,
  220.             setUp.travMaps
  221.           );
  222.           localStorage.setItem(
  223.             this.userID + "tytData" + this.char,
  224.             localStorage.getItem(this.userID + "tytData" + this.char) +
  225.               " " +
  226.               setUp.eliteName
  227.           );
  228.           localStorage.setItem(
  229.             "myback" +
  230.               this.char +
  231.               window.map.name.replace(" ", "_").escapeDiacritics(),
  232.             setUp.cords.join(",")
  233.           );
  234.           document.getElementsByClassName("b_names")[0].value +=
  235.             " " + setUp.eliteName;
  236.           document.getElementsByClassName(
  237.             "b_back_cords"
  238.           )[0].value = setUp.cords.join(",");
  239.           document.getElementsByClassName("b_map_name")[0].value =
  240.             setUp.mapName;
  241.           document.getElementsByClassName("b_back_ids")[0].value =
  242.             setUp.travMaps;
  243.           break;
  244.         case "other":
  245.           if (document.getElementsByClassName("b_mode")[0].checked)
  246.             document.getElementsByClassName("b_mode")[0].click();
  247.           localStorage.setItem(this.userID + "expMode" + this.char, "off");
  248.           localStorage.setItem(
  249.             this.userID + "mainMap" + this.char,
  250.             setUp.mapName
  251.           );
  252.           localStorage.setItem(
  253.             this.userID + "mapsRet" + this.char,
  254.             setUp.travMaps
  255.           );
  256.           localStorage.setItem(
  257.             "myback" +
  258.               this.char +
  259.               window.map.name
  260.                 .replace(" ", "_")
  261.                 .replace("-", "_")
  262.                 .escapeDiacritics(),
  263.             setUp.cords.join(",")
  264.           );
  265.           document.getElementsByClassName(
  266.             "b_back_cords"
  267.           )[0].value = setUp.cords.join(",");
  268.           document.getElementsByClassName("b_map_name")[0].value =
  269.             setUp.mapName;
  270.           document.getElementsByClassName("b_back_ids")[0].value =
  271.             setUp.travMaps;
  272.           break;
  273.       }
  274.     };
  275.     this.filterSelect.onchange = () => {
  276.       for (const option of Object.values(this.setUps)) {
  277.         option.forEach((el) => {
  278.           el.elem.style.display = "unset";
  279.         });
  280.         switch (
  281.           this.filterSelect.options[this.filterSelect.selectedIndex].value
  282.         ) {
  283.           case "b_c_set_all":
  284.             break;
  285.           case "b_set_all":
  286.             break;
  287.           case "b_c_set_exp":
  288.             option.forEach((el) => {
  289.               if (el.type != "exp") {
  290.                 el.elem.style.display = "none";
  291.               }
  292.             });
  293.             break;
  294.           case "b_c_set_e2":
  295.             option.forEach((el) => {
  296.               if (el.type != "e2") {
  297.                 el.elem.style.display = "none";
  298.               }
  299.             });
  300.             break;
  301.           case "b_c_set_other":
  302.             option.forEach((el) => {
  303.               if (el.type != "other") {
  304.                 el.elem.style.display = "none";
  305.               }
  306.             });
  307.             break;
  308.           case "b_c_set_forme":
  309.             option.forEach((el) => {
  310.               if (
  311.                 el.type != "exp" ||
  312.                 (el.type == "exp" &&
  313.                   (el.minLvl + 17 <= window.hero.lvl ||
  314.                     el.maxLvl - 17 >= window.hero.lvl))
  315.               ) {
  316.                 el.elem.style.display = "none";
  317.               }
  318.             });
  319.             break;
  320.           default:
  321.             option.forEach((el) => {
  322.               el.elem.style.display = "none";
  323.             });
  324.             break;
  325.         }
  326.       }
  327.     };
  328.   }
  329. }
  330. if (enabled) {
  331.   const menoSets = new MenoSetUps();
  332.   menoSets.init();
  333. }
  334.  
Advertisement
Add Comment
Please, Sign In to add comment