Advertisement
Guest User

s

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