Saturday, February 5, 2011

SpionageRechner für Ikariam v0.4.2


var metadata=<> 
// ==UserScript==
// @name           SpyCalc
// @namespace      http://userscripts.org/scripts/show/95712
// @include        http://s*.ikariam.com/*
// @exclude        http://support*.ikariam.*/*
// @author         Karandaras (http://userscripts.org/users/265255)
// @require        http://userscripts.org/scripts/source/94511.user.js
// @version        1.0i
// @updater:script http://userscripts.org/scripts/source/95712.user.js
// @updater:delay  86400000
// ==/UserScript==
</>.toString();

var href = document.location.href;
var lang = getLanguage(href);

var languages = {
 de: {
  "calc": "Berechnen",
  "optimaldist": "Optimale Verteilung",
  "lowrisk": "Niedriges Entdeckungsrisiko",
  "highchance": "Hohe Erfolgschance",
  "spy": "Agenten",
  "decoy": "Lockvögel",
  "risk": "Entdeckungsrisiko",
  "chance": "Erfolgschance",
  "drisk": "Lockvogel Entdeckungsrisiko",
  "cost": "Kosten",
  "dcost": "Lockvogel Kosten",
  "use": "Auswählen"
 }
};
// Update-Check
var update = new Updater(metadata,lang);
update.update();


var language = languages[lang];
if(language == null)
 language = languages['de'];

var cityids = new Array();
var cities = document.getElementById('citySelect').getElementsByTagName('option');
for(var i=0; i<cities.length; i++)
 if(cities[i].getAttribute("class") == "coords")
  cityids.push(cities[i].value);

if(document.getElementById('totalAgents'))
 window.addEventListener('load',addBox,true);

function addBox() {
 var div = document.createElement('div');
 div.setAttribute('class', 'contentBox01h');
 div.innerHTML =  "<h3 class=\"header\">"+language['optimaldist']+"</h3>"
   +"<div class=\"content\">"
                        +" <div class=\"missionWrapper\">"
   +"  <div class=\"decoyMission contentBox06\">"
                 +"   <h3 class=\"header\">"+language['highchance']+"</h3>"
                 +"   <ul class=\"infoList\">"
                 +"    <li>"
   +"     <label>"+language['spy']+"</label>"
   +"     <div id=spies1>0</div>"
   +"    </li>"
                 +"    <li>"
   +"     <label>"+language['decoy']+"</label>"
   +"     <div id=decoys1>0</div>"
   +"    </li>"
                 +"    <li>"
   +"     <label>"+language['risk']+"</label>"
   +"     <div id=risk1>0%</div>"
   +"    </li>"
                 +"    <li>"
   +"     <label>"+language['chance']+"</label>"
   +"     <div id=chance1>0%</div>"
   +"    </li>"
                 +"    <li>"
   +"     <label>"+language['drisk']+"</label>"
   +"     <div id=drisk1>0%</div>"
   +"    </li>"
                 +"    <li>"
   +"     <label>"+language['cost']+"</label>"
   +"     <div id=cost1>"+document.getElementById('info_costs_text').innerHTML+"</div>"
   +"    </li>"
                 +"    <li>"
   +"     <label>"+language['dcost']+"</label>"
   +"     <div id=dcost1>"+document.getElementById('info_decoycost_text').innerHTML+"</div>"
   +"    </li>"
                 +"   </ul>"
   +"     <div class=centerButton style='margin-top:-15px; height:40px;'><input value="+language['use']+" id=use1 class=button type=submit></div>"
   +"   <div class=\"footer\"></div>"
                 +"  </div>"
   +"  <div class=\"realMission contentBox06\">"
                 +"   <h3 class=\"header\">"+language['lowrisk']+"</h3>"
                 +"   <ul class=\"infoList\">"
                 +"    <li>"
   +"     <label>"+language['spy']+"</label>"
   +"     <div id=spies0>0</div>"
   +"    </li>"
                 +"    <li>"
   +"     <label>"+language['decoy']+"</label>"
   +"     <div id=decoys0>0</div>"
   +"    </li>"
                 +"    <li>"
   +"     <label>"+language['risk']+"</label>"
   +"     <div id=risk0>0%</div>"
   +"    </li>"
                 +"    <li>"
   +"     <label>"+language['chance']+"</label>"
   +"     <div id=chance0>0%</div>"
   +"    </li>"
                 +"    <li>"
   +"     <label>"+language['drisk']+"</label>"
   +"     <div id=drisk0>0%</div>"
   +"    </li>"
                 +"    <li>"
   +"     <label>"+language['cost']+"</label>"
   +"     <div id=cost0>"+document.getElementById('info_costs_text').innerHTML+"</div>"
   +"    </li>"
                 +"    <li>"
   +"     <label>"+language['dcost']+"</label>"
   +"     <div id=dcost0>"+document.getElementById('info_decoycost_text').innerHTML+"</div>"
   +"    </li>"
                 +"   </ul>"
   +"     <div class=centerButton style='margin-top:-15px; height:40px;'><input value="+language['use']+" id=use0 class=button type=submit></div>"
   +"   <div class=\"footer\"></div>"
                 +"  </div>"
                        +"  <br class=\"clearfloat\" />"
                 +"  <div class=centerButton style='margin-top:-15px; height:35px;'>"
   +"   <input value="+language['calc']+" id=calc class=button type=submit>"
   +"  </div>"
                        +" </div>"
                        +"</div>"
   +"<div class=\"footer\"></div>"
   +"</div>";

 document.getElementById('missionSummary').parentNode.parentNode.parentNode.parentNode.appendChild(div);
 document.getElementById('calc').addEventListener('click',calc,true);
 document.getElementById('use0').addEventListener('click',setSpys,true);
 document.getElementById('use1').addEventListener('click',setSpys,true);
}

// Optimale Verteilung berechnen und ausgeben
function calc() {
 var mspies = 0;
 for(var i=0; i<cityids.length; i++) {
  if(document.getElementById('spyCount_'+cityids[i])!=null) {
   document.getElementById('agents'+cityids[i]).value = 0;
   var evt = document.createEvent("KeyEvents");
   evt.initKeyEvent('keyup', true, true, window, false, false, false, false, 13, 0);
   document.getElementById('agents'+cityids[i]).dispatchEvent(evt);
   document.getElementById('decoys'+cityids[i]).value = 0;
   var evt = document.createEvent("KeyEvents");
   evt.initKeyEvent('keyup', true, true, window, false, false, false, false, 13, 0);
   document.getElementById('decoys'+cityids[i]).dispatchEvent(evt);
   mspies += parseInt(document.getElementById('spyCount_'+cityids[i]).innerHTML);
  }
 }
 
 var spies = [0,0];
 var decoys = [0,0];
 var risks = [100,100];
 var chances = [0,0];
 var drisks = [0,0];
 var costs1 = ["",""];
 var costs2 = ["",""];

 for(var spy=1; spy<=mspies; spy++) {
  var lastchance = 0;
  var lastrisk = 100;
  var cchance = 0;
  var crisk = 100;
  var drisk = 0;
  var cost1 = "";
  var cost2 = "";
  var minrisk = parseFloat(document.getElementById('info_minimumrisk_text').innerHTML);
  for(var decoy=0; decoy+spy<=mspies; decoy++) {
   lastchance = cchance;
   lastrisk = crisk;
   [cchance, crisk, drisk, cost1, cost2, minrisk] = getVals(spy,decoy);
   
   if(crisk == minrisk && (cchance <= lastchance || cchance == 100))
    break;

   if(cchance > chances[1] || (crisk < risks[1] && cchance >= chances[1])) {
    spies[1]=spy;
    decoys[1]=decoy;
    risks[1]=crisk;
    chances[1]=cchance;
    drisks[1]=drisk;
    costs1[1]=cost1;
    costs2[1]=cost2;
   }
   
   if(crisk < risks[0] || (crisk <= risks[0] && cchance > chances[0])) {
    spies[0]=spy;
    decoys[0]=decoy;
    risks[0]=crisk;
    chances[0]=cchance;
    drisks[0]=drisk;
    costs1[0]=cost1;
    costs2[0]=cost2;
   }
  }
 }
 
 document.getElementById('spies0').innerHTML = spies[0];
 document.getElementById('spies1').innerHTML = spies[1];
 document.getElementById('decoys0').innerHTML = decoys[0];
 document.getElementById('decoys1').innerHTML = decoys[1];
 document.getElementById('risk0').innerHTML = risks[0]+"%";
 document.getElementById('risk1').innerHTML = risks[1]+"%";
 document.getElementById('chance0').innerHTML = chances[0]+"%";
 document.getElementById('chance1').innerHTML = chances[1]+"%";
 document.getElementById('drisk0').innerHTML = drisks[0]+"%";
 document.getElementById('drisk1').innerHTML = drisks[1]+"%";
 document.getElementById('cost0').innerHTML = costs1[0];
 document.getElementById('cost1').innerHTML = costs1[1];
 document.getElementById('dcost0').innerHTML = costs2[0];
 document.getElementById('dcost1').innerHTML = costs2[1];
  
 document.getElementById('calc').blur();
}



//Hilfsfunktionen
function setSpys(event) {
 var id = event.target.id.substr(event.target.id.length-1)
 var spy = parseInt(document.getElementById('spies'+id).innerHTML);
 var decoy = parseInt(document.getElementById('decoys'+id).innerHTML);
 
 var spies = new Array();
 var mspies = 0;
 for(var i=0; i<cityids.length; i++) {
  if(document.getElementById('spyCount_'+cityids[i])!=null) {
   document.getElementById('agents'+cityids[i]).value = 0;
   var evt = document.createEvent("KeyEvents");
   evt.initKeyEvent('keyup', true, true, window, false, false, false, false, 13, 0);
   document.getElementById('agents'+cityids[i]).dispatchEvent(evt);
   document.getElementById('decoys'+cityids[i]).value = 0;
   var evt = document.createEvent("KeyEvents");
   evt.initKeyEvent('keyup', true, true, window, false, false, false, false, 13, 0);
   document.getElementById('decoys'+cityids[i]).dispatchEvent(evt);
   spies[i] = parseInt(document.getElementById('spyCount_'+cityids[i]).innerHTML);
   mspies += spies[i];
  }
  else
   spies[i] = 0;
 }

 if(mspies < spy+decoy)
  return 0;

 for(var i=0; i<spies.length; i++) {
  if(spies[i] > 0 && spy>0) {
   document.getElementById('agents'+cityids[i]).value = Math.min(spy,spies[i]);
   var temp=Math.min(spy,spies[i]);
   spies[i]-=temp;
   spy-=temp;
   var evt = document.createEvent("KeyEvents");
   evt.initKeyEvent('keyup', true, true, window, false, false, false, false, 13, 0);
   document.getElementById('agents'+cityids[i]).dispatchEvent(evt);
  }
  
  if(spies[i] > 0 && decoy>0) {
   document.getElementById('decoys'+cityids[i]).value = Math.min(decoy,spies[i]);
   var temp=Math.min(decoy,spies[i]);
   spies[i]-=temp;
   decoy-=temp;
   var evt = document.createEvent("KeyEvents");
   evt.initKeyEvent('keyup', true, true, window, false, false, false, false, 13, 0);
   document.getElementById('decoys'+cityids[i]).dispatchEvent(evt);
  }
 }
 
 event.target.blur();
}

function getVals(spy,decoy) {
 var spies = new Array();
 var mspies = 0;
 for(var i=0; i<cityids.length; i++) {
  if(document.getElementById('spyCount_'+cityids[i])!=null) {
   document.getElementById('agents'+cityids[i]).value = 0;
   var evt = document.createEvent("KeyEvents");
   evt.initKeyEvent('keyup', true, true, window, false, false, false, false, 13, 0);
   document.getElementById('agents'+cityids[i]).dispatchEvent(evt);
   document.getElementById('decoys'+cityids[i]).value = 0;
   var evt = document.createEvent("KeyEvents");
   evt.initKeyEvent('keyup', true, true, window, false, false, false, false, 13, 0);
   document.getElementById('decoys'+cityids[i]).dispatchEvent(evt);
   spies[i] = parseInt(document.getElementById('spyCount_'+cityids[i]).innerHTML);
   mspies += spies[i];
  }
  else
   spies[i] = 0;
 }

 if(mspies < spy+decoy)
  return 0;

 for(var i=0; i<spies.length; i++) {
  if(spies[i] > 0 && spy>0) {
   document.getElementById('agents'+cityids[i]).value = Math.min(spy,spies[i]);
   var temp=Math.min(spy,spies[i]);
   spies[i]-=temp;
   spy-=temp;
   var evt = document.createEvent("KeyEvents");
   evt.initKeyEvent('keyup', true, true, window, false, false, false, false, 13, 0);
   document.getElementById('agents'+cityids[i]).dispatchEvent(evt);
  }
  
  if(spies[i] > 0 && decoy>0) {
   document.getElementById('decoys'+cityids[i]).value = Math.min(decoy,spies[i]);
   var temp=Math.min(decoy,spies[i]);
   spies[i]-=temp;
   decoy-=temp;
   var evt = document.createEvent("KeyEvents");
   evt.initKeyEvent('keyup', true, true, window, false, false, false, false, 13, 0);
   document.getElementById('decoys'+cityids[i]).dispatchEvent(evt);
  }
 }
 
 var c1 = parseFloat(document.getElementById('info_chance_text').innerHTML);
 var c2 = parseFloat(document.getElementById('info_risk_text').innerHTML);
 var c3 = parseFloat(document.getElementById('info_decoyrisk_text').innerHTML);
 var c4 = document.getElementById('info_costs_text').innerHTML;
 var c5 = document.getElementById('info_decoycost_text').innerHTML;
 var c6 = parseFloat(document.getElementById('info_minimumrisk_text').innerHTML);

 
 for(var i=0; i<cityids.length; i++) {
  if(document.getElementById('spyCount_'+cityids[i])!=null) {
   document.getElementById('agents'+cityids[i]).value = 0;
   var evt = document.createEvent("KeyEvents");
   evt.initKeyEvent('keyup', true, true, window, false, false, false, false, 13, 0);
   document.getElementById('agents'+cityids[i]).dispatchEvent(evt);
   document.getElementById('decoys'+cityids[i]).value = 0;
   var evt = document.createEvent("KeyEvents");
   evt.initKeyEvent('keyup', true, true, window, false, false, false, false, 13, 0);
   document.getElementById('decoys'+cityids[i]).dispatchEvent(evt);
  }
 }
 
 return [c1,c2,c3,c4,c5,c6];
}

function getLanguage(href) {
 var language = href.replace(/........\d+.(\w+).*/,"$1");
 return language ;
}

0 comments:

Post a Comment