· 4 years ago · Aug 20, 2021, 05:24 AM
1var api = typeof unsafeWindow != 'undefined' ? unsafeWindow.ScriptAPI: window.ScriptAPI;
2api.register('170-Deffinfo', true, 'Boggler', 'Support-nur-ueber-Skype--boggler2306@trash-mail.com');
3
4// Storage-Klasse von Hypix
5var storage = new Storage("prefix", false);
6function Storage(prefix, forceGM) {
7 var gm = typeof(unsafeWindow) != "undefined" && navigator.userAgent.indexOf("Firefox") > -1
8 var win = gm ? unsafeWindow: window;
9 var ls = false;
10 var intGetValue;
11 var intSetValue;
12 var prefix = prefix;
13 try {
14 ls = typeof(win.localStorage) != "undefined";
15 } catch(e) {}
16 if (!ls && !gm)
17 throw ("Keine geeignete Speichermöglichgkeit gefunden");
18 if (forceGM && gm || !ls) {
19 if (gm) {
20 prefix = prefix + "_" + document.location.host.split('.')[0];
21 intSetValue = function(key, value) {
22 GM_setValue(prefix + "_" + key, value);
23 };
24 intGetValue = function(key, defaultValue) {
25 return GM_getValue(prefix + "_" + key, defaultValue);
26 }
27 this.deleteValue = function(key) {
28 GM_deleteValue(prefix + "_" + key);
29 }
30 this.listValues = function(re) {
31 var allkeys = GM_listValues();
32 var serverKeys = [];
33 var rePrefix = new RegExp("^" + prefix + "_(.*)$");
34 if (typeof(re) != "undefined")
35 var reKey = new RegExp(re);
36 for (var i = 0; i < allkeys.length; i++) {
37 var res = allkeys[i].match(rePrefix);
38 if (res) {
39 if (reKey) {
40 res = res[1].match(reKey);
41 if (res)
42 serverKeys.push(res);
43 } else
44 serverKeys.push(res[1]);
45 }
46 }
47 return serverKeys;
48 }
49 }
50 } else if (ls) {
51 intSetValue = function(key, value) {
52 localStorage.setItem(prefix + "_" + key, value);
53 };
54 intGetValue = function(key, defaultValue) {
55 var value = localStorage.getItem(prefix + "_" + key);
56 if (value)
57 return value;
58 else
59 return defaultValue;
60 };
61 this.deleteValue = function(key) {
62 localStorage.removeItem(prefix + "_" + key);
63 }
64 this.listValues = function(re) {
65 var keys = [];
66 var rePrefix = new RegExp("^" + prefix + "_(.*)$");
67 if (typeof(re) != "undefined")
68 var reKey = new RegExp(re);
69 for (var i = 0; i < win.localStorage.length; i++) {
70 var res = localStorage.key(i).match(rePrefix);
71 if (res) {
72 if (reKey) {
73 res = res[1].match(reKey);
74 if (res)
75 keys.push(res);
76 } else
77 keys.push(res[1]);
78 }
79 }
80 return keys;
81 }
82 }
83 this.clear = function(re) {
84 var keys = this.listValues(re);
85 for (var i = 0; i < keys.length; i++)
86 this.deleteValue(keys[i]);
87 }
88 this.setValue = function(key, value) {
89 switch (typeof(value)) {
90 case "object":
91 case "function":
92 intSetValue(key, "j" + JSON.stringify(value));
93 break;
94 case "number":
95 intSetValue(key, "n" + value);
96 break;
97 case "boolean":
98 intSetValue(key, "b" + (value ? 1: 0));
99 break;
100 case "string":
101 intSetValue(key, "s" + value);
102 break;
103 case "undefined":
104 intSetValue(key, "u");
105 break;
106 }
107 }
108 this.getValue = function(key, defaultValue) {
109 var str = intGetValue(key);
110 if (typeof(str) != "undefined") {
111 switch (str[0]) {
112 case "j":
113 return JSON.parse(str.substring(1));
114 case "n":
115 return parseFloat(str.substring(1));
116 case "b":
117 return str[1] == "1";
118 case "s":
119 return str.substring(1);
120 default:
121 this.deleteValue(key);
122 }
123 }
124 return defaultValue;
125 }
126 this.getString = function(key) {
127 return intGetValue(key);
128 }
129 this.setString = function(key, value) {
130 intSetValue(key, value);
131 }
132}
133/*
134 *
135 * Allgemeine Definitionen
136 *
137 */
138
139//Gibt bei gegebenen Truppen und gespeichertem Deffmuster die Deffanzahl zurueck
140function deffanzahl(sp, sw, ax, bo, spy, lk, bb, sk, ra, ka, pa, ag) {
141 var deffzahl = 0;
142
143 AllgZ = sp * deffallg[0] + sw * deffallg[1] + ax * deffallg[2] + bo * deffallg[3] + spy * deffallg[4] + lk * deffallg[5] + bb * deffallg[6] + sk * deffallg[7] + ra * deffallg[8] + ka * deffallg[9] + pa * deffallg[10] + ag * deffallg[11];
144 KavZ = sp * deffkav[0] + sw * deffkav[1] + ax * deffkav[2] + bo * deffkav[3] + spy * deffkav[4] + lk * deffkav[5] + bb * deffkav[6] + sk * deffkav[7] + ra * deffkav[8] + ka * deffkav[9] + pa * deffkav[10] + ag * deffkav[11];
145 BogZ = sp * deffbog[0] + sw * deffbog[1] + ax * deffbog[2] + bo * deffbog[3] + spy * deffbog[4] + lk * deffbog[5] + bb * deffbog[6] + sk * deffbog[7] + ra * deffbog[8] + ka * deffbog[9] + pa * deffbog[10] + ag * deffbog[11];
146
147 AllgZ = AllgZ / allgwert;
148 KavZ = KavZ / kavwert;
149 BogZ = BogZ / bogwert;
150 deffzahl = (bogen) ? AllgZ + KavZ + BogZ: AllgZ + KavZ;
151 deffzahl = (bogen) ? deffzahl / 3: deffzahl / 2;
152 deffzahl = deffzahl * 100;
153 deffzahl = Math.round(deffzahl);
154 deffzahl = deffzahl / 100;
155 return deffzahl;
156}
157
158//Funktionen zum Berechnen der Entfernung zwischen zwei Doerfern
159function hypot(x, y) {
160 return Math.sqrt(x * x + y * y) || 0;
161}
162function village_distance(x1, x2, y1, y2) {
163 var distance = Math.round(hypot(x1 - x2, y1 - y2) * 100);
164 var distance = distance / 100;
165 return distance;
166}
167
168//erzeugt ein DOM-Element und f�gt Attribute und Anzeigetext an
169function createElement(type, attributes, html) {
170 var node = document.createElement(type);
171 for (var attr in attributes)
172 if (attributes.hasOwnProperty(attr)) {
173 node.setAttribute(attr, attributes[attr]);
174 }
175 if (html != null) {
176 node.innerHTML = html;
177 }
178 return node;
179}
180
181//Allgemeine Infos ueber Spieler, Dorf und Welt auslesen
182var spielername = document.getElementsByTagName('html')[0].innerHTML.split('"name":"')[1].split('"')[0];
183var spielerid = document.getElementsByTagName('html')[0].innerHTML.split('"id":"')[1].split('"')[0];
184var welt = document.location.href.split('https://')[1].split('.')[0];
185var villageid = Number(document.location.href.split('village=')[1].split('&')[0]);
186/*var spielername = game_data.player.name;
187var spielerid = game_data.player.id;
188var welt = game_data.world;
189var villageid = game_data.village.id;
190alert(welt+spielername+spielerid+'__'+villageid);*/
191var table = document.getElementById('units_table');
192try {
193 var bogen = table.innerHTML.indexOf('archer') > 0;
194 var paladin = table.innerHTML.indexOf('knight') > 0;
195 storage.setValue('deffscript' + welt + '_bogen', bogen);
196 storage.setValue('deffscript' + welt + '_paladin', paladin);
197 var dorfzahl = Number(table.innerHTML.split('Dorf (')[1].split(')')[0]);
198} catch(e) {}
199
200//Deffwerte und BH-Plaetze aller Einheiten definieren
201var deffallg = new Array(15, 50, 10, 50, 2, 30, 40, 200, 20, 100, 250, 100)
202 var deffkav = new Array(45, 15, 5, 40, 1, 40, 30, 80, 50, 50, 400, 50)
203 var deffbog = new Array(20, 40, 10, 5, 2, 30, 50, 180, 20, 100, 150, 100)
204 var bhplaetze = new Array(1, 1, 1, 1, 2, 4, 5, 6, 5, 8, 10, 100);
205var bhplaetze1 = new Array(1, 1, 1, 2, 4, 6, 5, 8, 10, 100);
206
207//Falls nicht vorhanden, Standardwerte fuer das Deffmuster setzen
208if (bogen) {
209 var einedeff = new Array(6000, 6000, 0, 8001, 129, 0, 0, 0, 0, 50);
210 if (storage.getValue('deffscript' + welt + '_allgwert', 'nv') == 'nv')
211 storage.setValue('deffscript' + welt + '_allgwert', 795308);
212 if (storage.getValue('deffscript' + welt + '_kavwert', 'nv') == 'nv')
213 storage.setValue('deffscript' + welt + '_kavwert', 682669);
214 if (storage.getValue('deffscript' + welt + '_bogwert', 'nv') == 'nv')
215 storage.setValue('deffscript' + welt + '_bogwert', 405263);
216} else {
217 var einedeff = new Array(10000, 10000, 0, 100, 0, 0, 0, 50);
218 if (storage.getValue('deffscript' + welt + '_allgwert', 'nv') == 'nv')
219 storage.setValue('deffscript' + welt + '_allgwert', 655200);
220 if (storage.getValue('deffscript' + welt + '_kavwert', 'nv') == 'nv')
221 storage.setValue('deffscript' + welt + '_kavwert', 602600);
222 if (storage.getValue('deffscript' + welt + '_bogwert', 'nv') == 'nv')
223 storage.setValue('deffscript' + welt + '_bogwert', 605200);
224}
225for (i = 0; i < einedeff.length; i++) {
226 if (storage.getValue('deffscript' + welt + '_einedeff_' + i, 'nicht vorhanden') == 'nicht vorhanden')
227 storage.setValue('deffscript' + welt + '_einedeff_' + i, einedeff[i]);
228}
229
230//Gespeicherte Standardwerte auslesen
231var bogen = storage.getValue('deffscript' + welt + '_bogen', true);
232var paladin = storage.getValue('deffscript' + welt + '_paladin', true);
233var allgwert = storage.getValue('deffscript' + welt + '_allgwert', 795308);
234var kavwert = storage.getValue('deffscript' + welt + '_kavwert', 682669);
235var bogwert = storage.getValue('deffscript' + welt + '_bogwert', 405263);
236
237//Auslesen, auf welcher Seite man sich befindet
238var url = document.location.href;
239var mode;
240//Dorfansicht
241if (url.match(/screen=overview/g) != null && url.match(/screen=overview_villages/g) == null)
242 mode = 'overview';
243//Einstellungen
244if (url.match(/screen=settings/g) != null)
245 mode = 'settings';
246//Truppen-Verteidigung
247if (url.match(/mode=units/g) != null && url.match(/type=support_detail/g) != null)
248 mode = 'units&type=support_detail';
249//Truppen-Im Dorf
250if (url.match(/mode=units/g) != null && url.match(/type=there/g) != null)
251 mode = 'units&type=there';
252//Truppen-Unterstuetzungen
253if (url.match(/mode=units/g) != null && url.match(/type=away_detail/g) != null)
254 mode = 'units&type=away_detail';
255//Versammlungsplatz-Truppen
256if (url.match(/mode=units/g) != null && url.match(/screen=place/g) != null)
257 mode = 'units';
258
259switch (mode) {
260 /*
261 *
262 * Einstellungen
263 *
264 */
265 case 'settings':
266 //Speichert in die Felder eingegebene Werte, wird beim Start und wird bei jeder Aenderung aufgerufen
267 function changed() {
268 var bh = (bogen) ? bhplaetze: bhplaetze1;
269 var einedeffallg = 0;
270 var einedeffkav = 0;
271 var einedeffbog = 0;
272 var einedeffbh = 0;
273 for (i = 0; i < 14; i++) {
274 try {
275 einedeffallg = einedeffallg + Number(document.getElementById('trp' + i).value) * deffallg[i];
276 einedeffkav = einedeffkav + Number(document.getElementById('trp' + i).value) * deffkav[i];
277 einedeffbog = einedeffbog + Number(document.getElementById('trp' + i).value) * deffbog[i];
278 einedeffbh = einedeffbh + Number(document.getElementById('trp' + i).value) * bh[i];
279 storage.setValue('deffscript' + welt + '_einedeff_' + i, document.getElementById('trp' + i).value);
280 } catch(e) {}
281 }
282 document.getElementById('deffallg').value = einedeffallg;
283 document.getElementById('deffkav').value = einedeffkav;
284 try {
285 document.getElementById('deffbog').value = einedeffbog;
286 } catch(e) {}
287 document.getElementById('deffbh').value = einedeffbh;
288 storage.setValue('deffscript' + welt + '_allgwert', einedeffallg);
289 storage.setValue('deffscript' + welt + '_kavwert', einedeffkav);
290 storage.setValue('deffscript' + welt + '_bogwert', einedeffbog);
291
292 }
293 //Einheitentypen fuer Tabelle je nach Welttyp bestimmen
294 var units = new Array('spear', 'sword', 'axe', 'spy', 'light', 'heavy', 'ram', 'catapult');
295 if (bogen)
296 var units = new Array('spear', 'sword', 'axe', 'archer', 'spy', 'light', 'marcher', 'heavy', 'ram', 'catapult');
297
298 var image_base = '{graphic}';
299 //Links fuer Einheitensymbole zusammenstellen
300 for (i = 0; i < units.length; i++) {
301 units[i] = image_base + '/unit/unit_' + units[i] + '.png';
302 }
303 units[units.length] = image_base + '/unit/Def.png';
304 units[units.length] = image_base + '/unit/Def_cav.png';
305 if (bogen)
306 units[units.length] = image_base + '/unit/Def_archer.png';
307
308 //div-Kontainer und Tabelle erzeugen
309 var settings = createElement('div', {
310 id: 'deffsettings'
311 });
312
313 var table = createElement('table', {
314 class: 'vis overview_table',
315 style: 'min-width:950px'
316 });
317
318 var thead = createElement('thead');
319 var tr = createElement('tr');
320
321 tr.appendChild(createElement('th', {
322 style: 'text-align:center'
323 }, 'Deffvorgabe'));
324 for (i = 0; i < units.length; i++) {
325 var th = createElement('th', {
326 style: 'text-align:center'
327 });
328 var img = createElement('img', {
329 src: units[i]
330 });
331 th.appendChild(img);
332 tr.appendChild(th);
333 }
334 tr.appendChild(createElement('th', {
335 style: 'text-align:center'
336 }, 'BH-Plätze'));
337 thead.appendChild(tr);
338 table.appendChild(thead);
339
340 //Eingabefelder + Inhalt einfuegen
341 var tr = createElement('tr', {});
342 tr.appendChild(createElement('td', {}, 'für eine Deff'));
343 var anzahl = (bogen) ? 10: 8;
344
345 for (i = 0; i < anzahl; i++) {
346 var td = createElement('td', {
347 style: 'text-align:center'
348 });
349 var input = createElement('input', {
350 size: '3',
351 type: 'text',
352 value: storage.getValue('deffscript' + welt + '_einedeff_' + i, '0'),
353 id: 'trp' + i,
354 name: 'einedeff'
355 });
356 input.addEventListener('keyup', changed, false);
357 td.appendChild(input);
358 tr.appendChild(td);
359
360 }
361
362 var td = createElement('td', {
363 style: 'text-align:center'
364 });
365 var input = createElement('input', {
366 size: '10',
367 type: 'text',
368 id: 'deffallg',
369 disabled: true
370 });
371 td.appendChild(input);
372 tr.appendChild(td);
373
374 var td = createElement('td', {
375 style: 'text-align:center'
376 });
377 var input = createElement('input', {
378 size: '10',
379 type: 'text',
380 id: 'deffkav',
381 disabled: true
382 });
383 td.appendChild(input);
384 tr.appendChild(td);
385 if (bogen) {
386 var td = createElement('td', {
387 style: 'text-align:center'
388 });
389 var input = createElement('input', {
390 size: '10',
391 type: 'text',
392 id: 'deffbog',
393 disabled: true
394 });
395 td.appendChild(input);
396 tr.appendChild(td);
397 }
398
399 var td = createElement('td', {
400 style: 'text-align:center'
401 });
402 var input = createElement('input', {
403 size: '5',
404 type: 'text',
405 id: 'deffbh',
406 disabled: true
407 });
408 td.appendChild(input);
409 tr.appendChild(td);
410
411 table.appendChild(tr);
412 settings.appendChild(createElement('br', {}));
413 var h3 = createElement('h3', {});
414
415 h3.appendChild(createElement('a', {
416 href: 'https://forum.die-staemme.de/showthread.php?169850'
417 }, 'Deffinfo'));
418
419 settings.appendChild(h3);
420 settings.appendChild(table);
421
422 document.getElementsByClassName('vis settings')[0].parentNode.appendChild(settings);
423
424 changed();
425
426 break;
427 /*
428 *
429 * Uebersicht->Truppen->Im Dorf
430 *
431 */
432 case 'units&type=there':
433
434 for (i = 1; i <= dorfzahl; i++) {
435 var bereich = document.getElementsByTagName('body')[0].innerHTML.split('<!-- troop data -->')[i].split('</tr>')[0];
436 var sp = Number(bereich.split('<td class="unit-')[1].split('">')[1].split("</td>")[0]);
437 var sw = Number(bereich.split('<td class="unit')[2].split('">')[1].split("</td>")[0]);
438 var ax = Number(bereich.split('<td class="unit')[3].split('">')[1].split("</td>")[0]);
439 if (bogen && paladin) {
440 var bo = Number(bereich.split('<td class="unit')[4].split('">')[1].split("</td>")[0]);
441 var spy = Number(bereich.split('<td class="unit')[5].split('">')[1].split("</td>")[0]);
442 var lk = Number(bereich.split('<td class="unit')[6].split('">')[1].split("</td>")[0]);
443 var bb = Number(bereich.split('<td class="unit')[7].split('">')[1].split("</td>")[0]);
444 var sk = Number(bereich.split('<td class="unit')[8].split('">')[1].split("</td>")[0]);
445 var ra = Number(bereich.split('<td class="unit')[9].split('">')[1].split("</td>")[0]);
446 var ka = Number(bereich.split('<td class="unit')[10].split('">')[1].split("</td>")[0]);
447 var pa = Number(bereich.split('<td class="unit')[11].split('">')[1].split("</td>")[0]);
448 var ag = Number(bereich.split('<td class="unit')[12].split('">')[1].split("</td>")[0]);
449 } else if (bogen && !paladin) {
450 var bo = Number(bereich.split('<td class="unit')[4].split('">')[1].split("</td>")[0]);
451 var spy = Number(bereich.split('<td class="unit')[5].split('">')[1].split("</td>")[0]);
452 var lk = Number(bereich.split('<td class="unit')[6].split('">')[1].split("</td>")[0]);
453 var bb = Number(bereich.split('<td class="unit')[7].split('">')[1].split("</td>")[0]);
454 var sk = Number(bereich.split('<td class="unit')[8].split('">')[1].split("</td>")[0]);
455 var ra = Number(bereich.split('<td class="unit')[9].split('">')[1].split("</td>")[0]);
456 var ka = Number(bereich.split('<td class="unit')[10].split('">')[1].split("</td>")[0]);
457 var pa = 0;
458 var ag = Number(bereich.split('<td class="unit')[11].split('">')[1].split("</td>")[0]);
459 } else if (!bogen && paladin) {
460 var bo = 0;
461 var spy = Number(bereich.split('<td class="unit')[4].split('">')[1].split("</td>")[0]);
462 var lk = Number(bereich.split('<td class="unit')[5].split('">')[1].split("</td>")[0]);
463 var bb = 0;
464 var sk = Number(bereich.split('<td class="unit')[6].split('">')[1].split("</td>")[0]);
465 var ra = Number(bereich.split('<td class="unit')[7].split('">')[1].split("</td>")[0]);
466 var ka = Number(bereich.split('<td class="unit')[8].split('">')[1].split("</td>")[0]);
467 var pa = Number(bereich.split('<td class="unit')[9].split('">')[1].split("</td>")[0]);
468 var ag = Number(bereich.split('<td class="unit')[10].split('">')[1].split("</td>")[0]);
469 } else {
470 var bo = 0;
471 var spy = Number(bereich.split('<td class="unit')[4].split('">')[1].split("</td>")[0]);
472 var lk = Number(bereich.split('<td class="unit')[5].split('">')[1].split("</td>")[0]);
473 var bb = 0;
474 var sk = Number(bereich.split('<td class="unit')[6].split('">')[1].split("</td>")[0]);
475 var ra = Number(bereich.split('<td class="unit')[7].split('">')[1].split("</td>")[0]);
476 var ka = Number(bereich.split('<td class="unit')[8].split('">')[1].split("</td>")[0]);
477 var pa = 0;
478 var ag = Number(bereich.split('<td class="unit')[9].split('">')[1].split("</td>")[0]);
479 }
480 var villageid = bereich.split('<td><a href="/game.php?village=')[1].split("&")[0];
481
482 document.getElementsByTagName('body')[0].innerHTML = document.getElementsByTagName('body')[0].innerHTML.replace('<a href="/game.php?village=' + villageid + '&screen=place&mode=units">Truppen</a>', '<a href="/game.php?village=' + villageid + '&screen=place&mode=units">Truppen (' + String(deffanzahl(sp, sw, ax, bo, spy, lk, bb, sk, ra, ka, pa, ag)) + ' Deffs)</a>');
483 }
484 break;
485 /*
486 *
487 * Uebersicht->Truppen->Unterstuetzungen
488 *
489 */
490 case 'units&type=away_detail':
491 //Vielen Dank an xXNo M3rcyXx, fuer das Einverstaendnis zur Verwendung des Scriptes >Liste der unterstuetzten Doerfer in der Truppenuebersicht< als Vorlage
492 function trim(str, chars) {
493 return ltrim(rtrim(str, chars), chars);
494 }
495
496 function ltrim(str, chars) {
497 chars = chars || "s";
498 return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
499 }
500
501 function rtrim(str, chars) {
502 chars = chars || "s";
503 return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
504 }
505
506 //Gibt den Index des Arrays zurueck, an dem sich der gesuchte Spieler befindet
507 function findPlayer(array, name) {
508 for (i = 0; i < array.length; i++) {
509 try {
510 if (array[i][0] == name) {
511 return i;
512 break;
513 }
514 } catch(e) {
515 return null;
516 }
517 }
518 }
519
520 var villages = new Array(0);
521 var villages1 = new Array();
522 var defence = new Array(0);
523 var links = new Array(0);
524 var players = new Array();
525 var gesamt = new Array();
526 var b = (bogen) ? 12: 10
527 for (a = 0; a <= b; a++) {
528 gesamt[a] = 0;
529 }
530 var villagesTable = document.getElementById('units_table');
531
532 //Liest Infos ueber gedeffte Doerfer ein
533 function summarize() {
534 villagesTable.deleteRow(0);
535 var rows = villagesTable.getElementsByTagName('tr');
536 // rows.deleteRow(0);
537 for (var i = 1; i < rows.length - 1; i++) {
538 if (rows[i].lastChild.previousSibling.getElementsByTagName('a').length == 0) {
539 //Unterstuetztes Dorf
540 var village = rows[i].getElementsByTagName('span')[0].textContent;
541 var j = 0;
542 //Suche, ob das Dorf bereits in villages[] gespeichert ist
543 for (j = 0; j < villages.length; j++) {
544 if (villages[j] == village)
545 break;
546 }
547 try {
548 //Besitzer des Dorfes herausfinden und speichern
549 if (rows[i].getElementsByTagName('span')[0].getElementsByTagName('a')[1].innerHTML.length == 0) {
550 player = '<a href="' + rows[i].getElementsByTagName('span')[0].getElementsByTagName('a')[2].href + '">' + rows[i].getElementsByTagName('span')[0].getElementsByTagName('a')[2].innerHTML + '</a>';
551 rows[i].getElementsByTagName('span')[0].getElementsByTagName('input')[0].alt = rows[i].getElementsByTagName('span')[0].getElementsByTagName('a')[2].innerHTML;
552 } else {
553 player = '<a href="' + rows[i].getElementsByTagName('span')[0].getElementsByTagName('a')[1].href + '">' + rows[i].getElementsByTagName('span')[0].getElementsByTagName('a')[1].innerHTML + '</a>';
554 rows[i].getElementsByTagName('span')[0].getElementsByTagName('input')[0].alt = rows[i].getElementsByTagName('span')[0].getElementsByTagName('a')[1].innerHTML;
555 }
556 } catch(e) {
557 player = '<a href="/game.php?village=' + villageid + '&id=' + spielerid + '&screen=info_player">' + spielername + '</a>';
558 rows[i].getElementsByTagName('span')[0].getElementsByTagName('input')[0].alt = spielername;
559 }
560 //Index des Spielers in players[] definieren
561 var playernr = findPlayer(players, player);
562 //Wenn der Spieler noch nicht angelegt ist, das Array erzeugen
563 if (playernr == null) {
564 playernr = players.length;
565 players[playernr] = new Array();
566 players[playernr][0] = player;
567 for (var d = 0; d <= rows[0].getElementsByTagName('th').length - 3; d++) {
568 players[playernr][d + 1] = 0;
569 }
570 players[playernr]['anzahl'] = 0;
571 }
572 //Wenn das Dorf noch nicht in villages[] vorhanden ist, Dorf eintragen
573 if (j == villages.length) {
574 villages[j] = village;
575 villages1[j] = new Array();
576 villages1[j][j] = rows[i].getElementsByTagName('span')[0].innerHTML;
577 //Besitzername in Klartext zusammen mit dem Dorf speichern
578 try {
579 if (navigator.userAgent.indexOf('Firefox') > 0) {
580 var player1 = rows[i].getElementsByTagName('span')[0].getElementsByTagName('a')[1].innerHTML;
581 } else {
582 var player1 = rows[i].getElementsByTagName('span')[0].getElementsByTagName('a')[2].innerHTML;
583 }
584 } catch(e) {
585 var player1 = spielername;
586 }
587 villages1[j]['name'] = player1;
588 //Array fuer die Einheiten erstellen
589 defence[j] = new Array(0);
590 for (k = 0; k < rows[0].getElementsByTagName('th').length - 3; k++)
591 defence[j][k] = 0;
592 links[j] = rows[i].getElementsByTagName('a')[0];
593 //Anzahl an gedefften Doerfern je Spieler erhoehen
594 players[playernr][1] = players[playernr][1] + 1;
595 }
596 //Anzahl an gedefften Doerfern erhoehen
597 players[playernr]['anzahl'] = players[playernr]['anzahl'] + 1;
598
599 //Jede Einheit einer Unterstuertzung dem Dorfarray, Spielerarray und Gesamtarray hinzufuegen
600 cells = rows[i].getElementsByTagName('td');
601 gesamt[0] += 1;
602 for (var k = 1; k <= defence[j].length; k++) {
603 defence[j][k - 1] += parseInt(cells[k].textContent);
604 players[playernr][k + 1] += parseInt(cells[k].textContent);
605 gesamt[k] += parseInt(cells[k].textContent);
606 }
607
608 }
609 }
610 }
611
612 //Erzeugt die Tabelle und listet die einzelnen gedefften Doerfer auf
613 function display() {
614 //Einheitentabelle erstellen
615 var div = document.getElementById("paged_view_content");
616 var stat = createElement('table', {
617 id: 'Statistik',
618 style: 'width:100%'
619 });
620 var div2 = createElement('div', {
621 style: 'width:100%;display:none',
622 id: 'exportbereich',
623 rows: '10'
624 }, '<br><b>Tabelle in BB-Code (für Forum etc.):</b><br><textarea style="width:100%" id="Exportfeld" rows="10"></textarea>');
625
626 //Behebt den Fehler, dass nichts angezeigt wird, wenn man in einer einzelnen Gruppe Doerfer filtert (leere Eintraege ausblendet)
627 try {
628 div.insertBefore(stat, document.forms[document.forms.length - 2]);
629 div.insertBefore(div2, document.forms[document.forms.length - 2]);
630 } catch(e) {
631 div.insertBefore(stat, document.forms[document.forms.length - 1]);
632 div.insertBefore(div2, document.forms[document.forms.length - 1]);
633 }
634 //Einheiten je nach Welttyp
635 var units = new Array('spear', 'sword', 'axe', 'spy', 'light', 'heavy', 'ram', 'catapult', 'knight', 'snob');
636 if (bogen)
637 var units = new Array('spear', 'sword', 'axe', 'archer', 'spy', 'light', 'marcher', 'heavy', 'ram', 'catapult', 'knight', 'snob');
638 //Export-"Button"
639 var thead = createElement('thead', {});
640 var tr = createElement('tr', {});
641 var th = createElement('th', {
642 style: 'text-align:center',
643 colspan: '2'
644 }, 'Spieler [<a id="exportieren">Export</a>]');
645 tr.appendChild(th);
646 var th = createElement('th', {
647 style: 'text-align:center'
648 });
649 var img = createElement('img', {
650 src: image_base + '/command/support.png'
651 });
652 th.appendChild(img);
653 tr.appendChild(th);
654 var th = createElement('th', {
655 style: 'text-align:center'
656 });
657 var a = createElement('a', {
658 href: '/game.php?village=' + villageid + '&screen=settings'
659 }, 'Deffs');
660 th.appendChild(a);
661 tr.appendChild(th);
662 for (i = 0; i < units.length; i++) {
663 units[i] = image_base + '/unit/unit_' + units[i] + '.png';
664 }
665 for (i = 0; i < units.length; i++) {
666 var th = createElement('th', {
667 style: 'text-align:center'
668 });
669 var img = createElement('img', {
670 src: units[i]
671 });
672 th.appendChild(img);
673 tr.appendChild(th);
674 }
675 thead.appendChild(tr);
676
677 document.getElementById('Statistik').appendChild(thead);
678 //Statistiken ueber einzelne Spieler einfuegen
679 for (i = 0; i < players.length; i++) {
680 deffzahl = (bogen) ? deffanzahl(players[i][2], players[i][3], players[i][4], players[i][5], players[i][6], players[i][7], players[i][8], players[i][9], players[i][10], players[i][11], players[i][12], players[i][13]) : deffanzahl(players[i][2], players[i][3], players[i][5], 0, players[i][6], players[i][8], 0, players[i][9], players[i][10], players[i][11], players[i][12], players[i][13]);
681 var tr = createElement('tr', {});
682 var td = createElement('td', {
683 style: 'text-align:center'
684 }, '<input type="checkbox" name="indenstats" value="' + players[i][0].split('>')[1].split('<')[0] + '">');
685 tr.appendChild(td);
686 var td = createElement('td', {
687 style: 'text-align:center'
688 }, players[i][0]);
689 tr.appendChild(td);
690 var td = createElement('td', {
691 style: 'text-align:center'
692 }, players[i]['anzahl'] + ' in ' + players[i][1] + ' Dörfern');
693 tr.appendChild(td);
694 var td = createElement('td', {
695 style: 'text-align:center'
696 }, deffzahl);
697 tr.appendChild(td);
698 var b = (bogen) ? 13: 11;
699 for (a = 2; a <= b; a++) {
700
701 var td = createElement('td', {
702 style: 'text-align:center'
703 }, players[i][a])
704 tr.appendChild(td);
705
706 }
707 document.getElementById('Statistik').appendChild(tr);
708 }
709
710 //Gesamtwerte einfuegen
711 var tr = createElement('tr', {});
712 var th = createElement('th', {
713 style: 'text-align:center',
714 colspan: '2'
715 }, '<strong>Gesamt (' + players.length + ')</strong>')
716 tr.appendChild(th);
717 var th = createElement('th', {
718 style: 'text-align:center'
719 }, gesamt[0] + ' in ' + villages.length + ' Dörfern')
720 tr.appendChild(th);
721 if (bogen) {
722 var th = createElement('th', {
723 style: 'text-align:center'
724 }, deffanzahl(gesamt[1], gesamt[2], gesamt[3], gesamt[4], gesamt[5], gesamt[6], gesamt[7], gesamt[8], gesamt[9], gesamt[10], gesamt[11], gesamt[12]))
725 tr.appendChild(th);
726 } else {
727 var th = createElement('th', {
728 style: 'text-align:center'
729 }, deffanzahl(gesamt[1], gesamt[2], gesamt[3], 0, gesamt[4], gesamt[5], 0, gesamt[6], gesamt[7], gesamt[8], gesamt[9], gesamt[10]))
730 tr.appendChild(th);
731 }
732 var b = (bogen) ? 13: 11;
733 for (a = 1; a < b; a++) {
734
735 var th = createElement('th', {
736 style: 'text-align:center'
737 }, gesamt[a])
738 tr.appendChild(th);
739
740 }
741 document.getElementById('Statistik').appendChild(tr);
742
743 //Bei Klick auf den Exportieren-"Button"
744 document.getElementById('exportieren').addEventListener('click', function exporten() {
745 //Tabellenkopf
746 var text = '[table][**]Spieler[||]Unterstuetzungen[||]Deffs[||][unit]spear[/unit][||][unit]sword[/unit][||][unit]axe[/unit][||]';
747
748 if (bogen)
749 text += '[unit]archer[/unit][||]';
750 text += '[unit]spy[/unit][||][unit]light[/unit][||]';
751 if (bogen)
752 text += '[unit]marcher[/unit][||]';
753 text += '[unit]heavy[/unit][||][unit]ram[/unit][||][unit]catapult[/unit][||]';
754 if (paladin)
755 text += '[unit]knight[/unit][||]';
756 text += '[unit]snob[/unit][/**]';
757 //Spieler und unterstuetzte Einheiten
758 for (i = 0; i < players.length; i++) {
759 deffzahl = (bogen) ? deffanzahl(players[i][2], players[i][3], players[i][4], players[i][5], players[i][6], players[i][7], players[i][8], players[i][9], players[i][10], players[i][11], players[i][12], players[i][13]) : deffanzahl(players[i][2], players[i][3], players[i][5], 0, players[i][6], players[i][8], 0, players[i][9], players[i][10], players[i][11], players[i][12], players[i][13]);
760
761 var text1 = '[*][player]' + players[i][0].split('>')[1].split('<')[0] + '[/player][|]' + players[i]['anzahl'] + ' in ' + players[i][1] + ' Doerfern' + '[|]' + deffzahl;
762 var b = (bogen) ? 13: 11;
763 for (a = 2; a <= b; a++) {
764
765 text1 += '[|]' + String(players[i][a]);
766
767 }
768 text += text1 + '[/*]';
769 }
770 //Gesamte Unterstuetzung
771 deffzahl = (bogen) ? deffanzahl(gesamt[1], gesamt[2], gesamt[3], gesamt[4], gesamt[5], gesamt[6], gesamt[7], gesamt[8], gesamt[9], gesamt[10], gesamt[11], gesamt[12]) : deffanzahl(gesamt[1], gesamt[2], gesamt[3], 0, gesamt[4], gesamt[5], 0, gesamt[6], gesamt[7], gesamt[8], gesamt[9], gesamt[10]);
772 var text1 = '[**]Gesamt (' + players.length + ')[||]' + gesamt[0] + ' in ' + villages.length + ' Doerfern[||]' + deffzahl;
773 var b = (bogen) ? 13: 11;
774 for (a = 1; a < b; a++) {
775
776 text1 += '[||]' + gesamt[a];
777
778 }
779 //Einzelne gedeffte Doerfer mit Truppen
780 text += text1 + '[/**][/table]' + '\r\n\r\nGedeffte Doerfer:\r\n';
781 text += '[table][**]Dorf[||]Spieler[||][unit]spear[/unit][||][unit]sword[/unit][||][unit]axe[/unit][||]';
782
783 if (bogen)
784 text += '[unit]archer[/unit][||]';
785 text += '[unit]spy[/unit][||][unit]light[/unit][||]';
786 if (bogen)
787 text += '[unit]marcher[/unit][||]';
788 text += '[unit]heavy[/unit][||][unit]ram[/unit][||][unit]catapult[/unit][||]';
789 if (paladin)
790 text += '[unit]knight[/unit][||]';
791 text += '[unit]snob[/unit][||]Deffs[/**]';
792 for (var i = 0; i < villages.length; i++) {
793
794 var newCell = document.createElement('td');
795 if (villages1[i][i].split('<a')[1].split('(')[villages1[i][i].split('<a')[1].split('(').length - 1].split(')')[0].length == 0) {
796 koord = villages1[i][i].split('<a')[1].split('(')[villages1[i][i].split('<a')[1].split('(').length - 2].split(')')[0];
797 } else {
798 koord = villages1[i][i].split('<a')[1].split('(')[villages1[i][i].split('<a')[1].split('(').length - 1].split(')')[0];
799 }
800 text += '[*][coord]' + koord + '[/coord][|][player]' + villages1[i]['name'] + '[/player]';
801 for (var j = 0; j <= defence[i].length; j++) {
802 switch (j) {
803
804 case defence[i].length:
805
806 if (storage.getValue('deffscript' + welt + '_bogen', true) && storage.getValue('deffscript' + welt + '_paladin', true)) {
807
808 text += '[|]' + deffanzahl(defence[i][0], defence[i][1], defence[i][2], defence[i][3], defence[i][4], defence[i][5], defence[i][6], defence[i][7], defence[i][8], defence[i][9], defence[i][10], defence[i][11]);
809 } else if (storage.getValue('deffscript' + welt + '_bogen', true) && !storage.getValue('deffscript' + welt + '_paladin', true)) {
810 text += '[|]' + deffanzahl(defence[i][0], defence[i][1], defence[i][2], defence[i][3], defence[i][4], defence[i][5], defence[i][6], defence[i][7], defence[i][8], defence[i][9], 0, defence[i][10]);
811 } else if (!storage.getValue('deffscript' + welt + '_bogen', true) && storage.getValue('deffscript' + welt + '_paladin', true)) {
812 text += '[|]' + deffanzahl(defence[i][0], defence[i][1], defence[i][2], 0, defence[i][3], defence[i][4], 0, defence[i][5], defence[i][6], defence[i][7], defence[i][8], defence[i][9]);
813 } else {
814 text += '[|]' + deffanzahl(defence[i][0], defence[i][1], defence[i][2], 0, defence[i][3], defence[i][4], 0, defence[i][5], defence[i][6], defence[i][7], 0, defence[i][8]);
815 }
816
817 break;
818
819 default:
820 text += '[|]' + String(defence[i][j]);
821 break;
822 }
823 }
824 text += '[/*]';
825
826 }
827 text += '[/table]';
828
829 document.getElementById('exportbereich').style.display = '';
830 document.getElementById('Exportfeld').value = text;
831
832 }, false);
833
834 //Einzelne gedeffte Doerfer aufzaehlen
835 var newTable = createElement('table', {
836 class: 'vis',
837 style: 'min-width:950px',
838 id: 'einzeldoerfer'
839 });
840 var tables = document.getElementsByTagName('table');
841 var headerRow = document.getElementById('units_table').getElementsByTagName('tr')[0].cloneNode(true);
842 headerRow.id = 'headerRow';
843 newTable.appendChild(headerRow);
844 for (var i = 0; i < villages.length; i++) {
845 var newRow = document.createElement('tr');
846 var newCell = document.createElement('td');
847 var checkBox = createElement('input', {
848 type: 'checkbox',
849 id: villages[i],
850 });
851 checkBox.alt = villages1[i]['name'];
852 newCell.appendChild(checkBox);
853 newCell.innerHTML += "<a href=" + links[i] + ">" + villages[i] + "</a>";
854 newRow.appendChild(newCell);
855
856 //Truppen einer Einheit anzeigen
857 for (var j = 0; j <= defence[i].length; j++) {
858 switch (j) {
859 //Deffzahl
860 case defence[i].length:
861 var troopCell = document.createElement('td');
862 if (storage.getValue('deffscript' + welt + '_bogen', true) && storage.getValue('deffscript' + welt + '_paladin', true)) {
863 troopCell.innerHTML = deffanzahl(defence[i][0], defence[i][1], defence[i][2], defence[i][3], defence[i][4], defence[i][5], defence[i][6], defence[i][7], defence[i][8], defence[i][9], defence[i][10], defence[i][11]);
864 } else if (storage.getValue('deffscript' + welt + '_bogen', true) && !storage.getValue('deffscript' + welt + '_paladin', true)) {
865 troopCell.innerHTML = deffanzahl(defence[i][0], defence[i][1], defence[i][2], defence[i][3], defence[i][4], defence[i][5], defence[i][6], defence[i][7], defence[i][8], defence[i][9], 0, defence[i][10]);
866 } else if (!storage.getValue('deffscript' + welt + '_bogen', true) && storage.getValue('deffscript' + welt + '_paladin', true)) {
867 troopCell.innerHTML = deffanzahl(defence[i][0], defence[i][1], defence[i][2], 0, defence[i][3], defence[i][4], 0, defence[i][5], defence[i][6], defence[i][7], defence[i][8], defence[i][9]);
868 } else {
869 troopCell.innerHTML = deffanzahl(defence[i][0], defence[i][1], defence[i][2], 0, defence[i][3], defence[i][4], 0, defence[i][5], defence[i][6], defence[i][7], 0, defence[i][8]);
870 }
871 newRow.appendChild(troopCell);
872 break;
873 //Untertuetzung einer Einheit
874 default:
875 var troopCell = document.createElement('td');
876 if (defence[i][j] == 0)
877 troopCell.className = "hidden";
878 troopCell.innerHTML = defence[i][j];
879 newRow.appendChild(troopCell);
880 break;
881 }
882 }
883 newTable.appendChild(newRow);
884 }
885 //Beim Checken einer Checkbox, die passenden Doerfer und Unterstuetzungen auch checken
886 div.insertBefore(newTable, document.forms[document.forms.length - 2]);
887 var eventname = (navigator.userAgent.indexOf('Firefox') > 0) ? 'mouseup': 'click';
888 window.addEventListener(eventname, function(event) {
889 if (event.target.type == "checkbox") {
890 //Beim Checken einer Checkbox aus der Doerferliste
891 var rows = document.getElementsByTagName('tr');
892 for (var i = 1; i < rows.length - 1; i++) {
893 try {
894 if ((rows[i].getElementsByTagName("td")[rows[i].getElementsByTagName('td').length - 1].textContent != "Wojska") && trim(rows[i].getElementsByTagName('span')[0].textContent) == event.target.id || rows[i].getElementsByTagName('span')[0].innerHTML.split('value="')[1].split('"')[0] == event.target.value && event.target.name == 'indenstats') {
895 rows[i].getElementsByTagName("input")[0].checked = event.target.checked;
896 }
897 } catch(e) {}
898 }
899 //Beim Checken einer Checkbox aus der Spielertabelle
900 var boxes = document.getElementById('einzeldoerfer').getElementsByTagName('input');
901 if (event.target.name == 'indenstats') {
902 for (i = 0; i < boxes.length; i++) {
903 if (boxes[i].alt == event.target.value) {
904 boxes[i].checked = event.target.checked;
905 }
906 }
907 }
908 }
909 }, true);
910 }
911
912 summarize();
913 display();
914
915 //Hochkopierter Button, um Truppen zurueckzuziehen
916 document.getElementById('headerRow').removeChild(document.getElementById('headerRow').getElementsByTagName('th')[1]);
917 document.getElementById('headerRow').innerHTML = document.getElementById('headerRow').innerHTML.replace('Aktion', '<a href="/game.php?village=' + villageid + '&screen=settings">Deffs</a>'); (function() {
918 var button = document.getElementsByName("submit_units_back")[0];
919 var table = document.getElementById("units_table");
920 var newButton = createElement('input', {
921 type: 'submit',
922 value: 'Zurueckziehen'
923 });
924 table.childNodes[1].childNodes[1].childNodes[1].appendChild(newButton);
925 newButton.addEventListener("click", function() {
926 button.click();
927 }, false);
928 })();
929
930 break;
931 /*
932 *
933 * Uebersicht->Truppen->Verteidigung
934 *
935 */
936 case 'units&type=support_detail':
937
938 //Infos auslesen & Arrays erzeugen
939 var spieler = new Array();
940 var gesamt = new Array();
941 var spielernr = new Array();
942 spielernr[0] = new Array();
943 spielernr[1] = new Array();
944
945 //Liest die Unterstuetzungstruppen aus und schreibt Werte in die Arrays
946 function zusammenrechnen(i, row) {
947 //a oder b Zeile
948 var rownr = (row == 'row_a') ? 0: 1;
949 //Name des Unterstuetzenden Spielers
950 try {
951 if(navigator.userAgent.indexOf('Firefox') < 0){
952 var name = '<a href="' + table.getElementsByClassName(row)[i].getElementsByTagName('a')[2].href + '">' + table.getElementsByClassName(row)[i].getElementsByTagName('a')[2].innerHTML + '</a>';
953 var nameklartext = table.getElementsByClassName(row)[i].getElementsByTagName('a')[2].innerHTML;
954 }else{
955 var name = '<a href="' + table.getElementsByClassName(row)[i].getElementsByTagName('a')[1].href + '">' + table.getElementsByClassName(row)[i].getElementsByTagName('a')[1].innerHTML + '</a>';
956 var nameklartext = table.getElementsByClassName(row)[i].getElementsByTagName('a')[1].innerHTML;
957
958 }
959
960 } catch(e) {
961 name = '<a href="/game.php?screen=info_player&id=' + spielerid + '">' + spielername + '</a>';
962 nameklartext = spielername;
963 }
964 //Prueft ob und an welcher Stelle der Spieler im Array gespeichert ist bzw schreibt ihn rein
965 for (a = 0; a <= spieler.length; a++) {
966 switch (a) {
967 case spieler.length:
968 if (spielernr[rownr][i] == null) {
969 spieler[a] = new Array();
970 spieler[a][0] = name;
971 spielernr[rownr][i] = a;
972 }
973 break;
974
975 default:
976 if (spieler[a][0] == name && spielernr[rownr][i] == null) {
977 spielernr[rownr][i] = a;
978 }
979 break;
980
981 }
982
983 }
984 spieler[spielernr[rownr][i]][42] = nameklartext;
985 table.getElementsByClassName(row)[i].getElementsByTagName('input')[0].src = nameklartext;
986
987 //Truppen auslesen, in Spieler- und Gesamtarray speichern
988 var b = (bogen) ? 13: 11;
989 for (zelle = 2; zelle <= b; zelle++) {
990
991 try {
992 spieler[spielernr[rownr][i]][zelle] = (spieler[spielernr[rownr][i]][zelle] == null) ? Number(table.getElementsByClassName(row)[i].getElementsByTagName('td')[zelle - 1].innerHTML) : Number(spieler[spielernr[rownr][i]][zelle]) + Number(table.getElementsByClassName(row)[i].getElementsByTagName('td')[zelle - 1].innerHTML);
993 gesamt[zelle] = (gesamt[zelle] == null) ? Number(table.getElementsByClassName(row)[i].getElementsByTagName('td')[zelle - 1].innerHTML) : gesamt[zelle] + Number(table.getElementsByClassName(row)[i].getElementsByTagName('td')[zelle - 1].innerHTML);
994 } catch(e) {}
995
996 }
997
998 //Unterstuetzungszahl erhoehen
999 spieler[spielernr[rownr][i]][1] = (spieler[spielernr[rownr][i]][1] == null) ? 1: spieler[spielernr[rownr][i]][1] + 1;
1000 gesamt[1] = (gesamt[1] == null) ? 1: gesamt[1] + 1;
1001 }
1002
1003 //Funktion fuer a- und b-Zeilen ausfuehren
1004 for (i = 0; i < table.getElementsByClassName('row_a').length; i++) {
1005 zusammenrechnen(i, 'row_a');
1006 }
1007 for (i = 0; i < table.getElementsByClassName('row_b').length; i++) {
1008 zusammenrechnen(i, 'row_b');
1009 }
1010
1011 //Zaehlen, in wievielen Doerfern Unterstuetzungen stehen
1012 var gedefftedoerfer = 0;
1013 for (i = 0; i < document.getElementById('units_table').getElementsByClassName('row_a').length; i++) {
1014 if (document.getElementById('units_table').getElementsByClassName('row_a')[i].previousSibling.previousSibling.className == ' units_away') {
1015 gedefftedoerfer++;
1016 }
1017 }
1018 for (i = 0; i < document.getElementById('units_table').getElementsByClassName('row_b').length; i++) {
1019 if (document.getElementById('units_table').getElementsByClassName('row_b')[i].previousSibling.previousSibling.className == ' units_away') {
1020 gedefftedoerfer++;
1021 }
1022 }
1023
1024 //Tabelle erzeugen
1025 var div = document.getElementById("paged_view_content");
1026 var stat = createElement('table', {
1027 id: 'Statistik',
1028 style: 'width:100%'
1029 });
1030 var div2 = createElement('div', {
1031 style: 'width:100%;display:none',
1032 id: 'exportbereich',
1033 rows: '10'
1034 }, '<br><b>Tabelle in BB-Code (für Forum etc.):</b><br><textarea style="width:100%" id="Exportfeld" rows="10"></textarea>');
1035 //Behebt den Fehler, dass nichts angezeigt wird, wenn man in einer einzelnen Gruppe Doerfer filtert (leere Eintraege ausblendet)
1036 try {
1037 div.insertBefore(stat, document.forms[document.forms.length - 2]);
1038 div.insertBefore(div2, document.forms[document.forms.length - 2]);
1039 } catch(e) {
1040 div.insertBefore(stat, document.forms[document.forms.length - 1]);
1041 div.insertBefore(div2, document.forms[document.forms.length - 1]);
1042 }
1043 //Einheiten je nach Welttyp
1044 var units = new Array('spear', 'sword', 'axe', 'spy', 'light', 'heavy', 'ram', 'catapult', 'knight', 'snob');
1045 if (bogen)
1046 var units = new Array('spear', 'sword', 'axe', 'archer', 'spy', 'light', 'marcher', 'heavy', 'ram', 'catapult', 'knight', 'snob');
1047
1048 var thead = createElement('thead', {});
1049 var tr = createElement('tr', {});
1050 var th = createElement('th', {
1051 style: 'text-align:center',
1052 colspan: '2'
1053 }, 'Spieler [<a id="exportieren">Export</a>]');
1054 tr.appendChild(th);
1055 var th = createElement('th', {
1056 style: 'text-align:center'
1057 });
1058 var img = createElement('img', {
1059 src: image_base + '/command/support.png'
1060 });
1061 th.appendChild(img);
1062 tr.appendChild(th);
1063 var th = createElement('th', {
1064 style: 'text-align:center'
1065 });
1066 var a = createElement('a', {
1067 href: '/game.php?village=' + villageid + '&screen=settings'
1068 }, 'Deffs');
1069 th.appendChild(a);
1070 tr.appendChild(th);
1071 for (i = 0; i < units.length; i++) {
1072 units[i] = image_base + '/unit/unit_' + units[i] + '.png';
1073 }
1074 for (i = 0; i < units.length; i++) {
1075 var th = createElement('th', {
1076 style: 'text-align:center'
1077 });
1078 var img = createElement('img', {
1079 src: units[i]
1080 });
1081 th.appendChild(img);
1082 tr.appendChild(th);
1083 }
1084 thead.appendChild(tr);
1085
1086 document.getElementById('Statistik').appendChild(thead);
1087 //Statistiken ueber einzelne Spieler einfuegen
1088 for (i = 0; i < spieler.length; i++) {
1089 deffzahl = (bogen) ? deffanzahl(spieler[i][2], spieler[i][3], spieler[i][4], spieler[i][5], spieler[i][6], spieler[i][7], spieler[i][8], spieler[i][9], spieler[i][10], spieler[i][11], spieler[i][12], spieler[i][13]) : deffanzahl(spieler[i][2], spieler[i][3], spieler[i][4], 0, spieler[i][5], spieler[i][6], 0, spieler[i][7], spieler[i][8], spieler[i][9], spieler[i][10], spieler[i][11]);
1090 var tr = createElement('tr', {});
1091 var td = createElement('td', {
1092 style: 'text-align:center'
1093 }, '<input type="checkbox" name="indenstats" alt="' + spieler[i][42] + '">');
1094 tr.appendChild(td);
1095
1096 var td = createElement('td', {
1097 style: 'text-align:center'
1098 }, spieler[i][0])
1099 tr.appendChild(td);
1100 var td = createElement('td', {
1101 style: 'text-align:center'
1102 }, spieler[i][1])
1103 tr.appendChild(td);
1104 var td = createElement('td', {
1105 style: 'text-align:center'
1106 }, deffzahl)
1107 tr.appendChild(td);
1108 var b = (bogen) ? 13: 11;
1109 for (a = 2; a <= b; a++) {
1110
1111 var td = createElement('td', {
1112 style: 'text-align:center'
1113 }, spieler[i][a])
1114 tr.appendChild(td);
1115
1116 }
1117 document.getElementById('Statistik').appendChild(tr);
1118 }
1119
1120 //Gesamtwerte einfuegen
1121 var tr = createElement('tr', {});
1122 var th = createElement('th', {
1123 style: 'text-align:center',
1124 colspan: '2'
1125 }, '<strong>Gesamt (' + spieler.length + ')</strong>')
1126 tr.appendChild(th);
1127 var gedefftedoerfer = (navigator.userAgent.indexOf('Firefox') > 0) ? gedefftedoerfer + 1: gedefftedoerfer
1128 var th = createElement('th', {
1129 style: 'text-align:center'
1130 }, gesamt[1] + ' in ' + gedefftedoerfer + ' Dörfern')
1131 tr.appendChild(th);
1132 if (bogen) {
1133 var th = createElement('th', {
1134 style: 'text-align:center'
1135 }, deffanzahl(gesamt[2], gesamt[3], gesamt[4], gesamt[5], gesamt[6], gesamt[7], gesamt[8], gesamt[9], gesamt[10], gesamt[11], gesamt[12], gesamt[13]))
1136 tr.appendChild(th);
1137 } else {
1138 var th = createElement('th', {
1139 style: 'text-align:center'
1140 }, deffanzahl(gesamt[2], gesamt[3], gesamt[4], 0, gesamt[5], gesamt[6], 0, gesamt[7], gesamt[8], gesamt[9], gesamt[10], gesamt[11]))
1141 tr.appendChild(th);
1142 }
1143 var b = (bogen) ? 13: 11;
1144 for (a = 2; a <= b; a++) {
1145
1146 var th = createElement('th', {
1147 style: 'text-align:center'
1148 }, gesamt[a])
1149 tr.appendChild(th);
1150
1151 }
1152 document.getElementById('Statistik').appendChild(tr);
1153
1154 //Beim Klick auf den Export-"Button"
1155 document.getElementById('exportieren').addEventListener('click', function exporten() {
1156 //Tabellenkopf
1157 var text = '[table][**]Spieler[||]Verteidigung[||]Deffs[||][unit]spear[/unit][||][unit]sword[/unit][||][unit]axe[/unit][||]';
1158 if (bogen)
1159 text += '[unit]archer[/unit][||]';
1160 text += '[unit]spy[/unit][||][unit]light[/unit][||]';
1161 if (bogen)
1162 text += '[unit]marcher[/unit][||]';
1163 text += '[unit]heavy[/unit][||][unit]ram[/unit][||][unit]catapult[/unit][||]';
1164 if (paladin)
1165 text += '[unit]knight[/unit][||]';
1166 text += '[unit]snob[/unit][/**]';
1167 //Pro Spieler den Namen, die unterstuetzten Truppen, Deffzahlen etc einfuegen
1168 for (i = 0; i < spieler.length; i++) {
1169 deffzahl = (bogen) ? deffanzahl(spieler[i][2], spieler[i][3], spieler[i][4], spieler[i][5], spieler[i][6], spieler[i][7], spieler[i][8], spieler[i][9], spieler[i][10], spieler[i][11], spieler[i][12], spieler[i][13]) : deffanzahl(spieler[i][2], spieler[i][3], spieler[i][4], 0, spieler[i][5], spieler[i][6], 0, spieler[i][7], spieler[i][8], spieler[i][9], spieler[i][10], spieler[i][11]);
1170
1171 var text1 = '[*][player]' + spieler[i][0].split('>')[1].split('<')[0] + '[/player][|]' + spieler[i][1] + '[|]' + deffzahl;
1172 var b = (bogen) ? 13: 11;
1173 for (a = 2; a <= b; a++) {
1174
1175 text1 += '[|]' + spieler[i][a];
1176
1177 }
1178 text += text1 + '[/*]';
1179 }
1180 //Gesamtdeffzahl, Unterstuetzungen etc. einfuegen
1181 deffzahl = (bogen) ? deffanzahl(gesamt[2], gesamt[3], gesamt[4], gesamt[5], gesamt[6], gesamt[7], gesamt[8], gesamt[9], gesamt[10], gesamt[11], gesamt[12], gesamt[13]) : deffanzahl(gesamt[2], gesamt[3], gesamt[4], 0, gesamt[5], gesamt[6], 0, gesamt[7], gesamt[8], gesamt[9], gesamt[10], gesamt[11]);
1182 var text1 = '[**]Gesamt (' + spieler.length + ')[||]' + gesamt[1] + ' in ' + gedefftedoerfer + ' Doerfern[||]' + deffzahl;
1183 var b = (bogen) ? 13: 11;
1184 for (a = 2; a <= b; a++) {
1185
1186 text1 += '[||]' + gesamt[a];
1187
1188 }
1189
1190 text += text1 + '[/**][/table]';
1191 document.getElementById('exportbereich').style.display = '';
1192 document.getElementById('Exportfeld').value = text;
1193
1194 }, false);
1195
1196 //Beim Checken einer Checkbox die zugehoerigen Checkboxen in den anderen Bereichen auch anhaken
1197 var eventname = (navigator.userAgent.indexOf('Firefox') > 0) ? 'mouseup': 'click';
1198 window.addEventListener(eventname, function(event) {
1199 if (event.target.type == "checkbox") {
1200 var rows = document.getElementById('units_table').getElementsByTagName('tr');
1201 for (var i = 1; i < rows.length - 1; i++) {
1202 try {
1203 if (rows[i].getElementsByTagName('input')[0].src.split('/')[3] == event.target.alt && event.target.name == 'indenstats') {
1204 rows[i].getElementsByTagName('input')[0].checked = event.target.checked;
1205 }
1206 } catch(e) {}
1207 }
1208 }
1209 }, true);
1210
1211 break;
1212 /*
1213 *
1214 * Versammlungsplatz->Truppen
1215 *
1216 */
1217 case 'units':
1218 var table = document.getElementById('units_home');
1219 var bereiche = new Array();
1220 bereiche[0] = new Array();
1221 bereiche[1] = new Array();
1222 bereiche[2] = new Array();
1223 var villages = new Array();
1224
1225 //Deffzahlen auslesen
1226 function auslesen(a) {
1227 b = bereiche[a];
1228 if (bogen && paladin) {
1229 for (i = 1; i < 13; i++) {
1230 b[i] = Number(b[0][i].innerHTML);
1231 }
1232 return deffanzahl(b[1], b[2], b[3], b[4], b[5], b[6], b[7], b[8], b[9], b[10], b[11], b[12]);
1233 } else if (bogen && !paladin) {
1234 for (i = 1; i < 12; i++) {
1235 b[i] = Number(b[0][i].innerHTML);
1236 }
1237 return deffanzahl(b[1], b[2], b[3], b[4], b[5], b[6], b[7], b[8], b[9], b[10], 0, b[11]);
1238 } else if (!bogen && paladin) {
1239 for (i = 1; i < 11; i++) {
1240 b[i] = Number(b[0][i].innerHTML);
1241 }
1242 return deffanzahl(b[1], b[2], b[3], 0, b[4], b[5], 0, b[6], b[7], b[8], b[9], b[10]);
1243 } else if (!bogen && !paladin) {
1244 for (i = 1; i < 10; i++) {
1245 b[i] = Number(b[0][i].innerHTML);
1246 }
1247 return deffanzahl(b[1], b[2], b[3], 0, b[4], b[5], 0, b[6], b[7], b[8], 0, b[9]);
1248 }
1249
1250 }
1251
1252 //Um die Herkunftsdoerfer nach Entfernung zu sortieren
1253 function sortieren() {
1254 if (villages.length > 3) {
1255 villages.sort(function(a, b) {
1256 return (villages[2]['distance'] > villages[3]['distance']) ? a.distance - b.distance: b.distance - a.distance
1257 });
1258 for (i = 2; i < villages.length; i++) {
1259 table.getElementsByTagName('tr')[i].innerHTML = villages[i - 2]['code'];
1260 }
1261 }
1262 }
1263 //Nur, wenn das Dorf wirklich unterstuetzt wird
1264 if (table.getElementsByTagName('tr').length > 3) {
1265
1266 bereiche[0][0] = table.getElementsByTagName('tr')[1].getElementsByTagName('td');
1267 table.getElementsByTagName('tr')[1].getElementsByTagName('td')[0].innerHTML = 'Aus diesem Dorf (' + auslesen(0) + ' Deffs)';
1268 try {
1269 bereiche[1][0] = table.getElementsByTagName('tr')[table.getElementsByTagName('tr').length - 2].getElementsByTagName('th');
1270 table.getElementsByTagName('tr')[table.getElementsByTagName('tr').length - 2].getElementsByTagName('th')[0].innerHTML = '<input name="all" type="checkbox" class="selectAll" onclick="selectAll(this.form, this.checked)" /> Von außerhalb (' + auslesen(1) + ' Deffs)';
1271 } catch(e) {}
1272 bereiche[2][0] = table.getElementsByTagName('tr')[table.getElementsByTagName('tr').length - 1].getElementsByTagName('th');
1273 table.getElementsByTagName('tr')[table.getElementsByTagName('tr').length - 1].getElementsByTagName('th')[0].innerHTML = 'Insgesamt (' + auslesen(2) + ' Deffs)';
1274
1275 //Eigene Koordinaten fuer Entfernungsberechnung auslesen
1276 var ownx = document.getElementsByTagName('html')[0].innerHTML.split('"coord":"')[1].split('|')[0];
1277 var owny = document.getElementsByTagName('html')[0].innerHTML.split('"coord":"')[1].split('|')[1].split('"')[0];
1278
1279 //Fuer jede Zeile zusaetzliche Zellen einfuegen
1280 for (i = 0; i < table.getElementsByTagName('tr').length - 1; i++) {
1281 switch (i) {
1282 case 0:
1283 var th = createElement('th', {}, '<a>Entfernung</a>');
1284 th.addEventListener('click', sortieren, false);
1285 table.getElementsByTagName('tr')[0].insertBefore(th, table.getElementsByTagName('tr')[0].getElementsByTagName('th')[1]);
1286 break;
1287 case 1:
1288 var td = createElement('td', {
1289 style: 'text-align:center',
1290 class: 'unit-item hidden'
1291 }, '0');
1292 table.getElementsByTagName('tr')[1].insertBefore(td, table.getElementsByTagName('tr')[1].getElementsByTagName('td')[1]);
1293 break;
1294 default:
1295 try {
1296 table.getElementsByTagName('tr')[i].getElementsByTagName('td')[0].style = 'min-width:250px';
1297 var x = table.getElementsByTagName('tr')[i].getElementsByTagName('td')[0].innerHTML.split('(')[1].split('|')[0];
1298 var y = table.getElementsByTagName('tr')[i].getElementsByTagName('td')[0].innerHTML.split('|')[1].split(')')[0];
1299 var td = createElement('td', {
1300 style: 'text-align:center',
1301 class: 'unit-item hidden'
1302 }, village_distance(ownx, x, owny, y));
1303 table.getElementsByTagName('tr')[i].insertBefore(td, table.getElementsByTagName('tr')[i].getElementsByTagName('td')[1]);
1304 villages[i] = {};
1305 villages[i]['distance'] = village_distance(ownx, x, owny, y);
1306 villages[i]['code'] = table.getElementsByTagName('tr')[i].innerHTML;
1307 } catch(e) {}
1308 break;
1309 }
1310 }
1311 var th = document.createElement('th');
1312 table.getElementsByTagName('tr')[table.getElementsByTagName('tr').length - 1].insertBefore(th, table.getElementsByTagName('tr')[table.getElementsByTagName('tr').length - 1].getElementsByTagName('th')[1]);
1313 var th = document.createElement('th');
1314 table.getElementsByTagName('tr')[table.getElementsByTagName('tr').length - 2].insertBefore(th, table.getElementsByTagName('tr')[table.getElementsByTagName('tr').length - 2].getElementsByTagName('th')[1]);
1315 }
1316 break;
1317 /*
1318 *
1319 * Dorfansicht
1320 *
1321 */
1322 case 'overview':
1323
1324 //Truppen auslesen
1325 var bereich = document.getElementsByTagName('body')[0].innerHTML.split('<div id="show_units" class="vis moveable widget">')[1].split('<td><a href="')[0];
1326
1327 var sp = (bereich.indexOf('unit_spear.png?') < 0) ? 0: Number(bereich.split('unit_spear.png?')[1].split("</strong>")[0].split('<strong>')[1]);
1328 var sw = (bereich.indexOf('unit_sword.png?') < 0) ? 0: Number(bereich.split('unit_sword.png?')[1].split("</strong>")[0].split('<strong>')[1]);
1329 var ax = (bereich.indexOf('unit_axe.png?') < 0) ? 0: Number(bereich.split('unit_axe.png?')[1].split("</strong>")[0].split('<strong>')[1]);
1330 var bo = (bereich.indexOf('unit_archer.png?') < 0) ? 0: Number(bereich.split('unit_archer.png?')[1].split("</strong>")[0].split('<strong>')[1]);
1331 var spy = (bereich.indexOf('unit_spy.png?') < 0) ? 0: Number(bereich.split('unit_spy.png?')[1].split("</strong>")[0].split('<strong>')[1]);
1332 var lk = (bereich.indexOf('unit_light.png?') < 0) ? 0: Number(bereich.split('unit_light.png?')[1].split("</strong>")[0].split('<strong>')[1]);
1333 var bb = (bereich.indexOf('unit_marcher.png?') < 0) ? 0: Number(bereich.split('unit_marcher.png?')[1].split("</strong>")[0].split('<strong>')[1]);
1334 var sk = (bereich.indexOf('unit_heavy.png?') < 0) ? 0: Number(bereich.split('unit_heavy.png?')[1].split("</strong>")[0].split('<strong>')[1]);
1335 var ra = (bereich.indexOf('unit_ram.png?') < 0) ? 0: Number(bereich.split('unit_ram.png?')[1].split("</strong>")[0].split('<strong>')[1]);
1336 var ka = (bereich.indexOf('unit_catapult.png?') < 0) ? 0: Number(bereich.split('unit_catapult.png?')[1].split("</strong>")[0].split('<strong>')[1]);
1337 var pa = (bereich.indexOf('unit_knight.png?') < 0) ? 0: Number(bereich.split('unit_knight.png?')[1].split("</strong>")[0].split('<strong>')[1]);
1338 var ag = (bereich.indexOf('unit_snob.png?') < 0) ? 0: Number(bereich.split('unit_snob.png?')[1].split("</strong>")[0].split('<strong>')[1]);
1339 //Deffanzahl berechnen und einfuegen
1340 document.getElementById('show_units').getElementsByTagName('h4')[0].innerHTML = '<img style="float: right; cursor: pointer;" onclick="return VillageOverview.toggleWidget( \'show_units\', this );" src="graphic/minus.png" /> Einheiten (' + String(deffanzahl(sp, sw, ax, bo, spy, lk, bb, sk, ra, ka, pa, ag)) + ' Deffs)';
1341
1342 break;
1343
1344}