- // ==UserScript==
- // @name Kick-o-matic
- // @description Ускоряет процесс раздачи погон (Acelera el proceso de asignación de rangos en batallas)
- // @author Macabre2077 (script, RU)
- // @author tw81 (Italian translation)
- // @author pepe100 (Spanish translation)
- // @author Tanais (Dutch and English translations)
- // @author jccwest (Portuguese localisation)
- // @author Surge (Slovak localisation)
- // @author Darius II (Polish localisation)
- // @version 1.6.1
- // @include http://*.the-west.*/game.php*
- // @namespace http://forum.the-west.ru/showthread.php?t=18398
-
- // @history 1.6 2.03 version compatibility
- // @history 1.5 Polish translation
- // @history 1.44 Italian translation
- // @history 1.43 Multiple forts support
- // @history 1.40 The West 2.0 compatibility
- // @history 1.39 Disabling script before fixing bugs caused by 2.0
- // @history 1.38 Slovak translation
- // @history 1.37 Portuguese localisation
- // @history 1.36 1.36 version bugfix
- // @history 1.32 Translations: Spanish and Italian
- // @history 1.3 Translations: english, dutch!
- // @history 1.3 Bugfix: selected player stays highlighted
- // @history 1.2 old popup redesign,added compact version of popup, weapon accordance, intro
- // @history 1.18 bugfix
- // @history 1.15 fixed bug when one player`s data can`t be shown
- // @history 1.15 prevents too long loading
- // @history 1.1 new design
- // @history 1.1 force chat to show ranks
- // @history 1.1 bug fixes
- // @history 1.000 players` hp (without lists) and town name
- // @history 0.995 lists without {}
- // @history 0.995 update hp list button
- // @history 0.992 small bugfix
- // @history 0.99 players` hp
- // @history 0.98 player`s position is being highlihted when popup is shown
- // @history 0.97 ally`s name is shown
- // @history 0.96 new script`s name,added namespace
- // @history 0.95 new feature fully completed
- // @history 0.94 testing new feature - showing name of sector instead of numeric fort position
- // @history 0.93 fixed bug caused by empty fort weapon
- // @history 0.92 fixed mulitply battles error
- // ==/UserScript==
-
- /* Todo:
- Any good ideas?
- */
-
-
- function exec(fn) {
- var script = document.createElement('script');
- script.setAttribute("type", "application/javascript");
- script.textContent = '(' + fn + ')();';
- document.body.appendChild(script); // run the script
- document.body.removeChild(script); // clean up
- }
-
- exec(function() {
-
- Grander = {
- "scriptName": "Kick-o-Matic",
- "scriptId": "96262",
- "version": 1.6,
- "checkFileUrl": "http://macabre2077.koding.com/userscripts/the-west/kickomatic/getVersion.php",
- "scriptSite": "http://userscripts-mirror.org/scripts/show/96262",
- "loading": false,
- "fortsCapacity": [[50, 42], [100, 84], [140, 120]],
- "betaFortsCapacity": [[25, 21], [50, 42], [70, 60]],
- weapons: []
- };
- Grander.consoleError = function(error) {
- try {
- throw new Error(error);
- } catch (e) {
- console.log(e.stack);
- }
- };
- Grander.checkEnemies = function() {
- if (window.location.href.match("ru1") && [67, 634].indexOf(Chat.MyClient.allianceId) >= 0) {
- new UserMessage("verification failed", {type: "fail"}).show();
- window.Grander = undefined;
- }
- };
- Grander.intro = function() {
- // localStorage.setItem('KoM.version' , 0.998);
- // if (localStorage.getItem('KoM.version') >= Grander.version)
- // return;
- // localStorage.setItem('KoM.version', Grander.version);
- // var title = 'Kick-o-Matic, ' + Grander.lang.version + ' ' + Grander.version;
- // var text = Grander.lang.changelist + ':<br/><ul>';
- //// switch (Grander.getLocale()) {
- //// case "ru_RU":
- //// text += '<li>Совместимость с версией 2.03</li>';
- //// text += '<li><small>Так же может заинтересовать:</small> <a href="http://userscripts-mirror.org/scripts/show/154884" target="_blank">TW Gold Jobs Finder - поиск золотых и сереряных работ</a></li>';
- //// break;
- //// default:
- //// text += '<li>2.03 compatibility</li>';
- //// text += '<li>Check this out: <a href="http://userscripts-mirror.org/scripts/show/154884" target="_blank">TW Gold Jobs Finder</a></li>';
- //// break;
- //// }
- // text += '</ul>';
- // Grander.mb = new west.gui.Dialog(title).addButton("ОК").setId('GranderUpdated');
- // Grander.mb.setText(text).show();
- };
- Grander.init = function() {
- Grander.coords = {"attack": {0: 0, 1: 0, 2: 0, 34: 0, 35: 0, 36: 0, 68: 0, 69: 0, 70: 0, 102: 0, 103: 0, 104: 0, 136: 0, 137: 0, 138: 0, 170: 0, 171: 0, 172: 0, 204: 0, 205: 0, 206: 0, 238: 0, 239: 0, 240: 0, 272: 0, 273: 0, 274: 0, 306: 0, 307: 0, 308: 0, 340: 0, 341: 0, 342: 0, 374: 1, 375: 1, 376: 1, 408: 1, 409: 1, 410: 1, 442: 1, 443: 1, 444: 1, 476: 1, 477: 1, 478: 1, 510: 1, 511: 1, 512: 1, 544: 1, 545: 1, 546: 1, 578: 1, 579: 1, 580: 1, 612: 1, 613: 1, 614: 1, 646: 1, 647: 1, 648: 1, 680: 1, 681: 1, 682: 1, 714: 2, 748: 2, 782: 2, 715: 2, 749: 2, 783: 2, 716: 2, 750: 2, 784: 2, 717: 2, 751: 2, 785: 2, 718: 2, 752: 2, 786: 2, 719: 2, 753: 2, 787: 2, 720: 2, 754: 2, 788: 2, 721: 2, 755: 2, 789: 2, 722: 2, 756: 2, 790: 2, 723: 2, 757: 2, 791: 2, 724: 2, 758: 2, 792: 2, 725: 3, 759: 3, 793: 3, 726: 3, 760: 3, 794: 3, 727: 3, 761: 3, 795: 3, 728: 3, 762: 3, 796: 3, 729: 3, 763: 3, 797: 3, 730: 3, 764: 3, 798: 3, 731: 3, 765: 3, 799: 3, 732: 3, 766: 3, 800: 3, 733: 3, 767: 3, 801: 3, 734: 3, 768: 3, 802: 3, 735: 3, 769: 3, 803: 3, 736: 4, 770: 4, 804: 4, 737: 4, 771: 4, 805: 4, 738: 4, 772: 4, 806: 4, 739: 4, 773: 4, 807: 4, 740: 4, 774: 4, 808: 4, 741: 4, 775: 4, 809: 4, 742: 4, 776: 4, 810: 4, 743: 4, 777: 4, 811: 4, 744: 4, 778: 4, 812: 4, 745: 4, 779: 4, 813: 4, 746: 4, 747: 4, 780: 4, 781: 4, 814: 4, 815: 4, 405: 5, 406: 5, 407: 5, 439: 5, 440: 5, 441: 5, 473: 5, 474: 5, 475: 5, 507: 5, 508: 5, 509: 5, 541: 5, 542: 5, 543: 5, 575: 5, 576: 5, 577: 5, 609: 5, 610: 5, 611: 5, 643: 5, 644: 5, 645: 5, 677: 5, 678: 5, 679: 5, 711: 5, 712: 5, 713: 5, 31: 6, 32: 6, 33: 6, 65: 6, 66: 6, 67: 6, 99: 6, 100: 6, 101: 6, 133: 6, 134: 6, 135: 6, 167: 6, 168: 6, 169: 6, 201: 6, 202: 6, 203: 6, 235: 6, 236: 6, 237: 6, 269: 6, 270: 6, 271: 6, 303: 6, 304: 6, 305: 6, 337: 6, 338: 6, 339: 6, 371: 6, 372: 6, 373: 6}, 0: {178: 7, 179: 7, 180: 7, 212: 7, 213: 7, 214: 7, 246: 7, 247: 7, 248: 7, 193: 8, 194: 8, 195: 8, 227: 8, 228: 8, 229: 8, 261: 8, 262: 8, 263: 8, 450: 9, 451: 9, 452: 9, 484: 9, 485: 9, 486: 9, 518: 9, 519: 9, 520: 9, 465: 10, 466: 10, 467: 10, 499: 10, 500: 10, 501: 10, 533: 10, 534: 10, 535: 10, 291: 11, 292: 11, 293: 11, 325: 11, 326: 11, 327: 11, 393: 13, 394: 13, 395: 13, 427: 13, 428: 13, 429: 13, 318: 12, 319: 12, 352: 12, 353: 12, 386: 12, 387: 12, 215: 14, 216: 14, 217: 14, 218: 14, 219: 14, 220: 14, 221: 14, 222: 14, 223: 14, 224: 14, 225: 14, 226: 14, 487: 15, 488: 15, 489: 15, 490: 15, 491: 15, 494: 15, 495: 15, 496: 15, 497: 15, 498: 15, 281: 16, 315: 16, 349: 16, 383: 16, 417: 16, 296: 17, 330: 17, 364: 17, 398: 17, 432: 17, 492: 18, 493: 18, 287: 19, 288: 19, 289: 19, 290: 19, 321: 19, 322: 19, 323: 19, 324: 19, 355: 19, 356: 19, 357: 19, 358: 19, 389: 19, 390: 19, 391: 19, 392: 19}, 1: {143: 7, 144: 7, 145: 7, 177: 7, 178: 7, 179: 7, 211: 7, 212: 7, 213: 7, 160: 8, 161: 8, 162: 8, 194: 8, 195: 8, 196: 8, 228: 8, 229: 8, 230: 8, 483: 9, 484: 9, 485: 9, 517: 9, 518: 9, 519: 9, 551: 9, 552: 9, 553: 9, 500: 10, 501: 10, 502: 10, 534: 10, 535: 10, 536: 10, 568: 10, 569: 10, 570: 10, 326: 11, 327: 11, 328: 11, 360: 11, 361: 11, 362: 11, 385: 13, 386: 13, 387: 13, 419: 13, 420: 13, 421: 13, 250: 12, 251: 12, 284: 12, 285: 12, 318: 12, 319: 12, 180: 14, 181: 14, 182: 14, 183: 14, 184: 14, 185: 14, 186: 14, 187: 14, 188: 14, 189: 14, 190: 14, 191: 14, 192: 14, 193: 14, 520: 15, 521: 15, 522: 15, 523: 15, 524: 15, 525: 15, 528: 15, 529: 15, 530: 15, 531: 15, 532: 15, 533: 15, 246: 16, 280: 16, 314: 16, 348: 16, 382: 16, 416: 16, 450: 16, 263: 17, 297: 17, 331: 17, 365: 17, 399: 17, 433: 17, 467: 17, 526: 18, 527: 18, 287: 19, 288: 19, 289: 19, 290: 19, 321: 19, 322: 19, 323: 19, 324: 19, 355: 19, 356: 19, 357: 19, 358: 19, 389: 19, 390: 19, 391: 19, 392: 19}, 2: {108: 7, 109: 7, 110: 7, 142: 7, 143: 7, 144: 7, 176: 7, 177: 7, 178: 7, 127: 8, 128: 8, 129: 8, 161: 8, 162: 8, 163: 8, 195: 8, 196: 8, 197: 8, 516: 9, 517: 9, 518: 9, 550: 9, 551: 9, 552: 9, 584: 9, 585: 9, 586: 9, 535: 10, 536: 10, 537: 10, 569: 10, 570: 10, 571: 10, 603: 10, 604: 10, 605: 10, 258: 12, 259: 12, 292: 12, 293: 12, 326: 12, 327: 12, 395: 11, 396: 11, 429: 11, 430: 11, 463: 11, 464: 11, 384: 13, 385: 13, 386: 13, 418: 13, 419: 13, 420: 13, 145: 14, 146: 14, 147: 14, 148: 14, 149: 14, 150: 14, 151: 14, 152: 14, 153: 14, 154: 14, 155: 14, 156: 14, 157: 14, 158: 14, 159: 14, 160: 14, 553: 15, 554: 15, 555: 15, 556: 15, 557: 15, 558: 15, 559: 15, 562: 15, 563: 15, 564: 15, 565: 15, 566: 15, 567: 15, 568: 15, 211: 16, 245: 16, 279: 16, 313: 16, 347: 16, 381: 16, 415: 16, 449: 16, 483: 16, 230: 17, 264: 17, 298: 17, 332: 17, 366: 17, 400: 17, 434: 17, 468: 17, 502: 17, 560: 18, 561: 18, 287: 19, 288: 19, 289: 19, 290: 19, 321: 19, 322: 19, 323: 19, 324: 19, 355: 19, 356: 19, 357: 19, 358: 19, 389: 19, 390: 19, 391: 19, 392: 19}};
- Grander.langs = {
- "ru_RU": {
- "success": "Лычка дана!",
- "error": "Произошла ошибка",
- "cancel": "Отмена",
- "showPlayerOnMap": "Показать игрока на карте",
- "showTown": "Посмотреть город",
- "nodata": "Информация о званиях не загружена для данного форта!",
- "getData": "Пытаемся загрузить данные о званиях",
- "errorTimeout": "Загрузка происходит слишком долго",
- "ascpt": "Произвести в капитаны",
- "asprivate": "Назначить рядовым",
- "asrecruit": "Взять в рекруты",
- "asreservist": "Записать в резерв",
- "astraitor": "Обвинить в предательстве",
- "youcant": "<br/>Ты не можешь понизить старшего<br/> или равного по званию.",
- "position": "Позиция:",
- "pos_undefined": "не установлена",
- "noally": "Без альянса",
- "flag": "Флаг",
- "inside": "Внутри форта",
- "classes": {
- "soldier": "Солдат",
- "duelist": "Дуэлянт",
- "adventurer": "Авантюрист",
- "worker": "Трудяга",
- "greenhorn": "Чечако"
- },
- "ranks": {
- "traitor": "Предатель",
- "reservist": "Резервист",
- "recruit": "Рекрут",
- "private_": "Рядовой",
- "captain": "Капитан",
- "general": "Генерал"
- },
- "sectors": {
- "undefined": "Не назначена",
- 0: "Левый верхний сектор",
- 1: "Левый нижний сектор",
- 2: "Левый южный сектор",
- 3: "Центральный южный сектор",
- 4: "Правый южный сектор",
- 5: "Правый нижний сектор",
- 6: "Правый верхний сектор", /* attack */
- 7: "Башня авантов",
- 8: "Башня дуэлянтов",
- 9: "Башня солдат",
- 10: "Башня трудяг",
- 11: "Казарма",
- 12: "Склад",
- 13: "Штаб",
- 14: "Северная стена",
- 15: "Южная стена",
- 16: "Западная стена",
- 17: "Восточная стена",
- 18: "Ворота",
- 19: "Флаг",
- 20: "Внутри форта"
- },
- "damage": "урон",
- "version": "версия",
- "changelist": "Список изменений",
- // new in 1.40
- "update_available": "Доступна новая версия скрипта Kick-o-Matic",
- "update_question": "Вы можете скачать новую версию с сайта userscripts.org. Перейти?"
- },
- "nl_NL": {
- "success": "Rang wordt gegeven!",
- "error": "Er is een fout opgetreden",
- "cancel": "Annuleren",
- "showPlayerOnMap": "Laat speler zien op de map",
- "showTown": "Bekijk stad",
- "nodata": "Informatie over rangen is niet gegeven voor het fort!",
- "getData": "Ranginformatie aan het laden",
- "errorTimeout": "Het downloaden duurde te lang",
- "ascpt": "Tot kapitein bevorderen",
- "asprivate": "Tot soldaat benoemen",
- "asrecruit": "Tot rekruut benoemen",
- "asreservist": "Tot reservist benoemen",
- "astraitor": "Markeren als verrader",
- "youcant": "Je kan geen spelers met dezelfde of een hogere rang rekruteren.",
- "position": "Positie:",
- "pos_undefined": "Geen startpositie",
- "noally": "Geen alliantie",
- "flag": "Vlag",
- "inside": "Binnen het fort",
- "classes": {
- "soldier": "Soldaat",
- "duelist": "Duellant",
- "adventurer": "Avonturier",
- "worker": "Arbeider",
- "greenhorn": "Greenhorn"
- },
- "ranks": {
- "traitor": "Verrader",
- "reservist": "Reservist",
- "recruit": "Rekruut",
- "private_": "Soldaat",
- "captain": "Kapitein",
- "general": "Generaal"
- },
- "sectors": {
- "undefined": "Geen startpositie",
- 0: "De sector links boven",
- 1: "De centraal linker sector",
- 2: "De sector linksonder",
- 3: "De sector midden onder",
- 4: "De sector rechtsonder",
- 5: "De centraal rechter sector",
- 6: "De sector rechtsboven", /* attack */
- 7: "Avonturierstoren",
- 8: "Duellantentoren",
- 9: "Soldatentoren",
- 10: "Arbeiderstoren",
- 11: "Kazerne",
- 12: "Opslagplaats",
- 13: "Hoofdgebouw",
- 14: "Bovenmuur",
- 15: "Ondermuur",
- 16: "Linkermuur",
- 17: "Rechtermuur",
- 18: "Poort",
- 19: "Vlag",
- 20: "In het fort"
- },
- "damage": "schade",
- "version": "versie",
- "changelist": "Lijst van wijzigingen",
- // new in 1.40
- "update_available": "Kick-o-Matic update available",
- "update_question": "You can download the lastest version from userscripts.org. Visit the site?"
- },
- "en_US": {
- "success": "Rank is given!",
- "error": "An error has occured",
- "cancel": "Cancel",
- "showPlayerOnMap": "Show player on map",
- "showTown": "View town",
- "nodata": "Couldn't load rank information for the fort",
- "getData": "Loading rank information",
- "errorTimeout": "The loading took too much time",
- "ascpt": "Promote to captain",
- "asprivate": "Appoint as private",
- "asrecruit": "Appoint as recruit",
- "asreservist": "Appoint as reservist",
- "astraitor": "Mark as traitor",
- "youcant": "You can't demote fighters of the same or higher rank.",
- "position": "Position:",
- "pos_undefined": "No starting position",
- "noally": "No alliance",
- "flag": "Flag",
- "inside": "Inside the fort",
- "classes": {
- "soldier": "Soldier",
- "duelist": "Dueller",
- "adventurer": "Adventurer",
- "worker": "Worker",
- "greenhorn": "Greenhorn"
- },
- "ranks": {
- "traitor": "Traitor",
- "reservist": "Reservist",
- "recruit": "Recruit",
- "private_": "Soldier",
- "captain": "Captain",
- "general": "General"
- },
- "sectors": {
- "undefined": "No starting position",
- 0: "The upper-left sector",
- 1: "The lower-left sector",
- 2: "The central left sector",
- 3: "The lower central sector",
- 4: "The central right sector",
- 5: "The lower-right sector",
- 6: "The upper-right sector", /* attack */
- 7: "Adventurer's tower",
- 8: "Dueller's tower",
- 9: "Soldier's tower",
- 10: "Worker's tower",
- 11: "Barracks",
- 12: "Resource stock",
- 13: "Headquarters",
- 14: "North wall",
- 15: "South wall",
- 16: "West wall",
- 17: "East wall",
- 18: "Gate",
- 19: "Flag",
- 20: "Inside the fort"
- },
- "damage": "damage",
- "version": "version",
- "changelist": "Changelog",
- // new in 1.40
- "update_available": "Kick-o-Matic update available",
- "update_question": "You can download the lastest version from userscripts.org. Visit the site?"
- },
- "es_ES": {
- "success": "Rango asignado!",
- "error": "Un error ha ocurrido",
- "cancel": "Cancelar",
- "showPlayerOnMap": "Mostrar jugador en el mapa",
- "showTown": "Ver ciudad",
- "nodata": "No se puede cargar la información de rango para el fuerte",
- "getData": "Información del rango cargada",
- "errorTimeout": "La carga tomó demasiado tiempo",
- "ascpt": "Promocionar a capitán",
- "asprivate": "Designar como privado",
- "asrecruit": "Designar como recluta",
- "asreservist": "Designar como reservista",
- "astraitor": "Marcar como traidor",
- "youcant": "No se pueden disminuir los combatientes con igual o superior rango.",
- "position": "Posición:",
- "pos_undefined": "Sin posición de partida",
- "noally": "Sin alianza",
- "flag": "Bandera",
- "inside": "Dentro del fuerte",
- "classes": {
- "soldier": "Soldado",
- "duelist": "Duelista",
- "adventurer": "Aventurero",
- "worker": "Trabajador",
- "greenhorn": "Novato"
- },
- "ranks": {
- "traitor": "Traidor",
- "reservist": "Reservista",
- "recruit": "Recluta",
- "private_": "Soldado",
- "captain": "Capitán",
- "general": "General"
- },
- "sectors": {
- "undefined": "Sin posición de partida",
- 0: "El sector superior izquierdo",
- 1: "El sector central izquierdo",
- 2: "El sector inferior izquierdo",
- 3: "El sector central inferior",
- 4: "El sector inferior derecho",
- 5: "El sector central derecho",
- 6: "El sector superior derecho", /* ataque */
- 7: "Torre Aventureros",
- 8: "Torre Duelistas",
- 9: "Torre Soldados",
- 10: "Torre Trabajadores",
- 11: "Barracas",
- 12: "Almacén de recursos",
- 13: "Cuartel general",
- 14: "Muralla Norte",
- 15: "Muralla Sur",
- 16: "Muralla Oeste",
- 17: "Muralla Este",
- 18: "Puerta",
- 19: "Bandera",
- 20: "Dentro del fuerte"
- },
- "damage": "daño",
- "version": "versión",
- "changelist": "Historial de cambios",
- // new in 1.40
- "update_available": "Kick-o-Matic actualización disponible",
- "update_question": "Puede descargar la última versión desde gf.qytechs.cn. Visite la web?"
- },
- "it_IT": {
- "success": "Il rango è stato dato!",
- "error": "Si e\' verificato un errore",
- "cancel": "Annulla",
- "showPlayerOnMap": "Centra nella mappa",
- "showTown": "Visita città",
- "nodata": "Impossibile caricare le informazioni di rango per la fortezza",
- "getData": "Caricamento Informazioni rango",
- "errorTimeout": "Il caricamento ha richiesto troppo tempo",
- "ascpt": "Capitano",
- "asprivate": "Soldato Semplice",
- "asrecruit": "Recluta",
- "asreservist": "Riservista",
- "astraitor": "Traditore",
- "youcant": "Non è possibile il reclutamento di giocatori con rango uguale o superiore.",
- "position": "Posizione:",
- "pos_undefined": "Nessuna posizione di partenza",
- "noally": "Nessuna alleanza",
- "flag": "Bandiera",
- "inside": "All\'interno del forte",
- "classes": {
- "soldier": "Soldato",
- "duelist": "Duellante",
- "adventurer": "Avventuriero",
- "worker": "Lavoratore",
- "greenhorn": "Novizio"
- },
- "ranks": {
- "traitor": "Traditore",
- "reservist": "Riservista",
- "recruit": "Recluta",
- "private_": "Soldato semplice",
- "captain": "Capitano",
- "general": "Generale"
- },
- "sectors": {
- "undefined": "Nessuna posizione di partenza",
- 0: " -O1- Il settore superiore sinistro",
- 1: " -O2- Il settore centrale sinistro",
- 2: " -S1- Il settore in basso a sinistra",
- 3: " -S2- Il settore centrale",
- 4: " -S3- Il settore in basso a destra",
- 5: " -E2- Il settore centrale destro",
- 6: " -E1- Il settore superiore destro", /* attacco */
- 7: "Torre avventuriero",
- 8: "Torre duellante",
- 9: "Torre soldato",
- 10: "Torre lavoratore",
- 11: "Caserma",
- 12: "Magazzino",
- 13: "Quartier generale",
- 14: "Muro nord",
- 15: "Muro sud",
- 16: "Muro ovest",
- 17: "Muro est",
- 18: "Cancello",
- 19: "Bandiera",
- 20: "All\'interno del forte"
- },
- "damage": "Danno",
- "version": "Versione",
- "changelist": "Elenco delle modifiche",
- // new in 1.40
- "update_available": "Kick-o-Matic aggiornamento disponibile",
- "update_question": "E ‘possibile scaricare l'ultima versione dal userscripts.org Visitare il sito?"
- },
- "pt_PT": {
- "success": "Classificação é dada!",
- "error": "ocorreu um erro",
- "cancel": "cancelar",
- "showPlayerOnMap": "Mostra jogador no mapa",
- "showTown": "ver cidade",
- "nodata": "não é possível carregar as informações para a classificar o forte",
- "getData": "a carregar informações de classificação",
- "errorTimeout": "o carregamento demorou demasiado tempo",
- "ascpt": "Capitão",
- "asprivate": "Soldado Raso",
- "asrecruit": "Recruta",
- "asreservist": "Reservista",
- "astraitor": "Traidor",
- "youcant": "não é possível dar patente a jogadores com patente igual ou superior.",
- "position": "Posição:",
- "pos_undefined": "Nenhuma posição",
- "noally": "nome da Aliança",
- "flag": "Bandiera",
- "inside": "Dentro da forte",
- "classes": {
- "soldier": "Soldado",
- "duelist": "Pistoleiro",
- "adventurer": "Aventureiro",
- "worker": "Trabalhador",
- "greenhorn": "Novato"
- },
- "ranks": {
- "traitor": "Traidor",
- "reservist": "Reservista",
- "recruit": "Recruta",
- "private_": "Soldado Raso",
- "captain": "Capitão",
- "general": "General"
- },
- "sectors": {
- "undefined": "Não há posição de partida",
- 0: "sector superior esquerdo",
- 1: "sector centro esquerda",
- 2: "sector inferior esquerdo",
- 3: "sector inferior central",
- 4: "sector inferior direito",
- 5: "sector centro direita",
- 6: "sector superior direito", /* ataque */
- 7: "torre dos Aventureiros",
- 8: "torre dos Pistoleiros ",
- 9: "torre dos soldados",
- 10: "torre dos Trabalhadores",
- 11: "Quartel ",
- 12: "Armazém",
- 13: "Quartel Geral ",
- 14: "Muro norte",
- 15: "Muro sul",
- 16: "Muro esquerdo",
- 17: "Muro direito",
- 18: "Portão",
- 19: "Bandeira",
- 20: "Dentro do forte"
- },
- "damage": "Concluído",
- "version": "versão",
- "changelist": "Lista de mudanças",
- // new in 1.40
- "update_available": "Kick-o-Matic update available",
- "update_question": "You can download the lastest version from userscripts.org. Visit the site?"
- },
- "sk_SK": {
- "success": "Hodnosti boli udelené!",
- "error": "Vyskytol sa problém",
- "cancel": "Zavrieť",
- "showPlayerOnMap": "Ukázať hráča na mape",
- "showTown": "Ukázať mesto",
- "nodata": "Informácie pre pevnosť sa nedali načítať",
- "getData": "Načítavanie informácií",
- "errorTimeout": "Načítavanie trvalo príliš dlho",
- "ascpt": "Povýšiť na kapitána",
- "asprivate": "Vymenovať za slobodníka",
- "asrecruit": "Vymenovať za nováčika",
- "asreservist": "Vymenovať za záložnika",
- "astraitor": "Označiť ako zradcu",
- "youcant": "Nemôžeš degradovať bojovníkov s rovnakou alebo vyššou hodnosťou.",
- "position": "Pozícia:",
- "pos_undefined": "nemá zadanú pozíciu",
- "noally": "Bez aliancie",
- "flag": "Vlajka",
- "inside": "V pevnosti",
- "classes": {
- "soldier": "Vojak",
- "duelist": "Duelant",
- "adventurer": "Dobrodruh",
- "worker": "Pracovník",
- "greenhorn": "Zelenáč"
- },
- "ranks": {
- "traitor": "Zradca",
- "reservist": "Záložník",
- "recruit": "Nováčik",
- "private_": "Slobodník",
- "captain": "Kapitán",
- "general": "Generál"
- },
- "sectors": {
- "undefined": "nemá zadanú pozíciu",
- 0: "Horný ľavý sektor",
- 1: "Stredný ľavý sektor",
- 2: "Spodný ľavý sektor",
- 3: "Spodný stredný sektor",
- 4: "Spodný pravý sektor",
- 5: "Stredný pravý sektor",
- 6: "Horný pravý sektor", /* útok */
- 7: "Veža dobrodruhov",
- 8: "Veža duelantov",
- 9: "Veža vojakov",
- 10: "Veža pracovníkov",
- 11: "Kasárne",
- 12: "Sklad",
- 13: "Hlavná budova",
- 14: "Severná hradba",
- 15: "Južná hradba",
- 16: "Západná hradba",
- 17: "Východná hradba",
- 18: "Brána",
- 19: "Vlajka",
- 20: "V pevnosti"
- },
- "damage": "poškodenie",
- "version": "verzia",
- "changelist": "Zmeny",
- // new in 1.40
- "update_available": "Kick-o-Matic update available",
- "update_question": "You can download the lastest version from userscripts.org. Visit the site?"
- },
- "pl_PL": {
- "success": "Ranga została zmieniona!",
- "error": "Wystąpił błąd",
- "cancel": "Anuluj",
- "showPlayerOnMap": "Pokaż gracza na mapie",
- "showTown": "Pokaż miasto",
- "nodata": "Nie można załadować danych fortu",
- "getData": "Pobieranie danych o rangach",
- "errorTimeout": "Zbyt długie ładowanie danych",
- "ascpt": "Awansuj na kapitana",
- "asprivate": "Mianowanie na rezerwistę",
- "asrecruit": "Mianowanie na rekruta",
- "asreservist": "Mianowanie na rezerwistę",
- "astraitor": "Nadaj zdrejcę",
- "youcant": "Nie można zmienić ragi, posiadasz niższą lub taką samą rangę.",
- "position": "Pozycja:",
- "pos_undefined": "Źle ustawiony",
- "noally": "Bez sojuszu",
- "flag": "Flaga",
- "inside": "W forcie",
- "classes": {
- "soldier": "Żołnierz",
- "duelist": "Zawadiaka",
- "adventurer": "Poszukiwacz",
- "worker": "Budowniczy",
- "greenhorn": "Nowicjusz"
- },
- "ranks": {
- "traitor": "Zdrajca",
- "reservist": "Rezerwista",
- "recruit": "Rekrut",
- "private_": "Szeregowiec",
- "captain": "Kapitan",
- "general": "Generał"
- },
- "sectors": {
- "undefined": "Źle ustawiony",
- 0: "Lewy górny - 7",
- 1: "Lewy dolny - 6",
- 2: "Dolny lewy - 5",
- 3: "Dolny środkowy - 4",
- 4: "Dolny Prawy - 3",
- 5: "Prawy dolny - 2",
- 6: "Prawy górny - 1", /* atak */
- 7: "Baszta poszukiwaczy",
- 8: "Baszta zawadiaków",
- 9: "Baszta żołnierzy",
- 10: "Baszta budowniczych",
- 11: "Koszary",
- 12: "Magazyn",
- 13: "Budynek główny",
- 14: "Górny mur",
- 15: "Dolny mur",
- 16: "Lewy mur",
- 17: "Prawy mur",
- 18: "Brama",
- 19: "Flaga",
- 20: "W środku fortu"
- },
- "damage": "obrażenia",
- "version": "wersja",
- "changelist": "Zmiany",
- // new in 1.40
- "update_available": "Kick-o-Matic - dostępna aktualizacja",
- "update_question": "Można pobrać najnowszą wersje ze strony userscripts.org. Wejść na stronę?"
- }
- };
- Grander.is_beta = window.location.href.match(/beta/);
- if (Grander.is_beta) {
- Grander.fortsCapacity = Grander.betaFortsCapacity;
- }
-
- var lang = Grander.getLang();
- Grander.lang = Grander.langs[lang];
- Grander.sectors = Grander.langs[lang].sectors;
- // Названия алов
- Grander.allianceName = {};
- // ID фортов, в которых подсвечены клетки
- Grander.highlightedFortCells = {};
- // Размеры фортов
- Grander.fortSize = {};
- Grander.fortSizeLoading = {};
- // Координаты фортов
- Grander.fortCoordinates = {};
- Grander.fortCoordinatesLoading = {};
- // Где стоят игроки на форте (additionalinfo.idx)
- Grander.playersPosition = {};
- // Лычки игроков
- Grander.playerRank = {};
- // Более подробная информация об игроках, чем в чате
- Grander.playersData = {};
- Grander.playersDataLoading = {};
- // Список игроков, которым надо раздать лычки
- ChatWindow.Client.onClickOrigin = ChatWindow.Client.onClick;
- ChatWindow.Client.onClick = function(args, id) {
- if (args[0].target.className.indexOf('chat_servicegrade') !== 0) {
- ChatWindow.Client.onClickOrigin(args, id);
- }
- };
- // Grander.queue = {};
- };
- Grander.getLang = function() {
- return Grander.langs.hasOwnProperty(Grander.getLocale()) ? Game.locale : "en_US";
- };
- Grander.getLocale = function() {
- return Game.locale;
- };
- Grander.between = function(s, prefix, suffix) {
- var i = s.indexOf(prefix);
- if (i >= 0) {
- s = s.substring(i + prefix.length);
- } else {
- return '';
- }
- if (suffix) {
- i = s.indexOf(suffix);
- if (i >= 0) {
- s = s.substring(0, i);
- } else {
- return '';
- }
- }
- return s;
- };
- Grander.highlightFortCell = function(idx, fortId) {
- if (idx == null || idx == -1)
- return;
- var battlegroundEl = $('#fort_battle_' + fortId + '_battleground');
- var pos = $('.cell-' + idx).position();
- $('.battleground_marker', battlegroundEl).css(pos);
- Grander.highlightedFortCells[fortId] = true;
- };
- Grander.unhighlightFortCell = function(fortId) {
- var battlegroundEl = $('#fort_battle_' + fortId + '_battleground');
- var pos = {
- top: '',
- left: ''
- };
- $('.battleground_marker', battlegroundEl).css(pos);
- if (!Grander.highlightedFortCells[fortId])
- return;
- };
- Grander.isFortHighlighted = function(fortId) {
- return Grander.highlightedFortCells[fortId];
- };
- Grander.hidePopup = function() {
- Grander.mb.hide();
- for (var fortId in Grander.highlightedFortCells) {
- Grander.unhighlightFortCell(fortId);
- }
- };
- Grander.getAllianceName = function(id) {
- return Grander.allianceName.hasOwnProperty(id) ? Grander.allianceName[id] : null;
- };
- Grander.getAllianceId = function(name) {
- for (var id in Grander.allianceName) {
- if (Grander.allianceName[id] == name) {
- return id;
- }
- }
- return null;
- };
- Grander.obtainAllianceName = function(id) {
- Ajax.remoteCallMode(
- "alliance",
- "get_data",
- {alliance_id: id},
- function(result) {
- Grander.allianceName[id] = result.data.allianceName;
- }
- );
- };
- Grander.obtainAllianceId = function(name) {
- Grander.parseBbString(
- "[alliance]" + name + "[/alliance]",
- function(parsed) {
- var id = Grander.between(parsed, "open(", ")");
- Grander.allianceName[id] = name;
- }
- );
- };
- Grander.parseBbString = function(str, callback) {
- Ajax.remoteCall("settings", "get_parsed_text", {
- text: str
- }, function(resp) {
- callback.call(this, resp.parsed_text);
- });
- };
- Grander.pushChatSystemMessage = function(str) {
- Chat.pushSystemMessage(str);
- };
- Grander.updatePrivilege = function(fortId, westId, rank) {
- var list = {};
- list[westId] = rank;
- var data = {fort_id: fortId, privileges: list};
- Ajax.remoteCall('fort_battlepage', 'updatePrivileges', data, function(response) {
- if (response.hasOwnProperty("playerlist") && response.playerlist.length > 0) {
- new UserMessage(Grander.lang.success, {type: "success"}).show();
- }
- Grander.setPlayerRank(fortId, westId, rank);
- Grander.hidePopup();
- });
- };
- Grander.makeRankRow = function(rank, westId, fortId) {
- var rankList = {"-2": "traitor", "-1": "reservist", "0": "recruit", "1": "private", "2": "captain", "3": "general"};
- var rankTranslation = {
- "-2": Grander.lang.ranks.traitor,
- "-1": Grander.lang.ranks.reservist,
- "0": Grander.lang.ranks.recruit,
- "1": Grander.lang.ranks.private_,
- "2": Grander.lang.ranks.captain,
- "3": Grander.lang.ranks.general
- };
- var rankText = {
- "-2": Grander.lang.astraitor,
- "-1": Grander.lang.asreservist,
- "0": Grander.lang.asrecruit,
- "1": Grander.lang.asprivate,
- "2": Grander.lang.ascpt,
- "3": Grander.lang.ranks.general
- };
- function rankLink(image, fortId, westId, rank) {
- var a = $("<a/>");
- a.attr("onclick", "Grander.updatePrivilege(" + fortId + ", " + westId + ", " + rank + ");");
- a.append(image);
- a.append(rankText[rank] || rank);
- return a;
- }
- function rankImage(rank) {
- var img = $("<img/>");
- img.attr("src", '/images/chat/servicegrade_' + (rankList[rank] || rank) + '.png');
- img.attr("title", '<strong>' + (rankTranslation[rank] || rank) + '</strong>');
- return img;
- }
-
- return rankLink(rankImage(rank), fortId, westId, rank);
- };
- Grander.makeRankUpdateHtml = function(myRank, playerRank, westId, fortId) {
- var span = $("<span/>");
- var div = $("<div/>");
- function appendError(text) {
- var d = $("<div/>");
- // d.css("width", "200px");
- d.css("padding", "4px");
- d.css("text-align", "center");
- d.html(text);
- span.append(d);
- }
-
- if (myRank >= 2 && playerRank < myRank) {
- var fromRank = myRank == 3 ? 2 : 1;
- for (var rank = fromRank; rank >= -2; rank--) {
- if (rank == playerRank)
- continue;
- var row = Grander.makeRankRow(rank, westId, fortId);
- div.append(row);
- div.append($("<br/>"));
- }
- } else {
- appendError(Grander.lang.youcant)
- }
-
- span.append(div);
- return span;
- };
- Grander.getPlayerAdditionalInfo = function(westId) {
- return Grander.playersData.hasOwnProperty(westId) ? Grander.playersData[westId] : null;
- };
- Grander.getPlayerFortPosition = function(fortId, westId) {
- if (!Grander.playersPosition.hasOwnProperty(fortId))
- return;
- return Grander.playersPosition[fortId].hasOwnProperty(westId) ? Grander.playersPosition[fortId][westId] : null;
- };
- Grander.setPlayerFortPosition = function(fortId, westId, pos) {
- if (!Grander.playersPosition.hasOwnProperty(fortId)) {
- Grander.playersPosition[fortId] = {};
- }
- Grander.playersPosition[fortId][westId] = pos;
- };
- Grander.makeSmallTitle = function(playerName, westId, playerX, playerY) {
- var span = $("<span/>");
- span.attr("onclick", "PlayerProfileWindow.open(" + westId + ")");
- span.html(playerName);
- var a = $("<a/>");
- a.attr("onclick", "Map.center(" + playerX + ", " + playerY + ")");
- a.attr("title", Grander.lang.showPlayerOnMap);
- a.css("width", "15px");
- a.css("height", "15px");
- a.css("display", "inline-block");
- a.css("background", "url(/images/tw2gui/window/window2_title_divider.jpg) no-repeat");
- span.append(" ");
- span.append(a);
- return span;
- };
- Grander.getPlayerRank = function(fortId, westId) {
- if (!Grander.playerRank.hasOwnProperty(fortId) || !Grander.playerRank[fortId].hasOwnProperty(westId)) {
- return null;
- }
- return Grander.playerRank[fortId][westId];
- };
- Grander.getFortRanks = function(fortId) {
- return Grander.playerRank.hasOwnProperty(fortId) ? Grander.playerRank[fortId] : null;
- };
- Grander.setPlayerRank = function(fortId, westId, rank) {
- if (!Grander.playerRank.hasOwnProperty(fortId)) {
- Grander.playerRank[fortId] = {};
- }
- Grander.playerRank[fortId][westId] = rank;
- };
- Grander.smallPopUp = function(e) {
- try {
- Grander.checkEnemies();
- if (Grander.loading)
- return;
- Grander.loading = true;
- var x = e.clientX || 500;
- var y = e.clientY || 500;
- var westId = Grander.westId;
- var r, rooms = Chat.Resource.Manager.getRooms();
- for (r in rooms) {
- var room = Chat.Resource.Manager.getRoom(r);
- if (!(room instanceof Chat.Resource.RoomFortBattle) || room.id != Grander.fortRoom) {
- continue;
- }
-
- var fortId = room.fortId;
- var playerRank = Grander.getPlayerRank(fortId, westId);
- var myId = Chat.MyId.match(/[0-9]+/);
- var myRank = Grander.getPlayerRank(fortId, myId);
- var playerInfo = Grander.getPlayerAdditionalInfo(westId);
- var playerName = playerInfo.name;
- var playerX = playerInfo.coords.x;
- var playerY = playerInfo.coords.y;
- var title = Grander.makeSmallTitle(playerName, westId, playerX, playerY);
- Grander.mb = new west.gui.Dialog(title.outerHTML()).addButton(Grander.lang.cancel).setId('GranderPopUp').setModal(true, true);
- Grander.mb.setText(Grander.makeRankUpdateHtml(myRank, playerRank, westId, fortId)).setX(x).setY(y - 50).show();
- break;
- }
- Grander.loading = false;
- } catch (e) {
- Grander.loading = false;
- alert(Grander.lang.error + e);
- Grander.consoleError(e);
- }
- };
- Grander.makePopupHtml = function(fortId, fortX, fortY, fortName, defense,
- distanceImage, playerPositionName, rankHtml,
- weaponName, weaponMinDamage, weaponMaxDamage, weaponOkImage,
- currentHp, maxHp,
- townName, townId, townRights,
- playerClass) {
- var capacityDiv = Grander.makeCapacityDiv(fortId, defense);
- var fillPx = Math.floor(currentHp / maxHp * 194);
- return '\
- <div class="txcenter">\
- <div style="background:url(http://s18.postimage.org/xmndhv7vd/health_bar.png) right top; width: 210px;height:14px;display:inline-block;padding:2px;margin:0;font-size:8pt; text-align:left;">\
- <div style="background: url("images/character_bars/filler.png") repeat scroll 0% 0% transparent; width: ' + fillPx + 'px; height: 14px; padding: 0pt; margin: 0pt; position: absolute;" id="recruit_healthbar">\
- </div>\
- <div id="recruit_health" style="position:absolute; color:white;width: 194px;text-align:center">' + currentHp + '/' + maxHp + '</div>\
- </div>\
- <br>\
- <div>' + weaponName + ' ( ' + weaponMinDamage + ' - ' + weaponMaxDamage + ') \
- </div>\
- <span style = "font-size:16px; text-align: center;" > \
- <div style = "display:inline-block;" > <img src="http://westru.innogamescdn.com/images/class_choose/class_' + playerClass + '.png">\
- <a style = "display:inline;padding:0;" class = "profile_link_town_overview" title = "' + Grander.lang.showTown + '" href = "#" > ' + townName + ' </a>\
- </span>\
- <br > \
- </div>\
- <br > \
- <a href = "javascript:void(FortWindow.open(' + fortId + ', ' + fortX + ', ' + fortY + '))" > \
- ' + distanceImage.outerHTML() + ' ' + fortName + '\
- <p > \
- ' + capacityDiv + '\
- </p>\
- <p > </p>\
- </a>\
- <p > \
- <a href = "#" > ' + Grander.lang.position + ' ' + playerPositionName + ' </a>\
- </p>\
- <img src = "../images/fort/battle/divider.png" > \
- <br > ' + rankHtml.outerHTML() + ' <br > \
- </div>';
- };
- Grander.makeDistanceImage = function(fortX, fortY, playerX, playerY) {
- var diffX = fortX - playerX;
- var diffY = fortY - playerY;
- var image = $("<img/>");
- if (!diffX && !diffY) {
- image.attr("src", '/images/town/cityhall/green.png');
- } else if (Math.abs(diffX) <= 50 && Math.abs(diffY) <= 50) {
- image.attr("src", '/images/town/cityhall/yellow.png');
- } else {
- image.attr("src", '/images/town/cityhall/red.png');
- }
-
- return image;
- };
- Grander.popUp = function(e) {
- try {
- Grander.checkEnemies();
- if (Grander.loading)
- return;
- Grander.loading = true;
- var x = e.clientX || 500;
- var y = e.clientY || 500;
- var westId = Grander.westId;
- var r, rooms = Chat.Resource.Manager.getRooms();
- for (r in rooms) {
- var room = Chat.Resource.Manager.getRoom(r);
- if (!(room instanceof Chat.Resource.RoomFortBattle) || room.id != Grander.fortRoom) {
- continue;
- }
-
- var fortId = room.fortId;
- var fortName = room.title;
- var fortCoords = Grander.getFortCoordinates(fortId);
- var fortSize = Grander.getFortSize(fortId);
- var defense = (room.id.indexOf("def") != -1);
- var playerRank = Grander.getPlayerRank(fortId, westId);
- var myId = Chat.MyId.match(/[0-9]+/);
- var myRank = Grander.getPlayerRank(fortId, myId);
- var playerInfo = Grander.getPlayerAdditionalInfo(westId);
- var playerName = playerInfo.name;
- var playerLevel = playerInfo.level;
- var playerX = playerInfo.coords.x;
- var playerY = playerInfo.coords.y;
- var playerPos = Grander.getPlayerFortPosition(fortId, westId);
- var playerClass = playerInfo.class;
- var currentHp = playerInfo.currhealth;
- var maxHp = playerInfo.maxhealth;
- // TODO: where is player ally id?!
- var playerAllianceId = 1;
- if ($('.fortbattle-' + fortId).length) {
- Grander.highlightFortCell(playerPos, fortId);
- }
-
- var positionName;
- if (playerPos == null || playerPos == -1) {
- positionName = Grander.sectors["undefined"];
- } else if (defense) {
- positionName = Grander.sectors[Grander.coords[fortSize][playerPos]];
- if (playerPos == -1) {
- positionName = Grander.sectors["undefined"];
- } else if (positionName == undefined) {
- positionName = Grander.lang.inside;
- }
- } else {
- positionName = Grander.sectors[Grander.coords.attack[playerPos]];
- if (positionName == undefined) {
- positionName = Grander.lang.inside;
- }
- }
-
- var weaponMinDamage = playerInfo['weapon_damage']['min'];
- var weaponMaxDamage = playerInfo['weapon_damage']['max'];
- var weaponName = playerInfo['weapon'];
- // var weaponImage = Grander.getWeaponImage(weaponName);
- var weaponOkImage = Grander.checkWeapon(weaponMinDamage, weaponMaxDamage, playerClass == "soldier", playerLevel);
- var townId = playerInfo['town_id'];
- var townRights;
- var town = playerInfo['townname'];
- switch (playerInfo['town_rights']) {
- case 1:
- townRights = "norights";
- break;
- case 2:
- townRights = "councillor";
- break;
- case 3:
- townRights = "founder";
- break;
- default:
- townRights = "norights";
- break;
- }
-
- var distanceImage = Grander.makeDistanceImage(fortCoords.x, fortCoords.y, playerX, playerY);
- var rankHtml = Grander.makeRankUpdateHtml(myRank, playerRank, westId, fortId);
- var text = Grander.makePopupHtml(fortId, fortCoords.x, fortCoords.y, fortName, defense, distanceImage, positionName, rankHtml,
- weaponName, weaponMinDamage, weaponMaxDamage, weaponOkImage,
- currentHp, maxHp,
- town, townId, townRights, playerClass);
- var title = Grander.makeSmallTitle(playerName, westId, playerX, playerY);
- Grander.mb = new west.gui.Dialog(title.outerHTML(), text).addButton(Grander.lang.cancel).setId('GranderPopUp').setModal(true, true).setX(x).setY(y - 50);
- Grander.mb.modalframe.mousedown(function() {
- Grander.hidePopup();
- });
- Grander.mb.show();
- $("#GranderPopUp").css("min-width", "0");
- $("#GranderPopUp .messagedialog_content").css("padding-bottom", "5px");
- break;
- }
-
- Grander.loading = false;
- } catch (e) {
- console.log(e.stack);
- Grander.loading = false;
- alert(Grander.lang.cancel + e);
- }
- };
- Grander.getWeapons = function() {
- if (Grander.weapons.length > 0)
- return;
- var itemId = 100,
- result = {};
- while (result != null) {
- result = ItemManager.get(itemId++);
- Grander.weapons.push(result);
- }
- };
- Grander.getWeaponImage = function(weaponName) {
- Grander.getWeapons();
- for (var itemId in Grander.weapons) {
- var w = Grander.weapons[itemId];
- if (weaponName == w.name) {
- return w.image;
- }
- }
- };
- Grander.getFortSize = function(fortId) {
- return Grander.fortSize.hasOwnProperty(fortId) ? Grander.fortSize[fortId] : null;
- };
- Grander.obtainFortSize = function(x, y) {
- if (Grander.fortSizeLoading.hasOwnProperty(x + "" + y) && Grander.fortSizeLoading[x + "" + y] == true)
- return;
- Grander.fortSizeLoading[x + "" + y] = true;
- if (x == undefined || y == undefined) {
- console.log("x or y is undefined");
- return;
- }
-
- Ajax.remoteCallMode("fort", "display", {x: x, y: y}, function(data) {
- Grander.fortSize[data.data.fortid] = data.data.type;
- Grander.fortSizeLoading[x + "" + y] = false;
- });
- };
- Grander.getFortCoordinates = function(fortId) {
- return Grander.fortCoordinates.hasOwnProperty(fortId) ? Grander.fortCoordinates[fortId] : null;
- };
- Grander.obtainFortCoordinates = function(fortId) {
- if (Grander.fortCoordinatesLoading.hasOwnProperty(fortId) && Grander.fortCoordinatesLoading[fortId] == true)
- return;
- Grander.fortCoordinatesLoading[fortId] = true;
- // console.log("fortId: " + fortId);
-
- Ajax.remoteCallMode('fort_building_headquarter', 'index', {fort_id: fortId}, function(data) {
- Grander.fortCoordinates[fortId] = {
- "x": data.x,
- "y": data.y
- };
- Grander.fortCoordinatesLoading[fortId] = false;
- });
- };
- Grander.getPlayersData = function() {
- return Grander.playersData;
- };
- Grander.obtainPlayersData = function(fortId) {
- if (Grander.playersDataLoading.hasOwnProperty(fortId) && Grander.playersDataLoading[fortId] == true)
- return;
- Grander.playersDataLoading[fortId] = true;
- Ajax.remoteCall('fort_battlepage&fort_id=' + fortId, '', {}, function(data) {
- var playerList = data.playerlist;
- for (i in playerList) {
- Grander.playersData[playerList[i].player_id] = playerList[i];
- Grander.setPlayerRank(fortId, playerList[i].player_id, playerList[i].privilege);
- Grander.setPlayerFortPosition(fortId, playerList[i].player_id, playerList[i].idx);
- }
- Grander.playersDataLoading[fortId] = false;
- });
- };
- Grander.interval = function() {
- Grander.bindClickFunctions();
- try {
- var r,
- room,
- rooms = Chat.Resource.Manager.getRooms();
- for (r in rooms) {
- room = Chat.Resource.Manager.getRoom(r);
- if (!room.hasOwnProperty("room") || room.room != "fortbattle") {
- continue;
- }
-
- var fortId = room.fortId;
- if (Grander.getFortSize(fortId) == null) {
- if (Grander.getFortCoordinates(fortId) == null) {
- Grander.obtainFortCoordinates(fortId);
- } else {
- var coords = Grander.getFortCoordinates(fortId);
- Grander.obtainFortSize(coords.x, coords.y);
- }
- }
- }
- } catch (e) {
- console.log(e.stack);
- }
- };
- Grander.dataInterval = function() {
- var r,
- room,
- rooms = Chat.Resource.Manager.getRooms();
- for (r in rooms) {
- room = Chat.Resource.Manager.getRoom(r);
- if (!room.hasOwnProperty("room") || room.room != "fortbattle") {
- continue;
- }
-
- var fortId = room.fortId;
- Grander.obtainPlayersData(fortId);
- }
- };
- Grander.bindClickFunctions = function() {
- var fContacts = function(e) {
- Grander.westId = $(this).parent().attr('class').match(/[0-9]+/);
- var lastElement = $(this);
- for (var i = 0; i < 10; i++) {
- lastElement = lastElement.parent();
- }
- var room = lastElement.attr('class').match(/(room_fortbattle_(att|def)_[0-9]+)/);
- Grander.fortRoom = room[1];
- if (e.ctrlKey) {
- Grander.smallPopUp(e);
- } else {
- Grander.popUp(e);
- }
- };
- var fMessages = function(e) {
- Grander.westId = $(this).parent().attr("class").match(/[0-9]+/);
- var lastElement = $(this);
- for (var i = 0; i < 12; i++) {
- lastElement = lastElement.parent();
- }
- var room = lastElement.attr('class').match(/(room_fortbattle_(att|def)_[0-9]+)/);
- Grander.fortRoom = room[1];
- if (e.ctrlKey) {
- Grander.smallPopUp(e);
- } else {
- Grander.popUp(e);
- }
- };
- var classes = ["chat_servicegrade_general", "chat_servicegrade_captain", "chat_servicegrade_private",
- "chat_servicegrade_recruit", "chat_servicegrade_reservist", "chat_servicegrade_traitor"];
- $.each(classes, function(k, v) {
- $(".chat_contacts ." + v).unbind('click');
- $(".chat_contacts ." + v).bind('click', fContacts);
- $(".chat_messages ." + v).unbind('click');
- $(".chat_messages ." + v).bind('click', fMessages);
- });
- };
- Grander.findWeapon = function(min, max, level) {
- var result = -1;
- for (var i in Grander.weapons) {
- if (Grander.weapons[i]["min"] == min && Grander.weapons[i]["max"] == max && Grander.weapons[i]["level"] <= level) {
- result = i;
- break;
- }
- }
- return result;
- };
- Grander.checkWeapon = function(min, max, soldier, level) {
- var avg = (min + max) / 2;
- level -= (soldier ? 3 : 0);
- Grander.getWeapons();
- for (var itemId in Grander.weapons) {
- var w = Grander.weapons[itemId];
- if (w.level <= level && w.traderlevel <= 15) {
- var weaponDamage = (w.damage.damage_max + w.damage.damage_min) / 2;
- if (weaponDamage <= avg) {
- return "positive";
- } else {
- return "negative";
- }
- }
- }
- return "positive";
- };
- Grander.checkUpdate = function() {
- var url = Grander.checkFileUrl;
- url += "?name=" + Character.name;
- url += "&world=" + location.href;
- url += "&callback=?";
- $.getScript(url);
- };
- Grander.compareVersions = function(actualVersion) {
- if (parseFloat(Grander.version) >= parseFloat(actualVersion))
- return;
- try {
- new west.gui.Dialog(Grander.lang.update_available, "", west.gui.Dialog.SYS_WARNING)
- .setText(Grander.lang.update_question)
- .addButton("OK", function() {
- window.open(Grander.scriptSite, '_blank');
- })
- .addButton("cancel")
- .show();
- } catch (e) {
- window.open(Grander.SCRIPT_SITE, '_blank');
- }
- };
- Grander.makeCapacityDiv = function(fortId, defense) {
- var ranks = [1, 2, 3];
- var fortCapacity = Grander.fortsCapacity[Grander.fortSize[fortId]][(defense ? 1 : 0)];
- var count = Grander.countPlayersWithRanks(fortId, ranks);
- var color;
- if (count < fortCapacity) {
- color = "green";
- } else if (count == fortCapacity) {
- color = "yellow";
- } else {
- color = "red";
- }
- return '<span>\
- <span style="color:' + color + ';" id="fortCapacity' + fortId + '">' + count + '/' + fortCapacity + '</span>\
- <p></p>\
- </span>';
- };
- Grander.countPlayersWithRanks = function(fortId, ranks) {
- function isArray(a) {
- return (typeof a == "object") && (a instanceof Array);
- }
- if (!(isArray(ranks))) {
- ranks = [ranks];
- }
-
- var result = 0;
- var fortRanks = Grander.getFortRanks(fortId);
- if (ranks == null) {
- return 0;
- }
- for (var westId in fortRanks) {
- if (ranks.indexOf(fortRanks[westId]) != -1) {
- result++;
- }
- }
- return result;
- };
- Grander.thatWouldntHappendIfZetWasStillWorkingOnTheWest = function() {
- Chat.Resource.RoomFactory = function(data) {
- var room = null;
- if (data instanceof Chat.Resource.Client) {
- room = new Chat.Resource.RoomClient(data);
- } else {
- switch (data.room) {
- case "town":
- room = new Chat.Resource.RoomTown(data.townid, data.x, data.y);
- break;
- case "general":
- room = new Chat.Resource.RoomGeneral(data.general_id);
- break;
- case "maneuver":
- room = new Chat.Resource.RoomManeuver(data.fortid, data.xy);
- break;
- case "fortbattle":
- room = new Chat.Resource.RoomFortBattle(data.fortid);
- break;
- default:
- room = new Chat.Resource.Room();
- }
- }
- room.init();
- return room;
- };
- };
- $.fn.outerHTML = function() {
- return $('<div />').append(this.eq(0).clone()).html();
- };
- // Grander.checkUpdate();
- Grander.init();
- Grander.intro();
- Grander.interval();
- Grander.dataInterval();
- Grander.thatWouldntHappendIfZetWasStillWorkingOnTheWest();
- setInterval(Grander.interval, 1000);
- setInterval(Grander.dataInterval, 10000);
- });