NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Scrolls Guide Trade Helper // @namespace http://vozzel.net // @version 0.1 // @description Adds a little helper on scrollsguide.com/prices // @match http://www.scrollsguide.com/prices // @copyright 2014+, Matic Leva // ==/UserScript== var filter = []; var filterTable; function saveFilter(){ localStorage.setItem("filter", JSON.stringify(filter)); console.log("Saved"); } function updateFilter() { saveFilter(); filterTable.empty(); for (var i = filter.length - 1; i >= 0; i--){ var filterScroll = filter[i]; var scroll = getScrollById(filterScroll.id); var type = filterScroll.t == "b" ? "I'm selling" : "I'm buying"; var price = filterScroll.pn ? filterScroll.pn + "(" + filterScroll.p + ")" : (filterScroll.p > -1 ? filterScroll.p : "-"); var user = filterScroll.u || "-"; var room = filterScroll.r || "-"; var newRow = $(Mustache.render(tpl, { scroll: scroll.name, img: scroll.image, id: scroll.id, user: user, room: room, type: type, type2: filterScroll.t == "b" ? "buy" : "sell" + "ing", price: price })); $(newRow).css("cursor", "pointer").click(function(){ var index = -1; for(var i = 0; i < filter.length; i++){ if(filter[i].id == $(this).attr("data-scroll")) index = i; } if(index > -1) filter.splice(index, 1); $( this ).fadeOut(500); saveFilter(); }); filterTable.prepend(newRow); newRow.fadeIn(500); saveFilter(); } } function compareFilter(tradeMessage) { var tscrolls = tradeMessage.tr; for (var i = 0; i < tscrolls.length; i++) //loop through all scrolls you get in tradeMessage { for (var j = 0; j < filter.length; j++) if(tscrolls[i].id == filter[j].id && tscrolls[i].t == filter[j].t && ((filter[j].p == undefined) || (filter[j].p == -1) || (tscrolls[i].t == "b" && tscrolls[i].p >= filter[j].p) || (tscrolls[i].t == "s" && tscrolls[i].p <= filter[j].p))) { filter[j].u = tradeMessage.u; filter[j].r = tradeMessage.r; filter[j].pn = tscrolls[i].p; updateFilter(); $('#sound_match_found').get(0).play(); $('<input type="button" value="Mute">').insertAfter("input[type='button']").css({"margin-left": "10px", "height": "25px"}).click(function(){ $('#sound_match_found').get(0).pause(); $('#sound_match_found').get(0).currentTime = 0; $(this).remove(); }); } } } onConnected = (function() { var cached_function = onConnected; return function() { cached_function.apply(this); $("#tradetable").before("<table class='tablebg' cellspacing='1' width='100%' id='tradetable'><thead><tr id='tablehad'><th></th><th>Scroll</th><th>User</th><th>Room</th><th>Type</th><th>Price</th></tr></thead><tbody id='realtimefilter'></tbody></table>"); $("#tradetable").before("<audio src='http://static1.grsites.com/archive/sounds/nature/nature005.mp3' id='sound_match_found' loop='true'> Your browser does not support the <code>audio</code> element.</audio>"); filterTable = $("#realtimefilter"); filter = JSON.parse(localStorage.getItem("filter")) || []; updateFilter(); $('<select name="type"><option value="s">Buying</option><option value="b" selected>Selling</option></select>').insertAfter("input#filter").css({"margin-left": "10px", "height": "25px"}); $('<label id="price">Price: <input type="text"></label>').insertAfter("select[name=type]").css({"margin-left": "10px", "height": "25px"}).find("input").css({"height": "25px", "width": "30px"}); $('<input type="button" value="Add to filter">').insertAfter("label#price").css({"margin-left": "10px", "height": "25px"}).click(function(){ if($("input#filter").get(0).value != "") $.get("http://a.scrollsguide.com/scrolls", { name: $("input#filter").get(0).value }).done(function(data){ if(data.msg != "fail") { var cur_id = data.data[0].id; var cur_price = parseInt($("label#price input").val()); if(!(cur_price > 0)) cur_price = -1; var cur_type = $('select[name=type] option:selected').val(); var index = -1; for(var i = 0; i < filter.length; i++) if(filter[i].id == cur_id) index = i; if(index > -1) filter.splice(index, 1); filter.push({ id: cur_id, p: cur_price, t: cur_type }); updateFilter(); } }); else alert("You forgot scroll's name!"); }); $('<input type="button" value="Export">').insertAfter("input[type='button']").css({"margin-left": "10px", "height": "25px"}).hover(function(){ var selling = []; var buying = []; for (var i = 0; i < filter.length; i++){ var scroll_api = getScrollById(filter[i].id); var scroll = scroll_api.name + " " + filter[i].p + "g" if(filter[i].t == "s") //WTB buying.push(scroll); else if(filter[i].t == "b") //WTS selling.push(scroll); } var message = ""; if(selling.length > 0) message += "WTS " + selling.join(", ") + " "; if(buying.length > 0) message += "WTB " + buying.join(", "); $('<textarea id="export"></textarea>').insertAfter('input[type="button"][value="Export"]').val(message).css({"width": "100px", "height": "100px", "position": "absolute"}).focus().get(0).select(); }, function(){ $('textarea#export').remove(); }); console.log(filter); }; }()); log = (function() { var cached_function = log; var args; return function() { cached_function.apply(this, args = arguments); compareFilter(args[0]); }; }());