NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name Drop & Spoil filter
// @version 1.0.1
// @date 2012-04-21
// @author Kaerol
// @namespace http://userscripts.org/
// @description Adds a panel which helps find mobs with specyfic level.
// @include http://lineage.pmfun.com/*
// ==/UserScript==
(function(){
var eventSource= (navigator.appName.indexOf== 'Opera') ? document : window;
eventSource.addEventListener( 'load', function( e ) { onLoad(); } ,false);
var loc=window.location.href;
var XPFirst = XPathResult.FIRST_ORDERED_NODE_TYPE;
var XPList = XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE;
var dragElem = null;
var elementBeginX = 0;
var elementBeginY = 0;
var mouseBeginX = 0;
var mouseBeginY = 0;
function dummy(){}
function onLoad(){
var panel = addDiv('panel', 'Monster filter');
if (panel != null){
addHR(panel);
addBR(panel);
addSelect('more', [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95], 0, panel, 'Strength then (lvl): ');
addBR(panel);
addBR(panel);
addSelect('less', [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95], 95, panel, 'Weakness then (lvl): ');
addBR(panel);
addHR(panel);
addBR(panel);
addCheckbox('drop', panel, 'Drop');
addBR(panel);
addBR(panel);
addCheckbox('spoil', panel, 'Spoil');
addBR(panel);
addHR(panel);
addBR(panel);
addButton('find', 'Run filter', panel);
}
}
function addCheckbox(id, where, caption){
var span = document.createElement('span');
span.setAttribute('width', '100px');
span.innerHTML = caption;
addElement(span, where);
var input = document.createElement('input');
input.setAttribute('id', id);
input.setAttribute('type', 'checkbox');
input.setAttribute('checked', 'true');
addElement(input, where);
}
function addSelect(id, opt, selectedValue, where, caption){
var span = document.createElement('div');
span.style.width = '300px';
span.style.cssFloat = 'left';
span.innerHTML = caption;
addElement(span, where);
var select = document.createElement('select');
select.setAttribute('id', id);
select.style.width = '50px';
select.style.position = 'inherit';
select.style.right = '30px';
var o = null;
for (var i=0; i < opt.length; i++){
o = document.createElement('option');
o.setAttribute('value', opt[i]);
if (opt[i] == selectedValue) o.setAttribute('selected', "true");
o.innerHTML = opt[i];
addElement(o, select);
};
addElement(select, where);
}
function addButton(id, name, where){
var div = document.createElement('div');
div.style.width = '100%';
div.style.textAlign = 'center';
var btn = document.createElement('input');
btn.setAttribute('id', id);
btn.setAttribute('type', 'button');
btn.setAttribute('value', name);
btn.style.width = '100px';
btn.addEventListener("click", function(){
findMobs();
}, 0);
addElement(btn, div);
addElement(div, where);
};
function addBR(where){
var br = document.createElement('br');
addElement(br, where);
}
function addHR(where){
var hr = document.createElement('hr');
addElement(hr, where);
}
function addDiv(id, inner){
var cookie = getFromCookie(id);
if (cookie != ""){
var posXY = cookie.toString().split(':');
leftPos = posXY[0];
topPos = posXY[1];
}else{
leftPos = 20;
topPos = 20;
}
var div = document.createElement('div');
div.setAttribute('id', id);
div.style.left = leftPos+'px';
div.style.top = topPos+'px';
div.style.width = '96%';
//div.style.width = '200px';
//div.style.height = '100px';
div.style.padding = '15px';
//div.style.position = 'absolute';
div.style.border = '2px solid #d2d2d2';
div.style.backgroundColor = '#000000';
div.addEventListener("mousedown", function(e){
mousedown(e, this);
}, 0);
div.addEventListener("mouseup", function(){
mouseup(this);
}, 0);
div.addEventListener( 'mousemove', function( e ){
getMouseXY(e);
} ,false);
var title = document.createElement('div');
title.style.fontSize = '14px';
title.style.fontWeight = 'bold';
title.style.width = '100%';
title.style.textAlign = 'center';
title.innerHTML = inner;
addElement(title, div);
var parents = find("/html/body/table/tbody/tr/td[2]/table[2]/tbody/tr[3]/td[2]", XPList);
if (parents != null){
var parent = parents.snapshotItem(0);
var childs = find("/html/body/table/tbody/tr/td[2]/table[2]/tbody/tr[3]/td[2]/div", XPList);
if (childs != null){
var child = childs.snapshotItem(0);
return parent.insertBefore(div, child);
}
}
return null;
//addElement(div, parent);
}
function getMouseXY(e)
{
if (dragElem){
var shiftX = e.clientX - mouseBeginX;
var shiftY = e.clientY - mouseBeginY;
dragElem.style.top = (elementBeginY+shiftY)+'px';
dragElem.style.left = (elementBeginX+shiftX)+'px';
}
}
function mouseup(obj)
{
dragElem=null;
saveToCookie(obj.id, obj.offsetLeft+":"+obj.offsetTop);
elementBeginX = 0;
elementBeginY = 0;
mouseBeginX = 0;
mouseBeginY = 0;
}
function mousedown(e, obj)
{
dragElem=obj;
mouseBeginX = e.clientX;
mouseBeginY = e.clientY;
elementBeginX = obj.offsetLeft;
elementBeginY = obj.offsetTop;
}
function addColgroup(table)
{
var cg = document.createElement('colgroup');
var cl1 = document.createElement('col');
cl1.setAttribute('width', '612px');
addElement(cl1, cg);
var cl2 = document.createElement('col');
cl2.setAttribute('width', '154px');
addElement(cl2, cg);
var cl3 = document.createElement('col');
cl3.setAttribute('width', '112px');
addElement(cl3, cg);
table.insertBefore(cg, table.tbody);
}
function findMobs(){
var more = parseInt(returnObjById('more').value);
var less = parseInt(returnObjById('less').value);
var drop = returnObjById('drop').checked;
var spoil = returnObjById('spoil').checked;
if (more > less) {
alert("zly zakres: "+more+">"+less);
}else{
var tables = find("//table[@class='show_list' and @cellpadding='5']", XPList);
var table = tables.snapshotItem(0);
//addColgroup(table);
var col = null;
var row = null;
var lvl = "";
var conf = false;
var isDropList = false;
var isSpoilList = false;
for (var i=0; i < table.rows.length; i++)
{
row = table.rows[i];
if (row.cells[0].innerHTML.indexOf('Drop') > -1){
isDropList = true;
isSpoilList = false;
continue;
};
if (row.cells[0].innerHTML.indexOf('Spoil') > -1){
isDropList = false;
isSpoilList = true;
continue;
};
if (!drop && isDropList){
row.style.display = 'none';
continue;
};
if (!spoil && isSpoilList){
row.style.display = 'none';
continue;
};
col = row.cells[0];
lvl = col.textContent.match(/[0-9]+/);
lvl = parseInt(lvl);
if (!conf){
//conf = confirm(row.cells[0].innerHTML);
};
if (!isNaN(lvl)){
if (lvl >= more && lvl <= less){
row.style.display = '';
}else{
row.style.display = 'none';
};
};
};
};
};
function find(xpath, xpres, startnode){
if (!startnode) {startnode=document;}
var ret = document.evaluate(xpath, startnode, null, xpres, null);
return xpres == XPFirst ? ret.singleNodeValue : ret;
}
function returnObjById( id ){
if (document.getElementById)
return document.getElementById(id);
else if (document.all)
return document.all[id];
else if (document.layers)
return document.layers[id];
}
function addElement(theElement, where) {
if(!where) {
where=document.getElementsByTagName('body')[0];
};
where.appendChild(theElement);
}
function getFromCookie(cookieName){
var res = new Array();
var a = readCookie(cookieName);
if (a != null && a != ''){
a = a.split("$$");
for (var i = 0; i < a.length; i++) res[i] = a[i].split("$");
}
return res;
};
function saveToCookie(cookie, values){
createCookie(cookie, values);
};
function readCookie(name){
return decodeURIComponent(GM_getValue(name, ""));
};
function createCookie(name, value, callback){
if (callback==undefined) {
callback=dummy;
}
GM_setValue(name, encodeURIComponent(value));
};
})();