diff --git a/grepolis.user.js b/grepolis.user.js index 9d2020b..399ed50 100644 --- a/grepolis.user.js +++ b/grepolis.user.js @@ -10,7 +10,7 @@ // // @match http://*.grepolis.com/game/* // -// @version 1.0.37 +// @version 1.0.38 // @updateURL http://git.javil.eu/jan/userscripts/raw/master/grepolis.user.js // ==/UserScript== @@ -45,66 +45,69 @@ setTimeout(getWaresTick, 5000); function getWaresTick(xFarmId) { return function() { - var d = new Date(); - var dformat = "[" + [d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds()].join(':') + "]"; - $('.town_name').text(dformat); - console.log($.map($(".indicator .amount"),function(v){return $(v).text()}).join(", ")); + var timeout = 60000; + try { + var d = new Date(); + var dformat = "[" + [d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds()].join(':') + "]"; + $('.town_name').text(dformat); + console.log($.map($(".indicator .amount"),function(v){return $(v).text()}).join(", ")); - var windowId = windows[xFarmId]; - if(windowId == undefined){ - console.log("Opening new Window"); - var wnd = GPWindowMgr.Create( - GPWindowMgr.TYPE_FARM_TOWN, - '', - {'action': "claim_info"}, - xFarmId); - windows[xFarmId] = wnd.getID(); - setTimeout(getWaresTick(xFarmId), 500); - return; - } - - var wnd = GPWindowMgr.getWindowById(windowId); - if(wnd == undefined){ - windows[xFarmId] = undefined; - console.log("Window not open any more"); - setTimeout(getWaresTick(xFarmId), 50); - return; - } - - var wndElement = wnd.getElement(); - if(wndElement == undefined){ - windows[xFarmId] = undefined; - console.log("Window not reachable any more"); - try { - wnd.close(); - } catch(e) { - console.warn("Could not close Window"); - } - setTimeout(getWaresTick(xFarmId), 50); - return; - } - var btn = $(wndElement).find(".farm_claim_box .farm_claim_res0 + div + a"); - var mood = parseFloat($(wndElement).find('#mood1').siblings().last().text()); - - if(btn.hasClass("farm_claim_button_inactive")) { - var ts = $(wndElement).find(".farm_next_claim_time").text(); - - if(ts != "bereit") { - var minutes = ts.substring(2,4); - var seconds = minutes * 60 + ts.substring(5,7) * 1; - - - $('.town_name').text(dformat + " +" + ts); - console.log("btn is inactive, trying again in " + ts); - wnd.close(); - - setTimeout(getWaresTick(xFarmId), seconds * 1000 + 1000); + var windowId = windows[xFarmId]; + if(windowId == undefined){ + console.log("Opening new Window"); + var wnd = GPWindowMgr.Create( + GPWindowMgr.TYPE_FARM_TOWN, + '', + {'action': "claim_info"}, + xFarmId); + windows[xFarmId] = wnd.getID(); + timeout = 500; return; } - } - getWaresFromFarm(btn[0], mood, xFarmId); - setTimeout(getWaresTick(xFarmId), 60 * 1000); + var wnd = GPWindowMgr.getWindowById(windowId); + if(wnd == undefined){ + windows[xFarmId] = undefined; + console.log("Window not open any more"); + timeout = 50; + return; + } + + var wndElement = wnd.getElement(); + if(wndElement == undefined){ + windows[xFarmId] = undefined; + console.log("Window not reachable any more"); + try { + wnd.close(); + } catch(e) { + console.warn("Could not close Window"); + } + timeout = 50; + return; + } + var btn = $(wndElement).find(".farm_claim_box .farm_claim_res0 + div + a"); + var mood = parseFloat($(wndElement).find('#mood1').siblings().last().text()); + + if(btn.hasClass("farm_claim_button_inactive")) { + var ts = $(wndElement).find(".farm_next_claim_time").text(); + + if(ts != "bereit") { + var minutes = ts.substring(2,4); + var seconds = minutes * 60 + ts.substring(5,7) * 1; + + $('.town_name').text(dformat + " +" + ts); + console.log("btn is inactive, trying again in " + ts); + wnd.close(); + + timeout = seconds * 1000 + 1000; + return; + } + } + + getWaresFromFarm(btn[0], mood, xFarmId); + } finally { + setTimeout(getWaresTick(xFarmId), timeout); + } } }