您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Syncs tiberium alliances (for now) chat with gtalk (for now) or email, and notifies when CP is close to the capacity. Change the CP_ALERT_HOURS value to tweak CP alert threshold (CP _ALERT_HOURS = how many hours before max capacity alert should be sent)
// ==UserScript== // @name Chat Syncer and CP alerts // @namespace http://careers.stackoverflow.com/boris-churzin // @version 2.0 // @description Syncs tiberium alliances (for now) chat with gtalk (for now) or email, and notifies when CP is close to the capacity. Change the CP_ALERT_HOURS value to tweak CP alert threshold (CP _ALERT_HOURS = how many hours before max capacity alert should be sent) // @include https://www.tiberiumalliances.com/* // @include https://*.alliances.commandandconquer.com/* // @grant unsafeWindow // @grant GM_xmlhttpRequest // @copyright 2013+, Boris Churzin // ==/UserScript== GROUP_TOKEN = 'beehive'; CP_ALERT_HOURS = 1; messages_done = {}; setInterval(check_messages, 1000); cp_done = false; setInterval(check_cp, 1000); function send_message(player, message) { GM_xmlhttpRequest({ method: "GET", url: "http://chat-syncer.herokuapp.com/message/" + GROUP_TOKEN + "/" + escape(player) + "/" + escape(message) }); } function check_cp() { try { var player = unsafeWindow.ClientLib.Data.MainData.GetInstance().get_Player(); if(!cp_done && (player.GetCommandPointCount() > player.GetCommandPointMaxStorage() - player.GetCommandPointsGrowPerHour() * CP_ALERT_HOURS)) { console.log("Chat Syncer: CP alert triggered"); cp_done = true; send_message(player.get_Name(), player.get_Name() + ": CP alert: " + Math.round(player.GetCommandPointCount()) + " out of " + player.GetCommandPointMaxStorage()); } else { if(cp_done && !(player.GetCommandPointCount() > player.GetCommandPointMaxStorage() - player.GetCommandPointsGrowPerHour() * CP_ALERT_HOURS)) { cp_done = false; console.log("Chat Syncer: CP alert reset"); } } } catch(e) { console.log("Chat Syncer (check_cp): " + e); } } function check_messages() { try { var messages = []; var spans = document.getElementsByTagName('span'); for (var i = 0; i < spans.length; ++i) { if (spans[i].id.match("CHAT_SENDER")) { messages.push(spans[i].parentNode); } } for(var i = 0; i < messages.length; i++) { if(messages[i].innerHTML.match("\\[Alliance\\]") || messages[i].innerHTML.match("\\[Officers\\]")) { if(!messages_done[messages[i].innerHTML]) { messages_done[messages[i].innerHTML] = true; send_message(messages[i].children[0].innerHTML, messages[i].children[1].innerHTML); } } } } catch(e) { console.log("Chat Syncer (check_messages): " + e); } }