abstract
| - // File:Lock Icon.png This page is protected to prevent harmful edits. Contact an administrator if you want to suggest changes to the page. If you think this page should be unprotected, then use {{unprotect}} on the talk page. Reason: this page contains javascript and therefor VERY vulnerable to vandalism or hackers //JS //All images need to have this size: //high resolution images(png) should be 4x in size minimap_images_width = 2304; minimap_images_height = 2048; minimap_mapper_page = 'http://tibia.wikia.com/wiki/Mapper'; minimap_max_x = 132; minimap_max_y = 129; minimap_images = []; minimap_images[0] = [ 'http://images2.wikia.nocookie.net/tibia/en/images/9/97/Minimap_Symbols.gif', 'http://images4.wikia.nocookie.net/tibia/en/images/6/6c/Minimap_Loading.gif' ]; minimap_images[1] = [ 'https://tibiamaps.github.io/tibia-map-data/floor-00-map.png', 'https://tibiamaps.github.io/tibia-map-data/floor-01-map.png', 'https://tibiamaps.github.io/tibia-map-data/floor-02-map.png', 'https://tibiamaps.github.io/tibia-map-data/floor-03-map.png', 'https://tibiamaps.github.io/tibia-map-data/floor-04-map.png', 'https://tibiamaps.github.io/tibia-map-data/floor-05-map.png', 'https://tibiamaps.github.io/tibia-map-data/floor-06-map.png', 'https://tibiamaps.github.io/tibia-map-data/floor-07-map.png', 'https://tibiamaps.github.io/tibia-map-data/floor-08-map.png', 'https://tibiamaps.github.io/tibia-map-data/floor-09-map.png', 'https://tibiamaps.github.io/tibia-map-data/floor-10-map.png', 'https://tibiamaps.github.io/tibia-map-data/floor-11-map.png', 'https://tibiamaps.github.io/tibia-map-data/floor-12-map.png', 'https://tibiamaps.github.io/tibia-map-data/floor-13-map.png', 'https://tibiamaps.github.io/tibia-map-data/floor-14-map.png', 'https://tibiamaps.github.io/tibia-map-data/floor-15-map.png' ]; minimap_images[4] = [ '', '', '', '', '', '', '', 'http://images.wikia.com/tibia/en/images/c/c5/Minimap_Floor_7h.png', '', '', '', '', '', '', '', '' ]; if (typeof Image === 'function') { // Image constructor supported, we can preload images preload_image = function (src) { var img = new Image(); img.src = src; return img; }; preload_image_array = function (arr) { var len = arr.length; while (len--) { preload_image(arr[len]); } }; mapper_preload_files = function (ele) { var files = minimap_images, len = files.length; if (ele.checked) { while (len--) { if (files[len] && typeof files[len] === 'object') { preload_image_array(files[len]); } } } }; } minimap_get_coords = function(url, varname) { url = decodeURI(url); if (typeof varname == 'undefined') { varname = 'coords'; } var pars = [], tmpp = url.split(varname + '='); tmpp.shift(); tmpp = tmpp.join('').split('&')[0]; if (varname == 'coords') { //0x.1x,2y.3y,4z,5zoom,6zoomm,7centermark if (tmpp === '' || (tmpp = tmpp.split(/[,-]/)).length < 3) { pars = [127, 128, 124, 128, 7, 1, 1, 1]; } else { pars[0] = parseInt(tmpp[0].split('.')[0] || 127, 10); pars[1] = parseInt(tmpp[0].split('.')[1] || 0, 10); pars[2] = parseInt(tmpp[1].split('.')[0] || 124, 10); pars[3] = parseInt(tmpp[1].split('.')[1] || 0, 10); pars[4] = parseInt(tmpp[2] || 7, 10); pars[5] = parseFloat(tmpp[3] || 1); pars[6] = parseFloat(tmpp[4] || 1); pars[7] = parseInt(tmpp[5] || 1, 10); pars[0] = (pars[0] > minimap_max_x || pars[0] < 124 ? 127 : pars[0]); pars[1] = (pars[1] > 255 || pars[1] < 0 ? 0 : pars[1]); pars[2] = (pars[2] > minimap_max_y || pars[2] < 121 ? 124 : pars[2]); pars[3] = (pars[3] > 255 || pars[3] < 0 ? 0 : pars[3]); pars[4] = (pars[4] > 15 || pars[4] < 0 ? 7 : pars[4]); pars[5] = (pars[5] > 8 || pars[5] < 1 ? 1 : pars[5]); pars[6] = (pars[6] > 8 || pars[6] < 0 ? 1 : pars[6]); pars[7] = (pars[7] > 1 || pars[7] < 0 ? 1 : pars[7]); } } else if (varname.indexOf('mark') === 0) { //Default 0x.1x,2y.3y,4z,5icon,6link if (tmpp === '' || (tmpp = tmpp.split(/[,-]/)).length < 3) { pars = [127, 128, 124, 128, 7, 1, '']; } else { pars[0] = parseInt(tmpp[0].split('.')[0] || 127, 10); pars[1] = parseInt(tmpp[0].split('.')[1] || 0, 10); pars[2] = parseInt(tmpp[1].split('.')[0] || 124, 10); pars[3] = parseInt(tmpp[1].split('.')[1] || 0, 10); pars[4] = parseInt(tmpp[2] || 7, 10); pars[5] = parseInt(tmpp[3] || 1, 10); pars[6] = tmpp[4] || ''; pars[0] = (pars[0] > minimap_max_x || pars[0] < 124 ? 127 : pars[0]); pars[1] = (pars[1] > 255 || pars[1] < 0 ? 0 : pars[1]); pars[2] = (pars[2] > minimap_max_y || pars[2] < 121 ? 124 : pars[2]); pars[3] = (pars[3] > 255 || pars[3] < 0 ? 0 : pars[3]); pars[4] = (pars[4] > 15 || pars[4] < 0 ? 7 : pars[4]); pars[5] = (pars[5] > 22 || pars[5] < 0 ? 1 : pars[5]); } } return pars; }; minimap_change_src = function () { var fresh = (minimap_read_cookie('minimap_fresh') == '1'), len1 = minimap_images.length, len2, currList; if (fresh) { while (len1--) { currList = minimap_images[len1]; len2 = currList instanceof Array ? currList.length : 0; while (len2--) { if (currList[len2]) { currList[len2] += "?nocache=" + (+new Date()); } } } } }; minimap_center_div = function () { var aligner = function(ea) { if (ea.css('display') == 'block') { var tmp = parseInt((($(window).height() - ea[0].offsetHeight) / 2)+ $(window).scrollTop(), 10); tmp = (tmp > 0 ? tmp : 10); ea.css({position: 'absolute', top:tmp, left: parseInt((($(window).width() - ea.width()) / 2)+ $(window).scrollLeft(), 10)}); $('#minimap_blackout').css({display: 'block'}).height($(document).height()); } }; aligner($('#minimap_wp')); }; minimap_drago = null; minimap_dragos = null; minimap_dragms = null; minimap_dragstart = function () { $('#minimap_img').mousedown(function(ev) { if (!(minimap_drago = $('#minimap_imgdiv')[0])) { return; } minimap_dragms = {x:ev.pageX, y:ev.pageY}; minimap_dragos = {x:$(minimap_drago).css('left'), y:$(minimap_drago).css('top')}; return false; }); }; $(document).mouseup(function (ev) { if (minimap_drago) { minimap_map_data[1] += parseInt((minimap_dragms.x -ev.pageX)/minimap_map_data[5], 10); minimap_map_data[3] += parseInt((minimap_dragms.y -ev.pageY)/minimap_map_data[5], 10); minimap_pos(); } minimap_drago = null; }); $(document).mousemove(function (ev) { if (minimap_drago) { minimap_drago.style.left = (parseFloat(minimap_dragos.x) - (minimap_dragms.x - ev.pageX))+'px'; minimap_drago.style.top = (parseFloat(minimap_dragos.y) - (minimap_dragms.y - ev.pageY))+'px'; return false; } }); minimap_map_data = []; minimap_map_sdata = []; minimap_data_to_url = function (type) { //0x.1x,2y.3y,4z,5zoom,6zoomm,7centermark //0x.1x,2y.3y,4z,5icon,6link var x, ret; if (type === 0) {//Direct Link ret = minimap_mapper_page+'?coords='; ret += minimap_map_data[0]+'.'+minimap_map_data[1]+'-'+minimap_map_data[2]+'.'+minimap_map_data[3]+'-'+ minimap_map_data[4]+'-'+minimap_map_data[5]+'-'+minimap_map_data[6]+'-'+minimap_map_data[7]; if ($('#minimap_marks_enabled').is(':checked')) { for (x in minimap_map_data) { if (minimap_map_data.hasOwnProperty(x) && typeof minimap_map_data[x] == 'object') { ret += '&'+x+'='; ret += minimap_map_data[x][0]+'.'+minimap_map_data[x][1]+'-'+minimap_map_data[x][2]+'.'+minimap_map_data[x][3]+ '-'+minimap_map_data[x][4]+'-'+minimap_map_data[x][5]+(minimap_map_data[x][6] ? '-'+minimap_map_data[x][6] : ''); } } } } else if (type == 1) {//Template:Minimap ret = '{'+'{Minimap'; ret += '|x='+minimap_map_data[0]+'.'+minimap_map_data[1]+'|y='+minimap_map_data[2]+'.'+minimap_map_data[3]+'|z='+ minimap_map_data[4]+'|zoom='+minimap_map_data[5]+'|zoomm='+minimap_map_data[6]+ '|width='+(1 / minimap_map_data[5])+'|height='+(1 / minimap_map_data[5])+ '|centermark='+(minimap_map_data[7] ? 'yes' : 0); if ($('#minimap_marks_enabled').is(':checked')) { for (x in minimap_map_data) { if (minimap_map_data.hasOwnProperty(x) && typeof minimap_map_data[x] == 'object') { if (minimap_map_data[4] != minimap_map_data[x][4]) { continue; } ret += '|'+x+'='; ret += minimap_map_data[x][0]+'.'+minimap_map_data[x][1]+','+minimap_map_data[x][2]+'.'+minimap_map_data[x][3]+ ','+minimap_map_data[x][5]+','+minimap_map_data[x][6]; } } } ret += '}'+'}'; } else if (type == 2) {//Wiki Link ret = document.getElementById('minimap_tcode3').value.replace(/\s|%20/gi, '_'); ret = '['+minimap_data_to_url(0).replace(/\s|%20/gi, '_')+(ret === '' ? '' : ' ')+ret+']'; } else if (type == 3) {//x,y,z ret = minimap_map_data[0]+'.'+minimap_map_data[1]+','+minimap_map_data[2]+'.'+minimap_map_data[3]+','+ minimap_map_data[4]; } else if (type == 4) {//tibiaml map ret = 'http://map.tibiaml.com/?p='+ ((minimap_map_data[0]*256)+minimap_map_data[1])+','+((minimap_map_data[2]*256)+minimap_map_data[3])+','+ minimap_map_data[4]+':'+(minimap_map_data[5] > 7 ?8:(minimap_map_data[5] > 3 ?7:(minimap_map_data[5] > 2 ?6:5))); } return ret; }; minimap_mapper_list_click = function() { if ($('#minimap_loading').css('display') == 'block') { return; } var e = $('#mapper_list :selected').val(); e = decodeURI(e).split(','); $('#mapper_mark_remove').attr('disabled', false); minimap_map_data[0] = parseInt(e[0], 10); minimap_map_data[1] = parseInt(e[1], 10); minimap_map_data[2] = parseInt(e[2], 10); minimap_map_data[3] = parseInt(e[3], 10); minimap_map_data[4] = parseInt(e[4], 10); minimap_pos(false); }; minimap_read_cookie = function(name) { var i, c, cl = document.cookie.split(';'); for(i=0;i'+i+''; i++; } $('#mapper_list').empty().append(tmp); } } }; minimap_pos_b = function(act, val) { if ($('#minimap_loading').css('display') == 'block') { return; } var x; if (act == 'reset') { minimap_map_data = []; for (x in minimap_map_sdata) { if (minimap_map_sdata.hasOwnProperty(x)) { minimap_map_data[x] = (typeof minimap_map_sdata[x] == 'object' ? minimap_map_sdata[x].slice(0) : minimap_map_sdata[x]); } } } else if (act == 'we') { minimap_map_data[1] += val; } else if (act == 'ns') { minimap_map_data[3] += val; } else if (act == 'zoom') { x = minimap_map_data[5] * val; if (x > 8 || x < 1) { return; } minimap_map_data[5] = Math.round(x); if (minimap_map_data[5] < 1) { minimap_map_data[5] = 1; } while (minimap_map_data[5] != 1 && minimap_map_data[5] != 2 && minimap_map_data[5] != 4 && minimap_map_data[5] != 8) { minimap_map_data[5]--; } } else if (act == 'floor') { x = minimap_map_data[4] + val; if (x > 15 || x < 0) { return; } minimap_map_data[4] = x; } minimap_pos(); }; minimap_pos = function(reset_list) { $('#minimap_maindiv').css('display', 'none'); $('#minimap_loading').css('display', 'block'); //Adjusts values out of range for x and y minimap_map_data[0] = minimap_map_data[0]+Math.floor(minimap_map_data[1] / 256); minimap_map_data[1] = minimap_map_data[1]-(Math.floor(minimap_map_data[1]/256)*256); minimap_map_data[2] = minimap_map_data[2]+Math.floor(minimap_map_data[3] / 256); minimap_map_data[3] = minimap_map_data[3]-(Math.floor(minimap_map_data[3]/256)*256); var hres, d, ch, parss, pars = minimap_map_data; var tleft = Math.floor((((pars[0] - 124 - (1*(1/pars[5]))) * 256) + pars[1]) * pars[5], 10)+Math.floor(pars[5] / 2); var ttop = Math.floor((((pars[2] - 121- (0.75*(1/pars[5]))) * 256) + pars[3]) * pars[5], 10)+Math.floor(pars[5] / 2); var twidth = Math.floor(minimap_images_width * pars[5]); var theight = Math.floor(minimap_images_height * pars[5]); hres = (minimap_read_cookie('minimap_hres') == '1'); //main image d = $('#minimap_imgdiv'); d.css({'left':(-1*tleft)+'px', 'top':(-1*ttop)+'px'}); ch = d.children(':first'); ch.width(twidth).height(theight); hres = (hres ? (pars[5] >= 3 ? (minimap_images[4] && minimap_images[4][pars[4]] ? 4 : 1) : 1) : 1); if (ch.attr('src') == minimap_images[hres][pars[4]]) { $('#minimap_loading').css('display', 'none'); $('#minimap_maindiv').css('display', 'block'); } else { ch.attr('src', minimap_images[hres][pars[4]]); } //dashed lines if ($('#minimap_cmark_enabled').is(':checked')) { minimap_map_data[7] = 1; $('#minimap_vl').css({'display':'block', 'visibility':'visible'}); $('#minimap_hl').css({'display':'block', 'visibility':'visible'}); if (!$('#minimap_editor_mode').is(':checked')) { parss = minimap_map_sdata; tleft = Math.floor((((parss[0] - 124 - (1*(1/pars[5]))) * 256) + parss[1]) * pars[5], 10)+Math.floor(pars[5] / 2); ttop = Math.floor((((parss[2] - 121- (0.75*(1/pars[5]))) * 256) + parss[3]) * pars[5], 10)+Math.floor(pars[5] / 2); $('#minimap_vl').appendTo($('#minimap_imgdiv')).css({ 'left':(tleft+256)+'px', 'top':(ttop+(wgPageName != 'Mapper' ? parseInt((384-parseInt(384*(pars[5] / parss[5]), 10))/2, 10) : 0))+'px', 'height':(wgPageName != 'Mapper' ? parseInt(384*(pars[5] / parss[5]), 10) : 384)+'px' }); $('#minimap_hl').appendTo($('#minimap_imgdiv')).css({ 'left':(tleft+(wgPageName != 'Mapper' ? parseInt((512-parseInt(512*(pars[5] / parss[5]), 10))/2, 10) : 0))+'px', 'top':(ttop+192)+'px', 'width':(wgPageName != 'Mapper' ? parseInt(512*(pars[5] / parss[5]), 10) : 512)+'px' }); } else { $('#minimap_vl').appendTo($('#minimap_imgdiv').parent()).css({'left':'256px', 'top':'0px', 'height':'384px'}); $('#minimap_hl').appendTo($('#minimap_imgdiv').parent()).css({'left':'0px', 'top':'192px', 'width':'512px'}); } } else { minimap_map_data[7] = 0; $('#minimap_vl').css({'display':'none', 'visibility':'hidden'}); $('#minimap_hl').css({'display':'none', 'visibility':'hidden'}); } //marks var tmpm, i = 1, msize, mleft, mtop; $('[id^="minimap_mark"]').filter(function() { var id = $(this).attr('id').replace('minimap_mark', ''); return (parseInt(id, 10) > 0 ? true : false); } ).css({'display':'none', 'visibility':'hidden'}); if ($('#minimap_marks_enabled').is(':checked')) { while (pars['mark'+i]) { tmpm = pars['mark'+i]; if (!$('#minimap_mark'+i).size()) { $(' ') .css({'display':'block', 'position':'absolute', 'z-index':'2003', 'overflow':'hidden', '':''}) .html(''+ ''+ '') .appendTo($('#minimap_imgdiv')); } if (tmpm[4] != pars[4]) { i++; continue; }//mark in same z msize = Math.floor(11*pars[5]*pars[6])+'px'; $('#minimap_mark'+i).css({ 'display':'block', 'visibility':'visible', 'left':Math.floor(((((tmpm[0] - 124) * 256) + (tmpm[1])) * pars[5]) - (5*pars[5]*pars[6]))+'px', 'top':Math.floor(((((tmpm[2] - 121) * 256) + (tmpm[3])) * pars[5]) - (5*pars[5]*pars[6]))+'px', 'width':msize, 'height':msize }); mleft = Math.floor(Math.floor(((tmpm[5] == 21 ? 22 : tmpm[5])-1)/2)*11*pars[5]*pars[6]); mtop = Math.floor((Math.floor(((tmpm[5] == 21 ? 22 : tmpm[5]))/2) == (((tmpm[5] == 21 ? 22 : tmpm[5]))/2) ? 11 : 0)*pars[5]*pars[6]); $('#minimap_mark'+i) .children(':first')//hidder div .css({'left':(-1 * mleft)+'px', 'top':(-1 * mtop)+'px'}) .children(':first')//a link .css('cursor', 'default').attr({'onclick':'return false;', 'href':''}); if (tmpm[6] !== '' && tmpm[5] != 21) { $('#minimap_mark'+i).children(':first').children(':first')//a link .css('cursor', 'pointer').attr({'onclick':'window.open(this.href); return false;', 'href':'/wiki/'+encodeURI(tmpm[6])}); } d = $('#minimap_mark'+i).children(':first').children(':first')[0]; if (tmpm[5] == 21) {//numeric mark $('#minimap_mark'+i).children(':first').children(':first').next() .css({ 'display':'block', 'visibility':'visible', 'left':mleft+'px', 'top':mtop+'px', 'width':msize, 'height':msize, 'font-size':(parseInt(msize, 10) - 2)+'px', 'line-height':'normal' }) .html(tmpm[6] !== '' ? parseInt(tmpm[6].slice(0, 2), 10) || 0 : 0); } $('#minimap_mark'+i).children(':first').children(':first').children(':first')//image .attr({'title':tmpm[6], 'alt':tmpm[6]}).css({'width':Math.floor(121*pars[5]*pars[6]), 'height':Math.floor(22*pars[5]*pars[6])}); i++; } } minimap_codes_update(reset_list); }; minimap_mapper_add_mark = function() { if ($('#minimap_loading').css('display') == 'block') { return; } var i = 1; while (minimap_map_data['mark'+i]) { i++; } minimap_map_data['mark'+i] = minimap_map_data.slice(0, 5); minimap_map_data['mark'+i][5] = $('[id^="mapper_marker_r"]:checked').val(); minimap_map_data['mark'+i][6] = document.getElementById('mapper_optional_link').value.replace(/\s|%20/gi, '_'); minimap_pos(); }; minimap_mapper_remove_mark = function() { if (document.getElementById('minimap_loading').style.display == 'block') { return; } if (!$('#mapper_list :selected').size()) { return; } $('#mapper_mark_remove').attr('disabled', true); $('#mapper_list :selected').remove(); minimap_map_data = minimap_map_data.slice(0, 8); $('#mapper_list option').each(function(i) { var tmp = decodeURI($(this).val()).split(',', 7); minimap_map_data['mark'+(i+1)] = [parseInt(tmp[0], 10), parseInt(tmp[1], 10), parseInt(tmp[2], 10), parseInt(tmp[3], 10), parseInt(tmp[4], 10), parseInt(tmp[5], 10), tmp[6]]; }); minimap_pos(); //0x.1x,2y.3y,4z,5zoom,6zoomm,7centermark //0x.1x,2y.3y,4z,5icon,6link }; minimap_load = function(url) { minimap_map_sdata = minimap_get_coords(url); minimap_map_data = minimap_get_coords(url); var pars = minimap_get_coords(url); var tid = 'minimap_w' + (wgPageName == 'Mapper' ? 'f' : 'p'); minimap_change_src();// bypass image cache if the user opts to if (wgPageName != 'Mapper') { if (!$('#minimap_blackout').size()) { $('body').append( ' '); } if (!$('#minimap_wp').size()) { $('body').append(''); } $('#minimap_blackout').css('display', 'block').height($(document).height()); $('#minimap_wp').css('display', 'block'); } var tmp = (wgPageName != 'Mapper' ? 'TibiaWiki Map'+ 'X' : 'Mapper')+ ''+ ''+ ''+ ''+ ''+ ''+ ''; var tmpm, i = 1; while (url.indexOf('mark'+i) != -1) { tmpm = minimap_get_coords(url, 'mark'+i); minimap_map_sdata['mark'+i] = tmpm.slice(0); minimap_map_data['mark'+i] = tmpm; tmp += ''+ ''+ ''+ ''+ ''+ ''; i++; } tmp += ''+ ''+ ''+ ''+ ' '+ (wgPageName != 'Mapper' ? '' : '')+ ''; $('#'+tid).html(tmp); $('#mapper_list').change(function(){minimap_mapper_list_click();}); if (wgPageName != 'Mapper') { minimap_center_div(); } $('#minimap_img').load(function() { $('#minimap_loading').css('display', 'none'); $('#minimap_maindiv').css('display', 'block'); }); minimap_pos(); minimap_dragstart(); if (wgPageName == 'Mapper') { try { $('#mapper_loading').hide(); } catch(er) { } } }; $('a[href*="'+minimap_mapper_page+'"]').click(function() { minimap_load($(this).attr('href')); return false; }); if (wgPageName == 'Mapper') { minimap_load(window.location.search.substring(1)); } else{ $(window).resize(function(){ minimap_center_div(); }); } // //
|