Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //3.3 - naprawiony bug z nieładowaniem postaci gracza po wejściu na nową mapę do momentu zrobienia kroku, dodano "mas/exit-h64c.gif" to listy grafik npc-drzwi, dodano pokazywanie "mgły wojny"
- //3.2
- //-(SI) ppm na gracza na minimapie -> menu takie jakie by się otworzyło po kliknięciu na mapie
- //-kompatybilność z dodatkiem ccarderra pokazującym graczy z innych światów
- //-naprawiony bug z grobami
- //3.1.9b - nowe respy
- //3.1.9 - oczywiście że 3.1.8 coś popsuło :^)
- //3.1.8 - uzupełniono elity do questa dziennego na .com
- //3.1.7 - czemu każdą aktualizacją coś psuję
- //3.1.6 - to coś z cookie __mExts i kompatybilność z jedną rzeczą którą robię (w wersji 2.x była ale zapomniałem robiąc 3.0)
- //3.1.5 - wersja na stary silnik xd
- //3.1.4 - ciągle coś psuję
- //3.1.3 - ._.' warto używać isset
- //3.1.2 - zmiany w chodzeniu postaci po kliknięciu punktu na mapie (teraz moze iść gdziekolwiek sie kliknie), optymalizacje dla urządzeń mobilnych (toucheventy mają mniejsze opóźnienie)
- //3.1.1 - naprawa głupiego błędu prezez który minimapa psuła grę
- //3.1 - pokazywanie qm przy npc na minimapie, poprawione wartości przy których elementy dolnego paska są chowane, licznik instalacji (przez dislike niepublicznego dodatku)
- //3.0 - dodatek napisany od nowa
- window.miniMapPlus = new (function() {
- var interface = (function() {
- if (typeof API != "undefined" && typeof Engine != "undefined" && typeof margoStorage == "undefined") {
- return "new"; //NI
- } else if (typeof dbget == "undefined" && typeof proceed == "undefined") {
- return "old"; //SI
- } else {
- return "superold"; //Stary silnik
- };
- })();
- var self = this;
- var masks = ["obj/cos.gif", "mas/nic32x32.gif", "mas/nic64x64.gif"];
- var gws = ["mas/exit-ith.gif", "mas/exit-ith1.gif", "mas/exit.gif", "mas/drzwi.gif", "obj/drzwi.gif", "mas/exit-h64c.gif"];
- var oldPos = {x: -1, y: -1};
- var otherRanks = ["Administrator", "Super Mistrz Gry", "Mistrz Gry", "Moderator Chatu", "Super Moderator Chatu"];
- var $map,
- $wrapper,
- $info,
- $search,
- $userStyle,
- objScale,
- objSize,
- $chatInput,
- $searchTxt;
- var search = {
- type: "",
- data: ""
- };
- var manualMode = false;
- var innerDotKeys = ["friend", "enemy", "clan", "ally"];
- this.version = "3.3";
- var settings = new (function() {
- var path = "mmp";
- var Storage = interface != "old" ? API.Storage : margoStorage;
- this.set = function(p, val) {
- Storage.set(path + p, val);
- };
- this.get = function(p) {
- return Storage.get(path + p);
- };
- this.remove = function(p) {
- try {
- Storage.remove(path + p);
- } catch (e) {};
- };
- this.exist = function() {
- return Storage.get(path) != null;
- };
- })();
- var mobileDevice = (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) || settings.get("/forceMobileMode"));
- const $visibility = (function() {
- let $div = document.createElement("div");
- $div.classList.add("mmp-visibility");
- return $div;
- })();
- this.initSettings = function() {
- if (!settings.exist()) {
- this.setDefaultSettings();
- } else {
- this.fixSettings();
- };
- };
- this.fixSettings = function() {
- var loaded = settings.get("");
- var def = this.getDefaultSettings();
- var overwrite = false;
- for (var key in def) {
- if (!isset(loaded[key])) {
- loaded[key] = def[key];
- overwrite = true;
- };
- };
- if (overwrite) settings.set("", loaded);
- };
- this.setDefaultSettings = function() {
- settings.set("", this.getDefaultSettings());
- };
- this.convertOldSettings = function(json) {
- var sett = JSON.parse(json);
- sett.darkmode = false;
- sett.altmobilebtt = false;
- sett.mapsize = 1;
- sett.minlvl = parseInt(sett.minlvl);
- sett.opacity = 1 - sett.opacity;
- if (isNaN(sett.minlvl)) sett.minlvl = 1;
- localStorage.removeItem("miniMapPlus");
- return sett;
- };
- this.getDefaultSettings = function() {
- var oldVersion = localStorage.getItem("miniMapPlus");
- if (oldVersion) return this.convertOldSettings(oldVersion);
- return {
- show: 82,
- minlvl: "1",
- colors: {
- hero: "#FF0000",
- other: "#FFFFFF",
- friend: "#08ad00",
- enemy: "#FF0000",
- clan: "#08ad00",
- ally: "#9eff91",
- npc: "#ddff00",
- mob: "#222222",
- elite: "#00ffe9",
- elite2: "#039689",
- elite3: "#007500",
- heros: "#c6ba35",
- titan: "#809912",
- item: "#f56bff",
- gw: "#0000FF",
- },
- trackedNpcs: [],
- trackedItems: [],
- maxlvl: 13,
- mapsize: 1,
- opacity: 1,
- interpolerate: true,
- darkmode: false,
- showqm: true,
- showevonetwork: true
- };
- };
- this.getInstallSource = function() {
- if (interface != "old") return "addon";
- var panelAddons = getCookie("__mExts");
- if (panelAddons == null) return "addon";
- var srcs = {
- p: "panel dodatków (pub.)",
- d: "dev",
- v: "panel dodatków"
- };
- for (var i in srcs) {
- if (panelAddons.indexOf(i+"64196") > -1) return srcs[i];
- };
- return "addon";
- };
- this.initHTML = function() {
- $wrapper = document.createElement("div");
- $wrapper.classList.add("mmpWrapper");
- $map = document.createElement("div");
- $map.classList.add("mmpMap");
- if (!mobileDevice) $map.addEventListener("click", this.goTo);
- else $map.addEventListener("touchstart", this.goTo);
- $map.addEventListener("contextmenu", this.rclick);
- var $bottombar = document.createElement("div");
- $bottombar.classList.add("mmpBottombar");
- $info = document.createElement("span");
- $info.innerHTML = "miniMapPlus by <a href='https://www.margonem.pl/?task=profile&id=3779166' target='_blank'>Priweejt</a> | ";
- $bottombar.appendChild($info);
- $searchTxt = document.createElement("span");
- $searchTxt.innerHTML = "Szukaj: ";
- $bottombar.appendChild($searchTxt);
- $search = document.createElement("input");
- $search.addEventListener("keyup", this.searchBarHandler);
- $bottombar.appendChild($search);
- var $settings = document.createElement("img");
- $settings.src = "http://i.imgur.com/S7FugOv.png";
- $settings.classList.add("mmpSettingIcon");
- $settings.addEventListener("click", niceSettings.toggle);
- $settings.setAttribute(interface == "new" ? "data-tip" : "tip", "Ustawienia");
- $bottombar.appendChild($settings);
- $wrapper.appendChild($map);
- $wrapper.appendChild($bottombar);
- if (interface == "new") document.querySelector(".game-window-positioner").appendChild($wrapper);
- else if (interface == "old") document.querySelector("#centerbox2").appendChild($wrapper);
- else document.querySelector("body").appendChild($wrapper);
- this.appendMainStyles();
- this.initEventListener();
- };
- this.appendMobileButton = function() {
- if (interface == "old" && mobileDevice) {
- //przycisk otwierania mapy dla urządzeń mobilnych
- var $btt = document.createElement("div");
- $btt.innerHTML = "MM+";
- $btt.classList.add("mmpMobileButton");
- $btt.addEventListener("touchstart", event => {
- self.toggleView();
- event.preventDefault();
- });
- document.getElementById("centerbox2").appendChild($btt);
- };
- };
- this.initEventListener = function() {
- document.addEventListener("keydown", function(e) {
- if (e.target.tagName != "INPUT" && e.target.tagName != "TEXTAREA" && e.keyCode == settings.get("/show")) {
- self.toggleView();
- };
- }, false);
- };
- this.appendMainStyles = function() {
- var $style = document.createElement("style");
- var css = `
- .mmpMobileButton {
- z-index: 390;
- border: 1px solid black;
- opacity: 0.7;
- background: white;
- position: absolute;
- top: 240px;
- left: -1px;
- width: 32px;
- height: 32px;
- color: gray;
- text-align: center;
- line-height: 32px;
- font-size: 80%;
- border-radius: 3px;
- border-top-right-radius: 8px;
- }
- .mmpWrapper {
- position: absolute;
- z-index: 380;
- border: 3px solid black;
- border-radius: 5px;
- border-bottom-left-radius: 20px;
- overflow: hidden;
- display: none;
- }
- .mmpWrapper .mmpMap {
- overflow: hidden;
- background-size: 100%;
- position: relative;
- }
- .mmpWrapper .mmpBottombar {
- height: 19px;
- background: #CCCCCC;
- border-top: 1px solid black;
- color: #232323;
- padding-left: 8px;
- line-height: 19px;
- }
- .mmpWrapper .mmpBottombar input {
- height: 11px;
- width: 130px;
- }
- .mmpWrapper .mmpBottombar .mmpSettingIcon {
- height: 15px;
- width: 15px;
- float: right;
- background: rgba(100,100,100,.8);
- border-radius: 5px;
- cursor: pointer;
- margin-top: 2px;
- }
- .mmpMapObject {
- position: absolute;
- }
- .mmpMapObject.hidden {
- display: none;
- }
- .mmpMapObject.hiddenBySearch {
- display: none;
- }
- .mmpMapObject .innerDot{
- position: absolute;
- }
- .mmpMapObject.evoNetwork {
- opacity: 0.5 !important;
- }
- .mmp-visibility {
- pointer-events: none;
- border: 1px solid yellow;
- box-sizing: border-box;
- }
- `;
- $style.innerHTML = css;
- document.head.appendChild($style);
- };
- this.onSettingsUpdate = function() {
- self.appendUserStyles();
- self.objectMgr.manageDisplay();
- self.resetQtrack();
- message("<span style='color:white;'>Zapisano</span>");
- };
- this.appendUserStyles = function() {
- if (!$userStyle) {
- $userStyle = document.createElement("style");
- document.head.appendChild($userStyle);
- };
- $userStyle.innerHTML = this.generateUserCss();
- };
- this.generateUserCss = function() {
- var css = "";
- var colors = settings.get("/colors");
- for (var name in colors) {
- css += this.getSingleCssLine(name, colors[name]);
- };
- css += ".mmpWrapper { opacity: "+settings.get("/opacity")+"; }\n"
- if (settings.get("/interpolerate")) css += ".mmpMapObject { transition: all .5s ease-in-out; }\n";
- if (settings.get("/darkmode")) {
- css += ".mmpWrapper .mmpBottombar { background: #222222; color: #CCCCCC; }\n";
- css += ".mmpWrapper .mmpBottombar input {background: black; border: 1px solid #333333; color: white;}\n";
- css += ".mmpWrapper .mmpBottombar a {color: #009c9c;}\n"
- css += ".mmpMobileButton {background: #222222; color: #CCCCCC;}\n"
- };
- if (settings.get("/altmobilebtt")) {
- css += ".mmpMobileButton { top: 470px; left: 665px; }\n";
- };
- if (!settings.get("/showqm")) {
- css += ".mmpQM { display: none; }\n";
- } else {
- css += ".mmpQM { display: block; position: absolute; top: -200%;}\n";
- };
- return css;
- };
- this.getSingleCssLine = function(name, val) {
- if (innerDotKeys.indexOf(name) > -1) {
- return ".mmpMapObject .innerDot.mmp-"+name+" { background: "+val+";}\n";
- } else {
- return ".mmpMapObject.mmp-"+name+" { background: "+val+";}\n";
- };
- };
- //functionality
- this.rclick = function(e) {
- if (interface != "old") return; //TODO: support other interfaces
- var tar = false
- if (e.target.classList.contains("mmp-other")) tar = e.target;
- else if (e.target.parentElement.classList.contains("mmp-other")) tar = e.target.parentElement; //for others with innerdot
- if (tar) {
- var obj = self.objectMgr.getByElem(tar);
- if (obj.d.evoNetwork) return;
- var id = obj.d.id;
- id = id.split("-")[1]; //id = OTHER-rid, where rid = char id of the other player
- var $other = document.querySelector("#other"+id);
- //hacky solution
- var sm = window.showMenu;
- var otherMenu = false;
- window.showMenu = function(e, menu) {
- otherMenu = menu;
- window.showMenu = sm;
- };
- $other.click();
- if (otherMenu) {
- for (var i in otherMenu) {
- //idk it doesn't hide automatically for whatever reason (I mean it does, but only after it has been clicked 2 times)
- otherMenu[i][1] += ";hideMenu();";
- };
- window.showMenu(e, otherMenu, true);
- };
- e.preventDefault();
- };
- };
- this.goTo = function(e) {
- if (e.type == "touchstart") {
- var offsets = self.getOffsets(e.target);
- e.offsetX = e.touches[0].pageX - offsets[0];
- e.offsetY = e.touches[0].pageY - offsets[1];
- e.stopPropagation();
- };
- var coords = self.getCoordsFromEvent(e);
- if (interface == "new") {
- Engine.hero.autoGoTo({x: coords.x, y: coords.y});
- } else if (interface == "old") {
- self.searchPath.call(window.hero, coords.x, coords.y);
- } else {
- self.oldMargoGoTo(coords.x, coords.y);
- };
- };
- this.oldMargoGoTo = function(x, y) {
- //window,hero.setMousePos(x*32,y*32);
- window.hero.mx = x;
- window.hero.my = y;
- window.global.movebymouse = true;
- this.cancelMouseMovement = true;
- };
- this.getCoordsFromEvent = function(e) {
- if (e.target == $map) {
- return {
- x: Math.round(e.offsetX/(objScale*32)),
- y: Math.round(e.offsetY/(objScale*32))
- };
- } else {
- var obj = this.objectMgr.getByElem(e.target);
- return {
- x: obj.d.x,
- y: obj.d.y
- };
- };
- };
- this.getOffsets = function($el, offs) {
- var offsets = offs ? offs : [0,0];
- offsets[0] += $el.offsetLeft;
- offsets[1] += $el.offsetTop;
- if ($el.parentElement != null) {
- this.getOffsets($el.parentElement, offsets);
- };
- return offsets;
- };
- this.searchBarHandler = function(e) {
- //keyup event handler
- var input = $search.value;
- var noSpace = input.replace(/ /g, "");
- self.objectMgr.resetSearch();
- if (/([0-9]+)-([0-9]+)/.test(noSpace)) {
- self.parseRangeSearch(noSpace);
- } else if (/([0-9]+),([0-9]+)/.test(noSpace)) {
- self.parseCoordSearch(noSpace);
- } else {
- self.parseStringSearch(input);
- };
- };
- this.parseRangeSearch = function(str) {
- var nums = str.split("-");
- this.objectMgr.filterByLvl(parseInt(nums[0]), parseInt(nums[1]));
- };
- this.parseCoordSearch = function(str) {
- var coords = str.split(",");
- this.objectMgr.createCoordMarker(parseInt(coords[0]), parseInt(coords[1]));
- };
- this.parseStringSearch = function(str) {
- this.objectMgr.filterByString(str);
- };
- this.makeTip = function(data) {
- var tip = data.nocenter ? "" : "<center>";
- tip += data.txt+"<div style='text-align: center;color: gray'>("+data.x+","+data.y+")</div>";
- return tip + (data.nocenter ? "" : "</center>");
- };
- this.toggleView = function() {
- $wrapper.style["display"] = $wrapper.style["display"] == "block" ? "none" : "block";
- };
- this.initResponseParser = function() {
- if (interface == "new") {
- API.priw.emmiter.on("before-game-response", data => {
- if (!manualMode) this.parseInput(data);
- })
- } else if (interface == "old") {
- var _parseInput = parseInput;
- parseInput = function(data) {
- if (!manualMode) self.parseInput(data);
- return _parseInput.apply(this, arguments);
- };
- } else {
- API.emmiter.on("response", data => {
- if (!manualMode) self.parseInput(self.parseOldMargonemData(data));
- })
- };
- };
- self.arr2obj = function(arr) {
- var ret = {};
- for (var i=0; i<arr.length; i++) {
- ret[arr[i].id] = arr[i];
- };
- return ret;
- };
- self.parseOldMargonemData = function(data) {
- //data.gw2 = [];
- //data.townname = {};
- /*if (data.elements) {
- if (data.elements.npc) Object.assign(data.npc, this.arr2obj(data.elements.npc));
- if (data.elements.other) Object.assign(data.other, this.arr2obj(data.elements.other));
- }
- if (data.delete) {
- if (data.delete.npc) Object.assign(data.npc, this.arr2obj(data.delete.npc));
- if (data.delete.other) Object.assign(data.other, this.arr2obj(data.delete.other));
- }
- if (data.othermove) {
- Object.assign(data.other, this.arr2obj(data.othermove));
- console.log(data.othermove);
- };*/
- return data;
- };
- this.enableManualMode = function() { //tryb w którym ignoruje wszystkie dane z silnika gry; na potrzeby mojego dodatku klanowego
- manualMode = true;
- };
- this.disableManualMode = function() {
- manualMode = false;
- };
- this.parseInput = function(data) {
- for (var i in data) {
- if (typeof this.eventHandlers[i] == "function") this.eventHandlers[i](data[i]);
- };
- if (data.townname) this.eventHandlers.gateways(data.gw2, data.townname);
- };
- this.eventHandlers = {
- town: function(town) {
- self.loadMap(town);
- },
- npc: function(npc) {
- self.parseNpc(npc);
- },
- gateways: function(gws, townname) {
- self.parseGws(gws, townname);
- },
- other: function(others) {
- self.parseOther(others);
- },
- item: function(items) {
- self.parseItem(items);
- },
- rip: function(rip) {
- self.parseRip(rip);
- }
- };
- this.resetQtrack = function() {
- qTrack.reset();
- var npc = settings.get("/trackedNpcs");
- for (var i=0; i<npc.length; i++) {
- qTrack.add({
- type: "NPC",
- name: npc[i]
- });
- };
- var item = settings.get("/trackedItems");
- for (i=0; i<item.length; i++) {
- qTrack.add({
- type: "ITEM",
- name: item[i]
- });
- };
- };
- this.loadMap = function(town) {
- if (interface == "superold") town.file = town.img;
- this.resetQtrack();
- this.objectMgr.deleteAll();
- var mapsize = interface == "new" ? 700 : 440;
- mapsize = mapsize*settings.get("/mapsize");
- if (town.x > town.y) {
- var height = Math.floor(town.y/town.x * mapsize);
- var width = mapsize;
- } else {
- var width = Math.floor(town.x/town.y * mapsize);
- var height = mapsize;
- };
- objScale = width/(town.x*32);
- objSize = Math.round(objScale*32);
- var left = 0;
- var top = 0;
- if (interface != "new") {
- top = -30;
- left = -144;
- };
- Object.assign($wrapper.style, {
- //$map will stretch the $wrapper
- //width: width + "px",
- //height: (height+20) + "px",
- left: "calc(50% - "+(width/2 - left)+"px)",
- top: "calc(50% - "+(height/2 - top)+"px)"
- });
- Object.assign($map.style, {
- width: width + "px",
- height: height + "px",
- });
- if (width < 385) $info.style["display"] = "none";
- else $info.style["display"] = "inline-block";
- if (width < 210) $searchTxt.style["display"] = "none";
- else $searchTxt.style["display"] = "inline-block";
- this.loadMapImg(town.file);
- if (interface != "superold") {
- this.addSpawnsToMap(herosDB, true, town.name, town.id);
- this.addSpawnsToMap(eliteDB, false, town.name, town.id);
- };
- this.updateVisibility(town.visibility, objScale);
- this.updateHero(true);
- };
- this.updateVisibility = function(n, scale) {
- if (n) {
- let size = (n*2 + 1)*scale*32;
- Object.assign($visibility.style, {
- width: size + "px",
- height: size + "px",
- "margin-top": (size/-2) + "px",
- "margin-left": (size/-2) + "px",
- opacity: 1
- });
- } else {
- $visibility.style.opacity = 0;
- }
- }
- this.loadMapImg = function(file) {
- $map.style["background-image"] = "";
- $map.style["background"] = "#444444";
- var miniMapImg = new Image();
- if (file.indexOf("http") == -1) {
- var mpath = interface == "old" ? g.mpath : "/obrazki/miasta/";
- miniMapImg.src = (interface == "superold" ? "http://oldmargonem.pl" : "") + mpath + file;
- } else {
- miniMapImg.src = file;
- };
- miniMapImg.onload = function() {
- $map.style["background"] = "";
- $map.style["background-image"] = "url("+miniMapImg.src+")";
- };
- };
- this.parseNpc = function(npcs) {
- for (var id in npcs) {
- var npc = npcs[id];
- if (!npc.del) {
- this.addNewNpcToMap(npc, id);
- } else {
- this.objectMgr.updateObject({
- id: "NPC-"+id,
- del: 1
- });
- if (npcTrack[id]) {
- qTrack.remove({
- type: "NPC",
- nick: npcTrack[id].nick
- });
- delete npcTrack[id];
- };
- };
- };
- };
- this.addNewNpcToMap = function(npc, id) {
- var {type, flash} = this.getNpcType(npc, id);
- if (type == undefined) return;
- var {tip, ctip} = this.getNpcTip(npc, type, flash);
- var data = {
- id: "NPC-"+id,
- type: type,
- flash: flash,
- tip: tip,
- ctip: ctip,
- x: npc.x,
- y: npc.y,
- qm: npc.qm || (npc.actions && npc.actions & 128)
- };
- if (type != "npc" && type != "gw" && type != "item") {
- data.lvl = npc.lvl;
- };
- this.objectMgr.updateObject(data)
- };
- this.getNpcTip = function(npc, type, important) {
- var tip = "";
- var mask = false;
- for (var i=0; i<masks.length; i++) {
- if (masks[i].indexOf(npc.icon) > -1) mask = true;
- };
- if (!mask) tip += "<img src='"+this.npcIconHTML(npc.icon)+"'>";
- var ctip = "t_npc";
- if (type == "gw") {
- ctip = false;
- tip = this.makeTip({
- txt: npc.nick + "<br>",
- x: npc.x,
- y: npc.y
- })
- } else if (type == "item") {
- ctip = "t_item";
- tip = this.makeTip({
- x: npc.x,
- y: npc.y,
- txt: tip + "<br>" + npc.nick
- })
- } else {
- tip = this.normalNpcTip(npc, type, important, tip);
- };
- return {
- tip: tip,
- ctip: ctip
- }
- };
- this.npcIconHTML = function(icon) {
- if (icon.indexOf("://") > -1 || icon.indexOf("obrazki/") > -1) return icon; //zapomniałem o kompatybilności z jedną rzeczą którą robię xd
- else if (interface == "superold") return "http://oldmargonem.pl/obrazki/npc/"+icon;
- else return (interface == "old" ? g.opath : "/obrazki/")+"npc/"+icon;
- };
- this.oldNpcTip = function(npc, type, eve) {
- var icon = npc.icon;
- npc.icon = "kappa";
- if (type == "elite2" && !eve) {
- npc.wt = 30;
- };
- if (!g.tips.npc) newNpc();
- var tip = g.tips.npc(npc);
- if (type == "elite2") {
- if (!eve) {
- npc.wt = 20;
- tip = tip.replace("elita III", "elita II");
- } else {
- tip = tip.replace("elita", "specjalna elita");
- };
- };
- npc.icon = icon;
- return typeof tip == "string" ? tip : "";
- };
- this.newNpcTip = function(npc, type, eve) {
- var nick = "<div><strong>"+npc.nick+"</strong></div>";
- switch (type) {
- case "titan":
- var type = "<i>tytan</i>";
- break;
- case "heros":
- var type = "<i>heros</i>";
- break;
- case "elite3":
- var type = "<i>elita III</i>";
- break;
- case "elite2":
- if (eve) {
- var type = "<i>specjalna elita</i>";
- } else {
- var type = "<i>elita II</i>";
- }
- break;
- case "elite":
- var type = "<i>elita</i>";
- break;
- default:
- var type = "";
- break;
- };
- var lvl = npc.lvl ? npc.lvl + " lvl" : "";
- var grp = npc.grp ? " grp" : "";
- var lvlgrp = "<span>"+lvl+grp+"</span>";
- return nick + type + lvlgrp;
- };
- this.oldMargoNpcTip = function(npc, type, eve) {
- var nick = "<b style='color:orange;'>"+npc.nick+"</b>";
- switch (type) {
- case "titan":
- var type = "<i>tytan</i><br>";
- break;
- case "heros":
- var type = "<i>heros</i><br>";
- break;
- case "elite3":
- var type = "<i>elita III</i><br>";
- break;
- case "elite2":
- if (eve) {
- var type = "<i>specjalna elita</i><br>";
- } else {
- var type = "<i>elita II</i><br>";
- }
- break;
- case "elite":
- var type = "<i>elita</i><br>";
- break;
- default:
- var type = "";
- break;
- };
- var lvl = npc.lvl ? "Lvl: "+npc.lvl : "";
- var grp = npc.grp ? " grp" : "";
- var lvlgrp = "<span>"+lvl+grp+"</span>";
- return nick + type + lvlgrp;
- };
- this.normalNpcTip = function(npc, type, important, before) {
- if (interface == "old") {
- var tip = this.oldNpcTip(npc, type, important).replace("<span ></span><br>", "").replace("<span ></span>", "");
- } else if (interface == "new") {
- var tip = this.newNpcTip(npc, type, important);
- } else {
- var tip = this.oldMargoNpcTip(npc, type, important);
- };
- if (npc.lvl > 0) tip += "<br>";
- return this.makeTip({
- txt: before+tip,
- x: npc.x,
- y: npc.y
- });
- };
- var npcTrack = {};
- this.addNpcToTrack = function(npc, id, heros) {
- npcTrack[id] = npc;
- qTrack.add({
- type: "NPC",
- name: npc.nick
- });
- if (interface != "superold") this.checkForUnknownResp(npc, heros);
- };
- this.checkForUnknownResp = function(npc, heros) {
- var map = interface == "new" ? Engine.map.d : window.map;
- var db = heros ? herosDB : eliteDB;
- if (db[npc.nick] && db[npc.nick].spawns) {
- var spawns = db[npc.nick].spawns;
- if (spawns[map.name] || spawns[map.id]) {
- var spawnsOnMap = spawns[map.name] ? spawns[map.name] : spawns[map.id];
- if (spawns[map.name]) this.unknownMapId(map.name, map.id, heros);
- if (!this.coordsExistInSpawns(spawnsOnMap, npc.x, npc.y)) this.unknownResp(npc, map, heros);
- };
- };
- };
- this.coordsExistInSpawns = function(spawns, x, y) {
- for (var i=0; i<spawns.length; i++) {
- if (spawns[i][0] == x && spawns[i][1] == y) return true;
- };
- return false;
- };
- this.unknownResp = function(npc, map, heros) {
- var log = interface == "new" ? API.priw.console.log : window.log;
- log("<hr>"+(heros ? "Heros" : "Elita")+" znajduje się na respie, który nie jest w bazie danych minimapy.",1);
- log("Prosiłbym o zamieszczenie poniższej informacji w <a style='color: gold' href='https://www.margonem.pl/?task=forum&show=posts&id=488564' target='_blank'>tym temacie</a><br><br>miniMap+ - Nieznany resp: "+npc.nick+", "+map.name+"(ID: "+map.id+")("+npc.x+","+npc.y+")<br><hr>");
- };
- this.unknownMapId = function(name, id, heros) {
- var log = interface == "new" ? API.priw.console.log : window.log;
- log("<hr>"+"Mapa, na której "+(heros ? "zrespił się heros" : "zrespiła się elita")+", nie jest zapisana w bazie danych po ID.",1);
- log("Prosiłbym o zamieszczenie poniższej informacji w <a style='color: gold' href='https://www.margonem.pl/?task=forum&show=posts&id=488564' target='_blank'>tym temacie</a><br><br>miniMap+ - nieznane ID mapy - '"+name+"'="+id+"<br><hr>");
- };
- this.getNpcType = function(npc, id) {
- if (npc.type == 2 || npc.type == 3) {
- var flash = false;
- if (npc.wt > 99) {
- //tytan
- var type = "titan";
- } else if (npc.wt > 79) {
- //heros
- var type = "heros";
- this.addNpcToTrack(npc, id, true);
- flash = true;
- } else if (eliteDB[npc.nick]) {
- //specjalna elita
- var type = "elite2";
- this.addNpcToTrack(npc, id, false);
- flash = true;
- } else if (npc.wt > 29) {
- //e3
- var type = "elite3";
- } else if (npc.wt > 19) {
- //e2
- var type = "elite2";
- } else if (npc.wt > 9) {
- //e
- var type = "elite";
- } else {
- //nub
- var type = "mob";
- };
- } else if (npc.type == 0 || npc.type == 5) {
- if (gws.indexOf(npc.icon) == -1) {
- var type = "npc";
- } else {
- var type = "gw";
- };
- } else if (_l() == "en" && npc.type == 7) {
- var type = "item";
- };
- return {
- type: type,
- flash: flash
- };
- };
- this.initHeroUpdating = function() {
- if (interface != "new") {
- var _run = hero.run;
- hero.run = function() {
- self.updateHero();
- var ret = _run.apply(this, arguments);
- if (interface == "superold" && self.cancelMouseMovement) {
- self.cancelMouseMovement = false;
- window.global.movebymouse = false;
- }
- return ret;
- };
- } else if (interface == "new") {
- var _draw = Engine.map.draw;
- Engine.map.draw = function() {
- self.updateHero();
- return _draw.apply(this, arguments);
- };
- };
- };
- this.updateHero = function(ignore) {
- qTrack.update();
- if (interface == "new") var hero = Engine.hero.d;
- else var hero = window.hero;
- if (!ignore && oldPos.x == hero.x && oldPos.y == hero.y) return;
- this.objectMgr.updateObject({
- id: "HERO",
- x: hero.x,
- y: hero.y,
- tip: "Moja postać",
- type: "hero",
- children: [$visibility]
- });
- oldPos.x = hero.x;
- oldPos.y = hero.y;
- };
- this.parseGws = function(gws, townname) {
- for (var i=0; i<gws.length; i+=5) {
- var tip = townname[gws[i]];
- if (gws[i+3]) {
- if (gws[i+3] == 2) {
- tip += interface != "superold" ? "<br>("+_t("require_key", null , "gtw")+")" : "<br>(wymaga klucza)";
- };
- };
- if (gws[i+4]) {
- var min = (parseInt(gws[i+4]) & 65535);
- var max = ((parseInt(gws[i+4]) >> 16) & 65535);
- tip += "<br>" + _t("gateway_availavle", null , "gtw");
- tip += min ? _t("from_lvl %lvl%", {"%lvl%": min }, "gtw") : "";
- tip += max >= 1000 ? "" : _t("to_lvl %lvl%", { "%lvl%": max }, "gtw") + _t("lvl_lvl", null , "gtw");
- };
- this.objectMgr.updateObject({
- tip: this.makeTip({
- txt: tip + "<br>",
- x: gws[i+1],
- y: gws[i+2]
- }),
- type: "gw",
- x: gws[i+1],
- y: gws[i+2],
- id: "GW-"+gws[i]+"-"+i
- });
- };
- };
- this.parseOther = function(others) {
- for (var id in others) {
- var other = others[id];
- if (!other.del) {
- if ((interface != "new" && !g.other[id]) || (interface == "new" && !Engine.others.getById(id))) {
- if (interface != "superold" || other.nick) this.addNewOtherToMap(other, id); //dumb fix
- } else {
- this.updateOther(other, id);
- };
- } else {
- this.objectMgr.updateObject({
- id: "OTHER-"+id,
- del: 1
- });
- };
- }
- };
- this.updateOther = function(other, id) {
- var evoNetwork = this.checkIfOtherFromEvoNetwork(id);
- var data = {};
- var canLoadImgFromCache = !other.icon;
- var previousData = interface == "new" ? Engine.others.getById(id).d : g.other[id];
- var other = Object.assign({}, previousData, other);
- if (isset(other.x)) data.x = other.x;
- if (isset(other.y)) data.y = other.y;
- var {tip, ctip} = this.getOtherTip(other, evoNetwork);
- if (canLoadImgFromCache && this.otherImgCache[id]) {
- var img = this.otherImgCache[id];
- tip = '<center><div style="background-image: url('+img.src+'); width: '+(img.width/4)+'px; height: '+(img.height/4)+'px"></div></center>' + tip;
- } else {
- this.loadOtherImg(other, id, tip);
- }
- data.tip = tip;
- data.ctip = ctip;
- data.id = "OTHER-"+id;
- this.objectMgr.updateObject(data);
- };
- this.otherImgCache = {};
- this.checkIfOtherFromEvoNetwork = function(id) {
- //rozpoznawanie postaci z innych światów dodawanych przez dodatek ccarederra
- return String(id).split("_")[1] == "wsync";
- };
- this.addNewOtherToMap = function(other, id) {
- var type;
- var evoNetwork = this.checkIfOtherFromEvoNetwork(id);
- if (evoNetwork && !settings.get("/showevonetwork")) return;
- switch (other.relation) {
- case "": //obcy
- type = "other";
- break;
- case "cl-fr": //sojusznik
- case "fr-fr": //fraction friend
- type = "ally";
- break;
- case "cl": //klanowicz
- type = "clan";
- break;
- case "fr": //znajomy
- type = "friend";
- break;
- case "en": //wróg
- case "cl-en": //wrogi klan
- case "fr-en": //fraction enemy
- type = "enemy";
- break;
- default:
- type = "other";
- break;
- };
- if (evoNetwork) type = "evoNetwork";
- var {tip, ctip} = this.getOtherTip(other, evoNetwork);
- this.objectMgr.updateObject({
- tip: tip,
- ctip: ctip,
- type: "other",
- type2: type,
- x: other.x,
- y: other.y,
- id: "OTHER-"+id,
- evoNetwork: evoNetwork,
- click: function() {
- if (evoNetwork) return; //gdy ccarderr zrobi jakieś kanały prywatne w swoim chacie to kliknięcie gracza będzie taki otwierać
- if (interface != "old") {
- $chatInput.value = "@" + other.nick.replace(/ /g, "_") + " ";
- $chatInput.focus();
- if (interface == "superold") {
- //switch from eq to chat
- if (window.chat.style.display == "none") {
- var btt = document.querySelector("#eqbutton");
- btt.click();
- btt.style["background-position"] = "";
- };
- };
- } else if (interface == "old") {
- chatTo(other.nick);
- };
- }
- });
- this.loadOtherImg(other, id, tip);
- };
- this.loadOtherImg = function(other, id, tip) {
- var img = new Image();
- img.src = (interface == "superold" ? "http://oldmargonem.pl" : "") + "/obrazki/postacie/"+other.icon;
- img.onload = function() {
- self.otherImgCache[id] = img;
- tip = '<center><div style="background-image: url('+img.src+'); width: '+(img.width/4)+'px; height: '+(img.height/4)+'px"></div></center>' + tip;
- self.objectMgr.updateObject({
- tip: tip,
- id: "OTHER-"+id
- });
- };
- }
- this.getOtherTip = function(other, evoNetwork) {
- if (interface == "old") {
- var tip = this.oldOtherTip(other);
- } else if (interface == "new") {
- var tip = this.newOtherTip(other);
- } else {
- var tip = this.oldMargoOtherTip(other);
- };
- if (evoNetwork) {
- tip += "<i>Postać z dodatku World Sync</i>";
- };
- return {
- tip: this.makeTip({
- txt: tip + (evoNetwork ? "" : "<br>"),
- x: other.x,
- y: other.y
- }),
- ctip: "t_other" + (other.relation != "" && interface != "new" ? " t_"+other.relation : "")
- };
- };
- this.oldOtherTip = function(other) {
- if (!g.tips.other) newOther({0:{}});newOther({0:{del:1}});
- var tip = g.tips.other(other);
- return tip.replace(/'/g, "'")
- };
- this.newOtherTip = function(other) {
- //pre-wrapper
- if (other.rights) {
- var rank;
- if (other.rights & 1) rank = 0;
- else if (other.rights & 16) rank = 1;
- else if (other.rights & 2) rank = 2;
- else if (other.rights & 4) rank = 4;
- else rank = 3;
- rank = "<div class='rank'>"+otherRanks[rank]+"</div>";
- } else {
- var rank = "";
- };
- var guest = isset(other.guest) ? "<div class='rank'>Zastępca</div>" : "";
- var preWrapper = rank + guest;
- //wrapper
- var nick = "<div class='nick'>" + other.nick + "</div>";
- var prof = "<div class='profs-icon "+other.prof+"'></div>";
- var bless = isset(other.ble) ? "<div class='bless'></div>" : "";
- var infoWrapper = "<div class='info-wrapper'>" + nick + bless + prof + "</div>";
- //post-wrapper
- var wanted = isset(other.wanted) ? "<div class='wanted'></div>" : "";
- var clan = (isset(other.clan) && other.clan.name != "") ? "<div class='clan-in-tip'>"+other.clan.name+"</div><div class='line'></div>" : "";
- var lvl = isset(other.lvl) ? "<div class='lvl'>"+other.lvl+" lvl</div>" : "";
- var mute = (other.attr & 1) ? "<div class='mute'></div>" : "";
- var postWrapper = wanted + clan + lvl + mute;
- return preWrapper + infoWrapper + postWrapper;
- };
- this.oldMargoOtherTip = function(other) {
- var tip = "<b style='color:yellow'>"+other.nick+"</b>";
- if (other.clan) tip += "<span style='color:#fd9;'>["+g.clanname[other.clan]+"]</span><br>";
- tip += "Lvl: "+other.lvl+other.prof;
- return tip;
- };
- this.parseItem = function(items) {
- for (var id in items) {
- var item = items[id];
- if (item.loc == "m") {
- this.addNewItemToMap(item, id);
- } else {
- var previousData = interface == "new" ? Engine.items.getItemById(id) : g.item[id];
- if (interface == "new" && previousData) previousData = previousData.d;
- if (previousData && previousData.loc == "m") {
- this.objectMgr.updateObject({
- id: "ITEM-"+id,
- del: 1
- });
- };
- }
- }
- };
- this.addNewItemToMap = function(item, id) {
- var tip = this.getItemTip(item);
- this.objectMgr.updateObject({
- id: "ITEM-"+id,
- tip: tip,
- ctip: "t_item",
- x: item.x,
- y: item.y,
- type: "item"
- });
- };
- this.oldMargoItemTip = function(item) {
- return "<b>"+item.name+"</b>"+item.stats;
- };
- this.getItemTip = function(item) {
- var nocenter = true;
- var tip = interface == "new" ? MargoTipsParser.getTip(item) : (interface == "old" ? itemTip(item) : this.oldMargoItemTip(item));
- if (interface == "old" && tip.indexOf("tip-section") == -1) { //kompatybilność z moim dodatkiem na nowe tipy
- tip = "<img src='"+(interface == "superold" ? "http://oldmargonem.pl" : "") +"/obrazki/itemy/"+item.icon+"'>" + tip;
- nocenter = false;
- };
- return this.makeTip({
- txt: tip,
- x: item.x,
- y: item.y,
- nocenter: nocenter
- });
- };
- var ripCount = 0;
- this.parseRip = function(rips) {
- for (var i=0; i<rips.length; i+=8) {
- this.addNewRipToMap({
- nick: rips[i],
- lvl: rips[i+1],
- prof: rips[i+2],
- x: parseInt(rips[i+3]),
- y: parseInt(rips[i+4]),
- ts: parseInt(rips[i+5]),
- desc1: rips[i+6],
- desc2: rips[i+7]
- });
- ripCount++;
- };
- };
- this.addNewRipToMap = function(rip) {
- var isHerosRip = false;
- var timeToDisappear = 300 + rip.ts - unix_time();
- if (timeToDisappear <= 0) return;
- var tip = "<b>" + _t("rip_prefix") + " " + htmlspecialchars(rip.nick) + "</b>Lvl: " + rip.lvl + rip.prof + "<i>" + htmlspecialchars(rip.desc1) + "</i><i>" + htmlspecialchars(rip.desc2) + "</i>";
- this.objectMgr.updateObject({
- tip: this.makeTip({
- txt: tip,
- x: rip.x,
- y: rip.y
- }),
- type: "other",
- x: rip.x,
- y: rip.y,
- circle: true,
- border: true,
- id: "RIP-"+ripCount,
- ctip: "t_rip"
- });
- var id = "RIP-"+ripCount;
- var nick;
- if (nick = this.checkHerosRip(rip.desc1)) {
- qTrack.add({type: "COORDS", name: "Grób gracza zabitego przez herosa "+nick+"<br>Możliwe, że heros tam stoi!", coords: [rip.x, rip.y] });
- isHerosRip = true;
- message("Na mapie znajduje się grób gracza zabitego przez herosa "+nick);
- };
- setTimeout(() => {
- self.objectMgr.updateObject({
- id: id,
- del: 1
- });
- if (isHerosRip) qTrack.remove({type: "COORDS", name: "Grób gracza zabitego przez herosa "+nick+"<br>Możliwe, że heros tam stoi!"});
- }, timeToDisappear*1000);
- };
- this.checkHerosRip = function(desc) {
- for (var nick in herosDB) {
- var needle = nick + "(" + herosDB[nick].lvl + herosDB[nick].prof + ")";
- if (desc.indexOf(needle) > -1) {
- return nick;
- };
- };
- return false;
- };
- this.objectMgr = new (function() {
- var self = this;
- var mgr = this;
- var objs = {};
- var flashables = [];
- function MapObject(data) {
- var self = this;
- this.d = data;
- var currentColor = settings.get("/colors")[this.d.type];
- this.initHTML = function() {
- this.$ = document.createElement("div");
- this.$.classList.add("mmpMapObject", "mmp-"+data.type);
- if (innerDotKeys.indexOf(data.type2) != -1) {
- var $dot = document.createElement("div");
- $dot.classList.add("innerDot", "mmp-"+data.type2);
- Object.assign($dot.style, {
- left: objSize/4 + "px",
- top: objSize/4 + "px",
- width: objSize/2 + "px",
- height: objSize/2 + "px"
- });
- this.$.appendChild($dot);
- } else if (data.type2 == "evoNetwork") {
- this.$.classList.add("evoNetwork");
- };
- if (data.children) {
- // append extra children to the object
- for (let i=0; i<data.children.length; i++) {
- this.$.appendChild(data.children[i]);
- }
- }
- var left = data.x * objScale * 32;
- var top = data.y * objScale * 32;
- Object.assign(this.$.style, {
- top: top + "px",
- left: left + "px",
- width: objSize + "px",
- height: objSize + "px",
- opacity: "0"
- });
- setTimeout(() => this.$.style.opacity = "1.0", 1);
- if (interface != "new") {
- this.$.setAttribute("tip", data.tip);
- if (data.ctip) this.$.setAttribute("ctip", data.ctip);
- } else {
- this.$.setAttribute("data-tip", data.tip);
- if (data.ctip) this.$.setAttribute("data-tip-type", data.ctip);
- };
- if (data.circle) {
- this.$.style["border-radius"] = objScale*18 + "px";
- };
- if (data.border) {
- this.$.style["border"] = "1px solid black";
- };
- if (data.qm) {
- this.$.innerHTML = "<img class='mmpQM' width='"+objSize+"' height='"+objSize*2+"' src='http://jaruna.margonem.pl/img/quest-mark.gif'>";
- };
- $map.appendChild(this.$);
- };
- this.invertColor = function() {
- var c = currentColor;
- var c1 = (255 - parseInt("0x"+c.substring(1,3))).toString(16);
- var c2 = (255 - parseInt("0x"+c.substring(3,5))).toString(16);
- var c3 = (255 - parseInt("0x"+c.substring(5,7))).toString(16);
- if (c1.length < 2) c1 = "0" + c1;
- if (c2.length < 2) c2 = "0" + c2;
- if (c3.length < 2) c3 = "0" + c3;
- currentColor = "#"+c1+c2+c3;
- this.$.style.background = currentColor;
- };
- this.remove = function() {
- if (this.d.flash) flashables.splice(flashables.indexOf(this), 1);
- this.$.style["opacity"] = "0";
- if (settings.get("/interpolerate")) setTimeout(() => this.$.remove(), 500);
- else this.$.remove();
- };
- this.update = function(data) {
- Object.assign(this.d, data);
- if (data.x) {
- this.$.style["left"] = data.x * objScale * 32 + "px";
- };
- if (data.y) {
- this.$.style["top"] = data.y * objScale * 32 + "px";
- };
- if (data.tip) {
- this.$.setAttribute(interface == "new" ? "data-tip" : "tip", data.tip);
- };
- if (data.invertColor) {
- this.invertColor();
- };
- };
- this.initEventListener = function() {
- if (data.click) {
- var type = mobileDevice ? "touchstart" : "click";
- this.$.addEventListener(type, e => {
- data.click(e);
- e.stopPropagation();
- });
- };// else {
- //this.$.addEventListener("click", this.goTo);
- //}
- };
- //this.goTo = function() {
- // if (newInterface) {
- // Engine.hero.autoGoTo({x :self.d.x, y: self.d.y});
- // } else {
- // self.searchPath.call(window.hero, self.d.x, self.d.y);
- // };
- //};
- this.manageDisplay = function() {
- if (!this.d.flash && isset(this.d.lvl) && this.d.lvl < settings.get("/minlvl")) {
- this.$.classList.add("hidden");
- } else {
- this.$.classList.remove("hidden");
- };
- };
- this.checkStringSearch = function(str) {
- if (this.d.tip.toLowerCase().indexOf(str) == -1 && this.d.type != "hero") {
- this.$.classList.add("hiddenBySearch");
- };
- };
- this.checkRangeSearch = function(n1, n2) {
- if (isset(this.d.lvl)) {
- if (this.d.lvl < n1 || this.d.lvl > n2) {
- this.$.classList.add("hiddenBySearch");
- };
- };
- };
- this.manageFilters = function() {
- if (search.type == "string" && search.data != "") {
- this.checkStringSearch(search.data);
- } else if (search.type == "lvl") {
- this.checkRangeSearch(search.data[0], search.data[1]);
- };
- };
- this.init = function() {
- if (data.flash) flashables.push(this);
- this.initHTML();
- this.initEventListener();
- this.manageDisplay();
- this.manageFilters();
- };
- this.init();
- };
- this.getByElem = function($el) {
- for (var i in objs) {
- if (objs[i].$ == $el) return objs[i];
- };
- };
- this.deleteAll = function() {
- for (var i in objs) {
- objs[i].remove();
- delete objs[i];
- };
- };
- this.updateObject = function(data) {
- if (!objs[data.id] && !data.del) {
- if (!data.dontCreate) objs[data.id] = new MapObject(data);
- } else if (data.del) {
- if (objs[data.id]) {
- objs[data.id].remove();
- delete objs[data.id];
- };
- } else {
- objs[data.id].update(data);
- }
- };
- this.resetSearch = function() {
- this.removeCoordMarker();
- for (var id in objs) {
- objs[id].$.classList.remove("hiddenBySearch");
- };
- };
- this.filterByLvl = function(n1, n2) {
- search.type = "lvl",
- search.data = [n1, n2];
- for (var id in objs) {
- objs[id].checkRangeSearch(n1, n2);
- };
- };
- this.filterByString = function(str) {
- str = str.toLowerCase();
- search.type = "string",
- search.data = str;
- for (var id in objs) {
- objs[id].checkStringSearch(str);
- };
- };
- this.removeCoordMarker = function() {
- this.updateObject({
- id: "COORDS",
- del: 1
- });
- };
- this.createCoordMarker = function(x, y) {
- this.updateObject({
- id: "COORDS",
- x: x,
- y: y,
- tip: "koordy "+x+","+y,
- circle: true,
- type: "hero",
- flash: true
- })
- };
- this.manageDisplay = function() {
- for (var id in objs) {
- objs[id].manageDisplay();
- };
- };
- this.invertFlashables = function() {
- for (var i=0; i<flashables.length; i++) {
- flashables[i].update({
- invertColor: true
- });
- };
- };
- setInterval(this.invertFlashables, 500);
- })();
- this.addSpawnsToMap = function(db, heros, map, mapId) {
- map = map.toLowerCase();
- var maxlvl = settings.get("/maxlvl");
- var hero = interface == "new" ? Engine.hero.d : window.hero;
- for (var i in db) {
- var mob = db[i];
- if (mob.ver && mob.ver != _l()) continue;
- var minlvl = Math.max(mob.lvl/2, mob.lvl-50);
- if ((maxlvl+mob.lvl >= hero.lvl && minlvl <= hero.lvl) || mob.lvl >= 242 || mob.lvl == -1) {
- for (var loc in mob.spawns) {
- if (loc.toLowerCase() == map || loc == mapId) {
- var spawns = mob.spawns[loc];
- for (var j=0; j<spawns.length; j++) {
- var x = spawns[j][0];
- var y = spawns[j][1];
- this.objectMgr.updateObject({
- id: "SPAWN-"+i+"-"+j,
- tip: this.makeTip({
- txt: "Resp " + (heros ? "herosa " : "elity ") + i,
- x: x,
- y: y
- }),
- x: x,
- y: y,
- type: heros ? "heros" : "elite2",
- circle: true
- });
- };
- };
- };
- };
- };
- };
- this.init = function() {
- this.initSettings();
- this.initHTML();
- this.appendUserStyles();
- this.initResponseParser();
- this.initHeroUpdating();
- this.appendMobileButton();
- this.installationCounter.count();
- if (interface == "old") this.searchPath = function(a,t){if(this.isBlockedSearchPath())return this.blockedInfoSearchPath();for(var h=[],i=128&hero.opt?8:20,r=Math.max(0,Math.min(a,this.x)-i),s=Math.min(map.x-1,Math.max(a,this.x)+i),o=Math.max(0,Math.min(t,this.y)-i),e=Math.min(map.y-1,Math.max(t,this.y)+i),d=r-1;s+1>=d;d++){h[d]=[];for(var x=o-1;e+1>=x;x++)h[d][x]=!(d>=r&&s>=d&&x>=o&&e>=x)||isset(g.npccol[d+256*x])||map.col&&"0"!=map.col.charAt(d+x*map.x)?-2:-1}h[this.x][this.y]=0,b=-1,road=[];for(var c={x:-1,y:-1,dist:99},y=1;s-r+e-o+3>y;y++)for(var d=r;s>=d;d++)for(var x=o;e>=x;x++){if(-1!=h[d][x]||h[d][x-1]!=y-1&&h[d][x+1]!=y-1&&h[d-1][x]!=y-1&&h[d+1][x]!=y-1||(h[d][x]=y),h[a][t]>0){d=s+1;break}c.dist2=Math.abs(a-d)+Math.abs(t-x),h[d][x]==y&&c.dist2<c.dist&&(c.x=d,c.y=x,c.dist=c.dist2)}if(c.hdist=Math.abs(a-hero.x)+Math.abs(t-hero.y),h[a][t]>0||c.dist<c.hdist){h[a][t]<0&&(a>c.x?b=2:a<c.x?b=1:t>c.y?b=0:t<c.y&&(b=3),a=c.x,t=c.y),road[0]={x:a,y:t};for(var f=h[a][t]-1,l=a,m=t;f>0;f--)h[l][m-1]==f?m--:h[l][m+1]==f?m++:h[l-1][m]==f?l--:h[l+1][m]==f?l++:f=0,f&&(road[h[a][t]-f]={x:l,y:m})}road.length>1&&null==g.playerCatcher.follow&&$("#target").stop().css({left:32*a,top:32*t,display:"block",opacity:1}).fadeOut(1e3)};
- $chatInput = interface == "new" ? document.querySelector("[data-section='chat'] .input-wrapper input") : (interface == "superold" ? document.querySelector("#chatIn") : null);
- };
- //questtrack (fuzja kodu z wersji minimapy na SI i NI więc wygląda jak wygląda)
- var qTrack = new (function() {
- var self = this;
- var hero = interface == "new" ? Engine.hero : window.hero;
- var $hero = interface == "old" ? $("#hero") : (interface == "superold" ? document.querySelector("#oHero") : null);
- var $canvas = interface == "new" ? $("#GAME_CANVAS") : null;
- if (interface == "new") {
- this.npcs = {};
- API.addCallbackToEvent("newNpc", function(npc) {
- if (npc) self.npcs[npc.d.id] = npc.d;
- });
- API.addCallbackToEvent("removeNpc", function(npc) {
- if (npc) delete self.npcs[npc.d.id];
- });
- };
- this.getOldMargoHeroPos = function() {
- return {
- left: $hero.offsetLeft,
- top: $hero.offsetTop
- };
- };
- this.getHeroPos = function() {
- if (interface == "old") return $hero.position();
- if (interface == "superold") return this.getOldMargoHeroPos();
- if (!Engine.map.size) return {x: 0, y: 0};
- var tilesX = $canvas.width()/32;
- var tilesY = $canvas.height()/32;
- var pos = {
- x: Engine.hero.rx,
- y: Engine.hero.ry
- };
- var actualPos = {};
- if (pos.x < tilesX/2) {
- actualPos.x = pos.x*32;
- } else if (Engine.map.size.x - pos.x < tilesX/2) {
- actualPos.x = (pos.x - (Engine.map.size.x - tilesX/2) + tilesX/2)*32;
- } else {
- actualPos.x = (tilesX/2)*32;
- };
- if (pos.y < tilesY/2) {
- actualPos.y = pos.y*32;
- } else if (Engine.map.size.y - pos.y < tilesY/2) {
- actualPos.y = (pos.y - (Engine.map.size.y - tilesY/2) + tilesY/2)*32;
- } else {
- actualPos.y = (tilesY/2)*32;
- };
- var canvasOffset = $canvas.offset();
- return {
- left: actualPos.x + canvasOffset.left,
- top: actualPos.y + canvasOffset.top
- };
- };
- this.update = function() {
- for (var i=0; i<this.arrows.length; i++) {
- this.drawArrow(this.arrows[i]);
- };
- };
- this.drawArrow = function(objective) {
- if (objective.type == "NPC") {
- var nameKey = "nick";
- var obj = interface == "new" ? this.npcs : g.npc;
- var item = false;
- } else if (objective.type == "ITEM") { //item
- var nameKey = "name";
- if (interface == "new") {
- var itemArr = Engine.items.fetchLocationItems("m");
- var obj = {};
- for (var i in itemArr) {
- var it = itemArr[i];
- if (it.id) obj[it.id] = it;
- else obj[it.hid] = it;
- };
- } else {
- var obj = g.item;
- };
- var item = true;
- } else if (objective.type == "COORDS") { //coords
- var coords = objective.coords;
- var size = [32, 32];
- var x = Math.abs(hero.rx-coords[0]);
- var y = Math.abs(hero.ry-coords[1]);
- var closest = Math.sqrt(Math.pow(x,2) + Math.pow(y,2));
- };
- if (objective.type != "COORDS") {
- var closest = Infinity;
- var coords = false;
- var size = false;
- for (var i in obj) {
- var entity = obj[i];
- if (entity[nameKey] == objective.name && (!item || entity.loc == "m")) {
- var x = Math.abs(hero.rx-entity.x);
- var y = Math.abs(hero.ry-entity.y);
- var dist = Math.sqrt(Math.pow(x,2) + Math.pow(y,2));
- if (dist < closest) {
- closest = dist;
- coords = [entity.x, entity.y];
- size = item ? [32,32] : [entity.fw, entity.fh];
- };
- };
- };
- };
- if (coords) {
- var cos = (coords[0] - hero.rx)/closest;
- var sin = (coords[1] - hero.ry)/closest;
- var heropos = this.getHeroPos();
- var top = 150*sin;
- var left = 150*cos;
- var opacity = 1;
- if (closest < 9) {
- top = top*Math.pow(closest/9, 1.8);
- left = left*Math.pow(closest/9, 1.8);
- opacity = Math.pow(closest/9, 2.1);
- };
- if (interface != "new") top+=20;
- left+= interface == "new" ? -12 : 4;
- if ((cos >= 0 && sin >= 0) || (cos >= 0 && sin <= 0)) {
- var angle = Math.asin(sin) * 180 / Math.PI;
- } else {
- var angle = 180+Math.asin(0-sin) * 180 / Math.PI;
- };
- objective.$.css({
- top: top + heropos.top,
- left: left + heropos.left,
- display: opacity > 0.09 ? "block" : "none",
- "-ms-transform": "rotate("+angle+"deg)",
- "-webkit-transform": "rotate("+angle+"deg)",
- transform: "rotate("+angle+"deg)",
- opacity: opacity
- });
- if (interface == "old") {
- objective.$highlight.css({
- left: coords[0]*32 - 11,
- top: coords[1]*32 + 14,
- display: "block",
- opacity: 1-opacity
- });
- };
- } else {
- objective.$.hide();
- if (interface == "old") objective.$highlight.hide();
- };
- };
- this.arrows = [];
- this.add = function(objective) {
- for (var i in this.arrows) {
- if (objective.type == this.arrows[i].type && objective.name == this.arrows[i].name) return;
- };
- objective.$ = this.arrowTemplate.clone().appendTo(interface == "old" ? "#centerbox" : (interface == "new" ? ".game-window-positioner" : "#oMap"));
- objective.$.attr(interface == "new" ? "data-tip" : "tip", objective.name);
- if (interface == "old") objective.$highlight = this.highlightTemplate.clone().appendTo(interface == "old" ? "#ground" : "#oMap");
- objective.index = this.arrows.push(objective) -1;
- objective.remove = function() {
- self.arrows.splice(this.index, 1);
- for (var i=this.index; i<self.arrows.length; i++) {
- self.arrows[i].index--;
- };
- this.$.remove();
- if (interface == "old") this.$highlight.remove();
- };
- this.update();
- };
- this.remove = function(objective) {
- for (var i=0; i<this.arrows.length; i++) {
- if (this.arrows[i].name == objective.name && this.arrows[i].type == objective.type) this.arrows[i].remove();
- };
- };
- this.reset = function() {
- while (this.arrows.length) {
- this.arrows[0].remove();
- };
- };
- this.arrowTemplate = $("<div>").css({
- background: "url(http://priweejt.ct8.pl/addons/img/qt-arrow-red.gif)",
- width: 24,
- height: 24,
- zIndex: 250,
- position: "absolute"
- });
- this.highlightTemplate = $("<div>").css({
- background: "url(/img/glow-blue.png)",
- position: "absolute",
- width: 52,
- height: 24,
- zIndex: 1
- });
- })();
- this.installationCounter = new (function() {
- var self = this;
- var id = 87771;
- this.count = function() {
- if (interface == "superold") return;
- if (!settings.get("/counted")) {
- //extManager.toggleLike(id, 'unlike')
- $.ajax({
- url: "/tools/addons.php?task=details&id="+id,
- type: "POST",
- data: {like: "unlike"}
- });
- settings.set("/counted", true);
- };
- };
- this.get = function(clb) {
- if (interface == "superold") return clb("<span tip='Niedostępne dla oldmargonem'>-</span>");
- $.ajax({
- url: "/tools/addons.php?task=details&id="+id,
- datatype: "json",
- success: function(r) {
- clb(-r.addon.points);
- }
- });
- };
- })();
- //databases
- //porzuciłem ręczne edytowanie tego więc w jednej linii jest bo tak wypluwa skrypt
- var herosDB = {"Domina Ecclesiae":{"lvl":21,"prof":"b","spawns":{"3":[[53,11],[50,23]],"169":[[14,8],[8,9]],"171":[[25,26],[7,28],[15,29],[8,8],[22,9]],"175":[[12,4]],"217":[[7,35],[22,13],[37,39]],"249":[[12,5]],"251":[[11,10],[10,13]],"290":[[11,8],[16,5]],"298":[[7,10]],"300":[[7,8]],"2070":[[6,4],[10,29],[7,17]],"2071":[[42,5],[17,4],[37,9]],"2073":[[21,9]],"2546":[[44,43],[33,10],[41,14],[50,5],[25,28],[9,11]],"2710":[[6,11],[24,6],[8,15]],"2712":[[5,7],[9,7],[7,12]],"2713":[[10,6],[8,12]],"2714":[[8,5],[27,10],[7,8],[16,8]],"2715":[[24,17],[6,13],[5,18],[32,18]],"2718":[[23,8],[15,8]],"2719":[[7,35],[4,10]],"2721":[[4,5],[29,15],[20,15],[15,9]],"2722":[[8,22],[8,7]],"2879":[[12,7],[7,20],[11,13]],"2880":[[10,19]],"2885":[[38,57],[11,22],[23,56],[48,36]],"2886":[[41,57],[13,46],[12,12],[29,60],[24,12]],"Przeklęty Zamek p.1":[[12,4]],"Strażnica północno-wschodnia":[[8,3]],"Strażnica północno-zachodnia":[[8,3]],"Mury - zbrojownia - piwnica":[[12,11]],"Mury - skrzydło wschodnie":[[12,13]],"Mury - kwatera główna":[[10,11]],"Opuszczony dom":[[5,8]],"Posterunek":[[9,10]],"Posterunek - piwnica":[[11,4]],"Podziemia siedziby maga p.1 - sala 1":[[22,28],[13,9]],"Podziemia siedziby maga p.1 - sala 2":[[10,9]],"Fortyfikacja p.1":[[13,6],[7,16]],"Fortyfikacja p.5":[[9,9]],"Przeklęta Strażnica p.1":[[9,10]]}},"Mroczny Patryk":{"lvl":35,"prof":"w","spawns":{"3":[[31,58],[19,71],[11,47],[58,46],[19,21],[2,49],[14,7],[19,52],[54,71],[33,62],[57,75],[7,17],[48,79],[52,27],[28,3],[56,4],[10,84]],"4":[[45,51],[52,39],[54,66],[17,15],[35,14],[3,87],[38,59],[55,78],[25,44],[3,68],[42,18],[45,84],[59,92],[21,25],[5,27],[2,21],[6,4]],"8":[[5,40],[15,24],[58,18],[40,36],[24,54],[52,29],[26,6],[15,44],[7,10],[38,26],[54,45],[51,55],[51,5],[48,16],[42,22],[26,29],[4,56],[37,54]],"11":[[37,11],[61,22],[14,4],[52,50],[45,28],[5,75],[55,19],[56,94],[10,47],[9,30],[21,15],[37,71],[39,51],[48,83],[25,6],[55,32],[54,65],[11,17],[57,93]],"12":[[53,47],[76,17],[5,9],[21,41],[65,15],[10,31],[74,17]],"19":[[9,10]],"110":[[20,41],[52,23],[22,24],[60,23],[41,40],[36,11],[55,3],[52,77],[30,8],[39,61],[17,89],[9,8],[29,42],[46,83],[31,21],[54,51],[0,23],[27,65],[48,2],[5,85],[31,50],[19,78],[55,12],[3,4],[4,77],[31,21],[53,77],[25,39],[18,2]],"111":[[49,20],[60,3],[11,19],[9,47],[18,58],[22,28],[42,55],[30,2]],"115":[[41,43],[52,29],[21,10],[8,19],[57,48],[34,36],[38,43],[7,55],[49,43]],"634":[[26,7]],"1110":[[52,59],[32,9],[18,24],[11,13],[35,22]],"3402":[[37,24],[47,52],[5,27],[53,11]]}},"Karmazynowy Mściciel":{"lvl":45,"prof":"m","spawns":{"121":[[47,26],[3,2],[2,54],[41,12],[48,75],[12,39],[5,65]],"128":[[3,87],[4,55],[33,18],[42,88],[52,55],[12,18],[51,19]],"132":[[11,17]],"133":[[13,18]],"134":[[8,13]],"135":[[10,11],[12,8]],"136":[[14,8]],"151":[[12,6],[26,5],[58,37],[46,60],[22,54],[37,57],[55,5],[39,13],[47,7],[19,34],[16,4],[45,52]],"182":[[8,5]],"183":[[14,9]],"198":[[53,56],[60,5],[10,44],[10,7],[57,22],[43,4],[37,2],[24,7],[14,19],[28,62],[9,6],[58,38],[9,33],[34,37],[9,45]],"226":[[13,37],[15,71],[20,90]],"227":[[10,35],[14,35]],"228":[[51,21],[50,24]],"229":[[36,82],[45,6],[8,70],[20,14]]}},"Złodziej":{"lvl":50,"prof":"h","spawns":{"1180":[[12,8],[11,8]],"1188":[[6,6]],"1247":[[9,9]],"1278":[[8,6]],"1280":[[8,6]],"1320":[[8,8]],"1335":[[10,8]],"1382":[[7,8]],"1407":[[8,7],[9,7]],"1423":[[8,7]],"1433":[[7,8]],"1438":[[12,6]],"1489":[[7,8]],"1493":[[7,8]],"1500":[[10,8]],"1542":[[28,6]],"1566":[[4,11]],"1567":[[7,6]],"1568":[[4,8]],"1589":[[6,8]],"1590":[[4,7],[4,6]],"1605":[[4,10]],"Chata Ficjusza":[[3,8]]}},"Złodziej znajduje się w tym domu (parter)":{"lvl":50,"spawns":{"589":[[39,14],[40,14],[62,14],[63,14],[74,38],[52,54],[53,54]],"630":[[69,40],[44,41]],"1233":[[68,29],[75,16]],"1262":[[52,9],[53,9]]}},"Złodziej znajduje się w tym domu (2. piętro)":{"lvl":50,"spawns":{"589":[[31,33],[83,36],[84,36]]}},"Złodziej znajduje się w tej latarnii (2. piętro) (uwaga na kraby przy dochodzeniu tutaj)":{"lvl":50,"spawns":{"1262":[[20,54]]}},"Złodziej znajduje się w tym domu (1. piętro)":{"lvl":50,"spawns":{"589":[[17,33],[33,17]],"630":[[40,27],[41,27]],"1262":[[61,17],[62,17]]}},"Złodziej znajduje się w tym domu (piwnica)":{"lvl":50,"spawns":{"589":[[57,14],[43,54]],"630":[[78,17],[77,17],[81,28],[82,28],[88,23]],"1233":[[57,39]]}},"Złodziej znajduje się w tym domu (pokój Grety)":{"lvl":50,"spawns":{"589":[[59,29],[60,29]]}},"Zły Przewodnik":{"lvl":63,"prof":"w","spawns":{"116":[[5,26],[40,35],[35,3],[52,30],[10,44],[54,43],[18,8],[28,57],[37,8],[7,17],[35,3],[53,31],[39,34],[34,2],[27,56]],"122":[[35,20],[19,6],[54,18],[32,7],[54,25]],"140":[[26,54],[44,29],[56,27],[10,49],[49,2]],"150":[[57,3],[18,4],[3,34],[40,38],[89,51],[27,50],[40,37],[57,3]],"180":[[54,28],[22,20],[15,6],[14,44],[31,4],[34,17],[4,19]],"2730":[[19,13],[28,38],[12,23],[53,6],[49,15],[38,58],[6,46],[38,58]]}},"Piekielny Kościej":{"lvl":74,"prof":"w","spawns":{"Labirynt Margorii":[[15,38],[49,24],[57,55],[35,18],[34,46]],"Margoria Sala Królewska":[[23,61],[10,77],[51,24],[38,82],[22,30]],"Kopalnia Margorii":[[30,22],[53,62],[11,39],[50,12],[52,40],[27,38],[8,49]],"Zdradzieckie Przejście":[[21,6],[22,56],[67,38]]}},"Opętany Paladyn":{"lvl":85,"prof":"w","spawns":{"180":[[49,28]],"203":[[15,28],[31,9]],"204":[[18,27]],"205":[[18,27]],"210":[[84,7],[33,45],[54,11],[78,25],[15,26]],"211":[[19,38],[19,11],[45,57]],"601":[[17,41],[87,5],[25,55],[59,35],[92,54],[22,21]],"602":[[40,31],[6,58],[4,16]],"Podziemia świątyni":[[28,5],[54,32]],"Zbrojownia Andarum":[[25,59],[7,35],[7,20]]}},"Kochanka Nocy":{"lvl":100,"prof":"m","spawns":{"246":[[12,8],[28,60],[77,60]],"253":[[88,34],[77,46],[80,59],[6,34],[6,41],[34,22],[60,7],[90,20]],"268":[[83,6],[10,15],[34,47]],"330":[[6,8],[88,6],[60,24],[14,43],[45,40],[16,19]],"331":[[22,12],[5,58],[82,41],[82,8]],"332":[[77,13],[64,7],[35,19],[19,36]],"339":[[91,41],[81,1],[44,9],[39,33],[45,56],[67,59]],"3765":[[70,34],[83,51],[9,43],[29,37]],"3766":[[5,46],[11,11],[60,11],[72,52],[53,55]]}},"Perski Książę":{"lvl":116,"prof":"b","spawns":{"Dolina Pustynnych Kręgów":[[11,89],[11,89],[10,21]],"Piachy Zniewolonych":[[33,23],[11,7],[75,30]],"Ruchome Piaski":[[79,54],[63,29],[15,16]],"Korsarska Nora - sala 2":[[4,22]],"Korsarska Nora - sala 4":[[10,6]],"Korsarska Nora p.2":[[11,6]],"Ukryta Grota Morskich Diabłów":[[51,32],[25,16]],"Ukryta Grota Morskich Diabłów - arsenał":[[4,14]],"Ukryta Grota Morskich Diabłów - skarbiec":[[8,4]],"Oaza Siedmiu Wichrów":[[61,15],[42,24]],"Ruiny Pustynnych Burz":[[42,46],[9,7],[42,79]],"Dolina Suchych Łez":[[71,16],[41,22],[61,55]]}},"Baca Bez Łowiec":{"lvl":123,"prof":"h","spawns":{"Wyjący Wąwóz":[[58,30],[7,10],[58,51],[35,3],[52,72],[8,75],[58,18],[54,50],[21,41],[50,32],[50,7],[44,71],[40,87],[14,36],[23,71],[38,53]],"Wyjąca Jaskinia":[[14,61],[35,28],[54,27],[23,51],[4,19],[24,19],[50,32],[10,18],[32,7],[17,60],[50,25]],"Niedźwiedzie Urwisko":[[20,6],[34,8],[33,23]],"Babi wzgórek":[[36,43],[55,7],[40,4],[54,78],[41,2],[34,54],[41,78],[56,67],[60,36],[12,60],[19,22],[15,88],[38,25],[38,33]],"Góralska Pieczara p.1":[[19,17],[19,22],[25,24],[35,4],[34,12]],"Góralska Pieczara p.2":[[7,5],[15,20],[5,31]],"Góralska Pieczara p.3":[[16,28],[24,38]],"Góralskie przejście":[[29,2],[38,46],[28,19],[48,87],[48,70],[42,64],[60,70],[3,46],[7,9],[22,39],[18,53],[56,5],[47,2],[33,27],[8,72],[6,46]],"Grota Halnego Wiatru p.1":[[4,12]],"Grota Halnego Wiatru p.2":[[26,27],[5,31],[7,5],[13,17]]}},"Lichwiarz Grauhaz":{"lvl":129,"prof":"w","spawns":{"286":[[7,16],[50,48]],"287":[[26,30]],"594":[[29,18]],"1192":[[55,48],[30,54]],"1227":[[6,43],[54,10],[51,21],[49,42]],"1228":[[8,51],[51,3],[5,18],[42,37]],"1229":[[53,9],[11,43],[8,13],[7,16],[37,40]],"1231":[[39,58],[33,47],[12,11]],"1232":[[41,14],[33,7],[58,11],[42,25]],"1234":[[21,19],[46,53],[5,39],[6,23]],"3468":[[32,32]],"3469":[[13,14]],"3470":[[18,27],[30,5],[21,31],[59,56]],"3471":[[39,6]],"3472":[[44,50]],"3473":[[36,43],[66,9]],"Śnieżna Grota p.2":[[34,10]],"Kryształowa Sala Smutku":[[16,7]],"Przejście magicznego mrozu":[[41,49]],"Przejście lodowatego wiatru":[[6,33]],"Szlak Thorpa p.2":[[32,32]],"Zasypane Ograbar-Dun":[[55,48],[30,54]],"Przejście zamarzniętych kości":[29,18]}},"Obłąkany Łowca Orków":{"lvl":144,"prof":"w","spawns":{"344":[[25,8],[61,36],[45,23],[86,4],[25,38],[45,61],[14,4],[24,40],[85,33],[19,10]],"Złudny Trakt":[[38,13],[58,17],[17,5],[9,51],[21,6],[7,59],[32,16],[37,9]],"Orcza Wyżyna":[[74,47],[16,16],[52,12],[59,35],[87,7]],"Grota Orczych Szamanów":[[12,19]],"Osada Czerwonych Orków":[[18,24],[19,23],[14,25],[62,42],[35,27],[41,78],[43,4],[60,47]],"Siedziba Rady Orków":[[11,25]],"Nawiedzone Kazamaty p.1":[[19,33],[45,13],[10,44],[42,39],[6,43],[45,9],[12,6],[32,16],[10,16],[25,7],[40,38],[16,16],[36,7]],"Nawiedzone Kazamaty p.3":[[27,22],[26,22]],"Nawiedzone Kazamaty p.4":[[19,36],[12,13],[48,19],[4,9],[9,9],[31,18],[7,25],[45,39],[31,19],[16,22],[34,30],[41,41],[6,45],[29,42],[48,38],[32,10],[5,30]],"Nawiedzone Kazamaty p.5":[[4,41],[26,13],[49,27],[9,33],[6,15],[31,35],[10,20],[4,43],[41,26],[8,16]],"Nawiedzone Kazamaty p.6":[[27,36]]}},"Czarująca Atalia":{"lvl":157,"prof":"m","spawns":{"1293":[[5,5],[46,56],[10,59],[82,4],[62,50],[89,24]],"1294":[[34,11],[54,12],[27,16],[46,40],[19,51]],"1297":[[45,4],[55,11],[44,54],[75,33],[1,43]],"1298":[[7,7],[9,16]],"1299":[[17,7],[23,13],[19,6]],"1300":[[5,8]],"1301":[[6,8],[2,6]],"1303":[[15,10],[11,13]],"1308":[[4,5],[9,10]]}},"Święty Braciszek":{"lvl":165,"prof":"b","spawns":{"Dom Rumiry i Dobromira p.1":[[5,7]],"Sklep z winem":[[5,7]],"Dom Wazira":[[6,6]],"Magazyn win p.1":[[6,5]],"Jezioro Ważek":[[17,11],[86,9],[7,57],[59,43]],"Pachnący Gąszcz":[[88,43],[26,44],[28,5]],"Las Zadumy":[[11,30],[46,47],[85,23]],"Agia Triada":[[67,38],[18,57],[34,21],[59,43]],"Grota Drążących Kropli p.1":[],"Grota Drążących Kropli p.2":[[11,8]],"Klasztor Różanitów - korytarz wejściowy":[[6,8],[5,8]],"Klasztor Różanitów - pomieszczenie gospodarcze":[[9,12]],"Klasztor Różanitów - klasztorny browar":[[12,6]],"Klasztor Różanitów - klasztorna piekarnia":[[2,10]],"Klasztor Różanitów - warsztat":[[12,6]],"Klasztor Różanitów - wirydarz":[[8,14]],"Klasztor Różanitów - dormitoria":[[13,15]],"Klasztor Różanitów - refektarz":[[4,22]],"Klasztor Różanitów - fraternia":[[5,15]],"Klasztor Różanitów - dzwonnica":[[11,8]],"Klasztor Różanitów - piwniczka":[[6,6]],"Klasztor Różanitów - lawaterz":[[3,10]],"Klasztor Różanitów - klatka schodowa":[[8,8],[8,12]],"Klasztor Różanitów - kapitularz":[[3,15]],"Klasztor Różanitów - świątynia":[[44,25],[8,14]],"Klasztor Różanitów - magazyn ksiąg":[[11,5]],"Klasztor Różanitów - cela opata":[[10,6]],"Klasztor Różanitów - wieża płn.-zach. p.1":[[9,12]],"Klasztor Różanitów - wieża płn.-zach. p.2":[[10,12]],"Klasztor Różanitów - wieża płn.-wsch. p.1":[[4,11]],"Klasztor Różanitów - strych p.1":[[20,12]],"Klasztor Różanitów - strych p.2":[[31,6],[22,20]],"Tunel pod Skałą p.1":[[14,53],[13,54]],"Tunel pod Skałą p.2":[[45,41]],"Tunel pod Skałą p.3":[[10,24]],"Ogrza kawerna p.1":[[26,4]],"Ogrza kawerna p.2":[[49,18]],"Ogrza kawerna p.3":[[26,16],[52,8]]}},"Viviana Nandid":{"lvl":184,"prof":"h","spawns":{"2056":[[16,6],[85,13],[68,46],[85,51],[8,26],[8,9],[56,14],[63,5],[22,23]],"Rozlewisko Kai":[[1,8],[28,14],[41,8],[12,32],[14,14],[71,62],[21,48],[13,55],[27,53],[75,26],[46,50],[42,14]],"Ruiny Tass Zhil":[[37,5],[57,21],[21,7],[55,40],[67,18],[50,12],[80,1],[10,45],[8,10],[59,52],[5,41],[37,5],[14,58],[62,58]],"Błota Sham Al":[[31,3],[51,11],[35,26],[5,40],[6,26],[32,38],[30,10]],"Gvar Hamryd":[[15,6],[72,5],[50,37],[63,19],[73,50],[3,27],[86,39],[6,44],[16,60],[90,27],[32,60],[25,26],[32,37],[53,35],[44,57],[77,60],[39,35]]}},"Mulher Ma":{"lvl":197,"prof":"b","spawns":{"114":[[71,4],[33,44],[25,18]],"574":[[22,3]],"575":[[14,53]],"730":[[90,9],[93,61]],"731":[[91,33],[14,4]],"865":[[11,5]],"1992":[[19,18]],"2002":[[4,17]],"2020":[[22,36],[48,41],[15,40],[76,58],[70,37],[74,58]],"2056":[[13,49],[65,38],[89,41]],"2063":[[18,48],[52,11]],"2126":[[7,6]],"2127":[[8,13]],"2163":[[6,8]],"2183":[[10,11],[18,14]],"2432":[[4,5]]}},"Demonis Pan Nicości":{"lvl":210,"prof":"m","spawns":{"971":[[14,15],[30,41],[30,32],[59,34],[15,34],[33,7],[15,17]],"973":[[48,33],[73,24],[89,49],[48,53],[48,14],[24,30],[23,30],[48,13],[48,34],[88,50],[73,23]],"974":[[15,27]],"975":[[18,11],[44,33],[18,12]],"976":[[32,44],[50,45],[50,46]],"977":[[47,45]]}},"Vapor Veneno":{"lvl":227,"prof":"w","spawns":{"1399":[[14,10],[63,9]],"1448":[[63,50],[63,23],[81,36],[53,7],[91,10],[40,37]],"1449":[[81,34],[86,52],[57,34],[53,51],[14,50],[32,33],[87,59],[27,35]],"1458":[[30,20],[2,25],[77,42],[51,29]],"1464":[[9,18]],"2902":[[20,23],[37,26]],"3135":[[50,57],[11,24],[29,47],[14,4],[17,45],[34,19],[58,34]],"3136":[[40,84],[47,11],[29,7],[24,74],[24,43],[12,52],[57,28],[54,76],[37,53],[43,29]],"3137":[[57,50],[49,39],[57,14],[33,29],[23,9]],"3138":[[37,83],[38,56],[18,57],[47,46],[50,87]],"3209":[[55,80],[52,60],[24,46],[39,51],[10,7],[8,78],[8,49],[31,78]]}},"Dęborożec":{"lvl":242,"prof":"w","spawns":{"3594":[[28,28],[41,46],[11,21],[80,50]],"3595":[[33,28],[75,27],[85,50]],"3596":[[40,8],[58,26],[60,50]],"3597":[[31,83],[2,31]],"3598":[[34,11],[46,48]],"3610":[[39,11],[7,57],[52,45]],"3611":[[30,9]],"3612":[[19,17],[17,17]],"3613":[[21,8],[52,22]],"3614":[[11,15]],"3615":[[13,11]],"3620":[[7,13]],"3621":[[11,18]],"3622":[[36,22]],"3623":[[17,17]],"3624":[[12,19]],"3625":[[23,27]],"3626":[[9,12]],"3627":[[20,23]]}},"Tepeyollotl":{"lvl":260,"prof":"b","spawns":{"1901":[[50,11],[18,71],[45,20],[24,33],[19,49]],"1924":[[10,7],[70,22],[76,47]],"1926":[[8,76],[11,16],[12,87],[5,76]],"1963":[[9,6]],"1964":[[17,7]],"1966":[[16,27]],"1982":[[13,19]],"3029":[[8,10]],"3030":[[10,20]],"3031":[[10,13]],"3032":[[49,22],[11,15],[17,35]],"3033":[[12,40],[70,40]],"3034":[[19,19]],"3035":[[31,31]],"3036":[[13,40],[14,40],[16,19],[16,8]],"3037":[[30,26],[37,13]],"3038":[[24,6],[21,32]],"3039":[[32,72]],"3040":[[12,12]],"3041":[[17,15],[15,12]],"3042":[[21,25],[22,24]],"3043":[[22,41],[32,11],[54,9],[9,19]]}},"Młody Smok":{"lvl":282,"prof":"m","spawns":{"Pustynia Shaiharrud - wschód":[[5,2],[47,24],[24,61],[4,38],[21,76]],"Pustynia Shaiharrud - zachód":[[4,19],[26,8],[52,38],[22,85]],"Urwisko Vapora":[[64,37],[83,48],[29,46],[20,58]],"Jaskinia Sępa s.1":[[27,11]],"Jaskinia Piaskowej Burzy s.1":[[16,8]],"Jaskinia Smoczej Paszczy p.1":[[31,34]],"Jaskinia Smoczej Paszczy p.2":[[25,27]],"Jurta Nomadzka":[[3,6]],"Jaskinia Piaskowej Burzy s.2":[[5,20]],"Świątynia Hebrehotha - przedsionek":[[26,12]],"Skały Umarłych":[[31,87],[54,70],[60,30],[30,31]],"Jaskinia Próby":[[14,19]],"Jaskinia Odwagi":[[31,40],[29,11]],"Smocze Skalisko":[[52,50],[67,27]],"Sępiarnia":[[7,5]],"Grota Poświęcenia":[[4,21]]}}};
- var eliteDB = {
- //elity do dziennego questa w margonem.com
- "Masked Blaise": {
- lvl: -1,
- ver: "en",
- //spawns: {196:[[8,5]]} w sumie to ich na całą mapę ładuje więc bez sensu
- },
- "Cula Joshua": {
- lvl: -1,
- ver: "en",
- spawns: {}
- },
- "Mola Nito": {
- lvl: -1,
- ver: "en",
- spawns: {}
- },
- "Toto Acirfa": {
- lvl: -1,
- ver: "en",
- spawns: {}
- },
- "Masked Roman": {
- lvl: -1,
- ver: "en",
- spawns: {}
- },
- "Possessed Fissit": {
- lvl: -1,
- ver: "en",
- spawns: {}
- },
- "Soda": {
- lvl: -1,
- ver: "en",
- spawns: {}
- },
- "Molybdenum Matityahu": {
- lvl: -1,
- ver: "en",
- spawns: {}
- },
- "Hummopapa": {
- lvl: -1,
- ver: "en",
- spawns: {}
- },
- "Shponder":{
- lvl: -1,
- ver:"en",
- spawns:{}
- },
- "Mobile Jeecus":{
- lvl: -1,
- ver:"en",
- spawns:{}
- }
- };
- this.getHerosDB = function() {
- return herosDB;
- };
- var niceSettings = new (function(options) {
- var self = this;
- var {get, set, data, header, onSave} = options;
- var panels = {};
- var $currentPanel = false;
- var $activeLPanelEntry;
- var $rpanel;
- var $wrapper;
- var shown = false;
- this.toggle = function() {
- var lock = interface == "new" ? Engine.lock : (interface == "old" ? g.lock : null);
- if (shown) {
- if (lock) lock.remove("ns-"+header);
- else global.dontmove = false;
- $wrapper.style["display"] = "none";
- } else {
- if (lock) lock.add("ns-"+header);
- else global.dontmove = true;
- $wrapper.style["display"] = "block";
- };
- shown = !shown;
- };
- this.initHTML = function() {
- $wrapper = document.createElement("div");
- $wrapper.classList.add("ns-wrapper");
- document.body.appendChild($wrapper);
- var $header = document.createElement("div");
- $header.innerHTML = header + " - ustawienia";
- $header.classList.add("ns-header");
- $wrapper.appendChild($header);
- var $close = document.createElement("div");
- $close.innerHTML = "X";
- $close.classList.add("ns-close");
- $close.addEventListener("click", this.toggle);
- $wrapper.appendChild($close);
- var $panels = document.createElement("div");
- $panels.classList.add("ns-panels");
- $wrapper.appendChild($panels);
- var $lpanel = document.createElement("div");
- $lpanel.addEventListener("click", this.lPanelClick);
- $lpanel.classList.add("ns-lpanel");
- $panels.appendChild($lpanel);
- $rpanel = document.createElement("div");
- $rpanel.classList.add("ns-rpanel");
- $rpanel.addEventListener("click", this.globalRpanelHandler);
- $panels.appendChild($rpanel);
- $lpanel.innerHTML = this.generateLpanelHtml();
- this.genereteRpanels();
- };
- this.lPanelClick = function(e) {
- if (e.target.dataset["name"]) {
- self.togglePanel(e.target.dataset["name"]);
- if ($activeLPanelEntry) $activeLPanelEntry.classList.remove("active");
- $activeLPanelEntry = e.target;
- $activeLPanelEntry.classList.add("active");
- };
- };
- this.globalRpanelHandler = function(e) {
- var tar = e.target;
- if (tar.dataset["listbtt"]) {
- var key = tar.dataset["listbtt"];
- var $content = document.querySelector(".ns-list-content[data-list='"+key+"']");
- var $input = document.querySelector("input[data-list='"+key+"']");
- self.adddContentToList($content, $input);
- } else if (tar.dataset["listitem"]) {
- tar.remove();
- };
- };
- this.adddContentToList = function($content, $input) {
- var val = $input.value;
- if (val == "") return;
- $input.value = "";
- var items = this.getContentItems($content);
- if (items.indexOf(val) > -1) return
- var $div = document.createElement("div");
- $div.classList.add("ns-list-item");
- $div.dataset["listitem"] = "1";
- $div.innerText = val;
- $content.appendChild($div);
- };
- this.getContentItems = function($content) {
- var items = [];
- for (var i=0; i<$content.children.length; i++) {
- items.push($content.children[i].innerHTML);
- };
- return items;
- };
- this.togglePanel = function(name) {
- if ($currentPanel) $currentPanel.remove();
- $currentPanel = panels[name];
- $rpanel.appendChild($currentPanel);
- this.setAsyncPanelContent(name);
- };
- this.setAsyncPanelContent = function(name) {
- var entries = options.data[name];
- for (var i=0; i<entries.length; i++) {
- var entry = entries[i];
- if (entry.asyncid) {
- entry.fun(val => {
- var el = document.getElementById(entry.asyncid);
- if (el) el.innerHTML = val;
- });
- };
- };
- };
- this.genereteRpanels = function() {
- for (var name in data) {
- this.generateRpanel(name, data[name]);
- };
- };
- this.generateRpanel = function(name, content) {
- var $panel = document.createElement("div");
- panels[name] = $panel;
- var html = "";
- for (var i=0; i<content.length; i++) {
- html += this.generateRpanelEntryHtml(content[i]);
- };
- $panel.innerHTML = html;
- var $btt = document.createElement("div");
- $btt.innerHTML = "Zapisz";
- $btt.classList.add("ns-save-button");
- $btt.addEventListener("click", () => this.savePanel(name));
- $panel.appendChild($btt);
- };
- this.generateRpanelEntryHtml = function(entry) {
- var {type, special} = this.getEntryType(entry.type);
- if (!special) {
- var input = "<input data-key='"+entry.key+"' type='"+type+"' value='"+get(entry.key)+"'></input>";
- return this.getRpanelEntry(entry.name, input, entry.tip);
- } else {
- if (type == "range") {
- var input = "<input data-key='"+entry.key+"' type='"+type+"' value='"+get(entry.key)*100+"' min='"+entry.data[0]*100+"' max='"+entry.data[1]*100+"'></input>";
- return this.getRpanelEntry(entry.name, input, entry.tip);
- } else if (type == "checkbox") {
- var input = "<input data-key='"+entry.key+"' type='"+type+"' "+(get(entry.key) ? "checked" : "")+"></input>";
- return this.getRpanelEntry(entry.name, input, entry.tip);
- } else if (special == "char") {
- var input = "<input data-key='"+entry.key+"' type='"+type+"' value='"+String.fromCharCode(get(entry.key))+"' maxlength='1' style='width: 10px; text-align: center'></input>";
- return this.getRpanelEntry(entry.name, input, entry.tip);
- } else if (special == "noinput") {
- if (type != "async") {
- return this.getRpanelEntry(entry.t1, entry.t2, entry.tip);
- } else {
- var id = "NS-async-"+Math.random()*10;
- entry.asyncid = id;
- return this.getRpanelEntry(entry.t1, "<div id='"+id+"'>"+entry.placeholder+"</div>", entry.tip);
- };
- } else if (type == "list") {
- return this.generateListInput(entry);
- };
- };
- };
- this.generateListInput = function(entry) {
- var list = get(entry.key);
- var html;
- html = "<div class='ns-list-wrapper'>";
- html += "<div class='ns-list-header'>"+entry.name+"</div>";
- html += "<div class='ns-list-content' data-list='"+entry.key+"'>";
- for (var i=0; i<list.length; i++) {
- html += "<div class='ns-list-item' data-listitem='1'>"+list[i]+"</div>";
- };
- html += "</div>";
- html += "<div class='ns-list-bottombar'>";
- html += "<div class='ns-list-input'><input data-list='"+entry.key+"' type='text'></div>";
- html += "<div class='ns-list-addbtt' data-listbtt='"+entry.key+"'>+</div>";
- html += "</div>";
- html += "</div>";
- return html;
- };
- this.getRpanelEntry = function(txt, input, tip) {
- return "<div "+(tip ? (interface == "new" ? "data-tip" : "tip") + "='"+tip+"'" : "")+" class='ns-rpanel-entry'><div class='ns-rpanel-entry-left'>"+txt+"</div><div class='ns-rpanel-entry-right'>"+input+"</div></div>";
- };
- this.getEntryType = function(entrytype) {
- var special = false;
- switch (entrytype) {
- case "string":
- var type = "text";
- break;
- case "color":
- var type = "color";
- break;
- case "range":
- special = true;
- var type = "range";
- break;
- case "check":
- special = true;
- var type = "checkbox";
- break;
- case "char":
- special = "char";
- var type = "text";
- break;
- case "list":
- special = true;
- var type = "list";
- break;
- case "numstring":
- var type = "number";
- break;
- case "info-async":
- var type = "async";
- special = "noinput";
- break;
- default:
- special = "noinput";
- };
- return {
- type: type,
- special: special
- };
- }
- this.generateLpanelHtml = function() {
- var html = "";
- for (var name in data) {
- html += "<div class='ns-lpanel-entry' data-name='"+name+"'>"+name+"</div>";
- };
- return html;
- };
- this.savePanel = function(name) {
- var panel = data[name];
- for (var i=0; i<panel.length; i++) {
- this.savePanelEntry(panel[i]);
- };
- onSave();
- };
- this.savePanelEntry = function(entry) {
- var {type, special} = this.getEntryType(entry.type);
- if (!special) {
- var val = this.getEntryValue(entry.key);
- if (type == "number") {
- val = parseInt(val);
- if (isNaN(val)) return;
- };
- set(entry.key, val);
- } else {
- if (type == "range") {
- set(entry.key, this.getEntryValue(entry.key)/100);
- } else if (type == "checkbox") {
- set(entry.key, this.getCheckboxState(entry.key));
- } else if (special == "char") {
- var val = this.getEntryValue(entry.key).toUpperCase().charCodeAt(0);
- if (isNaN(val)) return;
- set(entry.key, val);
- } else if (type == "list") {
- var $content = document.querySelector(".ns-list-content[data-list='"+entry.key+"']");
- var items = this.getContentItems($content);
- set(entry.key, items);
- };
- };
- };
- this.getEntryValue = function(key) {
- return document.querySelector("input[data-key='"+key+"']").value;
- };
- this.getCheckboxState = function(key) {
- return document.querySelector("input[data-key='"+key+"']").checked;
- };
- this.initCss = function() {
- var css = `
- .ns-wrapper {
- width: 600px;
- height: 600px;
- background: rgba(0,0,0,.8);
- border: 2px solid #222222;
- border-radius: 20px;
- position: absolute;
- left: calc(50% - 300px);
- top: calc(50% - 300px);
- z-index: 500;
- color: white;
- display: none;
- ${interface == "superold" ? "transform: scale(0.8, 0.8);" : ""}
- }
- .ns-wrapper .ns-close {
- width: 30px;
- height: 30px;
- font-size: 20px;
- line-height: 30px;
- text-align: center;
- background: rgba(0,0,0,.6);
- transition: background .1s ease-in-out;
- position: absolute;
- right: 3px;
- top: 3px;
- cursor: pointer;
- }
- .ns-wrapper .ns-close:hover {
- background: rgba(0,0,0,.9);
- }
- .ns-wrapper .ns-header {
- border-bottom: 1px solid #333333;
- font-size: 26px;
- padding-left: 15px;
- color: white;
- height: 39px;
- line-height: 40px;
- background: rgba(50,50,50,.8);
- }
- .ns-wrapper .ns-panels {
- height: 560px;
- }
- .ns-wrapper .ns-panels .ns-lpanel {
- height: 560px;
- width: 200px;
- border-right: 1px solid #333333;
- float: left;
- }
- .ns-wrapper .ns-panels .ns-lpanel .ns-lpanel-entry {
- width: 75%;
- height: 30px;
- line-height: 30px;
- font-size: 19px;
- padding-left: 5px;
- background: linear-gradient(to right, rgba(100,100,100,0.45) , rgba(100,100,100,0));
- transition: all .15s ease-in-out;
- cursor: pointer;
- margin-bottom: 1px;
- }
- .ns-wrapper .ns-panels .ns-lpanel .ns-lpanel-entry.active {
- background: linear-gradient(to right, rgba(150,150,150,0.45) , rgba(150,150,150,0));
- width: 100%;
- padding-left: 13px;
- }
- .ns-wrapper .ns-panels .ns-lpanel .ns-lpanel-entry:hover {
- width: 100%;
- padding-left: 13px;
- }
- .ns-wrapper .ns-panels .ns-rpanel {
- height: 560px;
- width: 390px;
- float: left;
- }
- .ns-wrapper .ns-panels .ns-rpanel .ns-rpanel-entry {
- height: 30px;
- margin: 3px;
- line-height: 30px;
- background: rgba(50,50,50,0.5);
- }
- .ns-panels .ns-rpanel .ns-rpanel-entry .ns-rpanel-entry-left {
- float: left;
- height: 30px;
- width: 180px;
- padding-left: 6px;
- }
- .ns-panels .ns-rpanel .ns-rpanel-entry .ns-rpanel-entry-right {
- float: right;
- height: 30px;
- width: 180px;
- text-align: right;
- padding-right: 6px;
- }
- .ns-rpanel .ns-rpanel-entry .ns-rpanel-entry-right input[type='color'] {
- background: black;
- border: none;
- transition: background .15s ease-in-out;
- }
- .ns-rpanel .ns-rpanel-entry .ns-rpanel-entry-right input[type='color']:hover {
- background: #282828;
- }
- .ns-rpanel .ns-rpanel-entry .ns-rpanel-entry-right input[type='text'], .ns-rpanel .ns-rpanel-entry .ns-rpanel-entry-right input[type='number'] {
- background: rgba(0,0,0,0.8);
- border: 1px solid black;
- width: 80px;
- color: #CCCCCC;
- text-align: right;
- }
- .ns-rpanel .ns-save-button {
- position: absolute;
- bottom: 10px;
- right: 10px;
- height: 30px;
- width: 70px;
- font-size: 20px;
- line-height: 30px;
- text-align: center;
- border: 1px solid #333333;
- background: rgba(50,50,50,0.5);
- cursor: pointer;
- transition: background .1s ease-in-out;
- }
- .ns-rpanel .ns-save-button:hover {
- background: rgba(50,50,50,0.7);
- }
- .ns-list-wrapper {
- background: rgba(50,50,50,0.5);
- width: 350px;
- margin: 10px;
- border: 1px solid #333333;
- }
- .ns-list-wrapper .ns-list-header {
- text-align: center;
- height: 20px;
- font-size: 15px;
- line-height: 20px;
- }
- .ns-list-wrapper .ns-list-content {
- min-height: 80px;
- max-height: 1700px;
- overflow-y: auto;
- border-top: 1px solid #333333;
- border-bottom: 1px solid #333333;
- }
- .ns-list-wrapper .ns-list-content .ns-list-item {
- cursor: pointer;
- margin: 1px;
- background: rgba(50,50,50,0.4);
- text-align: center;
- height: 15px;
- line-height: 15px;
- font-size: 12px;
- }
- .ns-list-wrapper .ns-list-bottombar {
- height: 20px;
- }
- .ns-list-wrapper .ns-list-bottombar .ns-list-input {
- float: left;
- width: 270px;
- }
- .ns-list-wrapper .ns-list-bottombar .ns-list-input input {
- background: rgba(0,0,0,0.8);
- border: 1px solid black;
- color: #CCCCCC;
- width: 320px;
- }
- .ns-list-wrapper .ns-list-bottombar .ns-list-addbtt {
- width: 20px;
- float: right;
- text-align: center;
- line-height: 20px;
- background: rgba(50,50,50,0.6);
- cursor: pointer;
- }
- .ns-list-wrapper .ns-list-bottombar .ns-list-addbtt:hover {
- background: rgba(50,50,50,0.9);
- }
- `;
- var $style = document.createElement("style");
- $style.innerHTML = css;
- document.head.appendChild($style);
- };
- this.init = function() {
- this.initHTML();
- this.initCss();
- };
- })({
- get: settings.get,
- set: settings.set,
- onSave: this.onSettingsUpdate,
- header: "miniMapPlus",
- data: {
- "Kolory": [
- {
- key: "/colors/hero",
- name: "Twoja postać",
- type: "color"
- },
- {
- key: "/colors/other",
- name: "Inni gracze",
- type: "color"
- },
- {
- key: "/colors/friend",
- name: "Znajomi",
- type: "color"
- },
- {
- key: "/colors/enemy",
- name: "Wrogowie",
- type: "color"
- },
- {
- key: "/colors/clan",
- name: "Klanowicze",
- type: "color"
- },
- {
- key: "/colors/ally",
- name: "Sojusznicy",
- type: "color"
- },
- {
- key: "/colors/npc",
- name: "Zwykły NPC",
- type: "color"
- },
- {
- key: "/colors/mob",
- name: "Zwykły mob",
- type: "color"
- },
- {
- key: "/colors/elite",
- name: "Elita",
- type: "color"
- },
- {
- key: "/colors/elite2",
- name: "Elita II/eventowa",
- type: "color"
- },
- {
- key: "/colors/elite3",
- name: "Elita III",
- type: "color"
- },
- {
- key: "/colors/heros",
- name: "Heros",
- type: "color"
- },
- {
- key: "/colors/titan",
- name: "Tytan",
- type: "color"
- },
- {
- key: "/colors/item",
- name: "Przedmiot",
- type: "color"
- },
- {
- key: "/colors/gw",
- name: "Przejście",
- type: "color"
- }
- ],
- "Wygląd mapy": [
- {
- key: "/mapsize",
- name: "Rozmiar mapy",
- type: "range",
- tip: "Zmiany widoczne po odświeżeniu gry",
- data: [0.6, 1.4]
- },
- {
- key: "/opacity",
- name: "Widoczność mapy",
- type: "range",
- data: [0.5, 1]
- },
- {
- key: "/darkmode",
- name: "Motyw ciemny",
- type: "check"
- }
- ],
- "Tracking": [
- {
- type: "info",
- t1: "Co to jest?",
- t2: "",
- tip: "Tracking (tropienie) to alternatywna opcja wyszukiwania NPC/itemów na mapie. Polega na tym, że gdy na mapie pojawi się coś z poniższej listy, w oknie gry ukaże się strzałka, która będzie wzkazywała drogę do tej rzeczy.<br>Dodatkowo gdy na mapie pojawia się heros, automatycznie uruchamia się tracking na niego, co jest przydatne np. w podchodzeniu do herosów eventowych."
- },
- {
- key: "/trackedNpcs",
- name: "Tracking NPC",
- type: "list"
- },
- {
- key: "/trackedItems",
- name: "Tracking itemów",
- type: "list"
- }
- ],
- "Inne": [
- {
- key: "/minlvl",
- name: "Min. lvl potworków",
- type: "numstring"
- },
- {
- key: "/maxlvl",
- name: "Max. przewaga",
- tip: "Maksymalna różnica poziomów między Tobą a potworkiem przy której nie niszczy się loot na świecie na którym grasz. Jeśli nie wiesz co to, zostaw 13.",
- type: "numstring"
- },
- {
- key: "/show",
- name: "Hotkey",
- type: "char"
- },
- {
- key: "/altmobilebtt",
- name: "Przesuń przycisk mobilny",
- type: "check",
- tip: "Przesuwa przycisk widoczny na urządzeniach mobilnych pomiędzy torby"
- },
- {
- key: "/interpolerate",
- name: "Animacje na mapie",
- type: "check"
- },
- {
- key: "/showqm",
- name: "Zaznaczaj questy",
- type: "check"
- },
- {
- key: "/novisibility",
- name: "Nie pokazuj \"mgły wojny\"",
- type: "check",
- tip: "Wyłącza pokazywanie widzianego obszaru na czerwonych mapach.<br>Nie pozdrawiam klanu Game Over (Jaruna), który utrudniał testowanie tej funkcjonalności dedając mnie bez powodu."
- }
- /*,
- {
- key: "/showevonetwork",
- name: "Pokazuj postacie z WSync",
- tip: "World Sync to dodatek stworzony przez CcarderRa, który pozwala widzieć graczy z innych światów. Jest częścią Evolution Managera, którego można znaleźć na forum w dziale Dodatki do gry.",
- type: "check"
- }*/
- ],
- "Informacje": [
- {
- type: "info",
- t1: "Wersja",
- t2: "v"+this.version+(interface == "new" ? " NI" : (interface == "old" ? " SI" : " OM"))
- },
- {
- type: "info",
- t1: "Źródło instalacji",
- t2: this.getInstallSource()
- },
- {
- type: "info-async",
- t1: "Licznik instalacji",
- placeholder: "wczytywanie...",
- tip: "Liczy od wersji 3.1 minimapy",
- fun: this.installationCounter.get
- }
- ]
- }
- });
- this.init();
- niceSettings.init();
- })();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement