🏠 Home 

Saldırı

Saldırı Planlayıcı

สคริปต์นี้ไม่ควรถูกติดตั้งโดยตรง มันเป็นคลังสำหรับสคริปต์อื่น ๆ เพื่อบรรจุด้วยคำสั่งเมทา // @require https://update.greasyfork.org/scripts/386655/711090/Sald%C4%B1r%C4%B1.js

  1. /*
  2. Author : Fluffy88
  3. Website : http://fluffy88.com
  4. Rewritten by : dalesmckay
  5. Turkish translate & organizing : Broken Castle & Trafik
  6. Blog (Broken Castle) : https://burakdemirerblog.wordpress.com
  7. */
  8. if(premium==false){alert('Bu scripti çalıştırmak için premium hesabınız olması gerekir.');end();}
  9. function fnInjectOverviewBar(){
  10. /* Default to your own currently active village */
  11. var defaultCoords = fnExtractCoords(win.$("title").html());
  12. /* Default to midnight of next day */
  13. var defaultDate = new Date();
  14. defaultDate.setTime(((Math.floor(defaultDate.getTime()/msPerDay)+1)*minsPerDay + defaultDate.getTimezoneOffset())*msPerMin);
  15. defaultDate = defaultDate.toString().replace(/\w+\s*/i,"").replace(/(\d*:\d*:\d*)(.*)/i,"$1");
  16. /* Perform the injection */
  17. fnInjectUnits();
  18. win.$('<tr><td colspan="3"><b>Hedef Köy: </b><input id="snipe_coord" value="'+defaultCoords+'" class="text-input inactive" size="7" onFocus="this.select()" /></td><td colspan="1"> <font title="Aylar sirasiyla; Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec"><b>Zaman:</b></font> <input id="arrival_time" size="25" class="text-input inactive" value="'+defaultDate+'" onFocus="this.select()" /></td><td> <input type="button" value="Hesapla" onClick="fnCalculateBackTime()" /></td></tr>').insertAfter(win.$('#menu_row2'));
  19. win.$('<div id="snipe_output"><span style=\"color:red;font-weight:bold\"><center>SALDIRI PLANLAYICISI</center></span><span style=\"color:green;font-weight:bold\"><center><sub>Broken Castle & Trafik tarafından düzenlenmiştir</sub></center></span><br/></div>').insertAfter(win.$('body'));
  20. }
  21. function fnExtractCoords(src){
  22. var vv=src.match(/\d+\|\d+/ig);
  23. return (vv?vv[vv.length-1]:null);
  24. }
  25. function fnCalculateDistance(to,from){
  26. var target = fnExtractCoords(to).match(/(\d+)\|(\d+)/);
  27. var source = fnExtractCoords(from).match(/(\d+)\|(\d+)/);
  28. var fields = Math.sqrt(Math.pow(source[1]-target[1],2)+Math.pow(source[2]-target[2],2));
  29. return fields;
  30. }
  31. function fnDebugLog(msg){win.$("body").append("<span>"+msg+"</span><br/>");}
  32. function fnAjaxRequest(url,sendMethod,params,type){
  33. var error=null,payload=null;
  34. win.$.ajax({
  35. "async":false,
  36. "url":url,
  37. "data":params,
  38. "dataType":type,
  39. "type":String(sendMethod||"GET").toUpperCase(),
  40. "error":function(req,status,err){error="ajax: " + status;},
  41. "success":function(data,status,req){payload=data;}
  42. });
  43. if(error){
  44. throw(error);
  45. }
  46. return payload;
  47. }
  48. function fnCreateConfig(name){return win.$(fnAjaxRequest("/interface.php","GET",{"func":name},"xml")).find("config");}
  49. function fnCreateUnitConfig(){return fnCreateConfig("get_unit_info");}
  50. function fnCreateWorldConfig(){return fnCreateConfig("get_config");}
  51. function fnCalculateLaunchTime(source,target,unit,landingTime){
  52. var distance = fnCalculateDistance(target,source);
  53. var unitSpeed = unitConfig.find(unit+" speed").text();
  54. /* Convert minutes to milli-seconds */
  55. var unitTime = distance*unitSpeed*msPerMin;
  56. /* Truncate milli-second portion of the time */
  57. var launchTime = new Date();
  58. launchTime.setTime(Math.round((landingTime.getTime() - unitTime)/msPerSec)*msPerSec);
  59. return launchTime;
  60. }
  61. function fnWriteCookie(ele){
  62. var snipeConfig="";
  63. win.$("#combined_table tr:first th img[src*=unit_]").each(function(i,e){
  64. snipeConfig+=win.$("#view_"+e.src.match(/unit\_(.+)\.png?/i)[1]).is(':checked')?"1":"0";
  65. });
  66. var cookie_date=new Date(2099,11,11);
  67. win.document.cookie='$snipe='+snipeConfig+';expires='+cookie_date.toGMTString();
  68. }
  69. function fnInjectUnits(){
  70. var twCookie=win.document.cookie.match(/\$snipe\=([0|1]*)/i);
  71. if(twCookie){
  72. twCookie=twCookie[1];
  73. for(var ii=0;ii<twCookie.length;ii++){
  74. }
  75. }
  76. win.$("#combined_table tr:first th img[src*=unit_]").each(function(i,e){
  77. if(this.parentNode.nodeName=="A")
  78. {
  79. win.$('<input type="checkbox" '+((!twCookie||(twCookie[i]=="1"))?'checked="true"':'')+' id="view_'+e.src.match(/unit\_(.+)\.png?/i)[1]+'" OnClick="fnWriteCookie(this);"/>').insertBefore(win.$(this.parentNode));
  80. }
  81. else
  82. {
  83. win.$('<input type="checkbox" '+((!twCookie||(twCookie[i]=="1"))?'checked="true"':'')+' id="view_'+e.src.match(/unit\_(.+)\.png?/i)[1]+'" OnClick="fnWriteCookie(this);"/>').insertBefore(win.$(this));
  84. }
  85. });
  86. win.$("#combined_table tr:first th:has(img[src*=unit_])").attr("style","background-color:yellow");
  87. }
  88. function fnExtractUnits(){
  89. var units=[];
  90. win.$("#combined_table tr:first th img[src*=unit_]").each(function(i,e){
  91. units.push(e.src.match(/unit\_(.+)\.png?/i)[1]);
  92. });
  93. return units;
  94. }
  95. function fnCalculateBackTime(){
  96. var worldConfig = fnCreateWorldConfig();
  97. var hasChurch = worldConfig && parseInt(worldConfig.find("game church").text()||"0", 10);
  98. /*var arrivalTime = new Date(win.$("#arrival_time").attr("value").split(":").slice(0,3).join(":"));
  99. var target = win.$("#snipe_coord").attr("value");*/
  100. var arrivalTime = new Date(document.getElementById("arrival_time").value.split(":").slice(0,3).join(":"));
  101. var target = document.getElementById("snipe_coord").value;
  102. var servertime = win.$("#serverTime").html().match(/\d+/g);
  103. var serverDate = win.$("#serverDate").html().match(/\d+/g);
  104. serverTime = new Date(serverDate[1]+"/"+serverDate[0]+"/"+serverDate[2]+" "+servertime.join(":"));
  105. var output = [];
  106. var ii,troop_count,source,launchTime;
  107. var units=fnExtractUnits();
  108. /* Loop through your own villages */
  109. win.$("#combined_table tr:gt(0)").each(function(i,e){
  110. source = fnExtractCoords($(this).find("td:eq(1)").html());
  111. if(source != target){
  112. var isVisible = false;
  113. /* Process Each Unit */
  114. for(ii=0;ii<units.length;ii++){
  115. if(win.$("#view_"+units[ii]).is(':checked')){
  116. troop_count = parseInt($(this).find("td:eq("+(ii+(hasChurch?9:8))+")").text(),10);
  117. /* Do we have Units currently Available */
  118. if(troop_count > 0){
  119. launchTime=fnCalculateLaunchTime(source,target,units[ii],arrivalTime);
  120. /* Cache Units that can reach the target on time */
  121. if(launchTime.getTime() > serverTime.getTime()){
  122. isVisible = true;
  123. var kontrol1 = units.indexOf("archer");
  124. var kontrol2 = units.indexOf("knight");
  125. if ( kontrol1 == "-1" && kontrol2 == "-1" )
  126. {var unitss=["Mızrak","Kılıç","Balta","Casus","Hafif","Ağır","Şah","Man","Misyoner"];}
  127. else if ( kontrol1 == "-1" )
  128. {var unitss=["Mızrak","Kılıç","Balta","Casus","Hafif","Ağır","Şah","Man","Şövalye","Misyoner"];}
  129. else if ( kontrol2 == "-1" )
  130. {var unitss=["Mızrak","Kılıç","Balta","Okçu","Casus","Hafif","A.Okçu","Ağır","Şah","Man","Misyoner"];}
  131. else
  132. {var unitss=["Mızrak","Kılıç","Balta","Okçu","Casus","Hafif","A.Okçu","Ağır","Şah","Man","Şövalye","Misyoner"];}
  133. var datee=launchTime.toString();
  134. var dayy=datee.substring(0,3);
  135. var monthh=datee.substring(4,7);
  136. var day_num=datee.substring(8,10);
  137. var year=datee.substring(11,15);
  138. var days=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"];
  139. var gunler=["Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi","Pazar"];
  140. var months=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
  141. var aylar=["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"];
  142. for(j=0;j<days.length;j++){
  143. if (dayy==days[j]){
  144. var day=gunler[j];
  145. }
  146. };
  147. for(k=0;k<months.length;k++){
  148. if (monthh==months[k]){
  149. var month=aylar[k];
  150. }
  151. };
  152. var time=datee.substring(16,24);
  153. output.push([launchTime.getTime(),unitss[ii]+"("+troop_count+") "+source+" köyünden [u]"+day_num+" "+ month+" "+day+"[/u] [b]"+time+"[/b]",e]);
  154. }
  155. }
  156. }
  157. }
  158. }
  159. win.$(e).attr("style","display:"+(isVisible?"table-row":"none"));
  160. });
  161. /* Sort by Launch Time in Ascending Order */
  162. output = output.sort(function(a,b){return (a[0]-b[0]);});
  163. for(var qq=0;qq<output.length;qq++){win.$("#combined_table").get(0).tBodies[0].appendChild(output[qq][2]);}
  164. /* Clear existing messages and display version */
  165. var srcHTML = "";
  166. srcHTML += "<span style=\"color:red;font-weight:bold\"><center>SALDIRI PLANLAYICISI</center></span>";
  167. srcHTML += "<span style=\"color:green;font-weight:bold\"><center><sub>Broken Castle & Trafik tarafından düzenlenmiştir</sub></center></span>";
  168. srcHTML += "<br/>";
  169. if(output.length > 0){
  170. srcHTML += "<div align=\"center\"><textarea wrap=\"off\" readonly=\"yes\" cols=\"80\" rows=\"" + (output.length+4) + "\" style=\"width:75%;background-color:transparent;border:2px solid #765942;border-radius:10px;\" onfocus=\"this.select();\">";
  171. srcHTML += "[b]Hedef Köy:[/b] "+target+"\n[spoiler=Süreler]\n";
  172. for(ii=0;ii<output.length;ii++){
  173. srcHTML += output[ii][1] + "\n";
  174. }
  175. srcHTML += "\n[/spoiler]</textarea></div><br/><br/><br/>";
  176. }
  177. else{
  178. srcHTML += "<div align=\"center\"><textarea wrap=\"off\" readonly=\"yes\" cols=\"80\" rows=\"5\" style=\"text-align: center;width:75%;background-color:transparent;border:2px solid #765942;border-radius:10px;\"> \nHiçbir birim istenilen sürede köye yetişemiyor!\n\n Korkusuz Mert Açık (KMA)</textarea></div>";
  179. }
  180. win.$("#snipe_output").html("");
  181. win.$("#snipe_output").append(win.$(srcHTML));
  182. }
  183. try{
  184. if(game_data.screen == 'overview_villages' && game_data.mode == 'combined')
  185. {
  186. var author="dalesmckay@gmail.com";
  187. var minVer="2.0";
  188. //var win=(window.frames.length>0)?window.main:window;
  189. var win = window;
  190. var ver=win.game_data.version.match(/[\d|\.]+/g);
  191. if(!ver||(parseFloat(ver[1])<minVer)){
  192. alert("Bu script en az v"+minVer+" veya daha üstü bir sürüm gerektirir. \nSenin versiyonun: v"+ver[1]);
  193. }
  194. else if(win.$("#snipe_output").length <= 0){
  195. var msPerSec=1000;
  196. var secsPerMin=60;
  197. var minsPerHour=60;
  198. var hrsPerDay=24;
  199. var msPerMin=msPerSec*secsPerMin;
  200. var msPerHour=msPerMin*minsPerHour;
  201. var msPerDay=msPerHour*hrsPerDay;
  202. var minsPerDay=hrsPerDay*minsPerHour;
  203. var version='v4.0';
  204. var unitConfig=fnCreateUnitConfig();
  205. fnInjectOverviewBar();
  206. }
  207. }
  208. else
  209. {
  210. UI.InfoMessage('Kombine Sayfasına Gidiliyor', 3000, 'success');
  211. window.location = game_data.link_base_pure + 'overview_villages&mode=combined';
  212. }
  213. }
  214. catch(objError){
  215. var dbgMsg="Error: " + String(objError.message||objError);
  216. alert(dbgMsg);
  217. }