Advertisement
7zgi

snipe

Apr 11th, 2020
4,215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. javascript:
  2. if (game_data.player.premium === false) {
  3.     alert("يجب ان تكون مفعل العضوية الخاصة لإستخدام هذا السكربت");
  4.     end();
  5. }
  6. unitnames = {
  7.   "spear":"[unit]spear[/unit]",
  8.   "sword":"[unit]sword[/unit]",
  9.   "axe":"[unit]axe[/unit]",
  10.     "spy":"[unit]spy[/unit]",
  11. "light":"[unit]light[/unit]",
  12.   "heavy":"[unit]heavy[/unit]",
  13.   "ram":"[unit]ram[/unit]",
  14.   "catapult":"[unit]catapult[/unit]",
  15.   "knight":"[unit]knight[/unit]",
  16.   "snob":"[unit]snob[/unit]"
  17.  
  18. };
  19. function fnInjectOverviewBar(){
  20.     /* Default to your own currently active village */
  21.     var defaultCoords = fnExtractCoords(win.$("title").html());
  22.  
  23.     /* Default to midnight of next day */
  24.     var defaultDate = new Date();
  25.     defaultDate.setTime(((Math.floor(defaultDate.getTime()/msPerDay)+1)*minsPerDay + defaultDate.getTimezoneOffset())*msPerMin);
  26.     defaultDate = defaultDate.toString().replace(/\w+\s*/i,"").replace(/(\d*:\d*:\d*)(.*)/i,"$1");
  27.  
  28.     /* Perform the injection */
  29.     fnInjectUnits();
  30.     win.$('<center><div  class="vis moveable widget"style="width:50%"><tb></tb><br style="color:MediumBlue">إحداثيات القريه: <input id="snipe_coord" style="color:MediumBlue" value="'+defaultCoords+'" class="text-input inactive" size="7" onFocus="this.select()" style="color:MediumBlue" /> وقت وصول الهجمة: <input id="arrival_time" size="25" style="color:MediumBlue" class="text-input inactive" value="'+defaultDate+'" onFocus="this.select()" /><br><input type="button" class="btn btn evt-confirm-btn" value="نتائج القنص" onClick="fnCalculateBackTime()" /></table></div></center>').appendTo(win.$('#paged_view_content table:first'));
  31.     win.$('<center><div id="snipe_output"><br/><h4 style="color:Black">تم تعديل السكربت من قبل <a style="color:MediumBlue" href="https://forum.tribalwars.ae/member.php?u=38997" target="_blank">Abu.Rajih</a></h4></br><br/></div></center>').appendTo(win.$('#content_value'));
  32.   }
  33.  
  34. function fnExtractCoords(src){
  35.     var vv=src.match(/\d+\|\d+/ig);
  36.     return (vv?vv[vv.length-1]:null);
  37. }
  38.  
  39. function fnCalculateDistance(to,from){
  40.     var target = fnExtractCoords(to).match(/(\d+)\|(\d+)/);
  41.     var source = fnExtractCoords(from).match(/(\d+)\|(\d+)/);
  42.     var fields = Math.sqrt(Math.pow(source[1]-target[1],2)+Math.pow(source[2]-target[2],2));
  43.  
  44.     return fields;
  45. }
  46.  
  47. function fnDebugLog(msg){win.$("body").append("<span>"+msg+"</span><br/>");}
  48.  
  49. /* sendMethod = "GET" || "POST", params = json, type = xml,json,text */
  50. function fnAjaxRequest(url,sendMethod,params,type){
  51.     var error=null,payload=null;
  52.  
  53.     win.$.ajax({
  54.         "async":false,
  55.         "url":url,
  56.         "data":params,
  57.         "dataType":type,
  58.         "type":String(sendMethod||"GET").toUpperCase(),
  59.         "error":function(req,status,err){error="ajax: " + status;},
  60.         "success":function(data,status,req){payload=data;}
  61.     });
  62.  
  63.     if(error){
  64.         throw(error);
  65.     }
  66.  
  67.     return payload;
  68. }
  69.  
  70. function fnCreateConfig(name){return win.$(fnAjaxRequest("/interface.php","GET",{"func":name},"xml")).find("config");}
  71. function fnCreateUnitConfig(){return fnCreateConfig("get_unit_info");}
  72. function fnCreateWorldConfig(){return fnCreateConfig("get_config");}
  73.  
  74. function fnCalculateLaunchTime(source,target,unit,landingTime){
  75.     var distance = fnCalculateDistance(target,source);
  76.     var unitSpeed = unitConfig.find(unit+" speed").text();
  77. }
  78.     function fnCreateConfig(name){return win.$(fnAjaxRequest("/interface.php","GET",{"func":name},"xml")).find("config");}
  79. function fnCreateUnitConfig(){return fnCreateConfig("get_unit_info");}
  80. function fnCreateWorldConfig(){return fnCreateConfig("get_config");}
  81.  
  82. function fnCalculateLaunchTime(source,target,unit,landingTime){
  83.     var distance = fnCalculateDistance(target,source);
  84.     var unitSpeed = unitConfig.find(unit+" speed").text();
  85.    
  86.      
  87.    /* Convert minutes to milli-seconds */
  88.     var unitTime = distance*unitSpeed*msPerMin;
  89.  
  90.     /* Truncate milli-second portion of the time */
  91.     var launchTime = new Date();
  92.     launchTime.setTime(Math.round((landingTime.getTime() - unitTime)/msPerSec)*msPerSec);
  93.  
  94.     return launchTime;
  95. }
  96.  
  97. function fnWriteCookie(ele){
  98.     var snipeConfig="";
  99.     win.$("#combined_table tr:first th img[src*=unit_]").each(function(i,e){
  100.         snipeConfig+=win.$("#view_"+e.src.match(/unit\_(.+)\.png?/i)[1]).is(':checked')?"1":"0";
  101.     });
  102.  
  103.     var cookie_date=new Date(2099,11,11);
  104.     win.document.cookie='$snipe='+snipeConfig+';expires='+cookie_date.toGMTString();
  105. }
  106.  
  107. function fnInjectUnits(){
  108.     var twCookie=win.document.cookie.match(/\$snipe\=([0|1]*)/i);
  109.     if(twCookie){
  110.         twCookie=twCookie[1];
  111.         for(var ii=0;ii<twCookie.length;ii++){
  112.         }
  113.     }
  114.  
  115.     win.$("#combined_table tr:first th img[src*=unit_]").each(function(i,e){
  116.         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));
  117.                 //win.$('<input type="checkbox" '+' id="view_'+e.src.match(/unit\_(.+)\.png?/i)[1]+'" OnClick="fnWriteCookie(this);"/>').insertBefore(win.$(this));
  118.     });
  119.     win.$("#combined_table tr:first th:has(img[src*=unit_])").attr("style","background-color:yellow");
  120. }
  121.  
  122. function fnExtractUnits(){
  123.     var units=[];
  124.  
  125.     win.$("#combined_table tr:first th img[src*=unit_]").each(function(i,e){
  126.         units.push(e.src.match(/unit\_(.+)\.png?/i)[1]);
  127.     });
  128.  
  129.     return units;
  130. }
  131.  
  132. function fnCalculateBackTime(){
  133.     var worldConfig = fnCreateWorldConfig();
  134.     var hasChurch = worldConfig && parseInt(worldConfig.find("game church").text()||"0", 10);
  135.     /*var arrivalTime = new Date(win.$("#arrival_time").attr("value").split(":").slice(0,3).join(":"));
  136.     var target = win.$("#snipe_coord").attr("value");*/
  137.     var arrivalTime = new Date(document.getElementById("arrival_time").value.split(":").slice(0,3).join(":"));
  138.     var target = document.getElementById("snipe_coord").value;
  139.     var servertime = win.$("#serverTime").html().match(/\d+/g);
  140.     var serverDate = win.$("#serverDate").html().match(/\d+/g);
  141.     serverTime = new Date(serverDate[1]+"/"+serverDate[0]+"/"+serverDate[2]+" "+servertime.join(":"));
  142.     var output = [];
  143.     var ii,troop_count,source,launchTime;
  144.     var units=fnExtractUnits();
  145.  
  146.     /* Loop through your own villages */
  147.     win.$("#combined_table tr:gt(0)").each(function(i,e){
  148.         source = fnExtractCoords($(this).find("td:eq(1)").html());
  149.         if(source != target){
  150.             var isVisible = false;
  151.  
  152.             /* Process Each Unit */
  153.             for(ii=0;ii<units.length;ii++){
  154.                 if(win.$("#view_"+units[ii]).attr("checked")){
  155.                                 if(win.$("#view_"+units[ii]).is(':checked')){
  156.                     troop_count = parseInt($(this).find("td:eq("+(ii+(hasChurch?9:8))+")").text(),10);
  157.  
  158.                     /* Do we have Units currently Available */
  159.                      if(troop_count > 0){
  160.                         launchTime=fnCalculateLaunchTime(source,target,units[ii],arrivalTime);
  161.  
  162.                         /* Cache Units that can reach the target on time */
  163.                         if(launchTime.getTime() > serverTime.getTime()){
  164.                             isVisible = true;
  165.                             output.push([launchTime.getTime(),"أرسل    ("+unitnames[units[ii]]+"   " + troop_count + ")   من   "+source+"   إلى    "+target+"   في    "+launchTime.toString().replace(/(\d*:\d*:\d*)(.*)/i,"$1"),e]);
  166.                      }
  167.                 }
  168.             }
  169.         }
  170.  
  171.         win.$(e).attr("style","display:"+(isVisible?"table-row":"none"));
  172.         }
  173.       }
  174.     });
  175.  
  176.     /* Sort by Launch Time in Ascending Order */
  177.     output = output.sort(function(a,b){return (a[0]-b[0]);});
  178.     for(var qq=0;qq<output.length;qq++){win.$("#combined_table").get(0).tBodies[0].appendChild(output[qq][2]);}
  179.  
  180.     /* Clear existing messages and display version */
  181.     var srcHTML = "";
  182.     srcHTML += "<br/>";
  183. win.$('<center><div id="snipe_output"><br/><h4 style="color:Black">تم تعديل السكربت من قبل <a style="color:MediumBlue" href="https://forum.tribalwars.ae/member.php?u=38997" target="_blank">Abu.Rajih</a></h4></br><br/></div></center>').appendTo(win.$('#content_value'));
  184.     srcHTML += "<br/>";
  185.  
  186.     if(output.length > 0){
  187.         srcHTML += "<div align=\"center\"><textarea wrap=\"off\" readonly=\"yes\" cols=\"80\" rows=\"" + (output.length+1) + "\" style=\"width:95%;background-color:transparent;\" onfocus=\"this.select();\">";
  188.  
  189.         for(ii=0;ii<output.length;ii++){
  190.             srcHTML += output[ii][1] + "\n";
  191.         }
  192.         srcHTML += "</textarea></div>";
  193.     }
  194.     else{
  195.         srcHTML += "<h2 style='color:Black;'>لا توجد محاولات</h2>";
  196.     }
  197.     srcHTML += "<br/><br/><br/>";
  198.     win.$("#snipe_output").html("");
  199.     win.$("#snipe_output").append(win.$(srcHTML));
  200. }
  201. try{
  202.     var author="salim.rageh45@gmail.com";
  203.     var minVer="7.0";
  204.     var win=(window.frames.length>0)?window.main:window;
  205.     var ver=win.game_data.version.match(/[\d|\.]+/g);
  206.     if(win.$("#snipe_output").length <= 0){
  207.         var msPerSec=1000;
  208.         var secsPerMin=60;
  209.         var minsPerHour=60;
  210.         var hrsPerDay=24;
  211.         var msPerMin=msPerSec*secsPerMin;
  212.         var msPerHour=msPerMin*minsPerHour;
  213.         var msPerDay=msPerHour*hrsPerDay;
  214.         var minsPerDay=hrsPerDay*minsPerHour;
  215.         var version='v15.00';
  216.         var unitConfig=fnCreateUnitConfig();
  217.         fnInjectOverviewBar();
  218.     }
  219.     else
  220.     {
  221.         UI.InfoMessage('السكربت يعمل من الشكل العام...', 1000, 'success');
  222.         window.location = game_data.link_base_pure + 'overview_villages&mode=combined';
  223.      
  224.     }
  225. }
  226. catch(objError){
  227.     var dbgMsg="Error: " + String(objError.message||objError);
  228.     alert(dbgMsg);
  229. }
  230.  
  231. void (0);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement