// ==UserScript== // @name TW Friends // @version 0.05 // @description Friend Management for The West Events // @author hiroaki // @include http://*.the-west.*/game.php* // @namespace https://greasyfork.org/users/3197 // @downloadURL none // ==/UserScript== function hiroFriendsScript(fn) { var script = document.createElement('script'); script.setAttribute("type", "application/javascript"); script.textContent = '(' + fn + ')();'; document.body.appendChild(script); document.body.removeChild(script); } hiroFriendsScript (function() { var VERSION = 0.05; var installURL = "https://greasyfork.org/scripts/2992-tw-friends"; var eventName = 'Independence'; var refreshMs = 2 * 60 * 1000; // 2 minutes HiroFriends = { version: VERSION, storageItem: "HiroFriends.version", cdnBase: '', eventName : '', eventInfo : {}, eventEndStamp : 0, friends : [], timeLeft : 0, total : 0, avail: 0, spanCounter: $("", { id: "hiro_friends_counter", style: "position: absolute; right: 5px; color: #f8c57c; font-size: 13pt; height: 25px; line-height: 25px; bottom: 0px" }), spanTimeLeft: $("", { id: "hiro_event_timeleft", style: "position: absolute; left: 5px; color: #d3d3d3; font-size: 11px; height: 25px; line-height: 25px" }) }; HiroFriends.init = function(eventName) { if (undefined === Game.sesData[eventName] || undefined === Game.sesData[eventName].friendsbar) return false; HiroFriends.eventName = eventName; HiroFriends.eventInfo = Game.sesData[eventName].friendsbar; HiroFriends.eventEndStamp = buildTimestamp(Game.sesData[HiroFriends.eventName].meta.end)/1000; HiroFriends.timeLeft = HiroFriends.eventEndStamp - Game.getServerTime(); if (HiroFriends.timeLeft <= 0) return false; HiroFriends.cdnBase = (undefined === Game.cdnURL) ? "http://westzz.innogamescdn.com" : Game.cdnURL; var eventImage = HiroFriends.cdnBase + "/images/interface/friendsbar/events/Independence.png"; // to be based on the event var divContainer = $("
", { id: "hiro_friends_container", style: "position: absolute; top: 32px; right: 50%; margin-right: 120px; z-index: 16; width: 180px; height: 36px; text-align: left; text-shadow: 1px 1px 1px #000; background: url('"+HiroFriends.cdnBase+"/images/interface/custom_unit_counter_sprite.png?2') no-repeat scroll 50% 0px transparent;" }) var divCounter = $("", { id: "hiro_friends", style: "background: url('"+HiroFriends.cdnBase+"/images/interface/custom_unit_counter_sprite.png?2') no-repeat scroll 0 -36px rgba(0, 0, 0, 0); height: 25px; left: 32px; line-height: 25px; padding: 0 5px; position: absolute; top: 3px; width: 105px; z-index: 1; text-shadow: 1px 1px 1px #000;" }); var divRefresh = $("", { style: "width: 24px; height: 24px; position: absolute; left: 8px; top: 3px; z-index: 3; padding: 4px 0px 0px 4px;" }); var spanRefresh = $("", { style: "display: inline-block; width: 20px; height: 20px; cursor: pointer; background: url('"+HiroFriends.cdnBase+"/images/tw2gui/window/window2_buttons.png?5') repeat scroll 0px -20px transparent;" }); var spanSend = $("", { style: "width: 26px; height: 26px; left: auto; position: absolute; right: 7px; top: 2px; z-index: 3;" }); var imageSend = $("(Next Year) | '); else if (val.time > 0) td = $('(' + val.time.formatDurationBuffWay() + ') | '); else { td = $('' + HiroFriends.eventInfo.label + " | ").click({ id: val.id, ev: HiroFriends.eventName }, function (e) { $(this).parent().remove(); Ajax.remoteCall("friendsbar", "event", { player_id: val.id, event: HiroFriends.eventName }, function (response) { if (response.error) return MessageError(response.msg).show(); MessageSuccess(response.msg).show(); if (HiroFriends.avail) -- HiroFriends.avail; HiroFriends.update(); if (WestUi.FriendsBar.friendsBarUi !== null) WestUi.FriendsBar.friendsBarUi.friendsBar.eventActivations[val.id][HiroFriends.eventName] = response.activationTime; }); }); } tbl.append($('
' + idx + '. | ' + val.name + ' | '), td)); ++ idx; }); tbl.append($('|
TW Friends v' + HiroFriends.version + ' | '))); var hiroWindow = wman.open("HiroFriends_"+HiroFriends.eventName, null, "noreload").setMiniTitle(HiroFriends.eventInfo.label).setTitle(HiroFriends.eventInfo.label); var hiroPane = new west.gui.Scrollpane; hiroPane.appendContent(tbl); hiroWindow.appendToContentPane(hiroPane.getMainDiv()) }); } HiroFriends.timeCompare = function (a,b) { if (a.time < b.time) return -1; if (a.time > b.time) return 1; return 0; } HiroFriends.updateTimer = function() { HiroFriends.timeLeft = HiroFriends.eventEndStamp - Game.getServerTime(); if (HiroFriends.timeLeft <= 0) { HiroFriends.spanTimeLeft.html('Finito'); HiroFriends.fetch(); return; } HiroFriends.spanTimeLeft.html(HiroFriends.timeLeft.formatDurationBuffWay()); var seconds = 0; if (HiroFriends.timeLeft < 70) seconds = 1; else if (HiroFriends.timeLeft < 3660) seconds = 10; else if (HiroFriends.timeLeft < 86520) seconds = 60; else seconds = 120; setTimeout (function() { HiroFriends.updateTimer(); }, seconds * 1000); } HiroFriends.update = function() { HiroFriends.spanCounter.html(HiroFriends.avail+' / '+HiroFriends.total+''); } var interval = false; if (HiroFriends.init(eventName)) HiroFriends.fetch(); });