There are 9 previous versions of this script.
// ==UserScript==
// @name PARA MINISTROS Y DIPLOMATICOS.
// @namespace MMXForge
// @description informa de conexion,inactividad,puntos que ganas cada X,nuevos o abandonos,...
// @author Alex
// @version 0.10
// @include http://s*.ikariam.*/*
// @exclude http://board.ikariam.*/*
// ==/UserScript==
/*
* This script comes from an idea of N-I-K-O.
* It merge in a unique script 2 other scripts
* IkariamMemberLastOnline (http://userscripts.org/scripts/show/34793) from Ektdeheba
* Ikariam Ally's Memebers Info (http://userscripts.org/scripts/show/34852) from Luca Saba... wich is me :D
*/
/*
* Changes in v. 0.9
* - Ikariam 2.8 compatibility
* - Removed Ally Sorter.... not needed anymore
*/
if(document.getElementById('embassy') == null && document.getElementById('alliance') == null) return;
var host = top.location.host.split(".");
var domain = host[host.length -1];
var server = host[0];
var tpl = GM_getValue('template', 0);
var membersTab = document.getElementById('memberList');
if(membersTab == null) return;
var update_record = false;
//var points_cell_idx = membersTab.rows[0].cells.length - 3;
var points_cell_idx = 4;
/*
* Words dictionary
*/
var lang={
en: {'newAlert': 'New Members', 'newTotal': 'Total new members', 'aband': 'Abandon', 'totAban': 'Total abandon', 'confirm': 'Are you sure you want to reset recorded points ?'},
it: {'newAlert': 'Nuovi membri', 'newTotal': 'Totale nuovi membri', 'aband': 'Abbandoni', 'totAban': 'Totale abbandoni', 'confirm': 'Sei sicuro di cancellare i punteggi salvati ?'},
co: {'newAlert': 'חברים חדשים', 'newTotal': 'סך הכל חברים חדשים', 'aband': 'עזבו', 'totAban': 'סך הכל עזבו', 'confirm': 'האם אתה בטוח שבירצונך לאפס?'}, //Thanks to MindTwister
il: {'newAlert': 'חברים חדשים', 'newTotal': 'סך הכל חברים חדשים', 'aband': 'עזבו', 'totAban': 'סך הכל עזבו', 'confirm': 'האם אתה בטוח שבירצונך לאפס?'}, //Thanks to MindTwister
}
var local = 'en'; //For i18n
//If domain id in the dictionary, use domain's dictionary
if(domain in lang) local = domain;
//Order by points... not needed anymore
//sortAlly();
//Last Recorded values... this method.. I've seen it in an ecmanaut script ;-)
var members = eval(GM_getValue(domain + "." + server + ".members.2.8", {}) || {});
var recorded_points = eval(GM_getValue(domain + "." + server + ".points.2.8", {}) || {});
//Add reset and config images
var confRow = document.createElement('TR');
var confCell = document.createElement('TD');
confCell.setAttribute('colspan', '6');
confCell.innerHTML = "<img style='float: left' src='http://isoleunite.mmxforge.net/images/stories/ikariam/unit_boom_small.gif' alt='Config' title='Config' id='ainfoConfig'>";
confCell.innerHTML += "<img style='float: right' src='http://isoleunite.mmxforge.net/images/stories/ikariam/icon-backx20.gif' alt='Reset' title='Reset' id='ainfoReset'>";
confRow.appendChild(confCell);
membersTab.appendChild(confRow);
//Listener to reset member's points record
document.addEventListener('click',function(event) {
//Send Message Button
if (event.target.id=='ainfoReset')
{
recorded_points = actualValues;
if(confirm(lang[local]['confirm']))
saveArray("points", recorded_points);
}
if (event.target.id=='ainfoConfig')
{
showToolConfig(event);
}
if ( event.target.id=='eToolConfButton')
{
if(document.getElementById('eToolCfImages').checked)
GM_setValue('template', 1);
else
GM_setValue('template', 0);
document.getElementById('eToolConfDiv').style.display = 'none';
}
}, true);
//addEventListener("keyup", showToolConfig, false);
function showToolConfig(e)
{
//if(e.keyCode != 51) return;
var div = document.getElementById('eToolConfDiv');
if(div) div.style.display = 'block';
else
{
div = document.createElement('div');
div.setAttribute('id', 'eToolConfDiv');
div.setAttribute('class', 'dynamic');
div.setAttribute('style', 'z-index: 10; border: 1px solid #CB9B6B; background-color: #FDF7DD; width: 229px; height: 150px; position: absolute; float: center;top: ' + e.pageY + 'px; left: ' + e.pageX +'px');
div.innerHTML = '<h3 class="header" style="padding-top: 8px; height: 20px; background-image: url(http://s3.ikariam.it/skin/layout/bg_sidebox_header.jpg)"><b>Config</b></h3>';
div.innerHTML += '<div style="margin-left: 80px; margin-top: 20px; text-align: left">';
if(tpl == 0) div.innerHTML += '<input id="eToolCfText" style="position: absolute;left: 60px;" type="radio" name="garba" value="0" checked > Text<br/>';
else div.innerHTML += '<input id="eToolCfText" style="position: absolute;left: 60px;" type="radio" name="garba" value="0"> Text<br/>';
if(tpl == 1) div.innerHTML += '<input id="eToolCfImages" style="position: absolute;left: 60px;" type="radio" name="garba" value="1" checked > Images</div>';
else div.innerHTML += '<input id="eToolCfImages" style="position: absolute;left: 60px;" type="radio" name="garba" value="1"> Images</div>';
//GM_log(div.innerHTML);
div.innerHTML += '<input id="eToolConfButton" type="button" class="button" value="Save">';
document.body.appendChild(div);
}
}
var actualValues = getActualData();
//Let's check for new entries
var msg = lang[local]['newAlert'] + "\n";
var sum = 0;
for(var k in members) GM_log(k);
for(var readed_name in actualValues)
{
//If an actual member name is not in the members list...
if(typeof(members[readed_name]) == 'undefined')
{
sum++;
msg += readed_name + "\n";
}
}
if(sum > 0) alert(msg + lang[local]['newTotal'] + ": " + sum);
//And now, let's check for those who left the ally!
var msg = lang[local]['aband'] + "\n";
sum = 0;
for(var member_name in members)
{
//If a member name is not in the actual member list...
if(typeof(actualValues[member_name]) == 'undefined')
{
sum++;
msg += member_name + "\n";
var trOut = document.createElement("TR");
trOut.style.backgroundColor = "#F00";
var tdOut = document.createElement("TD");
tdOut.setAttribute('colspan','7');
tdOut.style.color = "#FFF";
tdOut.innerHTML = "<b>" + member_name + "</b> Points: <b>" + members[member_name] + "</b>";
trOut.appendChild(tdOut);
membersTab.appendChild(trOut);
}
}
if(sum > 0) alert(msg + lang[local]['totAban'] + ": " + sum);
saveArray("members", actualValues);
/*
This function helps convert the Ikariam internal date format (day.month.year)
to the javascript Date Object format (year,month,day).
Original Author: Ektdeheba
For version: 0.1.1
Last changed: 0.1.2
*/
function convertIkariamDate( argDate ) {
var returnDate = new Date(
argDate.split(".")[2], // Year Argument
argDate.split(".")[1] - 1, // Month Argument (ZERO based), subtract one to offset
argDate.split(".")[0]); // Day Argument
return returnDate;
}
//Returns an Associative Array of the members's points
//While doing that, it sets the online/inactive/offline status
function getActualData()
{
var res = new Array();
var pName = '';
var pPoints = 0;
for(i=1; i < membersTab.rows.length - 1; i++)
{
setOnlineStatus(membersTab.rows[i]);
pName = membersTab.rows[i].cells[1].innerHTML;
pPoints = membersTab.rows[i].cells[points_cell_idx].innerHTML.replace(",", "") * 1; //Force variable type
res[pName] = pPoints;
//If this is the first insert for this member
if(typeof(recorded_points[pName]) === 'undefined')
{
membersTab.rows[i].cells[points_cell_idx].innerHTML += " (<font color='#F00'>New Entry</font>)";
recorded_points[pName] = pPoints;
update_record = true;
}
else
{
var prev = recorded_points[pName];
var act = res[pName];
membersTab.rows[i].cells[points_cell_idx].innerHTML += " (<font color='#F00'>" + (act - prev) + "</font>)";
}
}
if(update_record) saveArray("points", recorded_points);
return res;
}
//Saves an array to GM string
function saveArray(variable, values_array)
{
var str = '({';
for(var k in values_array) str += "'" + k + "':" + values_array[k] + ", ";
str += '})';
GM_setValue(domain + '.' + server + '.' + variable + ".2.8", str);
}
function setOnlineStatus(tRow)
{
if(tRow.cells[0].getAttribute('class') == 'online')
{
template('online', tRow, null);
}
else if(tRow.cells[0].getAttribute('class') == 'offline')
{
var nowDateStr = document.getElementById('servertime').innerHTML.split(" ")[0].replace(/^\s+|\s+$/g, '');
var nowDate = convertIkariamDate( nowDateStr );
var inactiveDate = new Date();
inactiveDate.setDate( nowDate.getDate() - 7 ); // accounts generally go inactive after seven days
var lastOnline = tRow.cells[0].title.split(":")[1].replace(/^\s+|\s+$/g, '');
var lastDate = convertIkariamDate( lastOnline );
if( lastDate < inactiveDate )
template('inactive', tRow, lastOnline);
else
template('offline', tRow, lastOnline);
}
}
function template(status, rowElement, lastOnline)
{
if(status == 'online')
{
switch(tpl)
{
case 1:
rowElement.cells[0].innerHTML="<div style='width: 8em'><span style='float: right'><img src='http://s200.photobucket.com/albums/aa94/ExtraKiller/On.png'></span></div>";
break;
default:
rowElement.cells[0].innerHTML="<B><font color='#008800'>ONLINE</FONT></B>";
break;
}
}
else if(status == 'inactive')
{
switch(tpl)
{
case 1:
rowElement.cells[0].innerHTML = "<div style='width: 8em'><span style='float: left'>("+lastOnline + ")</span><span style='float: right'><img src='http://www.ikariamods.com/gunmetal/cadmium/hardcode/crown.png'></span></div>";
break;
default:
rowElement.cells[0].innerHTML = "<B><font color='#708090' SIZE='1'>("+lastOnline + ")INACTIVE</FONT></B>";
break;
}
}
else if(status == 'offline')
{
switch(tpl)
{
case 1:
rowElement.cells[0].innerHTML = "<div style='width: 8em'><span style='float: left;'>("+lastOnline+")</span><span style='float: right'><img src='http://s200.photobucket.com/albums/aa94/ExtraKiller/Off.png'></span></div>";
break;
default:
rowElement.cells[0].innerHTML = "<font color='#F00' SIZE='1'>("+lastOnline+")OFFLINE</FONT>";
break;
}
}
rowElement.cells[0].style.backgroundImage = "none";
}
// ==UserScript==
// @name ALIANZAS COA`S ALPHA
// @namespace ikatips
// @description Herraminetas para la alianza
// @include http://*ikariam.*/index.php*
// @author Original por Verx - Modificado por ALEX para ALIANZAS COA -
// @version 20080619 120713
// ==/UserScript==
var tagsAModificar = new Array("A","SPAN");
var diaLimite = 2;
var cookieIKO = 'IKAFONT';
var cookie_SEPARA = '|';
var css_MenuIKO_String = '#menu {'+
'align:right;'+
'margin-left:680px;'+
'margin-top: -16.5px;'+
'color:white;'+
'width: 50px;'+
'cursor: hand;'+
'}'+
'#menu ul {'+
'list-style: none;'+
'margin: 0;'+
'padding: 0;'+
'width: 13em;'+
'}'+
'#menu a, #menu h2 {'+
'font: bold 11px/16px arial, helvetica, sans-serif;'+
'display: block;'+
'margin: 0;'+
'padding: 2px 3px;'+
'cursor: hand;'+
'}'+
'#menu a {'+
'color: RGB(84,44,15);'+
//Colores menu normal.
'background: RGB(246,235,188);'+
'border: double 3px RGB(84,44,15);'+
'border-left: double 3px RGB(84,44,15);'+
'border-right: double 3px RGB(84,44,15);'+
'text-decoration: none;'+
'}'+
'#menu a:hover {'+
'color: RGB(84,44,15);'+
//Color menu seleccionado.
'background: RGB(222,180,120);'+
'border: double 3px RGB(84,44,15);'+
'}'+
'#menu li {position: relative; }'+
'#menu ul ul {'+
'position: relative;'+
'z-index: 500;'+
'}'+
'#menu ul ul ul {'+
'position: absolute;'+
'top: 0;'+
'left: 100%;'+
'}'+
'div#menu ul ul,'+
'div#menu ul li:hover ul ul,'+
'div#menu ul ul li:hover ul ul'+
'{display: none;}'+
'div#menu ul li:hover ul,'+
'div#menu ul ul li:hover ul,'+
'div#menu ul ul ul li:hover ul'+
'{display: block;}';
//esta característica es casi estándar, utilizado en muchos scripts de Greasemonkey
if(!window.add_Global_Style){
function add_Global_Style(css) {
var head, style;
head = document.getElementsByTagName('head')[0];
if (!head) { return; }
style = document.createElement('style');
style.type = 'text/css';
style.innerHTML = css;
head.appendChild(style);
}
}
function getAlltagsAModificar(){
var arrResult = new Array();
var lastI = 0;
var xTags = null;
for (tagX = 0; tagX<tagsAModificar.length; tagX++) {
xTags = document.getElementsByTagName(tagsAModificar[tagX]);
for(i=0;i<xTags.length;i++){arrResult[lastI] = xTags[i];lastI++;}
}
return arrResult;
}
unsafeWindow.setFontIka = function () {
var FamilyIndex = document.getElementById("Family").selectedIndex;
var FI = document.getElementById("Family").options[FamilyIndex].text;
changeAllFamily(FI);
var SizeIndex = document.getElementById("Size").selectedIndex;
var SI = document.getElementById("Size").options[SizeIndex].text;
changeAllSize(SI);
var ColorIndex = document.getElementById("Color").selectedIndex;
var CI = document.getElementById("Color").options[ColorIndex].text;
changeAllColor(CI);
createCookie(cookieIKO,FI+cookie_SEPARA+SI+cookie_SEPARA+CI,diaLimite);
}
function createCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(c_name) {
if (document.cookie.length>0)
{
c_start=document.cookie.indexOf(c_name + "=");
if (c_start!=-1)
{
c_start=c_start + c_name.length+1;
c_end=document.cookie.indexOf(";",c_start);
if (c_end==-1) c_end=document.cookie.length;
return unescape(document.cookie.substring(c_start,c_end));
}
}
return "";
}
function initFont(){
var rC = readCookie(cookieIKO);
if (rC){
var myFont = rC.split(cookie_SEPARA);
changeAllFamily(myFont[0]);
changeAllSize(myFont[1]);
changeAllColor(myFont[2]);
}
}
function eraseCookie(name) {
createCookie(name,"",-1);
}
function changeAllFamily(valueOfSelect){
var dataToChange = getAlltagsAModificar();
for (i=0;i<dataToChange.length;i++){
dataToChange[i].style.fontFamily = valueOfSelect;
}
}
function changeAllSize(valueOfSelect){
var dataToChange = getAlltagsAModificar();
for (i=0;i<dataToChange.length;i++){
dataToChange[i].style.fontSize = valueOfSelect;
}
}
function changeAllColor(valueOfSelect){
var dataToChange = getAlltagsAModificar();
for (i=0;i<dataToChange.length;i++){
dataToChange[i].style.color = valueOfSelect;
}
}
unsafeWindow.clearFont = function(){
eraseCookie(cookieIKO);
window.location.reload();
}
function addIKOS_ToolsMenu(){
var xTags = document.getElementsByTagName('LI');
var xLi = null;
var IKOSTools_Link = document.createElement('LI');
IKOSTools_Link.setAttribute('id', 'IKOSTools');
for(i=0;i<xTags.length;i++){
xLi = xTags[i];
if (xLi.className == 'help') {
xLi.parentNode.appendChild(IKOSTools_Link,xLi);
add_Global_Style(css_MenuIKO_String);
document.getElementById('IKOSTools').innerHTML =
'<div id="menu">'
+ '<ul>'
+ ' <li><h2>TROYANOS</h2>'
+ ' <ul>'
+ ' <li><a target="_blank" href="http://troyanosfan.foroactivo.net/index.htm" title="FORO TROYANOS" align="left"> Foro de los troyanos</a></li>'
+ ' <li><a target="_blank" href="http://lacoalicion.foroactivo.com.es/index.htm?sid=b775a7517f4f182ed51d241813b2f8f7" title="Foro de la Hermandad de los troyanos" align="left"> FORO HERMANDAD</a></li>'
+ ' <li><a target="_blank" href="http://troyanosfan.foroactivo.net/portal.htm" title=" Portal oficial con multiples modulos de descarga, busqueda,etc...." align="left"> PORTAL OFICIAL</a></li>'
+ ' <li><a target="_blank" href="http://userscripts.org/users/61979/scripts" title="Sripts de la alianza" align="left"> SCRIPTS DE LA ALIANZA</a></li>'
+ ' <li><a target="_blank" href="http://cuhuutopiascitys.es.tl/" title="WEB ALIANZA" align="left"> WEB ALIANZA</a></li>'
+ ' <li><a target="_blank" href="http://s1.ikariam.es/index.php?view=sendAllyMessage&oldView=diplomacyAdvisor&watch=4&id=12&type=50" title=" Mensaje a todos " align="left"> Mensaje a todos</a></li>'
+ ' <li><a target="_blank" href="http://s1.ikariam.es/index.php?view=sendMessage&with=6005&oldView=highscore" title="LIDER TROYANOS" align="left"> LIDER TROYANOS</a></li>'
+ ' <li><a target="_blank" href="http://s1.ikariam.es/index.php?view=sendMessage&with=79253&oldView=highscore" title="LIDER HERMANDAD DE TROYANOS" align="left"> LIDER HERMANDAD DE TROYANOS</a></li>'
+ ' <li><a target="_blank" href="http://s1.ikariam.es/index.php?view=sendMessage&with=13449&oldView=highscore" title="LIDER TROY 2" align="left"> LIDER TROY 2</a></li>'
+ ' <li><a target="_blank" href="http://s1.ikariam.es/index.php?view=sendMessage&with=57566&oldView=highscore" title="LIDER TROY3" align="left"> LIDER TROY3</a></li>'
+ ' <li><a target="_blank" href="http://s1.ikariam.es/index.php?view=sendMessage&with=5917&oldView=highscore" title="LIDER MEDIT" align="left"> LIDER MEDIT</a></li>'
+ ' <li><a target="_blank" href="http://s1.ikariam.es/index.php?view=allyPage&allyId=40" title="Pagina externa de la alianza troyanos" align="left"> P.EXTERNA TROYANOS</a></li>'
+ ' <li><a target="_blank" href="http://s1.ikariam.es/index.php?view=allyPage&allyId=8119" title="Pagina externa de la alianza troyanos2" align="left"> P.EXTERNA TROYANOS2</a></li>'
+ ' <li><a target="_blank" href="http://s1.ikariam.es/index.php?view=allyPage&allyId=4158" title="Pagina externa de la alianza Hermandad de troyanos" align="left"> P.EXTERNA HERMANDAD</a></li>'
+ ' <li><a target="_blank" href="http://s1.ikariam.es/index.php?view=allyPage&allyId=8976" title="Pagina externa de la alianza La Diosa Isis Troy3" align="left"> P.EXTERNA TROY3</a></li>'
+ ' <li><a target="_blank" href="http://s1.ikariam.es/index.php?view=allyPage&allyId=8571" title="Pagina externa de la alianza Mediterranea" align="left"> P.EXTERNA MEDIT</a></li>'
+ ' <li><a target="_blank" href="http://www.serpini.es/chivakariam/index.php" title=" Xivaikariam " align="left"> Xivaikariam</a></li>'
+ ' <li><a target="_blank" href="http://troyanosfan.foroactivo.net/tv-radio-programacion-f4/radio-t17.htm" title=" Radio " align="left"> Radio</a></li>'
+ ' <li><a target="_blank" href="http://troyanosfan.foroactivo.net/tv-radio-programacion-f4/television-t16.htm" title=" TELEVISION " align="left"> Television</a></li>'
+'</ul>'
+'</DIV>';
break;
}}}
addIKOS_ToolsMenu();
