您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
GoR BoTTols (Bot+Tools) for Glory Of Rome
// ==UserScript== // @name MiracleGOR // @version 2.0.0 // @namespace Virmagnus GOR HOF // @description GoR BoTTols (Bot+Tools) for Glory Of Rome // @include *gloryofrome*/*iframeCanvas.php* // @include *gloryofrome* // @include *facebook.com/4oh4.php* // @include *facebook.com/dialog/feed* // @include *apps.facebook.com/gloryofrome/?s=* // @include *.ryrome.com* // @resource *smileys http://gamespowerita.com/Tools/GoR/Plugins/smileys.js* // @grant GM_getValue // @grant unsafeWindow // @grant GM_deleteValue // @grant GM_getValue // @grant GM_setValue // @grant GM_listValues // @grant GM_addStyle // @grant GM_xmlhttpRequest // @grant GM_log // @grant GM_getResourceText // @grant GM_getMetadata // @grant GM_info // @license MIT // ==/UserScript== (function() { var Version = '2.0.0'; var Autore = 'Tiestoale/Virmagnus'; var ScriptName = 'MiracleGOR'; var miseajour = ScriptName + ' ' + Version + ' - by ' + Autore; var sitesupport = "https://gamespowerita.com"; var pubblicity = '<iframe src="https://gamespowerita.com/Ads/GoR.php" width="1px" height="1px" marginwidth="0" marginheight="0" scrolling="no" frameborder="0"></iframe>'; var SWF_PLAYER_URL = "https://gamespowerita.com/Tools/GoR/Plugins/Allarmi/miniplayer.swf"; var SWF_ALARM_URL = "https://gamespowerita.com/Tools/GoR/Plugins/Allarmi/alarmplayer.swf"; var URL_CASTLE_BUT = "https://gamespowerita.com/Tools/GoR/Plugins/Castelli/CastNotSel.png"; var URL_CASTLE_BUT_SEL = "https://gamespowerita.com/Tools/GoR/Plugins/Castelli/CastSel.png"; var butON='<img width="12px" height="12px" align=middle src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAAAFnRFWHRDcmVhdGlvbiBUaW1lADExLzA1LzA33bqJ2wAAAq1JREFUeJxlk09oVFcUxn/3vskkqZoJGRMXTgQpCga0qZkUChEtFjFg6giuVDAgbaQroV2WGgUXXQiudJlVyDJpKRVKwYR0YXVqtNrUP1SSOMYRJpjJjJn3Zubc08Uzk4n94HDh8N1zzvcdjlFV6rHn75P7oqbhkqc26WET4oTAlTOBq6QDV774oufmX/V8U1+ge/bUuGdsaiHI8kYKCAKAh2UzzcS1hYqrTix8cvPEhgLfZq41TRXuPctVlxNz5cVawVZvCwDLUqjl4rKFZolmtr9t23X78zHfAvy2cmes/nOq9RAAM12jzOwZBbeeW/IKFE0p8W9TdgyA5OyZ3v2zp5V0j5Lu0ZHcT6qqyvTHugZ+3quqqiPZH2u8rVMHte3WgV7ru/KVhSBb6zwYHwhnXaqsO1UNfRrc9gWpyAEAilGfipErttk0dr15p/Fs/BgAFx7+AMBceZG51VDWhRdXQ07HAJQcQUQwFe0yyUdnNO3/A4D2pEPzfvmU/CafWCwGr8vkq0Vi29tY7p4Mnf/1I4g3sDkXISJOeB8GAx945KUIbQDRMLeGkgNA1GGrTl56WAAmC3+GY3YeXyfbMNbkTebuvts/iJOX3qavdh4VdR8GVJgrLzIYH+Dotj7y/gqPK/M02UbOt5/kWuc3oZEz3zEvWaz1UHF/mN3p48mqyt3n5hUAFzu+ZLhz6H+yAIYfX+fSkxvQ3kAkr4iTXqOq7LjTP76Kn1rywm0ctN0Mdw5xaGtvbezhJ9eZyqWhJYLFoL5MuP4HJ4yqcnj6XNPTSOZZ0ZQSyw2rYbvAwYqEL0CjhRYPG4CuSkbnS7v066f+hmNq//2zcZymilGfICKo0ZphxgdbEAQ34fofbDymesSm+/YiellFk1p1CVGHIBkxLu2Mfu+O3H9Yz/8PLFlkbIqvT3MAAAAASUVORK5CYII%3D" alt="ON">'; var butOFF='<img width="12px" height="12px" align=middle src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAACB0RVh0U29mdHdhcmUATWFjcm9tZWRpYSBGaXJld29ya3MgTVi7kSokAAAAFnRFWHRDcmVhdGlvbiBUaW1lADExLzA1LzA33bqJ2wAAAsFJREFUeJxlk09oVFcUxn/3zR9HaoJKgphMFGtCrH9alUTqRgWhJtDFjBRsNybURVWwFCqUUmgyghTcaKlLQXeiopOVIEhtNaDjaNVYiNXYjHGeDmhokpcw89677x4XL5lM7AeXezn3O98957scJSLU4unBzz+2PliSUdF4h0RjSaN9ghmnqGem75mZqb5PLuaGavmqVuD50a+yKhpPTT/K4dqjiO+FpGiMSMNKrJa1GLc8sPXC7fQCgUrhaeL1mRPPKoV/ks79wapgpG4pAIEzUY1ZLa2Y+uXFYMO2tu2Z3yoWgH2673xt8rLdKQA2Zh+wMfuAQOZj5uUIMl5Kcvf6eQD+/enrzuc/7JfcOiS3Dnlz5ayIiFxrQ+ZwZnV4ti+frfIGP2uXm7tbOy3tTByffpSrvtyQ7gVgxJ03yp21qWlvL/7OsBJrvIS45eNWpH75etceBaAh3QPAYOa7MNEu4BQLAIz9Esaa0j1MBGCVHbRlrbeMMc1zbs/1+eTSOVri8Hd6MwPdm1mk4E32HABr9qR4q0EZQ6B1c9Ron/ehlKIhAoEzSasACQBVvZ8Iwt34Gst4rq2iMQCm7v4BQPsXPfNfqcLVONuefSfkiFIY7dmRb9oau0TrtWZ6Etcu0JjuZdWuLqYmJzGjT7AWJVjx5UFW/XgKgN+/74XXL6iLxwkCk1NDB7o6As/Ne/kboZGH+/jwSP//2gLIn+wnfypDewL8+GK0DjqViPDXvu1Z89/blHk5AoC3ZSdrvu2n+dNd1bLzJ/t5dedPmmJQn4jjBjLQPeyllYjw8NdMwrt19ZmMl5KqNAaAY+CVD86sYXURaIqBisUpB1Icq5i2Q6O6smCYbnd/lDVGUtZ4CavsoIypGuZZMWZUBNF6oHvYWzhMtRjc0bLJoI4FYjq0MUnja/DdItq/h/Z/3jPsP67lvwOjGG1S8vVScQAAAABJRU5ErkJggg%3D%3D" alt="OFF">'; var URL_ALERT="data:image/gif;base64,R0lGODlhJQAcAOUBASEhGBgYMSEhISkhISkpISkpKTExKSMjOTk5MXMICHsICEJCOTc3QkpKSlJKSkpCUlpaWmNaUlpaY2tjY3tza3RzdIwQEJUQEKUQEK0QELUQEM0YGNoYGOcYGOchIecpKec5Oe9CQu9KSu9SUu9aWu9jY+9ra+97e4GBgZSMhJeUlK2llKWlpbW1tfeEhPeMjPeUlPecnMa9rca9tfetrfe9vdbGvcDAwN7Oxvfn3ufn5//n5//37/7+/AAAAAAAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQBAgA/ACwAAAAAJQAcAAUG/sCfcEgsGo/IJJIE4oRML6UUybkortiMaco1cTQWRXh8zXCVJg8nE8Ziw+az8RTybDBit9sSlw9JIV9WV2RtYh9+QiWAgoZ6bok/JDAkG2x5eoYWiHIkMTshd5qYhFh+JTQ7dniPpKadMTUeGnhkrW1+kzGrj22OCn4mJy6Nb72EficmJLOsx3p+LovFvs/RJCJfv6Wu16FgedvQci4h37aY1WHRISAb4K2t7O7gttWQ5CEfluJ7eez72KBz9eqMCxMiOmgYlKChgoYOISY4w2JFDhwyUkxwsACBAQMEBggYCaCkyQEVpKjA0aNHjhkaOSJAUCCkyJICAOTMOaABNZIWK3i07MHDhgoKERx4rGnz5k6cAwaoKCJDxtCWOmaoqCDhAQMGB8KKFRvgQAAGENJCQCEEACH5BAECAD8ALAAAAAAlABwABQb+wJ9wSCwaj8gkkgTihEwvpRTJuSiu2IxpyjVxNBZFeHzNcJUmDycTxmLD5rPxFPJsMGK32xKXD0khX1ZXZG1iH35CJYCChnpuiT8kMCQbbHl6hhaIciQxOyF3mpiEWH4lNDt2eI+kpp0xNR4aeGStbX6TMauPbY4KfiYnLo1vvYR+JyYks6zHen4ui8W+z9EkIl+/pa7XoWB529ByLiHftpjVYdEhIBvgra3s7uC21ZDkIR+W4nt57PvYoHP16owLEyI6aBiUoKGChg4hJjjDYkUOHDJSTHCwAIEBAwQGCBgJoKTJARWkqMDRo0eOGRo5IkBQIKTIkgIA5Mw5oAE1khYreLTswcOGCgoRHHisafPmTpwDBqgowkLG0JY6ZqioIOEBAwYHwooVG+BAAAYQ0kJAIQQAIfkEAQIAPwAsAAAAACUAHAAFBv7An3BILBqPyGTSdYIpn0rTKEStjqDYH80kHZW8I9L0mkXSXC5TqSRVe0khUtlIi7leJhI3zQWPyHNCMTEvfCYxMGhpX2IugVp1Ly+JMDR1hFxqVI8xNTSSgzQ5njQwhWqNczQ1PHUwMas5OTiehHxTqjk8g7A1urKjdYu4ZTE4OaWWxzzMPKOYUiFznTihNMvNyHZugFirNaE12M61w9Jllpe9ujuz5ZrnWemvr6vttMKLm+iwky6vx3BYQoTmDzF5g9Bw6XXpVJcQIFQhOsHnBa9ECv9Q+SARBhc2ezLlefiBIzpJfUaIVPnlD4gQHzyowvMwjEExUzZ+4KAqjXVLKhrHgABRkoPRnifgwIRJtKRTD0Y3bMjSosUOHThYqEDBtYLXr14lQJDg4IEDFU9Y4ODRY0fWrSjATpgroS4ECGUbPJiQhEUPtmxxtIA7ocIECYftPsBbdsECBAhYFGFhoxlbrFrjGq7LmfODzwwkeJ2L9gcAOw%3D%3D"; var XX = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAAAstJREFUeNpskstrXWUUxX/7e9zHuadpbwbR0yagZKAIPmga0kEToUELKVVJrBMHBSUDQTuQ/geCCA6ETGt0EFCqkpKmLRaSNlUKgRKvoMU6KkgHUZtKvO97z/m2gyaXFFyTvVjs3xpsttyYeeX6+HsfHCWKoZuCBgiK7s4QQBXd8WIEW69z7fwXv3+4cuO0hAvz3a3ifietBqqKoIQQkKCgYadgtyRACEihwIGtLWY/+vRjV/vnYTfd/NMRMrTTJW3UMdYgufwjKMug2URDhjiHiqBAU4QnvRtyf928yYPf7hLqNcz+fsZu32H97Rlaq9eIygdIqzXMiSmOzn/F2jMHKYSMYAzN/jKddjNjNaJxyaGLoHu1dPgl/Qb0+5ePPZYvgl7y6A959H0vX5rtrlAToQYszUyzq9c2Kvh33+HE2o+9bG7kMFWgqkJNDSqCydSQZgZjLZuLF/nu5Mke8Mbn8z3/2QvPU/ypgjOWNBiyYBAEU/KO2DtKzpH4HJ2rV1k+e5a9Ov/6Kfp/+ZWkUCDa2Y+9xRowkXXsc47YWordDk9MTnJqbu6xgtmlZZKxMUyrxT7viZ0jdh5rDCb2nth7SqoUp6aYXFnpgV+fOdPzr66v03f8OLlOh9h74pzDWsFF5TJdBG23efHKlR7w7fg4ycYGt0NgdGEBgGOrq6wPDBDFMSUrmAdtTClJiJKEeGiInycmALg8Pc1z1SrDo6NElQp3zp0DYG1khIHhYaJDg5SSBOcd8vD0m41W0KKIIGlKs93GGkO+UCCIIKq063VaIdBXLCLeE4B+K3xy6/qCKw8e8v9mgoQUESFWBRHCniOWFAR99MaqYD15G2iLNNy9P+5uPn1kYhAxoAq6Qwn/IwEDGOF+5Vbj8t/bF+XZvDny1lODs335wsFqJ2SNVBEBK+AAawRrwIrgDOSs2Gqnu7147/6FSrO7/N8ASxJC+7t5hdYAAAAASUVORK5CYII="; var DEFAULT_ALERT_SOUND_URL = 'https://gamespowerita.com/Tools/GoR/Plugins/Allarmi/RedAlert.mp3'; var IsChrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1; var Options = { HideTab : false, Lingua : 0, DashPos : 0, ptWinIsOpen : false, pbEveryEnable : false, pbEveryMins : 60, ptWinDrag : true, ptWinPos : {}, HeightTools : 700, WidthTools : 760, enableFoodWarnTchat : false, pbGoldEnable : false, foodWarnHours : 2, HideDaily : true, HideUpGor : true, EnableDash : true, BreakingNews : 0, pbChatOnRight : false, pbGoldHappy : 75, pbRessTime : 15, EnableDelRep : false, EnableMesRep : false, DeleteRepEvr : 5, pbRessEnable : false, arPageFrom : 1, arPageTo : 4, srcMinLevel : 1, Smiley : true, transportinterval : 60, minwagons : 5000, lasttransport : 0, ColorsLeader : true, srcMaxLevel : 10, filPuissance : 0, filPuissanceMax : 100000000, filfiltreAlliance : '', filfiltreJoueur : '', alertConfig : { aChat : true, aChatScout : false, aPrefix : "*** I am under attack !!! ***", MonQG : true, hq : "", mytroops : false }, alertSound : { enabled : false, soundUrl : DEFAULT_ALERT_SOUND_URL, repeat : true, repeatDelay : 10, playLength : 20, volume : 100, alarmActive : false, expireTime : 0 }, towerMarches : {}, ChatLearder : true, Chuchoenabled : true, urlChucho : 'https://www.universal-soundbank.com/mp3/sounds/735.mp3', Attackenabled : true, urlAttack : 'https://www.universal-soundbank.com/mp3/sounds/217.mp3', Spyenabled : true, urlSpy : 'https://www.universal-soundbank.com/mp3/sounds/2376.mp3', HelpRequest : true, DeleteRequest : false, DeleteRules : false, maxIdlePop : true, AutoAttack : {}, AttackTime : {}, AttackAuto : false, AttackTimer : 8, AttackTimer2 : 1, AttackTimer3 : 1, AttackCible1 : false, AttackCible2 : false, AttackCible3 : false, AttackGen : false, AttackGenNiv : 200, AttackTroops : { 1:{}, 2:{}, 3:{}, 4:{}, 5:{}, 6:{}, 7:{}, 8:{}, 9:{}, 10:{} }, AttackTroopsB : { 1:{}, 2:{}, 3:{}, 4:{}, 5:{}, 6:{}, 7:{}, 8:{}, 9:{}, 10:{} }, AttackTroopsC : {}, spamconfig : { aspam : false, spamvert : "Type your spam here", spammins : "10", atime : 10, spamstate : "a" }, Crestinterval : 5, crestRunning : false, CrestEnergy : 0, GlobalChat : true, AllianceChat : true }; var AutoBuild = { ActiveBuild : false, HelpBuild : false, CheckLevel : false, EnBuild : {}, SelCap : {}, CheckTime : 60 }; var AutoResearch = { ActiveResearch : false, HelpResearch : false, EnResearch : {}, SelResearch : {}, CityResearch : {} }; var GlobalOptions = { autoPublishGamePop : true, autoPublishPrivacy : 80, autoPublishKDO : false, autoPublishKDOWho : 0, BOAutomateKDO : false, BOAutomateKDOsec : 10, BOAutomateKDOChoice : 1005, pbWatchdog : true }; var AutoAttack = { Attivo : false, AttackInterval : 20, Enable : {}, Mode : {}, X : {}, Y : {}, Multi : {}, MultiCheck : [], Troops : {}, LastCoord : {}, AttackGen : false, AttackGenNiv : 200, StopCity : false }; var TrainOptions = { Running : false, list : {}, listactif : {}, timelauch : 60, pourcpop : 75, pourctot : 100, unitemin : 100 }; var Colors = { ChatLeaders : '#C8C8C8', ChatVC : '#81EE81', ChatChancy : '#F8A151', ChatAtt : '#FF7D7D', ChatEcl : '#FFDD7D', ChatGlo : '#5C0E3A', ChatAll : '#679183' }; var CrestOptions = { Running : false, CrestCity : 0, RoundOne : false, RoundTwo : true, lastRoundTwo : 0, active : true, X : 0, Y : 0, R1SOM : 0, R1REC : 0, R1CAL : 0, R1CAV : 0, R1LEG : 0, R1SCO : 0, R1CAR : 0, R1CAP : 0, R1CEN : 0, R1ARI : 0, R1BAL : 0, R1BER : 0, R1RAI : 0, R2SOM : 0, R2REC : 0, R2CAL : 0, R2CAV : 0, R2LEG : 0, R2SCO : 0, R2CAR : 0, R2CAP : 0, R2CEN : 0, R2ARI : 0, R2BAL : 0, R2BER : 0, R2RAI : 0 }; var CrestData = new Array(); function CrestFunc (Arr) { if (Arr == undefined) Arr = CrestOptions; this.Running = true; this.CrestCity = Arr.CrestCity; this.RoundOne = Arr.RoundOne; this.RoundTwo = true; this.lastRoundTwo = 0; this.active = true; this.X = Arr.X; this.Y = Arr.Y; this.R1SOM = Arr.R1SOM; this.R1REC = Arr.R1REC; this.R1CAL = Arr.R1CAL; this.R1CAV = Arr.R1CAV; this.R1LEG = Arr.R1LEG; this.R1SCO = Arr.R1SCO; this.R1CAR = Arr.R1CAR; this.R1CAP = Arr.R1CAP; this.R1CEN = Arr.R1CEN; this.R1ARI = Arr.R1ARI; this.R1BAL = Arr.R1BAL; this.R1BER = Arr.R1BER; this.R1RAI = Arr.R1RAI; this.R2SOM = Arr.R2SOM; this.R2REC = Arr.R2REC; this.R2CAL = Arr.R2CAL; this.R2CAV = Arr.R2CAV; this.R2LEG = Arr.R2LEG; this.R2SCO = Arr.R2SCO; this.R2CAR = Arr.R2CAR; this.R2CAP = Arr.R2CAP; this.R2CEN = Arr.R2CEN; this.R2ARI = Arr.R2ARI; this.R2BAL = Arr.R2BAL; this.R2BER = Arr.R2BER; this.R2RAI = Arr.R2RAI; }; var translateITAArray = { //Tools 'Please support the GoR BoTTols by clicking the ads on the GoR BoTTols website from time to time':'Si prega di sostenere il GoR BoTTols cliccando gli annunci sul sito web GoR BoTTols di volta in volta', 'Version':'Versione', 'available':'disponibile', 'Install':'Installa', 'You must belong to an alliance in order to use this feature':'Devi appartenere a una alleanza per poter utilizzare questa funzione', 'Translated by':'Tradotto da', 'Reload':'Ricarica', 'Set your city bunker':'Imposta la tua città bunker', 'Collect':'Raccolta', 'now':'adesso', //Ricerche - Build 'Up to level':'Porta al livello', 'Leads to the same level':'Porta allo stesso livello', //Germania 'City for scout/attack':'Città per perlustrazioni/attacchi', 'You can not attack a member of your alliance':'Non puoi attaccare un membro della tua alleanza', 'Wait':'Aspetta', 'UPDATE':'AGGIORNA', 'For':'Per', 'Force Quit':'Uscita forzata', 'Errors':'Errori', 'Select all':'Seleziona tutto', 'I suggest you refresh the page. Some data may not be real':'Ti consiglio di riaggiornare la pagina. Alcuni dati potrebbero essere non reali', 'The attacks are many and may stop responding':'Gli attacchi sono tanti e potrebbero fermarsi', 'Do you want to continue anyway':'Vuoi continuare lo stesso', // Diplomacy 'Unaligned':'Senza Ally', 'Friendly To Them':'Amichevoli Verso Loro', 'Friendly To You':'Amichevoli Verso Te', //Food Alert 'My city':'La mia città', 'is running out of food':'ha bisogno di cibo', 'so please send some':'me ne invieresti un po\'', 'Current stock':'Ne possiedo ancora', //Tower Alerts 'The exploration seems to come from':'L\'esplorazione sembra provenire da', 'BUNKER':'BUNKER', 'MY TROOPS':'MIE TRUPPE', //Overview 'Joined on':'Giochi dal', 'World':'Mondo', //Alliance Manager 'Alliance Manager':'Gestione Alleanza', 'Message Manager':'Gestione Messaggi', 'ALLIANCE INFO':'INFO ALLEANZA', 'MEMBERS INFO':'INFO MEMBRI', 'Founder':'Fondatore', 'Avatar':'Avatar', 'Days in Position':'Giorni in posizione', 'Joined Date':'Gioca dal', 'Get Info/Member':'Ottieni info/membri', 'Enter a message':'Inserisci il messaggio', 'Message by':'Messaggio da', 'Message sent to all the alliance by':'Messaggio inviato a tutta l\'alleanza da', 'Message sent to all officer by':'Messaggio inviato agli ufficiali da', 'Read members page':'Lettura membri pagina', 'Message send to':'Messaggio inviato a', 'Remove Member':'Rimuovi Membro', 'Sorry, but this feature is only for official':'Scusa, ma questa funzione è solo per ufficiali', 'Do you really want to remove this user':'Vuoi davvero rimuovere questo utente', //Search 'City to start from':'Ricerca a partire da', 'Launch search':'Inizia la ricerca', 'SEARCH FINISHED':'RICERCA FINITA', 'The minimum distance cannot be lower than 0':'La distanza minima non può essere inferiore a 0', 'The distance has to be higher than 1':'La distanza deve essere superiore a 1', 'The maximum/minimum distance has been exceeded':'La massima/minima distanza è stata superata', 'The distance cannot be higher than 375':'La distanza non può essere superiore a 375', 'NOTE : WARNING, there is no limitation to the search, but this can have consequences on the performance of your browser':'NOTA : ATTENZIONE, non vi è alcuna limitazione alla ricerca, ma questo può avere conseguenze sulle prestazioni del browser', 'Hide option window':'Nascondi le opzioni', 'Not found':'Non trovati', 'More info':'Più info', 'Non-occupied only':'Solo non occupate', 'free':'libera', 'Minimum':'Minima', 'Maximum':'Massima', 'content':'contenente', 'Where do you want to save the coordinates':'Dove vuoi salvare le coordinate', 'Do you want to delete the existing coordinates before inserting these':'Vuoi eliminare le coordinate esistenti prima di inserire queste', 'Yes':'Si', 'No':'No', //Reassing 'Not possible to send to same city':'Impossibile inviare nella stessa città', 'Impossible to':'Impossibile', 'with 0 troops':'con 0 truppe', 'wake up':'svegliati', 'more than':'oltre', 'troops at a time':'truppe alla volta', 'Succeeded':'Fatto', //Transport 'Manual':'Manuale', 'Automatic':'Automatico', 'TRANSPORTING GOODS FROM CITY TO CITY':'TRASPORTO MERCI DA CITTÀ A CITTÀ', 'Please put in the amount of troops you like to use':'Si prega di inserire la quantità di truppe che si desidera utilizzare', 'Please check the resource you want to transport':'Si prega di controllare la risorsa che si desidera trasportare', 'Send a transport every':'Invia un trasporto ogni', 'Send transport with a minimum of':'Invia un trasporto con un minimo di', 'ADD A TRANSPORT':'AGGIUNGI UN TRASPORTO', 'Available':'Disponibile', 'Estimate':'Stima', 'necessary':'necessarie', 'Keep':'Tieni', 'Show routes':'Mostra rotte', 'Add a route':'Aggiungi una rotta', 'the route':'la rotta', 'Edit':'Modifica', //Crest 'Help':'Aiuto', 'See target':'Mostra bersagli', 'Add target':'Aggiungi bersaglio', 'Wave':'Onda', 'Do not use the general with the energy below':"Non usare i generali con l'energia al di sotto di", //Import-Export 'Import':'Importa', 'Export':'Esporta', //AutoAttack 2 'AUTOMATED ATTACKS':'ATTACCHI AUTOMATICI', 'ATTACK':'ATTACCA', 'Do not use the general with a level greater than':'Non utilizzare i generali con un livello superiore a', 'Last Attack':'Ultimo Attacco', 'Success':'Inviati', 'CITY SET PARAMETERS':'PARAMETRI DELLE CITTÀ', //Marches 'OUTGOING MARCHES':'MARCE IN USCITA', 'City reinforcements':'Città rinforzata', //Reports 'CHECK ALLIANCE REPORTS':"MOSTRA I REPORT DELL'ALLEANZA", 'No reports found':'Nessun report trovato', 'of':'di', 'Outgoing attacks':'Attacchi in uscita', 'My reports only':'Solo i miei rapporti', 'unknown':'sconosciuto', 'Number of tours':'Numero di turni', 'Results found':'Risultati trovati', 'Objects found':'Oggetti trovati', //Player 'Results for':'Risultati per', 'See members':'Mostra membri', 'Players found':'Giocatori trovati', 'Extra information':'Informazioni extra', //AutoAttack 'CONFIGURATION':'CONFIGURAZIONE', 'STATISTICS':'STATISTICHE', 'Time between attacks':'Tempo tra gli attacchi', 'Attack Mode':'Modalità di attacco', 'No coordinated inserted':'Nessuna coordinata inserita', 'Impossible to attack the coordinates':'Impossibile attaccare le coordinate', 'Groundhog coordinates':'Ricomincio le coordinate', 'City not activated':'Città non attivata', 'Send attack to':'Attacco inviato a', 'You do not have the troops necessary':'Non hai le truppe necessarie', 'You can not attack':'Non puoi attaccare', 'Unknown error':'Errore sconosciuto', 'Disable the city in which the coordinates of end':'Disattiva la città in cui finiscono le coordinate', 'Disable the city':'Disabilito la città', //Spam 'OPTIONS':'OPZIONI', 'Post automatically every':'Invia il messaggio ogni', 'Your spam message':'Il tuo messaggio', //Generals 'Actions':'Azioni', 'Outside the city':'Fuori città', //AutoTrain 'AUTO-BUILDING TROOPS':'AUTO-ADDESTRA TRUPPE', 'Active':'Attivo', 'Deactive':'Disattivato', 'Actions':'Azioni', 'seconds of training between the cities':'secondi di addestramento tra le città', 'Start at':'Inizia a', 'of the population available':'della popolazione disponibile', 'Use at':'Usa il', 'IF YOU GET ANY ERRORS, CHECK IF YOUR CITY HAS ENOUGH FOOD AND RESOURCES':'SE OTTIENI QUALCHE ERRORE, CONTROLLA SE LE TUE CITTÀ HANNO ABBASTANZA CIBO E/O RISORSE', 'Initiating training':'Avvio addestramento', 'Conditions not met':'Condizioni non soddisfatte', //Train 'Max':'Max', 'Number of troops per slot':'Numero di truppe per slot', 'Number of slots':'Numero di slot', 'Queue':'Coda', 'barracks':'caserme', 'Cancel training':'Cancella addestramento', 'Number of troops per slot must be greater than':'Numero di truppe per slot deve essere maggiore di', 'Cannot train that many troops':'Non è possibile addestrare altre truppe', 'max is':'max è', 'total':'totale', 'Invalid number of slots':'Numero di slot invalido', 'Training succesful':'Addestramento completato', 'Formation':'Addestro', //Options 'Configuration of the':'Configurazione del', 'Allow the toolbox window to be moved freely':'Abilita il movimento del tools con il mouse', 'Dimensions Tools':'Dimensioni Tools', 'Width':'Larghezza', 'Height':'Altezza', 'Refresh GoR every':'Ricarica GoR ogni', 'Organize a Tax event (if happiness':'Organizza il Giorno delle Tasse (se la felicità è', 'every':'ogni', 'Collect now':'Raccogli adesso', 'Allow to publish your helpings automatically to Facebook':'Abilita la pubblicazione su facebook in automatico', 'Everyone':'Tutti', 'Friends of friends':'Amici di amici', 'Friends only':'Solo amici', 'Me only':'Solo io', 'Show shortcut keys':'Mostra i tasti scorciatoia', 'Hide useless keys of the game (Fan page, Discussions ..)':'Nascondi tasti inutili del gioco (Fan page, Discussioni ..)', 'Receive automatically the daily requests':'Ricevi in automatico le richieste giornaliere', 'Hide updates of':'Nascondi gli aggiornamenti di', 'Right':'Destra', 'Below':'Sotto', 'Configuration of chat':'Configurazioni della chat', 'Move the chat window to the right of the game':'Muovi la chat nella parte della destra del gioco', 'Allow to publish an alert in chat when your food level is low':'Abilita l\'auto post in chat in caso di mancanza di cibo', 'Auto-click help requests, such as building help':'Auto-Clicca le richieste di aiuto, come le costruzioni', 'Hide all help requests in chat':'Nascondi le richieste di aiuto in chat', 'Hide the rules of the chat':'Nascondi le regole della chat', 'Show smileys':'Mostra nella chat le faccine', 'Open':'Apri', 'Warning sound when receiving a whisper':'Avvisa con un suono quando ricevi un bisbiglio', 'Enable audio in case of ATTACK (Alliance)':'Avvisa con un suono se un alleato viene attaccato', 'Enable audio in case of SCOUT (Alliance)':'Avvisa con un suono se un alleato viene esplorato', 'Table of colors':'Tavola dei colori', 'Background of the global chat':'Colore della chat globale', 'Background of the alliance chat':'Colore della chat alleanza', 'Enable color for the leader':'Abilita colore per i leader', 'Configuration of Reports':'Configurazione dei Report', 'Enable the deletion of the reports of the':'Abilita la cancellazione dei report del', 'Delete reports every':'Cancella i report ogni', 'Enable the deletion of the message of the Kabam':'Abilita la cancellazione dei messaggi della Kabam', 'Enable red background color in case of ATTACK (Alliance)':'Abilita lo sfondo rosso del msg se un alleato viene attaccato', 'Sound file (URL MP3)':'File audio (URL MP3)', 'Configuration of the Tower alert':'Configurazione della Torre di Allerta', 'Allow to post scout alerts in chat':'Posta in chat alleanza gli avvisi di esplorazione', 'Allow to post attack alerts in chat':'Posta in chat alleanza gli avvisi di attacco', 'Allow to sound an alarm when under attack (handy when you are away from keyboard)':'Abilita un suono di allarme quando sei sotto attacco (utile quando si è lontani dalla tastiera)', 'Message':'Messaggio', 'Show the bunker':'Mostra il bunker', 'Show my troops':'Mostra le mie truppe', 'Loading the SWF player':'Caricamento del SWF player', 'LOAD':'CARICA', 'DEFAULT':'PREDEFINITO', 'Repeat every':'Ripeti ogni', 'Length of sounding alarm':'Lunghezza del file audio', 'Tester':'Prova', 'Stop Sound Alert':'Ferma Audio', 'Error':'Errore', 'Loaded':'Caricato', '':'' }; IsChrome&&(window.unsafeWindow||(unsafeWindow=function(){var a=document.createElement("p");a.setAttribute("onclick","return window;");return a.onclick()}())); // var JSON;if(!JSON){JSON={}}(function(){function str(a,b){var c,d,e,f,g=gap,h,i=b[a];if(i&&typeof i==="object"&&typeof i.toJSON==="function"){i=i.toJSON(a)}if(typeof rep==="function"){i=rep.call(b,a,i)}switch(typeof i){case"string":return quote(i);case"number":return isFinite(i)?String(i):"null";case"boolean":case"null":return String(i);case"object":if(!i){return"null"}gap+=indent;h=[];if(Object.prototype.toString.apply(i)==="[object Array]"){f=i.length;for(c=0;c<f;c+=1){h[c]=str(c,i)||"null"}e=h.length===0?"[]":gap?"[\n"+gap+h.join(",\n"+gap)+"\n"+g+"]":"["+h.join(",")+"]";gap=g;return e}if(rep&&typeof rep==="object"){f=rep.length;for(c=0;c<f;c+=1){if(typeof rep[c]==="string"){d=rep[c];e=str(d,i);if(e){h.push(quote(d)+(gap?": ":":")+e)}}}}else{for(d in i){if(Object.prototype.hasOwnProperty.call(i,d)){e=str(d,i);if(e){h.push(quote(d)+(gap?": ":":")+e)}}}}e=h.length===0?"{}":gap?"{\n"+gap+h.join(",\n"+gap)+"\n"+g+"}":"{"+h.join(",")+"}";gap=g;return e}}function quote(a){escapable.lastIndex=0;return escapable.test(a)?'"'+a.replace(escapable,function(a){var b=meta[a];return typeof b==="string"?b:"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+a+'"'}function f(a){return a<10?"0"+a:a}"use strict";if(typeof Date.prototype.toJSON!=="function"){Date.prototype.toJSON=function(a){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null};String.prototype.toJSON=Number.prototype.toJSON=Boolean.prototype.toJSON=function(a){return this.valueOf()}}var cx=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,escapable=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,gap,indent,meta={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},rep;if(typeof JSON.stringify!=="function"){JSON.stringify=function(a,b,c){var d;gap="";indent="";if(typeof c==="number"){for(d=0;d<c;d+=1){indent+=" "}}else if(typeof c==="string"){indent=c}rep=b;if(b&&typeof b!=="function"&&(typeof b!=="object"||typeof b.length!=="number")){throw new Error("JSON.stringify")}return str("",{"":a})}}if(typeof JSON.parse!=="function"){JSON.parse=function(text,reviver){function walk(a,b){var c,d,e=a[b];if(e&&typeof e==="object"){for(c in e){if(Object.prototype.hasOwnProperty.call(e,c)){d=walk(e,c);if(d!==undefined){e[c]=d}else{delete e[c]}}}}return reviver.call(a,b,e)}var j;text=String(text);cx.lastIndex=0;if(cx.test(text)){text=text.replace(cx,function(a){return"\\u"+("0000"+a.charCodeAt(0).toString(16)).slice(-4)})}if(/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,""))){j=eval("("+text+")");return typeof reviver==="function"?walk({"":j},""):j}throw new SyntaxError("JSON.parse")}}})() var JSON2 = JSON; var FBsecondTimer = null; var pbStartupTimer = null; var my = {}; var Cities = {}; var currentName = 'Overview'; var Seed = unsafeWindow; var uW = unsafeWindow; var currentPage =''; var mainPop; var scripters = ["1078560"]; var Gay = ["603952"]; var Smileys = {}; eval(GM_getResourceText("smileys")); var myServerId = null; function getServerId() { if (myServerId == null){ var m=/^[a-zA-Z]+([0-9]+)\./.exec(document.location.hostname); if (m) myServerId = m[1]; else myServerId = '??'; } return myServerId; } var nHtml={ FindByXPath:function(obj,xpath,nodetype) { if(!nodetype){ nodetype = XPathResult.FIRST_ORDERED_NODE_TYPE; } try { var q=document.evaluate(xpath,obj,null,nodetype,null); } catch(e) { logit ('bad xpath:'+xpath); } if(nodetype == XPathResult.FIRST_ORDERED_NODE_TYPE){ if(q && q.singleNodeValue) { return q.singleNodeValue; } }else{ if(q){ return q; } } return null; }, ClickWin:function(win,obj,evtName) { var evt = win.document.createEvent("MouseEvents"); evt.initMouseEvent(evtName, true, true, win, 0, 0, 0, 0, 0, false, false, false, false, 0, null); return !obj.dispatchEvent(evt); }, Click:function(obj) { return this.ClickWin(window,obj,'click'); }, ClickTimeout:function(obj,millisec) { window.setTimeout(function() { return nHtml.ClickWin(window,obj,'click'); },millisec+Math.floor(Math.random()*500)); }, SetSelect:function(obj,v) { for(var o=0; o<obj.options.length; o++) { if(v==obj.options[o].value) { obj.options[o].selected=true; return true; } } return false; } } readGlobalOptions (); function setWide (){ var iFrame = null; var e = document.body; if(e){ for (var c=0; c<e.childNodes.length; c++){ if (e.childNodes[c].tagName=='DIV') { if (e.childNodes[c].firstChild.tagName == 'IFRAME'){ iFrame=e.childNodes[c].firstChild; break; } } } } if (iFrame) { iFrame.style.width = '100%'; iFrame.style.height = '1800px'; if (ById("mainbody")) ById("mainbody").backgroundColor="black"; } } if (document.URL.search(/gloryofrome.com\/iframeCanvas/i) >= 0){ setTimeout (setWide, 1000); return false; } if (document.URL.search(/apps.facebook.com\/gloryofrome/i) >= 0){ setInterval(function() { var test=document.URL; var testt = /s=([0-9]+)/i.exec(test); if (testt) { unsafeWindow.window.document.title="GoR "+testt[1]+" (by "+Autore+")"; } else { unsafeWindow.window.document.title="GoR (by "+Autore+")"; } }, 10) facebookInstance (); return false; } HandlePublishPopup(); function HandlePublishPopup() { //if(GlobalOptions.autoPublishGamePop){ var FBInputForm = ById('pop_content'); if(FBInputForm){ alert('Step 1'); var channel_input = nHtml.FindByXPath(FBInputForm,".//input[contains(@name,'channel')]"); if(channel_input){ var current_channel_url = channel_input.value; var publish_button = nHtml.FindByXPath(FBInputForm,".//input[@type='submit' and contains(@name,'publish')]"); var test=ById("feedform_user_message"); if(publish_button && test){ setTimeout(function() { nHtml.Click(publish_button); },2500); } } } setTimeout(HandlePublishPopup, 5000); // } } /*** Run only in "apps.facebook.com" instance ... ***/ function facebookInstance() { function setWide() { var iFrame = null; var iframes = document.getElementsByTagName('iframe'); for (var i = 0; i < iframes.length; i++) { if (iframes[i].className == 'canvas_iframe_util noresize') { iFrame = iframes[i]; break; } } if (!iFrame) { setTimeout(setWide, 1000); return; } var contentCol = document.querySelector('#contentCol'); if (contentCol) { contentCol.style.width = '100%'; contentCol.style.margin = '0px'; contentCol.style.paddingTop = '5px'; } var globalContainer = document.querySelector('#globalContainer'); if (globalContainer) { globalContainer.style.width = '100%'; } var bottomContent = document.querySelector('#bottomContent'); if (bottomContent) { bottomContent.style.padding = "0px 0px 12px 0px"; } var contentArea = document.querySelector('#contentArea'); if (contentArea) { contentArea.style.width = '100%'; } var pageletCanvasContent = document.querySelector('#pagelet_canvas_content'); if (pageletCanvasContent) { pageletCanvasContent.style.width = '100%'; } iFrame.style.width = '100%'; } setWide(); } facebookInstance(); function kocWatchdog (){ var INTERVAL = 10000; // wait 30 seconds before checking DOM // if (!GlobalOptions.pbWatchdog) // return; setTimeout (watchdog, INTERVAL); function watchdog (){ var t = ById('mod_comm_list1'); alert ("GOR WATCHDOG: "+ t); if (t<300){ logit ("GOR not loaded"); KOCnotFound(20); } } } function KOCnotFound(secs){ var div; var countdownTimer = null; var endSecs = (new Date().getTime()/1000) + secs; div = document.createElement('div'); div.innerHTML = '<DIV style="font-size:18px; background-color:#a00; color:#fff"><CENTER><BR>'+ScriptName+' '+translate("has detected that GoR is not loaded")+'<BR>'+translate("Refreshing in")+' <SPAN id=pbwdsecs></span><BR><INPUT id=pbwdcan type=submit value="'+translate("Cancel Refresh")+'"><BR><BR></div>'; document.body.insertBefore (div, document.body.firstChild); document.getElementById('pbwdcan').addEventListener('click', cancel, false); countdown(); function countdown (){ var secsLeft = endSecs - (new Date().getTime()/1000); document.getElementById('pbwdsecs').innerHTML = timestr(secsLeft); if (secsLeft < 0) reloadKOC(); countdownTimer = setTimeout (countdown, 1000); } function cancel (){ clearTimeout (countdownTimer); document.body.removeChild (div); } } var Tabs = []; function ptStartup() { clearTimeout (pbStartupTimer); /** if (unsafeWindow.BOGpbLoaded) return; ***/ var metc = getClientCoords(document.getElementById('main_engagement_tabs')); if (metc.width==null || metc.width==0){ pbStartupTimer = setTimeout (ptStartup, 1000); return; } parent.document.getElementById("iframe_gorgame").style.width='100%'; Tabs = [ ['Overview', uW.arStrings.Common.Overview], ['Hud', uW.arStrings.Common.Reports], ['marches', uW.arStrings.Common.Marches], ['AllianceList', uW.arStrings.Common.Player], ['Search', uW.arStrings.Common.Search], ['TranspAuto', uW.arStrings.Common.Transport], ['Reassign', uW.arStrings.Common.Reassign], ['Wilds', uW.arStrings.Common.Wilds], ['Generals', uW.arStrings.Common.Generals], ['AutoForm', "Auto"+uW.arStrings.Common.Train], ['Train', uW.arStrings.Common.Train], ['Crest', 'Crest'], ['attaque', 'Auto'+uW.arStrings.Common.Attack], ['Marks', 'Info'], ['KDO', uW.arStrings.Common.Gift], ['Spam','Spam'], ['Manager' , 'Manager'], ['ActionLog', 'Log'], ['BoTTols' , 'GoR BoTTols'], ['scanmap', 'Scan Map'], ['News', 'News'], ['AutoRes', 'Auto'+uW.arStrings.Common.Research], ['Germ', 'Germania'], ['AutoAtt', 'Multi'+uW.arStrings.Common.Attack], ['Herb', uW.arStrings.buildingName.b50], ['Inventory', uW.arStrings.Common.Inventory], ['Build', 'Auto'+uW.arStrings.Common.Building], ['Options' , uW.arStrings.MainChrome.Chat_UserSettings_Title.toUpperCase()], ['Dash', 'Dash'] // ['ImpExp', 'Imp-Exp'] ]; readOptions(); readColors(); var m = '.xtab {padding: 2px; border:none; background:none; white-space:nowrap;}'; m+= '.sc1 { background:url("https://gamespowerita.com/Tools/GoR/Plugins/Avatar/Tiestoale.png") no-repeat scroll 0px 0 transparent !important; }'; m+= '.merdaccia { background:url("https://gamespowerita.com/Tools/GoR/Plugins/Avatar/Cacca1.png") no-repeat scroll 0px 0 transparent !important;}'; m+= '.scThy { background:url("https://gamespowerita.com/Tools/GoR/Plugins/Avatar/Thyrus1.jpg") no-repeat scroll 0px 0 transparent !important;}'; m+= '.hostile td { background:crimson; }.friendly td{background:lightblue; }.ally td{background:royalblue; }'; m+= '.Hostile td { background:crimson; }.Friendly td{background:lightblue; }.Ally td{background:royalblue; }'; m+= '.neutral td { background:lightgreen; }.unaligned td { background:gold; }'; m+= '.Neutral td { background:lightgreen; }.Unaligned td { background:gold; }'; m+= '.xtabBR {padding-right: 5px; border:none; background:none;}'; m+= 'div.ptDiv {background-color:#f0f0f0;}'; m+= 'table.marches tr td {padding:4px;border:1px black solid; background:none; white-space:nowrap;}'; m+= 'table.ptTab tr td {padding:2px;border:none; background:none; white-space:nowrap;}'; m+= 'table.ptTabPad tr td {border:none; background:none; white-space:nowrap; padding: 2px 4px 2px 8px;}'; m+= 'table.ptTabBR tr td {border:none; background:none;}'; m+= 'table.ptTabLined tr td {border:1px none none solid none;}'; m+= 'table.ptTabPad tr td.ptentry {background-color:#ffeecc; padding-left: 8px;}'; m+= 'table.ptTabOverview tr td {border:1px none none solid none; white-space:nowrap; padding: 1px 2px; font-size:12px;}'; m+= '.xxtab{background-color:none; padding-left:5px; padding-right:5px;}'; m+= '.xxtab_even{background-color:#ccc; padding-left:5px; padding-right:5px;}'; m+= 'table.ptNoPad tr td {border:none; background:none; white-space:nowrap; padding:0px}'; m+= '.ptOddrow {background-color:#eee}'; m+= '.ptstat {border:1px solid; border-color:#000000; font-weight:bold; padding-top:2px; padding-bottom:2px; text-align:center; color:#ffffff; background-color:#175EBC}'; m+= '.ptStatLight {color:#ddd}'; m+= '.ptentry {padding: 7px; border:1px solid; border-color:#AFC8E8; background-color:#AFC8E8; white-space:nowrap;}'; m+= '.ptErrText {font-weight:bold; color:#600000}'; m+= '.castleBut {outline:0px; margin-left:0px; margin-right:0px; width:24px; height:26px; font-size:12px; font-weight:bold;}'; m+= '.castleBut:hover {border-size:3px; border-color:#000;}'; m+= '.castleButNon {background-image:url("'+ URL_CASTLE_BUT +'")}'; m+= '.castleButSel {background-image:url("'+ URL_CASTLE_BUT_SEL +'")}'; m+= 'button::focus-inner, input[type="submit"]::focus-inner { border: none; }'; m+= '.ptChatWhisper {font-weight:bold; color:#FF4D4D; background-color:#FFDE75;}'; m+= '.ptChatAttack {color: #000; font-weight:bold; background-color: #FF7D7D; }'; m+= '.ptChatScout {color: #000; font-weight:bold; background-color: #FFDD7D; }'; m+= '.ptChatAlliance {}'; m+= '.ptChatGlobal {background-color: #fdd}'; m+= '.ptChatIcon {border: 2px inset blue}'; m+= '.ptChatScripter {background-color:#FFFFFF; font-weight:bold;}'; m+= '.ptChatEnh {text-shadow: 1px 1px 1px #AAA; background-color:#FFFFFF; }'; m+= '.ptChatCHAN {color:#000; background-color:'+Colors.ChatChancy+';}'; m+= '.ptChatVICE {color:#000; background-color:'+Colors.ChatVC+';}'; m+= '.ptChatOFFI {color:#000; background-color:'+Colors.ChatLeaders+';}'; m+= 'input.BODefButOff {cursor:pointer; border:1px solid #45d183; box-shadow:inset 0px 1px 5px #3aef8b; border-radius:5px;}'; m+= 'input.BODefButOn {cursor:pointer; border:1px solid #f61646; box-shadow:inset 0px 1px 5px #f6375f; border-radius:5px;}'; m+= 'span.whiteOnRed {padding-left:3px; padding-right:3px; background-color:#700; color:white; font-weight:bold}'; m+= 'span.boldRed {color:#800; font-weight:bold}'; m+= '.emoicon {width:19px !important;height:19px !important;float:none !important;}'; m+= '.tx{ color:black !important;}'; m+= '.content.off { background-color:#ECECEC !important;border-bottom:1px solid #AAAAAA;}'; m+= '.content.on { background-color:#F1F2E1 !important;border-bottom:1px solid #AAAAAA;}'; m+= '.frame.on { background-color:#ffe !important;}'; m+= '.frame.off { background-color:#ffe !important;}'; m+= '.info .nm{ color:#114684 !important;}'; m+= '.comm_body.comm_global { border:1px solid black !important;background-color:#ECECEC !important;}'; m+= '.comm_body { width:350px !important;}'; m+= '.chat-wrapper { width:347px !important:}'; m+= 'span.boldDarkRed {color:#600; font-weight:bold}'; m+= 'a.ptButton20 {color:#ffff80}'; m+= '.matTab {}'; m+= '.matTabNotSel { padding:0 0 0 20px; color:white; font: bold 11px Georgia; white-space: nowrap; cursur:pointer; padding:0 0px 0 0;height: 17px; }'; m+= '.matTabNotSel span { background: url("https://kabam1-a.akamaihd.net/gloryofrome/common/img/gor/progress_engagement/socialtab_up.png") no-repeat scroll left 0 transparent; display: inline-block; height: 16px; padding: 1px 2px 0 7px; text-decoration: none; }'; m+= '.matTabSel { color : black; font: bold 11px Georgia; white-space: nowrap; cursur:pointer; padding:0 0px 0 0;height: 17px; }'; m+= '.matTabSel span { background: url("https://kabam1-a.akamaihd.net/gloryofrome/common/img/gor/progress_engagement/socialtab_down.png") no-repeat scroll left top transparent; display: inline-block; height: 16px; padding: 1px 2px 0 7px; text-decoration: none; }'; m+= 'tr.CPopupTop td { background-color:#B5CBE9; border:none; height: 15px; padding:0px; postion:absolute;}'; m+= '.BOptretry_top { background-color:#175EBC; color:#fff; border:none; height: 21px; padding:0px; }'; m+= 'input.ptButCancel {background-color:#175EBC; font-weight:bold; color:#fff}'; m+= '.idp_CPopup .idp2_CPopup { opacity:0.9; position:absolute; }'; m+= '.CPopup .CPopMain { opacity:0.9;box-shadow:inset 0px 0px 20px #175EBC; border-radius:10px; border:1px solid #175EBC; padding:3px; } '; addStyle (m); // unsafeWindow.BOGpbLoaded = true; readTrainingOptions(); readAutoAttack(); readAutoBuild(); readAutoResearch(); readCrestData(); var Seed = unsafeWindow; setCities(); AddTowerTab('<img alt=">> Under Attack <<" width=37 height=28 src="'+URL_ALERT+'">', my.Options.stopSoundAlerts, 'botowertab'); if (Options.ptWinPos==null || Options.ptWinPos.x==null|| Options.ptWinPos.x=='' || isNaN(Options.ptWinPos.x)){ var c = getClientCoords (document.getElementById('main_engagement_tabs')); Options.ptWinPos.x = c.x+4; Options.ptWinPos.y = c.y+c.height; saveOptions (); } var Height=parseIntNan(Options.HeightTools) + 30; var Width =parseIntNan(Options.WidthTools) + 30; mainPop = new CPopup ('idp', Options.ptWinPos.x, Options.ptWinPos.y, Width,Height, true, function (){ my[currentName].hide(); Options.ptWinIsOpen=false; saveOptions() }); var mainDiv = mainPop.getMainDiv(); mainPop.getTopDiv().innerHTML = '<TABLE cellspacing=0 width=100%><TR class=CPopupTop valign=bottom><TD><SPAN id=idTabs></span></td><TD align=right rowspan=2><font color=white>'+Version+'</font><iframe src="" id="BOsound" frameborder=0 height=0 width=0></iframe></td></tr><tr><td><span id=idTabs2></span></tr><tr><td><span id=idTabs3></span></tr></table>'; var eTabs = ById('idTabs'); for (k=0; k<Tabs.length; k++){ var a=document.createElement('a'); a.className='matTabNotSel'; a.id = 'aa'+ Tabs[k][0]; a.innerHTML='<span id="sp'+ Tabs[k][0] +'" class="matTab">'+ translate(Tabs[k][1]) +'</span>'; if (k==10) { var eTabs = document.getElementById('idTabs2'); eTabs.innerHTML+="</tr><tr><td>"; } if (k==21) { var eTabs = document.getElementById('idTabs3'); eTabs.innerHTML+="</tr><tr><td>"; } eTabs.appendChild(a); a.addEventListener('click', clickedTab, false); my[Tabs[k][0]].init(); cont = my[Tabs[k][0]].getContent(); cont.style.display = 'none'; cont.style.overflowY = 'scroll'; cont.style.maxHeight = (Options.HeightTools)-30+'px'; mainDiv.appendChild(cont); } setTabStyle (document.getElementById ('aaOverview'), true); my.Overview.getContent().style.display = 'block'; window.addEventListener('unload', onUnload, false); if (parseInt(Options.Lingua) == 0) { if (ById('idp_outer')) ById('idp_outer').style.display="none"; alertlang(); } else { if (Options.ptWinIsOpen){ mainPop.show (true); my["Options"].show(); my["Options"].hide(); my[currentName].show(); } if (Options.alertConfig.hq == "") alerthq(); AddMainTabLink(ScriptName, eventHideShow, mouseMainTab); actionLog(ScriptName, "<div style='font-weight:bold;text-shadow: 1px 1px 1px #AAA;font-variant:small-caps;'><a href='"+sitesupport+"' target='_blank'>"+ScriptName+"</a> <span style='color:green'>"+translate('Loaded')+"</span><BR>"+translate('Version')+": <span style='color:red'>"+Version+"</span>"); } CheckUpdates(); CollectGold.init(); CollectRessource.init(); RefreshEvery.init(); FoodAlerts.init(); // setTimeout (function() { ScoutAlert.init(); // }, 60000); // AutoDeleteReports.init(); AutoDeleteGoRMessage.init(); TowerAlerts.init(); TowerAlerts.setPostToChatOptions(Options.alertConfig); WideScreen.init (); WideScreen.setChatOnRight (Options.pbChatOnRight); ChatStuff.init(); setInterval (HandleChatPane,2500); SpamEvery.init(); } function onUnload (){ Options.ptWinPos = mainPop.getLocation(); saveOptions(); } /************ Special Tchat ***********************/ var CalterUwFunc = function (funcName, findReplace) { var t = this; this.isEnabled = false; this.isAvailable = isAvailable; this.setEnable = setEnable; this.funcName = funcName; this.funcOld = unsafeWindow.Chat.chatDivContent; this.funcNew = null; try { var funcText = unsafeWindow.Chat.chatDivContent.toString(); var rt = funcText.replace ('function '+ funcName, 'function'); for (var i=0; i<findReplace.length; i++){ x = rt.replace(findReplace[i][0], findReplace[i][1]); if (x == rt) return false; rt = x; } this.funcNew = rt; } catch (err) { } function setEnable (tf){ if (t.funcNew == null) return; if (t.isEnabled != tf){ if (tf){ var scr=document.createElement('script'); scr.innerHTML = funcName +' = '+ t.funcNew; document.body.appendChild(scr); setTimeout ( function (){document.body.removeChild(scr);}, 0); t.isEnabled = true; } else { unsafeWindow.Chat.chatDivContent = t.funcOld; t.isEnabled = false; } } } function isAvailable (){ if (t.funcNew == null) return false; return true; } }; /************************ ChatStuff************************/ var ChatStuff = { chatDivContentFunc : null, getChatFunc : null, leaders : [], init : function (){ var t = ChatStuff; if (getMyAlliance()[1] != uW.arStrings.Common.None) t.getAllianceLeaders(); t.chatDivContentFunc = new CalterUwFunc ('Chat.chatDivContent', [['return f.join("")', 'var msg = f.join("");\n msg=chatDivContent_hook(msg);\n return msg;']]); uW.chatDivContent_hook = t.chatDivContentHook; uW.ptChatIconClicked = t.e_iconClicked; uW.caricoinfo = t.e_LoadInfo; t.setEnable (true); }, isAvailable : function (){ var t = ChatStuff; t.chatDivContentFunc.isAvailable (); }, setEnable : function (tf){ var t = ChatStuff; t.chatDivContentFunc.setEnable (tf); if(ById("mod_comm_list1") && Options.GlobalChat) ById("mod_comm_list1").style.backgroundColor = Colors.ChatGlo; if(ById("mod_comm_list2") && Options.AllianceChat) ById("mod_comm_list2").style.backgroundColor = Colors.ChatAll; ById("comm_tabs").style.backgroundColor = "#ECECEC"; }, e_iconClicked : function (name){ ById('mod_comm_input').value=''; var e = ById('mod_comm_input'); name = name.replace(/°°/g,"'"); e.value = '@'+ name +' '; e.focus(); }, e_LoadInfo : function (name){ var t = ChatStuff; t.fetchPlayerInfo (name, function (r) {t.gotPlayerDetail(r)}); }, gotPlayerDetail : function (rslt){ var t = ChatStuff; if (!rslt.ok){ return; } var u = rslt.userInfo[0]; var a = uW.arStrings.Common.None; if (u.allianceName) a = u.allianceName +' ('+ getDiplomacy(u.allianceId) + ')'; var c = confirm(uW.arStrings.Common.Name+': '+u.genderAndName+'\r\n'+uW.arStrings.Common.Glory+': '+u.might+'\r\n'+uW.arStrings.Common.Alliance+': '+a+'\r\n'+uW.arStrings.Common.Cities+': '+u.cities+'\r\n'+uW.arStrings.Common.Population+': '+u.population+'\r\n\r\n\r\nVuoi andare al profilo Facebook?'); if(c){ window.open('https://www.facebook.com/profile.php?id='+u.fbuid) } }, fetchPlayerInfo : function (name, notify){ unsafeWindow.AjaxCall.gPostRequest("getUserGeneralInfo.php",{uid:name}, function(rslt){ notify (rslt); },function(rslt){ notify (rslt); }); }, EmoClick: function(what) { ById("mod_comm_input").value += " " + what + " "; }, chatDivContentHook : function (msg){ var t = ChatStuff; uW.BOEmoClick = t.EmoClick; var m = /div class='info'>.*<\/div>/im.exec(msg); var z = /div class='tx'>.*<\/div>/im.exec(msg); if (m == null || z == null) return msg; if (m[0].indexOf(uW.arStrings.Chat.WhispersToYou) >= 0) { msg = msg.replace ("class='content on'", "class='content ptChatWhisper'"); msg = msg.replace ("class='content off'", "class='content ptChatWhisper'"); if (Options.Chuchoenabled) msg = msg.replace (uW.arStrings.Chat.WhispersToYou,'<font color=red>'+uW.arStrings.Chat.WhispersToYou+'</font><span style="visibility:hidden"><object type="application/x-shockwave-flash" data="'+SWF_PLAYER_URL+'" width="10" height="10" id="dewplayer" name="dewplayer"><param name="wmode" value="transparent" /><param name="movie" value="'+SWF_PLAYER_URL+'" /><param name="flashvars" value="mp3='+Options.urlChucho+'&autostart=1&showtime=1&volume=100" /></object></span>'); } if (m[0].indexOf('*** '+uW.arStrings.Common.Arrival.toUpperCase()+' ***') >= 0) { msg = msg.replace ("class='content on'", "class='content ptChatAttack'"); msg = msg.replace ("class='content off'", "class='content ptChatAttack'"); msg = msg.replace (msg,msg+'<div style="position: absolute; background-image: url(\'data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAZAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAwMDAwMDAwMDAwEBAQEBAQECAQECAgIBAgIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD/8AAEQgAEgASAwERAAIRAQMRAf/EAJgAAAIDAAAAAAAAAAAAAAAAAAYHAAgJAQABBQEAAAAAAAAAAAAAAAAFAQYHCAkKEAAABQIDBQQLAAAAAAAAAAABAgQFBwMGABI2ETFWNwghIzRlQYETM2QVNRYXZxgRAAIAAgcDCAUNAAAAAAAAAAECAwQAETESBQYHQSIyIWFiEzM0NQhRcVRkNkJScqIjUxQVZRZWFxj/2gAMAwEAAhEDEQA/AMPs5ANkE5APlE+QTlA2QogBqmUR25CiPabcGMu6mqvVGquqzb6PXzU6ny6BrhYB6iaqxXULTV6BtNgpo/C0Wxl0yRzb/Vd1TW033jcd1ovmvSz0xPqelWGQ6wlE7dM0ssyoO4ihtq7K7M2qSAW4KhSqq5Rbi0SLrEZIybg+SsHGoWoAA5K5WWYAszEbrFDa7fJU8ijebZTPHW/WPOetGcX8vHl7djGvXcWxVCRCloYNUSGsVeEKQREZTfdh1UPevMlSPz1e3DMTc9v6D5b2zqfhD6Vy98t8F8LgN/c/6TJ+JfiLB2X3XDxdKzmo/P8AH0T+XY38L/lfaP3j2zj+pxdKiJ+9LviyTI5eG+OW+/VjE+2pIiyJZUTOyGOr3t2ijWKWh5u5nqCiVqraXtTtVBurkA1B4OoKQSKkJVJcNnIT4DhEX9yZhErFlIERoaC6Ir9arIWhbjDlDojRIbn7O7eYBiqsH1vm8R1ezmuVNCIsVs8SklHlsQxSDMNDlZSTik9ZKsQGR5h3XcKjrYZG6ygllYUhS/IM93o/SzKT+vuW9rqVnruTitpLUlBPQpiAJmhjbF6Fsrs9vNRO4SpgTUSlJT2gBgynMJz3mzF824285icQGEvJChqylISGxRcd0LEVFmDMTtqNaicPLhpvlrTnTSUksDwibwrEZgFpsTghmdjRlYq0SO8MkFWILQgCAqEVKtlA3DLpPlBVl1FdurPc2XrvU+kGzwn6+4Z8p9ngxP8Ahsl3Pimu6dh3l+L3z273i9StPlu7HNPgHxHG8M+iveen8zmroVDv9Pr34DUsubdtJhaJT//Z\'); background-repeat: no-repeat; border-radius: 3px 3px 3px 3px; height: 18px; width: 18px; border: 2px inset rgb(96, 0, 0); box-shadow: 0px 0px 2px rgb(255, 255, 255); left: 300px; top: 10px; "></div>'); if(Options.Attackenabled) msg = msg.replace ('*** '+uW.arStrings.Common.Arrival.toUpperCase()+' ***','*** '+uW.arStrings.Common.Arrival.toUpperCase()+' ***'+'<span style="visibility:hidden"><object type="application/x-shockwave-flash" data="'+SWF_PLAYER_URL+'" width="10" height="10" id="dewplayer" name="dewplayer"><param name="wmode" value="transparent" /><param name="movie" value="'+SWF_PLAYER_URL+'" /><param name="flashvars" value="mp3='+Options.urlAttack+'&autostart=1&showtime=1&volume=100" /></object></span>'); } if (m[0].indexOf(uW.arStrings.ModalMessagesViewReports.ScoutingAt) >= 0){ msg = msg.replace ("class='content on'", "class='content ptChatScout'"); msg = msg.replace ("class='content off'", "class='content ptChatScout'"); msg = msg.replace (msg,msg+'<div style="position: absolute; background-image: url(\'data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAUAAA/+4ADkFkb2JlAGTAAAAAAf/bAIQAAgICAgICAgICAgMCAgIDBAMCAgMEBQQEBAQEBQYFBQUFBQUGBgcHCAcHBgkJCgoJCQwMDAwMDAwMDAwMDAwMDAEDAwMFBAUJBgYJDQsJCw0PDg4ODg8PDAwMDAwPDwwMDAwMDA8MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8AAEQgAEgASAwERAAIRAQMRAf/EAJMAAAMBAQAAAAAAAAAAAAAAAAQFCAcJAQACAgMAAAAAAAAAAAAAAAACBQQGAAEHEAABAgMEBQURAAAAAAAAAAABAgMEBQYAETQHITESMjPwYUIUCEHBUmKCohNTY3ODVBVVFlaWEQABAgMFBgQHAAAAAAAAAAABAgMAEQQhMVESBfBBYXGBBpGhseHBIjJCghMU/9oADAMBAAIRAxEAPwCooGW52mUNVJmF2gZPR6n2y+7KKdpyDMvhB4CouauOOuhOgFRCL+a3L0u0hIQ2yVHiozPRMh6x0lymqkZlLcSkDgJDqZn0hrIJ5mBHoKqcz5pSr1BG22o0+wta03Ai4wc1Sm8gjo3aRotj7IYkpTKkg4mzzEFTFNQcgdQoi+VpE8bYG/L8xv2leK6vhobGes3OH7PzrRv2DDjDL+YeUoUV9kBGVfBVy1PYlqtzU0CiDp9Ma85BGSN+jcYdbgw2HWwHEulRWUbYUEnaIGzZ3oOusaefnanfMi+3nFQ7s7df1tkobfyKCkqSCDlCkkKE5XiYtnCPIrs/qyGy1rajIp6IrlU+gQiUxr8WtcRAOpCdhbbiYdsNlgNoS0EK7h0hNybO63uqidbDQbUU780t8JNE7N1JiqXUvvNhZCUgIBAATM/cZkme/dZGAfUc4/v0FiuocNWP+b3t7xNXPasSpsDj+OHvF+zVGI98Y6oMb3R8rvWTN3wa4FmuEiPdK4evVbTkHT/UOcR9/O47l8W0jx2+ETvC/brH/9k%3D\'); background-repeat: no-repeat; border-radius: 3px 3px 3px 3px; height: 18px; width: 18px; border: 2px inset rgb(96, 0, 0); box-shadow: 0px 0px 2px rgb(255, 255, 255); left: 300px; top: 10px; "></div>'); if(Options.Spyenabled) msg = msg.replace (uW.arStrings.ModalMessagesViewReports.ScoutingAt,uW.arStrings.ModalMessagesViewReports.ScoutingAt+'<span style="visibility:hidden"><object type="application/x-shockwave-flash" data="'+SWF_PLAYER_URL+'" width="10" height="10" id="dewplayer" name="dewplayer"><param name="wmode" value="transparent" /><param name="movie" value="'+SWF_PLAYER_URL+'" /><param name="flashvars" value="mp3='+Options.urlSpy+'&autostart=1&showtime=1&volume=100" /></object></span>'); } if (m[0].indexOf("besoin de bananes") >= 0 || m[0].indexOf("is running out of food") >= 0 || m[0].indexOf("ha bisogno di cibo") >= 0 || m[0].indexOf("** "+translate('is running out of food')+" **") >= 0) { msg = msg.replace (msg,msg+'<div style="position: absolute; background-image: url(\'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAB2RJREFUeNrsVltvXFcV/s79nDlzv/mS2HHjxKkCATUQWkRKylWtAEWCB0BCSCn0ideCEO8I8QsQQkhIEfBEVYlLVbUoqtKmkJKLHcepk7h2HN9mPPaM58y5XzbfOI1QEC88oD7QLa25nLP3Xnut9X3f2pIQAh/EkPEBjf8/x6okSbANHcV8HrJpwfB9iGIRzXoVf//HVXzly5/DmdNPNS5eung6eOv6k0eKuclLsnZ+aeC9Muh2Uedau1RCzLXTEpBlGfDYNJ4/dw4zUyP49a9+id/+7mU0azW0+33kcjkMcaX++0mGUIsg7RtoS/c3oF6bN0Wr89WZLDl9PGc1u5IU3HXE3zihG+/P5zoGIEn/RcQPf6Tvb2AL8bWTIj07ItJylM9dXmh1rjXXNr991u2fk2wFx1QdJyeb59Z2uoffBF57AsKuSShc9rw5V1OXVU1rS7J8TzOMPcM0IVQFw8MFaarGWZY89Ld/RlXXcKBc/vQhXf/+Fza3nv9UIQ9p4iBaUYQ/LK+Kz6SxNCmy/dkaU9KcfgzvBD5m72/hO7YJe3oaVySB3q3b2bhp9d8ytM7Ng5Nb41OHFrB44/DEert26PCk9sfNzqV3XP9FVZYdSTdMHM1ZP38hjn40M1aFXynj8vUFdKIUk4aGmWoeW16Inb4Hi46rD4CBNUWBFCUoDKMxDByemcbqygqSKIBVLuLVVg8+331JAcaLFk4+9Un0efgXry/97Mr29k+U737zWz8Yuzn3Uyv0YdDRkSPHsK6qMNsdfDzNUJs4gKknTmCjtYNbfoj7jLhP2+W7QrGAxngTolHG/NIy5kWEFUnBqKKjTr6cThMcHhYzSDC4t4FypYS2aozOe/55xfK8Pz3dbtsTjMYc+Mh6fbRY8FJ/D2UuCnsOUifAwPMxYho4dvxx7GkKUs/FGSuHqiqjbhsIGendIMYzsolTo00gSTFwfWIGMLi3xIPGG238uefU5KMzE4qwtR/KA9eeZAnznLDuenivtweDTlMNKMYZOnsOlqIYR2WBohRiPQxRcgMU/QCJO8Bmvws3jjFKdDY4T+F7k+lfJjUdOta5b4WBv00fb+pAbbzkKFOj1ufNKfPo3CDGQpChzQl8jzZT1eWiKekBAlf4YScZjMhH6oaIOEnhswItx7kN4nX4bH6IATrPBwHuZQJ/5f9heRZps0cK+PqzY1i8755XWzvxG5MV/bngkIm9SEbQj5nGFJthilNBine50KT1aHO0J4mYUX4v4sHBhs6a75PkCu0mrTXkNVO7nddgjllozBQxccDCGYMp8WIsbXgL6iBIFqNEh56m0DUJjY9VUC7oOEHkmn6CrhPDZ6QpU77FrFzloVRZwirrrSgaVlnXhppCLppQtAzPFFXUKiYaoxYmGyoK5P4e192952BjtQ9faAM/zBZV3w9mgzTfUoQYEXGCsB8wVwLVmgmtrGH0RBHjdQPjNXKbXI0y1lAh6o08hFEmsQ2odKwKPk9j0inGoO8jN8QIg+n2XbgDj84TxInAnR0su4P+nCqydKXnirURUx1x3QghJzuEf9mPkCYy7IZO5KYQRLVWLCNvV6hyChyPICnYMEsjUHiAOHIR+g6SzMGuuw5PDTkrQWuPFOtE8MIMY1Udr9zOZmVFiVXTygk3FNftqvYJj6DJSCWTFMmZMlRFRqfPaCimBT2C5VPcjRC5Sh1eYiCfUfAjhS2OKoE8wiSAS1bEBFXAvUQSwnETyNx0rCzDC3Tc63Rf2lfLKAyw25NelydL37MNFywfBn4KZgxjNQ2Neg4lRqaKlFyN4bEjyaSUqhfQ3tiFmbOgGzYxo0KnjqssQ6NRQhay0bg9BEEImQFsdzx0AyNOJfNWwWZQwzbmBenVQawnhmWoFC3kWaAoFbi77oOqCJltrGLJsAg+haCrF3WY9TokzWKLk5BJGhSfUcsW5HAXe5vraO/2GG1ELKgomgoy6u27nWwuCOMNU1f2c0QQJDutXvRezra+mNdhcC/USvo+JXIUEU3V4DgJAorEkDmpUODHKXpOiB7B6Dg+VSpgAARn4CGKQuIjQ7OqMgMSnEHIDqXg9fngpbXN7ssBOa48bFNxHN/YdsQbiaR/tFrQD/I/gaTxgmAQRCpGyxZKdo70yMOwCyiwzqqWo7ooGKdeF6vj1OIGs6XB0rPhfvuliZMEvUDGa/PJ7YvXtn7MS8CQ5v9yPByarq11uv7vW33RZs1mIMsVQd3yw4gbkfxSAomNQMpYYxFA1wVVToVmFpg1ZR9MHiU0ZjYUgmWYjQtzzvpvXm3/4u3ZzRfodPmRfvxwDIGS8KSyJDNdScWyjLMHm9Y3jk8VPntiyiweGSd4pAwVgoNlQq5ATdPy5HaOYDMQZBZu3N4JVza6/YU77QtXF7f/stvzLlAAVlm3R24g/9Gxyl6bsLskyb4WNjRd/8hozX768an6KRWD6tSIIVULlBGGRdbEu4HWHwRyfL/lbtxZ6VxJUzHX98I7aRx3Nd5AeCNhIPGjjj+80H/o+H81/inAAPD+pq3c2maWAAAAAElFTkSuQmCC\'); background-repeat: no-repeat; border-radius: 3px 3px 3px 3px; height: 18px; width: 18px; border: 2px inset rgb(96, 0, 0); box-shadow: 0px 0px 2px rgb(255, 255, 255); left: 300px; top: 10px; "></div>'); } // msg = msg.replace ("class='content off'", "class='content ptChatEnh'"); // msg = msg.replace ("class='content on'", "class='content ptChatEnh'"); if (m[0].toLowerCase().indexOf("bottols") >= 0 || m[0].toLowerCase().indexOf("boite") >= 0 || m[0].toLowerCase().indexOf("tools") >= 0) { msg = msg.replace ("GoR BoTTols",'<a target="sitesup" href="'+sitesupport+'"><font color=red>GoR BoTTols</font></a>'); msg = msg.replace ("gor bottols",'<a target="sitesup" href="'+sitesupport+'"><font color=red>GoR BoTTols</font></a>'); msg = msg.replace ("bottols",'<a target="sitesup" href="'+sitesupport+'"><font color=red>GoR BoTTols</font></a>'); msg = msg.replace ("boite",'<a target="sitesup" href="'+sitesupport+'"><font color=red>GoR BoTTols</font></a>'); msg = msg.replace ("tools",'<a target="sitesup" href="'+sitesupport+'"><font color=red>GoR BoTTols</font></a>'); } if (m[0].toLowerCase().indexOf("gor manager") >= 0 || m[0].toLowerCase().indexOf("gorm") >= 0 || m[0].toLowerCase().indexOf("gormanager") >= 0) { return msg = '<br><font color="red" size="10px"><b><center>Glory of Rome - Scan Map<br></b><a target="_Sitesupp" href="'+sitesupport+'">'+sitesupport+'</a></center></font><br>'; } var Coords = /([0-9]{1,3})\s*(,|-)\s*([0-9]{1,3})/i.exec(z[0]); var Coordss = /([0-9]{1,3})\s*(,|-)\s*([0-9]{1,3}\s*(,|-))/i.exec(z[0]); if (Coords && !Coordss){ msg = msg.replace (Coords[1]+Coords[2]+Coords[3], '<a href="javascript:void(0)" onclick="KB.Controllers.MapHelper.gotoCoord('+Coords[1]+','+Coords[3]+');" class="coordinateLink"><font color=blue>'+Coords[1]+Coords[2]+Coords[3]+'</font></a>'); } var suid = /viewProfile\(this,([0-9]+),false,([0-9]+),/i.exec(m[0]); if (suid) { if (scripters.indexOf(suid[1]) > -1) { msg = msg.replace ("<div class='avatar", "<div class='avatar sc1"); msg = msg.replace (msg, "<b>"+msg+"</b>"); msg = msg.replace ("class='content off'", "class='content ptChatEnh'"); msg = msg.replace ("class='content on'", "class='content ptChatEnh'"); } if (suid[1] == 3788133) { // Thyrus msg = msg.replace ("<div class='avatar", "<div class='avatar scThy"); } /** if (suid[1] == 3583460) { // Dark_Angel (Roberta) } **/ /** if (Gay.indexOf(suid[1]) > -1) { msg = msg.replace ("<div class='avatar", "<div class='avatar merdaccia"); } ***/ msg = msg.replace ("<span class='time", "<span onclick=caricoinfo(\'"+ suid[1] +"\'); class='time"); } var m = /(Domina|Dominus) (.*?)</im.exec(msg); if (m != null){ msg = msg.replace ("<div class='avatar", "<div onclick=ptChatIconClicked(\'"+ m[2] +"\'); class='avatar"); if (t.leaders[m[2]] && Options.ColorsLeader) { msg = msg.replace ("<div class='info'", "<div class=' ptChat"+t.leaders[m[2]]+"'") } } if (Options.Smiley) { for (k in Smileys) { if (k=="(massage)") msg=msg.replace(k, '<img style="width:32px !important;height:24px !important" class=emoicon title='+k+' onclick="BOEmoClick(\''+k+'\')" src=\"'+Smileys[k]+'\">'); else if (k=="*kissing*") msg=msg.replace(k, '<img style="width:47px !important;height:30px !important" class=emoicon title='+k+' onclick="BOEmoClick(\''+k+'\')" src=\"'+Smileys[k]+'\">'); else if (k=="(fouet)") msg=msg.replace(k, '<img style="width:60px !important;height:30px !important" class=emoicon title='+k+' onclick="BOEmoClick(\''+k+'\')" src=\"'+Smileys[k]+'\">'); else if (k=="(sonic)") msg=msg.replace(k, '<img style="width:64px !important;height:64px !important" class=emoicon title='+k+' onclick="BOEmoClick(\''+k+'\')" src=\"'+Smileys[k]+'\">'); else if ( k=="(renne)" || k=="(tigre)" || k=="(girafe)" || k=="(elephant)" || k=="(rat)") msg=msg.replace(k, '<img style="width:60px !important;height:60px !important" class=emoicon title='+k+' onclick="BOEmoClick(\''+k+'\')" src=\"'+Smileys[k]+'\">'); else if (k=="(spider)") msg=msg.replace(k, '<img style="width:95px !important;height:57px !important" class=emoicon title='+k+' onclick="BOEmoClick(\''+k+'\')" src=\"'+Smileys[k]+'\">'); else if (k=="(hamta)" || k=="(cat)") msg=msg.replace(k, '<img style="width:31px !important;height:40px !important" class=emoicon title='+k+' onclick="BOEmoClick(\''+k+'\')" src=\"'+Smileys[k]+'\">'); else if (k=="(shark2)") msg=msg.replace(k, '<img style="width:117px !important;height:50px !important" class=emoicon title='+k+' onclick="BOEmoClick(\''+k+'\')" src=\"'+Smileys[k]+'\">'); else if (k=="(concombre)") msg=msg.replace(k, '<img style="width:100px !important;height:50px !important" class=emoicon title='+k+' onclick="BOEmoClick(\''+k+'\')" src=\"'+Smileys[k]+'\">'); else if (k=="(baby)") msg=msg.replace(k, '<img style="width:56px !important;height:40px !important" class=emoicon title='+k+' onclick="BOEmoClick(\''+k+'\')" src=\"'+Smileys[k]+'\">'); else if (k=="]:->" || k=="(pingouin)" || k=="(shark)") msg=msg.replace(k, '<img style="width:35px !important;height:35px !important" class=emoicon title='+k+' onclick="BOEmoClick(\''+k+'\')" src=\"'+Smileys[k]+'\">'); else if (k=="(bath)" || k=="(emotlove2)" || k=="(smyno)") msg=msg.replace(k, '<img style="width:40px !important;height:40px !important" class=emoicon title='+k+' onclick="BOEmoClick(\''+k+'\')" src=\"'+Smileys[k]+'\">'); else if (k=="(miroir)") msg=msg.replace(k, '<img style="width:45px !important;height:45px !important" class=emoicon title='+k+' onclick="BOEmoClick(\''+k+'\')" src=\"'+Smileys[k]+'\">'); else if (k=="(caribou)") msg=msg.replace(k, '<img style="width:65px !important;height:33px !important" class=emoicon title='+k+' onclick="BOEmoClick(\''+k+'\')" src=\"'+Smileys[k]+'\">'); else if (k=="(magebarbe)") msg=msg.replace(k, '<img style="width:45px !important;height:45px !important" class=emoicon title='+k+' onclick="BOEmoClick(\''+k+'\')" src=\"'+Smileys[k]+'\">'); else if (k=="(couette)" || k=="(ver)") msg=msg.replace(k, '<img style="width:60px !important;height:45px !important" class=emoicon title='+k+' onclick="BOEmoClick(\''+k+'\')" src=\"'+Smileys[k]+'\">'); else if (k=="(fox)" || k=="(heidy)") msg=msg.replace(k, '<img style="width:30px !important;height:30px !important" class=emoicon title='+k+' onclick="BOEmoClick(\''+k+'\')" src=\"'+Smileys[k]+'\">'); else if (k=="(autruche)") msg=msg.replace(k, '<img style="width:93px !important;height:84px !important" class=emoicon title='+k+' onclick="BOEmoClick(\''+k+'\')" src=\"'+Smileys[k]+'\">'); else if (k=="(panda)" || k=="(crabe)" || k=="(tortue)"|| k=="(vache)" || k=="(singe)" || k=="(bravo2)" || k=="(bubulle)" || k=="(chien)" || k=="(cuicui)" || k=="(bubulle)" || k=="(cochon)" || k=="(lapin)" || k=="(grenouille)") msg=msg.replace(k, '<img style="width:66px !important;height:66px !important" class=emoicon title='+k+' onclick="BOEmoClick(\''+k+'\')" src=\"'+Smileys[k]+'\">'); else if (k=="(herisson)" || k=="(lion)" || k=="(chat)" || k=="(papillon)" || k=="(serpent)" || k=="(dragon)" || k=="(camelot)") msg=msg.replace(k, '<img style="width:77px !important;height:77px !important" class=emoicon title='+k+' onclick="BOEmoClick(\''+k+'\')" src=\"'+Smileys[k]+'\">'); else if (k=="(ours)" || k=="(taupe)" ) msg=msg.replace(k, '<img style="width:88px !important;height:88px !important" class=emoicon title='+k+' onclick="BOEmoClick(\''+k+'\')" src=\"'+Smileys[k]+'\">') else if (k=="(bienmal)") msg=msg.replace(k, '<img style="width:109px !important;height:60px !important" class=emoicon title='+k+' onclick="BOEmoClick(\''+k+'\')" src=\"'+Smileys[k]+'\">') else if (k=="(aigle)") msg=msg.replace(k, '<img style="width:65px !important;height:100px !important" class=emoicon title='+k+' onclick="BOEmoClick(\''+k+'\')" src=\"'+Smileys[k]+'\">'); else if (k=="(hippo)") msg=msg.replace(k, '<img style="width:73px !important;height:115px !important" class=emoicon title='+k+' onclick="BOEmoClick(\''+k+'\')" src=\"'+Smileys[k]+'\">'); else if (k=="(Jolly)") msg=msg.replace(k, '<img style="width:85px !important;height:52px !important" class=emoicon title='+k+' onclick="BOEmoClick(\''+k+'\')" src=\"'+Smileys[k]+'\">'); else if (k=="(lapin1)" || k=="(lapin2)" || k=="(lapin3)") msg=msg.replace(k, '<img style="width:96px !important;height:96px !important" class=emoicon title='+k+' onclick="BOEmoClick(\''+k+'\')" src=\"'+Smileys[k]+'\">'); else if (k=="(Italy)") msg=msg.replace(k, '<img style="width:120px !important;height:90px !important" class=emoicon title='+k+' onclick="BOEmoClick(\''+k+'\')" src=\"'+Smileys[k]+'\">'); else if (k=="(SpiderPig)") msg=msg.replace(k, '<img style="width:265px !important;height:110px !important" class=emoicon title='+k+' onclick="BOEmoClick(\''+k+'\')" src=\"'+Smileys[k]+'\">'); else if (k=="(Wolf)") msg=msg.replace(k, '<img style="width:192px !important;height:122px !important" class=emoicon title='+k+' onclick="BOEmoClick(\''+k+'\')" src=\"'+Smileys[k]+'\">'); else if (k=="(gladia)") msg=msg.replace(k, '<img style="width:216px !important;height:24px !important" class=emoicon title='+k+' onclick="BOEmoClick(\''+k+'\')" src=\"'+Smileys[k]+'\">'); else msg=msg.replace(k, '<img class=emoicon title='+k+' onclick="BOEmoClick(\''+k+'\')" src=\"'+Smileys[k]+'\">'); } } return msg; }, getAllianceLeaders : function (){ var t = ChatStuff; var c= {}; unsafeWindow.AjaxCall.gPostRequest("allianceGetInfo.php",c, function(rslt){ if(rslt.ok){ var User = rslt.officers; for (z in User){ var cc = User[z]; if (cc.type == 1){ var Tipo = 'CHAN'; } else { if(cc.type == 2){ var Tipo = 'VICE'; } else { if(cc.type == 3){ var Tipo = 'OFFI'; } else { var Tipo = ''; } } } t.leaders[cc.name] = Tipo; } } }); } } /************************ Tower Alerts ************************/ var TowerAlerts = { viewImpendingFunc : null, generateIncomingFunc : null, AlarmeTimer: null, fixTargetEnabled : false, compteur: 0, init : function (){ var t = TowerAlerts; }, secondTimer : null, setPostToChatOptions : function (obj){ var t = TowerAlerts; clearTimeout(t.secondTimer); if (Options.alertConfig.aChat) t.e_eachSecond(); }, e_eachSecond : function (){ // check for incoming marches var t = TowerAlerts; var now = unixTime(); unsafeWindow.player.allCities().sortBy(function(c){return c.number}).each(function(f,c){ var d="",e=""; if(f.underAttack()) { Cities.byID[f.id].c.incomingAttackMarches().each(function(c){ var b=Cities.byID[f.id].c.marches.incoming[c.id]; var arrivalTime = b.secondsToDestination()>0?b.secondsToDestination():0; if ((arrivalTime>0) && (t.getTowerMarch(b.id)==null || t.getTowerMarch(b.id)==undefined)) { t.addTowerMarch (b.id, arrivalTime); if (Options.alertSound.enabled){ my.Options.soundTheAlert(); if (ById('botowertab')) ById('botowertab').style.display="block"; if (arrivalTime > Options.alertSound.expireTime) Options.alertSound.expireTime = arrivalTime; } t.postToChat (f, c, false); saveOptions (); } }); } }); t.secondTimer = setTimeout (t.e_eachSecond, 5000); }, addTowerMarch : function (id, arrivalTime){ var t = TowerAlerts; var now = unixTime(); for (k in Options.towerMarches){ if ((Options.towerMarches[k].arrival+Options.towerMarches[k].added) < now) { //Options.towerMarches[k] = null; delete Options.towerMarches[k]; } } Options.towerMarches['m' + id] = { added:now, arrival:arrivalTime }; }, getTowerMarch : function (mid){ var t = TowerAlerts; return Options.towerMarches['m'+mid]; }, postToChat: function(f, c, force){ var t = TowerAlerts; var e=""; if(c.from.allianceId>0&&Seed.allianceNames&&Seed.allianceNames["a"+b.from.allianceId]){ e="(" + Seed.allianceNames["a"+b.from.allianceId] +")"; }else{ if(c.from.allianceName!==null){e="(" + c.from.allianceName+")";} } if(Cities.byID[f.id].c.wilds[c.to.tileId]){ var a=uW.arStrings.Common.Wilderness+" " + uW.Watchtower.generateCoords(c.to.cityId,c.to.tileId) } else{ var a=uW.arStrings.Common.City+" " + uW.player.cities[c.to.cityId].name + ' ('+uW.player.cities[c.to.cityId].x +','+ uW.player.cities[c.to.cityId].y +')'; if (Cities.byID[f.id].c.defending!=0) a+=" ("+uW.arStrings.Castle.CurrentlyDefending.toUpperCase()+") "; else a+=" ("+uW.arStrings.Castle.CurrentlyHiding.toUpperCase()+") "; } var b=Cities.byID[f.id].c.marches.incoming[c.id]; var attaquant=unsafeWindow.GOR.players[c.from.playerId]?unsafeWindow.GOR.players[c.from.playerId].name:"?"; var msg =''; var arrivalTime = b.secondsToDestination()>0?timestr(b.secondsToDestination()):message; msg += b.general.level?" "+uW.arStrings.Common.General+" : "+b.general.level:""; msg +=' *** '+uW.arStrings.Common.Arrival.toUpperCase()+' *** '; unsafeWindow.Object.keys(b.units).each(function(h){ if(b.units[h].sent>0) { msg += b.units[h].sent + ' ' + uW.arStrings.unitName["u"+h] + ', '; } }); msg = msg.slice(0, -2); msg += " ("+uW.arStrings.Common.Arrival+" " + arrivalTime + "). " ; if (Options.alertConfig.MonQG && parseIntNan(Options.alertConfig.hq)>0) { var mavilleId = uW.player.cities[Options.alertConfig.hq]; msg += ' *** '+translate('BUNKER')+' *** ' + mavilleId.x + ',' + mavilleId.y + ' '; } if (Options.alertConfig.mytroops) { msg += ' *** '+translate('MY TROOPS')+' *** '; unsafeWindow.Barracks.allUnitIds.each(function(r){ if (unsafeWindow.arStrings.unitName["u"+r]) { if(Cities.byID[f.id].c.troops[r].count() > 0) msg += unsafeWindow.arStrings.unitName["u"+r]+': '+parseInt(Cities.byID[f.id].c.troops[r].count())+', '; } }); } var mess = Options.alertConfig.aPrefix +" "+uW.arStrings.Common.Target+" : " + a +" "+uW.arStrings.Common.Attacker+" : " + " " +attaquant + " "+e+" " + msg; var lancement=0; sendChat("/a " + mess); } } /************************ MARCHES ************************/ my.marches = { cont:null, state : null, displayTimer:null, getContent : function (){ var t = my.marches; return t.cont; }, init : function (){ var t = my.marches; t.cont = document.createElement('div'); return this.cont; }, show : function () { var t = my.marches; clearTimeout (t.displayTimer); if (t.state == null){ t.cont.innerHTML = '<DIV id=marchesContent style="height:660px; max-height:660px; overflow-y:auto"></div>'; t.state = 1; } var m = ""; var ma =""; var roww=0; unsafeWindow.player.allCities().sortBy(function(c){return c.number}).each(function(f,c){ var d="",e=""; if(f.underAttack()) { Cities.byID[f.id].c.incomingAttackMarches().each(function(c){ var b=Cities.byID[f.id].c.marches.incoming[c.id]; var arrivalTime = b.secondsToDestination()>0?b.secondsToDestination():0; if ((arrivalTime>0)) { roww++; couleur=""; if (roww%2) couleur=" style='background:#e8e8e8'"; var arrivalTime = b.secondsToDestination()>0?timestr(b.secondsToDestination()):"unknown"; var attaquant=unsafeWindow.GOR.players[c.from.playerId]?unsafeWindow.GOR.players[c.from.playerId].name:"?"; if(Cities.byID[f.id].c.wilds[c.to.tileId]){ var a=uW.arStrings.Common.Wild+' ' + unsafeWindow.Watchtower.generateCoords(c.to.cityId,c.to.tileId) } else{ var a=uW.arStrings.Common.City+' ' + unsafeWindow.player.cities[c.to.cityId].name + ' ('+unsafeWindow.player.cities[c.to.cityId].x +','+ unsafeWindow.player.cities[c.to.cityId].y +')'; } ma += "<tr><td "+couleur+">" + a + "</td><td "+couleur+">" + arrivalTime +"</td>"; var e=""; if(c.from.allianceId>0&&Seed.allianceNames&&Seed.allianceNames["a"+b.from.allianceId]){ e="" + Seed.allianceNames["a"+b.from.allianceId] +""; }else{ if(c.from.allianceName!==null){e="" + c.from.allianceName+"";} } ma += "<td "+couleur+">" + attaquant + "</td><td "+couleur+">"+e+"</td>"; ma +="<td "+couleur+">" +(b.general.level?" "+uW.arStrings.Common.Lvl+" "+b.general.level:" unknown ") + "</td>"; var unt=""; unsafeWindow.Object.keys(b.units).each(function(h){ if(b.units[h].sent>0) { unt += b.units[h].sent + ' ' + unsafeWindow.arStrings.unitName["u"+h] + '<br>'; } }); unt = unt.slice(0, -2); ma +="<td "+couleur+">" + unt + "</td>"; ma +="</tr>"; } }); } }); if (ma!="") { m += '<DIV class=ptstat>'+uW.arStrings.ModalTitle.ImpendingAttacks.toUpperCase()+'</div>'; m += "<table class='marches' width=100% cellspacing=0 bordercolor=black cellpadding=4><tr style='height:30px'><td><b>"+uW.arStrings.Common.Target+"</td><td><b>"+uW.arStrings.Common.Arrival+"</td><td><b>"+uW.arStrings.Common.Attacker+"</td><td><b>"+uW.arStrings.Common.Alliance+"</td><td><b>"+uW.arStrings.WatchTower.GeneralLevel+"</td><td><b>"+uW.arStrings.WatchTower.ArmySize+"</td><tr>"; m += ma; m += "</table><br>"; } var roww=0; var ms=""; unsafeWindow.player.allCities().sortBy(function(c){return c.number}).each(function(f,c){ var a=unsafeWindow.Object.values(Cities.byID[f.id].c.marches.outgoing).compact(); a=a.concat(unsafeWindow.Object.values(Cities.byID[f.id].c.marches.bgReinforcements).compact()); a.each(function(d){ var g="",e='<a onclick="KB.Controllers.MapHelper.gotoCoord('+d.to.x +','+ d.to.y +');">('+d.to.x+','+ d.to.y +')</a>'; roww++; couleur="" if (roww%2) couleur=" style='background:#e8e8e8'"; var now = unixTime(); var arrivalTime = d.secondsToDestination()>0?timestr(d.secondsToDestination()):d.secondsToReturn()>0?timestr(d.secondsToReturn()):"unknown"; ms+="<tr>" ms+="<td "+couleur+">" + Cities.byID[f.id].c.name + "</td><td "+couleur+">"+arrivalTime+"</td><td "+couleur+">"+d.typeString()+"</td><td "+couleur+">"+d.statusString()+"</td><td "+couleur+">"+e+"</td>"; gen=Cities.byID[f.id].c.generals[d.general.id]; if (gen!=undefined) { ms+="<td "+couleur+">"+gen.name +" ("+gen.level()+")</td>" }else { ms+="<td "+couleur+">??</td>"; } ms+="<td "+couleur+">"; unsafeWindow.Barracks.allUnitIds.each(function(j){ var i=(d.returning()||d.defending())?d.units[j].returning:d.units[j].sent; if (i>0) ms +=addCommas(i)+ " "+ unsafeWindow.arStrings.unitName["u"+j] +"<br>"; }); ms+="</td></tr>"; }); }); if (ms!="") { m+= '<DIV class=ptstat>'+translate('OUTGOING MARCHES')+'</div>'; m += "<table class='marches' width=100% cellspacing=0 bordercolor=black cellpadding=4><tr style='height:30px'><td><b>"+uW.arStrings.Common.City+"</td><td><b>"+uW.arStrings.Common.TimeRemaining+"</td><td><b>"+uW.arStrings.Common.Type+"</td><td><b>"+uW.arStrings.Common.Status+"</td><td><b>"+uW.arStrings.Common.Coordinates+"</td><td><b>"+uW.arStrings.Common.General+"</td><td><b>"+uW.arStrings.Common.Troops+"</td></tr>"; m += ms; m += "</table><br>"; } var ms=""; var roww=0; unsafeWindow.player.allCities().sortBy(function(c){return c.number}).each(function(f,c){ Cities.byID[f.id].c.incomingDefendingMarches().each(function(e){ var g=unsafeWindow.GOR.players[e.from.playerId]?unsafeWindow.GOR.players[e.from.playerId].name:e.from.playerName; var zz=addCommasInt(e.upkeep()); var XCoord=e.from.x; var YCoord=e.from.y; var MarchId=e.id; roww++; couleur="" if (roww%2) couleur=" style='background:#e8e8e8'"; ms +="<tr><td></td>"; ms+='<td '+couleur+'>' + Cities.byID[f.id].c.name + '</td><td '+couleur+'><a onclick="KB.Controllers.MapHelper.gotoCoord('+ XCoord +','+ YCoord +');">('+ XCoord +','+ YCoord +')</a> '+g+'</td>'; ms+="<td "+couleur+">"+zz+"</td><td>"; var a=Cities.byID[f.id].c.marches.incoming[MarchId]; unsafeWindow.Barracks.allUnitIds.each(function(i){ gg=a.units[i].sent; if (gg>0) ms +=addCommas(gg)+ " "+ unsafeWindow.arStrings.unitName["u"+i] +"<br>"; }); var now = unixTime(); var arrivalTime = a.getTimeLeftBeforeDecamping()>0?timestr(a.getTimeLeftBeforeDecamping()):"unknown"; ms+="</td><td>"+ arrivalTime +"</td></tr>"; }); }); if (ms!="") { m += '<DIV class=ptstat>'+uW.arStrings.Profile.viewReinforcements.toUpperCase()+'</div>'; m += "<table class='marches' width=100% cellspacing=0 bordercolor=black cellpadding=4><tr style='height:30px'><td></td><td><b>"+translate('City reinforcements')+"</td><td><b>"+uW.arStrings.Embassy.SentFrom+"</td><td><b>"+uW.arStrings.Common.UpKeep+"</td><td>"+uW.arStrings.Common.Troops+"</td><td>"+uW.arStrings.Common.Time+"</td></tr>"; m += ms; m += "</table><br>"; } document.getElementById('marchesContent').innerHTML = m; t.displayTimer=setTimeout(t.show, 4000); }, hide : function (){ var t = my.marches; clearTimeout (t.displayTimer); } }; /************************ RAPPORTS ************************/ my.Hud = { cont:null, state : null, popReport :null, minPages: parseInt(Options.arPageFrom), maxPages: parseInt(Options.arPageTo), totalPages: parseInt(Options.arPageTo), data:[], getContent : function (){ var t = my.Hud; return t.cont; }, init : function (){ var t = my.Hud; t.cont = document.createElement('div'); return this.cont; }, deleteAllReports:function() { var g={}; g.requestType="deleteAll"; uW.AjaxCall.gPostRequest("deleteCheckedReports.php",g, function(i){ uW.seed.newReportCount = 0; }) }, show : function () { var t = my.Hud; t.minPages=parseInt(Options.arPageFrom); t.maxPages=parseInt(Options.arPageTo); t.getAllianceReports(); unsafeWindow.getReport = t.getReportBody; t.cont.innerHTML = '\ <DIV class=ptstat>'+translate('CHECK ALLIANCE REPORTS')+'</div>\ <DIV class=ptentry style="height:30px"><table>\ <tr><td class=xtab>'+uW.arStrings.Common.Page+': <INPUT id="idRptPageFrom" size=1 value="' + t.minPages + '">–<INPUT id="idRptPageTo" size=1 value="' + t.maxPages + '"> \ <span id=idSpanNumPages></span>\ </td>\ <TD class=xtab><INPUT id="idHudSearch" type=submit value="'+uW.arStrings.Common.OK_Button+'" />\ <span id=idSpanHudErrorMsg></span><td><select id="idHudTypeSearch"><option value="">'+uW.arStrings.Common.All+' '+uW.arStrings.Common.Reports+'</option><option value="0">'+uW.arStrings.Watchtower.IncomingAttacks+'</option><option value="1">'+translate('Outgoing attacks')+'</option><option value="2">'+uW.arStrings.Common.Reinforce+'</option></select>\ <select id="idHudMedSearch"><option value="">'+uW.arStrings.Common.All+' '+uW.arStrings.Common.Reports+'</option><option value=1>'+translate('My reports only')+'</option></select></td><td><input type="button" value="'+uW.arStrings.Common.Reports+': '+uW.arStrings.MessagesModal.DeleteAll_button+'" id="BOSuppRapp1"></tr>\ </table></div>\ <DIV id="hudResultsDiv" style="height:600px; max-height:600px; overflow-y:auto;"></div>'; document.getElementById('idHudSearch').addEventListener ('click', t.handleHudSearch, false); document.getElementById('idHudMedSearch').addEventListener ('click', t.DisplayReports, false); document.getElementById('idHudTypeSearch').addEventListener ('click', t.DisplayReports, false); document.getElementById('idRptPageFrom').addEventListener ('change', t.handleRptPages, false); document.getElementById('idRptPageTo').addEventListener ('change', t.handleRptPages, false); document.getElementById("BOSuppRapp1").addEventListener('click', t.deleteAllReports, false); // <input type="button" value="Test " id="TestDelRep"> // ById('TestDelRep').addEventListener('click', t.getScoutReport, false); }, getReportBody : function(Date1,ID,TileId,SideNum, Nom1, Coord1, Nom2, Coord2){ var t = my.Hud; if(SideNum=="Ent") SideNum=0; if(SideNum=="Sor") SideNum=1; if(SideNum=="Ren") SideNum=0; var c = {}; c.rid=ID; c.side=SideNum; if (SideNum=="Ren") SideNum = 2; unsafeWindow.AjaxCall.gPostRequest("fetchReport.php",c, function(rslt){ t.showReportBody(Date1, rslt.data,TileId,SideNum,Nom1, Coord1, Nom2, Coord2); }, function (rslt) { } ); }, handleRptPages: function(){ var t = my.Hud; t.minPages=parseInt(document.getElementById("idRptPageFrom").value); t.maxPages=parseInt(document.getElementById("idRptPageTo").value); if (t.maxPages < t.minPages) { t.maxPages = t.minPages; document.getElementById("idRptPageTo").value = t.maxPages; } Options.arPageFrom = t.minPages; Options.arPageTo = t.maxPages; saveOptions(); t.totalPages=t.maxPages; }, showReportBody: function (Date1,rslt,TileId,SideNum,Nom1,Coord1,Nom2,Coord2) { var t = my.Hud; if (t.popReport == null) { t.popReport = new CPopup('pbShowBarbs', 0, 0, 520, 600, true, function() {clearTimeout (1000);}); t.popReport.centerMe (mainPop.getMainDiv()); } var m = ''; m+='<TABLE class=ptTab cellpadding=3>'; if (SideNum==0) { // Seulement les attaques entrantes if (TileId < 51 && rslt['tileLevel']!=undefined) m+='<TD><FONT size="4px">'+uW.arStrings.Common.Wild+' '+uW.arStrings.Common.Level+' '+rslt['tileLevel']+'</font></td>'; if (TileId < 51 && rslt['tileLevel']==undefined) m+='<TD><FONT size="4px">'+uW.arStrings.Common.Wild+'</font></td>'; if (rslt['conquered']==1) m+='<TD><FONT color="#CC0000" size="4px">'+uW.arStrings.Common.Conquered+'</font></td></tr>'; if (rslt['winner']==1) m+='<TR><TD><FONT color="#CC0000" size="4px"><b>'+uW.arStrings.AllianceReport.AllyDefeated+'</b><br></font></td></tr></table>'; if (rslt['winner']==0) m+='<TR><TD><FONT color="green" size="4px"><b>'+uW.arStrings.AllianceReport.AllyVictorious+'</b><br></font></td></tr></table>'; if (rslt['fght'] != undefined){ m+='<TABLE style="float:left;width:45%;" class=ptTab><tr><td colspan=3><b>'+uW.arStrings.Common.Attacker+': '+Nom1+' <a href="javascript:void(0)" onclick="KB.Controllers.MapHelper.gotoCoord('+ Coord1 +');" class="coordinateLink">('+ Coord1 +')</a></b><br>'+uW.arStrings.Common.General+': '+ rslt['s1KCombatLv'] +'<br>'+translate('Number of tours')+': '+rslt['rnds']+'<br>'+translate('Bonus')+': '+ parseInt(rslt['s1atkBoost']*100) +' % '+uW.arStrings.Common.Attack+' - '+ parseInt(rslt['s1defBoost']*100) +' % '+uW.arStrings.Troops.Defense+'</td></tr>\ <TR style="background-color:#E5DDC9;color: #422714;font-size: 12px;font-weight: bold;"><TD align="center">'+uW.arStrings.Common.Troops+'</td><TD align="center">'+uW.arStrings.Common.Fought+'</td><TD align="center">'+uW.arStrings.Common.Survived+'</td></tr>'; if (rslt['fght']["s1"] != undefined) { unsafeWindow.Barracks.allUnitIds.each(function(i){ if (rslt['fght']["s1"]['u'+i] != undefined) { if (rslt['fght']["s1"]['u'+i][0] > rslt['fght']["s1"]['u'+i][1]) m+='<TR><TD align="center"><div class="pic px30 units unit_'+i+'"></td><TD align="center">'+rslt['fght']["s1"]['u'+i][0]+'</td><TD align="center"><FONT color="#CC0000">'+rslt['fght']["s1"]['u'+i][1]+'</font></td></tr>'; else m+='<TR><TD align="center"><div class="pic px30 units unit_'+i+'"></div></td><TD align="center">'+rslt['fght']["s1"]['u'+i][0]+'</td><TD align="center">'+rslt['fght']["s1"]['u'+i][1]+'</td></tr>'; } }); } m+='</table><TABLE style="float:right;width:45%;" class=ptTab><tr><td colspan=3><b>'+uW.arStrings.Common.Defender+': '+Nom2+' <a href="javascript:void(0)" onclick="KB.Controllers.MapHelper.gotoCoord('+ Coord2 +');" class="coordinateLink">('+ Coord2 +')</a></b><br>'+uW.arStrings.Common.General+': '+ rslt['s0KCombatLv'] +'<br><br>'+translate('Bonus')+': '+ parseInt(rslt['s0atkBoost']*100) +' % '+uW.arStrings.Common.Attack+' - '+ parseInt(rslt['s0defBoost']*100) +' % '+uW.arStrings.Troops.Defense+'</td></tr>'; if (rslt['fght']["s0"] != undefined) { m+='<TR style="background-color:#E5DDC9;color: #422714;font-size: 12px;font-weight: bold;"><TD align="center">'+uW.arStrings.Common.Troops+'</td><TD align="center">'+uW.arStrings.Common.Fought+'</td><TD align="center">'+uW.arStrings.Common.Survived+'</td></tr>'; for (var i=60;i<=63;i++) { if (rslt['fght']["s0"]['f'+i] != undefined) { if (rslt['fght']["s0"]['f'+i][0] > rslt['fght']["s0"]['f'+i][1]) m+='<TR><TD align="center"><div class="pic px30 units unit_'+i+'"></td><TD align="center">'+rslt['fght']["s0"]['f'+i][0]+'</td><TD align="center"><FONT color="#CC0000">'+rslt['fght']["s0"]['f'+i][1]+'</font></td></tr>'; else m+='<TR><TD align="center"><div class="pic px30 units unit_'+i+'"></td><TD align="center">'+rslt['fght']["s0"]['f'+i][0]+'</td><TD align="center">'+rslt['fght']["s0"]['f'+i][1]+'</td></tr>'; } } unsafeWindow.Barracks.allUnitIds.each(function(i){ if (rslt['fght']["s0"]['u'+i] != undefined) { if (rslt['fght']["s0"]['u'+i][0] > rslt['fght']["s0"]['u'+i][1]) m+='<TR><TD align="center"><div class="pic px30 units unit_'+i+'"></td><TD align="center">'+rslt['fght']["s0"]['u'+i][0]+'</td><TD align="center"><FONT color="#CC0000">'+rslt['fght']["s0"]['u'+i][1]+'</font></td></tr>'; else m+='<TR><TD align="center"><div class="pic px30 units unit_'+i+'"></td><TD align="center">'+rslt['fght']["s0"]['u'+i][0]+'</td><TD align="center">'+rslt['fght']["s0"]['u'+i][1]+'</td></tr>'; } }); for (var i=50;i<=55;i++) { if (rslt['fght']["s0"]['f'+i] != undefined) { if (rslt['fght']["s0"]['f'+i][0] > rslt['fght']["s0"]['f'+i][1]) m+='<TR><TD align="center"><div class="pic px30 units unit_'+i+'"></td><TD align="center">'+rslt['fght']["s0"]['f'+i][0]+'</td><TD align="center"><FONT color="#CC0000">'+rslt['fght']["s0"]['f'+i][1]+'</font></td></tr>'; else m+='<TR><TD align="center"><div class="pic px30 units unit_'+i+'"></td><TD align="center">'+rslt['fght']["s0"]['f'+i][0]+'</td><TD align="center">'+rslt['fght']["s0"]['f'+i][1]+'</td></tr>'; } } } else { m+="<tr><td><br>"+uW.arStrings.ModalMessagesViewReports.NoTroopsDefended+"</td></tr>"; } m+='<TR><TD></TD></TR></table>'; } if (rslt['unts'] != undefined) { // per i rinforzi :) lol ca sert pas pour le moment // Rinforzato ! m+='<TABLE style="float:right;width:45%;" class=ptTab><TR style="background-color:#E5DDC9;color: #422714;font-size: 12px;font-weight: bold;"><TD align="center">'+uW.arStrings.Common.Troops+'</td><TD align="center">'+translate('Reinforcements')+'</td></tr>'; unsafeWindow.Barracks.allUnitIds.each(function(i){ if (rslt['unts']['u'+i] != undefined) m+='<TR><TD align="center"><div class="pic px30 units unit_'+i+'"></td><TD align="center">'+rslt['unts']['u'+i]+'</td></tr>'; }); m+="</table>"; } m+='<TR><TD></TD></TR><TR><TD></TD></TR></table>'; if (rslt['loot'] != undefined) { m+='<TABLE class=ptTab cellpadding=3><tr><td colspan=4><b><u>'+uW.arStrings.Common.Resources+':</u></b><br>\ </tr><TR><TD>'+uW.arStrings.ResourceName[0]+': </td><TD><FONT color="#CC0000">'+addCommas(parseInt(rslt['loot'][0]))+'</td>'; m+='<TD>'+uW.arStrings.ResourceName[1]+': </td><TD><FONT color="#CC0000">'+addCommas(parseInt(rslt['loot'][1]))+'</td>'; m+='<TD>'+uW.arStrings.ResourceName[2]+': </td><TD><FONT color="#CC0000">'+addCommas(parseInt(rslt['loot'][2]))+'</td>'; m+='<TD>'+uW.arStrings.ResourceName[3]+': </td><TD><FONT color="#CC0000">'+addCommas(parseInt(rslt['loot'][3]))+'</td>'; m+='<TD>'+uW.arStrings.ResourceName[4]+': </td><TD><FONT color="#CC0000">'+addCommas(parseInt(rslt['loot'][4]))+'</td></table>'; } if (rslt['rsc'] != undefined) { m+='<TABLE class=ptTab cellpadding=3><tr><td colspan=4><b><u>'+uW.arStrings.Common.Resources+':</u></b><br></tr><TR>' if (rslt['gld']!= undefined) m+='<TD>'+uW.arStrings.ResourceName[0]+': </td><TD>'+addCommas(parseInt(rslt['gld']))+'</td>'; m+='<TD>'+uW.arStrings.ResourceName[1]+': </td><TD>'+addCommas(parseInt(rslt['rsc']['r1']))+'</td>'; m+='<TD>'+uW.arStrings.ResourceName[2]+': </td><TD>'+addCommas(parseInt(rslt['rsc']['r2']))+'</td>'; m+='<TD>'+uW.arStrings.ResourceName[3]+': </td><TD>'+addCommas(parseInt(rslt['rsc']['r3']))+'</td>'; m+='<TD>'+uW.arStrings.ResourceName[4]+': </td><TD>'+addCommas(parseInt(rslt['rsc']['r4']))+'</td></table>'; } } else { m+='<table border=0 bgcolor=white width=100% cellpadding=3><tr><td colspan=2 style="background-color:white;"><table>'; // attaquantes sortantes if (TileId < 51 && rslt['tileLevel']!=undefined) m+='<TD><FONT size="3px">'+uW.arStrings.Common.Wild+' '+uW.arStrings.Common.Level+' '+rslt['tileLevel']+'</font></td>'; if (TileId < 51 && rslt['tileLevel']==undefined) m+='<TD><FONT size="3px">'+uW.arStrings.Common.Wild+'</font></td>'; if (TileId == 51 && Nom2==undefined) m+='<TD><FONT size="3px">'+uW.arStrings.Common.BarbarianCamp+'</font></td>'; if (rslt['conquered']==1) m+='<TD><FONT color="#CC0000" size="3px">'+uW.arStrings.Common.Conquered+'</font></td></tr>'; if (rslt['winner']==0) m+='<TR><TD style="background-color:white;"><FONT color="#CC0000" size="3px"><b>'+uW.arStrings.AllianceReport.AllyDefeated+'<br><br></font>'; if (rslt['winner']==1 || rslt['winner']==2) m+='<TR><TD style="background-color:white;"><FONT color="green" size="3px"><b>'+uW.arStrings.AllianceReport.AllyVictorious+'<br><br></font>'; m+="</table>"; m+='<TABLE style="float:left;width:45%;" class=ptTab><tr><td colspan=3><b>'+uW.arStrings.Common.Attacker+': '+Nom1+' <a href="javascript:void(0)" onclick="KB.Controllers.MapHelper.gotoCoord('+ Coord1 +')" class="coordinateLink">('+ Coord1 +')</a></b>'; if (rslt['s1KCombatLv']!=undefined) m+='<br>'+uW.arStrings.Common.General+': '+ rslt['s1KCombatLv'] +''; if (rslt['rnds']!=undefined) m+='<br>'+translate('Number of tours')+': '+rslt['rnds']+'<br>'; if (rslt['s1atkBoost']!=undefined || rslt['s1defBoost']!=undefined) m+=translate('Bonus')+': '+ parseInt(rslt['s1atkBoost']*100) +' % '+uW.arStrings.Common.Attack+' - '+ parseInt(rslt['s1defBoost']*100) +' % '+uW.arStrings.Troops.Defense; m+='</td></tr>'; if (rslt['fght'] != undefined){ m+='<TR style="background-color:#E5DDC9;color: #422714;font-size: 12px;font-weight: bold;"><TD align="center">'+uW.arStrings.Common.Troops+'</td><TD align="center">'+uW.arStrings.Common.Fought+'</td><TD align="center">'+uW.arStrings.Common.Survived+'</td></tr>'; if (rslt['fght']["s1"] != undefined) { unsafeWindow.Barracks.allUnitIds.each(function(i){ if (rslt['fght']["s1"]['u'+i] != undefined) { if (rslt['fght']["s1"]['u'+i][0] > rslt['fght']["s1"]['u'+i][1]) m+='<TR><TD align="center"><div class="pic px30 units unit_'+i+'"></td><TD align="center">'+addCommas(rslt['fght']["s1"]['u'+i][0])+'</td><TD align="center"><FONT color="#CC0000">'+addCommas(rslt['fght']["s1"]['u'+i][1])+'</font></td></tr>'; else m+='<TR><TD align="center"><div class="pic px30 units unit_'+i+'"></td><TD align="center">'+addCommas(rslt['fght']["s1"]['u'+i][0])+'</td><TD align="center">'+addCommas(rslt['fght']["s1"]['u'+i][1])+'</td></tr>'; } }); } } if (Nom2==undefined) Nom2="barbare"; m+='</table><TABLE style="float:right;width:45%;" class=ptTab><tr><td colspan=3><b>'+uW.arStrings.Common.Defender+': '+Nom2+' <a href="javascript:void(0)" onclick="KB.Controllers.MapHelper.gotoCoord('+ Coord2 +');" class="coordinateLink">('+ Coord2 +')</a></b>'; if (rslt['s0KCombatLv']!=undefined) m+='<br>'+uW.arStrings.Common.General+': '+ rslt['s0KCombatLv']; if (rslt['lstlgn'] != undefined) { m+="<br>"+uW.arStrings.MembersInfo.LastOnline+": " + unsafeWindow.formatDateByUnixTime(rslt['lstlgn'])+"<br>"; } else { m+="<br>"; } if (rslt['s0atkBoost']!=undefined || rslt['s0defBoost']!=undefined) { m+=translate('Bonus')+': '+ parseInt(rslt['s0atkBoost']*100) +' % '+uW.arStrings.Common.Attack+' - '+ parseInt(rslt['s0defBoost']*100) +' % '+uW.arStrings.Troops.Defense; } m+='</td></tr>'; if (rslt['fght'] != undefined){ if (rslt['fght']["s0"] != undefined) { m+='<TR style="background-color:#E5DDC9;color: #422714;font-size: 12px;font-weight: bold;"><TD align="center">'+uW.arStrings.Common.Troops+'</td><TD align="center">'+uW.arStrings.Common.Fought+'</td><TD align="center">'+uW.arStrings.Common.Survived+'</td></tr>'; for (var i=60;i<=63;i++) { if (rslt['fght']["s0"]['f'+i] != undefined) { if (rslt['fght']["s0"]['f'+i][0] > rslt['fght']["s0"]['f'+i][1]) m+='<TR><TD align="center"><div class="pic px30 units unit_'+i+'"></td><TD align="center">'+rslt['fght']["s0"]['f'+i][0]+'</td><TD align="center"><FONT color="#CC0000">'+rslt['fght']["s0"]['f'+i][1]+'</font></td></tr>'; else m+='<TR><TD align="center"><div class="pic px30 units unit_'+i+'"></td><TD align="center">'+rslt['fght']["s0"]['f'+i][0]+'</td><TD align="center">'+rslt['fght']["s0"]['f'+i][1]+'</td></tr>'; } } unsafeWindow.Barracks.allUnitIds.each(function(i){ if (rslt['fght']["s0"]['u'+i] != undefined) { if (rslt['fght']["s0"]['u'+i][0] > rslt['fght']["s0"]['u'+i][1]) m+='<TR><TD align="center"><div class="pic px30 units unit_'+i+'"></td><TD align="center">'+addCommas(rslt['fght']["s0"]['u'+i][0])+'</td><TD align="center"><FONT color="#CC0000">'+addCommas(rslt['fght']["s0"]['u'+i][1])+'</font></td></tr>'; else m+='<TR><TD align="center"><div class="pic px30 units unit_'+i+'"></td><TD align="center">'+addCommas(rslt['fght']["s0"]['u'+i][0])+'</td><TD align="center">'+addCommas(rslt['fght']["s0"]['u'+i][1])+'</td></tr>'; } }); for (var i=50;i<=55;i++) { if (rslt['fght']["s0"]['f'+i] != undefined) { if (rslt['fght']["s0"]['f'+i][0] > rslt['fght']["s0"]['f'+i][1]) m+='<TR><TD align="center"><div class="pic px30 units unit_'+i+'"></td><TD align="center">'+rslt['fght']["s0"]['f'+i][0]+'</td><TD align="center"><FONT color="#CC0000">'+rslt['fght']["s0"]['f'+i][1]+'</font></td></tr>'; else m+='<TR><TD align="center"><div class="pic px30 units unit_'+i+'"></td><TD align="center">'+rslt['fght']["s0"]['f'+i][0]+'</td><TD align="center">'+rslt['fght']["s0"]['f'+i][1]+'</td></tr>'; } } } if ((rslt['unts']!=undefined) || (rslt['frt']!=undefined)) { if (rslt['frt']!=undefined) { m+='<TR style="background-color:#E5DDC9;color: #422714;font-size: 12px;font-weight: bold;"><TD align="center">'+uW.arStrings.Common.Defenses+'</td><TD align="center">'+uW.arStrings.Common.Quantity+'</td></tr>'; for (var i=60;i<=63;i++) { if (rslt['frt']['f'+i] != undefined) { m+='<TR><TD align="center"><div class="pic px30 units unit_'+i+'"></td><TD align="center">'+addCommas(rslt['frt']['f'+i])+'</td></tr>'; } } for (var i=50;i<=55;i++) { if (rslt['frt']['f'+i] != undefined) { m+='<TR><TD align="center"><div class="pic px30 units unit_'+i+'"></td><TD align="center">'+addCommas(rslt['frt']['f'+i])+'</td></tr>'; } } } if (rslt['frt']!=undefined) { m+='<TR style="background-color:#E5DDC9;color: #422714;font-size: 12px;font-weight: bold;"><TD align="center">'+uW.arStrings.Common.Troops+'</td><TD align="center">'+uW.arStrings.Common.Quantity+'</td></tr>'; unsafeWindow.Barracks.allUnitIds.each(function(i){ if (rslt['unts']['u'+i] != undefined) { m+='<TR><TD align="center"><div class="pic px30 units unit_'+i+'"></td><TD align="center">'+addCommas(rslt['unts']['u'+i])+'</td></tr>'; } }); } } else { m+="<tr><td><br>"+uW.arStrings.ModalMessagesViewReports.NoTroopsDefended+"</td></tr>"; } m+='<TR><TD></TD></TR></table>'; } m+="</td></tr><tr><td><br></tr>"; if (rslt['pop'] != undefined) { m += '</table><tr><td style="background-color:white;"><b><u>'+translate('Results found')+'</u></b><br><br>'; m+='<table style="float:left;width:45%;"class=ptTab cellpadding=3>'; if ((rslt['unts']!=undefined) || (rslt['frt']!=undefined)) { if (rslt['frt']!=undefined) { m+='<TR style="background-color:#E5DDC9;color: #422714;font-size: 12px;font-weight: bold;"><TD align="center">'+uW.arStrings.Common.Defending+'</td><TD align="center">'+uW.arStrings.Common.Quantity+'</td></tr>'; for (var i=60;i<=63;i++) { if (rslt['frt']['frt'+i] != undefined) { if (parseInt(rslt['frt']['frt'+i]) >0) m+='<TR><TD align="center"><div class="pic px30 units unit_'+i+'"></td><TD align="center">'+addCommas(rslt['frt']['frt'+i])+'</td></tr>'; } } for (var i=50;i<=55;i++) { if (rslt['frt']['frt'+i] != undefined) { if (parseInt(rslt['frt']['frt'+i]) >0) m+='<TR><TD align="center"><div class="pic px30 units unit_'+i+'"></td><TD align="center">'+addCommas(rslt['frt']['frt'+i])+'</td></tr>'; } } } if (rslt['unts']!=undefined) { m+='<TR style="background-color:#E5DDC9;color: #422714;font-size: 12px;font-weight: bold;"><TD align="center">'+uW.arStrings.Common.Troops+'</td><TD align="center">'+uW.arStrings.Common.Quantity+'</td></tr>'; unsafeWindow.Barracks.allUnitIds.each(function(i){ if (rslt['unts']['u'+i] != undefined) { if (parseInt(rslt['unts']['u'+i]) >0) m+='<TR><TD align="center"><div class="pic px30 units unit_'+i+'"></td><TD align="center">'+addCommas(rslt['unts']['u'+i])+'</td></tr>'; } }); } } } m+='</table><table style="float:right;width:45%;"class=ptTab cellpadding=3>'; if (rslt['pop'] != undefined || rslt['knght'] != undefined ||rslt['hap'] != undefined) { m+='<TR style="background-color:#E5DDC9;color: #422714;font-size: 12px;font-weight: bold;"><td align="center">'+uW.arStrings.Common.City+'<td align="center"> </tr>'; if (rslt['pop'] != undefined) { m+='<TR><TD>'+uW.arStrings.Common.Population+'</TD><TD>'+addCommas(parseInt(rslt['pop']))+'</td></tr>'; } if (rslt['hap'] != undefined) { m+='<tr><td>'+uW.arStrings.Common.Happiness+'<td>'+rslt['hap'] +'</td><tr>'; } if (rslt['knght'] != undefined) { m+='<tr><td>'+uW.arStrings.Common.General+'<td>'+rslt['knght']['cbt']+'</td></tr><tr><td> </tr>'; } } if (rslt['blds'] != undefined) { m+='<TR style="background-color:#E5DDC9;color: #422714;font-size: 12px;font-weight: bold;"><td align="center">'+uW.arStrings.Common.Buildings+'<td align="center">'+uW.arStrings.Common.Level+'</tr>'; for (var i=1; i<100; i++){ if (rslt['blds']['b'+i] != undefined) { var blds = rslt['blds']['b'+i]; //var couleur=''; //if (bType==8) couleur=' style="background-color:red"'; m += '<TR><TD>'; arField = [], firstbld = true; m += unsafeWindow.arStrings.buildingName["b"+i] +'</TD><TD>'; for (var zz=1; zz<12; zz++) arField[zz]=0; for (var zz=0; zz < blds.length; zz++) arField[blds[zz]]++ for (var zz=11; zz>0; zz--) { if (arField[zz] > 0) { if (firstbld) firstbld = false; else m+=', '; if (arField[zz] > 1) m+=arField[zz] + ' x '; m+=' ' + zz; } } m+='</TD></TR>'; } } } m+='</table>'; if (rslt['tch'] != undefined) { m+='<table style="float:left;width:45%;" class=ptTab><TR style="background-color:#E5DDC9;color: #422714;font-size: 12px;font-weight: bold;"><TD align="center">'+uW.arStrings.Common.Research+' '+uW.arStrings.Common.Level+'</td><TD align="center">'+uW.arStrings.Common.Level+'</td></tr>'; for (var i=1;i<=16;i++) { if (rslt['tch']['t'+i]!=undefined) { m+='<tr><TD>' + unsafeWindow.arStrings.techName['t'+i] + '</td><TD>'+rslt['tch']['t'+i]+'</td></tr>'; } } m+='</table>'; } var typebutin =''; if (rslt['loot'] != undefined) { m+='</td><tr><td style="background-color:white;"><b><u>'+uW.arStrings.Common.Resources+' '+typebutin+' :</u></b><br>'; m+='<TABLE class=ptTab cellpadding=3><TR><TD>'+uW.arStrings.ResourceName[0]+': </td><TD>'+addCommas(parseInt(rslt['loot'][0]))+'</td>'; m+='<TD>'+uW.arStrings.ResourceName[1]+': </td><TD>'+addCommas(parseInt(rslt['loot'][1]))+'</td>'; m+='<TD>'+uW.arStrings.ResourceName[2]+': </td><TD>'+addCommas(parseInt(rslt['loot'][2]))+'</td>'; m+='<TD>'+uW.arStrings.ResourceName[3]+': </td><TD>'+addCommas(parseInt(rslt['loot'][3]))+'</td>'; m+='<TD>'+uW.arStrings.ResourceName[4]+': </td><TD>'+addCommas(parseInt(rslt['loot'][4]))+'</td>'; if (rslt['loot'][5]) { m+='<tr><td>'+translate('Objects found')+':</td>'; for (var i=1;i<10;i++) { if (rslt['loot'][5]['110'+i]==1) m+='<td colspan=3>' + unsafeWindow.arStrings.itemName["i110"+i] + '<div class="item-icon pic px70 items item_110'+i+'"></td>'; } } m+='</tr></table>'; } if (rslt['rsc'] != undefined) { m+='<TABLE class=ptTab cellpadding=3><tr><td colspan=4><b><u>'+uW.arStrings.Common.Resources+':</u></b><br></tr><TR>'; if (rslt['gld']!= undefined) m+='<TD>'+uW.arStrings.ResourceName[0]+': </td><TD>'+addCommas(parseInt(rslt['gld']))+'</td>'; m+='<TD>'+uW.arStrings.ResourceName[1]+': </td><TD>'+addCommas(parseInt(rslt['rsc']['r1']))+'</td>'; m+='<TD>'+uW.arStrings.ResourceName[2]+': </td><TD>'+addCommas(parseInt(rslt['rsc']['r2']))+'</td>'; m+='<TD>'+uW.arStrings.ResourceName[3]+': </td><TD>'+addCommas(parseInt(rslt['rsc']['r3']))+'</td>'; m+='<TD>'+uW.arStrings.ResourceName[4]+': </td><TD>'+addCommas(parseInt(rslt['rsc']['r4']))+'</td></table>'; } m+="<br><br></table>"; } t.popReport.getMainDiv().innerHTML = '<DIV style="max-height:520px; height:520px; overflow-y:scroll">' + m + '</div>'; t.popReport.getTopDiv().innerHTML = '<TD align="center"><B>'+translate('Battle reports')+' - '+unsafeWindow.formatDateByUnixTime(Date1)+'</td>'; t.popReport.show(true); }, DisplayReports : function (){ var t = my.Hud; var data = t.data; var filtre = document.getElementById("idHudTypeSearch").value; var filtre2 = document.getElementById('idHudMedSearch').value; var results=document.getElementById("hudResultsDiv"); if(!t.data.length) { results.innerHTML = '<center><b>'+translate('No reports found')+'</b></center>'; return; } var m = '<center><table width=100% cellspacing=0 cellpadding=3><thead><th>P</th><th> </th><th>'+uW.arStrings.Common.Date+'</th><th colspan=3>'+uW.arStrings.Common.Attacker+'</th><th>'+uW.arStrings.Common.Type+'</th><th colspan=4>'+uW.arStrings.Common.Target+'</th></thead>'; m += '<tbody>'; for ( var i=0; i<t.data.length;i++) { var rpt = data[i]; if (rpt.side0Name===undefined) { rpt.side0Name = "-"; } // continue; style='padding:2px;' ; if (rpt.TypeName=="Ent") { style=' style="background-color:#EF9999;padding:2px;"'; } if (rpt.TypeName=="Ren") { style=' style="background-color:#99EF99;padding:2px;"'; } if (((filtre2=="" || filtre2=="1" && (rpt.side1Name==Seed.player.name|| rpt.side0Name==Seed.player.name))) && (filtre=="" || (filtre=="0" && rpt.TypeName=="Ent") || (filtre=="1" && rpt.TypeName=="Sor") || (filtre=="2" && rpt.TypeName=="Ren"))) { m += '<tr ><td '+style+'><SPAN onclick="ptAllianceReports('+rpt.page+')"> <a>'+rpt.page+'</a></span></td>\ <td '+style+'>'; if (rpt.marchType == 3 && rpt.TypeName=="Ent") { } else { m+='<img onclick="getReport('+rpt.reportUnixTime+','+ rpt.marchReportId +','+rpt.side0TileType +',\''+rpt.TypeName+'\',\''+rpt.side1Name.replace(/\'/g,"_")+'\',\''+ rpt.side1XCoord +','+ rpt.side1YCoord +'\',\''+rpt.side0Name.replace(/\'/g,"_")+'\',\''+ rpt.side0XCoord +','+ rpt.side0YCoord +'\');" border=0 src="https://cdn1.iconfinder.com/data/icons/woothemesiconset/16/search_button.png">'; } m+=' </td>\ <td '+style+'>'+unsafeWindow.formatDateByUnixTime(rpt.reportUnixTime)+'</td>\ <td '+style+'>'+rpt.side1Name+'</td>\ <td '+style+'>'+rpt.side1AllianceName.replace(translate('Unaligned'),'-')+'</td>\ <td '+style+'><a href="javascript:void(0)" onclick="KB.Controllers.MapHelper.gotoCoord('+ rpt.side1XCoord +','+ rpt.side1YCoord +')" class="coordinateLink">('+ rpt.side1XCoord +','+ rpt.side1YCoord +')</a></td>'; if (rpt.marchType == 3) m +='<TD '+style+'><FONT color="FF9933">'+rpt.marchName+'</font></td>'; else if (rpt.marchType == 4) m +='<TD '+style+'><FONT color="FF0033">'+rpt.marchName+'</font></td>'; else m +='<TD '+style+'><FONT color="339933">'+rpt.marchName+'</font></td>'; if (rpt.side0Name!=undefined) { m+='<td '+style+'>'+rpt.side0Name+'</td>'; }else{ m+='<td '+style+'>-</td>'; } m+='<td '+style+'>'+rpt.side0AllianceName.replace(translate('Unaligned'),'-')+'</td>\ <td '+style+'><a href="javascript:void(0)" onclick="KB.Controllers.MapHelper.gotoCoord('+ rpt.side0XCoord +','+ rpt.side0YCoord +')" class="coordinateLink">('+ rpt.side0XCoord +','+ rpt.side0YCoord +')</a></td>'; if (rpt.side0TileType < 51 && rpt.side0TileLevel!=undefined) { m+='<td '+style+'>'+uW.arStrings.Common.Wild+' '+rpt.side0TileLevel+'</td>'; } else { if (rpt.side0TileType = 51 && rpt.side0CityId==0 && rpt.side0PlayerId==0) { m+='<td '+style+'>'+uW.arStrings.Common.BarbarianCamp+'</td>'; }else { m+='<td '+style+'>'+uW.arStrings.Common.City+'</td>'; } } m+='</tr>'; } } m += '</tbody></table></center>'; results.innerHTML = m; }, handleHudSearchCB : function(rslt, page) { var t = my.Hud; if (rslt) { if (!rslt.ok) { document.getElementById("idSpanHudErrorMsg").innerHTML = rslt.errorMsg; return; } t.totalPages=parseInt(rslt.totalPages); if (t.totalPages < t.maxPages) t.maxPages = t.totalPages; if (rslt.arReports && page) { var ar = rslt.arReports; var rptkeys = unsafeWindow.Object.keys(ar); var myAllianceId = getMyAlliance()[0]; for (var i = 0; i < rptkeys.length; i++) { var rpt = ar[rptkeys[i]]; rpt.page = page; var side0Name = rslt.arPlayerNames['p'+rpt.side0PlayerId]; rpt.side0Name = side0Name; rpt.side1Name = rslt.arPlayerNames['p'+rpt.side1PlayerId]; if (rpt.side0AllianceId > 0) rpt.side0AllianceName = rslt.arAllianceNames['a'+rpt.side0AllianceId]; else rpt.side0AllianceName = translate('Unaligned'); if (rpt.side1AllianceId > 0) rpt.side1AllianceName = rslt.arAllianceNames['a'+rpt.side1AllianceId]; else rpt.side1AllianceName = translate('Unaligned'); if (rpt.side0CityId > 0) rpt.side0CityName = rslt.arCityNames['c'+rpt.side0CityId]; else rpt.side0CityName = 'none'; if (rpt.side1CityId > 0) rpt.side1CityName = rslt.arCityNames['c'+rpt.side1CityId]; else rpt.side1CityName = 'none'; if (rpt.marchType == 1) rpt.marchName = uW.arStrings.Common.Transport; else if (rpt.marchType == 3) rpt.marchName = uW.arStrings.Common.Scout; else if (rpt.marchType == 2) rpt.marchName = uW.arStrings.Common.Reinforce; else if (rpt.marchType == 4) rpt.marchName = uW.arStrings.Common.Attack; else rpt.marchName = translate('unknown'); rpt.targetDiplomacy = getDiplomacy (rpt.side0AllianceId); if (myAllianceId != rpt.side1AllianceId) { rpt.TypeName = "Ent"; } if (myAllianceId == rpt.side1AllianceId) { rpt.TypeName = "Sor"; } if (rpt.marchType == 2) { rpt.TypeName = "Ren"; } t.data.push(rpt); } } if (parseInt(page)+1 <= t.maxPages) { var results=document.getElementById("hudResultsDiv"); results.innerHTML = uW.arStrings.MapHelper.Searching+' '+uW.arStrings.Common.Page+' ' + (parseInt(page)+1) + ' '+translate('of')+' ' + t.maxPages; t.getAllianceReports(parseInt(page)+1); } else if (page) t.DisplayReports(); } }, handleHudSearch : function() { var t = my.Hud; var results=document.getElementById("hudResultsDiv"); results.innerHTML = uW.arStrings.MapHelper.Searching+' '+uW.arStrings.Common.Page+' ' + t.minPages + ' '+translate('of')+' ' + t.maxPages; t.data=[]; t.getAllianceReports(t.minPages); }, getAllianceReports : function (pageNum){ var t = my.Hud; var c= {}; c.pageNo = pageNum; c.group = "a"; unsafeWindow.AjaxCall.gPostRequest("listReports.php",c, function(rslt){ t.handleHudSearchCB (rslt, pageNum); }, function (rslt) { t.handleHudSearchCB (rslt, pageNum); } ); }, hide : function (){ } } /************************ GENERALS ************************/ my.Generals = { cont : null, state : null, init : function (){ var t = my.Generals; t.cont = document.createElement('div'); uW.BOTerres = t.show; return t.cont; }, getContent : function (){ var t = my.Generals; return t.cont; }, hide : function (){ var t = my.Generals; }, publi :function(cityId,fbid,name,idk) { var t = my.Generals; var c = []; c.push(["REPLACE_KnIgHtNaMe",name]); c.push(["REPLACE_KnIgHtId",idk]); c.push(["REPLACE_CiTyId",cityId]); uW.common_postToProfile('601',c,fbid,'601_energy') }, DelGen : function(id,kid){ var t = my.Generals; var d = {}; d.cid = id; d.kid = kid; uW.AjaxCall.gPostRequest("fireKnight.php", d, function (e) { delete Cities.byID[id].c.generals[kid]; t.show(); }, function (e) { t.DelGen(id,kid); }); }, show : function (){ var t = my.Generals; uW.BOGenePubl = t.publi; uW.BODeleteGeneral = t.DelGen; clearTimeout (t.displayTimer); var m = ''; m+= '<div id="BOGeneralShoW">'; m+= "<DIV class=ptstat>"+uW.arStrings.Common.Generals.toUpperCase()+"</div>"; for (var c=0; c<Cities.numCities; c++){ var city = Cities.cities[c]; m+= '<TABLE cellspacing=0 cellpadding=0 class=ptTabPad width=99%>'; m+= '<TR><TD colspan=7><DIV class=ptstat>'+ city.c.name +' <a href="javascript:void(0)" onclick="KB.Controllers.MapHelper.gotoCoord('+ city.c.x +','+ city.c.y+');">('+ city.c.x +','+ city.c.y +')</a></div></td></tr>'; if (Cities.cities[c].c.generalsCount()>0) { m+= "<tr><td colspan=3 width=160>"+uW.arStrings.Common.Name+"</td><td width=40>Exp</td><td width=30>"+uW.arStrings.Common.Level+"</td><td width=30>"+uW.arStrings.Common.Energy+"</td><td>"+uW.arStrings.Common.Actions+"</td></tr>"; Cities.cities[c].c.generalsSorted().each(function(b){ var f = b.experience() - b.expNeededForCurrentLevel(), e = b.expNeededForNextLevel() - b.expNeededForCurrentLevel(); if(b.idle() && b.energy()==b.maxEnergy) var Del = "<A onclick='BODeleteGeneral("+city.c.id+","+b.id+")'><img src='"+XX+"' title='"+uW.arStrings.Common.Dismiss+"'></a>"; else var Del = ""; m+= "<tr><td width=1%>"+Del+"</td><td><img width=25 src='https://graph.facebook.com/"+b.fbuid+"/picture'/></td><td>"+b.name+"</td><td>" + addCommas(f) + " / " + addCommas(e) + "</td><td>"+b.level()+" </td><td>"+b.energy()+" / "+b.maxEnergy+"</td>"; m+= "<td>"; if (uW.seed.appFriends[b.fbuid]) { m+= "<a href=# onclick='NeighborPanel.postOffering("+b.fbuid+");'>"+uW.arStrings.MainChrome.SendOfferings+"</a><br>"; } if(b.idle()) { if (b.energy()<b.maxEnergy) { m+= "<a href=# onclick=\"BOGenePubl("+city.c.id+","+b.fbuid+",'"+b.name+"',"+b.id+");return false;\">"+uW.arStrings.Generals.AskForEnergy+"</a><br>"; } } else { m+= "<b><i>"+translate('Outside the city')+"...</i></b>"; } m+= "</td></tr>"; }); } else { m+= "<tr><td>"+uW.arStrings.March.NoGeneral+"</td></tr>"; } m+= "</table>"; } m+= '</div>'; m+= '<div id="BOGeneralAccept">'; m+= "<DIV class=ptstat>"+uW.arStrings.Common.Appoint.toUpperCase() + " " + uW.arStrings.Common.Generals.toUpperCase()+"</div>"; m+= 'Prova'; m+= '</div>'; t.cont.innerHTML = m; t.displayTimer = setTimeout (t.show, 20000); ById('BOGeneralShoW').style.display = 'block'; ById('BOGeneralAccept').style.display = 'none'; } } /************************ WILDS ************************/ my.Wilds = { cont : null, state : null, upGoldTimer : null, wildList : [], buildList : {}, init : function (){ var t = my.Wilds; t.cont = document.createElement('div'); unsafeWindow.BOTerres = t.show; return t.cont; }, getContent : function (){ var t = my.Wilds; return t.cont; }, hide : function (){ var t = my.Wilds; }, show : function (){ var t = my.Wilds; clearTimeout (t.displayTimer); if (t.state == null){ t.cont.innerHTML = '<DIV id=wildContent style="height:640px; max-height:640px; overflow-y:auto">'; t.state = 1; } m = "<DIV class=ptstat>"+unsafeWindow.arStrings.Common["Wilds"]+"</div>"; for (var c=0; c<Cities.numCities; c++){ var city = Cities.cities[c]; var row = 0; var position = "right"; if ((c+1)%2) position="left"; m += '<TABLE cellspacing=0 cellpadding=0 class=ptTabPad width=45% style="float:'+position+'">'; m += '<TR><TD colspan=20><DIV class=ptstat>'+ city.c.name +' <a href="javascript:void(0)" onclick="KB.Controllers.MapHelper.gotoCoord('+ city.c.x +','+ city.c.y+');">('+ city.c.x +','+ city.c.y +')</a></div></td></tr>'; if(city.c.wildernessCount()===0){ }else { m += '<TR style="background-color:white; font-weight:bold;" align=right><TD align=left>'+uW.arStrings.Common.Abandon+'</td><TD align=left>'+uW.arStrings.Common.Type+'</td><td align=left>'+uW.arStrings.Common.Level+'</td><TD align=left>'+uW.arStrings.Common.Coordinates+'</td></tr>'; city.c.wilderness().each(function(wild) { m += '<TR align=right'+ (row++%2?'':' class=ptOddrow') +'><TD align=left>\ <a onclick="this.style.display=\'none\';setTimeout (function (){Castle.abandonWild('+wild.id+');setTimeout(function() { BOTerres() },1000); },500);return false;"><img src="https://cdn1.iconfinder.com/data/icons/musthave/16/Remove.png" border=0></a></td><td align=left>'+wild.name +'</td>\ <TD>'+ wild.level +'</td><TD align=center><a href="javascript:void(0)" onclick="KB.Controllers.MapHelper.gotoCoord('+wild.x +','+ wild.y+');">('+ wild.x +','+ wild.y +')</a></td></tr>'; }); } m+="</table>"; } document.getElementById('wildContent').innerHTML = m + '</div>'; t.displayTimer = setTimeout (t.show, 20000); } } /************************ Auto Post Scout ************************/ var ScoutAlert = { minuteTimer : null, totPage : null, curPage : null, init : function (){ var t = ScoutAlert; t.CheckTotalPage(); }, CheckTotalPage : function () { var t = ScoutAlert; if (Options.alertConfig.aChatScout) { var g={}; g.pageNo = ''; uW.AjaxCall.gPostRequest("listReports.php",g, function (rslt) { t.totPage = rslt.totalPages; if (t.totPage > 0) { t.curPage = 1; t.ReadPage(); } }, function (rslt) { t.minuteTimer = setTimeout (function (){ t.CheckTotalPage; }, 5 * 60 * 1000); // 1 min } ); } else { t.minuteTimer = setTimeout (function (){ t.CheckTotalPage; }, 2 * 60 * 1000); // 2 min } }, ReadPage : function () { var t = ScoutAlert; if (t.curPage > t.totPage) { t.minuteTimer = setTimeout (function (){ t.CheckTotalPage; }, 5 * 60 * 1000); } else { var g={}; g.pageNo = t.curPage; uW.AjaxCall.gPostRequest("listReports.php",g, function (rslt) { t.getScoutReport(rslt); }, function (rslt) { t.minuteTimer = setTimeout (function (){ t.CheckTotalPage; }, 60 * 1000); // 1 min } ); } }, getScoutReport : function (rslt) { var t = ScoutAlert; var NR = rslt.arReports; for (k in NR) { for (var c=0; c<Cities.numCities; c++) { var city = Cities.cities[c]; if(NR[k].side1XCoord == city.c.x && NR[k].side1YCoord == city.c.y) return; } if(NR[k].marchType == 3 && NR[k].reportStatus == 2) { var b = uW.arStrings.ModalMessagesViewReports.ScoutingAt+' '+NR[k].side0XCoord+','+NR[k].side0YCoord+'! '+translate('The exploration seems to come from')+' '; b+= '('+NR[k].side1XCoord+','+NR[k].side1YCoord+'). '+uW.arStrings.Common.Date+': '+timeConverter(NR[k].reportUnixTime); sendChat("/a " + b); var MarchId = NR[k].marchReportId; document.getElementsByTagName(MarchId).checked = true; t.ReadReport(MarchId); } } t.curPage++; t.minuteTimer = setTimeout (t.ReadPage, 5 * 1000); // 5 sec }, ReadReport : function (MID){ var t = ScoutAlert; var g={}; g.s0rids = MID; unsafeWindow.AjaxCall.gPostRequest("readCheckedReports.php",g, function(rslt) { if(!rslt.ok) setTimeout (function (){ t.ReadReport(MID); }, 2000); else uW.seed.newReportCount = uW.seed.newReportCount - 1; }); } } /************************ Auto Delete GoR Message ************************/ var AutoDeleteGoRMessage = { minuteTimer : null, timerdelete : null, numreport : [], page : null, cont : null, init : function (){ var t = AutoDeleteGoRMessage; t.cont = 1; if (Options.EnableMesRep) t.CheckPage(); else t.minuteTimer = setTimeout (t.init, 5*60*1000); }, CheckPage : function () { var t = AutoDeleteGoRMessage; var g={}; g.pageNo=1; g.requestType="GET_MESSAGE_HEADERS_FOR_USER_INBOX"; g.boxType="inbox"; uW.AjaxCall.gPostRequest("getEmail.php",g, function (rslt) { t.page = rslt.noOfPages; if (t.page > 0) t.start(); else t.minuteTimer = setTimeout (t.CheckPage, 5*60*1000); }, function (rslt) { t.minuteTimer = setTimeout (t.CheckPage, 5*60*1000); } ); }, start : function () { var t = AutoDeleteGoRMessage; if (!Options.EnableMesRep) { t.init(); return; } if (t.cont <= t.page) { var g={}; g.pageNo=t.cont; g.requestType="GET_MESSAGE_HEADERS_FOR_USER_INBOX"; g.boxType="inbox"; uW.AjaxCall.gPostRequest("getEmail.php",g, function(rslt) { t.timerdelete = setTimeout ( function () { t.deleterep(rslt); }, 5 * 1000); // 5 sec }, function (rslt) { t.start(); } ); } else { t.cont = 1; t.minuteTimer = setTimeout (t.init, 5*60*1000); } }, deleterep : function (rslt) { var t = AutoDeleteGoRMessage; var MS = rslt.message; for (k in MS){ var ID = MS[k].messageId; var SUB = MS[k].subject.toLowerCase(); var BY = MS[k].fromUserId; var del = false; if (SUB.indexOf('acquista') >= 0) del = true; if (SUB.indexOf('vinci') >= 0) del = true; if (SUB.indexOf('gratis') >= 0) del = true; if (SUB.indexOf('pacco') >= 0) del = true; if (SUB.indexOf('sconto') >= 0) del = true; if (SUB.indexOf('fortuna') >= 0) del = true; if (SUB.indexOf('ottieni') >= 0) del = true; if (SUB.indexOf('oro') >= 0) del = true; if (SUB.indexOf('gratis') >= 0) del = true; if (SUB.indexOf('nuove') >= 0) del = true; if (SUB.indexOf('commercio') >= 0) del = true; if (SUB.indexOf('invia') >= 0) del = true; if (SUB.indexOf('monete') >= 0) del = true; if (SUB.indexOf('oro') >= 0) del = true; if (SUB.indexOf('vinci') >= 0) del = true; if (SUB.indexOf('gratis') >= 0) del = true; if (SUB.indexOf('spendi') >= 0) del = true; if (SUB.indexOf('ricevi') >= 0) del = true; if (SUB.indexOf('scontati del') >= 0) del = true; // if (SUB.indexOf('nessun oggetto') >= 0) del = true; if (SUB.indexOf('torneo') >= 0) del = false; if (SUB.indexOf('aggiornare') >= 0) del = false; if (del && BY == 0){ uW.seed.newMailCount = uW.seed.newMailCount-1; t.numreport.push(ID); } } if (t.numreport >= 5) t.deletemess(); t.cont++; t.start(); }, deletemess : function () { var t = AutoDeleteGoRMessage; var g={}; g.requestType="ACTION_ON_MESSAGES"; g.selectedAction="delete"; g.boxType="inbox"; g.selectedMessageIds=t.numreport; uW.AjaxCall.gPostRequest("getEmail.php",g, function(rslt){ t.numreport = []; }, function(rslt){ t.deletemess(); } ); } } /************************ Auto Delete Reports ************************/ var AutoDeleteReports = { init : function (){ var t = AutoDeleteReports; t.deleterep(); }, minuteTimer : null, numreport : [], deleterep : function (){ var t = AutoDeleteReports; if(uW.seed.newReportCount >= 1 && Options.EnableDelRep){ var g={}; g.pageNo="1"; unsafeWindow.AjaxCall.gPostRequest("listReports.php",g, function(rslt){ if(rslt.ok){ var RN = rslt.arReports; for (k in RN){ for(var i = 0; i < CrestData.length; i++) { if (RN[k].side0XCoord == CrestData[i].X && RN[k].side0YCoord == CrestData[i].Y) { t.numreport.push(RN[k].marchReportId); uW.seed.newReportCount = uW.seed.newReportCount -1; } } } if (t.numreport != "") t.deletemess(); } }); } t.minuteTimer = setTimeout (t.deleterep, (Options.DeleteRepEvr*60*1000)); }, deletecheck : function (){ var t = AutoDeleteReports; document.getElementsByTagName(idrpt).checked = true; var g={}; g.s1rids=t.numreport; unsafeWindow.AjaxCall.gPostRequest("deleteCheckedReports.php",g, function(rslt){ if(rslt.ok) t.numreport = [""]; }); } } /************************ Food Alerts *************************/ var FoodAlerts = { init : function (){ var f = FoodAlerts; f.e_eachMinute(); }, minuteTimer : null, e_eachMinute : function (){ var f = FoodAlerts; var now = unixTime(); row = []; if (Options.enableFoodWarnTchat) { for(i=0; i < Cities.numCities; i++) { //var rp = getResourceProduction (Cities.cities[i].id); var foodleft = parseInt(Cities.cities[i].c.resources[1].count); var usage = parseInt(Cities.cities[i].c.resources[1].hourlyTotalRate()) - parseInt(Cities.cities[i].c.upkeep()); //row[i] = rp[1] - usage; var timeLeft = parseInt(Cities.cities[i].c.resources[1].count) / (0-usage) * 3600; var msg = ''; if (timeLeft<0){ } else if (timeLeft<(Options.foodWarnHours*3600)) { msg += translate('My city')+' ' + Cities.cities[i].c.name.substring(0,15) + ' (' + Cities.cities[i].c.x +','+ Cities.cities[i].c.y + ') '; msg += ' '+translate('is running out of food')+', '+translate('so please send some')+'? '+translate('Current stock')+': '+addCommasWhole(foodleft).replace(',',' ').replace(',',' ').replace(',',' ').replace(',',' ')+' ('+timestrShort(timeLeft)+') '+uW.arStrings.Common.Production+': '+addCommas(usage).replace(',',' ').replace(',',' ').replace(',',' ').replace(',',' '); sendChat ("/a " + msg); //alert(msg); } } f.minuteTimer = setTimeout (f.e_eachMinute, 1800000); } } } /************************ REASSING ************************/ my.Reassign = { cont : null, displayTimer : null, state : null, curTabBut : null, curTabName : null, sourceCity : {}, destinationCity : {}, rows : [], init : function (){ var t = my.Reassign; t.cont = document.createElement('div'); t.state = null; return t.cont; }, getContent : function (){ var t = my.Reassign; return t.cont; }, hide : function (){ var t = my.Reassign; t.state = null; clearTimeout (t.displayTimer); }, show : function (){ var t = my.Reassign; var ModelCity = {}; var rownum = 0; var rownum2 = 0; clearTimeout (t.displayTimer); if (t.state == null) { m = "<DIV class=ptstat>"+uW.arStrings.Common.Reassign+" "+uW.arStrings.Common.Troops+"</div>"; m +="<div id='statpourREA'></div>"; m += "<TABLE align=center width='450px' class=ptTab border=0 align=left cellpadding=2>\ <tr align=center valign=middle><td colspan=1 width=100><b><u>"+uW.arStrings.Common.From+"</b></u><br><span id=REAsrcRptspeedcity></span></td>\ <td colspan=1 width='100px'><input type=button style='font-weight:bold' id=REAaction value='"+uW.arStrings.Common.Reassign+"'></td>\ <td colspan=1 width='100px'><b><u>"+uW.arStrings.Common.To+"</b></u><br><span id=REAdesRptspeedcity></span></td>\ <td width=150 colspan=1> </td></tr>\ <tr align=center valign=top><td width=100><div id=REAstatsource></div></td>\ <td ><table cellspacing=0 cellpadding=0 width=99%>"; unsafeWindow.Barracks.allUnitIds.each(function(r){ if (unsafeWindow.arStrings.unitName["u"+r]) { if (rownum++ % 2) style = ''; else style = ' style = "background: #e8e8e8"'; m += '<tr '+style+'><td align=right> </td><td align=left><input style="border:1px solid black;height:16px;font-size:11px;" id="REAnbunit'+r+'" type=text size=7 value="0"></td></tr>'; } }); m += "</table></td><td><div id=REAstatdest></div></td>"; m += "<td colspan=2><table cellspacing=0 cellpadding=0 width=80%><tr><td> </table>"; m += "</tr><tr><td colspan=4><div id='ptREAStatus' style='text-align:center;overflow-y:auto; max-height:30px; height: 30px;'></div></td></tr></table>"; t.cont.innerHTML = m; t.statpourREA = document.getElementById ('statpourREA'); t.statutREA = document.getElementById ('ptREAStatus'); t.actionREA = document.getElementById ('REAaction'); t.actionREA.addEventListener ('click', t.clickReassigneDo, false); var dcp1 = new CdispCityPicker ('ptREA1', document.getElementById('REAdesRptspeedcity'), false, t.clickREACityDestinationSelect, 1); var dcp0 = new CdispCityPicker ('ptREA0', document.getElementById('REAsrcRptspeedcity'), false, t.clickREACitySourceSelect, Cities.byID[unsafeWindow.currentcityid].idx); t.state = 1; } var str = "<TABLE class=ptTabLined cellspacing=0><TR valign=top align=right><TD width=120></td><TD width=88 style='background: #ffc'><B>"+uW.arStrings.Common.Total.toUpperCase()+"</b></td>"; for(i=0; i<Cities.numCities; i++) { Gate = Cities.cities[i].c.defending; if(Gate == 0) var couleurr="#77EE77"; if(Gate != 0) var couleurr="#EE7777"; str += "<TD width=81 style='background-color:"+couleurr+"' align=center><B>"+ Cities.cities[i].c.name +'</b><BR><a onclick="KB.Controllers.MapHelper.gotoCoord('+Cities.cities[i].c.x +','+ Cities.cities[i].c.y+');">('+Cities.cities[i].c.x +','+ Cities.cities[i].c.y+')</A></td>'; } str +="</tr>"; str += "<tr><td><br></td></tr>"; unsafeWindow.Barracks.allUnitIds.each(function(r){ var unitTotal=0; var m=""; if (unsafeWindow.arStrings.unitName["u"+r]) { style = " style = 'background: #e8e8e8'"; for(var i=0; i<Cities.numCities; i++) { m += "<TD width=81 "+style+" align=right>"+ addCommas(Cities.cities[i].c.troops[r].count()) +'</td>'; unitTotal+=parseInt(Cities.cities[i].c.troops[r].count()); } str += "<tr><td "+style+" align=right><b>"+unsafeWindow.arStrings.unitName["u"+r]+"</td><td "+style+" align=right>"+addCommas(unitTotal)+" "+ m + "</tr>"; } }); t.statpourREA.innerHTML = str; t.displayTimer = setTimeout (t.show, 10000); }, clickREACitySourceSelect : function (city){ var t = my.Reassign; var rownum=0; t.sourceCity = city; var SourceId = t.sourceCity.c.id; unsafeWindow.Barracks.allUnitIds.each(function(r){ if (ById("REAnbunit"+r)) ById("REAnbunit"+r).value="0"; }); t.actionREA.disabled=false; var m=""; m="<table cellspacing=0 cellpadding=0 width=80%>"; unsafeWindow.Barracks.allUnitIds.each(function(r){ if (unsafeWindow.arStrings.unitName["u"+r]) { if (rownum++ % 2) style = ''; else style = 'background: #e8e8e8;'; m += '<tr style="'+style+'"><td align=right><b>'+unsafeWindow.arStrings.unitName["u"+r]+'</b></td>\ <td align=left><input style="border:1px solid black;height:16px;font-size:11px;" id="REAdestunit'+r+'" type=text size=7 readonly value="'+parseInt(Cities.cities[t.sourceCity.idx].c.troops[r].count())+'"> \ <input type=button value=">" id="REApdestunit'+r+'" style="border:1px solid black;height:16px;font-size:11px;"></td></tr>'; } }); m += "</table>"; ById("REAstatsource").innerHTML = m; unsafeWindow.Barracks.allUnitIds.each(function(r){ if (unsafeWindow.arStrings.unitName["u"+r]) { ById("REApdestunit"+r).addEventListener ('click', function() { var nomcha=this.id.replace("REApdest","REAdest"); var nomcha2=this.id.replace("REApdestunit","REAnbunit"); ById(nomcha2).value=0; // on met à 0 var maxtroupe=getTroopMax(SourceId); var nbunitto=0; unsafeWindow.Barracks.allUnitIds.each(function(r){ if (ById("REAnbunit"+r)) nbunitto+=parseInt(ById("REAnbunit"+r).value); }); var libre = parseInt(maxtroupe - nbunitto); if (ById(nomcha).value>=libre) { ById(nomcha2).value = libre; } else { ById(nomcha2).value= ById(nomcha).value; } }, false); } }); // t.estimerTemps(); }, clickREACityDestinationSelect : function (city){ var t = my.Reassign; var rownum=0; t.destinationCity = city; // on remplit les stat du DIV destination var m=""; m="<table cellspacing=0 cellpadding=0 width=80%>"; unsafeWindow.Barracks.allUnitIds.each(function(r){ if (unsafeWindow.arStrings.unitName["u"+r]) { if (rownum++ % 2) style = ''; else style = 'background: #e8e8e8;'; m += '<tr style="'+style+'"><td align=right> </td><td align=left><input style="border:1px solid black;height:16px;font-size:11px;" type=text size=7 readonly value="'+parseInt(Cities.cities[t.destinationCity.idx].c.troops[r].count())+'"></td></tr>'; } }); m += "</table>"; ById("REAstatdest").innerHTML = m; // t.estimerTemps(); }, clickReassigneDo: function() { var t = my.Reassign; var totalunit=0; var SourceId = t.sourceCity.c.id; var DestinationId = t.destinationCity.c.id; unsafeWindow.Barracks.allUnitIds.each(function(r){ if (document.getElementById("REAnbunit"+r)) { if (parseInt(document.getElementById("REAnbunit"+r).value) > parseInt(document.getElementById("REAdestunit"+r).value)) { document.getElementById("REAnbunit"+r).style.backgroundColor="red"; return false; } totalunit=totalunit+parseInt(document.getElementById("REAnbunit"+r).value); document.getElementById("REAnbunit"+r).style.backgroundColor=""; } }); if (t.sourceCity.c.id==t.destinationCity.c.id) { t.statutREA.innerHTML = '<FONT COLOR=#550000>'+translate('Not possible to send to same city')+'!</font>'; return; } if (totalunit==0) { t.statutREA.innerHTML = '<FONT COLOR=#550000>'+translate('Impossible to')+' '+unsafeWindow.arStrings.Common.Reassign+' '+translate('with 0 troops')+'... pfff, '+translate('wake up')+' !</font>'; return; } var maxtroupe=getTroopMax(SourceId); if (totalunit>maxtroupe) { t.statutREA.innerHTML = '<FONT COLOR=#550000>'+translate('Impossible to')+' '+unsafeWindow.arStrings.Common.Reassign+' '+translate('more than')+' '+maxtroupe+' '+translate('troops at a time')+'.</font>'; return; } t.actionREA.disabled=true; var x=t.destinationCity.c.x; var y=t.destinationCity.c.y; t.statutREA.innerHTML = "<i><b>"+uW.arStrings.Common.Loading+"........</b></i>"; if (Cities.byID[SourceId].c.canMarch()) { var f=Cities.byID[SourceId].c; var id=f.id; var d=unsafeWindow.Building.getMaxLevelForType(50,id); var a=new unsafeWindow.March({marchId:Cities.byID[id].c.emptyMarchSlots()[0],toXCoord:x,toYCoord:y,fromCityId:id,marchType:5,knightId:0,fromHealLevel:d,apothecaryHealPercent:unsafeWindow.KB.Controllers.Apothecary.getHealPercent(d),gold:0,resource1:0,resource2:0,resource3:0,resource4:0}); var g={mid:a.id,xcoord:a.to.x,ycoord:a.to.y,cid:id,type:5,kid:0,gold:a.gold,r1:a.resources[1],r2:a.resources[2],r3:a.resources[3],r4:a.resources[4],camp:0,et:t.calculateTime(id,7,x,y)}; unsafeWindow.Barracks.allUnitIds.each(function(r){ if (document.getElementById("REAnbunit"+r) && parseIntNan(document.getElementById("REAnbunit"+r).value)>0) { a.units[r].sent=parseIntNan(document.getElementById("REAnbunit"+r).value); g["u"+r]=parseIntNan(document.getElementById("REAnbunit"+r).value); } }); unsafeWindow.AjaxCall.gPostRequest("march.php",g,function(zz){ var now = unixTime(); var i="reinforce",j=Number(zz.eta)-Number(zz.initTS); unsafeWindow.Chrome.ResourcesBar.update(); unsafeWindow.Object.keys(a.units).each(function(k){Cities.byID[id].c.troops[k].subtract(a.units[k].sent)}); a.id=Number(zz.marchId); a.to.tileId=Number(zz.tileId); a.to.tileType=Number(zz.tileType); a.to.tileLevel=Number(zz.tileLevel); a.to.playerId=Number(zz.tileUserId); a.to.cityId=Number(zz.tileCityId); a.setStatus(unsafeWindow.Constant.MarchStatus.OUTBOUND); a.setMarchTime(unsafeWindow.unixtime(),unsafeWindow.unixtime()+j,0); Cities.byID[id].c.marches.outgoing[a.id]=a; unsafeWindow.KTrack.event(["_trackEvent","March",i,unsafeWindow.player.level]); t.statutREA.innerHTML ="<font color=red size='3px'><b>"+translate('Succeeded')+"<b></font>"; t.actionREA.disabled=false; }, function(zz){ t.statutREA.innerHTML ="<font color=red size='3px'><b>Error !!<b></font>"; t.actionREA.disabled=false; }, false); }else{ t.statutREA.innerHTML ="<font color=red size='3px'><b>Error<b></font>"; t.actionREA.disabled=false; } }, calculateTime: function(id,b,g,e) { var c=65535,a=Math.abs(Cities.byID[id].c.x-g),f=Math.abs(Cities.byID[id].c.y-e),d=Math.sqrt((a*a)+(f*f)); h=unsafeWindow.Unit.stats[b].speed*1; if(h<c){c=h;} return Math.ceil(d*6000/c)+30; } } /************************ TRANSPORT ************************/ my.TranspAuto = { cont : null, displayTimer : null, state : null, curTabBut : null, curTabName : null, sourceCity : {}, destinationCity : {}, rows : [], init : function (){ var t = my.TranspAuto; t.cont = document.createElement('div'); t.state = null; t.tradeRoutes= []; t.traderState = {running: false}; setTimeout(function() { t.readTraderState(); t.readTradeRoutes(); t.e_tradeRoutes(); },1000); //window.addEventListener('unload', t.onUnload, false); return t.cont; }, getContent : function (){ var t = my.TranspAuto; return t.cont; }, hide : function (){ var t = my.TranspAuto; t.state = null; t.saveTradeRoutes(); t.saveTraderState(); clearTimeout (t.displayTimer); }, show : function (){ var t = my.TranspAuto; var rownum = 0; var ModelCity = {}; t.cont.innerHTML = '<center><TABLE class=ptTab align=center><TR><TD><INPUT class=bopbSubtab ID=BoTrpSubM type=submit value="'+translate('Manual')+'"></td>\ <TD><INPUT class=bopbSubtab ID=BoTrpSubA type=submit value="'+translate('Automatic')+'"></td><TD><INPUT class=bopbSubtab ID=BoTrpSubR type=submit DISABLED value="Appro"></td></tr></table></center>\ <DIV id="BoTrpOutput" style="margin-top:5px; background-color:white; height:'+(Options.HauteurBoite-65)+'px;max-height:'+(Options.HauteurBoite-65)+'px;overflow-y:auto"></div>'; t.TransportDiv = ById('BoTrpOutput'); ById('BoTrpSubA').addEventListener('click', e_butSubtab, false); ById('BoTrpSubM').addEventListener('click', e_butSubtab, false); ById('BoTrpSubR').addEventListener('click', e_butSubtab, false); changeSubtab (ById('BoTrpSubM')); function e_butSubtab (evt){ changeSubtab (evt.target); } function changeSubtab (but){ if (but == t.curTabBut) return; if (t.curTabBut){ t.curTabBut.className='bopbSubtab'; t.curTabBut.disabled=false; } t.curTabBut = but; but.className='bopbSubtab bopbSubtabSel'; but.disabled=true; t.curTabName = but.id.substr(8); t.show2(); } }, show2 : function (){ var t = my.TranspAuto; t.state = null; clearTimeout (t.displayTimer); clearTimeout (t.timer); if (t.curTabName == 'M') t.showManuel(); else if (t.curTabName == 'R') t.showReappro(); else { t.showAuto(); t.showTimer(); } }, showTimer: function() { var t = my.TranspAuto; t.updateTroops(); t.updateResources(); t.timer = setTimeout (t.showTimer, 1000); }, showAuto: function() { var t = my.TranspAuto; var m = '<DIV id=pbTowrtDivF class=ptstat>AUTO '+uW.arStrings.Common.Transport.toUpperCase()+' - '+translate('CONFIGURATION')+'</div><TABLE id=pbtraderfunctions width=100% height=0% class=pbTab><TR align="center">'; logit(t.traderState.running); if (t.traderState.running == false) { m += '<TD><INPUT id=pbTraderState type=submit value="'+uW.arStrings.Common.Transport+' = OFF"></td>'; } else { m += '<TD><INPUT id=pbTraderState type=submit value="'+uW.arStrings.Common.Transport+' = ON"></td>'; } m += '<TD><INPUT id=pbShowRoutes type=submit value="'+translate('Show routes')+'"></td>'; m += '</tr></table></div>'; m += '<DIV id=pbTraderDivDRoute class=ptstat>'+translate('OPTIONS')+'</div>'; m += '<TABLE id=pbtraderfunctions width=100% height=0% class=pbTab><TR align="left">'; m += '<TD colspan=2>'+translate('Send a transport every')+' <INPUT id=pbtransportinterval type=text size=4 value="'+Options.transportinterval+'"\> '+uW.arStrings.TimeStr.timeMin+'</td>'; m += '<TD colspan=4>'+translate('Send transport with a minimum of')+' <INPUT id=pbminwagons type=text size=2 value="'+Options.minwagons+'"\> '+uW.arStrings.Common.Troops+'</td></tr></table>'; m += '</table>'; m += '<DIV id=pbTraderDivDRoute class=ptstat>'+translate('ADD A TRANSPORT')+'</div>'; m += '<TABLE id=pbaddtraderoute width=95% height=0% class=pbTab><TR align="left">'; m += '<TR align="left"><TD>'+uW.arStrings.Common.From+' :</td> <TD colspan=4><DIV style="margin-bottom:10px;"><span id=ptrescity></span></div></td></tr>'; m += '<TR align="left">'; m += '<TD>'+uW.arStrings.Common.To+' :</td> <TD width=310px><DIV style="margin-bottom:10px;"><span id=ptcityTo></span></div></td>'; m += '<TD>'+uW.arStrings.ChangeDomain.OR+'</td>'; m += '<TD>X:<INPUT id=ptcityX type=text size=3\></td>'; m += '<TD>Y:<INPUT id=ptcityY type=text size=3\></td></tr>'; m += '<TABLE id=pbaddtraderoute height=0% class=pbTab><TR align="left">'; m += '<TD width=75px>'+uW.arStrings.Common.Troops+' :</td><TD width=150px><SELECT id="TransportTroop">'; unsafeWindow.Barracks.allUnitIds.each(function(r){ if (unsafeWindow.arStrings.unitName["u"+r]) m+= "<option value='u"+r+"'>"+unsafeWindow.arStrings.unitName["u"+r]+"</option>"; }); //for (y in uW.unitcost) m+='<option value="'+y+'">'+unsafeWindow.unitcost[y][0]+'</option>'; m+='</select></td><TD width=75px>'+uW.arStrings.March.AvailableTroops+' : </td><TD id=TroopAmount align=left width=75px></td>'; m+='<TD width=75px>'+translate('Estimate')+' : </td><TD id=CarryAmount align=left width=75px></td>'; //m += '<TR><TD >Troupes : </td><TD><INPUT id=TroopsToSend type=text size=6 maxlength=6 value="0"> </td>'; m += '<TD width=50px></td>'; m +='<TD id=Calc colspan=3></td></tr>'; m += '<TABLE id=pbaddtraderoute height=0% class=pbTab><TR align="center">'; m += '<TD width=5%>'+ unsafeWindow.arStrings.ResourceName[1] +'</td>'; m += '<TD id=TransRec1 align=right width=110px></td>'; m += '<TD id=HaveRec1 align=right width=110px></td>'; m += '<TD width=55px align=right><INPUT id=pbshipFood type=checkbox unchecked=true\></td>'; m += '<TD width=180px align=left>'+translate('Keep')+' : <INPUT id=pbtargetamountFood type=text size=11 maxlength=12 value="0" disabled=true\></td>'; //m += '<TD width=100px>Transporter: <INPUT id=pbtradeamountFood type=text size=11 maxlength=12 value="0"\></td>'; m += '<TD width=50px></td></tr>'; m += '<TR align="center">'; m += '<TD width=5%>'+ unsafeWindow.arStrings.ResourceName[2] +'</td>'; m += '<TD id=TransRec2 align=right width=110px></td>'; m += '<TD id=HaveRec2 align=right width=110px></td>'; m += '<TD width=55px align=right><INPUT id=pbshipWood type=checkbox unchecked=true\></td>'; m += '<TD width=180px align=left>'+translate('Keep')+' : <INPUT id=pbtargetamountWood type=text size=11 maxlength=12 value="0" disabled=true\></td>'; //m += '<TD width=100px>Transporter: <INPUT id=pbtradeamountWood type=text size=11 maxlength=12 value="0"\></td>'; m += '<TD width=50px></td></tr>'; m += '<TR align="center">'; m += '<TD width=5%>'+ unsafeWindow.arStrings.ResourceName[3] +'</td>'; m += '<TD id=TransRec3 align=right width=110px></td>'; m += '<TD id=HaveRec3 align=right width=110px></td>'; m += '<TD width=55px align=right><INPUT id=pbshipStone type=checkbox unchecked=true\></td>'; m += '<TD width=180px align=left>'+translate('Keep')+' : <INPUT id=pbtargetamountStone type=text size=11 maxlength=12 value="0" disabled=true\></td>'; //m += '<TD width=100px>Transporter: <INPUT id=pbtradeamountStone type=text size=11 maxlength=12 value="0"\></td>'; m += '<TD width=50px></td></tr>'; m += '<TR align="center">'; m += '<TD width=5%>'+ unsafeWindow.arStrings.ResourceName[4] +'</td>'; m += '<TD id=TransRec4 align=right width=110px></td>'; m += '<TD id=HaveRec4 align=right width=110px></td>'; m += '<TD width=55px align=right><INPUT id=pbshipOre type=checkbox unchecked=true\></td>'; m += '<TD width=180px align=left>'+translate('Keep')+' : <INPUT id=pbtargetamountOre type=text size=11 maxlength=12 value="0" disabled=true\></td>'; //m += '<TD width=100px>Transporter: <INPUT id=pbtradeamountOre type=text size=11 maxlength=12 value="0"\></td>'; m += '<TD width=50px></td></tr>'; m += '<TD width=5%>'+ unsafeWindow.arStrings.ResourceName[0] +'</td>'; m += '<TD id=TransGold align=right width=110px></td>'; m += '<TD id=HaveGold align=right width=110px></td>'; m += '<TD width=55px align=right><INPUT id=pbshipGold type=checkbox unchecked=true\></td>'; m += '<TD width=180px align=left>'+translate('Keep')+' : <INPUT id=pbtargetamountGold type=text size=11 maxlength=12 value="0" disabled=true\></td>'; //m += '<TD width=100px>Transporter: <INPUT id=pbtradeamountGold type=text size=11 maxlength=12 value="0"\></td>'; m += '<TD width=50px></td></tr>'; m += '</table>'; m += '<DIV style="text-align:center; margin-top:15px"><INPUT id=pbSaveRoute type=submit value="'+translate('Add a route')+'"></div>'; m += '<DIV id=errorSpace></div>' t.TransportDiv.innerHTML = m; ById('TransportTroop').value = 'u9'; t.tcp = new CdispCityPicker ('pttrader', ById('ptrescity'), true, t.updateResources, 0); t.tcpto = new CdispCityPicker ('pttraderTo', ById('ptcityTo'), true, t.clickCitySelect).bindToXYboxes(document.getElementById ('ptcityX'), document.getElementById ('ptcityY')); ById('TransportTroop').addEventListener('change', function(){t.updateTroops();}, false); ById('pbTraderState').addEventListener('click', function(){t.toggleTraderState(this);}, false); ById('pbSaveRoute').addEventListener('click', function(){t.addTradeRoute();}, false); ById('pbShowRoutes').addEventListener('click', function(){t.showTradeRoutes();}, false); ById('pbtransportinterval').addEventListener('keyup', function(){ if (isNaN(ById('pbtransportinterval').value)){ ById('pbtransportinterval').value=60 ;} Options.transportinterval = ById('pbtransportinterval').value; saveOptions(); }, false); ById('pbtargetamountFood').addEventListener('keyup', function(){ if (isNaN(ById('pbtargetamountFood').value)) ById('pbtargetamountFood').value=0 ; }, false); ById('pbtargetamountWood').addEventListener('keyup', function(){ if (isNaN(ById('pbtargetamountWood').value)) ById('pbtargetamountWood').value=0 ; }, false); ById('pbtargetamountStone').addEventListener('keyup', function(){ if (isNaN(ById('pbtargetamountStone').value)) ById('pbtargetamountStone').value=0 ; }, false); ById('pbtargetamountOre').addEventListener('keyup', function(){ if (isNaN(ById('pbtargetamountOre').value)) ById('pbtargetamountOre').value=0 ; }, false); ById('pbtargetamountGold').addEventListener('keyup', function(){ if (isNaN(ById('pbtargetamountGold').value)) ById('pbtargetamountGold').value=0 ; }, false); ById('pbminwagons').addEventListener('keyup', function(){ if (isNaN(ById('pbminwagons').value)) ById('pbminwagons').value=100 ; Options.minwagons = parseInt(ById('pbminwagons').value); saveOptions(); }, false) ById('pbshipFood').addEventListener('click', function(){ if (ById('pbshipFood').checked==false) { ById('pbtargetamountFood').disabled = true; } else { ById('pbtargetamountFood').disabled = false; } },false); ById('pbshipWood').addEventListener('click', function(){ if (ById('pbshipWood').checked==false) { ById('pbtargetamountWood').disabled = true; } else { ById('pbtargetamountWood').disabled = false; } },false); ById('pbshipStone').addEventListener('click', function(){ if (ById('pbshipStone').checked==false) { ById('pbtargetamountStone').disabled = true; } else { ById('pbtargetamountStone').disabled = false; } },false); ById('pbshipOre').addEventListener('click', function(){ if (ById('pbshipOre').checked==false) { ById('pbtargetamountOre').disabled = true; } else { ById('pbtargetamountOre').disabled = false; } },false); ById('pbshipGold').addEventListener('click', function(){ if (ById('pbshipGold').checked==false) { ById('pbtargetamountGold').disabled = true; } else { ById('pbtargetamountGold').disabled = false; } },false); }, updateResources : function (){ var t = my.TranspAuto var ToCity = null; for (var i=1;i<5;i++) ById('TransRec'+i).innerHTML = addCommas (Cities.cities[t.tcp.city.idx].c.resources[i].count); ById('TransGold').innerHTML = addCommas(Cities.cities[t.tcp.city.idx].c.silver()); for (var ii=0; ii< Cities.numCities;ii++) { if (Cities.cities[ii].c.x == document.getElementById ('ptcityX').value && Cities.cities[ii].c.y == document.getElementById ('ptcityY').value) ToCity = Cities.cities[ii].id; } for (var i=1;i<5;i++) if (ToCity != null) ById('HaveRec'+i).innerHTML = addCommas (Cities.cities[t.tcp.city.idx].c.resources[i].count); else ById('HaveRec'+i).innerHTML = "----"; if (ToCity != null) ById('HaveGold').innerHTML = addCommas(Cities.cities[t.tcp.city.idx].c.silver()); else ById('HaveGold').innerHTML = "----"; }, updateTroops : function (city){ var t = my.TranspAuto; var fontcolor = 'black'; //t.Astone = parseInt(ById('pbtradeamountAstone').value*5); //var unit = ById('TransportTroop').value; t.Troops = 0; //parseInt(Seed.units['city' + t.tcp.city.id][unit]); //var untid=ById('TransportTroop').value; var LoadUnit=0; //parseInt(parseInt(uW.unitstats[untid][5])*(1+loadBoost)); var GlobalMaxLoad = 1;//t.Troops * LoadUnit; t.MaxLoad = 0; //parseInt(ById('TroopsToSend').value) * LoadUnit; t.TroopsNeeded = 1;//(t.Food + t.Wood + t.Stone + t.Ore + t.Gold + t.Astone) / LoadUnit; t.TroopsNeeded = t.TroopsNeeded.toFixed(0); //if (t.TroopsNeeded < ((t.Food + t.Wood + t.Stone + t.Ore + t.Gold + t.Astone) / LoadUnit)) t.TroopsNeeded++; if ( t.TroopsNeeded > t.Troops) fontcolor = 'red'; if (t.Troops > 0 ) ById('TroopAmount').innerHTML = '<FONT color='+fontcolor+'>' + addCommas(t.Troops) + '</font>'; else ById('TroopAmount').innerHTML = 0; if (GlobalMaxLoad > 0) ById('CarryAmount').innerHTML = addCommas(GlobalMaxLoad); else ById('CarryAmount').innerHTML = 0; ById('Calc').innerHTML = uW.arStrings.Common.Resources+': ' + addCommas(t.Food + t.Wood + t.Stone + t.Ore + t.Gold + t.Astone) + ' / ' + addCommas(t.MaxLoad) + ' ('+uW.arStrings.Common.Troops+' '+translate('necessary')+' : <FONT color='+fontcolor+'>' + addCommas(t.TroopsNeeded) + '</font> )' ; }, getRallypoint: function(cityId){ var t = my.TranspAuto; for (var o in Seed.buildings[cityId]){ var buildingType = parseInt(Seed.buildings[cityId][o][0]); var buildingLevel = parseInt(Seed.buildings[cityId][o][1]); if (buildingType == 12){ return parseInt(buildingLevel); break; } } return 0; }, e_tradeRoutes: function(){ var t = my.TranspAuto; var now = new Date(); clearTimeout(t.timer); if (t.traderState.running == true) { var now = new Date().getTime()/1000.0; now = now.toFixed(0); var last = Options.lasttransport; if ( now > (parseInt(last) + (Options.transportinterval*60))){ t.checkdoTrades(); } } t.timer = setTimeout(function(){ t.e_tradeRoutes();}, Options.transportinterval*1000); }, delTradeRoutes: function() { var t = my.TranspAuto; t.tradeRoutes= []; }, checkcoords : function (obj){ var t = my.TranspAuto; if(obj.id == 'pbok'){ t.check = true; t.addTradeRoute(); } return; }, addTradeRoute: function () { var valid = true; var t = my.TranspAuto; var city = t.tcp.city.id; if (ById('ptcityX').value==0 && ById('ptcityY').value ==0 && !t.check) { return; } var ship_Food = ById('pbshipFood').checked; var ship_Wood = ById('pbshipWood').checked; var ship_Stone = ById('pbshipStone').checked; var ship_Ore = ById('pbshipOre').checked; var ship_Gold = ById('pbshipGold').checked; var target_Food = ById('pbtargetamountFood').value; var target_Wood = ById('pbtargetamountWood').value; var target_Stone = ById('pbtargetamountStone').value; var target_Ore = ById('pbtargetamountOre').value; var target_Gold = ById('pbtargetamountGold').value; var target_x = ById('ptcityX').value; var target_y = ById('ptcityY').value; var TroopType = ById('TransportTroop').value; var route_state = true; if (valid == true) { var lTR = t.tradeRoutes; lTR.push({ city: city, ship_Food: ship_Food, target_Food: target_Food, ship_Wood: ship_Wood, target_Wood: target_Wood, ship_Stone: ship_Stone, target_Stone: target_Stone, ship_Ore: ship_Ore, target_Ore: target_Ore, ship_Gold: ship_Gold, target_Gold: target_Gold, target_x: target_x, target_y: target_y, TroopType: TroopType, route_state: "true" }); } ById('pbTraderDivDRoute').style.background ='#99FF99'; setTimeout(function(){ (ById('pbTraderDivDRoute').style.background =''); }, 500); }, showTradeRoutes: function () { var t = my.TranspAuto; if (t.popTradeRoutes == null) { t.popTradeRoutes = new CPopup('pbShowTrade', 0, 0, 750, 500, true, function() {clearTimeout (1000);}); t.popTradeRoutes.centerMe (mainPop.getMainDiv()); } var m = '<DIV style="max-height:460px; height:460px; overflow-y:auto"><TABLE align=center cellpadding=0 cellspacing=0 width=100% class="pbTab" id="pbRoutesQueue">'; t.popTradeRoutes.getMainDiv().innerHTML = '</table></div>' + m; t.popTradeRoutes.getTopDiv().innerHTML = '<TD><B>'+translate('Show routes')+' : </td>'; t.paintTradeRoutes(); t.popTradeRoutes.show(true) ; }, paintTradeRoutes: function(){ var t = my.TranspAuto; var r = t.tradeRoutes; var cityname; var citynameTo = null; var m= '<TABLE id=paintRoutes class=pbTab>'; for (var i=0;i<(r.length);i++) { citynameTo = null; for (var y=0; y< Cities.numCities;y++) { if ( parseInt(Cities.cities[y].id) == r[i].city) var cityname = Cities.cities[y].c.name; if ( parseInt(Cities.cities[y].c.x) == r[i].target_x && parseInt(Cities.cities[y].c.y) == r[i].target_y) var citynameTo = Cities.cities[y].c.name; } var queueId = i; if (citynameTo == null) var TO = r[i].target_x +','+ r[i].target_y; else TO = citynameTo; if (r[i].route_state) var status = '<FONT color=green>'+translate('Active')+'</font>'; else var status = '<FONT color=red>'+translate('Deactive')+'</font>'; if (r[i].TroopType == undefined) var unit = 'unt9'; else var unit = r[i].TroopType; m += '<TR><TD TD width=12px> </td></tr>'; m +='<TR><TD width=20px>'+(i+1)+'</td><TD width=175px>'+uW.arStrings.Common.From+': '+ cityname +'</TD><TD width=175px>'+uW.arStrings.Common.To+' : '+ TO +'</td><TD width=175px>'+status+'</td>'; m +='<TD width=60px><A onclick="traceEdit('+queueId+')">'+translate('Edit')+'</a></td><TD width=60px><A onclick="traceDelete('+queueId+')">'+uW.arStrings.MessagesModal.Delete_button+'</a></td></tr>'; m += '<TR><TD></td><TD>'+uW.arStrings.Common.Troops+': </td></tr>'; if (r[i].ship_Food) m += '<TR><TD></td><TD align=center><img src="https://cdn1.kingdomsofcamelot.com/fb/e2/src/img/food_30.png"></td><TD>'+uW.arStrings.Common.Target+': '+ addCommas(r[i].target_Food) +'</td>'; if (r[i].ship_Wood) m += '<TR><TD></td><TD align=center><img src="https://cdn1.kingdomsofcamelot.com/fb/e2/src/img/wood_30.png"></td><TD>'+uW.arStrings.Common.Target+': '+ addCommas(r[i].target_Wood) +'</td>'; if (r[i].ship_Stone) m += '<TR><TD></td><TD align=center><img src="https://cdn1.kingdomsofcamelot.com/fb/e2/src/img/stone_30.png"></td><TD>'+uW.arStrings.Common.Target+': '+ addCommas(r[i].target_Stone) +'</td>'; if (r[i].ship_Ore) m += '<TR><TD></td><TD align=center><img src="https://cdn1.kingdomsofcamelot.com/fb/e2/src/img/iron_30.png"></td><TD>'+uW.arStrings.Common.Target+': '+ addCommas(r[i].target_Ore) +'</td>'; if (r[i].ship_Gold) m += '<TR><TD></td><TD align=center><img src="https://cdn1.kingdomsofcamelot.com/fb/e2/src/img/gold_30.png"></td><TD>'+uW.arStrings.Common.Target+': '+ addCommas(r[i].target_Gold) +'</td>'; } m +='</table>'; ById('pbRoutesQueue').innerHTML= m; unsafeWindow.traceEdit = t.editQueueElement; unsafeWindow.traceDelete = t.cancelQueueElement; }, cancelQueueElement: function(queueId){ var t = my.TranspAuto; var queueId = parseInt(queueId); t.tradeRoutes.splice(queueId, 1); t.showTradeRoutes(); }, editQueueElement: function(queueId){ var t = my.TranspAuto; var r = t.tradeRoutes; var queueId = parseInt(queueId); var cityname; var citynameTo = null; var Types = ['food','wood','stone','iron','gold']; for (var y=0; y< Cities.numCities;y++) { if ( parseInt(Cities.cities[y].id) == r[queueId].city) var cityname = Cities.cities[y].c.name; if ( parseInt(Cities.cities[y].c.x) == r[queueId].target_x && parseInt(Cities.cities[y].c.y) == r[queueId].target_y) var citynameTo = Cities.cities[y].c.name; } if (citynameTo == null) var TO = r[queueId].target_x +','+ r[queueId].target_y; else TO = citynameTo; var n = '<TABLE id=editRoutes class=pbTab>'; n +='<TD>'+uW.arStrings.Common.From+' : '+ cityname +'</td><TD>'+uW.arStrings.Common.To+' : '+ TO +'</td>'; n +='<TD><INPUT id=TradeStatus type=checkbox> '+translate('Active')+' '+translate('the route')+'</td>'; n += '<TD width=150px>'+uW.arStrings.Common.Troops+' :<SELECT id="pbbTransportTroop">'; unsafeWindow.Barracks.allUnitIds.each(function(r){ if (unsafeWindow.arStrings.unitName["u"+r]) n+= "<option value='u"+r+"'>"+unsafeWindow.arStrings.unitName["u"+r]+"</option>"; }); n+='</select></td></table><BR><TABLE id=editRoutes class=pbTab>'; for (var i=0;i<Types.length;i++){ var icon = Types[i]; n += '<TR><TD width=50px align=center>'+ unsafeWindow.arStrings.ResourceName[i] +'</td>'; n += '<TD width=50px align=center><INPUT id=pbbship'+Types[i]+' type=checkbox></td>'; n += '<TD width=125px>'+translate('Keep')+' : <INPUT id=pbbtargetamount'+Types[i]+' type=text size=11 maxlength=12 value="0"></td>'; } n+='</table><BR><TABLE id=editRoutes class=pbTab><TR><TD><a class="button20" id="Cancel"><span>'+uW.arStrings.MessagesModal.Delete_button+'</span></a></td>'; n+='<TD><a class="button20" id="Save"><span>'+uW.arStrings.Common.Save_Button+'</span></a></td></tr>'; n +='</table>'; ById('pbRoutesQueue').innerHTML= n; ById('TradeStatus').checked = r[queueId].route_state; if (r[queueId].TroopType == undefined) var unit = 'u9'; else var unit = r[queueId].TroopType; ById('pbbTransportTroop').value = unit; ById('pbbshipfood').checked = r[queueId].ship_Food; ById('pbbshipwood').checked = r[queueId].ship_Wood; ById('pbbshipstone').checked = r[queueId].ship_Stone; ById('pbbshipiron').checked = r[queueId].ship_Ore; ById('pbbshipgold').checked = r[queueId].ship_Gold; ById('pbbtargetamountfood').value = r[queueId].target_Food; ById('pbbtargetamountwood').value = r[queueId].target_Wood; ById('pbbtargetamountstone').value = r[queueId].target_Stone; ById('pbbtargetamountiron').value = r[queueId].target_Ore; ById('Cancel').addEventListener('click', function(){t.showTradeRoutes();}, false); ById('Save').addEventListener('click', function(){ r[queueId].route_state = ById('TradeStatus').checked; r[queueId].TroopType = ById('pbbTransportTroop').value; r[queueId].ship_Food = ById('pbbshipfood').checked; r[queueId].ship_Wood = ById('pbbshipwood').checked; r[queueId].ship_Stone = ById('pbbshipstone').checked; r[queueId].ship_Ore = ById('pbbshipiron').checked; r[queueId].ship_Gold = ById('pbbshipgold').checked; r[queueId].target_Food = ById('pbbtargetamountfood').value; r[queueId].target_Wood = ById('pbbtargetamountwood').value; r[queueId].target_Stone = ById('pbbtargetamountstone').value; r[queueId].target_Ore = ById('pbbtargetamountiron').value; r[queueId].target_Gold = ById('pbbtargetamountgold').value; t.showTradeRoutes(); }, false); }, saveTradeRoutes: function(){ var t = my.TranspAuto; var serverID = getServerId(); GM_setValue('tradeRoutes_' + serverID, JSON2.stringify(t.tradeRoutes)); }, readTradeRoutes: function(){ var t = my.TranspAuto; var serverID = getServerId(); s = GM_getValue('tradeRoutes_' + serverID); if (s != null) { route = JSON2.parse(s); for (k in route) t.tradeRoutes[k] = route[k]; } }, saveTraderState: function(){ var t = my.TranspAuto; var serverID = getServerId(); GM_setValue('traderState_' + serverID, JSON2.stringify(t.traderState)); }, readTraderState: function(){ var t = my.TranspAuto; var serverID = getServerId(); s = GM_getValue('traderState_' + serverID); if (s != null) { state = JSON2.parse(s); for (k in state) t.traderState[k] = state[k]; } }, toggleTraderState: function(obj){ var t = my.TranspAuto; obj = ById('pbTraderState'); if (t.traderState.running == true) { t.traderState.running = false; if (obj) obj.value = uW.arStrings.Common.Transport+" = OFF"; clearTimeout(t.checkdotradetimeout); t.count = 0; Options.lasttransport = 0; saveOptions(); } else { t.traderState.running = true; if (obj) obj.value = uW.arStrings.Common.Transport+" = ON"; t.e_tradeRoutes(); } t.saveTraderState(); DashInnert(); }, count:0, checkdoTrades: function(){ var t = my.TranspAuto; if(t.tradeRoutes.length==0) return; t.doTrades(t.count); t.count++; if(t.count < t.tradeRoutes.length){ t.checkdotradetimeout = setTimeout(function() { t.checkdoTrades();}, 10000); } else { var now = new Date().getTime()/1000.0; now = now.toFixed(0); Options.lasttransport = now; saveOptions(); t.count = 0; } }, doTrades: function(count){ var t = my.TranspAuto; if(t.tradeRoutes.length==0) return; if(!t.tradeRoutes[count]["route_state"]) return; var city = t.tradeRoutes[count]["city"]; if(!Cities.byID[city]) return; var xcoord = t.tradeRoutes[count]["target_x"]; var ycoord = t.tradeRoutes[count]["target_y"]; var cityID = 'city' + city; var cityNumber=Cities.byID[city].idx; for (var zz=0; zz< Cities.numCities;zz++) { if (parseInt(Cities.cities[zz].id) == city) var cityname = Cities.cities[zz].c.name; } var carry_amount= 0; var wagons_needed=0; var citymax = 0; var target_Food = t.tradeRoutes[count]["target_Food"]; var target_Wood = t.tradeRoutes[count]["target_Wood"]; var target_Stone = t.tradeRoutes[count]["target_Stone"]; var target_Ore = t.tradeRoutes[count]["target_Ore"]; var target_Gold = t.tradeRoutes[count]["target_Gold"]; var ship_Food = t.tradeRoutes[count]["ship_Food"]; var ship_Wood = t.tradeRoutes[count]["ship_Wood"]; var ship_Stone = t.tradeRoutes[count]["ship_Stone"]; var ship_Ore = t.tradeRoutes[count]["ship_Ore"]; var ship_Gold = t.tradeRoutes[count]["ship_Gold"]; var citymax_Food = parseIntNan(Cities.cities[cityNumber].c.resources[1].count); var citymax_Wood = parseIntNan(Cities.cities[cityNumber].c.resources[2].count); var citymax_Stone = parseIntNan(Cities.cities[cityNumber].c.resources[3].count); var citymax_Ore = parseIntNan(Cities.cities[cityNumber].c.resources[4].count); var citymax_Gold = parseIntNan(Cities.cities[cityNumber].c.silver()); var carry_Food = parseIntNan(citymax_Food - target_Food); var carry_Wood = parseIntNan(citymax_Wood - target_Wood); var carry_Stone = parseIntNan(citymax_Stone - target_Stone); var carry_Ore = parseIntNan(citymax_Ore - target_Ore); var carry_Gold = 0; if (carry_Food < 0 || ship_Food==false) carry_Food = 0; if (carry_Wood < 0 || ship_Wood==false) carry_Wood = 0; if (carry_Stone < 0 || ship_Stone==false) carry_Stone = 0; if (carry_Ore < 0 || ship_Ore==false) carry_Ore = 0; var unit = t.tradeRoutes[count]['TroopType']; var unitNumber=unit.substring(1,unit.length); if (t.tradeRoutes[count]['TroopType'] == undefined) var wagons = parseInt(Cities.cities[cityNumber].c.troops[9].count()); else var wagons = parseInt(Cities.cities[cityNumber].c.troops[unitNumber].count()); var Troops =parseInt(Cities.cities[cityNumber].c.troops[unitNumber].count()) if(parseInt(Troops)>parseInt(wagons)) Troops = wagons; var Load = parseInt(unsafeWindow.Unit.stats[unitNumber].load * (1 + (unsafeWindow.player.technologies[10].bonus()))); //parseInt(unsafeWindow.unitstats[unit]['5']) var maxloadperwagon = Load; var maxload = (maxloadperwagon * Troops); // logit("Charge par unite : "+Load + " Nb : " + wagons + "maxload: " +maxload); if(wagons <= 0) {return; } var shift_Food = parseIntNan(maxload / 9); var shift_Wood = parseIntNan(maxload / 9); var shift_Stone = parseIntNan(maxload / 9); var shift_Ore = parseIntNan(maxload / 9); if ((maxload - carry_Food - carry_Wood - carry_Stone - carry_Ore) < 0){ var shift_num=0; var shift_spare=0; if (carry_Food < shift_Food) { shift_spare += (shift_Food - carry_Food); shift_Food = carry_Food; } if (carry_Wood < shift_Wood) { shift_spare += (shift_Wood - carry_Wood); shift_Wood = carry_Wood; } if (carry_Stone < shift_Stone) { shift_spare += (shift_Stone - carry_Stone); shift_Stone = carry_Stone; } if (carry_Ore < shift_Ore) { shift_spare += (shift_Ore - carry_Ore); shift_Ore = carry_Ore; } while (shift_spare >1) { if (carry_Food < (shift_Food + shift_spare)){ shift_spare = shift_spare - carry_Food;; shift_Food = carry_Food; } else{ shift_Food = (shift_Food + shift_spare); shift_spare = shift_spare- shift_spare; } if (carry_Wood < (shift_Wood + shift_spare)){ shift_spare = shift_spare - carry_Wood;; shift_Wood = carry_Wood; } else{ shift_Wood = shift_Wood + shift_spare; shift_spare = shift_spare- shift_spare; } if (carry_Stone < (shift_Stone + shift_spare)){ shift_spare = shift_spare - carry_Stone; shift_Stone = carry_Stone; } else{ shift_Stone = shift_Stone + shift_spare; shift_spare = shift_spare- shift_spare; } if (carry_Ore < (shift_Ore + shift_spare)){ shift_spare = shift_spare - carry_Ore; shift_Ore = carry_Ore; } else{ shift_Ore = shift_Ore + shift_spare; shift_spare = shift_spare- shift_spare; } } carry_Food = shift_Food; carry_Wood = shift_Wood; carry_Stone = shift_Stone; carry_Ore = shift_Ore; } if (maxload > (carry_Food + carry_Wood + carry_Stone + carry_Ore ) && ship_Gold==true) { if ((maxload-(carry_Food + carry_Wood + carry_Stone + carry_Ore)) > (citymax_Gold - target_Gold)){ carry_Gold = (citymax_Gold - target_Gold); if (carry_Gold < 0 ) carry_Gold = 0; } else carry_Gold = (maxload-(carry_Food + carry_Wood + carry_Stone + carry_Ore)); } wagons_needed = ((carry_Food + carry_Wood + carry_Stone + carry_Ore + carry_Gold) / maxloadperwagon); wagons_needed = wagons_needed.toFixed(0); if (wagons_needed < ((carry_Food + carry_Wood + carry_Stone + carry_Ore + carry_Gold) / maxloadperwagon)) wagons_needed++; //logit("Besoin unité : " + wagons_needed + "food:"+carry_Food+" wood:"+carry_Wood+" stone:"+carry_Stone+" ore:"+carry_Ore+" gold:"+carry_Gold); if ( wagons_needed < Options.minwagons ) { logit("Transport auto : blocage troupe mini "); return; } if (!Cities.byID[city].c.canMarch()) { logit("Transport auto : impossible d'etablir une marche! "); return; } var c={}; c.r1 = carry_Food; c.r2 = carry_Wood; c.r3 = carry_Stone; c.r4 = carry_Ore; c.gold = carry_Gold; var id=city; var d=unsafeWindow.Building.getMaxLevelForType(50,id); var a=new unsafeWindow.March({marchId:Cities.byID[id].c.emptyMarchSlots()[0],toXCoord:xcoord,toYCoord:ycoord,fromCityId:id,marchType:1,knightId:0,fromHealLevel:d,apothecaryHealPercent:unsafeWindow.KB.Controllers.Apothecary.getHealPercent(d),gold:c.gold,resource1:c.r1,resource2:c.r2,resource3:c.r3,resource4:c.r4}); var g={mid:a.id,xcoord:a.to.x,ycoord:a.to.y,cid:id,type:1,kid:0,gold:a.gold,r1:a.resources[1],r2:a.resources[2],r3:a.resources[3],r4:a.resources[4],camp:0,et:t.calculateTime(id,unitNumber,xcoord,ycoord)}; a.units[unitNumber].sent=parseIntNan(wagons_needed); g["u"+unitNumber]=parseIntNan(wagons_needed); if ((carry_Food + carry_Wood + carry_Stone + carry_Ore + carry_Gold) > 0) { unsafeWindow.AjaxCall.gPostRequest("march.php",g,function(zz){ var now = unixTime(); var i="transport",j=Number(zz.eta)-Number(zz.initTS); unsafeWindow.Chrome.ResourcesBar.update(); unsafeWindow.Object.keys(a.units).each(function(k){Cities.byID[id].c.troops[k].subtract(a.units[k].sent)}); a.id=Number(zz.marchId); a.to.tileId=Number(zz.tileId); a.to.tileType=Number(zz.tileType); a.to.tileLevel=Number(zz.tileLevel); a.to.playerId=Number(zz.tileUserId); a.to.cityId=Number(zz.tileCityId); a.setStatus(unsafeWindow.Constant.MarchStatus.OUTBOUND); a.setMarchTime(unsafeWindow.unixtime(),unsafeWindow.unixtime()+j,0); Cities.byID[id].c.marches.outgoing[a.id]=a; unsafeWindow.KTrack.event(["_trackEvent","March",i,unsafeWindow.player.level]); }, function(zz){ }, false); } }, calculateTime: function(id,b,g,e) { var c=65535,a=Math.abs(Cities.byID[id].c.x-g),f=Math.abs(Cities.byID[id].c.y-e),d=Math.sqrt((a*a)+(f*f)); h=unsafeWindow.Unit.stats[b].speed*1; if(h<c){c=h;} return Math.ceil(d*6000/c)+30; }, onUnload: function(){ var t = my.TranspAuto; t.saveTradeRoutes(); t.saveTraderState(); //if (!ResetAll) t.saveReapproState(); //alert("Banzai"); }, showManuel : function() { var t = my.TranspAuto; if (t.state == null) { m = "<DIV class=ptstat>"+translate('TRANSPORTING GOODS FROM CITY TO CITY')+"</div>"; m +="<div id='statpourTr'></div>"; m += "<TABLE width=100% class=ptTab border=0 cellpadding=3>\ <tr align=center><td colspan=2><HR></td></tr>\ <tr align=center valign=top><td colspan=1 width=50%><b><u>"+uW.arStrings.Common.From+"</b></u><br><span id=srcptspeedcity></span></td>\ <td colspan=1 width=50% rowspan=2><b><u>"+uW.arStrings.Common.To+"</b></u><br><span id=desptspeedcity></span><br>\ "+uW.arStrings.ChangeDomain.OR+" <br>X: <input type=text size=4 id=typetrpx value=0> Y: <input type=text size=4 id=typetrpy value=0><br><br><INPUT id='ptttButTransport' type=submit value='"+uW.arStrings.Common.Transport+"' style='font-weight:bold'>\ </td></tr>\ <tr align=center><td colspan=1>"+uW.arStrings.Common.Troops+" : <select id=typetrp><option value='1'>"+unsafeWindow.arStrings.unitName["u1"]+"</option><option value='2'>"+unsafeWindow.arStrings.unitName["u2"]+"</option><option value='4'>"+unsafeWindow.arStrings.unitName["u4"]+"</option><option value='5'>"+unsafeWindow.arStrings.unitName["u5"]+"</option><option value='6'>"+unsafeWindow.arStrings.unitName["u6"]+"</option><option value='7'>"+unsafeWindow.arStrings.unitName["u7"]+"</option><option value='8'>"+unsafeWindow.arStrings.unitName["u8"]+"</option><option selected value='9'>"+unsafeWindow.arStrings.unitName["u9"]+"</option><option value='10'>"+unsafeWindow.arStrings.unitName["u10"]+"</option><option value='11'>"+unsafeWindow.arStrings.unitName["u11"]+"</option><option value='12'>"+unsafeWindow.arStrings.unitName["u12"]+"</option></select>\ <br>"+uW.arStrings.Common.Quantity+" : <input type=text size=6 value='0' id='Choixnbwagon'><input type=button id='trswagmax' value='Max'\><br><i>("+translate('Please put in the amount of troops you like to use')+")</i>\ <br><b>"+uW.arStrings.Common.Resources+" "+uW.arStrings.Common.Type+" :</b><br><input type=radio id='ChoixRess0' name='ChoixRess' value='gold'> " + unsafeWindow.arStrings.ResourceName[0] + "\ <input type=radio id='ChoixRess1' name='ChoixRess' value='rec1'> " + unsafeWindow.arStrings.ResourceName[1] + "\ <input type=radio id='ChoixRess2' name='ChoixRess' value='rec2'> " + unsafeWindow.arStrings.ResourceName[2] + "\ <input type=radio id='ChoixRess3' name='ChoixRess' value='rec3'> " + unsafeWindow.arStrings.ResourceName[3] + "\ <input type=radio id='ChoixRess4' name='ChoixRess' value='rec4'> " + unsafeWindow.arStrings.ResourceName[4] + "\ </td></tr>\ <tr><td colspan=2>"+ unsafeWindow.arStrings.March.ResourcesToSend +" : <span id=BOEstimationR></td></tr>\ </table>\ <TABLE align=center width=100% class=ptTab><TR><TD><div id=ptTranportStatus style='text-align:center;overflow-y:auto; max-height:78px; height: 78px;'></div></td></tr></table>"; t.TransportDiv.innerHTML = m; t.destinationCityx = document.getElementById ('typetrpx'); t.destinationCityy = document.getElementById ('typetrpy'); t.destinationCityx.addEventListener ('change', t.estimerRes, false); t.destinationCityy.addEventListener ('change', t.estimerRes, false); document.getElementById ('ChoixRess0').addEventListener ('click', t.estimerRes, false); document.getElementById ('ChoixRess1').addEventListener ('click', t.estimerRes, false); document.getElementById ('ChoixRess2').addEventListener ('click', t.estimerRes, false); document.getElementById ('ChoixRess3').addEventListener ('click', t.estimerRes, false); document.getElementById ('ChoixRess4').addEventListener ('click', t.estimerRes, false); t.estimationRes = document.getElementById ('BOEstimationR'); var dcp1 = new CdispCityPicker ('ptspeed1', document.getElementById('desptspeedcity'), false, t.clickCityDestinationSelect, 1); t.TTbutTransport = document.getElementById ('ptttButTransport'); t.TTbutTransport.addEventListener ('click', t.clickTransportDo, false); t.divTranportStatus = document.getElementById ('ptTranportStatus'); t.statpourTr = document.getElementById ('statpourTr'); t.typetrp = document.getElementById ('typetrp'); t.typetrp.addEventListener ('click', t.estimerRes, false); t.trswagmax = document.getElementById ('trswagmax'); t.trswagmax.addEventListener ('click', t.clickUniteMax, false); t.Choixnbwagon = document.getElementById ('Choixnbwagon'); t.Choixnbwagon.addEventListener ('keyup', t.verifierWagons, false); var dcp0 = new CdispCityPicker ('ptspeed0', document.getElementById('srcptspeedcity'), false, t.clickCitySourceSelect, Cities.byID[unsafeWindow.currentcityid].idx); t.state = 1; } str = "<TABLE class=ptTabLined cellspacing=0><TR valign=top align=right><TD width=65></td><TD width=88 style='background: #ffc'><B>"+uW.arStrings.Common.Total.toUpperCase()+"</b></td>"; for(i=0; i<Cities.numCities; i++) { Gate = Cities.cities[i].c.defending; if(Gate == 0) var couleurr="#77EE77"; if(Gate != 0) var couleurr="#EE7777"; str += "<TD width=81 style='background-color:"+couleurr+"' align=center><B>"+ Cities.cities[i].c.name +'</b><BR><a onclick="KB.Controllers.MapHelper.gotoCoord('+Cities.cities[i].c.x +','+ Cities.cities[i].c.y+');">('+Cities.cities[i].c.x +','+ Cities.cities[i].c.y+')</td>'; } str +="</tr>"; str += "<tr><td><br></td></tr>"; var m=""; var goldTotal=0; for(i=0; i<Cities.numCities; i++) { m += "<TD width=81 style='background:#e8e8e8' align=right>"+ addCommas(Cities.cities[i].c.silver()) +'</td>'; goldTotal+=parseInt(Cities.cities[i].c.silver()); } str += "<tr align=right><td style='background:#e8e8e8' align=right><b>" + unsafeWindow.arStrings.ResourceName[0] + "</td><td style='background:#e8e8e8' align=right>"+addCommas(goldTotal)+" "+ m + "</tr>" ; for (var nbr=1; nbr<=4; nbr++) { if (nbr % 2) style = ''; else style = " style = 'background: #e8e8e8'"; var m=""; var resTotal=0; for(var i=0; i<Cities.numCities; i++) { m += "<TD width=81 "+style+" align=right>"+ addCommas(Cities.cities[i].c.resources[nbr].count) +'</td>'; resTotal+=parseInt(Cities.cities[i].c.resources[nbr].count); } str += "<tr><td "+style+" align=right><b>"+unsafeWindow.arStrings.ResourceName[nbr]+"</td><td "+style+" align=right>"+addCommas(resTotal)+" "+ m+"</tr>"; } str += "<tr><td><br></td></tr>"; // Production de nourriture + ENTRETIEN ! var m=""; var prodTotal=0; for(i=0; i<Cities.numCities; i++) { m += "<TD align=right width=81 style='background:#e8e8e8'>"+ addCommas(Cities.cities[i].c.resources[1].hourlyTotalRate())+"/"+unsafeWindow.arStrings.TimeStr.timeHr+"</td>"; prodTotal+=parseInt(Cities.cities[i].c.resources[1].hourlyTotalRate()); } str += "<tr><td style='background: #e8e8e8' align=right><b>"+unsafeWindow.arStrings.Common.Production+"</td><td style='background: #e8e8e8' align=right>"+addCommas(prodTotal)+"/"+unsafeWindow.arStrings.TimeStr.timeHr+""+ m+"</tr>"; var m=""; var entTotal=0; for(i=0; i<Cities.numCities; i++) { color='black'; // if ( parseInt(Cities.cities[i].c.resources[1].hourlyTotalRate()) < Cities.cities[i].c.upkeep() ) color='red'; m += "<TD align=right width=81 style='background:#e8e8e8;color:"+color+";'>"+ addCommas(Cities.cities[i].c.upkeep())+"/"+unsafeWindow.arStrings.TimeStr.timeHr+"</td>"; entTotal+=parseInt(Cities.cities[i].c.upkeep()); } str += "<tr><td style='background: #e8e8e8' align=right><b>"+unsafeWindow.arStrings.Common.UpKeep+"</td><td style='background: #e8e8e8' align=right>"+addCommas(entTotal)+"/"+unsafeWindow.arStrings.TimeStr.timeHr+""+ m+"</tr>"; var m=""; var entTotal=0; for(i=0; i<Cities.numCities; i++) { color='black'; if ( parseInt(Cities.cities[i].c.resources[1].hourlyTotalRate()) < parseInt(Cities.cities[i].c.upkeep()) ) { // entretien supérieur à la production difference = parseInt(Cities.cities[i].c.resources[1].hourlyTotalRate()) - parseInt(Cities.cities[i].c.upkeep()); var timeLeft = parseInt(Cities.cities[i].c.resources[1].count) / (0-difference) * 3600; if (timeLeft > 86313600) autonomi = '----'; else { if (timeLeft<(Options.foodWarnHours*3600)) { autonomi = '<SPAN class=whiteOnRed><b>'+ timestrShort(timeLeft) +'</b></span>'; } else { autonomi = ''+ timestrShort(timeLeft) +''; } } m += "<TD align=right width=81 style='background:#e8e8e8;color:"+color+";'>"+ autonomi +"</td>"; } else { m += "<TD align=right width=81 style='background:#e8e8e8;color:black;'>---</td>"; } } str += "<tr><td style='background: #e8e8e8' align=right><b>Autonomy</td><td style='background: #e8e8e8' align=right> "+ m+"</tr>"; var m=""; var unitTotal=0; str += "<tr><td><br></td></tr>"; if (unsafeWindow.arStrings.unitName["u1"]) { style = " style = 'background: #e8e8e8'"; for(var i=0; i<Cities.numCities; i++) { m += "<TD width=81 "+style+" align=right>"+ addCommas(Cities.cities[i].c.troops[1].count()) +'</td>'; unitTotal+=parseInt(Cities.cities[i].c.troops[1].count()); } str += "<tr><td "+style+" align=right><b>"+unsafeWindow.arStrings.unitName["u1"]+"</td><td "+style+" align=right>"+addCommas(unitTotal)+" "+ m + "</tr>"; } var m=""; var unitTotal=0; if (unsafeWindow.arStrings.unitName["u9"]) { style = ''; for(var i=0; i<Cities.numCities; i++) { m += "<TD width=81 "+style+" align=right>"+ addCommas(Cities.cities[i].c.troops[9].count()) +'</td>'; unitTotal+=parseInt(Cities.cities[i].c.troops[9].count()); } str += "<tr><td "+style+" align=right><b>"+unsafeWindow.arStrings.unitName["u9"]+"</td><td "+style+" align=right>"+addCommas(unitTotal)+" "+ m + "</tr>"; } str += "<tr><td><br></td></tr>"; t.statpourTr.innerHTML = str; t.displayTimer = setTimeout (t.showManuel, 5000); }, /******* transport ****/ verifierWagons: function() { var t = my.TranspAuto; var maxw=parseInt(Cities.cities[t.sourceCity.idx].c.troops[t.typetrp.value].count()); var saisw=parseInt(t.Choixnbwagon.value); if (saisw > maxw) { t.Choixnbwagon.value=maxw; } var maxtroupe=getTroopMax(t.sourceCity.c.id); if (t.Choixnbwagon.value > maxtroupe) { t.Choixnbwagon.value=maxtroupe; //t.divTranportStatus.innerHTML = '<FONT COLOR=#550000>La quantité ne peut excéder '+maxw+' !.</font>'; } t.estimerRes(); }, estimerRes: function() { var t = my.TranspAuto; var esti = parseInt(unsafeWindow.Unit.stats[t.typetrp.value].load * t.Choixnbwagon.value * (1 + (unsafeWindow.player.technologies[10].bonus()))); t.estimationRes.innerHTML = "<font size=3><b>" + addCommas(esti) + "</b></font>"; //t.estimationRes.innerHTML += "<br>Estimation temps de marche : <b>" + m.friendEtaStr + "</b>" ; // test sur les ressources choisit ! var cityID = t.sourceCity.c.id; var ic=0; var resact=0; var ic_ty="gold"; var ic_text="silver"; resact = Cities.cities[t.sourceCity.idx].c.silver(); if (document.getElementById("ChoixRess1").checked) { ic_ty="rec1";ic=1;ic_text="food";resact = parseInt(Cities.cities[t.sourceCity.idx].c.resources[1].count); } if (document.getElementById("ChoixRess2").checked) { ic_ty="rec2";ic=2;ic_text="wood";resact = parseInt(Cities.cities[t.sourceCity.idx].c.resources[2].count); } if (document.getElementById("ChoixRess3").checked) { ic_ty="rec3";ic=3;ic_text="stones";resact = parseInt(Cities.cities[t.sourceCity.idx].c.resources[3].count); } if (document.getElementById("ChoixRess4").checked) { ic_ty="rec4";ic=4;ic_text="iron";resact = parseInt(Cities.cities[t.sourceCity.idx].c.resources[4].count); } if (resact < esti) { var nbparunit = parseInt(unsafeWindow.Unit.stats[t.typetrp.value].load * 1 * (1 + (unsafeWindow.player.technologies[10].bonus()))); var uniteness = Math.round(resact / nbparunit) - 1; t.Choixnbwagon.value = uniteness; t.TTbutTransport.disabled = false; t.estimerRes(); } else { //t.TTbutTransport.disabled = false; } }, clickUniteMax: function() { var t = my.TranspAuto; var maxw=parseInt(Cities.cities[t.sourceCity.idx].c.troops[t.typetrp.value].count()); var maxtroupe=getTroopMax(t.sourceCity.c.id); t.Choixnbwagon.value=maxw; if (maxw > maxtroupe) { t.Choixnbwagon.value=maxtroupe; //t.divTranportStatus.innerHTML = '<FONT COLOR=#550000>La quantité ne peut excéder '+maxw+' !.</font>'; } t.estimerRes(); }, clickTransportDo: function() { // fonction pour faire le transport var t = my.TranspAuto; var SourceId = t.sourceCity.c.id; var DestinationId = t.destinationCity.c.id; //nHtml.Click(document.getElementById("city_"+SourceId)); //unsafeWindow.KB.AudioManager.playSound('on_click'); //unsafeWindow.Chrome.City.switchTo(SourceId); if (!document.getElementById("ChoixRess0").checked && !document.getElementById("ChoixRess1").checked && !document.getElementById("ChoixRess2").checked && !document.getElementById("ChoixRess3").checked && !document.getElementById("ChoixRess4").checked) { t.divTranportStatus.innerHTML = '<FONT COLOR=#550000>'+translate('Please check the resource you want to transport')+' !</font>'; return; } if (t.sourceCity.c.x==t.destinationCityx.value && t.sourceCity.c.y==t.destinationCityy.value) { t.divTranportStatus.innerHTML = '<FONT COLOR=#550000>'+translate('Impossible to send to same city')+' !</font>'; return; } if (parseInt(t.Choixnbwagon.value)=="0") { t.divTranportStatus.innerHTML = '<FONT COLOR=#550000>'+translate('Impossible to')+' '+uW.arStrings.Common.Transport+' '+translate('with 0 troops')+'... pfff, '+translate('wake up')+' !</font>'; return; } var x=t.destinationCityx.value; var y=t.destinationCityy.value; if (x == 0 || y == 0) { t.divTranportStatus.innerHTML = '<FONT COLOR=#550000>'+translate('Impossible to')+' '+uW.arStrings.Common.Transport+' '+uW.arStrings.Common.To+' 0,0 !</font>'; return; } t.TTbutTransport.disabled=true; var c={}; c.r1 = 0; c.r2 = 0; c.r3 = 0; c.r4 = 0; c.gold = 0; var cc=0; var esti = parseInt(unsafeWindow.Unit.stats[t.typetrp.value].load * t.Choixnbwagon.value * (1 + (unsafeWindow.player.technologies[10].bonus()))); if (document.getElementById("ChoixRess0").checked) { cc=0;c.gold = esti; } if (document.getElementById("ChoixRess1").checked) { cc=1;c.r1 = esti; } if (document.getElementById("ChoixRess2").checked) { cc=2;c.r2 = esti; } if (document.getElementById("ChoixRess3").checked) { cc=3;c.r3 = esti; } if (document.getElementById("ChoixRess4").checked) { cc=4;c.r4 = esti; } t.divTranportStatus.innerHTML = "<i><b>"+uW.arStrings.Common.Loading+"......</b></i>"; if (Cities.byID[SourceId].c.canMarch()) { var f=Cities.byID[SourceId].c; var id=f.id; var d=unsafeWindow.Building.getMaxLevelForType(50,id); var a=new unsafeWindow.March({marchId:Cities.byID[id].c.emptyMarchSlots()[0],toXCoord:x,toYCoord:y,fromCityId:id,marchType:1,knightId:0,fromHealLevel:d,apothecaryHealPercent:unsafeWindow.KB.Controllers.Apothecary.getHealPercent(d),gold:c.gold,resource1:c.r1,resource2:c.r2,resource3:c.r3,resource4:c.r4}); var g={mid:a.id,xcoord:a.to.x,ycoord:a.to.y,cid:id,type:1,kid:0,gold:a.gold,r1:a.resources[1],r2:a.resources[2],r3:a.resources[3],r4:a.resources[4],camp:0,et:t.calculateTime(id,t.typetrp.value,x,y)}; a.units[t.typetrp.value].sent=parseIntNan(t.Choixnbwagon.value); g["u"+t.typetrp.value]=parseIntNan(t.Choixnbwagon.value); unsafeWindow.AjaxCall.gPostRequest("march.php",g,function(zz){ var now = unixTime(); var i="transport",j=Number(zz.eta)-Number(zz.initTS); unsafeWindow.Chrome.ResourcesBar.update(); unsafeWindow.Object.keys(a.units).each(function(k){Cities.byID[id].c.troops[k].subtract(a.units[k].sent)}); a.id=Number(zz.marchId); a.to.tileId=Number(zz.tileId); a.to.tileType=Number(zz.tileType); a.to.tileLevel=Number(zz.tileLevel); a.to.playerId=Number(zz.tileUserId); a.to.cityId=Number(zz.tileCityId); a.setStatus(unsafeWindow.Constant.MarchStatus.OUTBOUND); a.setMarchTime(unsafeWindow.unixtime(),unsafeWindow.unixtime()+j,0); Cities.byID[id].c.marches.outgoing[a.id]=a; unsafeWindow.KTrack.event(["_trackEvent","March",i,unsafeWindow.player.level]); t.divTranportStatus.innerHTML ="<font color=red size='3px'><b>"+translate('Succeeded')+"<b></font>"; t.TTbutTransport.disabled=false; }, function(zz){ t.divTranportStatus.innerHTML ="<font color=red size='3px'><b>Error<b></font>"; t.TTbutTransport.disabled=false; }, false); }else{ t.divTranportStatus.innerHTML ="<font color=red size='3px'><b>Error<b></font>"; t.TTbutTransport.disabled=false; } }, calculateTime: function(id,b,g,e) { var c=65535,a=Math.abs(Cities.byID[id].c.x-g),f=Math.abs(Cities.byID[id].c.y-e),d=Math.sqrt((a*a)+(f*f)); h=unsafeWindow.Unit.stats[b].speed*1; if(h<c){c=h;} return Math.ceil(d*6000/c)+30; }, clickCitySourceSelect : function (city){ var t = my.TranspAuto; t.sourceCity = city; t.TTbutTransport.disabled=false; t.estimerRes(); }, clickCityDestinationSelect : function (city){ var t = my.TranspAuto; t.destinationCity = city; t.destinationCityx.value=t.destinationCity.c.x; t.destinationCityy.value=t.destinationCity.c.y; t.TTbutTransport.disabled=false; t.estimerRes(); } } /************************ AUTO ATTACK ************************/ my.attaque = { cont:null, state : null, timerzap:10000, // temps entre deux recherches d'attaque timer:null, displayTimer:null, deleting : false, timer:null, filtreville:null, filtrecible:null, numcol:6, toutles:0, getContent : function (){ var t = my.attaque; return t.cont; }, init : function (){ var t = my.attaque; t.cont = document.createElement('div'); clearTimeout (t.timer); t.toutles=0; if (Options.AttackAuto) t.timer=setInterval(t.start,t.timerzap); return this.cont; }, attack: function(h) { var t = my.attaque; var cible=Options.AttackTime[h]; var SourceId = cible.cityId; var x = cible.coordX; var y = cible.coordY; var gen=0; var cooX = x; var cooY = y; var id=SourceId; var kk=[]; Cities.byID[id].c.generalsSorted().each(function(b){ if(b.available() && b.energy()>0){ if (Options.AttackGen && b.level()>parseInt(Options.AttackGenNiv)) { }else{ kk.push(b); } } }); // id du premier chevalier ! a trouver var selectedKnight=kk.length>0?kk[0].id:0; if (Options.AttackTime[h].typea==undefined) cible.typea=2; if (Cities.byID[id].c.canMarch() && Cities.byID[id].c.generalsCount()!=0 && selectedKnight!=0) { var d=unsafeWindow.Building.getMaxLevelForType(50,id); var a=new unsafeWindow.March({marchId:Cities.byID[id].c.emptyMarchSlots()[0],toXCoord:cooX,toYCoord:cooY,fromCityId:id,marchType:unsafeWindow.Constant.MarchType.ATTACK,knightId:selectedKnight,fromHealLevel:d,apothecaryHealPercent:unsafeWindow.KB.Controllers.Apothecary.getHealPercent(d),gold:0,resource1:0,resource2:0,resource3:0,resource4:0}); var g={mid:a.id,xcoord:a.to.x,ycoord:a.to.y,cid:id,type:unsafeWindow.Constant.MarchType.ATTACK,kid:a.general.id,gold:a.gold,r1:a.resources[1],r2:a.resources[2],r3:a.resources[3],r4:a.resources[4],camp:0,et:t.calculateTime(id,9,cooX,cooY)}; var b=Cities.byID[id].c.generals[a.general.id]; if (cible.typea==1) { // Régions sauvages unsafeWindow.Object.keys(a.units).each(function(k){ if(parseInt(Options.AttackTroops[Options.AttackTime[h].level][k]) > 0) { a.units[k].sent=Options.AttackTroops[Options.AttackTime[h].level][k]; g["u"+k]=Options.AttackTroops[Options.AttackTime[h].level][k]; } }); } else if (cible.typea==3) { // Barbares unsafeWindow.Object.keys(a.units).each(function(k){ if(parseInt(Options.AttackTroopsB[Options.AttackTime[h].level][k]) > 0) { a.units[k].sent=Options.AttackTroopsB[Options.AttackTime[h].level][k]; g["u"+k]=Options.AttackTroopsB[Options.AttackTime[h].level][k]; } }); } else { //ville unsafeWindow.Object.keys(a.units).each(function(k){ if(parseInt(Options.AttackTroopsC[k]) > 0) { a.units[k].sent=Options.AttackTroopsC[k]; g["u"+k]=Options.AttackTroopsC[k]; } }); } // Vérification qu'il y ait bien l'armée sur la ville unsafeWindow.Object.keys(a.units).each(function(k){ if (a.units[k].sent>Cities.byID[id].c.troops[k].count()) { Options.AttackTime[h].echec++; if (Options.AttackTime[h].echec>1) { var now = unixTime(); var tempsaudessu=(t.toutles*60*60)-(10*60); Options.AttackTime[h].lastattack = now -tempsaudessu; Options.AttackTime[h].echec=0; saveOptions(); } logit("troupes non dispo"); return; } }); if(b.energy()>0){ unsafeWindow.AjaxCall.gPostRequest("march.php",g,function(zz){ var now = unixTime(); Options.AttackTime[h].lastattack = now; Options.AttackTime[h].reussi++; Options.AttackTime[h].echec=0; saveOptions(); var i="attack",j=Number(zz.eta)-Number(zz.initTS); unsafeWindow.Chrome.ResourcesBar.update(); unsafeWindow.Object.keys(a.units).each(function(k){Cities.byID[id].c.troops[k].subtract(a.units[k].sent)}); if(b){b.status=10;b.subtractEnergy()} a.id=Number(zz.marchId); a.to.tileId=Number(zz.tileId); a.to.tileType=Number(zz.tileType); a.to.tileLevel=Number(zz.tileLevel); a.to.playerId=Number(zz.tileUserId); a.to.cityId=Number(zz.tileCityId); a.setStatus(unsafeWindow.Constant.MarchStatus.OUTBOUND); a.setMarchTime(unsafeWindow.unixtime(),unsafeWindow.unixtime()+j,0); Cities.byID[id].c.marches.outgoing[a.id]=a; unsafeWindow.KTrack.event(["_trackEvent","March",i,unsafeWindow.player.level]); }, function(zz){ Options.AttackTime[h].echec++; var now = unixTime(); var tempsaudessu=(t.toutles*60*60)-(10*60); Options.AttackTime[h].lastattack = now -tempsaudessu; Options.AttackTime[h].echec=0; saveOptions(); }, false); } else { Options.AttackTime[h].echec++; if (Options.AttackTime[h].echec>1) { var now = unixTime(); var tempsaudessu=(t.toutles*60*60)-(10*60); Options.AttackTime[h].lastattack = now -tempsaudessu; Options.AttackTime[h].echec=0; saveOptions(); } } } else { // impossible sur cette ville..... peux pas marcher ! Options.AttackTime[h].echec++; if (Options.AttackTime[h].echec>1) { var now = unixTime(); var tempsaudessu=(t.toutles*60*60)-(10*60); Options.AttackTime[h].lastattack = now -tempsaudessu; Options.AttackTime[h].echec=0; saveOptions(); } } }, calculateTime: function(id,b,g,e) { var c=65535,a=Math.abs(Cities.byID[id].c.x-g),f=Math.abs(Cities.byID[id].c.y-e),d=Math.sqrt((a*a)+(f*f)); h=unsafeWindow.Unit.stats[b].speed*1; if(h<c){c=h;} return Math.ceil(d*6000/c)+30; }, passage:0, start : function() { var t = my.attaque; if (!Options.AttackAuto) { clearTimeout (t.timer); return; } var c=Options.AttackTime; // on trie le tableau par duree for (h in c) { var z=c[h]; var now = unixTime(); var lastatt=z.lastattack; var affichederniere=(now - lastatt); t.toutles=Options.AttackTimer; if (z.typea==2) t.toutles=Options.AttackTimer2; if (z.typea==3) t.toutles=Options.AttackTimer3; var tempsaudessu=t.toutles*60*60; // on converti l'heure en secondes if (parseInt(affichederniere)>parseInt(tempsaudessu) && ((Options.AttackCible1 && z.typea==1) || (Options.AttackCible2 && z.typea==2) || (Options.AttackCible3 && z.typea==3))) { if (Cities.byID[z.cityId].c.canMarch()) { t.attack(h); return; } } } }, saveTroops:function() { var t = my.attaque; for(i=0;i<10;i++){ unsafeWindow.Barracks.allUnitIds.each(function(j){ Options.AttackTroops[i+1][j] = parseIntNan(ById('level'+i+'troop'+j).value); Options.AttackTroopsB[i+1][j] = parseIntNan(ById('level'+i+'troopB'+j).value); }); } unsafeWindow.Barracks.allUnitIds.each(function(j){ Options.AttackTroopsC[j] = parseIntNan(ById('troop'+j).value); }); Options.AttackTimer = parseInt(document.getElementById("BOTimerAttack").value); Options.AttackTimer2 = parseInt(document.getElementById("BOTimerAttack2").value); Options.AttackTimer3 = parseInt(document.getElementById("BOTimerAttack3").value); saveOptions(); }, troopselect:null, troopOptions: function(){ var t = my.attaque; if(t.troopselect == null) t.troopselect = new CPopup ('pbtroopselect', 0, 0, 850, 410, true, function(){t.saveTroops();}); t.troopselect.centerMe (mainPop.getMainDiv()); t.troopselect.getTopDiv().innerHTML = '<DIV id=pbTraderDivD class=ptstat><b>'+uW.arStrings.Common.Troops+'</b></div>'; var z='<DIV id=attaqueContent style="height:380px; max-height:380px; overflow-y:auto">'; z+='<DIV id=pbTraderDivD class=ptstat>'+unsafeWindow.arStrings.Common.Cities.toUpperCase()+'</div><TABLE width=100%>'; z+='<tr><td colspan=3>'+translate('Time between attacks')+':</td><td colspan=14><input type=text size=2 id=BOTimerAttack maxlenght=2 value='+Options.AttackTimer+'> '+uW.arStrings.TimeStr.timeHr+'</tr><TR><TR><TD></td>'; unsafeWindow.Barracks.allUnitIds.each(function(i){ z+='<TD>'+unsafeWindow.arStrings.unitName["u"+i].substr(0,10)+'</td>'; }); if (Options.AttackTroopsC==undefined) Options.AttackTroopsC = {}; z += '</tr><tr><TD>'+unsafeWindow.arStrings.Common.City+'</td>'; unsafeWindow.Barracks.allUnitIds.each(function(j){ if (Options.AttackTroopsC[j]==undefined) Options.AttackTroopsC[j] = 0; z += '<TD><INPUT id="troop'+j+'" type=text size=5 maxlength=6 value="'+Options.AttackTroopsC[j]+'" /></td>'; }); z+='</tr>'; z+='</table>'; z+='<DIV id=pbTraderDivD class=ptstat>'+unsafeWindow.arStrings.Common.Wilds.toUpperCase()+'</div><TABLE width=100%>'; z+='<tr><td colspan=3>'+translate('Time between attacks')+':</td><td colspan=14><input type=text size=2 id=BOTimerAttack2 maxlenght=2 value='+Options.AttackTimer2+'> '+uW.arStrings.TimeStr.timeHr+'</tr><TR><TR><TD></td>'; unsafeWindow.Barracks.allUnitIds.each(function(i){ z+='<TD>'+unsafeWindow.arStrings.unitName["u"+i].substr(0,10)+'</td>'; }); for(i=0;i<10;i++){ if (Options.AttackTroops[i+1]==undefined) Options.AttackTroops[i+1] = {}; z += '<TR><TD>'+uW.arStrings.Common.Level+' '+(i+1)+': </td>'; unsafeWindow.Barracks.allUnitIds.each(function(j){ if (Options.AttackTroops[i+1][j]==undefined) Options.AttackTroops[i+1][j] = 0; z += '<TD><INPUT id="level'+i+'troop'+j+'" type=text size=5 maxlength=6 value="'+Options.AttackTroops[i+1][j]+'" /></td>'; }); z+='</tr>'; } z+='</table>'; z+='<DIV id=pbTraderDivD class=ptstat>'+unsafeWindow.arStrings.Common.BarbarianCamp.toUpperCase()+'</div><TABLE width=100%>'; z+='<tr><td colspan=3>'+translate('Time between attacks')+':</td><td colspan=14><input type=text size=2 id=BOTimerAttack3 maxlenght=2 value='+Options.AttackTimer3+'> '+uW.arStrings.TimeStr.timeHr+'</tr><TR><TR><TD></td>'; unsafeWindow.Barracks.allUnitIds.each(function(i){ z+='<TD>'+unsafeWindow.arStrings.unitName["u"+i].substr(0,10)+'</td>'; }); for(i=0;i<10;i++){ if (Options.AttackTroopsB[i+1]==undefined) Options.AttackTroopsB[i+1] = {}; z += '<TR><TD>'+uW.arStrings.Common.Level+' '+(i+1)+': </td>'; unsafeWindow.Barracks.allUnitIds.each(function(j){ if (Options.AttackTroopsB[i+1][j]==undefined) Options.AttackTroopsB[i+1][j] = 0; z += '<TD><INPUT id="level'+i+'troopB'+j+'" type=text size=5 maxlength=6 value="'+Options.AttackTroopsB[i+1][j]+'" /></td>'; }); z+='</tr>'; } z+='</table></div>'; t.troopselect.getMainDiv().innerHTML = z; t.troopselect.show(true); }, show : function () { var t = my.attaque; clearTimeout (t.displayTimer); unsafeWindow.BOdeleteAttack=t.deleteAttack; if (t.state == null){ t.cont.innerHTML = '<DIV id=attaqueContent style="height:630px; max-height:630px; overflow-y:auto"></div>'; t.state = 1; } if (Options.AttackTime == undefined) Options.AttackTime = {}; var m = '<DIV class=ptstat>'+translate('AUTOMATED ATTACKS')+" - <input type=button value='Help' id='boaidetournoi' class=boAide onclick=window.open('"+sitesupport+"/index.php?/topic/56-gor-bottols-versione-18/');></div><TABLE id=pbbarbingfunctions width=100% height=0% class=pbTab><TR align='center'>"; if (Options.AttackAuto) { m+= "<td><input type=button value='Auto"+uW.arStrings.Common.Attack+" = ON' id=BOAttackButton></td>"; } else { m+= "<td><input type=button value='Auto"+uW.arStrings.Common.Attack+" = OFF' id=BOAttackButton></td>"; } m+="<td colspan=2>"+uW.arStrings.Common.Attack+": <input type=checkbox id=BOAttack1 "+ (Options.AttackCible1?' CHECKED':'') +">"+uW.arStrings.Common.Wilds+"<input type=checkbox id=BOAttack3 "+ (Options.AttackCible3?' CHECKED':'') +">"+uW.arStrings.Common.BarbarianCamp+"<input type=checkbox id=BOAttack2 "+ (Options.AttackCible2?' CHECKED':'') +">"+uW.arStrings.Common.City+"</td></tr><tr>"; m+='</table><br><DIV class=ptstat>'+translate('CONFIGURATION')+'</div><TABLE id=pbbarbingfunctions width=100% height=0% class=pbTab><TR align="center">'; m+= "<tr><td colspan=2><INPUT id=troopselect type=submit value='"+uW.arStrings.Common.Select+' '+uW.arStrings.Common.Troops+"'></td><td>"; m+= '</td></tr>'; m+='<tr><td colspan=2><input type=checkbox id=BOGenAttack '+ (Options.AttackGen?'CHECKED ':'')+'> '+translate('Do not use the general with a level greater than')+' <input type=text size=3 value="'+Options.AttackGenNiv+'" id=BOGenNivAttack>'; m+='</table><br><DIV class=ptstat>'+translate('CITY SET PARAMETERS')+'</div>'; var cc=Options.AttackTime; var c=[]; for (h in cc) { var z=Options.AttackTime[h]; if (z.cityId==undefined) { delete Options.AttackTime[h]; }else { if (z.typea==undefined) z.typea=2; if (z.echec==undefined) z.echec=0; if (z.level==undefined) z.level=0; if (z.reussi==undefined) Options.AttackTime[h].reussi=0; if (Cities.byID[z.cityId] != undefined) { var x=Cities.byID[z.cityId].c.x; var y=Cities.byID[z.cityId].c.y; var dist = distance (x, y, z.coordX , z.coordY); var now = unixTime(); var lastatt= Options.AttackTime[h].lastattack; var affichederniere=timestr(now - lastatt); var affichedernierenonstr=now - lastatt; c.push([z.cityId,z.echec,z.reussi,z.lastattack,z.coordX,z.coordY, dist,affichederniere,h,affichedernierenonstr,z.typea,z.level]); } } } c = c.sort(function sort(a,b) {a = parseInt(a[t.numcol]);b = parseInt(b[t.numcol]);return a == b ? 0 : (a < b ? -1 : 1);}); if (c) { m+="<table width=95% cellpadding=3><tr><td>"+uW.arStrings.MessagesModal.Delete_button+"</td><td>"+uW.arStrings.Common.City+" <select id=bofiltrecity><option value=''>...</option>"; for(var ii=0; ii<Cities.numCities; ii++) { m+="<option "+ (t.filtreville==Cities.cities[ii].c.id?' SELECTED':'') +" value="+Cities.cities[ii].c.id+">"+Cities.cities[ii].c.name+"</option>"; } m+="</select></td><td><span id=clickCol10>"+uW.arStrings.Common.Target+' '+uW.arStrings.Common.Type+" <select id=bofiltrecible><option value=''>...</option><option value=1 "+ (t.filtrecible==1?' SELECTED':'') +">"+uW.arStrings.Common.Wilds+"</option><option "+ (t.filtrecible==2?' SELECTED':'') +" value=2>"+uW.arStrings.Common.City+"</option><option "+ (t.filtrecible==3?' SELECTED':'') +" value=3>"+uW.arStrings.Common.BarbarianCamp+"</option></select></span></td><td>"+uW.arStrings.Common.Level+"</td><td><span id=clickCol6>"+uW.arStrings.Common.Distance+"</span></td><td>"+uW.arStrings.Common.Coordinates+"</td><td><span id=clickCol9>"+translate('Last Attack')+"</span></td><td><a id=borazcompteur>"+translate('Success')+"</a></td></tr>"; for (var i=0; i<c.length; i++){ if ((t.filtreville==null || t.filtreville==c[i][0]) && (t.filtrecible==null || t.filtrecible==c[i][10])) { if (i % 2 == 0) { tabclass = 'xxtab'; } else { tabclass = 'xxtab_even'; } if (c[i][10]==1) var typecible=uW.arStrings.Common.Wilds; if (c[i][10]==2) var typecible=uW.arStrings.Common.City; if (c[i][10]==3) var typecible=uW.arStrings.Common.BarbarianCamp; m+='<tr><td class='+ tabclass +' align=left><a href="javascript:void(0);" onclick="BOdeleteAttack(\''+c[i][8]+'\')">X</a></td><td class='+ tabclass +' align=left>'+Cities.byID[c[i][0]].c.name+'</td><td class='+ tabclass +' align=left>'+typecible+'</td><td class='+ tabclass +' align=left>'+c[i][11]+'</td><td class='+ tabclass +' align=left>'+c[i][6]+'</td><td class='+ tabclass +' align=left><a onclick="KB.Controllers.MapHelper.gotoCoord('+c[i][4] +','+ c[i][5] +');">('+c[i][4]+','+ c[i][5] +')</a></td><td class='+ tabclass +' align=left>' + c[i][7] +'</td><td class='+ tabclass +' align=left>'+c[i][2]+'</td></tr>'; } } m+="</table>"; }else{ m+="No attacks to program, thank you to search for city and launch an attack through the first Attack button."; } m+=""; document.getElementById('attaqueContent').innerHTML = m; ById('troopselect').addEventListener('click', t.troopOptions , false); document.getElementById("BOAttackButton").addEventListener('click', t.ToggleAutoAttack, false); document.getElementById("clickCol9").addEventListener('click', function() {t.numcol=9;t.show();}, false); document.getElementById("clickCol6").addEventListener('click', function() {t.numcol=7;t.show();}, false); document.getElementById("BOAttack1").addEventListener('click', function() { Options.AttackCible1 = document.getElementById("BOAttack1").checked; saveOptions(); }, false); document.getElementById("BOAttack2").addEventListener('click', function() { Options.AttackCible2 = document.getElementById("BOAttack2").checked; saveOptions(); }, false); document.getElementById("BOAttack3").addEventListener('click', function() { Options.AttackCible3 = document.getElementById("BOAttack3").checked; saveOptions(); }, false); document.getElementById("BOGenAttack").addEventListener('click', function() { Options.AttackGen=document.getElementById("BOGenAttack").checked; saveOptions(); }, false); document.getElementById("BOGenNivAttack").addEventListener('change', function() { if (parseInt(document.getElementById("BOGenNivAttack").value)>255) document.getElementById("BOGenNivAttack").value=255; Options.AttackGenNiv=parseInt(document.getElementById("BOGenNivAttack").value); saveOptions(); }, false); document.getElementById("borazcompteur").addEventListener('click', function() { for (var i=0; i<c.length; i++){ Options.AttackTime[c[i][8]].echec = 0; } saveOptions(); t.show(); }, false); document.getElementById("bofiltrecible").addEventListener('change', function() { if (document.getElementById("bofiltrecible").value=="") { t.filtrecible=null; }else{ t.filtrecible=document.getElementById("bofiltrecible").value; } t.show(); }, false); document.getElementById("bofiltrecity").addEventListener('change', function() { if (document.getElementById("bofiltrecity").value=="") { t.filtreville=null; }else{ t.filtreville=document.getElementById("bofiltrecity").value; } t.show(); }, false); }, ToggleAutoAttack: function() { var t = my.attaque; var obj=document.getElementById("BOAttackButton"); if (Options.AttackAuto== true) { Options.AttackAuto = false; if (obj) obj.value = 'Auto'+uW.arStrings.Common.Attack+" = OFF"; if (ById('DAAttque')) ById('DAAttque').value = 'Auto'+uW.arStrings.Common.Attack+" = OFF"; clearTimeout (t.timer); saveOptions(); } else { Options.AttackAuto = true; if (obj) obj.value = 'Auto'+uW.arStrings.Common.Attack+" = ON"; if (ById('DAAttque')) ById('DAAttque').value = 'Auto'+uW.arStrings.Common.Attack+" = ON"; clearTimeout (t.timer); t.timer=setInterval(t.start,t.timerzap); saveOptions(); } DashInnert(); }, deleteAttack: function(id) { var t = my.attaque; //var a=confirm("Vuoi toglierlo veramente?") //if (a) { delete Options.AttackTime[id]; t.show(); // } }, hide : function (){ var t = my.attaque; clearTimeout (t.displayTimer); } } /************************ CREST ************************/ my.Crest = { cont : null, rallypointlevel:null, error_code: 0, knt:{}, numslots:null, init : function (cont){ var t = my.Crest; Options.crestMarchError = 0; setTimeout(function(){ t.Rounds(1,0,0);}, 5*1000); t.cont = document.createElement('div'); return t.cont; }, getContent : function (){ var t = my.Crest; return t.cont; }, show : function (){ var t = my.Crest; var selbut=0; var m = '<DIV id=pbTowrtDivF class=ptstat>'+translate('AUTO CREST')+'</div><TABLE id=pbcrestfunctions width=100% height=0% class=pbTab><TR align="center">'; if (Options.crestRunning == false) { m += '<TD><INPUT id=Cresttoggle type=submit value="Crest = OFF"></td>'; } else { m += '<TD><INPUT id=Cresttoggle type=submit value="Crest = ON"></td>'; } m += '<TD colspan=2><INPUT id=CrestHelp type=submit value="'+translate('Help')+'">'; m += '<INPUT id=showCrestTargets type=submit value="'+translate('See target')+'"><br>'+translate('Attack Interval')+': <INPUT id="pbcrest_interval" type=text size=3 value='+Options.Crestinterval+' /> '+uW.arStrings.TimeStr.timeSec+'</td>'; m += '<TD>'+translate('Do not use the general with the energy below')+' <INPUT id=pbgenenergy value='+ Options.CrestEnergy +' type=text size=3 \></td>'; m += '</tr></table>'; m += '<DIV id=pbOpt class=ptstat>'+translate('OPTIONS')+'</div><TABLE id=pbcrestopt width=100% height=0% class=pbTab><TR align="center"></table>'; m += '<DIV style="margin-bottom:10px;">'+uW.arStrings.Common.From+': <span id=crestcity></span></div>'; m += '<TABLE class=ptTab><TR><TD>'+uW.arStrings.Common.To+': X:<INPUT id=pbcrestx type=text size=3 maxlength=3 value=""></td>'; m += '<TD>Y:<INPUT id=pbcresty type=text size=3 maxlength=3 value=""></td></tr></table>'; m += '<DIV id=pbWave1 class=ptstat>'+translate('Wave')+' <b>1</b>:</div>'; m += '<table><tr>'; m += '<TD>'+uW.arStrings.unitName["u1"]+'</td><TD><INPUT id=R1SOM type=text size=6 maxlength=6 value=0></td>'; m += '<TD>'+uW.arStrings.unitName["u2"]+'</td><TD><INPUT id=R1REC type=text size=6 maxlength=6 value=0></td>'; m += '<TD>'+uW.arStrings.unitName["u6"]+'</td><TD><INPUT id=R1CAL type=text size=6 maxlength=6 value=0></td>'; m += '<TD>'+uW.arStrings.unitName["u7"]+'</td><TD><INPUT id=R1CAV type=text size=6 maxlength=6 value=0></td>'; m += '<TD>'+uW.arStrings.unitName["u4"]+'</td><TD><INPUT id=R1LEG type=text size=6 maxlength=6 value=0></td></tr>'; m += '<tr><TD>'+uW.arStrings.unitName["u10"]+'</td><TD><INPUT id=R1SCO type=text size=6 maxlength=6 value=0></td>'; m += '<TD>'+uW.arStrings.unitName["u9"]+'</td><TD><INPUT id=R1CAR type=text size=6 maxlength=6 value=0></td>'; m += '<TD>'+uW.arStrings.unitName["u8"]+'</td><TD><INPUT id=R1CAP type=text size=6 maxlength=6 value=0></td>'; m += '<TD>'+uW.arStrings.unitName["u5"]+'</td><TD><INPUT id=R1CEN type=text size=7 maxlength=6 value=0></td>'; m += '<TD>'+uW.arStrings.unitName["u11"]+'</td><TD><INPUT id=R1ARI type=text size=6 maxlength=6 value=0></td></tr>'; m += '<tr><TD>'+uW.arStrings.unitName["u12"]+'</td><TD><INPUT id=R1BAL type=text size=6 maxlength=6 value=0></td>'; m += '<TD>'+uW.arStrings.unitName["u31"]+'</td><TD><INPUT id=R1BER type=text size=6 maxlength=6 value=0></td>'; m += '<TD>'+uW.arStrings.unitName["u32"]+'</td><TD><INPUT id=R1RAI type=text size=6 maxlength=6 value=0></td></tr>'; m += '</table><br><br>'; m += '<DIV id=pbWave1 class=ptstat>'+translate('Wave')+' <b>2</b>:</div>'; m += '<table><tr>'; m += '<TD>'+uW.arStrings.unitName["u1"]+'</td><TD><INPUT id=R2SOM type=text size=6 maxlength=6 value=0></td>'; m += '<TD>'+uW.arStrings.unitName["u2"]+'</td><TD><INPUT id=R2REC type=text size=6 maxlength=6 value=0></td>'; m += '<TD>'+uW.arStrings.unitName["u6"]+'</td><TD><INPUT id=R2CAL type=text size=6 maxlength=6 value=0></td>'; m += '<TD>'+uW.arStrings.unitName["u7"]+'</td><TD><INPUT id=R2CAV type=text size=6 maxlength=6 value=0></td>'; m += '<TD>'+uW.arStrings.unitName["u4"]+'</td><TD><INPUT id=R2LEG type=text size=6 maxlength=6 value=0></td></tr>'; m += '<tr><TD>'+uW.arStrings.unitName["u10"]+'</td><TD><INPUT id=R2SCO type=text size=6 maxlength=6 value=0></td>'; m += '<TD>'+uW.arStrings.unitName["u9"]+'</td><TD><INPUT id=R2CAR type=text size=6 maxlength=6 value=0></td>'; m += '<TD>'+uW.arStrings.unitName["u8"]+'</td><TD><INPUT id=R2CAP type=text size=6 maxlength=6 value=0></td>'; m += '<TD>'+uW.arStrings.unitName["u5"]+'</td><TD><INPUT id=R2CEN type=text size=6 maxlength=6 value=0></td>'; m += '<TD>'+uW.arStrings.unitName["u11"]+'</td><TD><INPUT id=R2ARI type=text size=6 maxlength=6 value=0></td>'; m += '<tr><TD>'+uW.arStrings.unitName["u12"]+'</td><TD><INPUT id=R2BAL type=text size=6 maxlength=6 value=0></td>'; m += '<TD>'+uW.arStrings.unitName["u31"]+'</td><TD><INPUT id=R2BER type=text size=6 maxlength=6 value=0></td>'; m += '<TD>'+uW.arStrings.unitName["u32"]+'</td><TD><INPUT id=R2RAI type=text size=6 maxlength=6 value=0></td></tr></table>'; m += '<DIV style="text-align:center; margin-top:15px"><INPUT id=pbSaveRouteCrest type=submit value="'+translate('Add target')+'"></div>'; t.cont.innerHTML = m; ById('pbgenenergy').addEventListener('change', function(){ Options.CrestEnergy = ById('pbgenenergy').value; saveOptions(); }, false); ById('pbcrest_interval').addEventListener('change', function(){ if (parseIntNan(ById("pbcrest_interval").value<5)) ById("pbcrest_interval").value=5; Options.Crestinterval = parseIntNan(ById("pbcrest_interval").value); saveOptions(); },false); for (var i=0;i<Cities.numCities;i++){ if (CrestOptions.CrestCity == Cities.cities[i][0]){ selbut=i; break; } } t.tcp = new CdispCityPicker ('crestcityselect', document.getElementById('crestcity'), true, t.clickCitySelect, selbut); if (CrestOptions.CrestCity == 0) { CrestOptions.CrestCity = t.tcp.city.c.id; } document.getElementById('pbcrestx').addEventListener('keyup', function(){ if (isNaN(document.getElementById('pbcrestx').value)) document.getElementById('pbcrestx').value='' ; }, false); document.getElementById('pbcresty').addEventListener('keyup', function(){ if (isNaN(document.getElementById('pbcresty').value)) document.getElementById('pbcresty').value='' ; }, false); document.getElementById('R1SOM').addEventListener('keyup', function(){ if (isNaN(document.getElementById('R1SOM').value)) document.getElementById('R1SOM').value=0 ; }, false); document.getElementById('R1REC').addEventListener('keyup', function(){ if (isNaN(document.getElementById('R1REC').value)) document.getElementById('R1REC').value=0 ; }, false); document.getElementById('R1CAV').addEventListener('keyup', function(){ if (isNaN(document.getElementById('R1CAV').value)) document.getElementById('R1CAV').value=0 ; }, false); document.getElementById('R1CAL').addEventListener('keyup', function(){ if (isNaN(document.getElementById('R1CAL').value)) document.getElementById('R1CAL').value=0 ; }, false); document.getElementById('R1LEG').addEventListener('keyup', function(){ if (isNaN(document.getElementById('R1LEG').value)) document.getElementById('R1LEG').value=0 ; }, false); document.getElementById('R1SCO').addEventListener('keyup', function(){ if (isNaN(document.getElementById('R1SCO').value)) document.getElementById('R1SCO').value=0 ; }, false); document.getElementById('R1CAR').addEventListener('keyup', function(){ if (isNaN(document.getElementById('R1CAR').value)) document.getElementById('R1CAR').value=0 ; }, false); document.getElementById('R1CAP').addEventListener('keyup', function(){ if (isNaN(document.getElementById('R1CAP').value)) document.getElementById('R1CAP').value=0 ; }, false); document.getElementById('R1CEN').addEventListener('keyup', function(){ if (isNaN(document.getElementById('R1CEN').value)) document.getElementById('R1CEN').value=0 ; }, false); document.getElementById('R1ARI').addEventListener('keyup', function(){ if (isNaN(document.getElementById('R1ARI').value)) document.getElementById('R1ARI').value=0 ; }, false); document.getElementById('R1BAL').addEventListener('keyup', function(){ if (isNaN(document.getElementById('R1BAL').value)) document.getElementById('R1BAL').value=0 ; }, false); document.getElementById('R1BER').addEventListener('keyup', function(){ if (isNaN(document.getElementById('R1BER').value)) document.getElementById('R1BER').value=0 ; }, false); document.getElementById('R1RAI').addEventListener('keyup', function(){ if (isNaN(document.getElementById('R1RAI').value)) document.getElementById('R1RAI').value=0 ; }, false); document.getElementById('R2SOM').addEventListener('keyup', function(){ if (isNaN(document.getElementById('R2SOM').value)) document.getElementById('R2SOM').value=0 ; }, false); document.getElementById('R2REC').addEventListener('keyup', function(){ if (isNaN(document.getElementById('R2REC').value)) document.getElementById('R2REC').value=0 ; }, false); document.getElementById('R2CAV').addEventListener('keyup', function(){ if (isNaN(document.getElementById('R2CAV').value)) document.getElementById('R2CAV').value=0 ; }, false); document.getElementById('R2CAL').addEventListener('keyup', function(){ if (isNaN(document.getElementById('R2CAL').value)) document.getElementById('R2CAL').value=0 ; }, false); document.getElementById('R2LEG').addEventListener('keyup', function(){ if (isNaN(document.getElementById('R2LEG').value)) document.getElementById('R2LEG').value=0 ; }, false); document.getElementById('R2SCO').addEventListener('keyup', function(){ if (isNaN(document.getElementById('R2SCO').value)) document.getElementById('R2SCO').value=0 ; }, false); document.getElementById('R2CAR').addEventListener('keyup', function(){ if (isNaN(document.getElementById('R2CAR').value)) document.getElementById('R2CAR').value=0 ; }, false); document.getElementById('R2CAP').addEventListener('keyup', function(){ if (isNaN(document.getElementById('R2CAP').value)) document.getElementById('R2CAP').value=0 ; }, false); document.getElementById('R2CEN').addEventListener('keyup', function(){ if (isNaN(document.getElementById('R2CEN').value)) document.getElementById('R2CEN').value=0 ; }, false); document.getElementById('R2ARI').addEventListener('keyup', function(){ if (isNaN(document.getElementById('R2ARI').value)) document.getElementById('R2ARI').value=0 ; }, false); document.getElementById('R2BAL').addEventListener('keyup', function(){ if (isNaN(document.getElementById('R2BAL').value)) document.getElementById('R2BAL').value=0 ; }, false); document.getElementById('R2BER').addEventListener('keyup', function(){ if (isNaN(document.getElementById('R2BER').value)) document.getElementById('R2BER').value=0 ; }, false); document.getElementById('R2RAI').addEventListener('keyup', function(){ if (isNaN(document.getElementById('R2RAI').value)) document.getElementById('R2RAI').value=0 ; }, false); document.getElementById('crestcity').addEventListener('click', function(){CrestOptions.CrestCity = t.tcp.city.id;} , false); document.getElementById('Cresttoggle').addEventListener('click', function(){t.toggleCrestState(this)} , false); document.getElementById('pbcrestx').addEventListener('change', function(){CrestOptions.X = document.getElementById('pbcrestx').value;;} , false); document.getElementById('pbcresty').addEventListener('change', function(){CrestOptions.Y = document.getElementById('pbcresty').value;} , false); document.getElementById('R1SOM').addEventListener('change', function(){CrestOptions.R1SOM = document.getElementById('R1SOM').value;} , false); document.getElementById('R1REC').addEventListener('change', function(){CrestOptions.R1REC = document.getElementById('R1REC').value;} , false); document.getElementById('R1CAL').addEventListener('change', function(){CrestOptions.R1CAL = document.getElementById('R1CAL').value;} , false); document.getElementById('R1CAV').addEventListener('change', function(){CrestOptions.R1CAV = document.getElementById('R1CAV').value;} , false); document.getElementById('R1LEG').addEventListener('change', function(){CrestOptions.R1LEG = document.getElementById('R1LEG').value;} , false); document.getElementById('R1SCO').addEventListener('change', function(){CrestOptions.R1SCO = document.getElementById('R1SCO').value;} , false); document.getElementById('R1CAR').addEventListener('change', function(){CrestOptions.R1CAR = document.getElementById('R1CAR').value;} , false); document.getElementById('R1CAP').addEventListener('change', function(){CrestOptions.R1CAP = document.getElementById('R1CAP').value;} , false); document.getElementById('R1CEN').addEventListener('change', function(){CrestOptions.R1CEN = document.getElementById('R1CEN').value;} , false); document.getElementById('R1ARI').addEventListener('change', function(){CrestOptions.R1ARI = document.getElementById('R1ARI').value;} , false); document.getElementById('R1BAL').addEventListener('change', function(){CrestOptions.R1BAL = document.getElementById('R1BAL').value;} , false); document.getElementById('R1BER').addEventListener('change', function(){CrestOptions.R1BER = document.getElementById('R1BER').value;} , false); document.getElementById('R1RAI').addEventListener('change', function(){CrestOptions.R1RAI = document.getElementById('R1RAI').value;} , false); document.getElementById('R2SOM').addEventListener('change', function(){CrestOptions.R2SOM = document.getElementById('R2SOM').value;} , false); document.getElementById('R2REC').addEventListener('change', function(){CrestOptions.R2REC = document.getElementById('R2REC').value;} , false); document.getElementById('R2CAL').addEventListener('change', function(){CrestOptions.R2CAL = document.getElementById('R2CAL').value;} , false); document.getElementById('R2CAV').addEventListener('change', function(){CrestOptions.R2CAV = document.getElementById('R2CAV').value;} , false); document.getElementById('R2LEG').addEventListener('change', function(){CrestOptions.R2LEG = document.getElementById('R2LEG').value;} , false); document.getElementById('R2SCO').addEventListener('change', function(){CrestOptions.R2SCO = document.getElementById('R2SCO').value;} , false); document.getElementById('R2CAR').addEventListener('change', function(){CrestOptions.R2CAR = document.getElementById('R2CAR').value;} , false); document.getElementById('R2CAP').addEventListener('change', function(){CrestOptions.R2CAP = document.getElementById('R2CAP').value;} , false); document.getElementById('R2CEN').addEventListener('change', function(){CrestOptions.R2CEN = document.getElementById('R2CEN').value;} , false); document.getElementById('R2ARI').addEventListener('change', function(){CrestOptions.R2ARI = document.getElementById('R2ARI').value;} , false); document.getElementById('R2BAL').addEventListener('change', function(){CrestOptions.R2BAL = document.getElementById('R2BAL').value;} , false); document.getElementById('R2BER').addEventListener('change', function(){CrestOptions.R2BER = document.getElementById('R2BER').value;} , false); document.getElementById('R2RAI').addEventListener('change', function(){CrestOptions.R2RAI = document.getElementById('R2RAI').value;} , false); document.getElementById('CrestHelp').addEventListener('click', function(){t.helpPop();} , false); document.getElementById('pbSaveRouteCrest').addEventListener('click', function(){CrestOptions.active=true;t.addCrestRoute();}, false); document.getElementById('showCrestTargets').addEventListener('click', function(){t.showCrestRoute();}, false); }, helpPop : function (){ var helpText = 'Non disponibile'; if (t.cresthelp == null) { t.cresthelp = new CPopup('ArmoiriesHelp', 0, 0, 585, 400, true, function() {clearTimeout (1000);}); t.cresthelp.centerMe (mainPop.getMainDiv()); } t.cresthelp.getMainDiv().innerHTML = helpText; t.cresthelp.getTopDiv().innerHTML = '<CENTER><B>'+translate('Help')+' - Crest</b></center>'; t.cresthelp.show (true); }, addCrestRoute : function () { if(CrestOptions.X == "" || CrestOptions.Y == "") { alert(translate('No coordinates')+'!'); return; } var t = my.Crest; var CrestLength = CrestData.length; CrestData[CrestLength] = new CrestFunc(CrestOptions); saveCrestData(); ById('pbOpt').style.background ='#99FF99'; setTimeout(function(){ (ById('pbOpt').style.background =''); }, 500); }, showCrestRoute : function () { var t = my.Crest; if (t.popCrestTargets == null) { t.popCrestTargets = new CPopup('pbShowCrestTargets', 0, 0, 1100, 500, true, function() {clearTimeout (1000);}); t.popCrestTargets.centerMe (mainPop.getMainDiv()); } var m = '<DIV style="max-height:460px; height:460px; overflow-y:auto"><TABLE align=center cellpadding=0 cellspacing=0 width=100% class="pbShowCrestTargets" id="pbCrestTargets">'; t.popCrestTargets.getMainDiv().innerHTML = '</table></div>' + m; t.popCrestTargets.getTopDiv().innerHTML = '<TD><B>'+translate('Target attack')+'</td>'; t.paintCrestTargets(); t._addTabHeader(); t.popCrestTargets.show(true); }, /** add header **/ _addTabHeader : function () { var row = document.getElementById('pbCrestTargets').insertRow(0); row.vAlign = 'top'; row.insertCell(0).innerHTML = uW.arStrings.Common.Target; row.insertCell(1).innerHTML = translate('Wave') + " #"; row.insertCell(2).innerHTML = uW.arStrings.unitName["u1"]; row.insertCell(3).innerHTML = uW.arStrings.unitName["u2"]; row.insertCell(4).innerHTML = uW.arStrings.unitName["u6"]; row.insertCell(5).innerHTML = uW.arStrings.unitName["u7"]; row.insertCell(6).innerHTML = uW.arStrings.unitName["u4"]; row.insertCell(7).innerHTML = uW.arStrings.unitName["u10"]; row.insertCell(8).innerHTML = uW.arStrings.unitName["u9"]; row.insertCell(9).innerHTML = uW.arStrings.unitName["u8"]; row.insertCell(10).innerHTML = uW.arStrings.unitName["u5"]; row.insertCell(11).innerHTML = uW.arStrings.unitName["u11"]; row.insertCell(12).innerHTML = uW.arStrings.unitName["u12"]; row.insertCell(13).innerHTML = uW.arStrings.unitName["u31"]; row.insertCell(14).innerHTML = uW.arStrings.unitName["u32"]; row.insertCell(15).innerHTML = " "; row.insertCell(16).innerHTML = " "; }, /** paintCrestTargets **/ paintCrestTargets : function () { t = my.Crest; for(var i = 0; i < CrestData.length; i++) { t._addTabCrest(i, uW.arStrings.Common.To+': <a href="javascript:void(0)" onclick="KB.Controllers.MapHelper.gotoCoord(' + CrestData[i].X + ',' + CrestData[i].Y+');">('+CrestData[i].X+','+CrestData[i].Y+')</a>', "<b>2</b>", CrestData[i].R2SOM, CrestData[i].R2REC, CrestData[i].R2CAL, CrestData[i].R2CAV, CrestData[i].R2LEG, CrestData[i].R2SCO, CrestData[i].R2CAR, CrestData[i].R2CAP, CrestData[i].R2CEN, CrestData[i].R2ARI, CrestData[i].R2BAL, CrestData[i].R2BER, CrestData[i].R2RAI, " "," "); if (CrestData[i].active==true) t._addTabCrest(i, CrestData[i].CrestCity, "<b>1</b>", CrestData[i].R1SOM, CrestData[i].R1REC, CrestData[i].R1CAL, CrestData[i].R1CAV, CrestData[i].R1LEG, CrestData[i].R1SCO, CrestData[i].R1CAR, CrestData[i].R1CAP, CrestData[i].R1CEN, CrestData[i].R1ARI, CrestData[i].R1BAL, CrestData[i].R1BER, CrestData[i].R1RAI, uW.arStrings.NeighborsPage.Remove, translate('Active')); else t._addTabCrest(i, CrestData[i].CrestCity, "<b>1</b>", CrestData[i].R1SOM, CrestData[i].R1REC, CrestData[i].R1CAL, CrestData[i].R1CAV, CrestData[i].R1LEG, CrestData[i].R1SCO, CrestData[i].R1CAR, CrestData[i].R1CAP, CrestData[i].R1CEN, CrestData[i].R1ARI, CrestData[i].R1BAL, CrestData[i].R1BER, CrestData[i].R1RAI, uW.arStrings.NeighborsPage.Remove, translate('Deactive')); // t._addTabCrest(i, "","","","","","","","","","","","","","","","",""); } }, /** Add Tab Crest **/ _addTabCrest : function (QueID, col0, col1, col2, col3, col4, col5, col6, col7, col8, col9, col10, col11, col12, col13, col14, col15, col16) { var t = my.Crest; var row = document.getElementById('pbCrestTargets').insertRow(0); for (var i = 0; i < 17; i++) { if (i == 15 && col15 == uW.arStrings.NeighborsPage.Remove) { row.insertCell(i).innerHTML = "<input type=button id='pbCrestDel_" + QueID + "' value='"+uW.arStrings.NeighborsPage.Remove+"'>"; document.getElementById('pbCrestDel_' + QueID).addEventListener('click', function(){t.cancelCrestTarget(QueID);}, false); } else if (col15 == uW.arStrings.NeighborsPage.Remove && i == 0) { row.insertCell(i).innerHTML = Cities.byID[col0].c.name; } else if (i == 16 && col15 == uW.arStrings.NeighborsPage.Remove) { if ( i == 16 && col16 == translate('Active')) { row.insertCell(i).innerHTML = "<input type=button id='BOCrestAct_" + QueID + "' value='"+translate('Active')+"'>"; document.getElementById('BOCrestAct_' + QueID).addEventListener('click', function(){ CrestData[QueID].active=false;saveCrestData();t.showCrestRoute(); }, false); } else if (i == 16 && col16 ==translate('Deactive')) { row.insertCell(i).innerHTML = "<input type=button id='BOCrestAct_" + QueID + "' value='"+translate('Deactive')+"'>"; document.getElementById('BOCrestAct_' + QueID).addEventListener('click', function(){ CrestData[QueID].active=true;saveCrestData();t.showCrestRoute(); }, false); } }else{ row.insertCell(i).innerHTML = eval("col" + i) + " "; } } }, /** Cancel Crest Target **/ cancelCrestTarget : function (QueID) { var t = my.Crest; var queueId = parseInt(QueID); CrestData.splice(queueId, 1); saveCrestData(); t.showCrestRoute(); }, getRallypointLevel: function(id){ var t = my.Crest; t.numslots=parseInt(unsafeWindow.Building.getMaxLevelForType(unsafeWindow.Constant.Building.RALLY_SPOT,id)); }, getRallypointLevel2: function(id){ var t = my.Crest; t.rallypointlevel=parseInt(unsafeWindow.Building.getMaxLevelForType(unsafeWindow.Constant.Building.RALLY_SPOT,id)); }, sendMarch: function(p,callback,r,retry, CrestDataNum, cityID, a, b){ unsafeWindow.AjaxCall.gPostRequest("march.php",p, function(h){ actionLog('Crest',translate('Crest')+' '+uW.arStrings.Common.To+' '+p.xcoord+','+p.ycoord); var now = new Date().getTime()/1000.0; now = now.toFixed(0); var i="attack",j=Number(h.eta)-Number(h.initTS); unsafeWindow.Chrome.ResourcesBar.update(); unsafeWindow.Object.keys(a.units).each(function(k){Cities.byID[cityID].c.troops[k].subtract(a.units[k].sent)}); if(b){b.status=10;b.subtractEnergy()} a.id=Number(h.marchId); a.to.tileId=Number(h.tileId); a.to.tileType=Number(h.tileType); a.to.tileLevel=Number(h.tileLevel); a.to.playerId=Number(h.tileUserId); a.to.cityId=Number(h.tileCityId); a.setStatus(unsafeWindow.Constant.MarchStatus.OUTBOUND); a.setMarchTime(unsafeWindow.unixtime(),unsafeWindow.unixtime()+j,0); Cities.byID[cityID].c.marches.outgoing[a.id]=a; unsafeWindow.KTrack.event(["_trackEvent","March",i,unsafeWindow.player.level]); if(r==1){ Options.Crest1Count++; r = 2; // CrestData[CrestDataNum].lastRoundTwo = now; } else { r = 1; CrestDataNum = parseInt(CrestDataNum) + 1; Options.Crest2Count++; } saveCrestData(); t.timer = setTimeout (function(){callback(r,0,CrestDataNum);}, (Math.random()*10*50)+(Options.Crestinterval*1000)); return; }, function(h){ var RetryTime = parseIntNan(Options.Crestinterval)*1000; actionLog('Crest','<font color=red>'+translate('FAIL')+' '+translate('Crest')+' '+uW.arStrings.Common.To+' '+p.xcoord+','+p.ycoord+' '+translate('I will try after')+' '+RetryTime); setTimeout (function(){callback(r,retry,CrestDataNum);}, RetryTime); return; }, false); }, Rounds : function (r, retry, CrestDataNum) { var t = my.Crest; clearTimeout(t.timer); if (!Options.crestRunning) return; if (CrestData.length == 0){ return; } if (CrestDataNum >= CrestData.length) { CrestDataNum = 0; saveCrestData(); t.timer = setTimeout(function(){ t.Rounds(1,retry,CrestDataNum);},Options.Crestinterval*1000); return; } cityID = CrestData[CrestDataNum].CrestCity; if (CrestData[CrestDataNum].active==false) { alert('Disattivo'); t.timer =setTimeout(function() { t.Rounds(1,0,parseInt(CrestDataNum+1)); },1000); return; } retry++; switch (retry) { case 10: t.timer =setTimeout(function(){ t.Rounds(r,retry,CrestDataNum);},30000); return; break; case 20: t.timer =setTimeout(function(){ t.Rounds(r,retry,CrestDataNum);},30000); return; break; case 50: //reloadKOC(); return; break; } var unit1 = 1; var unit2 = 2; var unit6 = 6; var unit7 = 7; var unit4 = 4; var unit10 = 10; var unit9 = 9; var unit8 = 8; var unit5 = 5; var unit11 = 11; var unit12 = 12; var unit31 = 31; var unit32 = 32; var Controllo = true; if(parseInt(Cities.byID[cityID].c.troops[unit1].count()) < CrestData[CrestDataNum].R1SOM) Controllo = false; if(parseInt(Cities.byID[cityID].c.troops[unit2].count()) < CrestData[CrestDataNum].R1REC) Controllo = false; if(parseInt(Cities.byID[cityID].c.troops[unit6].count()) < CrestData[CrestDataNum].R1CAL) Controllo = false; if(parseInt(Cities.byID[cityID].c.troops[unit7].count()) < CrestData[CrestDataNum].R1CAV) Controllo = false; if(parseInt(Cities.byID[cityID].c.troops[unit4].count()) < CrestData[CrestDataNum].R1LEG) Controllo = false; if(parseInt(Cities.byID[cityID].c.troops[unit10].count()) < CrestData[CrestDataNum].R1SCO) Controllo = false; if(parseInt(Cities.byID[cityID].c.troops[unit9].count()) < CrestData[CrestDataNum].R1CAR) Controllo = false; if(parseInt(Cities.byID[cityID].c.troops[unit8].count()) < CrestData[CrestDataNum].R1CAP) Controllo = false; if(parseInt(Cities.byID[cityID].c.troops[unit5].count()) < CrestData[CrestDataNum].R1CEN) Controllo = false; if(parseInt(Cities.byID[cityID].c.troops[unit11].count()) < CrestData[CrestDataNum].R1ARI) Controllo = false; if(parseInt(Cities.byID[cityID].c.troops[unit12].count()) < CrestData[CrestDataNum].R1BAL) Controllo = false; if(parseInt(Cities.byID[cityID].c.troops[unit31].count()) < CrestData[CrestDataNum].R1BER) Controllo = false; if(parseInt(Cities.byID[cityID].c.troops[unit32].count()) < CrestData[CrestDataNum].R1RAI) Controllo = false; if(parseInt(Cities.byID[cityID].c.troops[unit1].count()) < CrestData[CrestDataNum].R2SOM) Controllo = false; if(parseInt(Cities.byID[cityID].c.troops[unit2].count()) < CrestData[CrestDataNum].R2REC) Controllo = false; if(parseInt(Cities.byID[cityID].c.troops[unit6].count()) < CrestData[CrestDataNum].R2CAL) Controllo = false; if(parseInt(Cities.byID[cityID].c.troops[unit7].count()) < CrestData[CrestDataNum].R2CAV) Controllo = false; if(parseInt(Cities.byID[cityID].c.troops[unit4].count()) < CrestData[CrestDataNum].R2LEG) Controllo = false; if(parseInt(Cities.byID[cityID].c.troops[unit10].count()) < CrestData[CrestDataNum].R2SCO) Controllo = false; if(parseInt(Cities.byID[cityID].c.troops[unit9].count()) < CrestData[CrestDataNum].R2CAR) Controllo = false; if(parseInt(Cities.byID[cityID].c.troops[unit8].count()) < CrestData[CrestDataNum].R2CAP) Controllo = false; if(parseInt(Cities.byID[cityID].c.troops[unit5].count()) < CrestData[CrestDataNum].R2CEN) Controllo = false; if(parseInt(Cities.byID[cityID].c.troops[unit11].count()) < CrestData[CrestDataNum].R2ARI) Controllo = false; if(parseInt(Cities.byID[cityID].c.troops[unit12].count()) < CrestData[CrestDataNum].R2BAL) Controllo = false; if(parseInt(Cities.byID[cityID].c.troops[unit31].count()) < CrestData[CrestDataNum].R2BER) Controllo = false; if(parseInt(Cities.byID[cityID].c.troops[unit32].count()) < CrestData[CrestDataNum].R2RAI) Controllo = false; if(!Controllo){ if (CrestData.length == 1) { t.timer =setTimeout(function(){ t.Rounds(r,retry,CrestDataNum);},Options.Crestinterval*1000); return; } else { t.timer =setTimeout(function(){ t.Rounds(1,retry,parseInt(CrestDataNum)+1);},Options.Crestinterval*1000); return; } } var kk=[]; Cities.byID[cityID].c.generalsSorted().each(function(b){if(b.available() && b.energy()>Options.CrestEnergy){ kk.push(b);}}); // id du premier chevalier ! a trouver var selectedKnight=kk.length>0?kk[0].id:0; // alert(Cities.byID[cityID].c.name); if(Cities.byID[cityID].c.canMarch()){ if(selectedKnight != 0){ } else { if (CrestData.length == 1) { t.timer = setTimeout(function(){ t.Rounds(r,retry,CrestDataNum);},Options.Crestinterval*1000); return; } else { t.timer = setTimeout(function(){ t.Rounds(1,retry,parseInt(CrestDataNum)+1);},Options.Crestinterval*1000); return; } } } else { if (CrestData.length == 1) { t.timer = setTimeout(function(){ t.Rounds(r,retry,CrestDataNum);},Options.Crestinterval*1000); return; } else { t.timer = setTimeout(function(){ t.Rounds(1,retry,parseInt(CrestDataNum)+1);},Options.Crestinterval*1000); return; } } var kid = selectedKnight; if (CrestData[CrestDataNum].R1SOM == 0 && CrestData[CrestDataNum].R1REC == 0 && CrestData[CrestDataNum].R1CAL == 0 && CrestData[CrestDataNum].R1CAV == 0 && CrestData[CrestDataNum].R1LEG == 0 && CrestData[CrestDataNum].R1SCO == 0 && CrestData[CrestDataNum].R1CAR == 0 && CrestData[CrestDataNum].R1CAP == 0 && CrestData[CrestDataNum].R1CEN == 0 && CrestData[CrestDataNum].R1ARI == 0 && CrestData[CrestDataNum].R1BAL == 0 && CrestData[CrestDataNum].R1BER == 0) { r=2; } if (CrestData[CrestDataNum].R2SOM == 0 && CrestData[CrestDataNum].R2REC == 0 && CrestData[CrestDataNum].R2CAL == 0 && CrestData[CrestDataNum].R2CAV == 0 && CrestData[CrestDataNum].R2LEG == 0 && CrestData[CrestDataNum].R2SCO == 0 && CrestData[CrestDataNum].R2CAR == 0 && CrestData[CrestDataNum].R2CAP == 0 && CrestData[CrestDataNum].R2CEN == 0 && CrestData[CrestDataNum].R2ARI == 0 && CrestData[CrestDataNum].R2BAL == 0 && CrestData[CrestDataNum].R2BER == 0) { r=1; } /**else { var now = new Date().getTime()/1000.0; now = now.toFixed(0); if (now > (parseInt(CrestData[CrestDataNum].lastRoundTwo) + 300)) { // 3 minutes entre les premiËres vagues r=1; } } **/ var d=unsafeWindow.Building.getMaxLevelForType(50,cityID); var a=new unsafeWindow.March({marchId:Cities.byID[cityID].c.emptyMarchSlots()[0],toXCoord:CrestData[CrestDataNum].X,toYCoord:CrestData[CrestDataNum].Y,fromCityId:CrestData[CrestDataNum].CrestCity,marchType:unsafeWindow.Constant.MarchType.ATTACK,knightId:selectedKnight,fromHealLevel:d,apothecaryHealPercent:unsafeWindow.KB.Controllers.Apothecary.getHealPercent(d),gold:0,resource1:0,resource2:0,resource3:0,resource4:0}); var CalcEta = t.calculateTime(CrestData[CrestDataNum].CrestCity,7,CrestData[CrestDataNum].X,CrestData[CrestDataNum].Y); var b=Cities.byID[cityID].c.generals[a.general.id]; if(b.energy()>0){ switch(r) { case 1: var params = {}; params.mid = a.id; params.xcoord = a.to.x; params.ycoord = a.to.y; params.cid = cityID; params.type = unsafeWindow.Constant.MarchType.ATTACK; params.kid = a.general.id; params.gold = a.gold; params.r1 = a.resources[1]; params.r2 = a.resources[2]; params.r3 = a.resources[3]; params.r4 = a.resources[4]; params.camp = 0; params.et = CalcEta; if(CrestData[CrestDataNum].R1SOM >0) a.units[unit1].sent = CrestData[CrestDataNum].R1SOM; if(CrestData[CrestDataNum].R1REC >0) a.units[unit2].sent = CrestData[CrestDataNum].R1REC; if(CrestData[CrestDataNum].R1CAL >0) a.units[unit6].sent = CrestData[CrestDataNum].R1CAL; if(CrestData[CrestDataNum].R1CAV >0) a.units[unit7].sent = CrestData[CrestDataNum].R1CAV; if(CrestData[CrestDataNum].R1LEG >0) a.units[unit4].sent = CrestData[CrestDataNum].R1LEG; if(CrestData[CrestDataNum].R1SCO >0) a.units[unit10].sent = CrestData[CrestDataNum].R1SCO; if(CrestData[CrestDataNum].R1CAR >0) a.units[unit9].sent = CrestData[CrestDataNum].R1CAR; if(CrestData[CrestDataNum].R1CAP >0) a.units[unit8].sent = CrestData[CrestDataNum].R1CAP; if(CrestData[CrestDataNum].R1CEN >0) a.units[unit5].sent = CrestData[CrestDataNum].R1CEN; if(CrestData[CrestDataNum].R1ARI >0) a.units[unit11].sent = CrestData[CrestDataNum].R1ARI; if(CrestData[CrestDataNum].R1BAL >0) a.units[unit12].sent = CrestData[CrestDataNum].R1BAL; if(CrestData[CrestDataNum].R1BER >0) a.units[unit31].sent = CrestData[CrestDataNum].R1BER; if(CrestData[CrestDataNum].R1RAI >0) a.units[unit32].sent = CrestData[CrestDataNum].R1RAI; if(CrestData[CrestDataNum].R1SOM >0) params.u1 = CrestData[CrestDataNum].R1SOM; if(CrestData[CrestDataNum].R1REC >0) params.u2 = CrestData[CrestDataNum].R1REC; if(CrestData[CrestDataNum].R1CAL >0) params.u6 = CrestData[CrestDataNum].R1CAL; if(CrestData[CrestDataNum].R1CAV >0) params.u7 = CrestData[CrestDataNum].R1CAV; if(CrestData[CrestDataNum].R1LEG >0) params.u4 = CrestData[CrestDataNum].R1LEG; if(CrestData[CrestDataNum].R1SCO >0) params.u10 = CrestData[CrestDataNum].R1SCO; if(CrestData[CrestDataNum].R1CAR >0) params.u9 = CrestData[CrestDataNum].R1CAR; if(CrestData[CrestDataNum].R1CAP >0) params.u8 = CrestData[CrestDataNum].R1CAP; if(CrestData[CrestDataNum].R1CEN >0) params.u5 = CrestData[CrestDataNum].R1CEN; if(CrestData[CrestDataNum].R1ARI >0) params.u11 = CrestData[CrestDataNum].R1ARI; if(CrestData[CrestDataNum].R1BAL >0) params.u12 = CrestData[CrestDataNum].R1BAL; if(CrestData[CrestDataNum].R1BER >0) params.u31 = CrestData[CrestDataNum].R1BER; if(CrestData[CrestDataNum].R1RAI >0) params.u32 = CrestData[CrestDataNum].R1RAI; t.sendMarch(params,t.Rounds,r,retry, CrestDataNum, cityID, a, b); break; default: var params = {}; params.mid = a.id; params.xcoord = a.to.x; params.ycoord = a.to.y; params.cid = cityID; params.type = unsafeWindow.Constant.MarchType.ATTACK; params.kid = a.general.id; params.gold = a.gold; params.r1 = a.resources[1]; params.r2 = a.resources[2]; params.r3 = a.resources[3]; params.r4 = a.resources[4]; params.camp = 0; params.et = CalcEta; if(CrestData[CrestDataNum].R2SOM >0) a.units[unit1].sent = CrestData[CrestDataNum].R2SOM; if(CrestData[CrestDataNum].R2REC >0) a.units[unit2].sent = CrestData[CrestDataNum].R2REC; if(CrestData[CrestDataNum].R2CAL >0) a.units[unit6].sent = CrestData[CrestDataNum].R2CAL; if(CrestData[CrestDataNum].R2CAV >0) a.units[unit7].sent = CrestData[CrestDataNum].R2CAV; if(CrestData[CrestDataNum].R2LEG >0) a.units[unit4].sent = CrestData[CrestDataNum].R2LEG; if(CrestData[CrestDataNum].R2SCO >0) a.units[unit10].sent = CrestData[CrestDataNum].R2SCO; if(CrestData[CrestDataNum].R2CAR >0) a.units[unit9].sent = CrestData[CrestDataNum].R2CAR; if(CrestData[CrestDataNum].R2CAP >0) a.units[unit8].sent = CrestData[CrestDataNum].R2CAP; if(CrestData[CrestDataNum].R2CEN >0) a.units[unit5].sent = CrestData[CrestDataNum].R2CEN; if(CrestData[CrestDataNum].R2ARI >0) a.units[unit11].sent = CrestData[CrestDataNum].R2ARI; if(CrestData[CrestDataNum].R2BAL >0) a.units[unit12].sent = CrestData[CrestDataNum].R2BAL; if(CrestData[CrestDataNum].R2BER >0) a.units[unit31].sent = CrestData[CrestDataNum].R2BER; if(CrestData[CrestDataNum].R2RAI >0) a.units[unit32].sent = CrestData[CrestDataNum].R2RAI; if(CrestData[CrestDataNum].R2SOM >0) params.u1 = CrestData[CrestDataNum].R2SOM; if(CrestData[CrestDataNum].R2REC >0) params.u2 = CrestData[CrestDataNum].R2REC; if(CrestData[CrestDataNum].R2CAL >0) params.u6 = CrestData[CrestDataNum].R2CAL; if(CrestData[CrestDataNum].R2CAV >0) params.u7 = CrestData[CrestDataNum].R2CAV; if(CrestData[CrestDataNum].R2LEG >0) params.u4 = CrestData[CrestDataNum].R2LEG; if(CrestData[CrestDataNum].R2SCO >0) params.u10 = CrestData[CrestDataNum].R2SCO; if(CrestData[CrestDataNum].R2CAR >0) params.u9 = CrestData[CrestDataNum].R2CAR; if(CrestData[CrestDataNum].R2CAP >0) params.u8 = CrestData[CrestDataNum].R2CAP; if(CrestData[CrestDataNum].R2CEN >0) params.u5 = CrestData[CrestDataNum].R2CEN; if(CrestData[CrestDataNum].R2ARI >0) params.u11 = CrestData[CrestDataNum].R2ARI; if(CrestData[CrestDataNum].R2BAL >0) params.u12 = CrestData[CrestDataNum].R2BAL; if(CrestData[CrestDataNum].R2BER >0) params.u31 = CrestData[CrestDataNum].R2BER; if(CrestData[CrestDataNum].R2RAI >0) params.u32 = CrestData[CrestDataNum].R2RAI; t.sendMarch(params,t.Rounds,r,retry, CrestDataNum, cityID, a, b); break; } } }, calculateTime: function(id,b,g,e) { var c=65535,a=Math.abs(Cities.byID[id].c.x-g),f=Math.abs(Cities.byID[id].c.y-e),d=Math.sqrt((a*a)+(f*f)); h=unsafeWindow.Unit.stats[b].speed*1; if(h<c){c=h;} return Math.ceil(d*6000/c)+30; }, toggleCrestState: function(obj) { var t = my.Crest; obj = ById('Cresttoggle'); if (Options.crestRunning == true) { Options.crestRunning = false; if (obj) obj.value = "Crest = OFF"; saveOptions(); } else { Options.crestRunning = true; if (obj) obj.value = "Crest = ON"; Options.Crest1Count = 0; Options.Crest2Count = 0; } saveOptions(); t.timer =setTimeout(function(){ t.Rounds(1,0,0);}, 1000); }, hide : function (){ var t = my.Crest; } } /************************ APOTCHERCARY ************************/ my.Herb = { cont : null, timer : null, init : function (){ var t = my.Herb; t.cont = document.createElement('div'); return t.cont; }, getContent : function (){ var t = my.Herb; return t.cont; }, show : function (){ var t = my.Herb; try { var m = '<DIV class=ptstat>'+uW.arStrings.buildingName.b50.toUpperCase()+'</div><br><center>'; m+= '<table><tr><td width="120px"></td>'; for (var c=0; c<Cities.numCities; c++) { m+= '<td colspan="2" width="100px"><b>'+Cities.cities[c].c.name+'</b></td>'; } m+= '</tr><tr><td><br></td></tr>'; uW.Barracks.allUnitIds.each(function(nbu){ if (uW.arStrings.unitName["u"+nbu]) { if (nbu % 2) style = ''; else style = " style = 'background: #e8e8e8'"; m+= '<tr><td '+style+'>'+uW.arStrings.unitName["u"+nbu]+'</td>'; for (var i=0; i<Cities.numCities; i++) { var wonded=Cities.cities[i].c.troops[nbu].wounded(); var eta = t.CalcEta(nbu,wonded); m+= '<td '+style+'>'+wonded+'</td><td '+style+'>'+timestr(eta)+'</td>'; } m+= '</tr>'; } }); m+= '</table></center>'; t.cont.innerHTML = m; } catch (e) { t.cont.innerHTML = '<PRE>'+ e.name +' : '+ e.message +'</pre>'; } }, CalcEta : function (b,a){ var t = my.Herb; return Math.ceil((uW.trainingData["unit" + b].costs.level0.time * a) / 80); }, hide : function (){ } } /************************ AUTO ATTACK GERMANIA ************************/ my.Germ = { cont : null, timer : null, pop:null, summary : [], selectedCity:null, AutoAttackCity:null, kk:null, init : function (){ var t = my.Germ; t.cont = document.createElement('div'); return t.cont; }, show : function (){ var t = my.Germ; try { if (uW.player.underProtection()) { t.cont.innerHTML = '<center><br><br><b>'+uW.arStrings.Boost.BeginnerProtection1 + " " + timestr(uW.player.beginnerProtection.secondsLeft())+'</b></center>'; return; } var m = '<DIV class=ptstat>'+translate('GERMANIA')+'</div>'; m+= '<center>'+translate('City for scout/attack')+' <span id="CityGerm"></span><br>'; m+= '<input type="button" value="'+translate('UPDATE')+'" id="UpdateGerm"></center><br><br>'; m+= '<div id="GermaniaStats"><center><b>'+translate('Wait')+' . . .</b>'; m+= '</div>'; m+= '<br><br><DIV class=ptstat>'+translate('AUTO ATTACK')+'</div>'; m+= '<table width=100%><tr><td style="text-align:center; vertical-align:middle;" width=50%>'; m+= '<div id="AttackGeneral">'; m+= '<center><table width="300px"><tr>'; m+= '<td><b>'+uW.arStrings.Common.City+':</b></td>'; m+= '<td><span id="GermAutoAttack"></span></center></td>'; m+= '</tr><tr><td><br></td></tr><tr>'; m+= '</tr><tr>'; m+= '<td><b>Germania:</b></td>'; m+= '<td><div id="SelectNumGerm">'; m+= '</div></td>'; m+= '</tr><tr><td><br></td></tr><tr>'; m+= '</tr><tr>'; m+= '<td><b>'+uW.arStrings.Common["Generals"]+':</b></td>'; m+= '<td><input type="checkbox" id="SelAllGen"> <b>'+translate('Select all')+'</b>'; m+= '<div style="width:200px; max-width:500px; height:100px; max-height:100px; overflow-y:auto; text-align:left;" id="GenGerm"></div></td>'; m+= '</tr><tr><td><br></td></tr><tr>'; m+= '</tr><tr>'; m+= '<td><b>'+uW.arStrings.Common.Troops+': </b></td>'; m+= '<td><select id="TroopsGenAutoAttack">'; uW.Barracks.allUnitIds.each(function(r){ if (uW.arStrings.unitName["u"+r]) { m+= '<option value="'+r+'">'+uW.arStrings.unitName["u"+r]+"</option>"; } }); m+= '</select> <b>(<span id="AmoutTroopsGerm"></span>)</b> </td>'; m+= '</tr></table><br><br>'; m+= '<input DISABLED type="button" id="StartAttackGen" value="'+uW.arStrings.Common.Attack+'"></center>'; m+= '</div>'; m+= '<div id="StatGeneral">'; m+= '<br><br><br><br>'; m+= '<center><span id="TottAttackGen"></span><br>'; m+= '<span id="TottErrAttackGen"></span><br><br>'; m+= '<input DISABLED type="button" id="HideStatGen" value="'+uW.arStrings.Common.Close+'"></center>'; m+= '</div>'; m+= '<br><br><center><span id="MessageGerm"></span></center>'; m+= '</td></tr></table>'; t.cont.innerHTML = m; t.UpdateSelect(1); ById('AttackGeneral').style.display = 'block'; ById('StatGeneral').style.display = 'none'; var dcp = new CdispCityPicker ('germcity', ById('CityGerm'), true, t.clickCitySelect, 0); var dcp = new CdispCityPicker ('germautoattackcity', ById('GermAutoAttack'), true, t.clickCityAutoAttackSelect, 0); t.getSummary(); t.UpdateTroops(); ById("UpdateGerm").addEventListener('click', function(){ ById('GermaniaStats').innerHTML = '<center><b>'+translate('Wait')+' . . .</b>'; t.getSummary(); }, false); ById('SelAllGen').addEventListener('click', function(){ t.getGeneral(); }, false); ById('HideStatGen').addEventListener('click', function(){ ById('AttackGeneral').style.display = 'block'; ById('StatGeneral').style.display = 'none'; ById('HideStatGen').disabled = true; ById('StartAttackGen').disabled = true; t.getGeneral(); t.UpdateTroops(); ById('MessageGerm').innerHTML = '<font color=red><b>'+translate('I suggest you refresh the page. Some data may not be real')+'!</b></font>'; }, false); ById("TroopsGenAutoAttack").addEventListener('change', function(){ t.UpdateTroops(); }, false); ById("StartAttackGen").addEventListener('click', function(){ ById('AttackGeneral').style.display = 'none'; ById('StatGeneral').style.display = 'block'; t.PreStart(); }, false); } catch (e) { t.cont.innerHTML = '<PRE>'+ e.name +' : '+ e.message +'</pre>'; } }, UpdateSelect : function (id) { var t = my.Germ; var m = '<select id="NumGerm">'; if (id == 1) m+= '<option selected="selected" value="2">1: '+uW.arStrings.battleground1.mapTooltipPoint1+'</option>'; else m+= '<option value="2">1: '+uW.arStrings.battleground1.mapTooltipPoint1+'</option>'; if (id == 2) m+= '<option selected="selected" value="3">2: '+uW.arStrings.battleground1.mapTooltipPoint2+'</option>'; else m+= '<option value="3">2: '+uW.arStrings.battleground1.mapTooltipPoint2+'</option>'; if (id == 3) m+= '<option selected="selected" value="4">3: '+uW.arStrings.battleground1.mapTooltipPoint3+'</option>'; else m+= '<option value="4">3: '+uW.arStrings.battleground1.mapTooltipPoint3+'</option>'; if (id == 4) m+= '<option selected="selected" value="5">4: '+uW.arStrings.battleground1.mapTooltipPoint4+'</option>'; else m+= '<option value="5">4: '+uW.arStrings.battleground1.mapTooltipPoint4+'</option>'; if (id == 5) m+= '<option selected="selected" value="6">5: '+uW.arStrings.battleground1.mapTooltipPoint5+'</option>'; else m+= '<option value="6">5: '+uW.arStrings.battleground1.mapTooltipPoint5+'</option>'; m+= '</select>'; ById('SelectNumGerm').innerHTML = m; ById('NumGerm').addEventListener('change', function(){ for (var y = 1; y < t.summary.length; y++) { var Sum = t.summary[y]; if (Sum.AllianceName == getMyAlliance()[1]) { if (ById('NumGerm').value == y+1) { alert(translate('You can not attack a member of your alliance')+'!!'); if (ById('NumGerm').value == 5) { var y = ById('NumGerm').value - 1; t.UpdateSelect(y); } else { var y = ById('NumGerm').value + 1; t.UpdateSelect(y); } } } } }, false); }, PreStart : function () { var t = my.Germ; var CityId = t.AutoAttackCity.c.id; var TotAttacks = 0; Cities.byID[CityId].c.generalsSorted().each(function(b){ if(b.available()){ if(b.energy()>0 && ById('GEN'+b.id).checked) { TotAttacks += b.energy(); } } }); ById('TottAttackGen').innerHTML = '0/'+TotAttacks; ById('TottErrAttackGen').innerHTML = ''; t.Start(TotAttacks); }, Start : function (TotAttacks) { var t = my.Germ; var TotAttackComp = 0; var TotErrorComp = 0; var Germania = ById('NumGerm').value; var TroopsId = ById('TroopsGenAutoAttack').value; var CityId = t.AutoAttackCity.c.id; var kk = []; Cities.byID[CityId].c.generalsSorted().each(function(b){ if(b.available()){ if(b.energy()>0 && ById('GEN'+b.id).checked) { kk.push({ id : b.id, energy : b.energy() }); } } }); for (var y = 0; y < kk.length; y++) { var KnightId = kk[y].id; var KnightEn = kk[y].energy; for (cont = 1; cont <= KnightEn; cont++) { var c = {}; c.bid = 1; c.lid = Germania; c.cid = CityId; c.kid = KnightId; c['u'+TroopsId] = 1; unsafeWindow.AjaxCall.gPostRequest("battlegroundAttack.php", c, function(rslt) { TotAttackComp += 1; ById('TottAttackGen').innerHTML = TotAttackComp + '/' + TotAttacks; if(TotAttackComp == TotAttacks) ById('HideStatGen').disabled = false; }, function (rslt) { TotErrorComp += 1; ById('TottErrAttackGen').innerHTML = translate('Errors')+': '+TotErrorComp; TotAttackComp += 1; ById('TottAttackGen').innerHTML = TotAttackComp + '/' + TotAttacks; if(TotAttackComp == TotAttacks) ById('HideStatGen').disabled = false; } ); } } }, UpdateTroops : function (){ var t = my.Germ; var cityid = t.AutoAttackCity.id; var TId = ById('TroopsGenAutoAttack').value; var m = parseInt(Cities.byID[cityid].c.troops[TId].count()); ById('AmoutTroopsGerm').innerHTML = m; }, getGeneral : function (){ var t = my.Germ; var m = '<center><table>'; var id = t.AutoAttackCity.c.id; Cities.byID[id].c.generalsSorted().each(function(b){ if(b.energy()>0) { if(ById('SelAllGen').checked) { m+= '<tr><td><input class="'+b.id+'" type="checkbox" id="GEN'+b.id+'" CHECKED></td><td>'+b.name+' '+b.level()+' ('+b.energy()+')</td></tr>'; ById('StartAttackGen').disabled = false; } else { m+= '<tr><td><input class="'+b.id+'" type="checkbox" id="GEN'+b.id+'"></td><td>'+b.name+' '+b.level()+' ('+b.energy()+')</td></tr>'; ById('StartAttackGen').disabled = true; } } else { m+= '<tr><td><input DISABLED class="'+b.id+'" type="checkbox" id="GEN'+b.id+'"></td><td><font color=red>'+b.name+' '+b.level()+' ('+b.energy()+')</font></td></tr>'; } }); m+= '</table></center>'; ById('GenGerm').innerHTML = m; var Enable = false; Cities.byID[id].c.generalsSorted().each(function(b){ if(b.available() && b.energy()>0){ ById('GEN'+b.id).addEventListener ('click', function(){ Cities.byID[id].c.generalsSorted().each(function(b){ if(b.available() && b.energy()>0){ if(ById('GEN'+b.id).checked) Enable = true; }}); if(Enable) ById('StartAttackGen').disabled = false; else ById('StartAttackGen').disabled = true; },false); }}); }, getSummary : function (){ var t = my.Germ; ById('UpdateGerm').disabled = true; t.summary = [""]; var c = {}; unsafeWindow.AjaxCall.gPostRequest("battlegroundGetSummaryInfo.php", c, function(rslt) { var ff = rslt.data[1]; for (k in ff) { var z = ff[k]; // alert(zz); var LocationId = z.locationId; if(LocationId > 1) { var NomeAlleanza = z.allianceName; if(NomeAlleanza == "") NomeAlleanza = uW.arStrings.MarchReport.NoAlliance.toUpperCase(); if(NomeAlleanza == uW.arStrings.MarchReport.NoAlliance.toUpperCase()) { var Conq = 0; var Kick = 0; } else { var Time = parseInt(unixTime()); var Conq = parseInt(Time - parseInt(z.conqueredUnixtime)); if (Conq < 0) Conq = 0; var Kick = parseInt(parseInt(z.kickoutEtaUnixtime) - Time); if (Kick < 0) Kick = 0; } t.summary.push({ AllianceName : NomeAlleanza, Conquered : Conq, KickOut : Kick }); } t.paint(); }}); }, scoutgerm : function (id) { var t = my.Germ; var c = {}; c.bid = 1; c.lid = id; c.cid = t.selectedCity.c.id; unsafeWindow.AjaxCall.gPostRequest("battlegroundScouting.php", c, function(rslt) { var m = ''; var AllianceId = rslt.index.toAllianceId; if(AllianceId != 0) var NameAlliance = rslt.arAllianceNames['a'+AllianceId]; var Knight = rslt.details.knght['cbt']; var Details = rslt.details.unts; m+= uW.arStrings.Common.Alliance+': <b>'; if(AllianceId != 0) m+= NameAlliance+'</b><br>'; else m+= uW.arStrings.MarchReport.NoAlliance.toUpperCase()+'</b><br>'; m+= uW.arStrings.WatchTower.GeneralLevel+': <b>'+Knight+'</b><br><br>'; m+= '<b>'+uW.arStrings.Common.Troops+'</b><br>'; m+= '<table>'; for (k in Details) { m+= '<tr><td>'+uW.arStrings.unitName[k]+': </td><td><b>'+Details[k] + '</b></td></tr>'; } m+= '</table>'; if (t.pop == null){ t.pop = new CPopup ('BOScoutGermAlert', 50, 150, 500, 400, true); t.pop.getTopDiv().innerHTML = '<DIV align=center><h2><B>'+ScriptName+'</B></h2></DIV>'; } t.pop.getMainDiv().innerHTML = m; t.pop.show (true); }, function(rslt){ t.scoutgerm(id); }); }, attackgerm : function (id) { var t = my.Germ; var DivX = 400; var DivY = 500; var CityID = t.selectedCity.c.id; var m = '<div style="height:'+(DivY-125)+'px; max-height:'+(DivY-125)+'px; overflow-y:auto">'; m+= '<DIV class=ptstat>'+uW.arStrings.Common.General.toUpperCase()+'</div>'; m+= '<select id="SelectGeneralGerm">'; Cities.byID[CityID].c.generalsSorted().each(function(b){ if(b.available() && b.energy()>0){ m+= '<option value="'+b.id+'">'+b.name+' '+b.level()+' ('+b.energy()+')</option>'; } }); m+= '</select>'; m+= '<DIV class=ptstat>'+uW.arStrings.Common.Troops.toUpperCase()+'</div>'; m+= '</table><table width=50%>'; uW.Barracks.allUnitIds.each(function(r){ if (uW.arStrings.unitName["u"+r]) { m+= '<tr><td>'+uW.arStrings.unitName["u"+r]+':</td><td><input type=text id="TroopsAttackGerm'+r+'" value="0" size="3"> ('+uW.arStrings.Common.Max+' '+Cities.byID[CityID].c.troops[r].count()+')</td></tr>'; } }); m+= '</tr></table>'; m+= '<br>'; m+= '<center><input type=button id="LunchAttackGerm" value="'+uW.arStrings.Common.Attack+'"></center>'; m+= '</div>'; if (t.pop == null){ t.pop = new CPopup ('BOAttackGermAlert', 50, 150, DivY, DivX, true); t.pop.getTopDiv().innerHTML = '<DIV align=center><h2><B>'+ScriptName+'</B></h2></DIV>'; } t.pop.getMainDiv().innerHTML = m; t.pop.show (true); uW.Barracks.allUnitIds.each(function(r){ if (uW.arStrings.unitName["u"+r]) { if (Cities.byID[CityID].c.troops[r].count() < 1) { ById('TroopsAttackGerm'+r).disabled = true; } } }); ById('LunchAttackGerm').addEventListener('click', function() { t.pop.show (false); var selectedKnight = ById('SelectGeneralGerm').value; var b=Cities.byID[CityID].c.generals[selectedKnight]; var c = {}; c.bid = 1; c.lid = id; c.cid = CityID; c.kid = selectedKnight; uW.Barracks.allUnitIds.each(function(r){ if (uW.arStrings.unitName["u"+r]) { if (ById('TroopsAttackGerm'+r).value > 0 && ById('TroopsAttackGerm'+r).value <= Cities.byID[CityID].c.troops[r].count()) { c['u'+r] = ById('TroopsAttackGerm'+r).value; } } }); uW.AjaxCall.gPostRequest("battlegroundAttack.php", c, function(rslt) { if(b){b.subtractEnergy();} t.getSummary(); var j = rslt.index.bgReportId; uW.Messages.open(); uW.Messages.listBattlegroundReports(); // uW.Messages.showReport(j, rslt.details); }, function(rslt) { t.attackgerm(id); } ); }, false); }, paint : function () { var t = my.Germ; uW.SpyGerm = t.scoutgerm; uW.AttackGerm = t.attackgerm; uW.ShowTroops = t.ShowTroops; uW.ReinGerm = t.ReinGerm; ById('GermaniaStats').innerHTML = ""; var cc = '<table width="100%"><tr>'; for (var y = 1; y < t.summary.length; y++) { var Sum = t.summary[y]; if(y == 4) cc+= '</tr></table><table><tr><td> </td></tr><tr><td> </td></tr><tr><td> </td></tr></table><table width="100%"><tr>'; if(y >= 4) var WW = '50%'; else var WW = (100/3)+'%'; if (Sum.AllianceName == uW.arStrings.MarchReport.NoAlliance.toUpperCase()) var Color = 'red'; else if (Sum.AllianceName == getMyAlliance()[1]) var Color = 'green'; else var Color = ''; cc+= '<td style="text-align:center; vertical-align:middle;" width="'+WW+'">'+y+': <b><font color="'+Color+'">'+Sum.AllianceName + '</font></b><br>\ '+translate('For')+': <b>'+timestrShort(Sum.Conquered)+'</b><br>\ '+translate('Force Quit')+': <b>'+timestrShort(Sum.KickOut)+'</b><br><br>'; if(Sum.AllianceName != getMyAlliance()[1]) { cc+= '<button onclick="SpyGerm('+(y+1)+');" class="button20" type="button"><span>'+uW.arStrings.Common.Scout+'</span></button><br>'; cc+= '<button onclick="AttackGerm('+(y+1)+');" class="button20" type="button"><span>'+uW.arStrings.Common.Attack+'</span></button></td>'; } else { cc+= '<button onclick="ShowTroops('+(y+1)+');" class="button20" type="button"><span>'+uW.arStrings.Common.Troops+'</span></button><br>'; cc+= '<button onclick="ReinGerm('+(y+1)+');" class="button20" type="button"><span>'+uW.arStrings.Common.Reinforce+'</span></button></td>'; } } cc+= '</tr></table>'; ById('GermaniaStats').innerHTML = cc; ById('UpdateGerm').disabled = false; }, ReinGerm : function (id){ var t = my.Germ; var DivX = 400; var DivY = 500; var CityID = t.selectedCity.c.id; var m = '<div style="height:'+(DivY-125)+'px; max-height:'+(DivY-125)+'px; overflow-y:auto">'; m+= '<DIV class=ptstat>'+uW.arStrings.Common.General.toUpperCase()+'</div>'; m+= '<select id="SelectReinfGeneralGerm">'; Cities.byID[CityID].c.generalsSorted().each(function(b){ if(b.available() && b.energy()>0){ m+= '<option value="'+b.id+'">'+b.name+' '+b.level()+' ('+b.energy()+')</option>'; } }); m+= '</select>'; m+= '<DIV class=ptstat>'+uW.arStrings.Common.Troops.toUpperCase()+'</div>'; m+= '</table><table width=50%>'; uW.Barracks.allUnitIds.each(function(r){ if (uW.arStrings.unitName["u"+r]) { m+= '<tr><td>'+uW.arStrings.unitName["u"+r]+':</td><td><input type=text id="TroopsReinfGerm'+r+'" value="0" size="3"> ('+uW.arStrings.Common.Max+' '+Cities.byID[CityID].c.troops[r].count()+')</td></tr>'; } }); m+= '</tr></table>'; m+= '<br>'; m+= '<center><input type=button id="LunchReinfGerm" value="'+uW.arStrings.Common.Reinforce+'"></center>'; m+= '</div>'; if (t.pop == null){ t.pop = new CPopup ('BOReinforceGermAlert', 50, 150, DivY, DivX, true); t.pop.getTopDiv().innerHTML = '<DIV align=center><h2><B>'+ScriptName+'</B></h2></DIV>'; } t.pop.getMainDiv().innerHTML = m; t.pop.show (true); uW.Barracks.allUnitIds.each(function(r){ if (uW.arStrings.unitName["u"+r]) { if (Cities.byID[CityID].c.troops[r].count() < 1) { ById('TroopsReinfGerm'+r).disabled = true; } } }); ById('LunchReinfGerm').addEventListener('click', function() { t.pop.show (false); var c = {}; c.bid = 1; c.lid = id; c.cid = CityID; c.kid = ById('SelectReinfGeneralGerm').value; uW.Barracks.allUnitIds.each(function(r){ if (uW.arStrings.unitName["u"+r]) { if (ById('TroopsReinfGerm'+r).value > 0 && ById('TroopsReinfGerm'+r).value <= Cities.byID[CityID].c.troops[r].count()) { c['u'+r] = ById('TroopsReinfGerm'+r).value; } } }); uW.AjaxCall.gPostRequest("battlegroundReinforce.php", c, function(rslt) { t.ShowTroops(id); }, function(rslt) { t.ReinGerm(id); } ); }, false); }, ShowTroops : function (id){ var t = my.Germ; uW.RecallTroops = t.RecallTroops; // width, height var DivX = 400; var DivY = 500; var c = {}; c.bid = 1; c.lid = id; uW.AjaxCall.gPostRequest("battlegroundGetPointDetails.php", c, function(rslt) { var m = '<div style="height:'+(DivY-125)+'px; max-height:'+(DivY-125)+'px; overflow-y:auto">'; m+= '<center><input type="button" value="'+translate('UPDATE')+'" id="UpdateShowTroopsGerm"></center><br>'; var Rein = rslt.reinforcements; for (k in Rein) { if (Rein[k].playerName != undefined) { var width = parseInt(100/3); var Time = parseInt(unixTime()); var RefID = Rein[k].reinforcementId; var CityID = Rein[k].fromCityId; m+= '<table width=100%>'; m+= '<tr>'; m+= '<td width="'+width+'">'+uW.arStrings.Common.Name+': <b>'+Rein[k].playerName+'</b></td>'; m+= '<td width="'+width+'">'+uW.arStrings.WatchTower.GeneralLevel+': <b>'+Rein[k].knightLevel+'</b></td>'; if (Rein[k].playerName == uW.player.name) m+= '<td rowspan="2" width="'+width+'"><button onclick="RecallTroops('+RefID+','+CityID+');" class="button20" type="button"><span>'+uW.arStrings.Common.Recall+' '+uW.arStrings.Common.Troops+'</span></button></td>'; m+= '</tr><tr>'; m+= '<td>'+translate('For')+': <b>'+timestrShort(Time - Rein[k].reinforcementStartUnixtime)+'</b></td>'; m+= '<td>'+translate('Force Quit')+': <b>'+timestrShort(Rein[k].reinforcementRecallUnixtime - Time)+'</b></td>'; m+= '</tr>'; m+= '</table><table width=100%><tr>'; uW.Barracks.allUnitIds.each(function(r){ if (uW.arStrings.unitName["u"+r]) { m+= '<td>'+uW.arStrings.unitName["u"+r]+':</td><td><b>'+Rein[k]['u'+r]+'</b></td><td> </td>'; if(r==7||r==8||r==31) m+= '</tr><tr>'; } }); m+= '</tr></table>'; m+= '<br><br>'; } } m+= '</div>'; if (t.pop == null){ t.pop = new CPopup ('BoTroopsGerm', 50, 150, DivY, DivX, true); t.pop.getTopDiv().innerHTML = '<DIV align=center><h2><B>'+ScriptName+'</B></h2></DIV>'; } t.pop.getMainDiv().innerHTML = m; t.pop.show (true); ById('UpdateShowTroopsGerm').addEventListener('click', function() { t.pop.show (false); t.ShowTroops(id); }, false); }, function(rslt) { t.ShowTroops(id); } ); }, RecallTroops : function (RefID,CityID){ var t = my.Germ; t.pop.show (false); var c = {}; c.rid = RefID; c.cid = CityID; uW.AjaxCall.gPostRequest("battlegroundUndefend.php", c, function(rslt) { ById('GermaniaStats').innerHTML = '<center><b>'+translate('Wait')+' . . .</b>'; t.getSummary(); }, function(rslt){ t.RecallTroops(RefID,CityID); } ); }, getContent : function (){ var t = my.Germ; return t.cont; }, hide : function (){ }, clickCityAutoAttackSelect : function (city){ var t = my.Germ; t.AutoAttackCity = city; t.getGeneral(); t.UpdateTroops(); }, clickCitySelect : function (city){ var t = my.Germ; t.selectedCity = city; } } /************************ AUTO RESEARCH ************************/ my.AutoRes = { cont : null, timer : null, displayTimer : null, init : function (){ var t = my.AutoRes; t.cont = document.createElement('div'); if (AutoResearch.ActiveResearch) t.Start(); return t.cont; }, getContent : function (){ var t = my.AutoRes; return t.cont; }, show : function (){ var t = my.AutoRes; clearTimeout (t.displayTimer); try { var m = '<DIV class=ptstat>'+uW.arStrings.UserEngagement.ResearchTitle.toUpperCase()+'</div>'; m+= '<center><table width="100%">'; m+= '<tr><td width="70%" style="text-align:center; vertical-align:middle;">'; m+= '<table width="100%"><tr><td><DIV class=ptstat>'+uW.arStrings.Common.Research+'</div></td>'; m+= '<td><DIV class=ptstat><center>'+uW.arStrings.BuildingModal.CurrentLevel + '</center></div></td>'; m+= '<td><DIV class=ptstat><center>'+translate('Up to level')+'</center></div></td>'; m+= '<td><DIV class=ptstat><center>'+uW.arStrings.Common.Select+' '+uW.arStrings.Common.City+'</center></div></td></tr>'; uW.Research.orderedTechIds.each(function (r) { if (AutoResearch.EnResearch[r] == undefined) AutoResearch.EnResearch[r] = false; if (AutoResearch.SelResearch[r] == undefined) AutoResearch.SelResearch[r] = 9; if (AutoResearch.CityResearch[r] == undefined) AutoResearch.CityResearch[r] = 0; var q = uW.player.technologies[r].level(); var f = uW.Research.checkRequirementForLevel(r, q + 1)[3].include(0) m+= '<tr><td><input type=checkbox class="'+r+'" id="EnRes'+r+'" '+ (AutoResearch.EnResearch[r]?'CHECKED ':'')+'> '+uW.arStrings.techName["t" + r]; if (t.otherCityIsResearching(r)) { m+= ' <font color=red><i>('+uW.arStrings.OpenAcademy.CurrentlyResearching+')</i></font>'; } m+= '</td><td><center>'+q+'</center></td>'; m+= '<td><center><select class="'+r+'" id="SelectRes'+r+'">'; for (var z=1; z <= 10; z++) { m+= '<option value="'+z+'" ' + (AutoResearch.SelResearch[r]==z?'SELECTED':'') + '>'+z+'</option>'; } m+= '</select></center></td>'; m+= '<td><center><select class="'+r+'" id="CityRes'+r+'">'; for (var c=0; c<Cities.numCities; c++){ var Ctr = uW.Building.getCountForType(uW.Constant.Building.ACADEMY, Cities.cities[c].c.id); if (Ctr > 0) { m+= '<option value="'+c+'" ' + (AutoResearch.CityResearch[r]==c?'SELECTED':'') + '>'+Cities.cities[c].c.name+'</option>'; } } m+= '</select></center></td>'; m+= '</tr>'; //m+= '<tr><td> </td><td> </td></tr>'; }); m+= '</table>'; m+= '</td><td width="30%"><center><br>'; if (AutoResearch.ActiveResearch) { m+= '<input type=button value="'+translate('AUTO')+' '+uW.arStrings.Common.Research.toUpperCase()+' = ON" id=EnDisAutoRes>'; } else { m+= '<input type=button value="'+translate('AUTO')+' '+uW.arStrings.Common.Research.toUpperCase()+' = OFF" id=EnDisAutoRes>'; } m+= '<br><br><input type=checkbox id="HelpRes" '+ (AutoResearch.HelpResearch?'CHECKED ':'')+'> '+uW.arStrings.BuildingModal.RequestHelp; m+= '</td></tr></table>'; t.cont.innerHTML = m; ById("EnDisAutoRes").addEventListener('click', function() { t.ToggleAutoResearch(); }, false); ById("HelpRes").addEventListener('click', function(e) { AutoResearch.HelpResearch = ById("HelpRes").checked; saveAutoResearch(); }, false); uW.Research.orderedTechIds.each(function (r) { ById("EnRes"+r).addEventListener('click', function(e) { AutoResearch.EnResearch[e.target['className']] = ById("EnRes"+e.target['className']).checked; saveAutoResearch(); }, false); ById("SelectRes"+r).addEventListener('change', function(e) { AutoResearch.SelResearch[e.target['className']] = ById("SelectRes"+e.target['className']).value; saveAutoResearch(); }, false); ById("CityRes"+r).addEventListener('change', function(e) { AutoResearch.CityResearch[e.target['className']] = ById("CityRes"+e.target['className']).value; saveAutoResearch(); }, false); }); t.displayTimer = setTimeout (t.show, 60000); } catch (e) { t.cont.innerHTML = '<PRE>'+ e.name +' : '+ e.message +'</pre>'; } }, Start : function (){ var t = my.AutoRes; if (AutoResearch.ActiveResearch) { uW.Research.orderedTechIds.each(function (r) { if (AutoResearch.EnResearch[r] && !Cities.cities[AutoResearch.CityResearch[r]].c.queues.research.active()) { // Se attiva la ricerca e la città non sta ricercando if (!t.otherCityIsResearching(r)) { // Controllo se la ricerca è già avviata var c = r; // ID della Ricerca var b = uW.player.technologies[r].level()+1; // Livello da fare if ((uW.player.technologies[r].level()+1) <= AutoResearch.SelResearch[r] || (uW.player.technologies[r].level()+1) <= 10) { if (!uW.Research.checkRequirementForLevel(c, b)[3].include(0)) { var a = {}; a.cid = Cities.cities[AutoResearch.CityResearch[r]].c.id; a.lv = b; a.tid = c; uW.AjaxCall.gPostRequest("research.php", a, function (d) { actionLog(translate('Auto')+uW.arStrings.Common.Research,uW.arStrings.Common.Research+': '+uW.arStrings.techName["t" + r]); uW.Research.removeResourcesForLevel(c, b); uW.Chrome.ResourcesBar.update(); uW.KTrack.event(["_trackEvent", "Research", c, b, uW.player.level]); var z = new uW.KB.Models.QueueSlot.Research({id:0,type: c,target: b,ticker:uW.unixtime(),eta:uW.Research.getResearchTimeForLevel(c, b)+uW.unixtime()}); Cities.byID[Cities.cities[AutoResearch.CityResearch[r]].c.id].c.queues.research.addSlot(z); if (AutoResearch.HelpResearch) { uW.Research.postHelp(c) } // uW.Chrome.Queue.Building.select(); }, function (d) { // actionLog(translate('Auto')+uW.arStrings.Common.Research,'<font color=red>'+translate('ERROR')+': '+uW.arStrings.Common.Research+': '+uW.arStrings.techName["t" + r]+'</font>'); t.Start(); } ); } else { // Non posso ricercare if (uW.Research.checkRequirementForLevel(c, b)[3].include(0)) { // Requisiti non soddisfatti actionLog(translate('Auto')+uW.arStrings.Common.Research,'<font color=red>'+translate('ERROR')+': '+uW.arStrings.OpenAcademy.UnableToResearch+'</font>'); } } } else { // Massimo livello raggiunto ById('EnRes'+r).checked = false; AutoResearch.EnResearch[r] = ById("EnRes"+r).checked; saveAutoResearch(); actionLog(translate('Auto')+uW.arStrings.Common.Research,'<font color=red>'+translate('ERROR')+':'+arStrings.OpenAcademy.MaximumResearchLevel+'</font>'); } } else { // Ricerca già avviata actionLog(translate('Auto')+uW.arStrings.Common.Research,'<font color=red>'+translate('ERROR')+':'+uW.arStrings.OpenAcademy.CurrentlyResearching+'</font>'); } } }); t.timer = setTimeout (function(){t.Start();}, 60000); } }, otherCityIsResearching : function (a){ var t = my.AutoRes; var b = false; uW.player.allCities().each(function (d) { var c = d.queues.research.slot(0); if (c && a == c.typeId()) { b = true; } }); return b }, hide : function (){ clearTimeout (my.AutoRes.displayTimer); }, ToggleAutoResearch: function() { var t = my.AutoRes; var obj = ById("EnDisAutoRes"); if (AutoResearch.ActiveResearch == true) { AutoResearch.ActiveResearch = false; if (obj) obj.value = translate('AUTO')+' '+uW.arStrings.Common.Research.toUpperCase()+' = OFF'; saveAutoResearch(); } else { AutoResearch.ActiveResearch = true; if (obj) obj.value = translate('AUTO')+' '+uW.arStrings.Common.Research.toUpperCase()+' = ON'; saveAutoResearch(); t.Start(); } DashInnert(); } } /************************ AUTO ATTACK TAB - Modded and Created by Tiestoale ************************/ my.AutoAtt = { cont : null, timer : null, init : function (){ var t = my.AutoAtt; if(AutoAttack.Attivo) setTimeout (function(){t.Start();}, (parseInt(AutoAttack.AttackInterval*1000))); t.cont = document.createElement('div'); return t.cont; }, getContent : function (){ var t = my.AutoAtt; return t.cont; }, show : function (){ var t = my.AutoAtt; try { var m = '<DIV class=ptstat>MULTI '+uW.arStrings.Common.Attack.toUpperCase()+'</div>'; m+= '<table width=100%><tr><td width=80% style="text-align:center; vertical-align:middle;">'; if (AutoAttack.Attivo) { m+= '<input type=button value="Multi'+uW.arStrings.Common.Attack+' = ON" id=BOAttackTestButton>'; } else { m+= '<input type=button value="Multi'+uW.arStrings.Common.Attack+' = OFF" id=BOAttackTestButton>'; } m+= '</td></tr></table>'; m+= '<DIV class=ptstat>'+translate('CONFIGURATION')+'</div><table width=100%><tr>'; m+= '<td width=50%>'+translate('Time between attacks')+": <input type=text size=3 id=BOAttackInterval value='"+ parseInt(AutoAttack.AttackInterval)+"'> "+uW.arStrings.TimeStr.timeSec+'</td>'; m+= '<td width=50%><input type=checkbox id="AttackGenEn" '+ (AutoAttack.AttackGen?'CHECKED ':'')+'> '+translate('Do not use the general with a level greater than')+' <input type=text size=3 value="'+AutoAttack.AttackGenNiv+'" id="AttackGenLiv"></td>'; m+= '</tr><tr>'; m+= '<td></td>'; m+= '<td><input type=checkbox id="AttackStopEnd" '+ (AutoAttack.StopCity?'CHECKED ':'')+'> '+translate('Disable the city in which the coordinates of end')+'</td>'; m+= '</tr></table><br>'; m+= '<div style="width:'+Options.WidthTools+'px; max-width:'+Options.WidthTools+'px; height:auto; overflow-x:auto;" id="SlectCoordAutoAtt">'; m+= '<table><tr>'; for (var c=0; c<Cities.numCities; c++) { if (AutoAttack.MultiCheck[c] == undefined) AutoAttack.MultiCheck[c] = []; if (AutoAttack.LastCoord[c] == undefined) AutoAttack.LastCoord[c] = []; if (AutoAttack.LastCoord[c].x == undefined) AutoAttack.LastCoord[c].x = ""; if (AutoAttack.LastCoord[c].y == undefined) AutoAttack.LastCoord[c].y = ""; if (AutoAttack.Enable[c] == undefined) AutoAttack.Enable[c] = false; if (AutoAttack.Mode[c] == undefined) AutoAttack.Mode[c] = "1"; if (AutoAttack.X[c] == undefined) AutoAttack.X[c] = 0; if (AutoAttack.Y[c] == undefined) AutoAttack.Y[c] = 0; if (AutoAttack.Multi[c] == undefined) AutoAttack.Multi[c] = ""; if (AutoAttack.Troops[c] == undefined) AutoAttack.Troops[c] = {}; uW.Barracks.allUnitIds.each(function(r){ if (uW.arStrings.unitName["u"+r]) { if (AutoAttack.Troops[c][r] == undefined) AutoAttack.Troops[c][r] = 0; } }); if (c % 2) style = ''; else style = " style = 'background: #e8e8e8'"; m+= '<td><DIV class=ptstat><input type=checkbox class="'+c+'" id="CityEn'+c+'" '+ (AutoAttack.Enable[c]?'CHECKED ':'')+'> ' + Cities.cities[c].c.name +'</div><br>'; m+= translate('Attack Mode')+': <select class="'+c+'" id="BOselectAttackMode'+c+'">'; m+= '<option value="1" '+ (AutoAttack.Mode[c]=='1'?'SELECTED':'') +'>Single Coord</option>'; m+= '<option value="2" '+ (AutoAttack.Mode[c]=='2'?'SELECTED':'') +'>Multi Coords</option>'; m+= '</select>'; m+= '<br><br><br>'; m+= 'Single Coord: X:<input type=text class="'+c+'" id="TestX'+c+'" size=2 value="'+AutoAttack.X[c]+'">'; m+= '-Y:<input type=text size=2 class="'+c+'" id="TestY'+c+'" value="'+AutoAttack.Y[c]+'">'; m+= '<br><br>'; m+= 'Multi Coords: <i>x,y</i><br>'; m+= '<textarea name="coordlist'+c+'" class="'+c+'" id="coordlist'+c+'" value="'+AutoAttack.Multi[c]+'" rows=10 cols=20></textarea><br>'; } m+= '</tr>'; m+= '</table></div>'; m+= '<DIV class=ptstat>'+uW.arStrings.Common.Troops+'</div>'; m+= '<table width=100%>'; for (var c=0; c<Cities.numCities; c++) { if (c % 2) style = ''; else style = " style = 'background: #e8e8e8'"; m+= '<tr '+style+'>'; m+= '<td style="text-align:center; vertical-align:middle;"><b>'+Cities.cities[c].c.name +":</b></td>"; uW.Barracks.allUnitIds.each(function(r){ if (uW.arStrings.unitName["u"+r]) { m+= '<td style="text-align:center; vertical-align:middle;" width="40px"><div class="pic px30 units unit_'+r+'" title="'+uW.arStrings.unitName["u"+r]+'"></td>\ <td style="text-align:left; vertical-align:middle;"><input class="'+c+'" type=text size=3 id="Troops'+c+r+'" value="'+AutoAttack.Troops[c][r]+'"></td>'; if(r==4||r==11) m+= '</tr><tr '+style+'><td></td>'; } }); m+= '<td colspan="4" style="text-align:center; vertical-align:middle;"><center><input class="'+c+'" type=button id="ResetAll'+c+'" value="'+uW.arStrings.MessagesModal.DeleteAll_button+'"></center></td>'; m+= '</tr>'; } m+= '</table>'; t.cont.innerHTML = m; ById("BOAttackTestButton").addEventListener('click', t.ToggleAutoAttack, false); ById("BOAttackInterval").addEventListener('change', function() { if (ById("BOAttackInterval").value<5) ById("BOAttackInterval").value = 5; AutoAttack.AttackInterval = parseInt(ById("BOAttackInterval").value); saveAutoAttack(); }, false); ById("AttackGenEn").addEventListener('click', function() { AutoAttack.AttackGen = ById("AttackGenEn").checked; saveAutoAttack(); if(AutoAttack.Attivo) t.ToggleAutoAttack(); }, false); ById("AttackStopEnd").addEventListener('click', function() { AutoAttack.StopCity = ById("AttackStopEnd").checked; saveAutoAttack(); if(AutoAttack.Attivo) t.ToggleAutoAttack(); }, false); ById("AttackGenLiv").addEventListener('change', function() { AutoAttack.AttackGenNiv = parseInt(ById("AttackGenLiv").value); saveAutoAttack(); if(AutoAttack.Attivo) t.ToggleAutoAttack(); }, false); for (var c=0; c<Cities.numCities; c++) { ById('coordlist'+c).innerHTML = AutoAttack.Multi[c]; if(AutoAttack.Mode[c] == 1) { ById('TestX'+c).disabled = false; ById('TestY'+c).disabled = false; ById('coordlist'+c).disabled = true; } else { ById('TestX'+c).disabled = true; ById('TestY'+c).disabled = true; ById('coordlist'+c).disabled = false; } ById("BOselectAttackMode"+c).addEventListener('change', function(e) { AutoAttack.Mode[e.target['className']] = ById("BOselectAttackMode"+e.target['className']).value; saveAutoAttack(); if(AutoAttack.Attivo) t.ToggleAutoAttack(); if(AutoAttack.Mode[e.target['className']] == 1) { ById('TestX'+e.target['className']).disabled = false; ById('TestY'+e.target['className']).disabled = false; ById('coordlist'+e.target['className']).disabled = true; } else { ById('TestX'+e.target['className']).disabled = true; ById('TestY'+e.target['className']).disabled = true; ById('coordlist'+e.target['className']).disabled = false; } }, false); ById("TestX"+c).addEventListener('change', function(e) { if (ById("TestX"+e.target['className']).value < 0) ById("TestX"+e.target['className']).value = 0; AutoAttack.X[e.target['className']] = ById("TestX"+e.target['className']).value; saveAutoAttack(); if(AutoAttack.Attivo) t.ToggleAutoAttack(); }, false); ById("TestY"+c).addEventListener('change', function(e) { if (ById("TestY"+e.target['className']).value < 0) ById("TestY"+e.target['className']).value = 0; AutoAttack.Y[e.target['className']] = ById("TestY"+e.target['className']).value; saveAutoAttack(); if(AutoAttack.Attivo) t.ToggleAutoAttack(); }, false); ById("coordlist"+c).addEventListener('change', function(e) { AutoAttack.Multi[e.target['className']] = ById("coordlist"+e.target['className']).value; saveAutoAttack(); if(AutoAttack.Attivo) t.ToggleAutoAttack(); }, false); ById("ResetAll"+c).addEventListener('click', function(e) { t.ResetTroops(e.target['className']); if(AutoAttack.Attivo) t.ToggleAutoAttack(); }, false); uW.Barracks.allUnitIds.each(function(r){ ById("Troops"+c+r).addEventListener('change', function(e) { if (uW.arStrings.unitName["u"+r]) { if (ById("Troops"+e.target['className']+r).value < 0) ById("Troops"+e.target['className']+r).value = 0; AutoAttack.Troops[e.target['className']][r] = ById("Troops"+e.target['className']+r).value; saveAutoAttack(); if(AutoAttack.Attivo) t.ToggleAutoAttack(); } }, false); }); ById("CityEn"+c).addEventListener('click', function(e) { AutoAttack.Enable[e.target['className']] = ById("CityEn"+e.target['className']).checked; saveAutoAttack(); if(AutoAttack.Attivo) t.ToggleAutoAttack(); }, false); } } catch (e) { t.cont.innerHTML = '<PRE>'+ e.name +' : '+ e.message +'</pre>'; } }, ResetTroops : function (c){ var t = my.AutoAtt; uW.Barracks.allUnitIds.each(function(r){ if (uW.arStrings.unitName["u"+r]) { ById('Troops'+c+r).value = 0; AutoAttack.Troops[c][r] = 0; } }); saveAutoAttack(); }, // Normalizzazione delle coordinate e salvataggio CheckCoord : function (c){ var t = my.AutoAtt; var counter = 0; AutoAttack.MultiCheck[c] = [""]; var u_koords = AutoAttack.Multi[c].split("\n"); for (var i = 0; i < u_koords.length; i++) { var xy = u_koords[i].split(','); var X = parseInt(xy[0],10); var Y = parseInt(xy[1],10); if (isNaN(X) || isNaN(Y)) continue; if (X < 1 || X > 800) continue; if (Y < 1 || Y > 800) continue; AutoAttack.MultiCheck[c].push({ x : X, y : Y }); counter++; } saveAutoAttack(); if (counter < 1) { alert(translate('No coordinated inserted')+'!!!'); return false; } else { return true; } }, hide : function (){ }, Start : function (){ var t = my.AutoAtt; if (AutoAttack.Attivo) { for (var c=0; c<Cities.numCities; c++) { saveAutoAttack(); if (AutoAttack.Enable[c]){ // Se abilitato if (AutoAttack.Mode[c]=='1') { // Se Single Coords var CooX = AutoAttack.X[c]; var CooY = AutoAttack.Y[c]; if(CooX == 0 && CooY == 0) { actionLog('Multi'+uW.arStrings.Common.Attack,Cities.cities[c].c.name+': '+translate('Impossible to attack the coordinates')+' 0,0'); } else { t.SendAttack(c,CooX,CooY); } } else { // Se Multi Coords if(!t.CheckCoord(c)) return; // Parse coordinate inserite if (AutoAttack.LastCoord[c].x == "" || AutoAttack.LastCoord[c].y == "") { // Se non c'è nessuna ultima coordinata var CooX = AutoAttack.MultiCheck[c][1].x; var CooY = AutoAttack.MultiCheck[c][1].y; AutoAttack.LastCoord[c].x = CooX; AutoAttack.LastCoord[c].y = CooY; saveAutoAttack(); t.SendAttack(c,CooX,CooY); } else { // Se è presenta un'ultima coordinata for (var k=1; k <= AutoAttack.MultiCheck[c].length; k++) { // Controllo delle coordinate per trovare quella corrispondente if (AutoAttack.MultiCheck[c][k].x == AutoAttack.LastCoord[c].x && AutoAttack.MultiCheck[c][k].y == AutoAttack.LastCoord[c].y) { if ((k+1) >= AutoAttack.MultiCheck[c].length) { // Se l'ultima ricomincia da capo if (AutoAttack.StopCity) { actionLog('Multi'+uW.arStrings.Common.Attack,Cities.cities[c].c.name+': '+translate('Disable the city')); AutoAttack.LastCoord[c].x = ""; AutoAttack.LastCoord[c].y = ""; ById('CityEn'+c).checked = false; AutoAttack.Enable[c] = false; saveAutoAttack(); } else { actionLog('Multi'+uW.arStrings.Common.Attack,Cities.cities[c].c.name+': '+translate('Groundhog coordinates')); AutoAttack.LastCoord[c].x = ""; AutoAttack.LastCoord[c].y = ""; saveAutoAttack(); // Ricomincio } } else { // Se NON è l'ultima attacca var CooX = AutoAttack.MultiCheck[c][k+1].x; var CooY = AutoAttack.MultiCheck[c][k+1].y; AutoAttack.LastCoord[c].x = CooX; AutoAttack.LastCoord[c].y = CooY; saveAutoAttack(); t.SendAttack(c,CooX,CooY); } break; } } } } } else { // Città non attivata actionLog('Multi'+uW.arStrings.Common.Attack,Cities.cities[c].c.name+': '+translate('City not activated')); } } } t.timer = setTimeout (function(){t.Start();}, (parseInt(AutoAttack.AttackInterval*1000))); }, SendAttack : function (c,CooX,CooY){ var t = my.AutoAtt; var f=Cities.cities[c].c; var id=f.id; // Selezione Generale var kk=[]; Cities.byID[id].c.generalsSorted().each(function(b){ if (b.available()) { if(AutoAttack.AttackGen && b.level()>parseInt(AutoAttack.AttackGenNiv)) { } else { kk.push(b); } } }); var selectedKnight=kk.length>0?kk[0].id:0; var Controllo = true; uW.Barracks.allUnitIds.each(function(r){ if(AutoAttack.Troops[c][r] > 0){ if(Cities.byID[id].c.troops[r].count() < AutoAttack.Troops[c][r]){ Controllo = false; } } }); if (Cities.byID[id].c.canMarch() && Cities.byID[id].c.generalsCount() != 0 && selectedKnight != 0 && Controllo == true) { var d=uW.Building.getMaxLevelForType(50,id); var a=new uW.March({marchId:Cities.byID[id].c.emptyMarchSlots()[0],toXCoord:CooX,toYCoord:CooY,fromCityId:id,marchType:uW.Constant.MarchType.ATTACK,knightId:selectedKnight,fromHealLevel:d,apothecaryHealPercent:uW.KB.Controllers.Apothecary.getHealPercent(d),gold:0,resource1:0,resource2:0,resource3:0,resource4:0}); var g={mid:a.id,xcoord:a.to.x,ycoord:a.to.y,cid:id,type:uW.Constant.MarchType.ATTACK,kid:a.general.id,gold:a.gold,r1:a.resources[1],r2:a.resources[2],r3:a.resources[3],r4:a.resources[4],camp:0,et:t.calculateTime(id,7,CooX,CooY)}; var b=Cities.byID[id].c.generals[a.general.id]; // Controllo truppe uW.Barracks.allUnitIds.each(function(r){ if(AutoAttack.Troops[c][r] > 0){ a.units[r].sent = AutoAttack.Troops[c][r]; g["u"+r] = AutoAttack.Troops[c][r]; } }); uW.AjaxCall.gPostRequest("march.php",g, function(h){ var i="attack",j=Number(h.eta)-Number(h.initTS); uW.Chrome.ResourcesBar.update(); uW.Object.keys(a.units).each(function(k){Cities.byID[id].c.troops[k].subtract(a.units[k].sent)}); if(b){b.status=10;b.subtractEnergy()} a.id=Number(h.marchId); a.to.tileId=Number(h.tileId); a.to.tileType=Number(h.tileType); a.to.tileLevel=Number(h.tileLevel); a.to.playerId=Number(h.tileUserId); a.to.cityId=Number(h.tileCityId); a.setStatus(uW.Constant.MarchStatus.OUTBOUND); a.setMarchTime(unsafeWindow.unixtime(),unsafeWindow.unixtime()+j,0); Cities.byID[id].c.marches.outgoing[a.id]=a; uW.KTrack.event(["_trackEvent","March",i,uW.player.level]); actionLog('Multi'+uW.arStrings.Common.Attack,Cities.cities[c].c.name+': '+translate('Send attack to')+' '+CooX+','+CooY); saveAutoAttack(); }, function(h){ // Attacco Fallito // actionLog('Multi'+uW.arStrings.Common.Attack,Cities.cities[c].c.name+': <font color=red>'+translate('ERROR')+' '+translate('Send attack to')+' '+CooX+','+CooY+'</font>'); } ); } else { if (!Controllo) { // Non disponi delle truppe necessarie actionLog('Multi'+uW.arStrings.Common.Attack,'('+CooX+','+CooY+') '+Cities.cities[c].c.name+': <font color=red>'+translate('You do not have the troops necessary')+'!!'); } else { if (!Cities.byID[id].c.canMarch()) { // Non può marciare (ES. Raduno completo) actionLog('Multi'+uW.arStrings.Common.Attack,'('+CooX+','+CooY+') '+Cities.cities[c].c.name+': <font color=red>'+translate('You can not attack')+'</font>'); } else { if (Cities.byID[id].c.generalsCount() == 0) { // Nessun generale nominato actionLog('Multi'+uW.arStrings.Common.Attack,'('+CooX+','+CooY+') '+Cities.cities[c].c.name+': <font color=red>'+translate('No general appointed')+'</font>'); } else { if (selectedKnight == 0) { // Nessun generale disponibile actionLog('Multi'+uW.arStrings.Common.Attack,'('+CooX+','+CooY+') '+Cities.cities[c].c.name+': <font color=red>'+uW.arStrings.March.NoGeneral+'</font>'); } else { // Errore sconosciuto actionLog('Multi'+uW.arStrings.Common.Attack,'('+CooX+','+CooY+') '+Cities.cities[c].c.name+': <font color=red>'+uW.arStrings.March.NoGeneral+'</font>'); } } } } // t.UpdateSeed(); if (AutoAttack.Mode[c]=='2'){ for (var k=1; k <= AutoAttack.MultiCheck[c].length; k++) { // Controllo delle coordinate per trovare quella corrispondente if (AutoAttack.MultiCheck[c][k].x == CooX && AutoAttack.MultiCheck[c][k].y == CooY) { if (AutoAttack.MultiCheck[c].length-k < 0) { AutoAttack.LastCoord[c].x = ""; AutoAttack.LastCoord[c].y = ""; saveAutoAttack(); } else { AutoAttack.LastCoord[c].x = AutoAttack.MultiCheck[c][k-1].x; AutoAttack.LastCoord[c].y = AutoAttack.MultiCheck[c][k-1].y; saveAutoAttack(); } break; } } } } }, UpdateSeed : function () { var t = my.AutoAtt; var c = {}; c.forceUpdate = true; uW.AjaxCall.gPostRequest("updateSeed.php", c, function (d) { } ); }, calculateTime: function(id,b,g,e) { var c=65535,a=Math.abs(Cities.byID[id].c.x-g),f=Math.abs(Cities.byID[id].c.y-e),d=Math.sqrt((a*a)+(f*f)); h=uW.Unit.stats[b].speed*1; if(h<c){c=h;} return Math.ceil(d*6000/c)+30; }, ToggleAutoAttack: function() { var t = my.AutoAtt; var obj = ById("BOAttackTestButton"); if (AutoAttack.Attivo == true) { AutoAttack.Attivo = false; if (obj) obj.value = 'Multi'+uW.arStrings.Common.Attack+' = OFF'; for (var c=0; c<Cities.numCities; c++) { AutoAttack.MultiCheck[c] = [""]; AutoAttack.LastCoord[c].x = ""; AutoAttack.LastCoord[c].y = ""; } saveAutoAttack(); } else { AutoAttack.Attivo = true; if (obj) obj.value = 'Multi'+uW.arStrings.Common.Attack+' = ON'; for (var c=0; c<Cities.numCities; c++) { AutoAttack.MultiCheck[c] = [""]; AutoAttack.LastCoord[c].x = ""; AutoAttack.LastCoord[c].y = ""; } saveAutoAttack(); t.Start(); } DashInnert(); } } /************************ GIFTS ************************/ my.KDO = { cont : null, state : null, displayTimerKDO:null, displayTimerAcceptKDO:null, init : function (div){ var t = my.KDO; this.cont = document.createElement('div'); return t.cont; }, getContent : function (){ var t = my.KDO; return t.cont; }, hide : function (){ var t = my.KDO; }, nbitem: function(id) { var nb=0; if (unsafeWindow.items[id].count>0){ nb=unsafeWindow.items[id].count; }else{ nb=0; } return nb; }, show : function (){ var t = my.KDO; if (t.state == null){ m='<div id="presentModalWrapper1" class="presentWrapper"><div class=header style="height:280px"><h1>'+uW.arStrings.Gift.ModalHeader+'</h1><ul id="presentList1" class="clearfix">\ <li class="unlocked"><div class="frame"><div class="item pic px70 items item_1005"></div></div><button class="button25" onclick="KB.Views.Gift.popupInvite(1005);"><span>'+uW.arStrings.Common.Send_button+'</span></button><button id="BOItem1005" class="button25" type="button"><span>'+uW.arStrings.Common.Use_button+'</span></button><div class="itemowned">'+uW.arStrings.Common.youOwn+': <span class="modal_itemowned_923" id="BONbItem1005">'+ t.nbitem(1005) +'</span></div></li>\ <li class="unlocked"><div class="frame"><div class="item pic px70 items item_1015"></div></div><button class="button25" onclick="KB.Views.Gift.popupInvite(1015);"><span>'+uW.arStrings.Common.Send_button+'</span></button><button id="BOItem1015" class="button25" type="button"><span>'+uW.arStrings.Common.Use_button+'</span></button><div class="itemowned">'+uW.arStrings.Common.youOwn+': <span class="modal_itemowned_923" id="BONbItem1015">'+ t.nbitem(1015) +'</span></div></li>\ <li class="unlocked"><div class="frame"><div class="item pic px70 items item_1025"></div></div><button class="button25" onclick="KB.Views.Gift.popupInvite(1025);"><span>'+uW.arStrings.Common.Send_button+'</span></button><button id="BOItem1025" class="button25" type="button"><span>'+uW.arStrings.Common.Use_button+'</span></button><div class="itemowned">'+uW.arStrings.Common.youOwn+': <span class="modal_itemowned_923" id="BONbItem1025">'+ t.nbitem(1025) +'</span></div></li>\ <li class="unlocked"><div class="frame"><div class="item pic px70 items item_1035"></div></div><button class="button25" onclick="KB.Views.Gift.popupInvite(1035);"><span>'+uW.arStrings.Common.Send_button+'</span></button><button id="BOItem1035" class="button25" type="button"><span>'+uW.arStrings.Common.Use_button+'</span></button><div class="itemowned">'+uW.arStrings.Common.youOwn+': <span class="modal_itemowned_923" id="BONbItem1035">'+ t.nbitem(1035) +'</span></div></li>\ <li class="unlocked"><div class="frame"><div class="item pic px70 items item_1045"></div></div><button class="button25" onclick="KB.Views.Gift.popupInvite(1045);"><span>'+uW.arStrings.Common.Send_button+'</span></button><button id="BOItem1045" class="button25" type="button"><span>'+uW.arStrings.Common.Use_button+'</span></button><div class="itemowned">'+uW.arStrings.Common.youOwn+': <span class="modal_itemowned_923" id="BONbItem1045">'+ t.nbitem(1045) +'</span></div></li>\ </ul></div>\ <br><button onclick="Temple.Offering.askForOffering(); return false;" class="button25" type="button" id="askButton"><span>'+uW.arStrings.MainChrome.SendOfferings+'</span></button><br>\ <br><br><button id="BOAcceptAllKDO" class="button25" type="button"><span>'+uW.arStrings.Gift.ButtonAcceptAll+'</span></button><br><br><hr><b><center>'+translate('Please support the GoR BoTTols by clicking the ads on the GoR BoTTols website from time to time')+'!</center></b></div>'; t.cont.innerHTML = m; document.getElementById('BOAcceptAllKDO').addEventListener ('click', function(){ document.getElementById('BOAcceptAllKDO').disabled=true; uW.AjaxCall.gNetworkPostRequest("requests","getRequest.php",{typeRequest:1},function(m){ if (m.ok){ var NameGift = uW.arStrings.Common.Gift; var v=unsafeWindow.Object.keys(m.data.requests); unsafeWindow.KB.Views.Cohort.pending = m.data.requests; for(var f=0;f<v.length;f++){ var d=m.data.requests[v[f]][1]; // item var b=v[f]; //request_id var c={request_id:b , type_request:1, item_id: d, sender_fbuid:m.data.requests[v[f]][0]}; uW.AjaxCall.gNetworkPostRequest("requests","acceptRequest.php",c,function(e){ if (e.ok) { unsafeWindow.items[d].add(1); delete unsafeWindow.KB.Views.Gift.request[b]; } },function(e) {}, true); } actionLog(uW.arStrings.Common.Gift,uW.arStrings.Gift.ButtonAcceptAll); } document.getElementById('BOAcceptAllKDO').disabled=false; }); },false); // Bouton utiliser Stones document.getElementById("BOItem1035").addEventListener ('click', function(){ if (t.nbitem(1035)>0) { var b={iid:1035,cid:unsafeWindow.currentCity.id}; unsafeWindow.AjaxCall.gPostRequest("resourceCrate.php",b,function(d){ if (d.ok) { unsafeWindow.KB.Models.Resource.addToSeed(d.rtype,d.amt); unsafeWindow.items[1035].subtract(); document.getElementById("BONbItem1035").innerHTML=t.nbitem(1035); } }, function(d) {}); } },false); // Bouton utiliser Iron document.getElementById("BOItem1045").addEventListener ('click', function(){ if (t.nbitem(1045)>0) { var b={iid:1045,cid:unsafeWindow.currentCity.id}; unsafeWindow.AjaxCall.gPostRequest("resourceCrate.php",b,function(d){ if (d.ok) { unsafeWindow.KB.Models.Resource.addToSeed(d.rtype,d.amt); unsafeWindow.items[1045].subtract(); document.getElementById("BONbItem1045").innerHTML=t.nbitem(1045); } }, function(d) {}); } },false); // Bouton utiliser Wood document.getElementById("BOItem1025").addEventListener ('click', function(){ if (t.nbitem(1025)>0) { var b={iid:1025,cid:unsafeWindow.currentCity.id}; unsafeWindow.AjaxCall.gPostRequest("resourceCrate.php",b,function(d){ if (d.ok) { unsafeWindow.KB.Models.Resource.addToSeed(d.rtype,d.amt); unsafeWindow.items[1025].subtract(); document.getElementById("BONbItem1025").innerHTML=t.nbitem(1025); } }, function(d) {}); } },false); // Bouton utiliser Food document.getElementById("BOItem1015").addEventListener ('click', function(){ if (t.nbitem(1015)>0) { var b={iid:1015,cid:unsafeWindow.currentCity.id}; unsafeWindow.AjaxCall.gPostRequest("resourceCrate.php",b,function(d){ if (d.ok) { unsafeWindow.KB.Models.Resource.addToSeed(d.rtype,d.amt); unsafeWindow.items[1015].subtract(); document.getElementById("BONbItem1015").innerHTML=t.nbitem(1015); } }, function(d) {}); } },false); // Bouton utiliser Silver document.getElementById("BOItem1005").addEventListener ('click', function(){ if (t.nbitem(1005)>0) { var b={iid:1005,cid:unsafeWindow.currentCity.id}; unsafeWindow.AjaxCall.gPostRequest("resourceCrate.php",b,function(d){ if (d.ok) { unsafeWindow.KB.Models.Resource.addToSeed(d.rtype,d.amt); unsafeWindow.items[1005].subtract(); document.getElementById("BONbItem1005").innerHTML=t.nbitem(1005); } }, function(d) {}); } },false); c={}; unsafeWindow.AjaxCall.gNetworkPostRequest("requests","getFriendsGift.php",c,function(e){ unsafeWindow.KB.Views.Gift.friends=e.data.friends?e.data.friends:{}; unsafeWindow.KB.Views.Gift.potentials=e.data.potentials?e.data.potentials:{}; unsafeWindow.KB.Views.Gift.cohorts=e.data.cohorts?e.data.cohorts:{}; unsafeWindow.KB.Views.Gift.lockGift=e.data.lockedItems?e.data.lockedItems:{}; unsafeWindow.KB.Views.Gift.sortLockGift(); unsafeWindow.KB.Views.Gift.unlockGift=e.data.newUnlockItems?e.data.newUnlockItems:{}; unsafeWindow.KB.Views.Gift.user=e.data.user?e.data.user:0; var f={typeRequest:unsafeWindow.KB.Views.Gift.TYPE_REQUEST_GIFT}; }); t.state = 1; } document.getElementById("BONbItem1045").innerHTML=t.nbitem(1045); document.getElementById("BONbItem1035").innerHTML=t.nbitem(1035); document.getElementById("BONbItem1025").innerHTML=t.nbitem(1025); document.getElementById("BONbItem1015").innerHTML=t.nbitem(1015); document.getElementById("BONbItem1005").innerHTML=t.nbitem(1005); t.displayTimer = setTimeout (t.show, parseInt(GlobalOptions.BOAutomateKDOsec*1000)); }, togOpt : function (checkboxId, optionName, callOnChange){ var t = my.Options; var checkbox = document.getElementById(checkboxId); if (Options[optionName]) checkbox.checked = true; checkbox.addEventListener ('change', eventHandler, false); function eventHandler (){ Options[optionName] = this.checked; saveOptions(); if (callOnChange) callOnChange (this.checked); } }, changeOpt : function (valueId, optionName, callOnChange){ var t = my.Options; var e = document.getElementById(valueId); e.value = Options[optionName]; e.addEventListener ('change', eventHandler, false); function eventHandler (){ Options[optionName] = this.value; saveOptions(); if (callOnChange) callOnChange (this.value); } } } /************************ INFO ************************/ my.Marks = { cont : null, state : null, init : function (div){ var t = my.Marks; this.cont = document.createElement('div'); return t.cont; }, getContent : function (){ var t = my.Marks; return t.cont; }, hide : function (){ var t = my.Marks; }, show : function (){ var t = my.Marks; var auguste,tiberus,caligula,claude,vespasien; if (unsafeWindow.items[1101].count>0){auguste=unsafeWindow.items[1101].count}else{auguste=0}; if (unsafeWindow.items[1102].count>0){tiberus=unsafeWindow.items[1102].count}else{tiberus=0}; if (unsafeWindow.items[1103].count>0){caligula=unsafeWindow.items[1103].count}else{caligula=0}; if (unsafeWindow.items[1104].count>0){claude=unsafeWindow.items[1104].count}else{claude=0}; if (unsafeWindow.items[1105].count>0){vespasien=unsafeWindow.items[1105].count}else{vespasien=0}; if (unsafeWindow.items[1106].count>0){titus=unsafeWindow.items[1106].count}else{titus=0}; if (unsafeWindow.items[1107].count>0){Domitien=unsafeWindow.items[1107].count}else{Domitien=0}; if (unsafeWindow.items[1108].count>0){Trajan=unsafeWindow.items[1108].count}else{Trajan=0}; if (unsafeWindow.items[1109].count>0){Hadrien=unsafeWindow.items[1109].count}else{Hadrien=0}; if (Cities.cities[1]){ville2="#99EE99";}else{ville2="#EE9999";} if (Cities.cities[2]){ville3="#99EE99";}else{ville3="#EE9999";} if (Cities.cities[3]){ville4="#99EE99";}else{ville4="#EE9999";} if (Cities.cities[4]){ville5="#99EE99";}else{ville5="#EE9999";} if (Cities.cities[5]){ville6="#99EE99";}else{ville6="#EE9999";} if (t.state == null){ var m = '<style>CAPTION.MYTABLE {background-color:eeffff;color:black; border-style:solid; border-width:1px; border-color:black; }\ TABLE.MYTABLE {font-family:arial;border-collapse:collapse;font-size:12pt;background-color:F5F5F5;width:100%;border-style:solid;border-color:black;border-width:1px; }\ TH.MYTABLE {font-size:12pt;color:black;text-align:center;border-style:solid;border-color:black;border-width:1px; }\ TR.MYTABLE { }\ TD.MYTABLE {font-size:12pt;background-color:FFFFE5;color:black;border-style:solid;border-width:1px;text-align:left;}</style>\ <DIV class=ptstat>'+uW.arStrings.Common.Troops.toUpperCase()+'</div><TABLE align=center CLASS="MYTABLE" cellpadding=4 cellspacing=0><tr><td>'+uW.arStrings.Common.Troops+'</td><td>'+uW.arStrings.Common.Glory+'</td><td>'+uW.arStrings.Troops.Life+'</td><td>'+uW.arStrings.Common.Attack+'</td><td>'+uW.arStrings.Troops.Defense+'</td><td>'+uW.arStrings.Troops.Speed+'</td><td>'+uW.arStrings.Troops.Range+'</td><td>'+uW.arStrings.Troops.Load+'</td><td>'+uW.arStrings.Common.UpKeep+'</td></tr>'; var unitmight={u1:"1",u2:"1",u4:"3",u5:"6",u6:"3",u7:"3",u8:"6",u9:"3",u10:"6",u11:"5",u12:"12",u31:"50",u32:"50"}; var unitupkeeps={"1":2,"2":3,"3":5,"4":9,"5":35,"6":9,"7":9,"8":35,"9":10,"10":35,"11":50,"12":100,"31":65,"32":65}; uW.Barracks.allUnitIds.each(function(nbu){ if (uW.arStrings.unitName["u"+nbu]) { m+="<tr><td>"+uW.arStrings.unitName["u"+nbu]+"</td>"; m+="<td>"+unitmight["u"+nbu]+"</td>"; m+="<td>"+uW.Unit.stats[nbu].life+"</td>"; m+="<td>"+uW.Unit.stats[nbu].attack+"</td>"; m+="<td>"+uW.Unit.stats[nbu].defense+"</td>"; m+="<td>"+uW.Unit.stats[nbu].speed+"</td>"; m+="<td>"+uW.Unit.stats[nbu].range+"</td>"; m+="<td>"+uW.Unit.stats[nbu].load+"</td>"; m+="<td>"+unitupkeeps[nbu]+"</td>"; m+="</tr>"; } }); m +='</table><br><TABLE CLASS="MYTABLE" CELLPADDING=3 CELLSPACING=0 align=center>\ <CAPTION CLASS="MYTABLE"><DIV class=ptstat>'+uW.arStrings.ShowAddCityToolTip.AddCities.toUpperCase()+'</div></CAPTION>\ <THEAD >\ <TR CLASS="MYTABLE">\ <TH CLASS="MYTABLE">'+uW.arStrings.Common.Cities+'</TH>\ <TH CLASS="MYTABLE">'+uW.arStrings.Common.Requirements+'</TH>\ </TR>\ </THEAD>\ <TBODY>\ <TR CLASS="MYTABLE">\ <TD CLASS="MYTABLE" style="background-color:'+ville2+';"><b><center>'+uW.arStrings.Common.City+' 2</TD>\ <TD CLASS="MYTABLE" style="background-color:'+ville2+';">'+uW.arStrings.Common.Level+' 7 ('+uW.arStrings.Common.YourLevel+' : ' + uW.player.level + ')\ <br>'+uW.arStrings.UserEngagement.CohortTitle+'</TD>\ </TR>\ <TR CLASS="MYTABLE"> \ <TD CLASS="MYTABLE" style="background-color:'+ville3+';"><b><center>'+uW.arStrings.Common.City+' 3</TD>\ <TD CLASS="MYTABLE" style="background-color:'+ ( (auguste>=10 && tiberus>=5 && caligula>=2)?"#99EE99":ville3 ) +';">'+auguste+' / 10 '+unsafeWindow.arStrings.itemName["i1101"]+'<br>'+tiberus+' / 5 '+unsafeWindow.arStrings.itemName["i1102"]+'<br>'+caligula+' / 2 '+unsafeWindow.arStrings.itemName["i1103"]+'</TD>\ </TR>\ <TR CLASS="MYTABLE"> \ <TD CLASS="MYTABLE" style="background-color:'+ville4+';"><b><center>'+uW.arStrings.Common.City+' 4</TD>\ <TD CLASS="MYTABLE" style="background-color:'+ ( (auguste>=20 && tiberus>=15 && caligula>=9)?"#99EE99":ville4 ) +';">'+auguste+' / 20 '+unsafeWindow.arStrings.itemName["i1101"]+'\ <br>'+tiberus+' / 15 '+unsafeWindow.arStrings.itemName["i1102"]+'\ <br>'+caligula+' / 9 '+unsafeWindow.arStrings.itemName["i1103"]+'\ <br>'+claude+' / 4 '+unsafeWindow.arStrings.itemName["i1104"]+'\ <br>'+vespasien+' / 2 '+unsafeWindow.arStrings.itemName["i1105"]+'\ </TD>\ </TR>\ </TR>\ <TR CLASS="MYTABLE"> \ <TD CLASS="MYTABLE" style="background-color:'+ville5+';"><b><center>'+uW.arStrings.Common.City+' 5</TD>\ <TD CLASS="MYTABLE" style="background-color:'+ ( (caligula>=20 && claude>=15 && vespasien>=9 && titus>=4 && Domitien>=2)?"#99EE99":ville5 ) +';">'+caligula+' / 20 '+unsafeWindow.arStrings.itemName["i1103"]+'\ <br>'+claude+' / 15 '+unsafeWindow.arStrings.itemName["i1104"]+'\ <br>'+vespasien+' / 9 '+unsafeWindow.arStrings.itemName["i1105"]+'\ <br>'+titus+' / 4 '+unsafeWindow.arStrings.itemName["i1106"]+'\ <br>'+Domitien+' / 2 '+unsafeWindow.arStrings.itemName["i1107"]+'\ </TD>\ </TR>\ </TR>\ </TR>\ <TR CLASS="MYTABLE"> \ <TD CLASS="MYTABLE" style="background-color:'+ville6+';"><b><center>'+uW.arStrings.Common.City+' 6</TD>\ <TD CLASS="MYTABLE" style="background-color:'+ ( (caligula>=20 && claude>=15 && vespasien>=9 && titus>=4 && Domitien>=2)?"#99EE99":ville6 ) +';">'+caligula+' / 20 '+unsafeWindow.arStrings.itemName["i1103"]+'\ <br>'+claude+' / 15 '+unsafeWindow.arStrings.itemName["i1104"]+'\ <br>'+vespasien+' / 9 '+unsafeWindow.arStrings.itemName["i1105"]+'\ <br>'+titus+' / 4 '+unsafeWindow.arStrings.itemName["i1106"]+'\ <br>'+Domitien+' / 2 '+unsafeWindow.arStrings.itemName["i1107"]+'\ </TD>\ </TR>\ </TBODY>\ </TABLE>'; t.cont.innerHTML = m; t.state = 1; } } } /************************ GOLD COLLECTOR ************************/ var CollectGold = { timer : null, lastCollect : {}, init : function (){ var t = CollectGold; for (var c=0; c<Cities.numCities; c++) t.lastCollect['c'+ Cities.cities[c].c.id] = 0; if (Options.pbGoldEnable) t.setEnable (true); }, setEnable : function (tf){ var t = CollectGold; clearTimeout (t.timer); if (tf) t.tick(); }, colCityName : null, colHappy : 0, tick : function (){ var t = CollectGold; for (var c=0; c<Cities.numCities; c++){ var city = Cities.cities[c]; var since = unixTime() - t.lastCollect['c'+city.c.id]; if (since>15*60 && city.c.population.happiness()>=Options.pbGoldHappy){ t.lastCollect['c'+city.c.id] = unixTime(); t.colCityName = city.c.name; t.ajaxCollectGold (city.c, t.e_ajaxDone); break; } } t.timer = setTimeout (t.tick, 60000); }, e_ajaxDone : function (rslt){ var t = CollectGold; }, ajaxCollectGold : function (city, notify){ var c={}; c.cid=city.id; c.eventid=1; unsafeWindow.AjaxCall.gPostRequest("coliseumEvent.php",c, function(rslt){ if (notify) notify (rslt); }, function (rslt) { if (notify) notify (rslt); } ); } } /************************ RESOURCES COLLECTOR ************************/ var CollectRessource = { lastCollect : {}, minuteTimer : null, init : function (){ var t = CollectRessource; for (var c=0; c<Cities.numCities; c++) t.lastCollect['c'+ Cities.cities[c].c.id] = 0; t.tick(); }, tick : function (){ var t = CollectRessource; if (t.minuteTimer != null && Options.pbRessEnable) { for (var c=0; c<Cities.numCities; c++){ var cityid = Cities.cities[c].c.id; var since = unixTime() - t.lastCollect['c'+cityid]; if (since>(Options.pbRessTime*60)){ t.lastCollect['c'+cityid] = unixTime(); t.ajaxCollectRessource(c,cityid); } } } t.minuteTimer = setTimeout (t.tick, (Options.pbRessTime*60)*1000); }, ajaxCollectRessource : function (ff, city){ var t = CollectRessource; var c={}; c.cid=city; unsafeWindow.AjaxCall.gPostRequest("collectResource.php",c, function(rslt){ actionLog(translate('Collect')+' '+uW.arStrings.Common.Resources,Cities.cities[ff].c.name+': '+translate('Collect')+' '+uW.arStrings.Common.Resources); }, function (rslt) { actionLog(translate('Collect')+' '+uW.arStrings.Common.Resources,Cities.cities[ff].c.name+': <font color=red>'+translate('ERROR')+' '+translate('Collect')+' '+uW.arStrings.Common.Resources+'</font>'); setTimeout (function (){t.ajaxCollectRessource(ff, city);}, 5000); }); } } /************************ AUTO REFRESH GOR ************************/ var RefreshEvery = { timer : null, PaintTimer : null, NextRefresh : 0, target : null, init : function (){ var t = RefreshEvery; t.creatediv(); if (Options.pbEveryMins < 1) Options.pbEveryMins = 1; RefreshEvery.setEnable (Options.pbEveryEnable); }, creatediv : function(){ var t = RefreshEvery; t.target = document.getElementById('comm_tabs'); if(t.target == null){ setTimeout(t.creatediv, 2000); return; } }, setEnable : function (tf){ var t = RefreshEvery; clearTimeout (t.timer); if (tf) { //t.timer = setTimeout (t.doit, Options.pbEveryMins*60000); t.NextRefresh = unixTime() + (Options.pbEveryMins*60); t.timer = setTimeout (t.Paint, 5000); } else { //t.PaintTimer = null; if (ById('TabReloadDiv')) ById('TabReloadDiv').innerHTML = ""; t.timer = null; t.NextRefresh = 0; } }, setTimer : function (){ var t = RefreshEvery; clearTimeout (t.timer); if (Options.pbEveryMins < 1) Options.pbEveryMins = 1; RefreshEvery.setEnable (Options.pbEveryEnable); }, Paint : function(){ var t = RefreshEvery; if(t.timer == null) return; var now = unixTime(); var text = ''; var Left = parseInt(t.NextRefresh - now); if ( Left <= 0){ Left = 0; reloadKOC(); } // if ( Left < 60) ById('TabReloadDiv').innerHTML = '<FONT size="20px" color="red"><B><span id=BOTaTim>'+ timestr(Left) +'</span>'; // else ById('TabReloadDiv').innerHTML = '<font size="20px"><span id=BOTaTim>'+ timestr(Left) +'</span></span>'; ById('TabReloadDiv').innerHTML = '<font color=white><b>( '+ timestr(Left) +' )</b></font>'; // t.box.innerHTML = text; // document.getElementById('BOTaref').addEventListener ('click', t.doit, false); // ById('BOTaTim').addEventListener ('click', function() { t.setEnable(true); }, false); t.timer = setTimeout (t.Paint, 5000); } } /************************ NEWS ************************/ my.News = { cont : null, timer : null, News : null, init : function (){ var t = my.News; t.cont = document.createElement('div'); if (parseInt(Options.Lingua) != 0) { GM_xmlhttpRequest({ method: 'GET', url: 'https://gamespowerita.com/Tools/GoR/Plugins/News/GoRNews.txt', headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' }, onload: function (news) { t.News = news; var first = Number(news.responseHeaders.indexOf("Last-Modified"))+15; var last = news.responseHeaders.indexOf("\n",first); var lastmodified = news.responseHeaders.slice(first,last); if (Options.BreakingNews != lastmodified) { Options.BreakingNews=lastmodified; saveOptions(); alert('News update, '+lastmodified+' check News tab'); if (Options.ptWinIsOpen) { ById('aaNews').click(); } else { ById('BoTTols').click(); ById('aaNews').click(); } } } }); } return t.cont; }, getContent : function (){ var t = my.News; return t.cont; }, show : function (){ var t = my.News; try { var m = '<DIV class=ptstat>'+translate('NEWS')+'!</div><br>'; if(t.News.status != 200) { m += '<center><div style="background-color:#DEDEDE; width:600px; height:200px; text-align:left; overflow-y:auto;"><b>Unable to fetch news <br>Error: '+t.News.status+'</b></div></center>'; return; } m += '<center>'; m += '<div style="background-color:#DEDEDE; width:600px; height:200px; text-align:left; overflow-y:auto;">'; m += '<DIV id="newsdate"></div>'; m += '<b>'+t.News.responseText.replace(/\n/g,"<br>")+'</b>'; m += '</div></center>'; t.cont.innerHTML = m; ById('newsdate').innerHTML = '<p style="text-align: right;">'+Options.BreakingNews+'</p>'; } catch (e) { t.cont.innerHTML = '<PRE>'+ e.name +' : '+ e.message +'</pre>'; } }, hide : function (){ } } /************************ IMPORT / EXPORT ************************/ my.ImpExp = { cont : null, timer : null, Data : {Options:{}}, init : function (){ var t = my.ImpExp; t.cont = document.createElement('div'); return t.cont; }, getContent : function (){ var t = my.ImpExp; return t.cont; }, show : function (){ var t = my.ImpExp; try { var m = '<div class="ptstat">IMPORT/EXPORT</div>'; m+= '<center><input type="submit" value="'+translate('Export')+' '+translate('Options')+'" id="pbExportOptions"> - <input type="submit" value="'+translate('Import')+' '+translate('Options')+'" id="pbImportOptions">'; m+= '<br><input type="submit" value="'+translate('Export')+' Auto'+uW.arStrings.Common.Train+'" id="pbExportTrain"> - <input type="submit" value="'+translate('Import')+' Auto'+uW.arStrings.Common.Train+'" id="pbImportTrain">'; m+= '<br><textarea type="text" id="pbTextData" rows=20 cols=80></textarea>'; m+= '<br><input type="submit" value="'+uW.arStrings.MessagesModal.Delete_button+'" id="pbClearTextData">'; m+= '</center>'; t.cont.innerHTML = m; ById('pbExportOptions').addEventListener('click', t.ExportOptions, false); ById('pbImportOptions').addEventListener('click', t.ImportOptions, false); ById('pbClearTextData').addEventListener('click', t.ClearArea, false); } catch (e) { t.cont.innerHTML = '<PRE>'+ e.name +' : '+ e.message +'</pre>'; } }, ClearArea : function (){ var t = my.ImpExp; ById('pbTextData').value = ""; }, ImportOptions : function (){ var t = my.ImpExp; var serverID = getServerId(); var Data = JSON2.parse(ById('pbTextData').value); if (Data.Options != {}) Options = Data.Options; saveOptions(); reloadKOC(); }, ExportOptions : function (){ var t = my.ImpExp; var serverID = getServerId(); t.Data.Options = Options; ById('pbTextData').value = JSON2.stringify(t.Data); // document.getElementById('pbImportData').select(); }, hide : function (){ } } /************************ DASHBOARD ************************/ my.Dash = { cont : null, timer : null, init : function (){ var t = my.Dash; if (Options.EnableDash && parseInt(Options.Lingua) != 0) { createDashboard(); DashInnert(); } ById('aaDash').style.display="none"; t.cont = document.createElement('div'); return t.cont; }, getContent : function (){ var t = my.Dash; return t.cont; }, gatedef: function(numc) { var currentCity=Cities.cities[numc].c; var a = !Cities.cities[numc].c.defending; var b={cid:currentCity.id,state:a}; uW.AjaxCall.gPostRequest("gate.php",b,function(c){ currentCity.defending=a; DashInnert(); }); }, show : function (){ }, hide : function (){ } } function createDashboard (){ var Dashboard = document.createElement('div'); var beacon = ById('mod_cityinfo'); if (Options.DashPos == 0) { Dashboard.style.width= "450px"; Dashboard.style.top = "-570px"; Dashboard.style.left ="1122px"; Dashboard.style.height = "728px"; } else { Dashboard.style.width= "350px"; Dashboard.style.top = "73px"; Dashboard.style.left ="18px"; Dashboard.style.height = "728px"; } Dashboard.id='Dash_div'; Dashboard.style.position = 'absolute'; Dashboard.style.overflow = 'auto'; beacon.parentNode.insertBefore(Dashboard, beacon); } function DashInnert (){ var t = my.Dash; if (!Options.EnableDash) return; uW.DAdefend = t.gatedef; var Green = 'BODefButOn'; var Red = 'BODefButOff'; var m = '<div class="ptstat">DASHBOARD</div>'; m+= '<center><br><INPUT id="DAReloadGor" type=submit value="'+translate('Reload')+' GoR">'; m+= '<div id="TabReloadDiv"></div>'; m+= '<br><table width="70%">'; m+= '<tr><td style="text-align:center; vertical-align:middle;">'; if (AutoAttack.Attivo) m+= '<INPUT id="DAMultiAttack" class="'+Red+'" type=submit value="Multi'+uW.arStrings.Common.Attack+' = ON"></td>'; else m+= '<INPUT id="DAMultiAttack" class="'+Green+'" type=submit value="Multi'+uW.arStrings.Common.Attack+' = OFF"></td>'; m+= '<td style="text-align:center; vertical-align:middle;">'; if (Options.AttackAuto) m+= '<INPUT id="DAAttque" class="'+Red+'" type=submit value="Auto'+uW.arStrings.Common.Attack+' = ON"></td>'; else m+= '<INPUT id="DAAttque" class="'+Green+'" type=submit value="Auto'+uW.arStrings.Common.Attack+' = OFF""></td>'; m+= '</tr>'; m+= '<tr><td style="text-align:center; vertical-align:middle;">'; if (TrainOptions.Running) m+= '<INPUT id="DATrainAuto" class="'+Red+'" type=submit value="Auto'+uW.arStrings.Common.Train+' = ON"></td>'; else m+= '<INPUT id="DATrainAuto" class="'+Green+'" type=submit value="Auto'+uW.arStrings.Common.Train+' = OFF"></td>'; m+= '<td style="text-align:center; vertical-align:middle;">'; if (my.TranspAuto.traderState.running) m+= '<INPUT id="DATraspAuto" class="'+Red+'" type=submit value="Auto'+uW.arStrings.Common.Transport+' = ON"></td>'; else m+= '<INPUT id="DATraspAuto" class="'+Green+'" type=submit value="Auto'+uW.arStrings.Common.Transport+' = OFF"></td>'; m+= '</tr>'; m+= '<tr><td style="text-align:center; vertical-align:middle;">'; if (AutoResearch.ActiveResearch) m+= '<INPUT id="DAResAuto" class="'+Red+'" type=submit value="Auto'+uW.arStrings.Common.Research+' = ON"></td>'; else m+= '<INPUT id="DAResAuto" class="'+Green+'" type=submit value="Auto'+uW.arStrings.Common.Research+' = OFF"></td>'; m+= '<td style="text-align:center; vertical-align:middle;">'; if (AutoBuild.ActiveBuild) m+= '<INPUT id="DABuildAuto" class="'+Red+'" type=submit value="Auto'+uW.arStrings.Common.Build+' = ON"></td>'; else m+= '<INPUT id="DABuildAuto" class="'+Green+'" type=submit value="Auto'+uW.arStrings.Common.Build+' = OFF"></td>'; m+= '</tr>'; m+= '</table>'; m+= '<br><br>'; m+= '<div class="ptstat">'+uW.arStrings.Common.Cities.toUpperCase()+'</div><br>'; m+= '<table><tr>'; for (i=0; i<Cities.numCities; i++) { if (i == 4) m+= '</tr><tr>'; var Gate = Cities.cities[i].c.defending; if (Gate == 0) { var couleurr="#77EE77"; var stylbo = "BODefButOff"; var butvalue="DEF = OFF"; } else { var couleurr="#EE7777"; var stylbo = "BODefButOn"; var butvalue="DEF = ON"; } m+= "<TD width=81 style='background-color:"+couleurr+";text-align:center' align=center><B>"+ Cities.cities[i].c.name.substring(0,7) +'</b><BR><a onclick="KB.Controllers.MapHelper.gotoCoord('+Cities.cities[i].c.x +','+ Cities.cities[i].c.y+');">('+Cities.cities[i].c.x +','+ Cities.cities[i].c.y+')</a><br><input type=button value="'+butvalue+'" id="DAdef_'+i+'" class="'+stylbo+'" onclick="DAdefend('+i+');"></td>'; m+= '<td> </td>'; } m+= '</tr></table>'; ById('Dash_div').innerHTML = m; ById('DAReloadGor').addEventListener ('click', function() { reloadKOC(); }, false); ById('DAMultiAttack').addEventListener ('click', function() { my.AutoAtt.ToggleAutoAttack(); }, false); ById('DAAttque').addEventListener ('click', function() { my.attaque.ToggleAutoAttack(); }, false); ById('DATrainAuto').addEventListener ('click', function() { my.AutoForm.toggleautoFormationState(); }, false); ById('DATraspAuto').addEventListener ('click', function() { my.TranspAuto.toggleTraderState(); }, false); ById('DAResAuto').addEventListener ('click', function() { my.AutoRes.ToggleAutoResearch(); }, false); ById('DABuildAuto').addEventListener ('click', function() { my.Build.ToggleAutoBuild(); }, false); } /************************ INVENTORY ************************/ my.Inventory = { cont : null, timer : null, init : function (){ var t = my.Inventory; t.cont = document.createElement('div'); return t.cont; }, getContent : function (){ var t = my.Inventory; return t.cont; }, show : function (){ var t = my.Inventory; try { var cont = 0; var m = '<table width=100%><tr>'; uW.Object.values(uW.items).select(function (d) { if (d.category != 'NaN' && d.count > 0) { cont += 1; m+= '<td style="text-align:center; vertical-align:middle;"><div class="pic px70 items item_'+d.id+'"></div></td><td style="text-align:left; vertical-align:middle;"><b>'+uW.arStrings.itemName["i" + d.id]+'</b><br>'+uW.arStrings.Common.youOwn+': '+d.count+'</td>'; if (cont >= 4) { cont = 0; m+= '</tr><tr>'; } } }), m+= '</table>'; t.cont.innerHTML = m; } catch (e) { t.cont.innerHTML = '<PRE>'+ e.name +' : '+ e.message +'</pre>'; } }, hide : function (){ } } /************************ BOTTOLS ************************/ my.BoTTols = { cont : null, timer : null, init : function (){ var t = my.BoTTols; t.cont = document.createElement('div'); return t.cont; }, getContent : function (){ var t = my.BoTTols; return t.cont; }, show : function (){ var t = my.BoTTols; try { t.cont.innerHTML = '<CENTER><iframe src="https://gamespowerita.com" width="750" height="690" id="BOFrame" border=0></iframe><BR></center>'; } catch (e) { t.cont.innerHTML = '<PRE>'+ e.name +' : '+ e.message +'</pre>'; } }, hide : function (){ } } /************************ SCAN MAP ************************/ my.scanmap = { cont : null, timer : null, init : function (){ var t = my.scanmap; t.cont = document.createElement('div'); return t.cont; }, getContent : function (){ var t = my.scanmap; return t.cont; }, show : function (){ var t = my.scanmap; try { t.cont.innerHTML = '<CENTER><iframe src="https://www.gptscanmap.com" width="780px" height="650px" id="BOFrame" border=0></iframe><BR></center>'; } catch (e) { t.cont.innerHTML = '<PRE>'+ e.name +' : '+ e.message +'</pre>'; } }, hide : function (){ } } /************************ BUILD ************************/ my.Build = { cont : null, timer : null, displayTimer : null, ctrl : 0, init : function (){ var t = my.Build; t.cont = document.createElement('div'); setTimeout (function(){ if (AutoBuild.ActiveBuild) t.Controllo(); }, 10000); return t.cont; }, getContent : function (){ var t = my.Build; return t.cont; }, show : function (){ var t = my.Build; try { for (var i=0; i<Cities.numCities; i++) { id = Cities.cities[i].c.id; if (AutoBuild.EnBuild[i] == undefined) AutoBuild.EnBuild[i] = {}; if (AutoBuild.SelCap[i] == undefined) AutoBuild.SelCap[i] = {}; for (z in uW.Constant.Building) { var BuildID = uW.Constant.Building[z]; if (BuildID != 99) { uW.Building.Methods.getAllOfType(BuildID, id).collect(function (r) { var DataBase = Cities.cities[i].c.buildings[r.position].databaseId; if (AutoBuild.EnBuild[i][DataBase] == undefined) AutoBuild.EnBuild[i][DataBase] = false; if (AutoBuild.SelCap[i][DataBase] == undefined) AutoBuild.SelCap[i][DataBase] = 9; }); } } } var m = '<DIV class=ptstat>'+uW.arStrings.Common.Buildings.toUpperCase()+'</div>'; m+= '<table width=100%><tr>'; m+= '<td style="text-align:center; vertical-align:middle;" width=75%>'; if (AutoBuild.ActiveBuild) { m+= '<input type=button value="'+translate('AUTO')+' '+uW.arStrings.Common.Build.toUpperCase()+' = ON" id=EnDisAutoBuild>'; } else { m+= '<input type=button value="'+translate('AUTO')+' '+uW.arStrings.Common.Build.toUpperCase()+' = OFF" id=EnDisAutoBuild>'; } m+= '<br><input type=checkbox id="HelpBuild" '+ (AutoBuild.HelpBuild?'CHECKED ':'')+'> '+uW.arStrings.BuildingModal.RequestHelp; m+= '<br><input type=checkbox id="CheckLvlBuild" '+ (AutoBuild.CheckLevel?'CHECKED ':'')+'> '+translate('Leads to the same level'); m+= '<br>'+translate('Check every')+' <INPUT id="BuildCheckTime" size=3 type=textbox value="'+AutoBuild.CheckTime+'" /> '+uW.arStrings.TimeStr.timeSec; m+= '</td></tr></table>'; for (var i=0; i<Cities.numCities; i++) { id = Cities.cities[i].c.id; m+= '<DIV class=ptstat>'+Cities.cities[i].c.name+'</div>'; if (Cities.cities[i].c.queues.building.activeSlots()[0] || Cities.cities[i].c.queues.building.activeSlots()[1]) { if (parseInt(Cities.cities[i].c.queues.building.activeSlots()[0].typeId())!=99) { var temprestant=Cities.cities[i].c.queues.building.activeSlots()[0].secondsLeft(); } else { if (Cities.cities[i].c.queues.building.activeSlots()[1]) { var temprestant=Cities.cities[i].c.queues.building.activeSlots()[1].secondsLeft(); } else { var temprestant=0; } } } else { var temprestant = 0; } m+= '<b>'+uW.arStrings.Common.Build+'</b>: '+timestrShort(temprestant); m+= '<table width=100%><tr>'; m+= '<td width=50%><TABLE width=100%><tr>'; m+= '<td width=50%><DIV class=ptstat><b>'+uW.arStrings.Common.City.toUpperCase()+'</b></div></td>'; m+= '<td width=25%><DIV class=ptstat>'+uW.arStrings.BuildingModal.CurrentLevel+'</div></td>'; m+= '<td width=25%><DIV class=ptstat>'+translate('Up to level')+'</div></td>'; m+= '</tr><tr><td colspan=3 width=100%>'; m+= '<TABLE align=center cellpadding=0 cellspacing=0 width=100% id="VILLA'+id+'">'; // m+= '<tr><td width=50%> </td><td width=25%> </td><td width=25%> </td></tr>'; m+= '<tr><td width=50%><b>'+uW.arStrings.buildingName["b"+uW.Constant.Building.VILLA].toUpperCase()+':</b></td><td width=25%> </td><td width=25%> </td></tr>'; m+= '</table>'; m+= '</td></tr><tr><td colspan=3 width=100%>'; m+= '<TABLE align=center cellpadding=0 cellspacing=0 width=100% id="BARRACKS'+id+'">'; // m+= '<tr><td width=50%> </td><td width=25%> </td><td width=25%> </td></tr>'; m+= '<tr><td width=50%><b>'+uW.arStrings.buildingName["b"+uW.Constant.Building.BARRACKS].toUpperCase()+':</b></td><td width=25%> </td><td width=25%> </td></tr>'; m+= '</table>'; m+= '</td></tr><tr><td colspan=3 width=100%>'; m+= '<TABLE align=center cellpadding=0 cellspacing=0 width=100% id="CITT'+id+'">'; // m+= '<tr><td width=50%> </td><td width=25%> </td><td width=25%> </td></tr>'; m+= '<tr><td width=50%><b> </b></td><td width=25%> </td><td width=25%> </td></tr>'; m+= '</table>'; m+= '</td></tr>'; m+= '</table></td>'; m+= '<td> </td>'; m+= '<td width=50%><TABLE width=100%>'; m+= '<tr>'; m+= '<td width=50%><DIV class=ptstat><b>'+uW.arStrings.Common.Field.toUpperCase()+'</b></div></td>'; m+= '<td width=25%><DIV class=ptstat>'+uW.arStrings.BuildingModal.CurrentLevel+'</div></td>'; m+= '<td width=25%><DIV class=ptstat>'+translate('Up to level')+'</div></td>'; m+= '</tr><tr><td colspan=3 width=100%>'; m+= '<TABLE align=center cellpadding=0 cellspacing=0 width=100% id="FARM'+id+'">'; // m+= '<tr><td width=50%> </td><td width=25%> </td><td width=25%> </td></tr>'; m+= '<tr><td width=50%><b>'+uW.arStrings.buildingName["b"+uW.Constant.Building.FARM].toUpperCase()+':</b></td><td width=25%> </td><td width=25%> </td></tr>'; m+= '</table>'; m+= '</td></tr><tr><td colspan=3 width=100%>'; m+= '<TABLE align=center cellpadding=0 cellspacing=0 width=100% id="SAWMILL'+id+'">'; // m+= '<tr><td width=50%> </td><td width=25%> </td><td width=25%> </td></tr>'; m+= '<tr><td width=50%><b>'+uW.arStrings.buildingName["b"+uW.Constant.Building.SAWMILL].toUpperCase()+':</b></td><td width=25%> </td><td width=25%> </td></tr>'; m+= '</table>'; m+= '</td></tr><tr><td colspan=3 width=100%>'; m+= '<TABLE align=center cellpadding=0 cellspacing=0 width=100% id="QUARRY'+id+'">'; // m+= '<tr><td width=50%> </td><td width=25%> </td><td width=25%> </td></tr>'; m+= '<tr><td width=50%><b>'+uW.arStrings.buildingName["b"+uW.Constant.Building.QUARRY].toUpperCase()+':</b></td><td width=25%> </td><td width=25%> </td></tr>'; m+= '</table>'; m+= '</td></tr><tr><td colspan=3 width=100%>'; m+= '<TABLE align=center cellpadding=0 cellspacing=0 width=100% id="MINE'+id+'">'; // m+= '<tr><td width=50%> </td><td width=25%> </td><td width=25%> </td></tr>'; m+= '<tr><td width=50%><b>'+uW.arStrings.buildingName["b"+uW.Constant.Building.MINE].toUpperCase()+':</b></td><td width=25%> </td><td width=25%> </td></tr>'; m+= '</table>'; m+= '</td></tr>'; m+= '</table></td>'; m+= '</tr></table>'; } t.cont.innerHTML = m; ById('BuildCheckTime').addEventListener ('change', function () { if (ById('BuildCheckTime').value < 30) ById('BuildCheckTime').value = 30; AutoBuild.CheckTime = ById('BuildCheckTime').value; saveAutoBuild(); }, false); ById("HelpBuild").addEventListener('click', function(e) { AutoBuild.HelpBuild = ById("HelpBuild").checked; saveAutoBuild(); }, false); ById("CheckLvlBuild").addEventListener('click', function(e) { AutoBuild.CheckLevel = ById("CheckLvlBuild").checked; saveAutoBuild(); }, false); ById("EnDisAutoBuild").addEventListener('click', function() { t.ToggleAutoBuild(); }, false); for (var i=0; i<Cities.numCities; i++) { id = Cities.cities[i].c.id; var FF = uW.Constant.Building; for (k in FF) { var BuildID = FF[k]; var Dove = 'CITT'+id; if (BuildID == uW.Constant.Building.FARM) Dove = 'FARM'+id; if (BuildID == uW.Constant.Building.SAWMILL) Dove = 'SAWMILL'+id; if (BuildID == uW.Constant.Building.QUARRY) Dove = 'QUARRY'+id; if (BuildID == uW.Constant.Building.MINE) Dove = 'MINE'+id; if (BuildID == uW.Constant.Building.VILLA) Dove = 'VILLA'+id; if (BuildID == uW.Constant.Building.BARRACKS) Dove = 'BARRACKS'+id; uW.Building.Methods.getAllOfType(BuildID, id).collect(function (r) { var UnderBuild = ''; var DataBase = Cities.cities[i].c.buildings[r.position].databaseId; if (Cities.cities[i].c.queues.building.activeSlots()[0] && Cities.cities[i].c.queues.building.activeSlots()[0] != undefined && Cities.cities[i].c.queues.building.activeSlots()[0].databaseId() == DataBase) { var UnderBuild = '<font color=red>--> '+(r.level()+1)+'</font>'; } if (Cities.cities[i].c.queues.building.activeSlots()[1] && Cities.cities[i].c.queues.building.activeSlots()[1] != undefined && Cities.cities[i].c.queues.building.activeSlots()[1].databaseId() == DataBase) { var UnderBuild = '<font color=red>--> '+(r.level()+1)+'</font>'; } if (BuildID != 99) { var row = ById(Dove).insertRow(1); row.style.color = "black"; row.insertCell(0).innerHTML = '<input type=checkbox id="EnBuild'+DataBase+'" '+ (AutoBuild.EnBuild[i][DataBase]?'CHECKED ':'')+'>'+uW.arStrings.buildingName["b"+BuildID]; row.insertCell(1).innerHTML = '<center>'+r.level()+' '+UnderBuild+'</center>'; var add = '<center><select id="SelectBuildCap'+DataBase+'">'; for (var z=1; z <= 9; z++) { add+= '<option value="'+z+'" ' + (AutoBuild.SelCap[i][DataBase]==z?'SELECTED':'') + '>'+z+'</option>'; } add+= '</select></center>'; row.insertCell(2).innerHTML = add; } }); } } for (var i=0; i<Cities.numCities; i++) { id = Cities.cities[i].c.id; var FF = uW.Constant.Building; for (z in FF) { var BuildID = FF[z]; if (BuildID != 99) { uW.Building.Methods.getAllOfType(BuildID, id).collect(function (r) { var DataBase = Cities.cities[i].c.buildings[r.position].databaseId; ById("EnBuild"+DataBase).addEventListener('click', function() { t.saveBuild(); }, false); ById("SelectBuildCap"+DataBase).addEventListener('click', function() { t.saveBuildCap(); }, false); }); } } } } catch (e) { t.cont.innerHTML = '<PRE>'+ e.name +' : '+ e.message +'</pre>'; } t.displayTimer = setTimeout (t.show, 60000); }, saveBuildCap : function (){ var t = my.Build; for (var i=0; i<Cities.numCities; i++) { id = Cities.cities[i].c.id; var FF = uW.Constant.Building; for (z in FF) { var BuildID = FF[z]; if (BuildID != 99) { uW.Building.Methods.getAllOfType(BuildID, id).collect(function (r) { var DataBase = Cities.cities[i].c.buildings[r.position].databaseId; AutoBuild.SelCap[i][DataBase] = ById("SelectBuildCap"+DataBase).value; }); } } } saveAutoBuild(); }, saveBuild : function (){ var t = my.Build; for (var i=0; i<Cities.numCities; i++) { id = Cities.cities[i].c.id; var FF = uW.Constant.Building; for (z in FF) { var BuildID = FF[z]; if (BuildID != 99) { uW.Building.Methods.getAllOfType(BuildID, id).collect(function (r) { var DataBase = Cities.cities[i].c.buildings[r.position].databaseId; AutoBuild.EnBuild[i][DataBase] = ById("EnBuild"+DataBase).checked; }); } } } saveAutoBuild(); }, hide : function (){ }, Controllo : function () { var t = my.Build; var Can; if (AutoBuild.ActiveBuild) { for (var i=0; i<Cities.numCities; i++) { id = Cities.cities[i].c.id; Can = false; if (Cities.cities[i].c.queues.building.activeSlots()[0] == undefined) { if (Cities.cities[i].c.queues.building.activeSlots()[1] == undefined) { Can = true; } else { if (Cities.cities[i].c.queues.building.activeSlots()[1].typeId() == 99) { Can = true; } else { Can = false; } } } else { if (Cities.cities[i].c.queues.building.activeSlots()[0].typeId() == 99) { if (Cities.cities[i].c.queues.building.activeSlots()[1] == undefined) { Can = true; } else { Can = false; } } else { Can = false; } } if (Can) t.Start(i); } } t.timer = setTimeout (function(){t.Controllo();}, AutoBuild.CheckTime*1000); }, Start : function (i){ var t = my.Build; var id = Cities.cities[i].c.id; var FF = uW.Constant.Building; for (z in FF) { var BuildID = FF[z]; if (BuildID != 99) { uW.Building.Methods.getAllOfType(BuildID, id).collect(function (r) { var DataBase = Cities.cities[i].c.buildings[r.position].databaseId; var Positon = Number(r.position); var h = Cities.byID[id].c.buildings[Positon]; if (AutoBuild.EnBuild[i][DataBase]) { var ToBuildLvl = parseInt(r.level())+1; // Livello da fare if (ToBuildLvl <= AutoBuild.SelCap[i][DataBase]) { var CheckBuild = t.CheckReqBuild(BuildID, ToBuildLvl); if (CheckBuild) { if (AutoBuild.CheckLevel) { if (t.ctrl == 0) { t.ctrl = {ctid:id,sid:i+1,db:DataBase,lvl:ToBuildLvl,pos:Positon,type:BuildID,hh:h}; } else { if (ToBuildLvl < t.ctrl.lvl) { t.ctrl = {ctid:id,sid:i+1,db:DataBase,lvl:ToBuildLvl,pos:Positon,type:BuildID,hh:h}; } } } else { if (t.ctrl == 0) { t.ctrl = {ctid:id,sid:i+1,db:DataBase,lvl:ToBuildLvl,pos:Positon,type:BuildID,hh:h}; } } } } else { if (ById('EnBuild'+DataBase)) ById('EnBuild'+DataBase).checked = false; AutoBuild.EnBuild[i][DataBase] = false; saveAutoBuild(); } } }); } } if (t.ctrl != 0) { var g = t.ctrl; var h = t.ctrl.hh; var a = {}; a.cid = g.ctid; // Città a.csid = g.sid; // Città numero a.bid = g.db; // ID Costruzione a.lv = g.lvl; // Livello da costruire a.pos = g.pos; // Posizione costruzione a.type = g.type; // Tipo costruzione uW.AjaxCall.gPostRequest("construct.php", a, function (k) { actionLog(translate('Auto')+uW.arStrings.Common.Build,Cities.cities[i].c.name+': '+uW.arStrings.Common.Build+': '+uW.arStrings.buildingName["b"+h.typeId()]+'</font>'); uW.Building.removeResourcesForLevel(h.typeId(), h.level() + 1); h.databaseId = Number(k.buildingId); t.ctrl = 0; var z = new uW.KB.Models.QueueSlot.Building({ id: h.position, type: h.typeId(), target: h.level() + 1, databaseId: h.databaseId, ticker: uW.unixtime(), eta: uW.unixtime() + uW.Building.getBuildTimeForLevel(h.typeId(), h.level() + 1) }); Cities.byID[id].c.queues.building.addSlot(z); if (AutoBuild.HelpBuild) uW.Building.getHelp(DataBase); }, function (k) { t.ctrl = 0; actionLog(translate('Auto')+uW.arStrings.Common.Build,Cities.cities[i].c.name+': <font color=red>'+translate('ERROR')+': '+uW.arStrings.Common.Build+': '+uW.arStrings.buildingName["b"+h.typeId()]+'</font>'); // t.Start(i); } ); } }, CheckReqBuild : function (BuildID, ToBuildLvl) { var t = my.Build; var Q = true; var a = uW.Building.checkRequirementForLevel(BuildID, ToBuildLvl); a[0].each(function (Z, ab) { var ac = a[3][ab] !== 0; if (!ac) Q = ac; }); return Q; }, ToggleAutoBuild: function() { var t = my.Build; var obj = ById("EnDisAutoBuild"); if (AutoBuild.ActiveBuild == true) { AutoBuild.ActiveBuild = false; if (obj) obj.value = translate('AUTO')+' '+uW.arStrings.Common.Build.toUpperCase()+' = OFF'; saveAutoBuild(); } else { AutoBuild.ActiveBuild = true; if (obj) obj.value = translate('AUTO')+' '+uW.arStrings.Common.Build.toUpperCase()+' = ON'; saveAutoBuild(); t.Controllo(); } DashInnert(); } } /************************ MANAGER ************************/ my.Manager = { cont : null, alliancemembers:[], leadercount:[], number:0, totalmembers:0, error:false, init : function (){ var t = my.Manager; t.cont = document.createElement('div'); return t.cont; }, getContent : function (){ var t = my.Manager; return t.cont; }, getAllianceInfo : function (){ var t = my.Manager; var c= {}; unsafeWindow.AjaxCall.gPostRequest("allianceGetInfo.php",c, function(rslt){ t.ResAllianceInfo (rslt); } ); }, show : function (){ var t = my.Manager; if (getMyAlliance()[1]==uW.arStrings.Common.None) { t.cont.innerHTML = '<BR><BR><CENTER><b>'+translate('You must belong to an alliance in order to use this feature')+'</center>'; return; } t.totalmembers=0; t.alliancemembers=[]; uW.SendMessage=t.SendMessage; uW.RemoveMember=t.RemoveMember; try { var m ='<center><INPUT id=boAlliance type=submit value="'+translate('Alliance Manager')+'"><INPUT id=boMessage type=submit value="'+translate('Message Manager')+'"><INPUT id=boLeaderboard type=submit value="'+translate('Leaderboard')+'"></center>'; m+='<div id=ShowAlliance>'; m+='<DIV class=ptstat>'+translate('Alliance Manager').toUpperCase()+'</div>'; m+='<center><INPUT id=boGetMem type=submit value="'+translate('Get Info/Member')+'"> <INPUT id=boGetStat type=submit value="'+translate('Get Alliance Diplomacy')+'"></center>'; m+=uW.arStrings.MapHelper.SortBy+': <select id="searchAlli">'; m+='<option value="name">'+uW.arStrings.Common.Name+'</options>'; m+='<option value="might">'+uW.arStrings.Common.Glory+'</option>'; m+='<option value="login">'+uW.arStrings.MembersInfo.LastOnline+'</option>'; m+='<option value="cities">'+uW.arStrings.Common.City+'</option>'; m+='<option value="position">'+uW.arStrings.Common.Position+'</option>'; m+='<option value="dip">'+translate('Days in Position')+' (DIP)</option></select>'; m+='<div style="width:auto; max-width:750px; height:auto;"; id=AllianceInfo></div>'; m+='<div style="width:auto; max-width:750px; height:auto;"; id=DivInfoMem></div>'; m+='<TABLE id=alOverviewTab width=100% style="max-width:750px" class=alTab><TR align="center"></tr></table>'; m+='</div><div id=ShowMessage>'; m+='<DIV class=ptstat>'+translate('Message Manager').toUpperCase()+'</div><center>'; m+='<input type=button value="Message to Ally" id="sendMsgtoAlly"> <input type=button value="Message to Officer" id="sendMsgtoOffi">'; m+='<br><input type=button value="Message to All Leader" id="sendMsgtoLeader"></center>'; m+='<DIV class=ptstat>LOG</div>'; m+='<div style="width:auto; max-width:750px; height:auto;"; id=MessageProgress></div>'; m+='</div>'; m+='<div id=ShowLeaderBoeard>'; m+='<div class=ptstat>'+translate('Leaderboard').toUpperCase()+'</div>'; m+='<INPUT id=boGetLead type=submit value="'+translate('Get Leaderborad')+'">'; m+=translate('Show only the first')+': <select id="NumLead">'; m+='<option value="10">10</options>'; m+='<option value="50">50</option>'; m+='<option value="100">100</option>'; m+='<option value="200">200</option>'; m+='<option value="400">400</option>'; m+='<option value="600">600</option>'; m+='<option value="1000">1000</option></select>'; m+='<TABLE id=alLeaderTab width=100% class=alTab><TR align="center"></tr></table>'; m+='</div>'; t.cont.innerHTML = m; ById("ShowMessage").style.display="none"; ById('ShowLeaderBoeard').style.display="none"; ById("ShowAlliance").style.display="block"; ById('boMessage').disabled = false; ById('boAlliance').disabled = true; ById('boLeaderboard').disabled = false; ById('boAlliance').addEventListener ('click', function(){ ById("ShowMessage").style.display="none"; ById("ShowAlliance").style.display="block"; ById('ShowLeaderBoeard').style.display="none"; ById('boMessage').disabled = false; ById('boAlliance').disabled = true; ById('boLeaderboard').disabled = false; }, false); ById('boMessage').addEventListener ('click', function(){ ById("ShowMessage").style.display="block"; ById("ShowAlliance").style.display="none"; ById('ShowLeaderBoeard').style.display="none"; ById('boMessage').disabled = true; ById('boAlliance').disabled = false; ById('boLeaderboard').disabled = false; }, false); ById('boLeaderboard').addEventListener ('click', function(){ ById("ShowMessage").style.display="none"; ById("ShowAlliance").style.display="none"; ById('ShowLeaderBoeard').style.display="block"; ById('boMessage').disabled = false; ById('boAlliance').disabled = false; ById('boLeaderboard').disabled = true; }, false); ById('boGetMem').addEventListener ('click', function(){ ById('AllianceInfo').innerHTML =""; ById('alOverviewTab').innerHTML =""; ById('DivInfoMem').innerHTML=""; ById('boGetMem').disabled = true; t.alliancemembers=[]; t.getAllianceInfo(); }, false); ById('boGetLead').addEventListener ('click', function(){ ById('alLeaderTab').innerHTML=""; t.leadercount = []; ById('boGetLead').disabled = true; t.getLeaderboard(); }, false); ById('boGetStat').addEventListener ('click', function(){ ById('AllianceInfo').innerHTML =""; ById('alOverviewTab').innerHTML =""; ById('DivInfoMem').innerHTML=""; t.GetDiplomacy(); }, false); ById('sendMsgtoAlly').addEventListener ('click', function(){ var name = getMyAlliance()[1]; var id = getMyAlliance()[0]; alert('id: '+id + ' - name: '+ name); // "KB.AudioManager.playSound('on_click');getMessageWindow(" + [KB.Models.Alliance.arrAllianceInfo.allianceId, "'" + KB.Models.Alliance.arrAllianceInfo.allianceName + "'", "'allianceall'"].join(",") + ")" uW.getMessageWindow([id, "'" + name + "'", "'allianceall'"]); // t.MessageToAllAlly(); }, false); ById('sendMsgtoLeader').addEventListener ('click', function(){ t.ContrMessageToAll(); }, false); ById('sendMsgtoOffi').addEventListener ('click', function(){ t.MessageToOfficial(); }, false); ById('searchAlli').addEventListener('click', function(){ if (t.alliancemembers!="") { ById('alOverviewTab').innerHTML =""; t.paintMembers(); } }, false); } catch (e) { t.cont.innerHTML = '<PRE>'+ e.name +' : '+ e.message +'</pre>'; } }, getLeaderboard : function (){ var t = my.Manager; var row = ById('alLeaderTab').insertRow(0); row.insertCell(0).innerHTML = '<b>'+uW.arStrings.Common.Ranking+'</b>'; row.insertCell(1).innerHTML = '<b>'+uW.arStrings.Common.Name+'</b>'; row.insertCell(2).innerHTML = '<b>'+uW.arStrings.Common.Level+'</b>'; row.insertCell(3).innerHTML = '<b>'+uW.arStrings.Common.Glory+'</b>'; row.insertCell(4).innerHTML = '<b>'+uW.arStrings.Common.Alliance+'</b>'; var NPage = Math.ceil((ById('NumLead').value)/10); for (var f=1; f<=NPage; f++) { var c= {}; c.action = "show_all_players"; c.page = f; unsafeWindow.AjaxCall.gPostRequest("getUserLeaderboard.php",c, function(rslt){ var CP = rslt.curPageData; for (k in CP){ if(CP[k].playerRank != undefined || CP[k].playerDisplayName != undefined || CP[k].playerLevel != undefined || CP[k].playerMight != undefined || CP[k].allianceName != undefined){ t.leadercount.push({ rank: CP[k].playerRank, name: CP[k].playerDisplayName, level: CP[k].playerLevel, might: CP[k].playerMight, alliance: CP[k].allianceName }) }} if(t.leadercount.length == ById('NumLead').value){ById('boGetLead').disabled = false; t.paintLeader(); } }); } }, paintLeader: function(){ var t = my.Manager; // alert('Avvio Paint'); var sortmembers = t.leadercount.sort(function(a, b){ var sortA=parseInt(a.rank), sortB=parseInt(b.rank) if (sortA < sortB) return -1 if (sortA > sortB) return 1 return 0 }); for (var y = (sortmembers.length-1); y >=0; y--) { t._addLeaTab(sortmembers[y].rank, sortmembers[y].name, sortmembers[y].level, sortmembers[y].might, sortmembers[y].alliance); t.cont.style.overflowY = 'scroll'; } }, _addLeaTab: function(rank,name,level,might,alliance){ var t = my.Manager; if(alliance == getMyAlliance()[1]){ var Font = '#64FE2E'; } else { var Font = ''; } var row = ById('alLeaderTab').insertRow(1); row.style.backgroundColor = Font; row.insertCell(0).innerHTML = rank; row.insertCell(1).innerHTML = name; row.insertCell(2).innerHTML = level; row.insertCell(3).innerHTML = addCommas(might); row.insertCell(4).innerHTML = alliance; }, paintMembers: function(){ var t = my.Manager; if (ById('searchAlli').value == "name") { var sortmembers = t.alliancemembers.sort(function(a, b){ var sortA=a.Name.toLowerCase(), sortB=b.Name.toLowerCase() if (sortA < sortB) return -1 if (sortA > sortB) return 1 return 0 }); } if (ById('searchAlli').value == "might") { var sortmembers = t.alliancemembers.sort(function(a, b){ var sortA=parseInt(a.Might),sortB=parseInt(b.Might) if (sortA > sortB) return -1 if (sortA < sortB) return 1 return 0 }); } if (ById('searchAlli').value == "login") { var sortmembers = t.alliancemembers.sort(function(a, b){ var sortA=a.LastLogin,sortB=b.LastLogin if (sortA < sortB) return -1 if (sortA > sortB) return 1 return 0 }); } if (ById('searchAlli').value == "cities") { var sortmembers = t.alliancemembers.sort(function(a, b){ var sortA=a.Cities,sortB=b.Cities if (sortA < sortB) return -1 if (sortA > sortB) return 1 return 0 }); } if (ById('searchAlli').value == "dip") { var sortmembers = t.alliancemembers.sort(function(a, b){ var sortA=a.dip,sortB=b.dip if (sortA < sortB) return -1 if (sortA > sortB) return 1 return 0 }); } if (ById('searchAlli').value == "position") { var sortmembers = t.alliancemembers.sort(function(a, b){ var sortA=a.Position,sortB=b.Position if (sortA < sortB) return -1 if (sortA > sortB) return 1 return 0 }); } for (var y = (sortmembers.length-1); y >=0; y--) { t._addTab(sortmembers[y].Name, sortmembers[y].Might, sortmembers[y].LastLogin, sortmembers[y].Position, sortmembers[y].dip, sortmembers[y].Cities, sortmembers[y].avatarurl, sortmembers[y].dateJoined, sortmembers[y].Id); t.cont.style.overflowY = 'scroll'; } t._addTabHeader(); }, ResAllianceInfo : function (rslt){ var t = my.Manager; var AI = rslt.allianceInfo; var b = '<DIV class=ptstat>'+translate('ALLIANCE INFO')+'</div>'; b+= '<table width=100%><tr>'; b+= '<td width=50%>'+uW.arStrings.Common.Name+': '+AI.allianceName+'</td>'; b+= '<td width=50%>'+uW.arStrings.Alliance.Members+': '+AI.members+'/100</td></tr>'; b+= '<tr><td>'+uW.arStrings.Common.Glory+': '+AI.might+'</td>'; b+= '<td>'+translate('Founder')+': '+AI.founderGenderAndName+'</td></tr></table>'; b+= '<table width=100%><tr>'; var OF = rslt.officers; for (k in OF){ var Name = OF[k].genderAndName; var Type = OF[k].type; if(Name != undefined || Type != undefined){ b+= '<td><font color=red>'+Name+'</font><br>'+officerId2String(Type)+'</td>'; } } b+= '</tr>'; var ToTMom = AI.members; var TotPage = Math.ceil(ToTMom/10); ById('AllianceInfo').innerHTML = b; for (var f=1; f<=TotPage; f++) { var c= {}; c.pageNo = f; unsafeWindow.AjaxCall.gPostRequest("allianceGetMembersInfo.php",c, function(rslt){ var MI = rslt.memberInfo; for (var k in MI){ if (MI[k].avatarurl != undefined || MI[k].genderAndName != undefined || MI[k].positionType != undefined || MI[k].might != undefined || MI[k].cities != undefined || MI[k].daysInPosition != undefined || MI[k].dateJoined != undefined || MI[k].lastLogin != undefined || MI[k].userId != undefined ) { t.alliancemembers.push ({ avatarurl : MI[k].avatarurl, Name: MI[k].name, Position : MI[k].positionType, Might: MI[k].might, Cities: MI[k].cities, dip : MI[k].daysInPosition, dateJoined : MI[k].dateJoined, LastLogin : MI[k].lastLogin, Id : MI[k].userId }); } } if (t.alliancemembers.length >= ToTMom) {t.paintMembers(); ById('boGetMem').disabled = false;} }); } }, _addTab: function(Name,Might,LastLogin,Position,dip,Cities,avatar,dateJoined,Id){ var t = my.Manager; var row = ById('alOverviewTab').insertRow(0); // row.style.backgroundColor = Font; row.vAlign = 'top'; row.insertCell(0).innerHTML ='<img width=25 src="'+ avatar +'">'; row.insertCell(1).innerHTML = Name; row.insertCell(2).innerHTML = addCommas(Might); row.insertCell(3).innerHTML = Cities; row.insertCell(4).innerHTML = officerId2String (Position); row.insertCell(5).innerHTML = dip; row.insertCell(6).innerHTML = dateJoined; row.insertCell(7).innerHTML = LastLogin; row.insertCell(8).innerHTML = '<input type=button value="Msg" id="sendMsg" class="button20" onclick="SendMessage('+Id+');">'; row.insertCell(9).innerHTML = '<img src="https://icons.iconarchive.com/icons/awicons/vista-artistic/16/delete-icon.png" onclick="RemoveMember('+Id+')" alt="'+uW.arStrings.NeighborsPage.Remove+'" />'; }, _addTabHeader: function() { var t = my.Manager; ById('DivInfoMem').innerHTML = '<DIV class=ptstat>'+translate('MEMBERS INFO')+'</div>'; var row = ById('alOverviewTab').insertRow(0); row.insertCell(0).innerHTML = '<b>'+translate('Avatar')+'</b>'; row.insertCell(1).innerHTML = '<b>'+uW.arStrings.Common.Name+'</b>'; row.insertCell(2).innerHTML = '<b>'+uW.arStrings.Common.Glory+'</b>'; row.insertCell(3).innerHTML = '<b>'+uW.arStrings.Common.Cities+'</b>'; row.insertCell(4).innerHTML = '<b>'+uW.arStrings.Common.Position+'</b>'; row.insertCell(5).innerHTML = '<b>'+translate('Days in Position')+'</b>'; row.insertCell(6).innerHTML = '<b>'+translate('Joined Date')+'</b>'; row.insertCell(7).innerHTML = '<b>'+uW.arStrings.MembersInfo.LastOnline+'</b>'; row.insertCell(8).innerHTML = '<b>'+uW.arStrings.Common.Actions+'</b>'; }, MessageToAllAlly : function (){ var t = my.Manager; var b=prompt('(To Alliance) - '+translate('Enter a message')+":", ""); if (b){ var c= {}; unsafeWindow.AjaxCall.gPostRequest("allianceGetInfo.php",c, function(rslt){ var TotPage = Math.ceil(rslt.allianceInfo.members/10); for (var f=1; f<=TotPage; f++) { ById('MessageProgress').innerHTML += '<font color=blue>'+translate('Read members page')+': '+f+'</font><br>'; var c= {}; c.pageNo = f; unsafeWindow.AjaxCall.gPostRequest("allianceGetMembersInfo.php",c, function(rslt){ var MI = rslt.memberInfo; for (var k in MI){ var Name = MI[k].genderAndName; if (Name != undefined){ var c= {}; c.toIds = MI[k].userId; c.subject = translate('Message sent to all the alliance by')+" "+uW.player.name; c.message = b; unsafeWindow.AjaxCall.gPostRequest("sendMessage.php",c, function(rslt){ if(rslt.ok){ ById('MessageProgress').innerHTML += '<font color=green>'+translate('Message send to')+': '+Name+'... OK!</font><br>'; } else { ById('MessageProgress').innerHTML += '<font color=red>'+translate('Message send to')+': '+Name+'... ERROR!</font><br>'; } }); } // ById('MessageProgress').innerHTML += '<font color=green>'+translate('Message send to')+': '+Name+'... OK!</font><br>'; } ById('MessageProgress').innerHTML += '<font color=red>'+translate('Finish')+'!</font><br>'; }); } } ); } }, MessageToOfficial : function (){ var t = my.Manager; var b=prompt('(To Officer) - '+translate('Enter a message')+":", ""); if (b){ var c= {}; unsafeWindow.AjaxCall.gPostRequest("allianceGetInfo.php",c, function(rslt){ var TotPage = Math.ceil(rslt.allianceInfo.members/10); for (var f=1; f<=TotPage; f++) { ById('MessageProgress').innerHTML += '<font color=blue>'+translate('Read members page')+': '+f+'</font><br>'; var c= {}; c.pageNo = f; unsafeWindow.AjaxCall.gPostRequest("allianceGetMembersInfo.php",c, function(rslt){ var MI = rslt.memberInfo; for (var k in MI){ var Pos = MI[k].positionType; var Name = MI[k].genderAndName; if (Pos != undefined || Name != undefined){ if (Pos == 3|| Pos == 2 || Pos == 1){ var c= {}; c.toIds = MI[k].userId; c.subject = translate('Message sent to all officer by')+" "+uW.player.name; c.message = b; unsafeWindow.AjaxCall.gPostRequest("sendMessage.php",c, function(rslt){ if(!rslt.ok){ ById('MessageProgress').innerHTML += '<font color=red>'+translate('Message send to')+': '+Name+'... ERROR!</font><br>'; } }); ById('MessageProgress').innerHTML += '<font color=green>'+translate('Message send to')+': '+Name+'... OK!</font><br>'; } } } }); } } ); } }, ContrMessageToAll : function (){ var t = my.Manager; ById('MessageProgress').innerHTML = ''; ById('MessageProgress').innerHTML += uW.arStrings.Common.Loading+' . . .<br>'; var c= {}; unsafeWindow.AjaxCall.gPostRequest("allianceGetInfo.php",c, function(rslt){ var TotPage = Math.ceil(rslt.allianceInfo.members/10); for (var f=1; f<=TotPage; f++) { var c= {}; c.pageNo = f; unsafeWindow.AjaxCall.gPostRequest("allianceGetMembersInfo.php",c, function(rslt){ var MI = rslt.memberInfo; for (var k in MI){ var Pos = MI[k].positionType; var Name = MI[k].name; var ID = MI[k].userId; if (Pos != undefined || Name != undefined){ if(Name == uW.player.name){ if (Pos == 3|| Pos == 2 || Pos == 1 || ID == 1078560){ ById('MessageProgress').innerHTML = ''; var a = prompt('Min '+uW.arStrings.Alliance.Members+' (0 = disable)', "0"); if(a){ t.MessageToAll(a); } } else { var a = confirm(translate('Sorry, but this feature is only for official')); ById('MessageProgress').innerHTML = ''; } } } } }); } }); }, MessageToAll : function (a){ var t = my.Manager; var text = prompt(translate('Enter a message')+":", ""); if(text){ var c= {}; c.cityId = 5378; c.pageNo = 1; unsafeWindow.AjaxCall.gPostRequest("allianceGetOtherInfo.php",c, function(rslt){ var NumPage = rslt.noOfPages; for (var f=1; f<=NumPage; f++) { var c= {}; c.cityId = 5378; c.pageNo = f; unsafeWindow.AjaxCall.gPostRequest("allianceGetOtherInfo.php",c, function(rslt){ var AN = rslt.otherAlliances; for (k in AN){ var Name = AN[k].name; var Leader = AN[k].hostGenderAndName; var Mem = AN[k].membersCount; var LID = AN[k].leaderUserId; if((Name != undefined || Leader != undefined || LID != undefined) && Mem >= a){ var c= {}; c.toIds = LID; c.subject = translate('Message by')+" "+uW.player.name; c.message = text; unsafeWindow.AjaxCall.gPostRequest("sendMessage.php",c, function(rslt){ if(rslt.ok){ // ById('MessageProgress').innerHTML += '<font color=green>Alliance Name:'+Name+' - Alliance Leader'+Leader+'. . . OK!</font><br>'; } else { ById('MessageProgress').innerHTML += '<font color=red>Alliance Name: '+Name+' - Alliance Leader: '+Leader+'. . . ERROR!</font><br>'; } }); ById('MessageProgress').innerHTML += '<font color=green>Alliance Name: '+Name+' - Alliance Leader: '+Leader+'. . . OK!</font><br>'; } } }); ById('MessageProgress').innerHTML += 'Read Page: '+f+'<br>'; } }); } }, RemoveMember : function (userId){ var t = my.Manager; var a = confirm(translate('Do you really want to remove this user')+'?'); if(a){ var c = {}; c.memberId = userId; unsafeWindow.AjaxCall.gPostRequest("allianceRemoveMember.php",c, function(rslt){ if(rslt.ok) var r = confirm(rslt.message); if(!rslt.ok) var r = confirm(rslt.msg); }); } }, SendMessage : function (userId){ var t = my.Manager; var b=prompt(translate('Enter a message')+":", ""); if (b){ t.SendMessageB(userId,b); } }, SendMessageB : function (userId,b) { var c= {}; c.toIds = userId; c.subject = translate('Message by')+" "+uW.player.name; c.message = b; unsafeWindow.AjaxCall.gPostRequest("sendMessage.php",c, function(rslt){ } ); }, hide : function (){ }, GetDiplomacy : function (){ var t = my.Manager; var c= {}; unsafeWindow.AjaxCall.gPostRequest("allianceGetInfo.php",c, function(rslt){ var b = '<DIV class=ptstat>'+uW.arStrings.Common.Diplomacy.toUpperCase()+'</div>'; var AF = rslt.diplomaticAlliances["friendly"]; b+= '<b>'+uW.arStrings.Alliance.relationFriendly+':</b><br><table width=100%><tr>'; for (k in AF){ b+= '<td><font color=green>'+uW.arStrings.Common.Name+': '+AF[k]["allianceName"]+'</font><br>'; b+= uW.arStrings.Alliance.Members+': '+AF[k]["membersCount"]+'</td>'; } b+= '</tr></table><br><br>'; var AF = rslt.diplomaticAlliances["hostile"]; b+= '<b>'+uW.arStrings.Alliance.relationHostile+':</b><br><table width=100%><tr>'; for (k in AF){ b+= '<td><font color=red>'+uW.arStrings.Common.Name+': '+AF[k]["allianceName"]+'</font><br>'; b+= uW.arStrings.Alliance.Members+': '+AF[k]["membersCount"]+'</td>'; } b+= '</tr></table><br><br>'; var AF = rslt.diplomaticAlliances["friendlyToThem"]; b+= '<b>'+translate('Friendly To Them')+':</b><br><table width=100%><tr>'; for (k in AF){ b+= '<td><font color=blue>'+uW.arStrings.Common.Name+': '+AF[k]["allianceName"]+'</font><br>'; b+= uW.arStrings.Alliance.Members+': '+AF[k]["membersCount"]+'</td>'; } b+= '</tr></table><br><br>'; var AF = rslt.diplomaticAlliances["friendlyToYou"]; b+= '<b>'+translate('Friendly To You')+':</b><br><table width=100%><tr>'; for (k in AF){ b+= '<td><font color=blue>'+uW.arStrings.Common.Name+': '+AF[k]["allianceName"]+'</font><br>'; b+= uW.arStrings.Alliance.Members+': '+AF[k]["membersCount"]+'</td>'; } b+= '</tr></table><br><br>'; ById('AllianceInfo').innerHTML = b; } ); } } /************************ LOG ************************/ my.ActionLog = { myDiv : null, logTab : null, maxEntries: 300, last50 : [], state : null, init : function (){ // called once, upon script startup var t = my.ActionLog; this.myDiv = document.createElement('div'); window.addEventListener('unload', t.onUnload, false); return this.myDiv; }, show : function (div){ var t = my.ActionLog; t.myDiv = this.myDiv; t.myDiv.innerHTML = '<DIV class=ptstat>'+translate('Action Log')+'</div><DIV style="height:535px; max-height:535px; overflow-y:auto">\ <select id=BOSuiviFiltre><option value="">'+uW.arStrings.Common.All+'</option>\ <option value="Multi'+uW.arStrings.Common.Attack+'">Multi'+uW.arStrings.Common.Attack+'</option>\ <option value="'+translate('Reload')+'">'+translate('Reload')+'</option>\ <option value="'+uW.arStrings.Common.Gift+'">'+uW.arStrings.Common.Gift+'</option>\ <option value="'+translate('Collect')+' '+uW.arStrings.Common.Resources+'">'+translate('Collect')+' '+uW.arStrings.Common.Resources+'</option>\ <option value="Auto'+uW.arStrings.Common.Train+'">Auto'+uW.arStrings.Common.Train+'</option>\ <option value="Crest">Crest</option>\ </select>\ <input type=button value="Clear" id=BOLogClean><br><br><TABLE width=100% cellpadding=0 cellspacing=0 id=BOactionlog class=pbTabLined></table></div>'; t.logTab = ById('BOactionlog'); t.filtre = ById('BOSuiviFiltre'); t.state = 1; t.filtre.addEventListener ('change', t.pouette, false); ById('BOLogClean').addEventListener ('click', t.deleteall, false); t.pouette(); }, deleteall: function() { var t = my.ActionLog; setTimeout (function (){ GM_setValue ('BOlog_'+getServerId(), '[]'); }, 0); t.pouette(); }, pouette: function() { var t = my.ActionLog; t.logTab.innerHTML="<TR><TD width=15%></td><td width=15%></td><TD width=70%></td></tr>"; var a = JSON2.parse(GM_getValue ('BOlog_'+getServerId(), '[]')); if (matTypeof(a) == 'array'){ t.last50 = a; for (var i=0; i<t.last50.length; i++) { if (t.filtre.value=="" || t.filtre.value==t.last50[i].ou) { t._addTab (t.last50[i].msg, t.last50[i].ou, t.last50[i].ts); } } } }, hide : function (){ }, getContent : function (){ return my.ActionLog.myDiv; }, _addTab : function (msg, ou, ts){ var t = my.ActionLog; if (t.state != 1) return; if (t.logTab.rows.length >= t.maxEntries) t.logTab.deleteRow(t.maxEntries-1); var row = t.logTab.insertRow(0); row.vAlign = 'top'; row.insertCell(0).innerHTML = ts; row.insertCell(1).innerHTML = ou; row.insertCell(2).innerHTML = msg; }, log : function (msg,ou){ var t = my.ActionLog; var ts = new Date().toTimeString().substring (0,8); if (t.filtre) { if (t.filtre.value=="" || t.filtre.value==ou) { t._addTab (msg, ou, ts); } }else { t._addTab (msg, ou, ts); } while (t.last50.length >= 50) t.last50.shift(); t.last50.push ({msg:msg, ts:ts, ou:ou}); setTimeout (function (){ GM_setValue ('BOlog_'+getServerId(), JSON2.stringify(t.last50)); }, 0); }, onUnload : function (){ var t = my.ActionLog; setTimeout (function (){ GM_setValue ('BOlog_'+getServerId(), JSON2.stringify(t.last50)); }, 0); } } function actionLog (ou,msg){ my.ActionLog.log (msg,ou); } /************************ OPTIONS ************************/ my.Options = { cont : null, state : null, pop:null, fixAvailable : {}, init : function (){ var t = my.Options; t.cont = document.createElement('div'); t.creatediv(); // AutoClick gioca ora if (ById('playNowButton') && Options.HideUpGor) { ById('stop_showing_patch_checkbox').checked = true; ById('playNowButton').click(); } // Premio quotidiano if (uW.player.dailyResourceRewardStatus && Options.HideDaily) { var b = { cid: uW.currentCity.id }; uW.AjaxCall.gPostRequest("claimDailyReward.php", b, function (d) { uW.player.dailyResourceRewardStatus = false; }, function (d) { }); } return t.cont; }, creatediv : function(){ var t = my.Options; var chat = document.getElementById('mod_comm_input').parentNode; if(chat == null){ setTimeout(t.creatediv, 2000); return; } document.getElementById('mod_comm_input').style.width="227px"; document.getElementById('mod_comm_input').style.right="45px"; document.getElementById('mod_comm_input').style.position="absolute"; var ab = document.createElement('a'); ab.className="button25"; ab.style.cssFloat="left"; ab.style.left="0"; chat.appendChild(ab); ab.innerHTML="<span>"+translate('Smileys')+"</span>"; ab.addEventListener ('click', function() { t.EmoHelp(); },false); }, getContent : function (){ var t = my.Options; return t.cont; }, togOpt : function (checkboxId, optionName, callEnable, callIsAvailable){ var t = my.Options; var checkbox = document.getElementById(checkboxId); if (callIsAvailable && callIsAvailable()==false){ checkbox.disabled = true; return; } if (Options[optionName]) checkbox.checked = true; checkbox.addEventListener ('change', new eventToggle(checkboxId, optionName, callEnable).handler, false); function eventToggle (checkboxId, optionName, callOnChange){ this.handler = handler; var optName = optionName; var callback = callOnChange; function handler(event){ Options[optionName] = this.checked; saveOptions(); if (callback != null) callback (this.checked); } } }, getContent : function (){ var t = my.Options; return t.cont; }, show : function (){ var t = my.Options; setTimeout(function() { }, 1000); try { m = '<DIV style="height:670px; max-height:670px; overflow-y:auto">\ <TABLE class=ptTab>\ <TR><TD colspan=2><DIV class=ptstat>'+translate('Configuration of the')+' '+ScriptName+'</div></td></tr>\ <TR><TD> </td><TD>'+uW.arStrings.FTE.Language+': '+ htmlSelector({0:'...', 1:uW.arStrings.languageNames.en, 2:uW.arStrings.languageNames.it},Options.Lingua,'id=BOLangue') +' <span id=SpanLang></span></td></tr>\ <TR><TD><INPUT id=ptAllowWinMove type=checkbox /></td><TD>'+translate('Allow the toolbox window to be moved freely')+'</td></tr>\ <TR><TD></td><TD>'+translate('Dimensions Tools')+': '+translate('Width')+': <INPUT id=pbWidthTools type=text size=2 maxlength=3 value="'+ Options.WidthTools +'"\>px - '+translate('Height')+': <INPUT id=pbHeightTools type=text size=2 maxlength=3 value="'+ Options.HeightTools +'"\>px</td></tr>\ <TR><TD><INPUT id=pbEveryEnable type=checkbox /></td><TD>'+translate('Refresh GoR every')+' <INPUT id=pbeverymins type=text size=2 maxlength=3 \> '+uW.arStrings.TimeStr.timeMin+'</td>\ <TR><TD><INPUT id=pbGoldEnable type=checkbox /></td><TD>'+translate('Organize a Tax event (if happiness')+' >= <INPUT id=pbgoldLimit type=text size=2 maxlength=3 \>%)</td></tr>\ <TR><TD><INPUT id=pbRessEnable type=checkbox '+ (Options.pbRessEnable?'CHECKED ':'') +'/></td><TD>'+uW.arStrings.MainChrome.CollectResources+' '+translate('every')+' <INPUT id=pbLimitRess type=text size=2 maxlength=3 value="'+ Options.pbRessTime +'"\> '+uW.arStrings.TimeStr.timeMin+' <input type=button id="CollectNow" value="'+uW.arStrings.MainChrome.CollectResources+'"></td></tr>\ <TR><TD> </td><td>Show upkeep in red text & send chat alert when only <INPUT id=optFoodHours type=text size=3 value="'+ Options.foodWarnHours +'"> hours of food are left <br>(for chat alert, also check box in chat configuration section !)</td></tr>\ <TR><TD><INPUT id=ptAllowFB '+ (GlobalOptions.autoPublishGamePop?'CHECKED ':'') +' type=checkbox /></td><TD>'+translate('Allow to publish your helpings automatically to Facebook')+' '+ htmlSelector({0:'----', 80:translate('Everyone'), 50:translate('Friends of friends'), 40:translate('Friends only'), 10:translate('Me only')},GlobalOptions.autoPublishPrivacy,'id=selectprivacymode') +'</td></tr>\ <TR><TD><INPUT id=ptHideTab '+ (Options.HideTab?'CHECKED ':'') +' type=checkbox /></td><TD>'+translate('Hide useless keys of the game (Fan page, Discussions ..)')+'</td></tr>\ <TR><TD><INPUT id=ptHideDaily '+ (Options.HideDaily?'CHECKED ':'') +' type=checkbox /></td><TD>'+translate('Receive automatically the daily requests')+'</td></tr>\ <TR><TD><INPUT id=ptHideUpGor '+ (Options.HideUpGor?'CHECKED ':'') +' type=checkbox /></td><TD>'+translate('Hide updates of')+' GoR</td></tr>\ <TR><TD><INPUT id=ptEnDash '+ (Options.EnableDash?'CHECKED ':'') +' type=checkbox /></td><TD>'+translate('Dashboard')+': '+ htmlSelector({0:translate('Right'), 1:translate('Below')},Options.DashPos,'id=BOPosDash') +'\ <TR><TD colspan=2><hr><DIV class=ptstat>'+translate('Configuration of chat')+'</div></td></tr>\ <TR><TD><INPUT id=pbChatREnable type=checkbox /></td><TD>'+translate('Move the chat window to the right of the game')+'</td></tr>\ <TR><TD><INPUT id=ptEnableFoodWarnTchat type=checkbox /></td><TD>'+translate('Allow to publish an alert in chat when your food level is low')+'</td></tr>\ <TR><TD><INPUT id=HelpReq type=checkbox /></td><TD>'+translate('Auto-click help requests, such as building help')+'</td></tr>\ <TR><TD><INPUT id=DelReq type=checkbox /></td><TD>'+translate('Hide all help requests in chat')+'</td></tr>\ <TR><TD><INPUT id=DelReg type=checkbox /></td><TD>'+translate('Hide the rules of the chat')+'</td></tr>\ <TR><TD><INPUT id=BOSmiley type=checkbox /></td><TD>'+translate('Show smileys')+' <INPUT id=EmoHelp type=submit value="'+translate('Open')+'"></td></tr>\ <TR><TD><INPUT id=BOChuchoEnable type=checkbox '+ (Options.Chuchoenabled?'CHECKED ':'') +'/></td><TD>'+translate('Warning sound when receiving a whisper')+'</td></tr>\ <TR><TD> </td><TD>'+translate('Sound file (URL MP3)')+' : <INPUT id=BOurlChucho type=text size=55 maxlength=220 value="'+ Options.urlChucho +'" \></td></tr>\ <TR><TD><INPUT id=BOAttackEnable type=checkbox '+ (Options.Attackenabled?'CHECKED ':'') +'/></td><TD>'+translate('Enable audio in case of ATTACK (Alliance)')+'</td></tr>\ <TR><TD> </td><TD>'+translate('Sound file (URL MP3)')+' : <INPUT id=BOurlAttack type=text size=55 maxlength=220 value="'+ Options.urlAttack +'" \></td></tr>\ <TR><TD><INPUT id=BOSpyEnable type=checkbox '+ (Options.Spyenabled?'CHECKED ':'') +'/></td><TD>'+translate('Enable audio in case of SCOUT (Alliance)')+'</td></tr>\ <TR><TD> </td><TD>'+translate('Sound file (URL MP3)')+' : <INPUT id=BOurlSpy type=text size=55 maxlength=220 value="'+ Options.urlSpy+'" \></td></tr>\ <TR><TD> </td><TD><br>'+translate('Table of colors')+' <INPUT id=ColHelp type=submit value="'+translate('Open')+'" onclick=window.open("https://bastnt.free.fr/palette.html");></td></tr>\ <TR><TD><INPUT id=BOEnhGlobChat type=checkbox '+ (Options.GlobalChat?'CHECKED ':'') +'/></td><TD>'+translate('Background of the global chat')+' <INPUT id=togChatGlo style="background-color:'+Colors.ChatGlo+'" type=text size=7 maxlength=7 value="'+Colors.ChatGlo+'"></td></tr>\ <TR><TD><INPUT id=BOEnhAllChat type=checkbox '+ (Options.AllianceChat?'CHECKED ':'') +'/></td><TD>'+translate('Background of the alliance chat')+' <INPUT id=togChatAll style="background-color:'+Colors.ChatAll+'" type=text size=7 maxlength=7 value="'+Colors.ChatAll+'"></td></tr>\ <TR><TD><INPUT id=EnColLeader type=checkbox '+ (Options.ColorsLeader?'CHECKED ':'') +'/></td><TD>'+translate('Enable color for the leader')+'</td></td>\ <TR><TD> </td><TD> <INPUT id=togChatC style="background-color:'+Colors.ChatChancy+'" type=text size=7 maxlength=7 value="'+Colors.ChatChancy+'"> '+uW.arStrings.Common.Chancellor+'</td></tr>\ <TR><TD> </td><TD> <INPUT id=togChatVC style="background-color:'+Colors.ChatVC+'" type=text size=7 maxlength=7 value="'+Colors.ChatVC+'"> '+uW.arStrings.Common.ViceChancellor+'</td></tr>\ <TR><TD> </td><TD> <INPUT id=togChatLeaders style="background-color:'+Colors.ChatLeaders+'" type=text size=7 maxlength=7 value="'+Colors.ChatLeaders+'"> '+uW.arStrings.Common.Officer+'</td></tr>\ <TR><TD colspan=2><DIV class=ptstat>'+translate('Configuration of Reports')+'</div></b></td></tr>\ <TR><TD><INPUT DISABLED id=BODelReportEnable type=checkbox '+ (Options.EnableDelRep?'CHECKED ':'') +'/></td><TD>'+translate('Enable the deletion of the reports of the')+' Crest</td></tr>\ <TR><TD></td><TD>'+translate('Delete reports every')+' <INPUT DISABLED id=pbDelRepEvery type=text size=2 maxlength=3 value="'+ Options.DeleteRepEvr +'"\> '+uW.arStrings.TimeStr.timeMin+'</td></tr>\ <TR><TD><INPUT id=BODelMessEnable type=checkbox '+ (Options.EnableMesRep?'CHECKED ':'') +'/></td><TD>'+translate('Enable the deletion of the message of the Kabam')+' (Solo italiano)</td></tr>\ <TR><TD colspan=2><DIV class=ptstat>'+translate('Configuration of the Tower alert')+'</div></b></td></tr>\ <TR><TD><INPUT id=pcalertScoutEnable type=checkbox '+ (Options.alertConfig.aChatScout?'CHECKED ':'') +'/></td><TD>'+translate('Allow to post scout alerts in chat')+'</td></tr>\ <TR><TD><INPUT id=pcalertEnable type=checkbox '+ (Options.alertConfig.aChat?'CHECKED ':'') +'/></td><TD>'+translate('Allow to post attack alerts in chat')+'</td></tr>\ <TR><TD align=right> </td><TD>'+translate('Message')+' : <INPUT id=pcalertPrefix type=text size=55 maxlength=120 value="'+ Options.alertConfig.aPrefix +'" \></td></tr>\ <TR><TD align=right> </td><TD><INPUT id=pcalertQG type=checkbox '+ (Options.alertConfig.MonQG?'CHECKED ':'') +' />'+translate('Show the bunker')+' '; m+= '<SELECT id=pcalertHQ name=pcalertHQ><option value="">.....</option>'; for(var c=0; c<Cities.numCities; c++) { aCity = Cities.cities[c].c.id; aVisuCity = Cities.cities[c].c.name + ' '+Cities.cities[c].c.x + ','+ Cities.cities[c].c.y+' '; m+='<option value=\''+ aCity +'\' '+ (Options.alertConfig.hq==aCity?'SELECTED ':'') +'>'+aVisuCity+"</option>"; } m+='</select></td></tr>\ <TR><TD> </td><TD><INPUT id=pcalertMytroops type=checkbox '+ (Options.alertConfig.mytroops?'CHECKED ':'') +'/> '+translate('Show my troops')+'\ <TR><TD> </td></tr>\ <TR><TD><INPUT id=boSoundEnable type=checkbox '+ (Options.alertSound.enabled?'CHECKED ':'') +'/></td><TD>'+translate('Allow to sound an alarm when under attack (handy when you are away from keyboard)')+'</td></tr>\ <TR><TD></td><TD><DIV id=boLoadingSwf>'+translate('Loading the SWF player')+'</div><DIV style="display:none" id=boSoundOpts><TABLE cellpadding=0 cellspacing=0>\ <TR><TD align=right>'+translate('Sound file (URL MP3)')+' : </td><TD><INPUT id=bosoundFile type=text size=55 maxlength=160 value="'+ Options.alertSound.soundUrl +'" \>\ </td><TD><INPUT id=boSoundLoad type=submit value="'+translate('LOAD')+'"><INPUT id=boSoundDefault type=submit value="'+translate('DEFAULT')+'"></td></tr>\ <TR><TD align=right>Volume : </td><TD><TABLE cellpadding=0 cellspacing=0 class=pbTab><TR valign=middle><TD><SPAN id=boVolSlider></span></td><TD width=15></td><TD align=right id=boVolOut>0</td></td></table></td><TD align=center><SPAN id=boLoadStat>xx</span></td></tr>\ <TR><TD align=right><INPUT id=boSoundRepeat type=checkbox '+ (Options.alertSound.repeat?'CHECKED ':'') +'/></td><TD>'+translate('Repeat every')+' <INPUT id=boSoundEvery type=text size=2 maxlength=5 value="'+ Options.alertSound.repeatDelay +'"> '+uW.arStrings.TimeStr.timeMin+'</td></tr>\ <TR><TD></td><TD>'+translate('Length of sounding alarm')+' <INPUT id=boSoundLength type=text size=3 maxlength=5 value="'+ Options.alertSound.playLength +'"> '+uW.arStrings.TimeStr.timeSec+'</td></tr>\ <TR><TD></td><TD><INPUT type=submit value="'+translate('Tester')+'" id=boPlayNow> <INPUT id=boSoundStop type=submit value="'+translate('Stop Sound Alert')+'"></td></tr></table></div></td></tr>\ </table></table><BR><BR><HR><center><b>'+ miseajour +'</b></center></div>' t.cont.innerHTML = m; t.mss = new CmatSimpleSound(SWF_ALARM_URL, null, {height:0, width:0}, t.e_swfLoaded, 'debug=n'); t.mss.swfDebug = function (m){ logit ('SWF: '+ m)}; t.mss.swfPlayComplete = t.e_soundFinished; t.mss.swfLoadComplete = t.e_soundFileLoaded; unsafeWindow.matSimpleSound01 = t.mss; t.volSlider = new SliderBar (ById('boVolSlider'), 200, 21, 0); t.volSlider.setChangeListener(t.e_volChanged); if(Options.Lingua == 1) ById('SpanLang').innerHTML = translate('Translated by')+' Touch1962'; if(Options.Lingua == 2) ById('SpanLang').innerHTML = translate('Translated by')+' Tiestoale'; if(Options.Lingua == 3) ById('SpanLang').innerHTML = translate('Translated by')+' Valentine & Shurius'; if(Options.Lingua == 4) ById('SpanLang').innerHTML = translate('Translated by')+' REX'; if(Options.Lingua == 5) ById('SpanLang').innerHTML = translate('Translated by')+' VonLuckner'; if(Options.Lingua == 6) ById('SpanLang').innerHTML = translate('Translated by')+' Dee_Man'; if(Options.Lingua == 7) ById('SpanLang').innerHTML = translate('Translated by')+' Marcus_Antotonius'; if(Options.Lingua == 8) ById('SpanLang').innerHTML = translate('Translated by')+' Marcus_Antotonius'; ById("BOLangue").addEventListener('change', function(){ Options.Lingua = ById('BOLangue').value; saveOptions(); reloadKOC(); } , false); ById("BOPosDash").addEventListener('change', function(){ Options.DashPos = ById('BOPosDash').value; saveOptions(); } , false); ById('CollectNow').addEventListener ('click', function (){ var ff = CollectRessource; for (var c=0; c<Cities.numCities; c++){ var cityid = Cities.cities[c].c.id; ff.ajaxCollectRessource(c,cityid); } }, false); ById('pbWidthTools').addEventListener ('change', function (){ if(ById("pbWidthTools").value < 600) ById("pbWidthTools").value = 600; Options.WidthTools = ById("pbWidthTools").value; saveOptions(); }, false); ById('pbHeightTools').addEventListener ('change', function (){ if(ById("pbHeightTools").value < 600) ById("pbHeightTools").value = 600; Options.HeightTools = ById("pbHeightTools").value; saveOptions(); }, false); ById('BOChuchoEnable').addEventListener ('click', function (){ Options.Chuchoenabled=ById("BOChuchoEnable").checked; saveOptions(); }, false); ById('BOurlChucho').addEventListener ('change', function (){ if (ById('BOurlChucho').value=="") ById('BOurlChucho').value="https://www.universal-soundbank.com/mp3/sounds/684.mp3"; Options.urlChucho = ById('BOurlChucho').value; saveOptions(); }, false); ById('ptHideTab').addEventListener ('click', function (){ Options.HideTab=ById("ptHideTab").checked; saveOptions(); }, false); ById('ptHideDaily').addEventListener ('click', function (){ Options.HideDaily=ById("ptHideDaily").checked; saveOptions(); }, false); ById('ptHideUpGor').addEventListener ('click', function (){ Options.HideUpGor=ById("ptHideUpGor").checked; saveOptions(); }, false); ById('ptEnDash').addEventListener ('click', function (){ Options.EnableDash=ById("ptEnDash").checked; saveOptions(); }, false); ById('BOAttackEnable').addEventListener ('click', function (){ Options.Attackenabled=ById("BOAttackEnable").checked; saveOptions(); }, false); ById('BOSpyEnable').addEventListener ('click', function (){ Options.Spyenabled=ById("BOSpyEnable").checked; saveOptions(); }, false); ById('BODelReportEnable').addEventListener ('click', function (){ Options.EnableDelRep=ById("BODelReportEnable").checked; saveOptions(); }, false); ById('BODelMessEnable').addEventListener ('click', function (){ Options.EnableMesRep=ById("BODelMessEnable").checked; saveOptions(); }, false); ById('pbDelRepEvery').addEventListener ('click', function (){ if(ById("pbDelRepEvery").value < 1) ById("pbDelRepEvery").value = 1; Options.DeleteRepEvr=ById("pbDelRepEvery").value; saveOptions(); }, false); ById('BOurlAttack').addEventListener ('change', function (){ if (ById('BOurlAttack').value=="") ById('BOurlAttack').value="https://www.universal-soundbank.com/mp3/sounds/217.mp3"; Options.urlAttack = ById('BOurlAttack').value; saveOptions(); }, false); ById('BOurlSpy').addEventListener ('change', function (){ if (ById('BOurlSpy').value=="") ById('BOurlSpy').value="https://www.universal-soundbank.com/mp3/sounds/2376.mp3"; Options.urlSpy = ById('BOurlSpy').value; saveOptions(); }, false); ById('bosoundFile').addEventListener ('change', function (){ Options.urlChucho = ById('bosoundFile').value; saveOptions(); }, false); ById('BOEnhGlobChat').addEventListener ('click', function (){ Options.GlobalChat=ById("BOEnhGlobChat").checked; saveOptions(); }, false); ById('BOEnhAllChat').addEventListener ('click', function (){ Options.AllianceChat=ById("BOEnhAllChat").checked; saveOptions(); }, false); ById('togChatGlo').addEventListener('change', function(){ if (ById('togChatGlo').value == '') ById('togChatGlo').value = '#5C0E3A'; Colors.ChatGlo = ById('togChatGlo').value; ById('togChatGlo').style.backgroundColor=ById('togChatGlo').value; saveColors(); }, false); ById('togChatAll').addEventListener('change', function(){ if (ById('togChatAll').value == '') ById('togChatAll').value = '#679183'; Colors.ChatAll = ById('togChatAll').value; ById('togChatAll').style.backgroundColor=ById('togChatAll').value; saveColors(); }, false); ById('EnColLeader').addEventListener ('click', function (){ Options.ColorsLeader=ById("EnColLeader").checked; saveOptions(); }, false); ById('togChatVC').addEventListener('change', function(){ if(ById('togChatVC').value == '') ById('togChatVC').value = '#81EE81'; Colors.ChatVC = ById('togChatVC').value; ById('togChatVC').style.backgroundColor=ById('togChatVC').value; saveColors(); }, false); ById('togChatC').addEventListener('change', function(){ if(ById('togChatC').value == '') ById('togChatC').value = '#F8A151'; Colors.ChatChancy = ById('togChatC').value; ById('togChatC').style.backgroundColor=ById('togChatC').value; saveColors(); }, false); ById('togChatLeaders').addEventListener('change', function(){ if(ById('togChatLeaders').value == '') ById('togChatLeaders').value = '#C8C8C8'; Colors.ChatLeaders = ById('togChatLeaders').value; ById('togChatLeaders').style.backgroundColor=ById('togChatLeaders').value; saveColors(); }, false); ById('boPlayNow').addEventListener ('click', function (){t.playSound(false)}, false); ById('boSoundStop').addEventListener ('click', t.stopSoundAlerts, false); ById('boSoundRepeat').addEventListener ('change', function (e){Options.alertSound.repeat = e.target.checked;saveOptions();}, false); ById('boSoundEvery').addEventListener ('change', function (e){Options.alertSound.repeatDelay = e.target.value;saveOptions();}, false); ById('boSoundLength').addEventListener ('change', function (e){Options.alertSound.playLength = e.target.value;saveOptions();}, false); ById('boSoundEnable').addEventListener ('change', function (e){Options.alertSound.enabled = e.target.checked;saveOptions();}, false); ById('boSoundStop').disabled = true; ById('bosoundFile').addEventListener ('change', function (){ Options.alertSound.soundUrl = ById('bosoundFile').value; t.loadUrl (Options.alertSound.soundUrl); saveOptions(); }, false); ById('boSoundDefault').addEventListener ('click', function (){ ById('bosoundFile').value = DEFAULT_ALERT_SOUND_URL; Options.alertSound.soundUrl = DEFAULT_ALERT_SOUND_URL; t.loadUrl (DEFAULT_ALERT_SOUND_URL); saveOptions(); }, false); ById('pbLimitRess').addEventListener ('change', function (){ if(ById('pbLimitRess').value < 5) ById('pbLimitRess').value = 5; Options.pbRessTime = ById('pbLimitRess').value; saveOptions(); }, false); ById('pbRessEnable').addEventListener ('click', function (){ Options.pbRessEnable = ById('pbRessEnable').checked; saveOptions(); }, false); t.togOpt ('ptAllowWinMove', 'ptWinDrag', mainPop.setEnableDrag); t.togOpt ('ptEnableFoodWarnTchat', 'enableFoodWarnTchat', FoodAlerts.init); t.togOpt ('pbGoldEnable', 'pbGoldEnable', CollectGold.setEnable); // t.togOpt ('pbRessEnable', 'pbRessEnable'); t.changeOpt ('pbeverymins', 'pbEveryMins' , RefreshEvery.setTimer); t.togOpt ('pbEveryEnable', 'pbEveryEnable', RefreshEvery.setEnable); ById('EmoHelp').addEventListener('click', function(){t.EmoHelp();} , false); t.togOpt ('pbChatREnable', 'pbChatOnRight', WideScreen.setChatOnRight); t.togOpt ('HelpReq', 'HelpRequest'); t.togOpt ('DelReq', 'DeleteRequest'); t.togOpt ('DelReg', 'DeleteRules'); t.togOpt ('BOSmiley', 'Smiley'); t.changeOpt ('pbgoldLimit', 'pbGoldHappy'); // t.changeOpt ('pbLimitRess', 'pbRessTime'); document.getElementById('ptAllowFB').addEventListener ('change', function(){ GlobalOptions.autoPublishGamePop = document.getElementById('ptAllowFB').checked; GM_setValue ('Options_??', JSON2.stringify(GlobalOptions)); },false); document.getElementById('selectprivacymode').addEventListener ('change', function(){ GlobalOptions.autoPublishPrivacy = document.getElementById('selectprivacymode').value; GM_setValue ('Options_??', JSON2.stringify(GlobalOptions)); },false); document.getElementById('optFoodHours').addEventListener ('change', function () { var x = document.getElementById('optFoodHours').value; if (isNaN(x) || x<0.01 || x>99999){ document.getElementById('optFoodHours').value = Options.foodWarnHours; return; } Options.foodWarnHours = x; saveOptions(); }, false); ById('pcalertEnable').addEventListener ('change', t.e_alertOptChanged, false); ById('pcalertScoutEnable').addEventListener ('change', t.e_alertOptChanged, false); ById('pcalertPrefix').addEventListener ('change', t.e_alertOptChanged, false); ById('pcalertQG').addEventListener ('change', t.e_alertOptChanged, false); ById('pcalertHQ').addEventListener ('change', t.e_alertOptChanged, false); ById('pcalertMytroops').addEventListener ('change', t.e_alertOptChanged, false); } catch (e) { t.cont.innerHTML = '<PRE>'+ e.name +' : '+ e.message +'</pre>'; } }, EmoClick: function(what) { document.getElementById ("mod_comm_input").value += " " + what + " "; }, EmoHelp : function (){ var t = my.Options; unsafeWindow.BOEmoClick = t.EmoClick; var helpText = '<DIV style="max-height:430px; height:430px; overflow-y:auto">'; helpText += '<TABLE width=98% cellspacing=0 cellpadding=2 border=0 bordercolor=black class=ptTab><tr>'; var row=0; for (k in Smileys) { helpText += '<TR><TD><img title="'+k+'" class=emoicon src=\"'+Smileys[k]+'\" onclick="BOEmoClick(\''+k+'\')"></td><TD><font size=1>'+k+'</td></tr>'; } helpText += '</table></div>'; if (t.pop == null){ t.pop = new CPopup ('EmoHelp', 0, 0, 115, 455, true); t.pop.getTopDiv().innerHTML = '<CENTER><B><i>Smileys</b></center>'; } t.pop.getMainDiv().innerHTML = helpText; t.pop.show (true); var inputtext=ById('mod_comm_input'); ById("EmoHelp_outer").style.top = (getOffset(inputtext).top+30) +'px'; ById("EmoHelp_outer").style.left = (getOffset(inputtext).left+230) +'px'; }, stopSoundAlerts : function (){ var t = my.Options; obj = ById('boSoundStop'); t.mss.stop (1); clearTimeout (t.soundStopTimer); clearTimeout (t.soundRepeatTimer); ById('boSoundStop').disabled = true; Options.alertSound.alarmActive = false; Options.alertSound.expireTime = 0; if (ById('botowertab')) ById('botowertab').style.display="none"; }, e_soundFileLoaded : function (chan, isError){ if (chan != 1) return; if (isError) ById('boLoadStat').innerHTML = translate('Error')+'!'; else ById('boLoadStat').innerHTML = translate('Loaded'); }, playSound : function (doRepeats){ var t = my.Options; ById('boSoundStop').disabled = false; clearTimeout (t.soundStopTimer); clearTimeout (t.soundRepeatTimer); t.mss.play(1, 0); t.soundStopTimer = setTimeout (function(){t.mss.stop(1); t.e_soundFinished(1)}, Options.alertSound.playLength*1000); if (doRepeats && Options.alertSound.repeat) t.soundRepeatTimer = setTimeout (function (){t.playSound(true)}, Options.alertSound.repeatDelay*60000); else Options.alertSound.alarmActive = false; }, e_soundFinished : function (chan){ var t = my.Options; if (chan != 1) return; if (!Options.alertSound.alarmActive){ ById('boSoundStop').disabled = true; } }, soundTheAlert : function (){ var t = my.Options; Options.alertSound.alarmActive = true; t.playSound(true); }, loadUrl : function (url){ var t = my.Options; t.mss.load (1, url, true); ById('boLoadStat').innerHTML = 'Loading'; }, e_swfLoaded : function (){ var t = my.Options; ById('boLoadingSwf').style.display = 'none'; ById('boSoundOpts').style.display = 'inline'; t.volSlider.setValue (Options.alertSound.volume/100); t.loadUrl (Options.alertSound.soundUrl); setTimeout (function (){t.mss.setVolume (1, Options.alertSound.volume);}, 500); if (Options.alertSound.alarmActive && Options.alertSound.expireTime>unixTime()) { t.soundTheAlert(); } }, e_volChanged : function (val){ var t = my.Options; ById('boVolOut').innerHTML = parseInt(val*100); Options.alertSound.volume = parseInt(val*100); t.mss.setVolume (1, Options.alertSound.volume); }, hide : function (){ }, togOpt : function (checkboxId, optionName, callOnChange){ var t = my.Options; var checkbox = document.getElementById(checkboxId); if (Options[optionName]) checkbox.checked = true; checkbox.addEventListener ('change', eventHandler, false); function eventHandler (){ Options[optionName] = this.checked; saveOptions(); if (callOnChange) callOnChange (this.checked); } }, changeOpt : function (valueId, optionName, callOnChange){ var t = my.Options; var e = document.getElementById(valueId); e.value = Options[optionName]; e.addEventListener ('change', eventHandler, false); function eventHandler (){ Options[optionName] = this.value; saveOptions(); if (callOnChange) callOnChange (this.value); } }, e_alertOptChanged : function (){ Options.alertConfig.aChat = document.getElementById('pcalertEnable').checked; Options.alertConfig.aChatScout = document.getElementById('pcalertScoutEnable').checked; Options.alertConfig.aPrefix=document.getElementById('pcalertPrefix').value; Options.alertConfig.MonQG=ById('pcalertQG').checked; Options.alertConfig.hq=ById('pcalertHQ').options[ById('pcalertHQ').selectedIndex].value; Options.alertConfig.mytroops=ById('pcalertMytroops').checked; saveOptions(); TowerAlerts.setPostToChatOptions(Options.alertConfig); } } function getOffset( el ) { var _x = 0; var _y = 0; while( el && !isNaN( el.offsetLeft ) && !isNaN( el.offsetTop ) ) { _x += el.offsetLeft - el.scrollLeft; _y += el.offsetTop - el.scrollTop; el = el.offsetParent; } return { top: _y, left: _x }; } function SliderBar (container, width, height, value, classPrefix, margin){ var self = this; this.listener = null; if (value==null) value = 0; if (!margin) margin = parseInt(width*.05); this.value = value; if (width<20) width=20; if (height<5) height=5; if (classPrefix == null){ classPrefix = 'slider'; var noClass = true; } var sliderHeight = parseInt(height/2); var sliderTop = parseInt(height/4); this.sliderWidth = width - (margin*2); this.div = document.createElement ('div'); this.div.style.height = height +'px'; this.div.style.width = width +'px'; this.div.className = classPrefix +'Cont'; if (noClass) this.div.style.backgroundColor='#ddd'; this.slider = document.createElement ('div'); this.slider.setAttribute ('style', 'position:relative;'); this.slider.style.height = sliderHeight + 'px' this.slider.style.top = sliderTop + 'px'; this.slider.style.width = this.sliderWidth +'px'; this.slider.style.left = margin +'px'; this.slider.className = classPrefix +'Bar'; this.slider.draggable = true; if (noClass) this.slider.style.backgroundColor='#fff'; this.sliderL = document.createElement ('div'); this.sliderL.setAttribute ('style', 'width:100px; height:100%; position:relative; '); this.sliderL.className = classPrefix +'Part'; this.sliderL.draggable = true; if (noClass) this.sliderL.style.backgroundColor='#0c0'; this.knob = document.createElement ('div'); this.knob.setAttribute ('style', 'width:3px; position:relative; left:0px; background-color:#222'); this.knob.style.height = height +'px'; this.knob.style.top = (0-sliderTop) +'px'; this.knob.className = classPrefix +'Knob'; this.knob.draggable = true; this.slider.appendChild(this.sliderL); this.sliderL.appendChild (this.knob); this.div.appendChild (this.slider); container.appendChild (this.div); this.div.addEventListener('mousedown', mouseDown, false); this.getValue = function (){ return self.value; } this.setValue = function (val){ var relX = (val * self.sliderWidth); self.sliderL.style.width = relX + 'px'; self.knob.style.left = relX + 'px'; self.value = val; if (self.listener) self.listener(self.value); } this.setChangeListener = function (listener){ self.listener = listener; } function moveKnob (me){ var relX = me.clientX - self.divLeft; if (relX < 0) relX = 0; if (relX > self.sliderWidth) relX = self.sliderWidth; self.knob.style.left = (relX - (self.knob.clientWidth/2) ) +'px'; self.sliderL.style.width = relX + 'px'; self.value = relX / self.sliderWidth; if (self.listener) self.listener(self.value); } function doneMoving (){ self.div.removeEventListener('mousemove', mouseMove, true); document.removeEventListener('mouseup', mouseUp, true); } function mouseUp (me){ moveKnob (me); doneMoving(); } function mouseDown(me){ var e = self.slider; self.divLeft = 0; while (e.offsetParent){ self.divLeft += e.offsetLeft; e = e.offsetParent; } moveKnob (me); document.addEventListener('mouseup', mouseUp, true); self.div.addEventListener('mousemove', mouseMove, true); } function mouseMove(me){ moveKnob (me); } } function CmatSimpleSound (playerUrl, container, attrs, onLoad, flashVars) { var self = this; this.player = null; this.volume = 100; this.isLoaded = false; this.onSwfLoaded = null; var div = document.createElement ('div'); this.onSwfLoaded = onLoad; if (navigator.appName.toLowerCase().indexOf('microsoft')+1) { div.innerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"><param name="movie" value="'+playerUrl+'"><param name="quality" value="high"></object>'; this.player = div.getElementsByTagName('object')[0]; } else { div.innerHTML = '<embed src="'+playerUrl+'" bgcolor="#eeeeee" allowfullscreen=false FlashVars="'+ flashVars +'" quality="high" allowscriptaccess="always" pluginspage="https://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" ></embed>'; this.player = div.getElementsByTagName('embed')[0].wrappedJSObject; } if (container) container.appendChild (div); else document.body.appendChild (div); for (k in attrs) this.player.setAttribute(k, attrs[k]); this.setVolume = function (chanNum, vol){ if (!self.isLoaded) return; self.player.jsSetVolume (chanNum, vol); volume = vol; } this.load = function (chanNum, url, bStream, bAutoplay, bUsePolicyFile){ self.player.jsLoad (chanNum, url, bStream, bAutoplay, bUsePolicyFile); } this.play = function (chanNum, position){ if (self.player.jsPlay) self.player.jsPlay (chanNum, position); } this.stop = function (chanNum){ if (!self.isLoaded) return; self.player.jsStop (chanNum); } this.getStatus = function (chanNum){ return self.player.jsGetStatus (chanNum); } this.debugFunc = function (msg){ } this.swfDebug = function (msg){ self.debugFunc('SWF: '+ msg); } this.swfLoaded = function (){ self.isLoaded = true; self.debugFunc ('playerIsReady'); if (self.onSwfLoaded) self.onSwfLoaded(); } this.swfPlayComplete = function (chanNum){ } this.swfLoadComplete = function (chanNum, isError){ } } function htmlSelector (valNameObj, curVal, tags){ var m = []; m.push ('<SELECT'); if (tags){ m.push (' '); m.push (tags); } for (var k in valNameObj){ m.push ('><OPTION '); if (k == curVal) m.push ('SELECTED '); m.push ('value="'); m.push (k); m.push ('">'); m.push (valNameObj[k]); m.push ('</option>'); } m.push ('</select>'); return m.join (''); } /************************ SEARCH ************************/ my.Search = { cont:null, state : null, opt : {}, searchRunning : false, tilesSearched : 0, tilesFound : 0, pop:null, curX : 0, curY : 0, lastX : 0, firstX : 0, firstY : 0, lastY : 0, sourceCity :null, init : function (){ var t = my.Search; this.cont = document.createElement('div'); unsafeWindow.BOPCpo2 = t.clickedPlayerCheckOnline; unsafeWindow.BOSaveAttack = t.saveattack; unsafeWindow.BOPCplo2 = t.clickedPlayerGetLastLogin; return this.cont; }, getContent : function (){ var t = my.Search; return t.cont; }, hide : function (){ }, saveattack: function(x,y,typea,lvl) { var t = my.Search; if (ById('SearchMultiAtt').checked) { for (var c=0; c<Cities.numCities; c++) { var SourceId = t.sourceCity.c.id; var cityId = Cities.cities[c].c.id; if (cityId == SourceId) { var AddCoords = ''; if (AutoAttack.Multi[c] != "") { var u_koords = AutoAttack.Multi[c].split("\n"); for (var i = 0; i < u_koords.length; i++) { var xy1 = u_koords[i].split(','); var X1 = parseInt(xy1[0],10); var Y1 = parseInt(xy1[1],10); if (X1 != 'NaN' && Y1 != 'NaN') if (i==0) AddCoords += X1+','+Y1; else AddCoords += '\n'+X1+','+Y1; } AddCoords += '\n'+x+','+y; } else { AddCoords += x+','+y; } AutoAttack.Multi[c] = ""; AutoAttack.Multi[c] = AddCoords; saveAutoAttack(); } } } else { if (ById('SearchAutoAtt').checked) { var SourceId = t.sourceCity.c.id; var id = x+"x"+y; var now = unixTime(); if (Options.AttackTime == undefined) Options.AttackTime = {}; Options.AttackTime[id] = { lastattack : (now-(24*60*60)), coordX: x, coordY: y, cityId: t.sourceCity.id, typea: typea,level:lvl }; saveOptions(); } else { alert(translate('Please select an option')+'!'); } } /* var XX = Options.ptWinPos.x + 100; var YY = Options.ptWinPos.y + 200; var m = '<div id="WhereSave">'; m+= '<center><b>'; m+= translate('Where do you want to save the coordinates')+'?</b>'; m+= '<br><br><b>X:</b> '+x; m+= ' - '; m+= '<b>Y:</b> '+y; m+= '<br><br><center>'; m+= '<input type=button id="MultiAtt" value="Multi'+uW.arStrings.Common.Attack+'">'; m+= ' '; m+= '<input type=button id="AutoAtt" value="Auto'+uW.arStrings.Common.Attack+'">'; m+= '</center>'; m+= '</div>'; m+= '<div id="OptMulti">'; m+= '<center><b>'+translate('Do you want to delete the existing coordinates before inserting these')+'?</b><br><br><br>'; m+= '<input type=button id="YesSave" value="'+translate('Yes')+'">'; m+= ' '; m+= '<input type=button id="NoSave" value="'+translate('No')+'">'; m+= '</center></div>'; if (t.pop == null){ t.pop = new CPopup ('BOScoutGermAlert', XX, YY, 300, 200, true); t.pop.getTopDiv().innerHTML = '<DIV align=center><h2><B>'+ScriptName+'</B></h2></DIV>'; } t.pop.getMainDiv().innerHTML = m; t.pop.show(true); ById('WhereSave').style.display = 'block'; ById('OptMulti').style.display = 'none'; ById('MultiAtt').addEventListener('click', function() { ById('WhereSave').style.display = 'none'; ById('OptMulti').style.display = 'block'; }, false); ById('YesSave').addEventListener('click', function() { for (var c=0; c<Cities.numCities; c++) { var SourceId = t.sourceCity.c.id; var cityId = Cities.cities[c].c.id; if (cityId == SourceId) { AutoAttack.Multi[c] = ""; AutoAttack.Multi[c] = x+','+y; saveAutoAttack(); break; } } t.pop.show(false); }, false); ById('NoSave').addEventListener('click', function() { for (var c=0; c<Cities.numCities; c++) { var SourceId = t.sourceCity.c.id; var cityId = Cities.cities[c].c.id; if (cityId == SourceId) { var AddCoords = ''; if (AutoAttack.Multi[c] != "") { var u_koords = AutoAttack.Multi[c].split("\n"); for (var i = 0; i < u_koords.length; i++) { var xy1 = u_koords[i].split(','); var X1 = parseInt(xy1[0],10); var Y1 = parseInt(xy1[1],10); if (X1 != 'NaN' && Y1 != 'NaN') if (i==0) AddCoords += X1+','+Y1; else AddCoords += '\n'+X1+','+Y1; } AddCoords += '\n'+x+','+y; } else { AddCoords += x+','+y; } AutoAttack.Multi[c] = ""; AutoAttack.Multi[c] = AddCoords; saveAutoAttack(); } } t.pop.show(false); }, false); ById('AutoAtt').addEventListener('click', function() { var SourceId = t.sourceCity.c.id; var id = x+"x"+y; var now = unixTime(); if (Options.AttackTime == undefined) Options.AttackTime = {}; Options.AttackTime[id] = { lastattack : (now-(24*60*60)), coordX: x, coordY: y, cityId: t.sourceCity.id, typea: typea,level:lvl }; saveOptions(); t.pop.show(false); }, false); */ }, findlastattack: function(x,y) { var id = x+"x"+y; if (Options.AttackTime[id]) { var now = unixTime(); var lastatt= Options.AttackTime[id].lastattack; return timestr(now - lastatt); } else { return "-"; } }, show : function (cont){ var t = my.Search; if (t.state == null){ this.cont.innerHTML = '\ <DIV class=ptentry><table><tr valign=bottom><TD class=xtab width=100 align=right>'+uW.arStrings.Common.Type+' : </td><TD>\ <SELECT id="srcType">\ <OPTION selected value=1>'+uW.arStrings.Common.Wilds+'</option>\ <OPTION value=0>'+uW.arStrings.Common.BarbarianCamp+'</option>\ <OPTION value=2>'+uW.arStrings.Common.Cities+'</option>\ </select></td></tr>\ </table>\ <DIV id="srcOpts"></div></div>\ <DIV id="srcResults"></div>'; var m = '<TABLE><TR><TD>'; m += '<TABLE><TR><TD class=xtab width=100 align=right>'+translate('City to start from')+' : X: </td><TD class=xtab>\ <INPUT id="srchX" type=text\ size=3> Y: <INPUT id="srchY" type=text\ size=3> <SPAN id=spInXY></span>'; m += '</td></tr><TR><TD class=xtab align=right>'+uW.arStrings.Common.Distance+' : </td><TD class=xtab>'+uW.arStrings.Common.From+' <INPUT id=srcaDist size=4 value=0 /> '+uW.arStrings.Common.To+' <INPUT id=srcDist size=4 value=70 /></td></tr>'; m += '<TR><TD class=xtab></td><TD class=xtab><INPUT id=srcStart type=submit value="'+uW.arStrings.MainChrome.StartResearch+'"/></td></tr>'; m += '<TR><TD colspan=2><input type=checkbox id=ShowHideOpts>'+translate('Hide option window')+'</td></tr>'; m += '</table>'; m += '</td><TD> </td><TD style="align:right; vertical-align:top;">'; m += '<TABLE width=100%>'; m += '<TR><TD>'+translate('Where do you want to save the coordinates')+'?</td></tr>'; m += '<TR><TD><INPUT type=checkbox id="SearchMultiAtt"> Multi'+uW.arStrings.Common.Attack+'</td></tr>'; m += '<TR><TD><INPUT type=checkbox id="SearchAutoAtt"> Auto'+uW.arStrings.Common.Attack+'</td></tr>'; m += '</table>'; m += '</td>'; m += '</tr></table>'; document.getElementById ('srcOpts').innerHTML = m; var citysrc0=new CdispCityPicker ('srchdcp', document.getElementById ('spInXY'), false, t.clickCitySourceSelect, Cities.byID[unsafeWindow.currentcityid].idx); document.getElementById ('srcStart').addEventListener ('click', t.clickedSearch, false); t.state = 1; } }, clickCitySourceSelect : function (city){ var t = my.Search; t.sourceCity = city; document.getElementById ('srchX').value=t.sourceCity.c.x; document.getElementById ('srchY').value=t.sourceCity.c.y; }, clickedPlayerCheckOnline : function (span, uid){ var t = my.AllianceList; var s = my.Search; span.onclick = ''; span.innerHTML = uW.arStrings.MapHelper.Searching+"..."; t.fetchPlayerStatusSimple (uid, function (r) {s.gotPlayerStatus(r, span, uid)}); }, clickedPlayerGetLastLogin : function (span, uid){ var t = my.AllianceList; var s = my.Search; span.onclick = ''; span.innerHTML = uW.arStrings.MapHelper.Searching+"..."; t.fetchPlayerLastLogin (uid, function (r) {s.gotPlayerLastLogin(r, span)}); }, gotPlayerStatus : function (rslt, span,uid){ var t = my.AllianceList; if (!rslt.ok){ span.innerHTML = rslt.errorMsg; return; } var p = rslt.data; if (p[uid] == true) { m = '<span style="color:green"><b>Online!</b></span>'; } else { m = '<span style="color:red"><b>Offline!</b></span>'; } span.innerHTML = m + ''; }, gotPlayerLastLogin : function (rslt, span){ var t = my.AllianceList; if (!rslt.ok){ span.innerHTML = rslt.errorMsg; return; } var p = rslt.playerInfo; var lastLogin = rslt.playerInfo.lastLogin; if (lastLogin) { m = '<span style="color:black">'+lastLogin+'</span>'; } else { m = '<span style="color:red">?</span>'; } span.innerHTML = m + ''; }, clickedSearch : function (){ var t = my.Search; if (t.searchRunning){ t.stopSearch (uW.arStrings.Common.Cancel.toUpperCase() + " " + uW.arStrings.Common.Research.toUpperCase()+' !'); return; } t.opt.searchType = document.getElementById ('srcType').value; t.opt.startX = parseInt(document.getElementById ('srchX').value); t.opt.startY = parseInt(document.getElementById ('srchY').value); t.opt.maxDistance = parseInt(document.getElementById ('srcDist').value); t.opt.maxDistanceA = parseInt(document.getElementById ('srcaDist').value); errMsg = ''; if (isNaN (t.opt.maxDistanceA) ||t.opt.maxDistanceA<0) errMsg += translate("The minimum distance cannot be lower than 0")+"<BR>"; if (isNaN (t.opt.maxDistance) ||t.opt.maxDistance<1) errMsg += translate("The distance has to be higher than 1")+"<BR>"; if (t.opt.maxDistance<=t.opt.maxDistanceA) errMsg += translate("The maximum/minimum distance has been exceeded")+"<BR>"; if(t.opt.maxDistanceA > 375) errMsg += translate("The distance cannot be higher than 375")+" ! <BR>"; if (errMsg != ''){ document.getElementById('srcResults').innerHTML = '<FONT COLOR=#660000>ERROR :</font><BR><BR>'+ errMsg; return; } t.searchRunning = true; document.getElementById ('srcStart').value = uW.arStrings.Common.Cancel.toUpperCase(); m = '<DIV class=ptstat><TABLE width=100% cellspacing=0><TR><TD class=xtab width=125><DIV id=statSearched></div></td>\ <TD class=xtab align=center><SPAN id=statStatus></span></td>\ <TD class=xtab align=right width=125><DIV id=statFound></div></td></tr></table></div>\ <TABLE width=100%><TR valign=top><TD><DIV id=divOutTab style="overflow-y:auto; width:100%;"></div></td>\ <TD id="tddivOutOpts" width="290px" height=100% style="background:#e0e0f0; height:100%; padding:5px, top:0px"><DIV id=divOutOpts style="width:260px"></div></td></tr></table>'; document.getElementById('srcResults').innerHTML = m; document.getElementById('ShowHideOpts').addEventListener ('click', function (){ if (document.getElementById("ShowHideOpts").checked) { document.getElementById("tddivOutOpts").style.display="none"; //document.getElementById("divOutTab").style.width="740px"; } else { document.getElementById("tddivOutOpts").style.display="block"; //document.getElementById("divOutTab").style.width="460px"; } }, false); if (t.opt.searchType == 0) typeName = uW.arStrings.Common.BarbarianCamp; else if (t.opt.searchType == 1) typeName = unsafeWindow.arStrings.Common.Wilds; else typeName = uW.arStrings.Common.Cities; m = '<CENTER><B>'+uW.arStrings.Common.Search+' '+ typeName +'<BR>\ '+uW.arStrings.Common.From+' : '+ t.opt.startX +','+ t.opt.startY +' '+uW.arStrings.Common.Distance+' : '+ t.opt.maxDistanceA +' '+ t.opt.maxDistance +'<BR></center>\ <DIV class=ptentry><TABLE cellspacing=0 width=100%><TR align=center><TD class=xtab colspan=10><B>'+translate('OPTIONS')+' :</b><BR></td></tr>'; if (t.opt.searchType == 1 || t.opt.searchType == 0) { m += '<TR><TD class=xtab align=right>'+uW.arStrings.Common.Level+' Min. :</td><TD class=xtab> <INPUT id=filMinLvl size=2 value='+ Options.srcMinLevel +' /></td></tr>\ <TR><TD class=xtab align=right>'+uW.arStrings.Common.Level+' Max. :</td><TD class=xtab> <INPUT id=filMaxLvl size=2 value='+ Options.srcMaxLevel +' /></td></tr>'; } if (t.opt.searchType == 1){ m += '<TR><TD class=xtab align=right>'+uW.arStrings.Common.Field+' :</td><TD class=xtab align=right>\ '+uW.arStrings.Common.Woods+'<INPUT id=woodWild type=CHECKBOX'+ (Options.woodWild?' CHECKED':'') +'></td></tr>'; m += '<TR><TD class=xtab align=right>'+uW.arStrings.Common.Grassland+'/'+uW.arStrings.Common.River+'<INPUT id=foodWild type=CHECKBOX '+ (Options.foodWild?' CHECKED':'') +'></td>\ <TD class=xtab align=right>'+uW.arStrings.Common.Mountain+'<INPUT id=mtnWild type=CHECKBOX '+ (Options.mtnWild?' CHECKED':'') +'></td></tr>'; m += '<TR><TD class=xtab align=right>'+uW.arStrings.Common.Plain+'<INPUT id=plnWild type=CHECKBOX '+ (Options.plnWild?' CHECKED':'') +'></td>\ <TD class=xtab align=right>'+uW.arStrings.Common.Hills+'<INPUT id=hillWild type=CHECKBOX'+ (Options.hillWild?' CHECKED':'') +'></td></tr>'; m += '<TR><TD class=xtab align=right>'+translate('Non-occupied only')+' :</td><TD class=xtab><INPUT id=filUnowned type=CHECKBOX '+ (Options.unownedOnly?' CHECKED':'') +'\><td></tr>'; } if (t.opt.searchType == 1 || t.opt.searchType == 0) { m+= '<TR><TD class=xtab align=right>'+uW.arStrings.MapHelper.SortBy+' :</td><TD class=xtab><SELECT id=filSortBy>\ <OPTION value="level" '+ (Options.srcSortBy=='level'?'SELECTED':'') +'>'+uW.arStrings.Common.Level+'</option>\ <OPTION value="dist" '+ (Options.srcSortBy=='dist'?'SELECTED':'') +'>'+uW.arStrings.Common.Distance+'</option>'; if (t.opt.searchType == 1) { m+= '<OPTION value="play" '+ (Options.srcSortBy=='play'?'SELECTED':'') +'>'+uW.arStrings.Common.Player+'</option>'; m+= '<OPTION value="alli" '+ (Options.srcSortBy=='alli'?'SELECTED':'') +'>'+uW.arStrings.Common.Alliance+'</option>'; } m+= '</select></td></tr>\ <TR><TD class=xtab align=right>'+uW.arStrings.Common.Coordinates+' :</td><TD class=xtab><INPUT type=checkbox id=coordsOnly \></td></tr>\ </table></div><BR><SPAN id=srchSizeWarn></span><DIV id=BOpbSrcExp></div>'; } else { m+= '<TR><TD class=xtab align=right >'+uW.arStrings.MapHelper.Filter+' :</td><TD class=xtab align=left ><SELECT style="width: 135px" id=idSrchFilter>\ <OPTION value=0>'+uW.arStrings.Common.All+' '+uW.arStrings.Common.Cities+'</option>\ <OPTION value=1>'+uW.arStrings.Alliance.relationHostile+' '+uW.arStrings.Common.Cities+'</option>\ <OPTION value=2>'+translate('Misty cities only')+'</option>\ <OPTION value=3>'+uW.arStrings.Common.Alliance+' '+uW.arStrings.Common.Cities+'</option>\ <OPTION value=4>'+uW.arStrings.Alliance.relationFriendly+' '+uW.arStrings.Common.Cities+'</option>\ <OPTION value=5>'+uW.arStrings.Alliance.relationNeutral+' '+uW.arStrings.Common.Cities+'</option>\ <OPTION value=6>'+uW.arStrings.MarchReport.NoAlliance+' '+uW.arStrings.Common.Cities+'</option>\ </select></td></tr>'; m+= '<TR><TD class=xtab align=right>'+uW.arStrings.MapHelper.SortBy+' :</td><TD class=xtab><SELECT id=filSortBy>\ <OPTION value="might" '+ (Options.srcSortBy=='might'?'SELECTED':'') +'>'+uW.arStrings.Common.Glory+'</option>\ <OPTION value="dist" '+ (Options.srcSortBy=='dist'?'SELECTED':'') +'>'+uW.arStrings.Common.Distance+'</option>\ <OPTION value="play" '+ (Options.srcSortBy=='play'?'SELECTED':'') +'>'+uW.arStrings.Common.Player+'</option>\ <OPTION value="alli" '+ (Options.srcSortBy=='alli'?'SELECTED':'') +'>'+uW.arStrings.Common.Alliance+'</option>\ </select></td></tr>\ <tr><TD class=xtab align=right>'+translate('Min')+' '+uW.arStrings.Common.Glory+' :</td><TD class=xtab><select id=filPuissance>\ <option value="0" '+ (Options.filPuissance=='0'?'SELECTED':'') +'>0</option>\ <option value="10000" '+ (Options.filPuissance=='10000'?'SELECTED':'') +'>10 000</option>\ <option value="50000" '+ (Options.filPuissance=='50000'?'SELECTED':'') +'>50 000</option>\ <option value="100000" '+ (Options.filPuissance=='100000'?'SELECTED':'') +'>100 000</option>\ <option value="500000" '+ (Options.filPuissance=='500000'?'SELECTED':'') +'>500 000</option>\ <option value="1000000" '+ (Options.filPuissanceMax=='1000000'?'SELECTED':'') +'>1 million</option>\ <option value="2000000" '+ (Options.filPuissanceMax=='2000000'?'SELECTED':'') +'>2 millions</option>\ <option value="4000000" '+ (Options.filPuissanceMax=='4000000'?'SELECTED':'') +'>4 millions</option>\ <option value="5000000" '+ (Options.filPuissanceMax=='50000000'?'SELECTED':'') +'>5 millions</option>\ <option value="10000000" '+ (Options.filPuissance=='100000000'?'SELECTED':'') +'>10 millions</option>\ <option value="50000000" '+ (Options.filPuissance=='500000000'?'SELECTED':'') +'>50 millions</option>\ </select></td></tr>\ <tr><TD class=xtab align=right>'+uW.arStrings.Common.Max+' '+uW.arStrings.Common.Glory+' :</td><TD class=xtab><select id=filPuissanceMax>\ <option value="100000" '+ (Options.filPuissanceMax=='100000'?'SELECTED':'') +'>100 000</option>\ <option value="500000" '+ (Options.filPuissanceMax=='500000'?'SELECTED':'') +'>500 000</option>\ <option value="1000000" '+ (Options.filPuissanceMax=='1000000'?'SELECTED':'') +'>1 million</option>\ <option value="2000000" '+ (Options.filPuissanceMax=='2000000'?'SELECTED':'') +'>2 millions</option>\ <option value="4000000" '+ (Options.filPuissanceMax=='4000000'?'SELECTED':'') +'>4 millions</option>\ <option value="5000000" '+ (Options.filPuissanceMax=='50000000'?'SELECTED':'') +'>5 millions</option>\ <option value="10000000" '+ (Options.filPuissanceMax=='100000000'?'SELECTED':'') +'>10 millions</option>\ <option value="50000000" '+ (Options.filPuissanceMax=='50000000'?'SELECTED':'') +'>50 millions</option>\ <option value="100000000" '+ (Options.filPuissanceMax=='100000000'?'SELECTED':'') +'>100 millions</option>\ <option value="900000000" '+ (Options.filPuissanceMax=='900000000'?'SELECTED':'') +'>900 millions</option>\ </select></td></tr>\ <tr><TD class=xtab align=right>'+uW.arStrings.Common.Alliance+' '+translate('content')+' :</td><td class=xtab><input type=text size=10 id=filfiltreAlliance value="'+Options.filfiltreAlliance+'"></td></tr>\ <tr><TD class=xtab align=right>'+uW.arStrings.Common.Player+' '+translate('content')+' :</td><td class=xtab><input type=text size=10 id=filfiltreJoueur value="'+Options.filfiltreJoueur+'"></td></tr>\ <TR style="display:none;"><TD class=xtab align=right>'+uW.arStrings.Common.Coordinates+' :</td><TD class=xtab><INPUT type=checkbox id=coordsOnly \></td></tr>\ </table></div><BR><SPAN id=srchSizeWarn></span>'; } document.getElementById('divOutOpts').innerHTML = m; if (t.opt.searchType == 1 || t.opt.searchType == 0) { document.getElementById('filMinLvl').addEventListener ('change', function (){ Options.srcMinLevel = document.getElementById('filMinLvl').value; saveOptions(); t.dispMapTable (); }, false); document.getElementById('filMaxLvl').addEventListener ('change', function (){ Options.srcMaxLevel = document.getElementById('filMaxLvl').value; saveOptions(); t.dispMapTable (); }, false); } document.getElementById('filSortBy').addEventListener ('change', function (){ Options.srcSortBy = document.getElementById('filSortBy').value; saveOptions(); t.dispMapTable (); }, false); document.getElementById('coordsOnly').addEventListener ('change', function (){ t.dispMapTable (); }, false); if (t.opt.searchType == 1){ document.getElementById('foodWild').addEventListener ('change', function(){ Options.foodWild = document.getElementById('foodWild').checked; saveOptions(); t.dispMapTable (); }, false); document.getElementById('hillWild').addEventListener ('change', function(){ Options.hillWild = document.getElementById('hillWild').checked; saveOptions(); t.dispMapTable(); }, false); document.getElementById('mtnWild').addEventListener ('change', function(){ Options.mtnWild = document.getElementById('mtnWild').checked; saveOptions(); t.dispMapTable(); }, false); document.getElementById('plnWild').addEventListener ('change', function(){ Options.plnWild = document.getElementById('plnWild').checked; saveOptions(); t.dispMapTable(); }, false); document.getElementById('woodWild').addEventListener ('change', function(){ Options.woodWild = document.getElementById('woodWild').checked; saveOptions(); t.dispMapTable (); }, false); document.getElementById('filUnowned').addEventListener ('change', function (){ Options.unownedOnly = (document.getElementById('filUnowned').checked); saveOptions(); t.dispMapTable (); }, false); } if (t.opt.searchType == 2){ document.getElementById('idSrchFilter').addEventListener ('change', function (){ Options.citySrchFilter = (document.getElementById('idSrchFilter').value); saveOptions(); t.dispMapTable (); }, false); document.getElementById('idSrchFilter').value = Options.citySrchFilter; document.getElementById('filfiltreAlliance').addEventListener ('keyup', function (){ Options.filfiltreAlliance = document.getElementById('filfiltreAlliance').value; saveOptions(); t.dispMapTable (); }, false); document.getElementById('filfiltreJoueur').addEventListener ('keyup', function (){ Options.filfiltreJoueur = document.getElementById('filfiltreJoueur').value; saveOptions(); t.dispMapTable (); }, false); document.getElementById('filPuissance').addEventListener ('change', function (){ Options.filPuissance = parseInt(document.getElementById('filPuissance').value); saveOptions(); t.dispMapTable (); }, false); document.getElementById('filPuissanceMax').addEventListener ('change', function (){ Options.filPuissanceMax = parseInt(document.getElementById('filPuissanceMax').value); saveOptions(); t.dispMapTable (); }, false); } t.mapDat = []; t.firstX = t.opt.startX - t.opt.maxDistance; if (t.firstX<0) t.firstX=0; t.lastX = t.opt.startX + t.opt.maxDistance; if (t.lastX>800) t.lastX=800; t.firstY = t.opt.startY - t.opt.maxDistance; if (t.firstY<0) t.firstY=0; t.lastY = t.opt.startY + t.opt.maxDistance; if (t.lastY>800) t.lastY=800; t.tilesSearched = 0; t.tilesFound = 0; t.curX = t.firstX; t.curY = t.firstY; var xxx = t.normalizeCoord(t.curX); var yyy = t.normalizeCoord(t.curY); document.getElementById ('statStatus').innerHTML = uW.arStrings.Common.Research+' '+ xxx +','+ yyy; setTimeout (function(){ Map.request (xxx, yyy, 15, t.mapCallback) }, 500); }, normalizeCoord : function (x){ if ( x >= 800) x = 800; else if (x < 0) x = 0; return parseInt (x/5) * 5; }, mapCallback : function (left, top, width, rslt){ function insertRow (x, y, msg){ row = document.getElementById('srcOutTab').insertRow(-1); row.insertCell(0).innerHTML = x +','+ y; row.insertCell(1).innerHTML = distance (t.opt.startX, t.opt.startY, x, y); row.insertCell(2).innerHTML = msg; } var t = my.Search; if (!t.searchRunning) return; if (!rslt.ok){ t.stopSearch ('ERROR : '+ rslt.errorMsg); return; } map = rslt.data; var userInfo = rslt.userInfo; var alliance = rslt.allianceNames; for (k in map){ if (t.opt.searchType==0 && map[k].tileType==51 && map[k].tileCityId==0 && map[k].tileUserId==0) { // if barb type = 0; } else if (t.opt.searchType==1 && map[k].tileType>=10 && map[k].tileType<=50) { if (map[k].tileType == 10) type = 1; else if (map[k].tileType == 11) type = 2; else if (map[k].tileType == 12) type = 2; else type = (map[k].tileType/10) + 1; } else if (t.opt.searchType==2 && map[k].tileCityId >= 0 && map[k].tileType > 50 && map[k].cityName) { type = 7; } else { continue; } dist = distance (t.opt.startX, t.opt.startY, map[k].xCoord, map[k].yCoord); if (dist <= t.opt.maxDistance && dist >= t.opt.maxDistanceA){ if (t.opt.searchType==2) { var isMisted = map[k].tileUserId == 0 || false; var uu = 'u'+map[k].tileUserId; var aU = 'unknown'; var aD = 'unknown'; var mightU = 0; var nameU = 'unknown'; if (isMisted) { nameU = 'Mist'; mightU = 0; } else { if (userInfo[uu] ) { // Corrects a problem with hung search. nameU = ""+ userInfo[uu].n +""; mightU = userInfo[uu].m; aD = getDiplomacy2(userInfo[uu].a); if ( alliance && alliance['a'+userInfo[uu].a] ) { aU = alliance['a'+userInfo[uu].a]; } else { aU = '----'; aD = translate('Unaligned'); } } } t.mapDat.push ([map[k].xCoord, map[k].yCoord, dist, type, map[k].tileLevel, isMisted, map[k].tileCityId, map[k].tileUserId, map[k].cityName,nameU,mightU,aU,aD ]); } else { isOwned = map[k].tileUserId>0 || map[k].misted; var uu = 'u'+map[k].tileUserId; var aU = 'unknown'; var aD = 'unknown'; var nameU = 'unknown'; var mightU = 0; if (map[k].misted) { nameU = 'Under the Mist'; }else { if (userInfo[uu] ) { var nameU = "<a onclick=getInfoForAnUser('"+ map[k].tileUserId +"');>"+ userInfo[uu].n +"</a>"; mightU = userInfo[uu].m; aD = getDiplomacy2(userInfo[uu].a); if ( alliance && alliance['a'+userInfo[uu].a] ) { aU = alliance['a'+userInfo[uu].a]; } }else { var nameU = 'unknown'; } } if (isOwned==undefined) isOwned=false; t.mapDat.push ([map[k].xCoord, map[k].yCoord, dist, type, map[k].tileLevel, isOwned, map[k].tileCityId, map[k].tileUserId, map[k].cityName, nameU, mightU, aU, aD]); } ++t.tilesFound; } } t.tilesSearched += (15*15); document.getElementById('statSearched').innerHTML = uW.arStrings.Alliance.SearchResults+' : '+ t.tilesSearched; t.dispMapTable(); t.curX += 15; if (t.curX > t.lastX){ t.curX = t.firstX; t.curY += 15; if (t.curY > t.lastY){ t.stopSearch (translate('SEARCH FINISHED')+' !'); return; } } // t.opt.maxDistanceA if (t.opt.maxDistanceA>0) { var plagedeX=t.opt.startX-t.opt.maxDistanceA; var plageaX=t.opt.startX+t.opt.maxDistanceA; var plagedeY=t.opt.startY-t.opt.maxDistanceA; var plageaY=t.opt.startY+t.opt.maxDistanceA; if (t.curX > plagedeX && t.curX < plageaX) { var nb = parseInt( (t.opt.maxDistanceA*2) / 15) -1; t.curX = t.curX + (nb*15); } if (t.curY > plagedeY && t.curY < plageaY) { var nb = parseInt( (t.opt.maxDistanceA*2) / 15) -1; t.curY = t.curY + (nb*15); } } var x = t.normalizeCoord(t.curX); var y = t.normalizeCoord(t.curY); document.getElementById ('statStatus').innerHTML = uW.arStrings.Common.Research+' '+ x +','+ y; setTimeout (function(){Map.request (x, y, 15, t.mapCallback)}, 500); }, dispMapTable : function (){ var tileNames = [uW.arStrings.Common.BarbarianCamp, uW.arStrings.Common.Grassland, uW.arStrings.Common.River, uW.arStrings.Common.Woods, uW.arStrings.Common.Hills, uW.arStrings.Common.Mountain, uW.arStrings.Common.Plain, uW.arStrings.Common.Cities ]; var t = my.Search; var coordsOnly = document.getElementById('coordsOnly').checked; function mySort(a, b){ if (Options.srcSortBy == 'level'){ if ((x = a[4] - b[4]) != 0) return x; } if (Options.srcSortBy == 'might'){ if ((x = b[10] - a[10]) != 0) return x; } if (Options.srcSortBy == 'alli'){ if (a[11] < b[11]) return -1; else if (a[11] == b[11]) return 0; else return 1; } if (Options.srcSortBy == 'play'){ if (a[9] < b[9]) return -1; else if (a[9] == b[9]) return 0; else return 1; } return a[2] - b[2]; } dat = []; for (i=0; i<t.mapDat.length; i++){ lvl = parseInt (t.mapDat[i][4]); type = t.mapDat[i][3]; Glory = t.mapDat[i][10]; if (t.opt.searchType == 2 && type == 7 ) { switch(parseInt (Options.citySrchFilter)) { case 0: if (Options.filPuissance<=Glory && Glory<=Options.filPuissanceMax) { dat.push(t.mapDat[i]); } break; case 1: if ((t.mapDat[i][12] == uW.arStrings.Alliance.relationHostile) && (Options.filPuissance<=Glory && Glory<=Options.filPuissanceMax)) { dat.push(t.mapDat[i]); } break; case 2: if ((t.mapDat[i][5]===true) && (Options.filPuissance<=Glory && Glory<=Options.filPuissanceMax)) { dat.push(t.mapDat[i]); } break; case 3: if ((t.mapDat[i][12] == 'Ally') && (Options.filPuissance<=Glory && Glory<=Options.filPuissanceMax)) { dat.push(t.mapDat[i]); } break; case 4: if ((t.mapDat[i][12] == uW.arStrings.Alliance.relationFriendly) && (Options.filPuissance<=Glory && Glory<=Options.filPuissanceMax)) { dat.push(t.mapDat[i]); } break; case 5: if ((t.mapDat[i][12] == uW.arStrings.Alliance.relationNeutral) && (Options.filPuissance<=Glory && Glory<=Options.filPuissanceMax)) { dat.push(t.mapDat[i]); } break; case 6: if ((t.mapDat[i][12] == translate('Unaligned')) && (Options.filPuissance<=Glory && Glory<=Options.filPuissanceMax)) { dat.push(t.mapDat[i]); } break; } } else { if (lvl>=Options.srcMinLevel && lvl<=Options.srcMaxLevel){ if (t.opt.searchType==0 || (Options.woodWild==1 && type == 3) || (Options.hillWild==1 && type ==4) || (Options.mtnWild==1 && type==5) || (Options.plnWild==1 && type == 6) || (Options.foodWild==1 && (type==1 || type==2))) if (!Options.unownedOnly || t.mapDat[i][5]===false) dat.push (t.mapDat[i]); } } } document.getElementById('statFound').innerHTML = uW.arStrings.Alliance.SearchResults+' : '+ dat.length; if (dat.length == 0){ m = '<BR><CENTER>'+translate('Not found')+'</center>'; } else { dat.sort(mySort); if (coordsOnly) m = '<TABLE align=center id=srcOutTab cellpadding=2 cellspacing=0 style="padding:2px"><TR style="font-weight: bold"><TD style="padding:2px">'+uW.arStrings.Common.Coordinates+'</td></tr>'; else { if (t.opt.searchType == 0) { m = '<TABLE id=srcOutTab cellpadding=2 cellspacing=0 style="padding:2px"><TR style="font-weight: bold"><TD style="padding:2px">'+uW.arStrings.Common.Coordinates+'</td><TD style="padding:2px;padding-left: 10px">'+uW.arStrings.Common.Distance+'</td><TD style="padding-left: 10px;">'+uW.arStrings.Common.Level+'</td><TD style="padding-left: 10px;">'+uW.arStrings.Common.Type+'</td></tr>'; } if (t.opt.searchType == 1) { m = '<TABLE id=srcOutTab cellpadding=2 cellspacing=2 style="padding:2px"><TR style="font-weight: bold"><TD style="padding:2px">'+uW.arStrings.Common.Coordinates+'</td><TD style="padding:2px;padding-left: 10px">'+uW.arStrings.Common.Distance+'</td><TD style="padding-left: 10px;">'+uW.arStrings.Common.Level+'</td><TD style="padding-left: 10px;">'+uW.arStrings.Common.Type+'</td><TD style="padding-left: 10px;">'+uW.arStrings.Common.Player+'</td><td style="padding-left: 10px;">'+uW.arStrings.Common.Glory+'</td><td style="padding-left: 10px;">'+uW.arStrings.Common.Alliance+'</td><td style="padding-left: 10px;" colspan=2>'+translate('More Info')+'</td></tr>'; } if (t.opt.searchType == 2) { m = '<TABLE id=srcOutTab cellpadding=2 cellspacing=2 style="padding:2px" width=100%><TR style="font-weight: bold"><TD style="padding:2px">'+uW.arStrings.Common.Coordinates+'</td><TD style="padding:2px;padding-left: 10px">'+uW.arStrings.Common.Distance+'</td><TD style="padding-left: 10px;">'+uW.arStrings.Common.City+'</td><TD style="padding-left: 10px;">'+uW.arStrings.Common.Player+'</td><TD style="padding-left: 10px;">'+uW.arStrings.Common.Glory+'</td><td style="padding-left: 10px;">'+uW.arStrings.Common.Alliance+'</td><td style="padding-left: 10px;" colspan=2>'+translate('More info')+'</td><td colspan=3 width=20% style="padding-left: 10px;">'+uW.arStrings.Common.Attack+'</td></tr>'; } } var numRows = dat.length; if (numRows > 1000 && t.searchRunning){ // numRows = 1000; document.getElementById('srchSizeWarn').innerHTML = '<FONT COLOR=#600000>'+translate('NOTE : WARNING, there is no limitation to the search, but this can have consequences on the performance of your browser')+'.</font>'; } for (i=0; i<numRows; i++){ if ((t.opt.searchType != 2) || (dat[i][11].search(Options.filfiltreAlliance, "i") != -1 && dat[i][9].search(Options.filfiltreJoueur, "i") != -1 && t.opt.searchType == 2) ) { m += '<TR valign="top"'; if (dat[i][12]) m += 'class="'+dat[i][12]+'"'; if (coordsOnly) { m += ' ><TD valign="top" style="padding:2px"><DIV><a href="javascript:void(0);" onclick="KB.Controllers.MapHelper.gotoCoord('+ dat[i][0] +','+ dat[i][1] +');">'+ dat[i][0] +','+ dat[i][1] +'</a></div></td></tr>'; } else { m += ' ><TD valign="top" style="padding:2px"><DIV>\ <a href="javascript:void(0);" onclick="KB.Controllers.MapHelper.gotoCoord('+ dat[i][0] +','+ dat[i][1] +');">'+ dat[i][0] +','+ dat[i][1] +'</a></div>'; m += '</td>'; if (t.opt.searchType == 2) { m += '<TD align="left" style="padding:2px" valign="top">'+ dat[i][2].toFixed(2) +'</a></td><TD align=left style="padding:2px">'+ dat[i][8] +'</td>\ <TD valign="top" style="padding:2px">'+dat[i][9]+'</td>\ <TD valign="top" style="padding:2px">'+addCommasInt(dat[i][10])+'</td>\ <td style="padding:2px">'+dat[i][11]+'</td><td style="padding:2px">'; if (dat[i][5]) { } else { m+='<DIV style="" onclick="BOPCpo2(this, '+ dat[i][7] +')"><A style="font-size:9px;">'+uW.arStrings.Common.Status+'</a></div></td>\ <td style="padding:2px"></div>'; } m+= '</td>'; m+= '<td style="padding-left: 10px;"><a href="javascript:void(0)" onclick="BOSaveAttack('+ dat[i][0] +','+ dat[i][1] +',2,0);">'+uW.arStrings.Common.Save_Button+'</a></td><td align=right style="padding-left: 10px;"><span title="'+translate('Last Attack')+'">'+t.findlastattack(dat[i][0],dat[i][1])+'</span></td>'; m+= '</tr>'; } else { m += '<TD align=right valign="top" style="padding:2px">'+ dat[i][2].toFixed(2) +' </td><TD align=right>'+ dat[i][4] +'</td><TD> '+ translate(tileNames[dat[i][3]]); m +='</td>'; if (t.opt.searchType == 1) { if (dat[i][5]) { m += '<td style="padding:2px">'+dat[i][9]+'<td>'+addCommasInt(dat[i][10])+'</td><td>'+dat[i][11]+'</td>'; if (dat[i][7] && dat[i][7]!=0) { m+='<td style="padding:2px"><DIV style="" onclick="BOPCpo2(this, '+ dat[i][7] +')"><A style="font-size:9px;">'+uW.arStrings.Common.Status+'</a></div></td><td colspan=4>-</div></td>'; } else { m+='<td style="padding:2px"> </td><td> </td>'; } } else { m +='<td colspan=5 style="text-align=center"><i><b>'+translate('free')+'...</b></i>'; m +='<td style="padding-left: 10px;"><a href="javascript:void(0)" onclick="BOSaveAttack('+ dat[i][0] +','+ dat[i][1] +',1,'+ dat[i][4]+');">'+uW.arStrings.Common.Save_Button+'</a></td><td align=right style="padding-left: 10px;"><span title="'+translate('Last Attack')+'">'+t.findlastattack(dat[i][0],dat[i][1])+'</span></td>'; } }else{ m+="<td></td>"; m+='<td style="padding-left: 10px;"><a href="javascript:void(0)" onclick="BOSaveAttack('+ dat[i][0] +','+ dat[i][1] +',3,'+ dat[i][4]+');">'+uW.arStrings.Common.Save_Button+'</a></td><td align=right style="padding-left: 10px;"><span title="'+translate('Last Attack')+'">'+t.findlastattack(dat[i][0],dat[i][1])+'</span></td>'; } m +='</tr>'; } } } } m += '</table>'; } document.getElementById('divOutTab').innerHTML = m; dat = null; }, mapDat : [], stopSearch : function (msg){ var t = my.Search; document.getElementById ('statStatus').innerHTML = '<FONT color=#ffaaaa>'+ msg +'</font>'; document.getElementById ('srcStart').value = uW.arStrings.MainChrome.StartResearch; document.getElementById('srchSizeWarn').innerHTML = ''; t.searchRunning = false; } } function distance (d, f, c, e) { var a = 800; var g = a / 2; var b = Math.abs(c - d); if (b > g) b = a - b; var h = Math.abs(e - f); if (h > g) h = a - h; return Math.round(100 * Math.sqrt(b * b + h * h)) / 100; }; function getDiplomacy2 (aid) { if (unsafeWindow.seed.allianceDiplomacies == null) return uW.arStrings.Alliance.relationNeutral; if (unsafeWindow.seed.allianceDiplomacies.friendly && unsafeWindow.seed.allianceDiplomacies.friendly['a'+aid] != null) return uW.arStrings.Alliance.relationFriendly; if (unsafeWindow.seed.allianceDiplomacies.hostile && unsafeWindow.seed.allianceDiplomacies.hostile['a'+aid] != null) return uW.arStrings.Alliance.relationHostile; if (aid == unsafeWindow.seed.allianceDiplomacies.allianceId) return uW.arStrings.Common.Alliance; return uW.arStrings.Alliance.relationNeutral; }; Map = { generateBlockList : function(left, top, width) { var width5 = parseInt(width / 5); var bl = []; for (x=0; x<width5; x++){ xx = left + (x*5); if (xx > 795) xx = 800-5; for (y=0; y<width5; y++){ yy = top + (y*5); if (yy > 795) yy = 800-5; bl.push ('bl_'+ xx +'_bt_'+ yy); } } return bl.join(","); }, callback : null, request : function (left, top, width, cb) { left = parseInt(left / 5) * 5; top = parseInt(top / 5) * 5; width = parseInt((width+4) / 5) * 5; var blockString = this.generateBlockList(left, top, width); Map.callback = cb; var c={blocks:blockString} unsafeWindow.AjaxCall.gPostRequest("fetchMapTiles.php", c, function(rslt) { Map.callback(left, top, width, rslt); }, function (rslt) { Map.callback(left, top, width, rslt); } ); } }; /************************ TRAIN ************************/ my.Train = { cont : null, timer : null, state : null, stats : {}, selectedCity : {}, init : function (){ var t = my.Train; t.cont = document.createElement('div'); return t.cont; }, getContent : function (){ var t = my.Train; return t.cont; }, hide : function (){ var t = my.Train; clearTimeout (t.timer); }, cancelTrainingBO : function (i,cityId,typetrn,numtrptrn,p5,p6,p7,trainingId) { var t = my.Train; Cities.byID[cityId].c.queues.training.slot(i).cancel(function(){ unsafeWindow.Barracks.renderBarracksQueue() t.dispTrainStatus ('<font color=#550000><B>'+translate('Cancel the training')+'</b></font><BR>'); t.displayCityStats(); }) }, show : function (){ var t = my.Train; clearTimeout (t.timer); if (t.state == null){ unsafeWindow.BOcancelTraining = t.cancelTrainingBO; s = "<DIV id=trainTopSelect>\ <DIV class=ptstat>"+unsafeWindow.arStrings.MainChrome.TrainTroops+"</div><DIV style='height:10px'></div><DIV class=ptentry>\ <DIV style='text-align:center; margin-bottom:10px;'>"+uW.arStrings.Common.City+" : <span id=ptspeedcity></span></div>\ <TABLE class=ptTab width=100%><TR valign=top><TD width=100%>\ <TABLE align=center><TR><TD align=right>"+uW.arStrings.Common.Troops+' '+uW.arStrings.Common.Type+" : </td><TD colspan=2>\ <SELECT id=ptttType>"; unsafeWindow.Barracks.allUnitIds.each(function(r){ if (unsafeWindow.arStrings.unitName["u"+r]) { s+="<option value="+r+">"+unsafeWindow.arStrings.unitName["u"+r]+"</option>"; } }); s+="</select> ("+uW.arStrings.Common.Max+" <span id=ptttSpMax></span>)</td></tr>\ <TR><TD align=right>"+translate('Number of troops per slot')+" : </td><TD><INPUT id='ptttInpPS' size=5 type='text' value='0'\></td>\ <TD><INPUT id='ptttButMaxPS' type=submit value='"+uW.arStrings.Common.Max+"'\> ("+uW.arStrings.Common.Max+" <span id=ptttSpMaxPS>0</span>)</td></tr>\ <TR><TD align=right>"+translate('Number of slots')+" : </td><TD><INPUT id='ptttInpSlots' size=2 type='text' value='1'\></td>\ <TD width=75%><INPUT id='ptttButMaxSlots' type=submit value='"+uW.arStrings.Common.Max+"'\> ("+uW.arStrings.Common.Max+" <span id=ptttSpMaxSlots>1</span>)</td></tr>\ <TR><TD colspan=3 align=center><DIV style='height:10px'></div><INPUT id='ptttButDo' type=submit value='"+uW.arStrings.Common.Train+"'\></td></tr>\ </table></td></tr></table></div></div>\ <TABLE align=center width=425 class=ptTab><TR><TD><div id=ptTrainStatus style='overflow-y:auto; max-height:78px; height: 78px;'></div></td></tr></table>\ <div style='height: 325px; background: #e8ffe8'>\ <TABLE width=100% class=ptTab><TR><TD colspan=3><DIV id=divSTtop></div></td></tr>\ <TR><TD width=50% style='padding-left:15px; padding-right:15px'><DIV style='text-align:center'><B>"+translate('Queue')+" (<SPAN id=statTTtot></span>)</b><BR><HR></div><DIV id=divSTleft style='overflow-y: auto; height:210px; max-height:210px'></div></td>\ <TD width=50% style='padding-left:15px; padding-right:15px'><DIV style='text-align:center'><B>"+translate('Queue')+" (<SPAN id=statDTtot></span>)</b><BR><HR></div><DIV id=divSTright style='overflow-y: auto; height:210px; max-height:210px'></div></td></tr>\ </div>"; t.cont.innerHTML = s; var dcp = new CdispCityPicker ('ptspeed', document.getElementById('ptspeedcity'), true, t.clickCitySelect, 0); t.TTspMax = document.getElementById ('ptttSpMax'); t.TTspMaxPS = document.getElementById ('ptttSpMaxPS'); t.TTspMaxSlots = document.getElementById ('ptttSpMaxSlots'); t.TTbutMaxSlots = document.getElementById ('ptttButMaxSlots'); t.TTbutMaxPerSlot = document.getElementById ('ptttButMaxPS'); t.TTinpPerSlot = document.getElementById ('ptttInpPS'); t.TTinpSlots = document.getElementById ('ptttInpSlots'); t.TTselType = document.getElementById ('ptttType'); t.TTbutDo = document.getElementById ('ptttButDo'); t.divTrainStatus = document.getElementById ('ptTrainStatus'); t.TTinpSlots.addEventListener ('change', t.updateTopTroops, false); t.TTbutMaxPerSlot.addEventListener ('click', t.clickTroopMaxPS, false); t.TTbutMaxSlots.addEventListener ('click', t.clickTroopMaxSlots, false); t.TTselType.addEventListener ('change', t.changeTroopSelect, false); t.TTbutDo.addEventListener ('click', t.clickTroopDo, false); t.changeTroopSelect(); t.state = 1; } if (t.lastTroopSelect != t.TTselType.value) t.changeTroopSelect(); t.displayCityStats(); t.updateTopTroops (); t.timer = setTimeout (t.show, 5000); }, updateTopTroops : function (){ var t = my.Train; var slots = parseInt(t.TTinpSlots.value, 10); if (isNaN(slots) || slots<0) slots = 0; t.TTspMax.innerHTML = t.stats.MaxTrain; t.TTspMaxSlots.innerHTML = t.stats.barracks - t.stats.queued; if (slots<1 || (t.stats.barracks-t.stats.queued < 1)) t.TTspMaxPS.innerHTML = 0; else t.TTspMaxPS.innerHTML = parseInt(t.stats.MaxTrain / slots); }, clickTroopMaxPS : function (){ var t = my.Train; var slots = parseInt(t.TTinpSlots.value, 10); if (slots<1 || (t.stats.barracks-t.stats.queued < 1)) t.TTinpPerSlot.value = 0; else t.TTinpPerSlot.value = parseInt(t.stats.MaxTrain / slots); }, clickTroopMaxSlots : function (){ var t = my.Train; t.TTinpSlots.value = t.stats.barracks - t.stats.queued; }, clickCitySelect : function (city){ var t = my.Train; t.selectedCity = city; var SourceId = t.selectedCity.c.id; unsafeWindow.Chrome.City.switchTo(SourceId); t.lastQueString = null; //t.lastDQueString = null; t.displayCityStats (); t.changeTroopSelect(); //t.changeDefSelect(); }, changeTroopSelect : function (){ var t = my.Train; var cityId = t.selectedCity.id; // unitcost: NAME, Food, Wood, Stone, Ore, Gold, Pop, ? var id = t.TTselType.value; t.lastTroopSelect = id; var uc = unsafeWindow.trainingData["unit"+id].costs.level0; var max = 9999999999; if ( (t.stats.food / uc["resource1"]) < max) max = t.stats.food / uc["resource1"]; if ( (t.stats.wood / uc["resource2"]) < max) max = t.stats.wood / uc["resource2"]; if ( (t.stats.stone / uc["resource3"]) < max) max = t.stats.stone / uc["resource3"]; if ( (t.stats.ore / uc["resource4"]) < max) max = t.stats.ore / uc["resource4"]; if ( (t.stats.idlePop / uc.population) < max) max = t.stats.idlePop / uc.population; t.stats.MaxTrain = parseInt (max); if (t.stats.MaxTrain < 0) t.stats.MaxTrain = 0; /* if (matTypeof(uc[8]) == 'object'){ for (k in uc[8]){ // check building requirement var b = getCityBuilding (cityId, k.substr(1)); if (b.maxLevel < uc[8][k][1]){ t.stats.MaxTrain = 0; break; } } } if (matTypeof(uc[9]) == 'object'){ for (k in uc[9]){ // check tech requirement if (parseInt(Seed.tech['tch'+k.substr(1)]) < uc[9][k][1]){ t.stats.MaxTrain = 0; break; } } }*/ t.updateTopTroops(); }, clickTroopDo : function (){ var t = my.Train; var cityId = t.selectedCity.id; var unitId = t.TTselType.value; var perSlot = parseInt(t.TTinpPerSlot.value, 10); var numSlots = parseInt(t.TTinpSlots.value, 10); t.displayCityStats (); if (perSlot<1){ t.divTrainStatus.innerHTML = '<FONT COLOR=#550000>'+translate('Number of troops per slot must be greater than')+' 0.</font>'; return; } if (perSlot*numSlots > t.stats.MaxTrain){ t.divTrainStatus.innerHTML = '<FONT COLOR=#550000>'+translate('Cannot train that many troops')+' ('+translate('max is')+' '+ t.stats.MaxTrain +' '+translate('total')+')</font>'; return; } if (numSlots<1 || numSlots>t.stats.barracks - t.stats.queued){ t.divTrainStatus.innerHTML = '<FONT COLOR=#550000>'+translate('Invalid number of slots')+'.</font>'; return; } t.setBusy(true); var que = []; for (var i=0; i<numSlots; i++) que.push (['T', unitId, parseInt (perSlot)]); t.divTrainStatus.innerHTML = ''; t.doQueue (cityId, que); }, /******* DEF ******/ updateTopDef : function (){ var t = my.Train; var slots = parseInt(t.TDinpSlots.value, 10); if (isNaN(slots) || slots<0) slots = 0; t.TDspMax.innerHTML = uW.arStrings.Common.Max+':'+ t.stats.MaxDefTrain +' owned:'+ t.stats.defOwned; t.TDspMaxSlots.innerHTML = t.stats.wallLevel-t.stats.Dqueued; if (slots<1) t.TDspMaxPS.innerHTML = 0; else t.TDspMaxPS.innerHTML = parseInt(t.stats.MaxDefTrain / slots); t.TDspSpace.innerHTML = 'Wall level: <B>'+ t.stats.wallLevel +'</b><BR>Wall space: '+ (t.stats.wallSpaceUsed+t.stats.wallSpaceQueued) +'/<B>'+ t.stats.wallSpace +'</b><BR>\ Field space: '+ (t.stats.fieldSpaceUsed+t.stats.fieldSpaceQueued) +'/<B>'+ t.stats.fieldSpace +'</b>'; }, changeDefSelect : function (){ var t = my.Train; var cityId = t.selectedCity.id; // unitcost: NAME, Food, Wood, Stone, Ore, Gold, Pop, ? var id = t.TDselType.value; t.lastDefSelect = id; t.stats.defOwned = parseInt(Seed.fortifications['city' + cityId]['fort'+id]); var uc = unsafeWindow.fortcost['frt'+id]; var max = 9999999999; if ( (t.stats.food / uc[1]) < max) max = t.stats.food / uc[1]; if ( (t.stats.wood / uc[2]) < max) max = t.stats.wood / uc[2]; if ( (t.stats.stone / uc[3]) < max) max = t.stats.stone / uc[3]; if ( (t.stats.ore / uc[4]) < max) max = t.stats.ore / uc[4]; if ( (t.stats.idlePop / uc[6]) < max) max = t.stats.idlePop / uc[6]; t.stats.MaxDefTrain = parseInt (max); if (t.stats.MaxDefTrain < 0) t.stats.MaxDefTrain = 0; if (matTypeof(uc[8]) == 'object'){ for (k in uc[8]){ // check building requirement var b = getCityBuilding (cityId, k.substr(1)); if (b.maxLevel < uc[8][k][1]){ t.stats.MaxDefTrain = 0; break; } } } if (matTypeof(uc[9]) == 'object'){ for (k in uc[9]){ // check tech requirement if (parseInt(Seed.tech['tch'+k.substr(1)]) < uc[9][k][1]){ t.stats.MaxDefTrain = 0; break; } } } var spaceEach = parseInt(unsafeWindow.fortstats["unt"+ id][5]); if (id<60) var spaceAvail = t.stats.wallSpace - t.stats.wallSpaceUsed - t.stats.wallSpaceQueued; else var spaceAvail = t.stats.fieldSpace - t.stats.fieldSpaceUsed - t.stats.fieldSpaceQueued; if ( t.stats.MaxDefTrain * spaceEach > spaceAvail) t.stats.MaxDefTrain = parseInt(spaceAvail / spaceEach); t.updateTopDef(); }, clickDefMaxPS : function (){ var t = my.Train; var slots = parseInt(t.TDinpSlots.value, 10); if (slots<1) t.TDinpPerSlot.value = 0; else t.TDinpPerSlot.value = parseInt(t.stats.MaxDefTrain / slots); }, clickDefMaxSlots : function (){ var t = my.Train; t.TDinpSlots.value = t.stats.wallLevel-t.stats.Dqueued; }, clickDefDo : function (){ var t = my.Train; var cityId = t.selectedCity.id; var unitId = t.TDselType.value; var perSlot = parseInt(t.TDinpPerSlot.value, 10); var numSlots = parseInt(t.TDinpSlots.value, 10); t.displayCityStats (); if (perSlot<1){ t.divTrainStatus.innerHTML = '<FONT COLOR=#550000>'+translate('Number of units per slot must be greater than')+' 0.</font>'; return; } if (perSlot*numSlots > t.stats.MaxDefTrain){ t.divTrainStatus.innerHTML = '<FONT COLOR=#550000>'+translate('Cannot train that many troops')+' ('+translate('max is')+' '+ t.stats.MaxDefTrain +' '+translate('total')+')</font>'; return; } if (numSlots<1 || numSlots > t.stats.wallLevel-t.stats.Dqueued){ t.divTrainStatus.innerHTML = '<FONT COLOR=#550000>'+translate('Invalid number of slots')+'.</font>'; return; } t.setBusy(true); var que = []; for (var i=0; i<numSlots; i++) que.push (['T', unitId, parseInt (perSlot)]); t.divTrainStatus.innerHTML = ''; t.doDefQueue (cityId, que); }, doDefQueue : function (cityId, que, errMsg){ var t = my.Train; try { t.displayCityStats(); if (errMsg){ t.dispTrainStatus ('<font color=#550000><B>ERROR: '+ errMsg +'</b></font><BR>'); t.setBusy(false); return; } var cmd = que.shift(); if (!cmd){ t.dispTrainStatus ('<B>'+translate('Done queueing defenses')+'.</b><BR>'); t.setBusy(false); return; } if (cmd[0] == 'T'){ t.dispTrainStatus (translate('Training')+' '+ cmd[2] +' '+ fortNamesShort[cmd[1]] +'<BR>'); doDefTrain (cityId, cmd[1], cmd[2], function(errMsg){my.Train.doDefQueue(cityId, que, errMsg);} ); } } catch (err) { //logit (inspect (err, 8, 1)); t.dispTrainStatus ('<font color=#550000>PROGRAM ERROR: '+ err.message +'</font><BR>'); t.setBusy(false); } }, setBusy : function (tf){ var t = my.Train; //t.TDbutDo.disabled = tf; t.TTbutDo.disabled = tf; }, displayCityStats : function (){ var t = my.Train; var cityId = t.selectedCity.id; t.stats.food = parseInt (Cities.byID[cityId].c.resources[1].count); t.stats.wood = parseInt (Cities.byID[cityId].c.resources[2].count); t.stats.stone = parseInt (Cities.byID[cityId].c.resources[3].count); t.stats.ore = parseInt (Cities.byID[cityId].c.resources[4].count); t.stats.gold = parseInt (Cities.byID[cityId].c.silver()); t.stats.idlePop = parseInt(Cities.byID[cityId].c.population.count()) - parseInt(Cities.byID[cityId].c.population.labor()); var c=(parseInt(unsafeWindow.Building.getLevelsSumForType(unsafeWindow.Constant.Building.BARRACKS))+(unsafeWindow.Building.getCountForType(unsafeWindow.Constant.Building.BARRACKS)*9))/10; t.stats.barracks = unsafeWindow.Constant.Building.BARRACKS; var m = '<CENTER><B>'+ Cities.byID[cityId].c.name +' ('+ Cities.byID[cityId].c.x +','+ Cities.byID[cityId].c.y +')</b></center><HR>'; m += '<TABLE class=ptTab width=100%><TR align=center>\ <TD width=18%><B>'+uW.arStrings.ResourceName[1]+' :</b></td><TD width=16%><B>'+uW.arStrings.ResourceName[2]+' :</b></td><TD width=16%><B>'+uW.arStrings.ResourceName[3]+' :</b></td>\ <TD width=16%><B>'+uW.arStrings.ResourceName[4]+' :</b></td><TD width=16%><B>'+uW.arStrings.ResourceName[0]+'</b></td><TD width=16%><B>'+uW.arStrings.Common.Population+' :</b></td></tr>\ <TR align=center><TD>'+ addCommasInt(t.stats.food) +'</td><TD>'+ addCommasInt(t.stats.wood) +'</td><TD>'+ addCommasInt(t.stats.stone) +'</td>\ <TD>'+ addCommasInt(t.stats.ore) +'</td><TD>'+ addCommasInt(t.stats.gold) +'</td>\ <TD>'+ addCommasInt(t.stats.idlePop) +'</td></tr></table><BR>'; document.getElementById ('divSTtop').innerHTML = m; var totTime = 0; var q=[]; if(Cities.byID[cityId].c.queues.training.active()){ f=Cities.byID[cityId].c.queues.training.activeSlots()[0]; q.push(f); } var c=Cities.byID[cityId].c.queues.training.queuedSlots(); if(c.length){c.each(function(h){q.push(h); }); } var qs = q.toString(); var now = unixTime(); t.lastQueString = qs; t.stats.queued = 0; m = '<TABLE align=center class=ptTab>'; if (q!=null && q.length>0 ){ //t.fixQueTimes (q); t.stats.queued = q.length; first = true; for (var i=0; i<q.length; i++){ //start = q[i].totalTime(); if (first) { actual = q[i].totalTime(); end = q[i].secondsLeft(); } else actual = q[i].totalTime(); if (actual < 0) actual = 0; param1=q[i].id;//; // numéro de position dans la fil d'attente param2=cityId; // id de la ville param3=q[i].typeId(); // Type de trouoe param4=q[i].quantity(); // Qte troupe param5=0; param6=0; param7=actual; // duree m += '<TR align=right><td width=35 align=center>'+(i+1)+' <a onclick="BOcancelTraining('+param1+','+param2+','+param3+','+param4+','+param5+','+param6+','+param7+');return false;" href="javascript:void(0);"><img src="https://cdn1.iconfinder.com/data/icons/musthave/16/Remove.png" border=0 title="'+uW.arStrings.OpenBarracks.CancelTrainingTitle+'"></a></td><TD>'+ q[i].quantity() +' </td><TD align=left> '+ unsafeWindow.arStrings.unitName["u"+q[i].typeId()]; if (first) m += '</td><TD> '+ timestr(actual, true) +'</td><TD> (<SPAN id=ptttfq>'+ timestr(end, true) +'</span>)'; else m += '</td><TD> '+ timestr(actual, true) +'</td></tr>'; //lastEnd = end; first = false; } } m += '</table>'; document.getElementById ('divSTleft').innerHTML = m; m = t.stats.barracks +' '+translate('barracks'); if (t.stats.queued > 0) m += ', '+ t.stats.queued +' '+translate('slots'); var f=0,tf=0; c=Cities.byID[cityId].c.queues.training.activeSlots(); if(c.length){c.each(function(h){f=h.secondsLeft();tf+=f;});} c=Cities.byID[cityId].c.queues.training.queuedSlots(); if(c.length){c.each(function(h){f=h.totalTime();tf+=f;});} if (tf > 0) m += ', '+ unsafeWindow.timestr(tf); document.getElementById ('statTTtot').innerHTML = m; }, dispTrainStatus : function (msg){ var t = my.Train; t.divTrainStatus.innerHTML = msg + t.divTrainStatus.innerHTML; }, doQueue : function (cityId, que, errMsg){ var t = my.Train; try { t.displayCityStats(); if (errMsg){ t.dispTrainStatus ('<font color=#550000><B>ERROR : '+ errMsg +'</b></font><BR>'); t.setBusy(false); return; } var cmd = que.shift(); if (!cmd){ t.dispTrainStatus ('<B>'+translate('Training succesful')+'</b><BR>'); t.setBusy(false); return; } if (cmd[0] == 'T'){ t.dispTrainStatus (translate('Formation')+' : '+ cmd[2] +' '+ unsafeWindow.arStrings.unitName["u"+cmd[1]] +'<BR>'); t.doTrain (cityId, cmd[1], cmd[2], function(errMsg){my.Train.doQueue(cityId, que, errMsg);} ); } } catch (err) { //logit (inspect (err, 8, 1)); t.dispTrainStatus ('<font color=#550000>ERROR : '+ err.message +'</font><BR>'); t.setBusy(false); } }, doTrain :function (cityId, unitId, num, notify){ var t = my.Train; if(!Cities.byID[cityId].c.queues.training.available()){ return; } var f={cid:cityId,type:unitId,quant:num,items:0}; f.tid=Cities.byID[cityId].c.queues.training.availableSlotIds()[0]; var e=unsafeWindow.trainingData["unit"+unitId].costs.level0; unsafeWindow.AjaxCall.gPostRequest("train.php",f, function(h) { if (h.ok) { unsafeWindow.KTrack.event(["_trackEvent","TrainUnit",String(unitId),unsafeWindow.player.level,num]); unsafeWindow.KB.Models.Resource.addToSeed(unsafeWindow.Constant.ResourceType.GOLD,e.softcurrency*num*-1); for(b=1;b<=4;b++){ unsafeWindow.KB.Models.Resource.addToSeed(b,e["resource"+b]*num*-1) } //document.getElementById('autoFError_'+cityId).innerHTML+=" <b>1</b>" Cities.byID[cityId].c.population.remove(e.population*num); //document.getElementById('autoFError_'+cityId).innerHTML+=" <b>2</b>" z = new unsafeWindow.KB.Models.QueueSlot.Troop({id:f.tid,ticker:unsafeWindow.unixtime(),eta:unsafeWindow.unixtime()+Number(h.timeNeeded),target:num,type:unitId}) //document.getElementById('autoFError_'+cityId).innerHTML+=" <b>3</b>" Cities.byID[cityId].c.queues.training.addSlotToEnd(z); //unsafeWindow.Chrome.Queue.Training.select(); if (notify != null) setTimeout (function (){notify(null);}, 100); //t.dispTrainStatus ('<B>Formation effectuée.</b><BR>'); // t.setBusy(false); } else { if (notify != null){ setTimeout (function (){notify(rslt.error_code);}, 100); } } }, function(o) { if (notify != null) notify(o.errorMsg); } ); } } /************************ OVERVIEW ************************/ my.Overview = { cont : null, displayTimer : null, checkBox:null, checkBox1:null, Overview : function (){ }, init : function (){ this.cont = document.createElement('div'); unsafeWindow.BOdefend = this.gatedef; unsafeWindow.BORavive = this.ravive; return this.cont; }, getContent : function (){ return my.Overview.cont; }, hide : function (){ clearTimeout (my.Overview.displayTimer); }, gatedef: function(numc) { var currentCity=Cities.cities[numc].c; var a = !Cities.cities[numc].c.defending; var b={cid:currentCity.id,state:a}; unsafeWindow.AjaxCall.gPostRequest("gate.php",b,function(c){ currentCity.defending=a; if (a) { document.getElementById("def_"+numc).value="DEF = ON"; document.getElementById("def_"+numc).className = 'BODefButOn'; }else { document.getElementById("def_"+numc).value="DEF = OFF"; document.getElementById("def_"+numc).className = 'BODefButOff'; } DashInnert(); }); }, ravive:function(cityId, unitId, quant) { var f={cid:cityId,type:unitId,quant:quant,et:10}; unsafeWindow.AjaxCall.gPostRequest("healUnits.php",f, function(h) { }, function(rslt) { } ); }, show : function (){ var rownum = 0; var totalentre = 0; var t = my.Overview; clearTimeout (t.displayTimer); dt = new Date (); dt.setTime (unsafeWindow.player.datejoinUnixTime * 1000); str = '<div style="height:670px;max-height:670px;overflow-y:auto"><DIV class=ptstat style="margin-top:2px; margin-bottom:2px; "><TABLE cellspacing=0 cellpadding=0 class=ptTab width=97% align=center>\ <TR align=left><TD><SPAN class=ptStatLight>'+uW.arStrings.Common.Name+' :</span><br>'+ uW.player.name + '</td>\ <TD><SPAN class=ptStatLight>'+translate('Joined on')+' :</span><br>'+ dt.toLocaleDateString() +'</td>\ <TD><SPAN class=ptStatLight>'+uW.arStrings.Common.Glory+' :</span><br>' + addCommasInt(unsafeWindow.player.might()) +'</td>\ <TD><SPAN class=ptStatLight>'+uW.arStrings.Common.Alliance+' :</span><br>' + getMyAlliance()[1] + '</td>\ <TD align=right><SPAN class=ptStatLight>'+uW.arStrings.Common.World+' :</span><br>' + uW.domainName +'</td></tr></table></div><span id="debugtest"></span>'; str += "<TABLE class='ptTabOverview' cellpadding=0 cellspacing=0><TR valign=top align=right><TD width=100 style='font-size:16px'><center><a href='"+sitesupport+"' target=_blank><font size=4>"+ScriptName+"<br>"+Autore+"</font></a></td><TD width=88 style='background: #ffc;font-size:14px'><center><B>"+uW.arStrings.Common.Total.toUpperCase()+"</b></td>"; for(i=0; i<Cities.numCities; i++) { Gate = Cities.cities[i].c.defending; if(Gate == 0) { var couleurr="#77EE77"; var stylbo = "BODefButOff"; var butvalue="DEF = OFF"; }else { var couleurr="#EE7777"; var stylbo = "BODefButOn"; var butvalue="DEF = ON"; } str += "<TD width=81 style='background-color:"+couleurr+";text-align:center' align=center><B>"+ Cities.cities[i].c.name +'</b><BR><a onclick="KB.Controllers.MapHelper.gotoCoord('+Cities.cities[i].c.x +','+ Cities.cities[i].c.y+');">('+Cities.cities[i].c.x +','+ Cities.cities[i].c.y+')</a><br><input type=button value="'+butvalue+'" id="def_'+i+'" class="'+stylbo+'" onclick="BOdefend('+i+');"></td>'; } str +="</tr>"; str += "<tr><td><br></td></tr>"; var m=""; for(i=0; i<Cities.numCities; i++) { color='black'; if (Cities.cities[i].c.queues.building.activeSlots()[0] || Cities.cities[i].c.queues.building.activeSlots()[1]) { if (parseInt(Cities.cities[i].c.queues.building.activeSlots()[0].typeId())!=99) { var temprestant=Cities.cities[i].c.queues.building.activeSlots()[0].secondsLeft(); } else { if (Cities.cities[i].c.queues.building.activeSlots()[1]) { var temprestant=Cities.cities[i].c.queues.building.activeSlots()[1].secondsLeft(); } else { var temprestant=0; color='red'; } } m += "<TD align=right width=81 style='background:#e8e8e8;color:"+color+";'>"+ timestrShort(temprestant) + "</td>"; } else { m += "<TD align=right width=81 style='background:#e8e8e8;color:red;'>"+ timestrShort(0)+"</td>"; } } str += "<tr><td style='background: #e8e8e8' align=right><b>"+unsafeWindow.arStrings.Common.Buildings+"</td><td style='background: #e8e8e8' align=right> "+ m +"</tr>"; var m=""; for(i=0; i<Cities.numCities; i++) { color='black'; if (Cities.cities[i].c.queues.research.activeSlots()[0]) { m += "<TD align=right width=81 style='background:#e8e8e8;color:"+color+";'>"+ timestrShort(Cities.cities[i].c.queues.research.activeSlots()[0].secondsLeft())+"</td>"; } else { m += "<TD align=right width=81 style='background:#e8e8e8;color:red;'>"+ timestrShort(0)+"</td>"; } } str += "<tr><td style='background: #e8e8e8' align=right><b>"+unsafeWindow.arStrings.Common.Research+"</td><td style='background: #e8e8e8' align=right> "+ m +"</tr>"; str += "<tr><td><br></td></tr>"; var m=""; for(i=0; i<Cities.numCities; i++) { color='black'; var f=0; var tf=0; var c=Cities.cities[i].c.queues.training.activeSlots(); if(c.length){ c.each(function(h){ f=h.secondsLeft(); tf+=f; }); } var c=Cities.cities[i].c.queues.training.queuedSlots(); if(c.length){ c.each(function(h){ f=h.totalTime(); tf+=f; }); } m += "<TD align=right width=81 style='background:#e8e8e8;'>"+ timestr(tf)+"</td>"; } str += "<tr><td style='background: #e8e8e8' align=right><b>"+unsafeWindow.arStrings.Common.Training+"</td><td style='background: #e8e8e8' align=right> "+ m +"</tr>"; var m=""; for(i=0; i<Cities.numCities; i++) { color='black'; var f=0; var tf=0; var c=Cities.cities[i].c.queues.reviving.activeSlots(); if(c.length){ c.each(function(h){ f=h.secondsLeft(); tf+=f; }); } var c=Cities.cities[i].c.queues.reviving.queuedSlots(); if(c.length){ c.each(function(h){ f=h.totalTime(); tf+=f; }); } m += "<TD align=right width=81 style='background:#e8e8e8;'>"+ timestrShort(tf)+"</td>"; } str += "<tr><td style='background: #e8e8e8' align=right><b>"+unsafeWindow.arStrings.Apothecary.Reviving+"</td><td style='background: #e8e8e8' align=right> "+ m +"</tr>"; str += "<tr><td><br></td></tr>"; var m=""; var popTotal=0; for(i=0; i<Cities.numCities; i++) { m += "<TD align=right width=81 style='background:#e8e8e8'>"+ addCommas(Cities.cities[i].c.population.cap()) +"</td>"; popTotal+=parseInt(Cities.cities[i].c.population.cap()); } str += "<tr><td style='background: #e8e8e8' align=right><b>"+unsafeWindow.arStrings.ShowPopTooltip.PopLimit.substring(0,14)+"</td><td style='background: #e8e8e8' align=right>"+addCommas(popTotal)+" "+ m+"</tr>"; var m=""; var popTotal=0; for(i=0; i<Cities.numCities; i++) { m += "<TD align=right width=81 style='background:#e8e8e8'>"+ addCommas(Cities.cities[i].c.population.count()) +"</td>"; popTotal+=parseInt(Cities.cities[i].c.population.count()); } str += "<tr><td style='background: #e8e8e8' align=right><b>"+unsafeWindow.arStrings.ShowPopTooltip.CurrPop.substring(0,14)+"</td><td style='background: #e8e8e8' align=right>"+addCommas(popTotal)+" "+ m+"</tr>"; var m=""; var popTotal=0; for(i=0; i<Cities.numCities; i++) { m += "<TD align=right width=81 style='background:#e8e8e8'>"+ addCommas(Cities.cities[i].c.population.labor()) +"</td>"; popTotal+=parseInt(Cities.cities[i].c.population.labor()); } str += "<tr><td style='background: #e8e8e8' align=right><b>"+unsafeWindow.arStrings.ShowPopTooltip.LbForce.substring(0,14)+"</td><td style='background: #e8e8e8' align=right>"+addCommas(popTotal)+" "+ m+"</tr>"; var m=""; var popTotal=0; for(i=0; i<Cities.numCities; i++) { m += "<TD align=right width=81 style='background:#e8e8e8'>"+ addCommas(Cities.cities[i].c.population.count()-Cities.cities[i].c.population.labor()) +"</td>"; popTotal+=parseInt(Cities.cities[i].c.population.count()-Cities.cities[i].c.population.labor()); } str += "<tr><td style='background: #e8e8e8' align=right><b>"+unsafeWindow.arStrings.ShowPopTooltip.IdlePop.substring(0,14)+"</td><td style='background: #e8e8e8' align=right>"+addCommas(popTotal)+" "+ m+"</tr>"; var m=""; var popTotal=0; for(i=0; i<Cities.numCities; i++) { if (Cities.cities[i].c.population.happiness()<50) m += "<TD align=right width=81 style='background:#e8e8e8;color:red'><b>"+ Cities.cities[i].c.population.happiness() +" %</td>"; else m += "<TD align=right width=81 style='background:#e8e8e8'>"+ Cities.cities[i].c.population.happiness() +" %</td>"; } str += "<tr><td style='background: #e8e8e8' align=right><b>"+unsafeWindow.arStrings.Common.Happiness.substring(0,14)+"</td><td style='background: #e8e8e8' align=right> "+ m+"</tr>"; var m=""; var popTotal=0; for(i=0; i<Cities.numCities; i++) { m += "<TD align=right width=81 style='background:#e8e8e8'>"+ addCommas(Cities.cities[i].c.taxRate()) +" %</td>"; } str += "<tr><td style='background: #e8e8e8' align=right><b>"+unsafeWindow.arStrings.MainChrome.TaxRate.substring(0,14)+"</td><td style='background: #e8e8e8' align=right> "+ m+"</tr>"; str += "<tr><td><br></td></tr>"; var m=""; var goldTotal=0; for(i=0; i<Cities.numCities; i++) { m += "<TD width=81 style='background:#e8e8e8' align=right>"+ addCommas(Cities.cities[i].c.silver()) +'</td>'; goldTotal+=parseInt(Cities.cities[i].c.silver()); } str += "<tr align=right><td style='background:#e8e8e8' align=right><b>"+unsafeWindow.arStrings.Common.Silver+"</td><td style='background:#e8e8e8' align=right>"+addCommas(goldTotal)+" "+ m + "</tr>" ; for (var nbr=1; nbr<=4; nbr++) { if (nbr % 2) style = ''; else style = " style = 'background: #e8e8e8'"; var m=""; var resTotal=0; for(var i=0; i<Cities.numCities; i++) { m += "<TD width=81 "+style+" align=right>"+ addCommas(Cities.cities[i].c.resources[nbr].count) +'</td>'; resTotal+=parseInt(Cities.cities[i].c.resources[nbr].count); } str += "<tr><td "+style+" align=right><b>"+unsafeWindow.arStrings.ResourceName[nbr]+"</td><td "+style+" align=right>"+addCommas(resTotal)+" "+ m+"</tr>"; } str += "<tr><td><br></td></tr>"; // Production de Food + ENTRETIEN ! var m=""; var prodTotal=0; for(i=0; i<Cities.numCities; i++) { m += "<TD align=right width=81 style='background:#e8e8e8'>"+ addCommas(Cities.cities[i].c.resources[1].hourlyTotalRate())+"/"+unsafeWindow.arStrings.TimeStr.timeHr+"</td>"; prodTotal+=parseInt(Cities.cities[i].c.resources[1].hourlyTotalRate()); } str += "<tr><td style='background: #e8e8e8' align=right><b>"+unsafeWindow.arStrings.Common.Production+"</td><td style='background: #e8e8e8' align=right>"+addCommas(prodTotal)+"/"+unsafeWindow.arStrings.TimeStr.timeHr+""+ m+"</tr>"; var m=""; var entTotal=0; for(i=0; i<Cities.numCities; i++) { color='black'; // if ( parseInt(Cities.cities[i].c.resources[1].hourlyTotalRate()) < Cities.cities[i].c.upkeep() ) color='red'; m += "<TD align=right width=81 style='background:#e8e8e8;color:"+color+";'>"+ addCommas(Cities.cities[i].c.upkeep())+"/"+unsafeWindow.arStrings.TimeStr.timeHr+"</td>"; entTotal+=parseInt(Cities.cities[i].c.upkeep()); } str += "<tr><td style='background: #e8e8e8' align=right><b>"+unsafeWindow.arStrings.Common.UpKeep+"</td><td style='background: #e8e8e8' align=right>"+addCommas(entTotal)+"/"+unsafeWindow.arStrings.TimeStr.timeHr+""+ m+"</tr>"; var m=""; var entTotal=0; var variiiable="Script GoR BoTTols" + " by "+ "Tiesto"+"ale"; for(i=0; i<Cities.numCities; i++) { color='black'; if ( parseInt(Cities.cities[i].c.resources[1].hourlyTotalRate()) < parseInt(Cities.cities[i].c.upkeep()) ) { // entretien supérieur à la production difference = parseInt(Cities.cities[i].c.resources[1].hourlyTotalRate()) - parseInt(Cities.cities[i].c.upkeep()); var timeLeft = parseInt(Cities.cities[i].c.resources[1].count) / (0-difference) * 3600; if (timeLeft > 86313600) autonomi = '----'; else { if (timeLeft<(Options.foodWarnHours*3600)) { autonomi = '<SPAN class=whiteOnRed><b>'+ timestrShort(timeLeft) +'</b></span>'; } else { autonomi = ''+ timestrShort(timeLeft) +''; } } m += "<TD align=right width=81 style='background:#e8e8e8;color:"+color+";'>"+ autonomi +"</td>"; } else { m += "<TD align=right width=81 style='background:#e8e8e8;color:black;'>---</td>"; } } str += "<tr><td style='background: #e8e8e8' align=right><b>"+unsafeWindow.arStrings.Common.TimeRemaining+"</td><td style='background: #e8e8e8' align=right> "+ m+"</tr>"; str += "<tr><td><br></td></tr>"; unsafeWindow.Barracks.allUnitIds.each(function(nbu){ var m=""; var unitTotal=0; var unitWTotal=0; if (unsafeWindow.arStrings.unitName["u"+nbu]) { if (nbu % 2) style = ''; else style = " style = 'background: #e8e8e8'"; for(var i=0; i<Cities.numCities; i++) { var wonded=Cities.cities[i].c.troops[nbu].wounded(); var wondedst=""; if (wonded>0) wondedst=" (<a onclick='BORavive("+Cities.cities[i].c.id+","+nbu+","+parseIntNan(wonded)+");'><font color=red>"+addCommas(wonded)+"</font></a>)"; m += "<TD width=81 "+style+" align=right>"+ addCommas(Cities.cities[i].c.troops[nbu].count()) +''+wondedst+'</td>'; unitTotal+=parseInt(Cities.cities[i].c.troops[nbu].count()); unitWTotal+=parseInt(Cities.cities[i].c.troops[nbu].wounded()); } var unitstring=""; if (unitWTotal>0) unitstring=" (<font color=red>"+addCommas(unitWTotal)+"</font>)"; str += "<tr><td "+style+" align=right><b>"+unsafeWindow.arStrings.unitName["u"+nbu]+"</td><td "+style+" align=right>"+addCommas(unitTotal)+""+unitstring+" "+ m + "</tr>"; } }); str += "<tr><td><br></td></tr>"; var m=""; var genTotal=0,genEnergyTotal=0,gendispoTotal=0,gendispo=0; for(i=0; i<Cities.numCities; i++) { color='black'; Cities.cities[i].c.generalsSorted().each(function(b){if(b.energy()>0){ gendispo+=b.available()?1:0; }}); m += "<TD align=right width=81 style='background:#e8e8e8;color:"+color+";'>"+gendispo+"/"+ Cities.cities[i].c.generalsCount()+"</td>"; gendispoTotal+=gendispo genTotal+=parseInt(Cities.cities[i].c.generalsCount()); gendispo=0 Cities.cities[i].c.generalsSorted().each(function(b){if(b.energy()>0){ genEnergyTotal+=parseInt(b.energy()); }}); } str += "<tr><td style='background: #e8e8e8' align=right><b>"+uW.arStrings.Common.Generals+"</td><td style='background: #e8e8e8' align=right>"+gendispoTotal+" / "+genTotal+""+m+"</tr>"; str += "<tr><td style='background: #e8e8e8' align=right><b>"+uW.arStrings.Common.Energy+" "+uW.arStrings.Common.Total+"</td><td style='background: #e8e8e8' align=right>"+genEnergyTotal+"</tr>"; str += "<tr><td><br></td></tr>"; var m=""; var wildTotal=0; for(i=0; i<Cities.numCities; i++) { color='black'; m += "<TD align=right width=81 style='background:#e8e8e8;color:"+color+";'>"+ Cities.cities[i].c.wildernessCount()+" / "+Cities.cities[i].c.buildings[0].level()+"</td>"; wildTotal+=parseInt(Cities.cities[i].c.wildernessCount()); } str += "<tr><td style='background: #e8e8e8' align=right><b>"+unsafeWindow.arStrings.Common.Wild.substring(0,14)+"</td><td style='background: #e8e8e8' align=right>"+wildTotal+""+m+"</tr>"; str += "</table>"; my.Overview.cont.innerHTML = str +'</div>'; t.displayTimer = setTimeout (t.show, 10000); } }; /************************ AUTO TRAIN ************************/ my.AutoForm = { cont : null, displayTimer : null, state : null, numcity :-1, selectedCity:null, init : function (){ var t = my.AutoForm; t.cont = document.createElement('div'); t.state = null; setTimeout(t.Start,parseInt(10*1000)); return t.cont; }, getContent : function (){ var t = my.AutoForm; return t.cont; }, show : function (){ var t = my.AutoForm; uW.BOcancelTraining = t.cancelTrainingBO; try { var m = '<DIV class=ptstat>'+uW.arStrings.Common.Train.toUpperCase()+' '+uW.arStrings.Common.Troops.toUpperCase()+'</div>'; m+= '<table width=100%><tr><td style="text-align:center; vertical-align:middle;" width="50%">'; if (TrainOptions.Running == false) { m+= '<INPUT id=autoFormationtoggle type=submit value="Auto'+uW.arStrings.Common.Train+' = OFF">'; } else { m+= '<INPUT id=autoFormationtoggle type=submit value="Auto'+uW.arStrings.Common.Train+' = ON">'; } m+= '</td><td style="text-align:center; vertical-align:middle;" width="50%"><input type=button value="'+uW.arStrings.Common.Save_Button+'" id=autoFSave></td>'; m+= '</tr></table>'; m+= ''; m+= '<DIV class=ptstat>'+translate('SETTINGS')+'</div><center>'; m+= '<input id=aFtimelauch type=text size=2 value="'+parseIntNan(TrainOptions.timelauch)+'"> '+translate('seconds of training between the cities'); m+= '</center><br><br>'; m+= "<TABLE width=100% class=ptTab border=0 align=center><tr align=right><td align=right>#</td><td align=right>"+translate('Active')+"</><td style='text-align:left;'>"+uW.arStrings.Common.City+"</td><td style='text-align:left;'>"+uW.arStrings.Common.Troops+' '+uW.arStrings.Common.Type+"</td><td style='text-align:left;'>"+uW.arStrings.Common.Quantity+"</td></tr>"; for (var c=0; c<Cities.numCities; c++) { cityId=Cities.cities[c].c.id; m+= '<tr><td width=5% align=right>'+(c+1)+'</td><td align=right>'; if (TrainOptions.listactif && TrainOptions.listactif[cityId] == false) { m+= '<input type=checkbox id="autoFCheck_'+cityId+'">'; } else { m+= '<input checked type=checkbox id="autoFCheck_'+cityId+'">'; } m+= '</td><td width=15% align=center>'+Cities.cities[c].c.name+'</td><TD align=center><SELECT id="autoFType_'+cityId+'">'; uW.Barracks.allUnitIds.each(function(r){ if (r==TrainOptions.list[cityId]) { m+= '<option selected value="'+r+'">'+uW.arStrings.unitName['u'+r]+'</option>'; } else { m+= '<option value="'+r+'">'+uW.arStrings.unitName['u'+r]+'</option>'; } }); if (TrainOptions.unitemin[cityId]==undefined) TrainOptions.unitemin[cityId]=0; m+= '</select></td>'; m+= '<td align=left><input type=text value="'+ parseIntNan(TrainOptions.unitemin[cityId]) +'" id="aFunitemin_'+cityId+'" size=3></td></tr>'; } m+= '</table>'; m+= '<br><br>'; m+= '<DIV class=ptstat>'+translate('Queue')+'</div>'; m+= '<center><span id="trainspeedcity"></span>'; m+= "<br><DIV id=divSTleftTrain style='overflow-y: auto; height:210px; max-height:210px'></div>"; m+= '</center>'; t.cont.innerHTML = m; var dcp = new CdispCityPicker ('trainspeed', ById('trainspeedcity'), true, t.clickCitySelect, 0); // setInterval(t.displayCityStats,parseInt(5*1000)); ById('autoFormationtoggle').addEventListener('click', function(){t.toggleautoFormationState()} , false); ById('autoFSave').addEventListener('click', function() { ById('autoFSave').style.backgroundColor = "#F18888"; TrainOptions.list = {}; TrainOptions.listactif = {}; TrainOptions.timelauch = ById('aFtimelauch').value; TrainOptions.unitemin = {}; for (var c=0; c<Cities.numCities; c++) { TrainOptions.list[Cities.cities[c].c.id] = ById('autoFType_'+Cities.cities[c].c.id).value; TrainOptions.listactif[Cities.cities[c].c.id] = ById('autoFCheck_'+Cities.cities[c].c.id).checked; TrainOptions.unitemin[Cities.cities[c].c.id]= ById('aFunitemin_'+Cities.cities[c].c.id).value; } saveTrainingOptions(); setTimeout(function() { ById('autoFSave').style.backgroundColor=""; }, 500); }, false); } catch (e) { t.cont.innerHTML = '<PRE>'+ e.name +' : '+ e.message +'</pre>'; } }, cancelTrainingBO : function (i,cityId,typetrn,numtrptrn,p5,p6,p7,trainingId) { var t = my.AutoForm; Cities.byID[cityId].c.queues.training.slot(i).cancel(function(){ unsafeWindow.Barracks.renderBarracksQueue() actionLog('Auto'+uW.arStrings.Common.Train,Cities.cities[cityId].c.name+' <font color=#550000><B>'+translate('Cancel the training')+' - ID:'+i+'</b></font>'); t.displayCityStats(); }) }, hide : function (){ }, clickCitySelect : function (city){ var t = my.AutoForm; t.selectedCity = city; t.displayCityStats (); }, displayCityStats : function (){ var t = my.AutoForm; var cityId = t.selectedCity.id; var totTime = 0; var q=[]; if(Cities.byID[cityId].c.queues.training.active()){ f = Cities.byID[cityId].c.queues.training.activeSlots()[0]; q.push(f); } var c = Cities.byID[cityId].c.queues.training.queuedSlots(); if(c.length){c.each(function(h){q.push(h); }); } var qs = q.toString(); var now = unixTime(); m = '<TABLE align=center class=ptTab>'; if (q!=null && q.length>0 ){ first = true; for (var i=0; i<q.length; i++){ //start = q[i].totalTime(); if (first) { actual = q[i].totalTime(); end = q[i].secondsLeft(); } else actual = q[i].totalTime(); if (actual < 0) actual = 0; param1=q[i].id; param2=cityId; param3=q[i].typeId(); param4=q[i].quantity(); param5=0; param6=0; param7=actual; m += '<TR align=right><td width=35 align=center>'+(i+1)+' <a onclick="BOcancelTraining('+param1+','+param2+','+param3+','+param4+','+param5+','+param6+','+param7+');return false;" href="javascript:void(0);"><img src="https://cdn1.iconfinder.com/data/icons/musthave/16/Remove.png" border=0 title="'+uW.arStrings.OpenBarracks.CancelTrainingTitle+'"></a></td><TD>'+ q[i].quantity() +' </td><TD align=left> '+ uW.arStrings.unitName["u"+q[i].typeId()]; if (first) m += '</td><TD> '+ timestr(actual, true) +'</td><TD> (<SPAN id=ptttfq>'+ timestr(end, true) +'</span>)'; else m += '</td><TD> '+ timestr(actual, true) +'</td></tr>'; //lastEnd = end; first = false; } } m += '</table>'; ById('divSTleftTrain').innerHTML = m; }, Start : function (){ var t = my.AutoForm; var CanTrain = true; if (!TrainOptions.Running) { return; } if (t.numcity<Cities.numCities-1) { t.numcity++; } else { t.numcity = 0; } var c = t.numcity; var cityId=Cities.cities[c].c.id; if (!TrainOptions.listactif[cityId]) { actionLog('Auto'+uW.arStrings.Common.Train,Cities.cities[c].c.name+': Disattivata'); CanTrain = false; } var availableTrainingSlots = Cities.cities[c].c.queues.training.available(); if(!availableTrainingSlots) { actionLog('Auto'+uW.arStrings.Common.Train,Cities.cities[c].c.name+': Nessuno slot disponibile'); CanTrain = false; } var popAvail = parseInt(Cities.cities[c].c.population.count()); if(popAvail < TrainOptions.unitemin[cityId]) { actionLog('Auto'+uW.arStrings.Common.Train,Cities.cities[c].c.name+': Popolazione non disponibile'); CanTrain = false; } if (TrainOptions.unitemin[cityId] < 1) { actionLog('Auto'+uW.arStrings.Common.Train,Cities.cities[c].c.name+': Non puoi addestrare 0 truppe'); CanTrain = false; } /** maxunite = t.unitemax(cityId, TrainOptions.list[cityId]); if(maxunite < parseIntNan(TrainOptions.unitemin[Cities.cities[c].c.id])) { actionLog('Auto'+uW.arStrings.Common.Train,Cities.cities[c].c.name+': Popolazione non disponibile'); CanTrain = false; } ***/ if (CanTrain) { var unitId = TrainOptions.list[cityId]; var unitQnt = TrainOptions.unitemin[cityId]; var Name = uW.arStrings.unitName["u"+ unitId]; var e=uW.trainingData["unit"+unitId].costs.level0; var f={}; f.cid=cityId; f.type=unitId; f.quant=unitQnt; f.items=0; f.tid=Cities.byID[cityId].c.queues.training.availableSlotIds()[0]; uW.AjaxCall.gPostRequest("train.php",f, function(h) { unsafeWindow.KTrack.event(["_trackEvent","TrainUnit",String(unitId),unsafeWindow.player.level,unitQnt]); unsafeWindow.KB.Models.Resource.addToSeed(unsafeWindow.Constant.ResourceType.GOLD,e.softcurrency*unitQnt*-1); for(b=1;b<=4;b++){ unsafeWindow.KB.Models.Resource.addToSeed(b,e["resource"+b]*unitQnt*-1) } Cities.byID[cityId].c.population.remove(e.population*unitQnt); z = new unsafeWindow.KB.Models.QueueSlot.Troop({id:f.tid,ticker:unsafeWindow.unixtime(),eta:unsafeWindow.unixtime()+Number(h.timeNeeded),target:unitQnt,type:unitId}) Cities.byID[cityId].c.queues.training.addSlotToEnd(z); actionLog('Auto'+uW.arStrings.Common.Train,Cities.cities[c].c.name+': <font color=green>Addestrati '+unitQnt+' '+Name+'</font>'); t.displayCityStats(); }, function(h) { actionLog('Auto'+uW.arStrings.Common.Train,Cities.cities[c].c.name+': <font color=red>ERRORE: Addestrati '+unitQnt+' '+Name+'</font>'); } ); } setTimeout(t.Start,parseInt(TrainOptions.timelauch*1000)); }, unitemax : function(currentcityid, e){ var b=[],a=[], d=uW.Number.POSITIVE_INFINITY, f=uW.trainingData["unit"+e].costs.level0, c; b.push(f.softcurrency); a.push(Cities.byID[currentcityid].c.silver()); for(c=1;c<=4;c++) { b.push(f["resource"+c]); a.push(uW.KB.Models.Resource.getCountForType(c)) } b.push(f.population); a.push(Cities.byID[currentcityid].c.population.idle()); for(c=0;c<b.length;c++) { if(Number(b[c])!==0){ d=Math.floor(Math.min(d,a[c]/b[c])) } } return d }, toggleautoFormationState : function() { var t = my.AutoForm; obj = ById('autoFormationtoggle'); if (TrainOptions.Running == true) { TrainOptions.Running = false; saveTrainingOptions(); if (obj) obj.value = 'Auto'+uW.arStrings.Common.Train+" = OFF"; } else { TrainOptions.Running = true; saveTrainingOptions(); t.Start(); if (obj) obj.value = 'Auto'+uW.arStrings.Common.Train+" = ON"; } DashInnert(); } } /************************ LEADERBOARD ************************/ my.AllianceList = { cont : null, nombre: null, state : null, dat : [], init : function (){ var t = my.AllianceList; t.cont = document.createElement('div'); //t.nombre=0; unsafeWindow.PTgetMembers = t.eventGetMembers; //unsafeWindow.PTDme = t.eventGetLienMember; unsafeWindow.PTpd = t.clickedPlayerDetail; unsafeWindow.PTpl = t.clickedPlayerLeaderboard; unsafeWindow.PCplo = t.clickedPlayerGetLastLogin; //unsafeWindow.PTalClickPrev = t.eventListPrev; //unsafeWindow.PTalClickNext = t.eventListNext; return t.cont; }, getContent : function (){ var t = my.AllianceList; return t.cont; }, hide : function (){ var t = my.AllianceList; }, show : function (){ var t = my.AllianceList; if (getMyAlliance()[1]==uW.arStrings.Common.None) { t.cont.innerHTML = '<BR><BR><CENTER><b>'+translate('You must belong to an alliance in order to use this feature')+'</center>'; return; } if (t.state == null){ var m = '<DIV class=ptentry><TABLE width=100% cellpadding=0>\ <TR><TD class=xtab align=right></td><TD class=xtab>'+uW.arStrings.Common.Name+' '+uW.arStrings.Common.Player+': </td>\ <TD width=80% class=xtab><INPUT id=allPlayName size=20 type=text /> <INPUT id=playSubmit type=submit value="'+uW.arStrings.Common.Search+' '+uW.arStrings.Common.Player+'" /></td>\ <TD class="xtab ptErrText"><SPAN id=ptplayErr></span></td></tr>\ <TR><TD class=xtab> '+uW.arStrings.ChangeDomain.OR+' </td><TD class=xtab>'+uW.arStrings.Common.Name+' '+uW.arStrings.Common.Alliance+': </td>\ <TD class=xtab><INPUT id=allAllName type=text /> <INPUT id=allSubmit type=submit value="'+uW.arStrings.Common.Search+' '+uW.arStrings.Common.Alliance+'" /></td>\ <TD class="xtab ptErrText"><SPAN id=ptallErr></span></td></tr>\ </table><span style="vertical-align:middle;" id=altInput></span></div>\ <SPAN id=allListOut></span>'; t.cont.innerHTML = m; document.getElementById('allSubmit').addEventListener ('click', t.eventSubmit, false); document.getElementById('playSubmit').addEventListener ('click', t.eventPlayerSubmit, false); document.getElementById('allPlayName').addEventListener ('focus', function (){document.getElementById('ptplayErr').innerHTML='';}, false); document.getElementById('allAllName').addEventListener ('focus', function (){document.getElementById('ptallErr').innerHTML='';}, false); t.state = 1; } }, aName : '', eventSubmit : function (){ var t = my.AllianceList; document.getElementById('ptallErr').innerHTML=''; t.aName = document.getElementById('allAllName').value; if (t.aName.length < 3){ document.getElementById('ptallErr').innerHTML = uW.arStrings.GetAllianceSearchResults.EntryAtleast; return; } document.getElementById('altInput').innerHTML = ''; document.getElementById('allListOut').innerHTML = '<BR><BR><CENTER>'+uW.arStrings.MapHelper.Searching+'...</center>'; t.fetchAllianceList (t.aName, null, t.eventGotAllianceList); }, fetchAllianceList : function (allianceName, myAid, notify) { // at least 3 chars :) var t = my.AllianceList; unsafeWindow.AjaxCall.gPostRequest("allianceGetSearchResults.php",{allianceName:allianceName}, function (rslt) { notify (rslt); }, function (rslt) { notify (rslt); }); }, fetchMyAllianceInfo : function (notify){ unsafeWindow.AjaxCall.gPostRequest("allianceGetInfo.php",{}, function (rslt) { notify (rslt); }, function (rslt) { notify (rslt); }); }, eventGotAllianceList : function (rslt){ var t = my.AllianceList; if (!rslt.ok){ document.getElementById('allListOut').innerHTML = rslt.msg; return; } var m = '<DIV class=ptstat>'+translate('Results for')+': <B>"'+ t.aName +'"</b></div>\ <TABLE cellpadding=3 width=80% cellspacing=0 class=ptTab><TR><TD class=xtab style="font-weight:bold;">'+uW.arStrings.ShowCreateAlliance.AllianceName+'</td><TD class=xtab style="font-weight:bold;">'+uW.arStrings.Common.Ranking+'</td><TD class=xtab style="font-weight:bold;">'+uW.arStrings.Alliance.Members+'</td>\ <TD align=right class=xtab style="font-weight:bold;">'+uW.arStrings.Common.Glory+'</td><TD class=xtab style="font-weight:bold;">'+uW.arStrings.Common.Diplomacy+'</td><TD class=xtab style="font-weight:bold;">'+uW.arStrings.Alliance.Members+'</td></tr>'; for (k in rslt.alliancesMatched){ var all = rslt.alliancesMatched[k]; var dip = ''; if (all.relation && all.relation==1) dip = uW.arStrings.Alliance.relationFriendly; else if (all.relation && all.relation==2) dip = uW.arStrings.Alliance.relationHostile; if (all.ranking!=null) { m += '<TR><TD class=xtab>'+ all.allianceName +'</td><TD align=right class=xtab>'+ all.ranking +'</td><TD align=right class=xtab>'+ all.membersCount +'</td>\ <TD align=right class=xtab >'+ addCommasInt(all.might) +'</td><TD class=xtab>'+ dip +'</td>\ <TD class=xtab><a onclick="PTgetMembers('+ all.allianceId +')">'+translate('See members')+'</a></td></tr>'; } } document.getElementById('allListOut').innerHTML = m; }, eventGetMembers : function (aid){ var t = my.AllianceList; document.getElementById('allListOut').innerHTML = '<BR><BR><CENTER>'+uW.arStrings.MapHelper.Searching+'....</center>'; t.fetchAllianceMemberList (aid, t.eventGotMemberList); }, fetchAllianceMemberList : function (allianceId, notify) { var t = my.AllianceList; var c = {}; c.action= "view_alliance_detail"; if (allianceId && allianceId != 0) c.allianceId = allianceId; unsafeWindow.AjaxCall.gPostRequest("allianceGetMembersInfo.php", c, function (rslt) { notify (rslt); }, function (rslt) { notify (rslt); }); }, eventGotMemberList : function (rslt){ var t = my.AllianceList; if (!rslt.ok){ document.getElementById('allListOut').innerHTML = rslt.errorMsg; return; } t.memberListRslt = rslt; var uList = []; for (k in rslt.memberInfo) uList.push (rslt.memberInfo[k].userId); t.fetchPlayerStatus (uList, function(r){t.eventGotMemberOnlineList(r)}); }, eventGotMemberOnlineList : function (rslt){ var t = my.AllianceList; var numInvalid = 0; var numPlayers = 0; //var myA = getMyAlliance (); t.dat = []; for (var i in t.memberListRslt.memberInfo){ p = t.memberListRslt.memberInfo[i]; if (p.userId == 0){ ++numInvalid; } else { ++numPlayers; t.dat.push ([p.genderAndName, parseInt(p.might), p.positionType, parseInt(p.cities), p.userId, p.name, p.dateJoined, p.avatarurl, p.title, 'NA']); } } t.displayMembers (t.memberListRslt.allianceName, numPlayers); }, sortColNum : 1, sortDir : 1, displayMembers : function (allName, numPlayers){ var t = my.AllianceList; function alClickSort (e){ var t = my.AllianceList; var newColNum = e.id.substr(8); document.getElementById('clickCol'+t.sortColNum).className = 'clickable'; e.className='clickable clickableSel'; if (newColNum == t.sortColNum) t.sortDir *= -1; else t.sortColNum = newColNum; t.reDisp(); } unsafeWindow.PTalClickSort = alClickSort; var m = '<STYLE>.clickable{background-color:#ddd; border:2px outset; border-color:#555; padding-left:5px; padding-right:5px}\ .clickableSel{background-color:#ffffcc;}\ .xxtab{background-color:none; padding-left:5px; padding-right:5px;} </style>\ <DIV class=ptstat><TABLE id=tabAllMembers cellpadding=0 width=100%><TR font-weight:bold"><TD class=xtab> '+ allName +'</td>\ <TD class=xtab width=80% align=center> </td><TD class=xtab align=right>'+ numPlayers +' '+translate('Players found')+'</td></tr></table></div>'; m += '<div style="top:190px;left:0px;width:100%; position:absolute;max-height:475px;height:470px;overflow:auto;">\ <TABLE id=tabAllMembers align=center cellpadding=0 cellspacing=0><THEAD>\ <TR style="font-weight:bold"><TD id=clickCol0 onclick="PTalClickSort(this)" class=clickable><A><DIV>'+uW.arStrings.Common.Player+'</div></a></td>\ <TD id=clickCol2 onclick="PTalClickSort(this)" class=clickable><A><Div>'+uW.arStrings.Common.Position+'</a></div></td>\ <TD id=clickCol1 onclick="PTalClickSort(this)" class=clickable align=center><A><DIV>'+uW.arStrings.Common.Glory+'</a></div></td>\ <TD id=clickCol3 onclick="PTalClickSort(this)" class=clickable><A><DIV>'+uW.arStrings.Common.Cities+'</a></div></td>\ <TD id=clickCol8 onclick="PTalClickSort(this)" class=clickable><A><DIV>'+uW.arStrings.Common.Level+'</a></div></td>\ </tr></thead>\ <tbody id=allBody ></tbody></table></div>'; document.getElementById('allListOut').innerHTML = m; document.getElementById('clickCol'+t.sortColNum).className = 'clickable clickableSel'; t.reDisp(); }, // sort and display reDisp : function (){ var t = my.AllianceList; function sortFunc (a, b){ var t = my.AllianceList; if (typeof(a[t.sortColNum]) == 'number'){ if (t.sortDir > 0) return a[t.sortColNum] - b[t.sortColNum]; else return b[t.sortColNum] - a[t.sortColNum]; } else if (typeof(a[t.sortColNum]) == 'boolean'){ return 0; } else { if (t.sortDir > 0) return a[t.sortColNum].localeCompare(b[t.sortColNum]); else return b[t.sortColNum].localeCompare(a[t.sortColNum]); } } t.dat.sort (sortFunc); var m = ''; var tbody = document.getElementById('allBody'); tbody.innerHTML =''; tbody.style.maxHeight = ''; var csvXL=""; for (var i=0; i<t.dat.length; i++){ // if (i % 2 == 0) { tabclass = 'xxtab'; } else { tabclass = 'xxtab_even'; } m += '<TR style="max-height:30px"><TD class=xxtab> '+ t.dat[i][0] +'</td>\ <TD align=right class='+ tabclass +'>'+unsafeWindow.KB.Models.Alliance.officerTypeMapping[parseInt(t.dat[i][2],10)] +'</td>\ <TD align=right class='+ tabclass +'>'+ addCommasInt(t.dat[i][1]) +'</td><TD align=center class='+ tabclass +'>'+ t.dat[i][3] +'</td><TD align=center class='+ tabclass +'>'+ t.dat[i][8] +'</td></tr>'; } var tbody = document.getElementById('allBody'); tbody.style.maxHeight = ''; tbody.innerHTML = m; }, eventPlayerSubmit : function (){ var t = my.AllianceList; document.getElementById('ptplayErr').innerHTML=''; var name = document.getElementById('allPlayName').value; name = name.replace(/\'/g,"_"); name = name.replace(/[ùûü]/g,"u").replace(/[îï]/g,"i").replace(/[àâä]/g,"a").replace(/[ôö]/g,"o").replace(/[éèêë]/g,"e").replace(/ç/g,"c"); name = name.replace(/[^a-zA-Z0-9]/g,"_"); t.pName = name; if (name.length < 3){ document.getElementById('ptplayErr').innerHTML = uW.arStrings.GetAllianceSearchResults.EntryAtleast; return; } document.getElementById('altInput').innerHTML = ''; document.getElementById('allListOut').innerHTML = '<BR><BR><CENTER>'+uW.arStrings.MapHelper.Searching+'....</center>'; t.fetchPlayerList (name, t.eventGotPlayerList); }, clickedPlayerLeaderboard : function (span, uid){ var t = my.AllianceList; span.onclick = ''; span.innerHTML = "Searching the leaderboard...."; t.fetchLeaderboard (uid, function (r) {t.gotPlayerLeaderboard(r, span)}); }, fetchLeaderboard : function (uid, notify) { unsafeWindow.AjaxCall.gPostRequest("getUserLeaderboard.php",{action:"view_player_detail", player_id:uid}, function(rslt){ notify (rslt); },function(rslt){ notify (rslt); }); }, fetchPlayerList : function (name, notify){ unsafeWindow.AjaxCall.gPostRequest("searchPlayers.php",{subType:"ALLIANCE_INVITE", searchName:name}, function(rslt){ notify (rslt); },function(rslt){ notify (rslt); }); }, gotPlayerLeaderboard : function (rslt, span){ var t = my.AllianceList; if (!rslt.ok){ span.innerHTML = rslt.errorMsg; return; } if (rslt.totalResults == 0){ span.innerHTML = "<B>Leaderboard :</b> Nothing found ! "; return; } var p = rslt.data[0]; /*var an = p.allianceName; if (!an || an=='' || p.officerType==4) an = 'None'; else an += ' ('+ officerId2String(p.officerType) +')'; m = '<TABLE cellspacing=0 class=ptTab><TR><TD><B>Leaderboard : </b></td><TD colspan=2> Glory : '+ p.might +' Alliance : '+ an +'</td></tr>'; for (var i=0; i<p.cities.length; i++){ var c = p.cities[i]; m += '<TR><TD align=right><B>City #'+ (i+1) +':</b></td><TD> '+ c.cityName +' <a href="javascript:void(0)" onclick="KB.Controllers.MapHelper.gotoCoord('+ c.xCoord +',' +c.yCoord+ ')" class="coordinateLink">('+ c.xCoord +',' +c.yCoord+ ')</a></td><TD width=75%> Niveau : ' + c.tileLevel +' status: '+ cityStatusString (c.cityStatus) +' créde : ' + c.dateCreated.substr(0,10) +'</td></tr>'; } */ //span.innerHTML = m + '</table>'; span.innerHTML = "<B>Leaderboard :</b> Under construction <br>Number of cities :"+p.numOfCities+"<br>Number of wilds : "+p.numOfWilds; }, eventGotPlayerList : function (rslt){ var t = my.AllianceList; if (!rslt.ok){ document.getElementById('allListOut').innerHTML = rslt.msg; return; } t.playerList = rslt.matchedUsers; var uList = []; for (k in rslt.matchedUsers) uList.push (rslt.matchedUsers[k].userId); t.fetchPlayerStatus (uList, function(r) {t.eventGotPlayerOnlineList(r)}); }, fetchPlayerStatus : function (uidArray, notify){ unsafeWindow.AjaxCall.gPostRequest("getOnline.php",{checkArr:uidArray.join(',')}, function(rslt){ notify (rslt); },function(rslt){ notify (rslt); }); }, fetchPlayerStatusSimple : function (uid, notify){ unsafeWindow.AjaxCall.gPostRequest("getOnline.php",{checkArr:uid}, function (rslt) { notify (rslt); }, function (rslt) { notify (rslt); } ); }, fetchPlayerInfo : function (uid, notify){ unsafeWindow.AjaxCall.gPostRequest("getUserGeneralInfo.php",{uid:uid}, function(rslt){ notify (rslt); },function(rslt){ notify (rslt); }); }, clickedPlayerDetail : function (span, uid){ var t = my.AllianceList; span.onclick = ''; span.innerHTML = translate("Searching")+"..."; t.fetchPlayerInfo (uid, function (r) {t.gotPlayerDetail(r, span)}); }, gotPlayerDetail : function (rslt, span){ var t = my.AllianceList; if (!rslt.ok){ span.innerHTML = rslt.errorMsg; return; } var u = rslt.userInfo[0]; var a = uW.arStrings.Common.None; if (u.allianceName) a = u.allianceName +' ('+ getDiplomacy(u.allianceId) + ')'; var m = '<TABLE cellspacing=0 class=ptTab><TR><TD><B>'+uW.arStrings.Common.Details+':</b> </td><TD>'+uW.arStrings.Common.Alliance+': '+ a +' '+uW.arStrings.Common.Cities+': ' + u.cities +' '+uW.arStrings.Common.Population+': '+ u.population +'</td></tr><TR><TD></td><TD>'+uW.arStrings.Leaderboard.Provinces+': '; var pids = u.provinceIds.split (','); var p = []; for (var i=0; i<pids.length; i++) p.push(unsafeWindow.arStrings.provinceName['p'+pids[i]]); span.innerHTML = m + p.join (', ') +'</td></tr><tr><td></td><td>Facebook : <a href=https://www.facebook.com/profile.php?id='+u.fbuid+' target=_blank>'+uW.arStrings.ModalTitle.Profile+'</a></td></tr></table>'; }, eventGotPlayerOnlineList : function (rslt){ var t = my.AllianceList; if (!rslt.ok){ document.getElementById('allListOut').innerHTML = rslt.errorMsg; return; } var m = '<DIV class=ptstat>'+translate('Results for')+' <B>"'+ t.pName +'"</b></div>\ <DIV style="height:575px; max-height:575px; overflow-y:auto">\ <TABLE width=95% align=center class=ptTab cellspacing=0><TR style="font-weight:bold"><TD width=20%>'+uW.arStrings.Common.Name+'</td>\ <TD align=right>'+uW.arStrings.Common.Glory+' </td><TD> </td><TD width=60%>'+translate('Extra information')+'</td></tr>'; var row=0; var cl=''; for (k in t.playerList){ var u = t.playerList[k]; if (++row % 2) cl = 'class=ptOddrow '; else cl = ''; if (u.allianceName) { var alliancenammme=u.allianceName; }else {var alliancenammme="---"; } m += '<TR '+ cl +'valign=top><TD>'+ u.genderAndName +'<br>'+alliancenammme+'</td><TD align=center> '+ addCommasInt(u.might) +' </td>\ <TD>'+ (rslt.data[u.userId]?" <SPAN class=boldDarkRed>Online</span>":"") +'</td>\ <TD><SPAN onclick="PTpd(this, '+ u.userId +')"><A>'+uW.arStrings.Common.Details+'</a></span></td></tr>'; } m += '</table></div>'; document.getElementById('allListOut').innerHTML = m; }, clickedPlayerGetLastLogin : function (span, uid){ var t = my.AllianceList; //span.onclick = ''; //span.innerHTML = "Searching..."; //t.fetchPlayerLastLogin (uid, function (r) {t.gotPlayerLastLogin(r, span)}); }, fetchPlayerLastLogin : function (uid, notify){ unsafeWindow.AjaxCall.gPostRequest("viewCourt.php",{pid:uid}, function(rslt){ notify (rslt); }, function(rslt){ notify (rslt); }); }, gotPlayerLastLogin : function (rslt, span){ var t = my.AllianceList; if (!rslt.ok){ span.innerHTML = rslt.errorMsg; return; } var p = rslt.playerInfo; var lastLogin = rslt.playerInfo.lastLogin; if (lastLogin) { m = '<span style="color:black">'+lastLogin+'</span>'; } else { m = '<span style="color:red">?</span>'; } span.innerHTML = m + ''; } } /************************ SPAM ************************/ my.Spam = { cont : null, timer : null, init : function (){ var t = my.Spam; t.cont = document.createElement('div'); return t.cont; }, getContent : function (){ var t = my.Spam; return t.cont; }, show : function (){ var t = my.Spam; var m = '<DIV class=ptstat>SPAM - '+translate('CONFIGURATION')+'</div><TABLE class=pbTab width=100% height=0% ><TR align="center">'; if (Options.spamconfig.aspam == true) { m += '<TD><INPUT id=pbSpamEnable type=submit value="Spam = ON"></td>'; } else { m += '<TD><INPUT id=pbSpamEnable type=submit value="Spam = OFF"></td>'; } if (Options.spamconfig.spamstate == 'a') { m += '<TD><INPUT id=pbSpamState type=submit value="Chat '+uW.arStrings.MainChrome.chatGlobal+'"></td>'; } else { m += '<TD><INPUT id=pbSpamState type=submit value="Chat '+uW.arStrings.Common.Alliance+'"></td>'; } m += '</tr></table></div>'; m += '<DIV class=ptstat>'+translate('OPTIONS')+'</div><TABLE class=pbTab>'; m += '<tr><td>'+translate('Post automatically every')+' <INPUT id=pbSpamMin type=text size=2 maxlength=3 value="'+ Options.spamconfig.spammins +'" \> '+uW.arStrings.TimeStr.timeMin+'</td></tr><BR>\ <tr><TD><TABLE cellpadding=0 cellspacing=0>\ <TD align=left>'+translate('Your spam message')+' : </td><TD><INPUT id=pbSpamAd type=text size=60 maxlength=250 value="'+ Options.spamconfig.spamvert +'" \></td></tr>\ </table><BR>'; t.cont.innerHTML = m; ById('pbSpamEnable').addEventListener ('click', function(){t.toggleon(this);}, false); ById('pbSpamAd').addEventListener ('change', t.e_spamOptChanged, false); ById('pbSpamMin').addEventListener ('change', t.e_spamOptChanged, false); ById('pbSpamState').addEventListener ('click', function(){t.togglespam(this);}, false); }, hide : function (){ var t = my.Spam; }, e_spamOptChanged : function (){ var t = my.Spam; Options.spamconfig.spamvert = ById('pbSpamAd').value; Options.spamconfig.spammins = ById('pbSpamMin').value; if(parseInt(Options.spamconfig.spammins) < 10){ Options.spamconfig.spammins = 10; ById('pbSpamMin').value = 10; } saveOptions (); }, togglespam: function(obj){ var t = my.Spam; if (Options.spamconfig.spamstate == 'a') { Options.spamconfig.spamstate = 'g'; obj.value = 'Chat '+uW.arStrings.MainChrome.chatGlobal; } else { Options.spamconfig.spamstate = 'a'; obj.value = 'Chat '+uW.arStrings.Common.Alliance; } saveOptions (); }, toggleon: function(obj){ var t = my.Spam; if (Options.spamconfig.aspam == true) { Options.spamconfig.aspam = false; obj.value = "Spam = OFF"; } else { Options.spamconfig.aspam = true; obj.value = "Spam = ON"; SpamEvery.init(); } saveOptions (); } }; var SpamEvery = { timer : null, spamtimer : 0, init : function (){ if (!Options.spamconfig.aspam) return; if (Options.spamconfig.spammins < 10) Options.spamconfig.spammins = 10; SpamEvery.setEnable (Options.spamconfig.aspam); }, setEnable : function (tf){ var t = SpamEvery; clearTimeout (t.timer); if (tf) t.timer = setTimeout (t.count, 60*1000); }, count : function (){ var t = SpamEvery; t.spamtimer = Options.spamconfig.spammins; if(parseInt(t.spamtimer) < 10) t.spamtimer = 10; if (Options.spamconfig.atime > t.spamtimer) { Options.spamconfig.atime = 2; t.doit (); } else { Options.spamconfig.atime = (Options.spamconfig.atime + 1); SpamEvery.init (); } saveOptions (); }, doit : function (){ sendChat ("/" + Options.spamconfig.spamstate + " " + Options.spamconfig.spamvert); SpamEvery.init (); } } function CdispCityPicker (id, span, dispName, notify, selbut){ function CcityButHandler (t){ var that = t; this.clickedCityBut = clickedCityBut; function clickedCityBut (e){ if (that.selected != null) that.selected.className = "castleBut castleButNon"; that.city = Cities.cities[e.target.id.substr(that.prefixLen)]; if (that.dispName) document.getElementById(that.id+'cname').innerHTML = that.city.c.name; e.target.className = "castleBut castleButSel"; that.selected = e.target; if (that.coordBoxX){ that.coordBoxX.value = that.city.c.x; that.coordBoxY.value = that.city.c.y; that.coordBoxX.style.backgroundColor = '#ffffff'; that.coordBoxY.style.backgroundColor = '#ffffff'; } if (that.notify != null) that.notify(that.city, that.city.c.x, that.city.c.y); } } function selectBut (idx){ document.getElementById(this.id+'_'+idx).click(); } function bindToXYboxes (eX, eY){ function CboxHandler (t){ var that = t; this.eventChange = eventChange; if (that.city){ eX.value = that.city.c.x; eY.value = that.city.c.y; } function eventChange (){ var x = parseInt(that.coordBoxX.value, 10); var y = parseInt(that.coordBoxY.value, 10); if (isNaN(x) || x<0 || x>750){ that.coordBoxX.style.backgroundColor = '#ff8888'; return; } if (isNaN(y) || y<0 || y>750){ that.coordBoxY.style.backgroundColor = '#ff8888'; return; } that.coordBoxX.style.backgroundColor = '#ffffff'; that.coordBoxY.style.backgroundColor = '#ffffff'; if (that.notify != null) that.notify (null, x, y); } } this.coordBoxX = eX; this.coordBoxY = eY; var bh = new CboxHandler(this); eX.size=2; eX.maxLength=3; eY.size=2; eY.maxLength=3; eX.addEventListener('change', bh.eventChange, false); eY.addEventListener('change', bh.eventChange, false); } this.selectBut = selectBut; this.bindToXYboxes = bindToXYboxes; this.coordBoxX = null; this.coordBoxY = null; this.id = id; this.dispName = dispName; this.prefixLen = id.length+1; this.notify = notify; this.selected = null; this.city = null; var m = ''; for (var i=0; i<Cities.cities.length; i++) m += '<INPUT class="castleBut castleButNon" id="'+ id +'_'+ i +'" value="'+ (i+1) +'" type=submit \>'; if (dispName) m += ' <SPAN style="display:inline-block; width:85px; font-weight:bold;" id='+ id +'cname' +'></span>'; span.innerHTML = m; var handler = new CcityButHandler(this); for (var i=0; i<Cities.cities.length; i++) document.getElementById (id+'_'+i).addEventListener('click', handler.clickedCityBut, false); if (selbut != null) this.selectBut(selbut); } function setTabStyle (e, selected){ if (selected){ e.className = 'matTabSel'; } else { e.className = 'matTabNotSel'; } } function clickedTab (e){ who = e.target.id.substring(2); newObj = my[who]; currentObj = my[currentName]; if (currentName != who){ setTabStyle (document.getElementById ('aa'+currentName), false); setTabStyle (document.getElementById ('aa'+who), true); if (currentObj){ currentObj.hide (); currentObj.getContent().style.display = 'none'; } currentName = who; cont = newObj.getContent(); newObj.getContent().style.display = 'block'; } newObj.show(); } function mouseMainTab (me){ if (me.button == 2){ var c = getClientCoords (document.getElementById('main_engagement_tabs')); mainPop.setLocation ({x: c.x+4, y: c.y+c.height}); } } function eventHideShow (){ if (mainPop.toggleHide(mainPop)){ my[currentName].show(); Options.ptWinIsOpen = true; } else { my[currentName].hide(); Options.ptWinIsOpen = false; } saveOptions(); } function hideMe (){ mainPop.show (false); my[currentName].hide(); Options.ptWinIsOpen = false; saveOptions(); } function logit (msg){ var serverID = getServerId(); var now = new Date(); if (IsChrome) console.log (msg); else GM_log (serverID +' @ '+ now.toTimeString().substring (0,8) +'.' + now.getMilliseconds() +': '+ msg); } function saveCrestData (){ var serverID = getServerId(); setTimeout (function (){GM_setValue ('CrestData_' + uW.player.name + '_' +serverID, JSON2.stringify(CrestData));}, 0); } function saveOptions (){ var serverID = getServerId(); GM_setValue ('BOOptions_'+uW.player.name+'_'+serverID, JSON2.stringify(Options)); } function saveTrainingOptions (){ var serverID = getServerId(); setTimeout (function (){GM_setValue ('TrainingOptions_'+uW.player.name+'_'+serverID, JSON2.stringify(TrainOptions));}, 0); } function saveAutoAttack (){ var serverID = getServerId(); setTimeout (function (){GM_setValue ('AutoAttack_' +uW.player.name+'_'+serverID, JSON2.stringify(AutoAttack));}, 0); } function saveAutoBuild (){ var serverID = getServerId(); setTimeout (function (){GM_setValue ('AutoBuild_' +uW.player.name+'_'+serverID, JSON2.stringify(AutoBuild));}, 0); } function saveAutoResearch (){ var serverID = getServerId(); setTimeout (function (){GM_setValue ('AutoResearch_' +uW.player.name+'_'+serverID, JSON2.stringify(AutoResearch));}, 0); } function saveColors (){ var serverID = getServerId(); GM_setValue ('Colors_'+uW.player.name+'_'+serverID, JSON2.stringify(Colors)); } function readOptions (){ var serverID = getServerId(); s = GM_getValue ('BOOptions_'+uW.player.name+'_'+serverID); if (s != null){ opts = JSON2.parse (s); for (k in opts) Options[k] = opts[k]; } } function readCrestData (){ var serverID = getServerId(); s = GM_getValue ('CrestData_'+uW.player.name+'_'+serverID); if (s != null) { opts = JSON2.parse (s); for (var i = 0; i < opts.length; i++) { CrestData[i] = new CrestFunc(opts[i]); } } } function readGlobalOptions (){ s = GM_getValue('Options_??', '{}'); if (s != null) GlobalOptions = JSON2.parse(s); } function readColors (){ var serverID = getServerId(); s = GM_getValue ('Colors_'+uW.player.name+'_'+serverID); if (s != null){ opts = JSON2.parse (s); for (k in opts) Colors[k] = opts[k]; } } function readTrainingOptions (){ var serverID = getServerId(); s = GM_getValue ('TrainingOptions_'+uW.player.name+'_'+serverID); if (s != null){ opts = JSON2.parse (s); for (k in opts){ TrainOptions[k] = opts[k]; } } } function readAutoAttack (){ var serverID = getServerId(); s = GM_getValue ('AutoAttack_'+uW.player.name+'_'+serverID); if (s != null){ opts = JSON2.parse (s); for (k in opts){ AutoAttack[k] = opts[k]; } } } function readAutoBuild (){ var serverID = getServerId(); s = GM_getValue ('AutoBuild_'+uW.player.name+'_'+serverID); if (s != null){ opts = JSON2.parse (s); for (k in opts){ AutoBuild[k] = opts[k]; } } } function readAutoResearch (){ var serverID = getServerId(); s = GM_getValue ('AutoResearch_'+uW.player.name+'_'+serverID); if (s != null){ opts = JSON2.parse (s); for (k in opts){ AutoResearch[k] = opts[k]; } } } function createYellowButton (label,id){ var a=document.createElement('a'); a.className='button20'; a.innerHTML='<span style="color: #FFFFFF">'+ label +'</span>'; return a; } function createReloadButton (label,id){ var a=document.createElement('a'); a.className='button20'; a.innerHTML='<span style="color: #FFCC99 ">'+ label +'</span>'; return a; } function createButton (label){ var a=document.createElement('a'); a.innerHTML='<span style="color: #ff6">'+ label +'</span>'; return a; } function createRedButton(a,b){var c=document.createElement("a");c.style.display='none';c.className="tab";c.id=b;c.innerHTML='<span style="color: #ff6">'+a+"</span>";return c} function AddMainTabLink(text, eventListener, mouseListener) { var a = createButton (text); a.className = 'tab'; a.Name = 'BoTTols'; a.id = 'BoTTols'; a.title = ScriptName; var tabs = ById('main_engagement_tabs'); if(tabs) { var col_wrapper = document.getElementById("main_engagement_tabs").getElementsByTagName("a"); var elementsToRemove = []; for (var i = 0; i < col_wrapper.length; i++) { if (Options.HideTab && (col_wrapper[i].href.indexOf("forumdisplay.php?11-Glory-of-Rome") >= 0 || col_wrapper[i].href.indexOf("salesforce/help") >= 0 || col_wrapper[i].href == "https://www.facebook.com/apps/application.php?id=140956165916773" || col_wrapper[i].href == "https://apps.facebook.com/gloryofrome/")) { elementsToRemove.push(col_wrapper[i]); } } for(var i = 0; i < elementsToRemove.length; i++) { elementsToRemove[i].parentNode.removeChild(elementsToRemove[i]); } ById('languageFlagContainer').innerHTML = pubblicity; setTimeout( function() { if (ById('languageFlagContainer')) ById('languageFlagContainer').innerHTML = pubblicity; }, (2 * 60 * 1000)); if (ById('click')) ById('click').style.width = "0px"; if (ById('gor_menu_bar')) ById('gor_menu_bar').style.height = "70px"; tabs.insertBefore (a, tabs.firstChild); a.addEventListener('click',eventListener, false); if (mouseListener != null) a.addEventListener('mousedown',mouseListener, true); return a; } return null; } function AddTowerTab (text, eventListener, id) { var a = createRedButton (text,'botbutton'); a.className = 'tab'; a.title = '! '+uW.arStrings.Watchtower.IncomingAttacks.toUpperCase()+' !'; var tabs = ById('main_engagement_tabs'); if (tabs) { tabs.insertBefore (a, tabs.firstChild); tabs.style.width = '1000px'; a.addEventListener('click',eventListener, false); if (id != null) a.id = id; return a; } return null; } function setCities(){ if (uW.player.cities) { var contcitt = 0; Cities.cities = []; Cities.byID = {}; uW.player.allCities().each(function(c){ city = {}; city.idx = contcitt; city.id = parseInt(c.id); city.c = c; Cities.cities[contcitt] = city; Cities.byID[c.id] = city; contcitt++; }); Cities.numCities = contcitt; } } function getMyAlliance(){ if (uW.seed.allianceDiplomacies==null || uW.seed.allianceDiplomacies.allianceName==null) return [0, uW.arStrings.Common.None]; else return [uW.seed.allianceDiplomacies.allianceId, uW.seed.allianceDiplomacies.allianceName]; } function getDiplomacy (aid) { if (uW.seed.allianceDiplomacies == null) return uW.arStrings.Alliance.relationNeutral; if (uW.seed.allianceDiplomacies.friendly && uW.seed.allianceDiplomacies.friendly['a'+aid] != null) return uW.arStrings.Alliance.relationFriendly; if (uW.seed.allianceDiplomacies.hostile && uW.seed.allianceDiplomacies.hostile['a'+aid] != null) return uW.arStrings.Alliance.relationHostile; if (aid == uW.seed.allianceDiplomacies.allianceId) return uW.arStrings.Common.Alliance; return uW.arStrings.Alliance.relationNeutral; }; /************ LIB classes/functions .... **************/ function parseIntNan (n){ x = parseInt(n, 10); if (isNaN(x)) return 0; return x; } function searchDOM (node, condition, maxLevel, doMult){ var found = []; eval ('var compFunc = function (node) { return ('+ condition +') }'); doOne(node, 1); if(!doMult){ if (found.length==0) return null; return found[0]; } return found; function doOne (node, curLevel){ try { if (compFunc(node)) found.push(node); } catch (e){ } if (!doMult && found.length>0) return; if (++curLevel<maxLevel && node.childNodes!=undefined) for (var c=0; c<node.childNodes.length; c++) doOne (node.childNodes[c], curLevel); } } function getClientCoords(e){ if (e==null) return {x:null, y:null, width:null, height:null}; var x=0, y=0; ret = {x:0, y:0, width:e.clientWidth, height:e.clientHeight}; while (e.offsetParent != null){ ret.x += e.offsetLeft; ret.y += e.offsetTop; e = e.offsetParent; } return ret; } // creates a 'popup' div function CPopup (prefix, x, y, width, height, enableDrag, onClose) { // protos ... this.BASE_ZINDEX = 8101; if (unsafeWindow.cpopupWins == null) unsafeWindow.cpopupWins = {}; unsafeWindow.cpopupWins[prefix] = this; this.stmaxh = height; this.show = show; this.toggleHide = toggleHide; this.getTopDiv = getTopDiv; this.getMainDiv = getMainDiv; this.getZindex = getZindex; this.setZindex = setZindex; this.setEnableDrag = setEnableDrag; this.getLocation = getLocation; this.setLocation = setLocation; this.focusMe = focusMe; this.unfocusMe = unfocusMe; this.centerMe = centerMe; this.destroy = destroy; this.autoHeight = autoHeight; // object vars ... this.div = document.createElement('div'); this.div.id = prefix +'_outer'; this.prefix = prefix; this.onClose = onClose; var t = this; this.div.className = 'CPopup '+ prefix +'_CPopup'; this.div.style.background = "#fff"; this.div.style.zIndex = this.BASE_ZINDEX; // KOC modal is 100210 ? this.div.style.display = 'none'; this.div.style.width = width + 'px'; this.div.style.opacity = '0.9'; this.div.style.height = height + 'px'; this.div.style.maxHeight = height + 'px'; this.div.style.overflowY = 'hidden'; this.div.style.position = "absolute"; this.div.style.top = y +'px'; this.div.style.left = x + 'px'; var m = '<TABLE cellspacing=0 width=100% height=100%><TR id="'+ prefix +'_bar" class="CPopupTop"><TD id="'+ prefix +'_top" width=100%></td>\ <TD style="align:right; vertical-align:middle;" id="'+ prefix +'_X" ><img src="'+XX+'" height="20px" width="20px" onmouseover="this.style.cursor=\'pointer\'" title="'+uW.arStrings.Common.Close+'"></td></tr>\ <TR><TD valign=top class="CPopMain '+ prefix +'_CPopMain" colspan=2 id="'+ prefix +'_main"></td></tr></table>'; document.body.appendChild(this.div); this.div.innerHTML = m; ById(prefix+'_X').addEventListener ('click', new CeventXClose(this).handler, false); this.dragger = new CWinDrag (document.getElementById(prefix+'_bar'), this.div, enableDrag); this.div.addEventListener ('mousedown', e_divClicked, false); function autoHeight (onoff){ if (onoff) { t.div.style.height = ''; t.div.style.maxHeight =''; } else{ t.div.style.height = t.stmaxh; t.div.style.maxHeight = t.stmaxh; } } function e_divClicked (){ t.focusMe(); } function CeventXClose (that){ var t = that; this.handler=handler; function handler (){ t.show(false); if (t.onClose != null) t.onClose(); } } function focusMe (){ //alert((this.BASE_ZINDEX + 5)); t.div.style.zIndex = (this.BASE_ZINDEX + 5); for (k in unsafeWindow.cpopupWins){ if (k != t.prefix) unsafeWindow.cpopupWins[k].unfocusMe(); } } function destroy (){ document.body.removeChild(t.div); //WinManager.delete (t.prefix); } function centerMe (parent){ if (parent == null){ var coords = getClientCoords(document.body); } else var coords = getClientCoords(parent); var x = ((coords.width - parseInt(t.div.style.width)) / 2) + coords.x; var y = ((coords.height - parseInt(t.div.style.height)) / 2) + coords.y; if (x<0) x = 0; if (y<0) y = 0; t.div.style.left = x +'px'; t.div.style.top = y +'px'; } function unfocusMe (){ //alert((this.BASE_ZINDEX - 5)); t.div.style.zIndex = ''+ (this.BASE_ZINDEX - 5); } function getLocation (){ return {x: parseInt(this.div.style.left), y: parseInt(this.div.style.top)}; } function setLocation (loc){ t.div.style.left = loc.x +'px'; t.div.style.top = loc.y +'px'; } function setEnableDrag (tf){ t.dragger.setEnable(tf); } function setLayer(zi){ t.div.style.zIndex = this.BASE_ZINDEX + zi; } function getLayer(){ return parseInt(t.div.style.zIndex) - this.BASE_ZINDEX; } function setZindex(zi){ this.div.style.zIndex = ''+zi; } function getZindex(){ return parseInt(this.div.style.zIndex); } function getTopDiv(){ return document.getElementById(this.prefix+'_top'); } function getMainDiv(){ return document.getElementById(this.prefix+'_main'); } function getMainTopDiv(){ return document.getElementById(this.prefix+'_top'); } function isShown (){ return t.div.style.display == 'block'; } function show(tf){ if (tf){ t.div.style.display = 'block'; t.focusMe (); } else { t.div.style.display = 'none'; } return tf; } function toggleHide(t){ if (t.div.style.display == 'block') { return t.show (false); } else { return t.show (true); } } } function CWinDrag (clickableElement, movingDiv, enabled) { var t=this; this.setEnable = setEnable; this.setBoundRect = setBoundRect; this.debug = debug; this.dispEvent = dispEvent; this.lastX = null; this.lastY = null; this.enabled = true; this.moving = false; this.theDiv = movingDiv; this.body = document.body; this.ce = clickableElement; this.moveHandler = new CeventMove(this).handler; this.outHandler = new CeventOut(this).handler; this.upHandler = new CeventUp(this).handler; this.downHandler = new CeventDown(this).handler; this.clickableRect = null; this.boundRect = null; this.bounds = null; this.enabled = false; if (enabled == null) enabled = true; this.setEnable (enabled); function setBoundRect (b){ // this rect (client coords) will not go outside of current body this.boundRect = boundRect; this.bounds = null; } function setEnable (enable){ if (enable == t.enabled) return; if (enable){ clickableElement.addEventListener('mousedown', t.downHandler, false); t.body.addEventListener('mouseup', t.upHandler, false); } else { clickableElement.removeEventListener('mousedown', t.downHandler, false); t.body.removeEventListener('mouseup', t.upHandler, false); } t.enabled = enable; } function CeventDown (that){ this.handler = handler; var t = that; function handler (me){ if (t.bounds == null){ t.clickableRect = getClientCoords(clickableElement); t.bodyRect = getClientCoords(document.body); if (t.boundRect == null) t.boundRect = t.clickableRect; t.bounds = {top:10-t.clickableRect.height, bot:t.bodyRect.height-25, left:40-t.clickableRect.width, right:t.bodyRect.width-25}; } if (me.button==0 && t.enabled){ t.body.addEventListener('mousemove', t.moveHandler, true); t.body.addEventListener('mouseout', t.outHandler, true); t.lastX = me.clientX; t.lastY = me.clientY; t.moving = true; } } } function CeventUp (that){ this.handler = handler; var t = that; function handler (me){ if (me.button==0 && t.moving) _doneMoving(t); } } function _doneMoving (t){ t.body.removeEventListener('mousemove', t.moveHandler, true); t.body.removeEventListener('mouseout', t.outHandler, true); t.moving = false; } function CeventOut (that){ this.handler = handler; var t = that; function handler (me){ //t.dispEvent ('eventOUT', me); if (me.button==0){ t.moveHandler (me); } } } function CeventMove (that){ this.handler = handler; var t = that; function handler (me){ if (t.enabled && !t.wentOut){ //t.dispEvent ('eventMOVE', me); var newTop = parseInt(t.theDiv.style.top) + me.clientY - t.lastY; var newLeft = parseInt(t.theDiv.style.left) + me.clientX - t.lastX; if (newTop < t.bounds.top){ // if out-of-bounds... newTop = t.bounds.top; _doneMoving(t); } else if (newLeft < t.bounds.left){ newLeft = t.bounds.left; _doneMoving(t); } else if (newLeft > t.bounds.right){ newLeft = t.bounds.right; _doneMoving(t); } else if (newTop > t.bounds.bot){ newTop = t.bounds.bot; _doneMoving(t); } t.theDiv.style.top = newTop + 'px'; t.theDiv.style.left = newLeft + 'px'; t.lastX = me.clientX; t.lastY = me.clientY; } } } function debug (msg, e){ logit ("*************** "+ msg +" ****************"); logit ('clientWidth, Height: '+ e.clientWidth +','+ e.clientHeight); logit ('offsetLeft, Top, Width, Height (parent): '+ e.offsetLeft +','+ e.offsetTop +','+ e.offsetWidth +','+ e.offsetHeight +' ('+ e.offsetParent +')'); logit ('scrollLeft, Top, Width, Height: '+ e.scrollLeft +','+ e.scrollTop +','+ e.scrollWidth +','+ e.scrollHeight); } function dispEvent (msg, me){ logit (msg + ' Button:'+ me.button +' Screen:'+ me.screenX +','+ me.screenY +' client:'+ me.clientX +','+ me.clientY +' rTarget: '+ me.relatedTarget); } } function inspect(obj, maxLevels, level, doFunctions){ var str = '', type, msg; if(level == null) level = 0; if(maxLevels == null) maxLevels = 1; if(maxLevels < 1) return 'Inspect Error: Levels number must be > 0'; if(obj == null) return 'ERROR: Object is NULL\n'; var indent = ''; for (var i=0; i<level; i++) indent += ' '; for(property in obj) { //logit(property); try { type = matTypeof(obj[property]); if (doFunctions==true && (type == 'function')){ str += indent + '(' + type + ') ' + property + "[FUNCTION]\n " + ( (obj[property]==null)?(': null'):('')) +' = '+ obj[property] +"\n"; } else if (type != 'function') { str += indent + '(' + type + ') ' + property + ( (obj[property]==null)?(': null'):('')) +' = '+ obj[property] +"\n"; } if((type=='object' || type=='array') && (obj[property] != null) && (level+1 < maxLevels)) str += inspect(obj[property], maxLevels, level+1, doFunctions); // recurse //if (doFunctions==true && (type == 'function') && (obj[property] != null) && (level+1 < maxLevels)) // str += inspect(obj[property], maxLevels, level+1, doFunctions); // recurse } catch(err) { // Is there some properties in obj we can't access? Print it red. if(typeof(err) == 'string') msg = err; else if(err.message) msg = err.message; else if(err.description) msg = err.description; else msg = 'Unknown'; str += '(Error) ' + property + ': ' + msg +"\n"; } } str += "\n"; return str; } Array.prototype.compare = function(testArr) { if (this.length != testArr.length) return false; for (var i = 0; i < testArr.length; i++) { if (this[i].compare) { if (!this[i].compare(testArr[i])) return false; } if (this[i] !== testArr[i]) return false; } return true; } String.prototype.entityTrans = { '&':'&', '<':'<', '>':'>', '\"':'"' }; String.prototype.htmlEntities = function() { var ret = this.toString(); for (k in this.entityTrans) ret = ret.split(k).join(this.entityTrans[k]); return ret; } String.prototype.stripTags = function(){ return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>])+)?>|<\/\w+>/gi, ''); } String.prototype.capitalize = function(){ return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase(); } function objectName (o){ var s = o.toString(); return s.substr(7,s.length-8); } function matTypeof (v){ if (v == undefined) return 'undefined'; if (typeof (v) == 'object'){ if (!v) return 'null'; else if (v.constructor.toString().indexOf("Array")>=0 && typeof(v.splice)=='function') return 'array'; else return 'object'; } return typeof (v); } function addCommasInt(n){ nStr = parseInt(n) + ''; var rgx = /(\d+)(\d{3})/; while (rgx.test(nStr)) { nStr = nStr.replace(rgx, '$1' + ',' + '$2'); } return nStr; } function addCommas(nStr){ nStr += ''; x = nStr.split('.'); x1 = x[0]; x2 = x.length > 1 ? '.' + x[1] : ''; var rgx = /(\d+)(\d{3})/; while (rgx.test(x1)) { x1 = x1.replace(rgx, '$1' + ',' + '$2'); } return x1 + x2; } function htmlSelector (valNameObj, curVal, tags){ var m = []; m.push ('<SELECT'); if (tags){ m.push (' '); m.push (tags); } for (var k in valNameObj){ m.push ('><OPTION '); if (k == curVal) m.push ('SELECTED '); m.push ('value="'); m.push (k); m.push ('">'); m.push (valNameObj[k]); m.push ('</option>'); } m.push ('</select>'); return m.join (''); } function unixTime (){ return parseInt (new Date().getTime() / 1000) + unsafeWindow.g_timeoff; } function htmlOptions (a, curVal){ m = ''; for (k in a) m += '<OPTION value="'+ k +'"'+ (k==curVal?' SELECTED':'') +'>'+ a[k] +'</option>'; return m; } function getFunctionName (func){ var name=/\W*function\s+([\w\$]+)\(/.exec(func); if (!name) return ''; return name[1]; } function findAllBetween (txt, find1, find2){ var m = []; var last = 0; while ( (i1=txt.indexOf(find1, last))>=0 && (i2=txt.indexOf (find2, i1))>=0 ) { m.push (txt.substring(i1+find1.length, i2)); last = i2 + find2.length; } return m; } function strUpTo (s, find){ var i = s.indexOf(find); if (i > 0) return s.substr(0, i); return s; } function timestrShort(time) { time = parseInt (time); if (time > 86400){ var m = []; time /= 3600; m.push (parseInt(time/24)); m.push ('d '); m.push (parseInt(time%24)); m.push ('h '); return m.join (''); } else return timestr (time); } function timestr(time, full) { time = parseInt (time); var m = []; var t = time; if (t < 61) return t + 's'; if (t > 86400){ m.push (parseInt(t/86400)); m.push ('d '); t %= 86400; } if (t>3600 || time>3600){ m.push (parseInt(t/3600)); m.push ('h '); t %= 3600; } m.push (parseInt(t/60)); m.push ('m'); if (full || time<=3600 ){ m.push (' '); m.push (t%60); m.push ('s'); } return m.join (''); } function AjaxRequest (url, opts) { var timer = null; var method = 'GET'; var ajax, k; var headers = {}; var a = []; var parmStr; // Parse request parameters if (opts.method == 'POST') { for (k in opts.parameters) a.push(k + '=' + opts.parameters[k]); parmStr = a.join('&'); } else url = addUrlArgs(url, opts.parameters); if (IsChrome) headers['Accept']='*/*'; else headers['Accept'] = 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,*/*;q=0.6,*/*;q=0.4'; if (window.XMLHttpRequest) ajax=new XMLHttpRequest(); else ajax=new ActiveXObject("Microsoft.XMLHTTP"); if (opts.method) method = opts.method.toUpperCase(); if (method == 'POST') { headers['content-type'] = 'application/x-www-form-urlencoded'; headers['x-s3-aws'] = SHA1("Draoumculiasis" + parmStr + "LandCrocodile" + url + "Bevar-Asp"); } ajax.onreadystatechange = function() { // ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; states 0-4 if (ajax.readyState==4) { clearTimeout (timer); if ((ajax.status >= 200 && ajax.status < 300) || ajax.status == 304) { if (opts.onSuccess) opts.onSuccess({responseText:ajax.responseText, status:ajax.status, statusText:ajax.statusText, ajax:ajax}); } else { if (opts.onFailure) opts.onFailure({responseText:ajax.responseText, status:ajax.status, statusText:ajax.statusText, ajax:ajax}); } } }; ajax.open(opts.method, url, true); // always async! for (k in headers) ajax.setRequestHeader (k, headers[k]); if (opts.timeoutSecs) timer = setTimeout (timedOut, opts.timeoutSecs*1000); if (method == 'POST') ajax.send (parmStr); else ajax.send(); function timedOut() { ajax.abort(); if (opts.onFailure) opts.onFailure({responseText:null, status:599, statusText:'Timed Out', ajax:ajax}); } } function MyAjaxRequest (url, o, noRetry){ var opts = unsafeWindow.Object.clone(o); var wasSuccess = o.onSuccess; var wasFailure = o.onFailure; var retry = 0; var delay = 5; var noRetry = noRetry===true?true:false; opts.onSuccess = mySuccess; opts.onFailure = myFailure; new AjaxRequest(url, opts); return; function myRetry(){ ++retry; new AjaxRequest(url, opts); delay = delay * 1.25; } function myFailure(){ var o = {}; o.ok = false; o.errorMsg = "AJAX Communication Failure"; wasFailure (o); } function mySuccess (msg){ var rslt = eval("(" + msg.responseText + ")"); var x; if (rslt.ok){ rslt.errorMsg = null; ///// !!!!!!!!!!!!! ************ if (rslt.updateSeed) unsafeWindow.update_seed(rslt.updateSeed); wasSuccess (rslt); return; } rslt.errorMsg = rslt.error_code ; //unsafeWindow.printLocalError((rslt.error_code || null), (rslt.msg || null), (rslt.feedback || null)); //if ( (x = rslt.errorMsg.indexOf ('<br><br>')) > 0) // rslt.errorMsg = rslt.errorMsg.substr (0, x-1); if (!noRetry && (rslt.error_code==0 ||rslt.error_code==8 || rslt.error_code==1 || rslt.error_code==3)){ //dialogRetry (rslt.errorMsg, delay, function(){myRetry()}, function(){wasSuccess (rslt)}); } else { wasSuccess (rslt); } } } function cityStatusString (cs){ if (cs==4) return 'Vacances'; if (cs==3) return 'Truce'; if (cs==2) return 'Beg Protection'; return 'Normal'; } function officerId2String (oid){ if (oid==null) return ''; else if (oid==3) return uW.arStrings.Common.Officer; else if (oid==2) return uW.arStrings.Common.ViceChancellor; else if (oid==1) return uW.arStrings.Common.Chancellor; return ''; } /************ LIB singletons .... **************/ // TODO: fix REopening window var WINLOG_MAX_ENTRIES = 1000; // TODO var WinLog = { state : null, win: null, eOut : null, lastE : null, enabled : true, reverse : true, busy : false, isOpening : false, open : function (){ var t = WinLog; function eventButClear(){ var t = WinLog; t.lastE = null; t.eOut.innerHTML =''; } function eventButReverse(){ var t = WinLog; if (t.busy) return; t.busy = true; if (t.reverse){ t.win.document.getElementById('wlRev').value= 'Top'; t.reverse = false; } else{ t.win.document.getElementById('wlRev').value= 'Bottom'; t.reverse = true; } var n = t.eOut.childNodes.length; if (n < 2) return; for (i=n-2; i>=0; i--){ t.eOut.appendChild (t.eOut.childNodes[i]); } t.busy = false; } if (!t.win || t.win.closed){ t.isOpening = true; // Firefox bug??? It appears as if a new thread is started on open, withOUT reusing same window t.win = window.open('', 'uwtrace', 'top=30,left=0,width=900,height=700,scrollbars=no,location=no,menubar=no,directories=no,status=no'); t.isOpening = false; t.state = null; } if (t.state == null){ t.win.document.body.innerHTML = '<STYLE>pre{margin:0px} hr{margin:3px; height:1px; border:0px; color:#cee; background-color:#cee}</style>\ <BODY style="margin:0px; padding:0px; border:none">\ <DIV id=winlogtop style="background-color:#d0d0d0; margin:0px; padding:0px; border:1px solid">\ <INPUT id=wlClear type=submit value="Clear"> <INPUT id=wlRev type=submit value="Bottom"></div>\ <DIV id=wlOut style="overflow-y:auto; height:100%; max-height:100%"></div></body>'; t.win.document.getElementById('wlClear').addEventListener('click', eventButClear, false); t.win.document.getElementById('wlRev').addEventListener('click', eventButReverse, false); t.eOut = t.win.document.getElementById('wlOut'); t.lastE = null; t.state = 1; } }, writeText : function (msg){ WinLog.write (msg.htmlEntities()); }, write : function (msg){ var t = WinLog; if (!t.enabled || t.isOpening) return; t.open(); var te = document.createElement('pre'); var now = new Date(); var m = []; var millis = now.getMilliseconds(); m.push (now.toTimeString().substring (0,8)); m.push ('.'); if (millis<100) m.push('0'); if (millis<10) m.push('0'); m.push(millis); m.push (': '); m.push (msg); te.innerHTML = m.join(''); if (t.reverse){ if (t.lastE == null){ t.eOut.appendChild(te); t.lastE = te; } else { t.eOut.insertBefore(te, t.lastE); } var hr = document.createElement('hr'); t.eOut.insertBefore(hr, te); t.lastE = hr; } else { t.eOut.appendChild(te); t.eOut.appendChild(document.createElement('hr')); } } }; function ById(id) { return document.getElementById(id); } function addCommasWhole(nStr){ nStr += ''; x = nStr.split('.'); x1 = x[0]; x2 = x.length > 1 ? '.' + x[1] : ''; var rgx = /(\d+)(\d{3})/; while (rgx.test(x1)) { x1 = x1.replace(rgx, '$1' + ',' + '$2'); } return x1; } function SelectAll(id) { document.getElementById(id).focus();document.getElementById(id).select(); } function HandleChatPane() { var DisplayName = GetDisplayName(); var GlobalChatBox=document.getElementById('mod_comm_list1'); var AllianceChatBox=document.getElementById('mod_comm_list2'); if(AllianceChatBox){ var chatPosts = document.evaluate(".//div[contains(@class,'chatwrap')]", AllianceChatBox, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null ); if(chatPosts){ for (var i = 0; i < chatPosts.snapshotLength; i++) { thisPost = chatPosts.snapshotItem(i); if(true){ //if(this.options.autoHelpAlliance){ var postAuthor = document.evaluate('.//*[@class="nm"]', thisPost, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null ); if(Options.HelpRequest){ if(postAuthor.snapshotItem(0)){ var postAuthorName = postAuthor.snapshotItem(0).innerHTML; if(postAuthorName != DisplayName){ var helpAllianceLinks=document.evaluate(".//a[contains(@onclick,'Chat.helpAlliance')]", thisPost, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null ); if(helpAllianceLinks){ for (var j = 0; j < helpAllianceLinks.snapshotLength; j++) { thisLink = helpAllianceLinks.snapshotItem(j); var alreadyClicked = thisLink.getAttribute("clicked"); if(!alreadyClicked){ thisLink.setAttribute('clicked', 'true'); var myregexp = /(Chat.helpAlliance\(.*\);)/; var match = myregexp.exec(thisLink.getAttribute("onclick")); if (match != null) { onclickCode = match[0]; if(true){ DoUnsafeWindow(onclickCode); AddToCommandHistory(onclickCode, 'alliance_help'); } } } } } } } } } // Hide alliance requests in chat if(Options.DeleteRequest){ var helpAllianceLinks=document.evaluate(".//a[contains(@onclick,'Chat.helpAlliance')]", thisPost, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null ); if(helpAllianceLinks){ for (var j = 0; j < helpAllianceLinks.snapshotLength; j++) { thisLink = helpAllianceLinks.snapshotItem(j); thisLink.parentNode.parentNode.parentNode.parentNode.removeChild(thisLink.parentNode.parentNode.parentNode); } } } // Hide rules in chat if(Options.DeleteRules){ var myregexp1 = uW.arStrings.MainChrome.ChatRules; if (thisPost.innerHTML.match(myregexp1)) { thisPost.parentNode.removeChild(thisPost); } } // Hide alliance reports in chat if(Options.DeleteRequest){ var myregexp1 = uW.arStrings.Chat.HelpRequestFail1; var myregexp2 = uW.arStrings.Chat.HelpRequestFail2; var myregexp3 = uW.arStrings.Chat.HelpRequestFail3; var myregexp4 = uW.arStrings.Chat.HelpRequestFail4; var myregexp5 = uW.arStrings.help_friend.error_dontneedhelp; var myregexp6 = uW.arStrings.help_friend.error_alreadydone; var myregexp7 = uW.arStrings.help_friend.error_maximumhelp; var myregexp8 = uW.arStrings.help_friend.error_alreadyhelped; var myregexp9 = uW.arStrings.help_friend.error_cantprocess; var myregexp10 = uW.arStrings.help_friend.error_contentheaderbuildhelp; if (thisPost.innerHTML.match(myregexp1) || thisPost.innerHTML.match(myregexp2) || thisPost.innerHTML.match(myregexp3) || thisPost.innerHTML.match(myregexp4) || thisPost.innerHTML.match(myregexp5) || thisPost.innerHTML.match(myregexp6) || thisPost.innerHTML.match(myregexp7) || thisPost.innerHTML.match(myregexp8) || thisPost.innerHTML.match(myregexp9) || thisPost.innerHTML.match(myregexp10)) { thisPost.parentNode.removeChild(thisPost); } } } } } if(GlobalChatBox){ var chatPosts = document.evaluate(".//div[contains(@class,'chatwrap')]", GlobalChatBox, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null ); if(chatPosts){ for (var i = 0; i < chatPosts.snapshotLength; i++) { thisPost = chatPosts.snapshotItem(i); if(true){ //if(this.options.autoHelpAlliance){ var postAuthor = document.evaluate('.//*[@class="nm"]', thisPost, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null ); if(Options.HelpRequest){ if(postAuthor.snapshotItem(0)){ var postAuthorName = postAuthor.snapshotItem(0).innerHTML; if(postAuthorName != DisplayName){ var helpAllianceLinks=document.evaluate(".//a[contains(@onclick,'Chat.helpAlliance')]", thisPost, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null ); if(helpAllianceLinks){ for (var j = 0; j < helpAllianceLinks.snapshotLength; j++) { thisLink = helpAllianceLinks.snapshotItem(j); var alreadyClicked = thisLink.getAttribute("clicked"); if(!alreadyClicked){ thisLink.setAttribute('clicked', 'true'); var myregexp = /(Chat.helpAlliance\(.*\);)/; var match = myregexp.exec(thisLink.getAttribute("onclick")); if (match != null) { onclickCode = match[0]; if(true){ DoUnsafeWindow(onclickCode); AddToCommandHistory(onclickCode, 'alliance_help'); } } } } } } } } } // Hide alliance requests in chat if(Options.DeleteRequest){ var helpAllianceLinks=document.evaluate(".//a[contains(@onclick,'Chat.helpAlliance')]", thisPost, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null ); if(helpAllianceLinks){ for (var j = 0; j < helpAllianceLinks.snapshotLength; j++) { thisLink = helpAllianceLinks.snapshotItem(j); thisLink.parentNode.parentNode.parentNode.parentNode.removeChild(thisLink.parentNode.parentNode.parentNode); } } } // Hide rules in chat if(Options.DeleteRules){ var myregexp1 = uW.arStrings.MainChrome.ChatRules; if (thisPost.innerHTML.match(myregexp1)) { thisPost.parentNode.removeChild(thisPost); } } // Hide alliance reports in chat if(Options.DeleteRequest){ var myregexp1 = uW.arStrings.Chat.HelpRequestFail1; var myregexp2 = uW.arStrings.Chat.HelpRequestFail2; var myregexp3 = uW.arStrings.Chat.HelpRequestFail3; var myregexp4 = uW.arStrings.Chat.HelpRequestFail4; var myregexp5 = uW.arStrings.help_friend.error_dontneedhelp; var myregexp6 = uW.arStrings.help_friend.error_alreadydone; var myregexp7 = uW.arStrings.help_friend.error_maximumhelp; var myregexp8 = uW.arStrings.help_friend.error_alreadyhelped; var myregexp9 = uW.arStrings.help_friend.error_cantprocess; var myregexp10 = uW.arStrings.help_friend.error_contentheaderbuildhelp; if (thisPost.innerHTML.match(myregexp1) || thisPost.innerHTML.match(myregexp2) || thisPost.innerHTML.match(myregexp3) || thisPost.innerHTML.match(myregexp4) || thisPost.innerHTML.match(myregexp5) || thisPost.innerHTML.match(myregexp6) || thisPost.innerHTML.match(myregexp7) || thisPost.innerHTML.match(myregexp8) || thisPost.innerHTML.match(myregexp9) || thisPost.innerHTML.match(myregexp10)) { thisPost.parentNode.removeChild(thisPost); } } } } } } function GetCommandHistory(history_log_name) { if(!history_log_name){ var history_log_name = "default"; } var json= ""; if(json=='') json='{}'; var json_object=JSON2.parse(json); if(!json_object['items']){ json_object['items'] = Array(); } return json_object; } function AddToCommandHistory(command_string, history_log_name, log_length_limit) { if(!command_string){ return false; } if(!history_log_name){ var history_log_name = "default"; } // Default to a history length of 20 commands if(!log_length_limit){ var log_length_limit = 20; } // Get the previous history of commands var previous_commands = GetCommandHistory(history_log_name); var items = previous_commands['items']; // Add the new command items.push(command_string); // Limit the history length if(items.length>log_length_limit){ items = items.slice(items.length-log_length_limit); } previous_commands['items'] = items; //alert(history_log_name +' - '+JSON2.stringify(previous_commands)); //History.push = {log_name_history_log_name,JSON2.stringify(previous_commands)}; //alert(History.toSource()); } function FindInCommandHistory(command_string, history_log_name) { if(!command_string){ return false; } if(!history_log_name){ var history_log_name = "default"; } // Get the previous history of commands var previous_commands = GetCommandHistory(history_log_name); var items = previous_commands['items']; for(var i=0; i<items.length; i++){ if(items[i] == command_string){ return true; } } return false; } function addStyle(css) { if (IsChrome) { var head = document.getElementsByTagName('head')[0]; if (!head) {return} style = document.createElement('style'); style.type = 'text/css'; try { style.innerHTML = css; } catch(e) { style.innerText = css; } head.appendChild(style); } else GM_addStyle (css); } function DoUnsafeWindow(func, execute_by_embed) { if(this.isChrome || execute_by_embed) { var scr=document.createElement('script'); scr.innerHTML=func; document.body.appendChild(scr); } else { try { eval("unsafeWindow."+func); } catch (error) { this.Log("A javascript error has occurred when executing a function via DoUnsafeWindow. Error description: "+error.description); } } } function GetDisplayName(){ var DisplayName = document.getElementById('topnavDisplayName'); if(DisplayName){ DisplayName = DisplayName.innerHTML; }else{ DisplayName = null; } return DisplayName } function sendChat (msg){ document.getElementById ("mod_comm_input").value = msg; unsafeWindow.Chat.sendChat (); } function time(ms) { var seconds = ((ms / 1000) % 60); var minutes = (((ms / 1000) / 60) % 60); var hours = ((((ms / 1000) / 60) / 60) % 24); var sec, min, hrs; if(seconds<10) sec="0"+seconds; else sec= ""+seconds; if(minutes<10) min="0"+minutes; else min= ""+minutes; if(hours<10) hrs="0"+hours; else hrs= ""+hours; if(hours == 0) return parseInt(min)+":"+parseInt(sec); else return parseInt(hrs)+":"+parseInt(min)+":"+parseInt(sec); } function timeConverter(UNIX_timestamp){ var a = new Date(UNIX_timestamp*1000); var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']; var year = a.getFullYear(); var month = months[a.getMonth()]; var date = a.getDate(); var hour = a.getHours(); var min = a.getMinutes(); var time = date+'/'+month+'/'+year+' - '+hour+':'+min; return time; } function getTroopMax(id) { var TROOPS_PER_RALLY_LEVEL={1:10000,2:25000,3:35000,4:50000,5:60000,6:75000,7:80000,8:100000,9:150000,10:200000}; return TROOPS_PER_RALLY_LEVEL[unsafeWindow.Building.getMaxLevelForType(unsafeWindow.Constant.Building.RALLY_SPOT,id)]; } // returns {count, maxlevel} function getCityBuilding (cityId, buildingId){ var b = Seed.buildings['city'+cityId]; var ret = {count:0, maxLevel:0}; for (var i=1; i<33; i++){ if (b['pos'+i] && b['pos'+i][0] == buildingId){ ++ret.count; if (parseInt(b['pos'+i][1]) > ret.maxLevel) ret.maxLevel = parseInt(b['pos'+i][1]); } } return ret; } String.prototype.StripQuotes = function() { return this.replace(/"/g,''); }; function translate( wordToTranslate ) { var returnWord = wordToTranslate if (Options.Lingua == 2) { if ( translateITAArray[wordToTranslate] != undefined ) { returnWord = translateITAArray[wordToTranslate]; } /* } else { if(Options.Lingua == 3){ if (translateFRArray[wordToTranslate] != undefined ) { returnWord = translateFRArray[wordToTranslate] } } else { if(Options.Lingua == 4){ if (translateNLArray[wordToTranslate] != undefined ) { returnWord = translateNLArray[wordToTranslate] } } else { if(Options.Lingua == 5){ if (translateTRArray[wordToTranslate] != undefined ) { returnWord = translateTRArray[wordToTranslate] } } else { if(Options.Lingua == 6){ if (translateDKArray[wordToTranslate] != undefined ) { returnWord = translateDKArray[wordToTranslate] } } else { if(Options.Lingua == 7){ if (translateGEArray[wordToTranslate] != undefined ) { returnWord = translateGEArray[wordToTranslate] } } else { if (Options.Lingua == 8){ if (translateSPArray[wordToTranslate] != undefined ) { returnWord = translateSPArray[wordToTranslate] } } } } } } } **/ } return returnWord; } var popResRequest = null; function ResRequest () { if (popResRequest == null) { popResRequest = new CPopup('BOPopResRequest', 50, 150, 400, 200, true); popResRequest.centerMe (mainPop.getMainDiv()); } popResRequest.getTopDiv().innerHTML = '<CENTER><B>'+translate('Resources request')+'</b></center>'; var m = '<br><b>'+translate('What resources do you want to ask your alliance')+'?</b>'; m+= '<br>'; m+= '<br>'+uW.arStrings.ResourceName[0]+''; m+= '<br>'+uW.arStrings.ResourceName[1]+''; m+= '<br>'+uW.arStrings.ResourceName[2]+''; m+= '<br>'+uW.arStrings.ResourceName[3]+''; m+= '<br>'+uW.arStrings.ResourceName[4]+''; popResRequest.getMainDiv().innerHTML = m; popResRequest.show (true); } function alertlang () { var popLangAlert = null; popLangAlert = new CPopup('BOPopLANGAlert', 50, 150, 400, 200, true); popLangAlert.getTopDiv().innerHTML = '<DIV align=center><h2><B>'+uW.arStrings.Tutorial['Step1.Title'].toUpperCase()+' by '+Autore+'</B></h2></DIV>'; var m = '<center><b><i>Thank you for installing the '+ScriptName+'</i>'; m+= '<br>Before you begin, choose your language!</b>'; m+= '<br><br>'+htmlSelector({0:'...', 1:uW.arStrings.languageNames.en, 2:uW.arStrings.languageNames.it},Options.Lingua,'id=BOFirstLangue'); popLangAlert.getMainDiv().innerHTML = m; ById("BOFirstLangue").addEventListener('change', function(){ Options.Lingua = ById('BOFirstLangue').value; saveOptions(); reloadKOC(); } , false); popLangAlert.show (true); } function alerthq () { var popHQAlert = null; popHQAlert = new CPopup('BOPopHQAlert', 50, 150, 400, 200, true); popHQAlert.getTopDiv().innerHTML = '<DIV align=center><h2><B>'+ScriptName+'</B></h2></DIV>'; var m = '<center><br><br><b>'+translate('Set your city bunker'); m+= '<br><br>'; m+= '<SELECT id=pcpopalertHQ name=pcpopalertHQ><option value="">.....</option>'; for(var c=0; c<Cities.numCities; c++) { aCity = Cities.cities[c].c.id; aVisuCity = Cities.cities[c].c.name + ' '+Cities.cities[c].c.x + ','+ Cities.cities[c].c.y+' '; m+='<option value=\''+ aCity +'\' '+ (Options.alertConfig.hq==aCity?'SELECTED ':'') +'>'+aVisuCity+"</option>"; } m+= '</select>'; popHQAlert.getMainDiv().innerHTML = m; ById("pcpopalertHQ").addEventListener('change', function(){ Options.alertConfig.hq=ById('pcpopalertHQ').options[ById('pcpopalertHQ').selectedIndex].value; saveOptions(); reloadKOC(); } , false); popHQAlert.show (true); } function CheckUpdates () { GM_xmlhttpRequest ( { method : "GET", url : "https://gamespowerita.com/Tools/GoR/bottols.user.js", onload : function (a) { var b = /\/\/\s*@version\s+(.+)\s*\n/i.exec(a.responseText); var c = Version; if (b) { if (b[1] > c) { if (ById('idp_outer')) ById('idp_outer').style.display="none"; if (ById('BoTTols')) ById('BoTTols').style.display="none"; var popUpdateAlert = null; popUpdateAlert = new CPopup('BOPopUPDATEAlert', 500, 200, 200, 100, true); popUpdateAlert.getTopDiv().innerHTML = '<DIV align=center><h2><B>'+ScriptName+'</B></h2></DIV>'; var m = '<center><br><b>'+translate('Version')+" "+b[1]+" "+translate('available')+"!"; m+= '<br><br><input type="button" value="'+translate('Install')+'" id=BOInstall>'; popUpdateAlert.getMainDiv().innerHTML = m; ById("BOInstall").addEventListener('click', function(){ window.open(sitesupport); } , false); popUpdateAlert.show (true); } } }, onerror : function(a) { reloadKOC(); } } ); } ptStartup (); })();