Advertisement
Guest User

cheeky script

a guest
Jun 25th, 2014
384
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.63 KB | None | 0 0
  1. // ==UserScript==
  2. // @name Tagpro SpinPupsTimers
  3. // @namespace http://*.koalabeast.com:*
  4. // @version 1.4.1
  5. // @description Shows ball spin, empty power-up tiles & timers. also PPG text pack
  6. // @match http://koalabeast.com
  7. // @copyright 2014+, Ly and a little bit of Cumflakes & 420
  8. // @include http://tagpro-*.koalabeast.com:*
  9. // @include http://tangent.jukejuice.com:*
  10. // @include http://maptest.newcompte.fr:*
  11. // @include http://justletme.be:*
  12. // ==/UserScript==
  13.  
  14. tagpro.ready(function(){
  15.  
  16. //This is important.
  17. if(tagpro.events.drawPlayer)
  18. return;
  19. //Textures.Change at will
  20. var image = new Image();
  21. image.src = "http://i.imgur.com/2PLWzgV.png";
  22. document.getElementById("tiles").src = "http://i.imgur.com/HB2OecD.png";
  23. document.getElementById("splats").src = "http://i.imgur.com/onbZ4Bc.png";
  24. document.getElementById("speedpad").src = "http://i.imgur.com/yqF0WRE.png";
  25. document.getElementById("speedpadred").src = "http://i.imgur.com/eip9Kqt.png";
  26. document.getElementById("speedpadblue").src = "http://i.imgur.com/3IF7ljc.png";
  27. document.getElementById("portal").src = "http://i.imgur.com/A4nhUp9.png";
  28. //Empty power-up tile. Located beneath the other powerups
  29. tagpro.tiles[6]["x"] = 12;
  30. tagpro.tiles[6]["y"] = 8;
  31.  
  32. tagpro.events.register({
  33. drawPlayer: function(player, context, drawPos, TILESIZE) {
  34.  
  35. if (player.team == 1)
  36. context.drawImage(image, 3 * 40, 0, 40, 40, drawPos.x, drawPos.y, 40 / tagpro.zoom, 40 / tagpro.zoom);
  37. if (player.team == 2)
  38. context.drawImage(image, 1 * 40, 0, 40, 40, drawPos.x, drawPos.y, 40 / tagpro.zoom, 40 / tagpro.zoom);
  39.  
  40. var radian = (Math.PI / 180),
  41. points = [],
  42. angle = (player.angle/radian % 360)+360;
  43.  
  44. for (i = 0; i < 10; i++) {
  45. var iAngle = angle + 360 / 10 * i,
  46. side = ((iAngle + 270) % 360 > 180) ? 0 : -0,
  47. outerAngle = (iAngle + 90) % 180,
  48. outerAngle = (side > 0) ? 180 - outerAngle : outerAngle,
  49. offset = (-8.546e-10 * Math.pow(outerAngle, 5)
  50. + 4.311e-7 * Math.pow(outerAngle, 4)
  51. - 6.669e-5 * Math.pow(outerAngle, 3)
  52. + 0.001099 * Math.pow(outerAngle, 2)
  53. + 0.3462 * outerAngle),
  54. innerX = 18 * Math.cos(iAngle * radian) / tagpro.zoom,
  55. innerY = 18 * Math.sin(iAngle * radian) / tagpro.zoom,
  56. outerX = 30 * Math.cos((iAngle + offset * side) * radian) / tagpro.zoom,
  57. outerY = 30 * Math.sin((iAngle + offset * side) * radian) / tagpro.zoom;
  58.  
  59. points.push({ix: innerX, iy: innerY, ox: outerX, oy: outerY});
  60. }
  61.  
  62. for (i = 0; i < points.length; i += 2) {
  63. var color = (player.team == 1) ? 2 : 0;
  64. first = points[i],
  65. second = points[(i + 1) % points.length];
  66.  
  67. context.save();
  68. context.beginPath();
  69. context.moveTo(drawPos.x + 20 / tagpro.zoom, drawPos.y + 20 / tagpro.zoom);
  70. context.quadraticCurveTo(drawPos.x + first.ix + 20 / tagpro.zoom, drawPos.y + first.iy + 20 / tagpro.zoom, drawPos.x + first.ox + 20 / tagpro.zoom, drawPos.y + first.oy + 20 / tagpro.zoom);
  71. context.lineTo(drawPos.x + second.ox + 20 / tagpro.zoom, drawPos.y + second.oy + 20 / tagpro.zoom);
  72. context.quadraticCurveTo(drawPos.x + second.ix + 20 / tagpro.zoom, drawPos.y + second.iy + 20 / tagpro.zoom, drawPos.x + 20 / tagpro.zoom, drawPos.y + 20 / tagpro.zoom);
  73. context.clip();
  74. context.drawImage(image, color * 40, 0, 40, 40 , drawPos.x, drawPos.y, 40 / tagpro.zoom, 40 / tagpro.zoom);
  75. context.restore();
  76. context.closePath();
  77. }
  78.  
  79. if (player.tagpro)
  80. context.drawImage(image, 5 * 40, 0, 40, 40 , drawPos.x, drawPos.y, 40 / tagpro.zoom, 40 / tagpro.zoom);
  81. else
  82. context.drawImage(image, 4 * 40, 0, 40, 40 , drawPos.x, drawPos.y, 40 / tagpro.zoom, 40 / tagpro.zoom);
  83.  
  84. if (player.bomb && Math.round(Math.random() * 4) == 1) {
  85. context.globalAlpha = 0.7;
  86. context.drawImage(image, 6 * 40, 0, 40, 40 , drawPos.x, drawPos.y, 40 / tagpro.zoom, 40 / tagpro.zoom);
  87. context.globalAlpha = 1;
  88. }
  89. }
  90. });
  91. });
  92. //Arrays for juke juices
  93. gripExpires={};
  94. gripTimerStarted={};
  95. gripLeft = {};
  96.  
  97. //Arrays for rolling bombs
  98. bombExpires={};
  99. bombTimerStarted={};
  100. bombLeft = {};
  101.  
  102. //Arrays for tagpros
  103. tagproExpires={};
  104. tagproTimerStarted={};
  105. tagproLeft = {};
  106.  
  107. //Array for old degrees (Since we will be replacing the current degree
  108. degree = {};
  109.  
  110. //Array to see if a player has been checked
  111. checked = {};
  112.  
  113. tileMark = {};
  114. tileTimer = {};
  115. powerups = {};
  116.  
  117. tagpro.tiles[6]["x"] = 12;
  118. tagpro.tiles[6]["y"] = 8;
  119.  
  120.  
  121. //Others (???)
  122. //tagpro.tiles.draw=function(e,t,n,r,i,u,a){a=a||!1;var f=tagpro.tiles[t];if(!f)return;r=r||40,i=i||40,this.firstLoad&&f.drawFloor&&tagpro.tiles.draw(e,2,n,undefined,undefined,undefined,a);if(f.draw){var l=n.x+","+n.y,c=s[l];this.firstLoad&&tagpro.tiles.draw(e,2,n,undefined,undefined,undefined,a),c?c.tile=f:s[l]={tile:f,context:e,pos:{x:n.x,y:n.y}}}else{var h=f.spread||0,p=(f.size||r)*(a?1/tagpro.zoom:1),d=(f.size||i)*(a?1/tagpro.zoom:1),v=function(){u!=undefined&&(e.globalAlpha=u),f.drawFloor&&tagpro.tiles.draw(e,2,n,undefined,undefined,undefined,a),f.isFlag&&tagpro.events.drawFlag?tagpro.events.drawFlag.forEach(function(t){t.drawFlag(e,n,p,d)}):e.drawImage(tagpro.tiles.image,f.x*40-h,f.y*40-h,(f.size||40)+h*2,(f.size||40)+h*2,n.x-h,n.y-h,p+h*2,d+h*2),e.globalAlpha=1};h?(o.push(v),n={x:n.x,y:n.y}):v()}};
  123.  
  124. //Maptest(???)
  125. //tagpro.tiles.draw=function(e,t,n,r,i,u,a){a=a||!1;var f=tagpro.tiles[t];if(!f)return;r=r||40,i=i||40,this.firstLoad&&f.drawFloor&&tagpro.tiles.draw(e,2,n,undefined,undefined,undefined,a);if(f.draw){var l=n.x+","+n.y,c=s[l];this.firstLoad&&tagpro.tiles.draw(e,2,n,undefined,undefined,undefined,a),c?c.tile=f:s[l]={tile:f,context:e,pos:{x:n.x,y:n.y}}}else{if(t==6)createTimer(n.x,n.y);var h=f.spread||0,p=(f.size||r)*(a?1/tagpro.zoom:1),d=(f.size||i)*(a?1/tagpro.zoom:1),v=function(){u!=undefined&&(e.globalAlpha=u),f.drawFloor&&tagpro.tiles.draw(e,2,n,undefined,undefined,undefined,a),e.drawImage(tagpro.tiles.image,f.x*40-h,f.y*40-h,(f.size||40)+h*2,(f.size||40)+h*2,n.x-h,n.y-h,p+h*2,d+h*2),e.globalAlpha=1};h?(o.push(v),n={x:n.x,y:n.y}):v()}};
  126.  
  127. /* tagpro.tiles.draw = function (e,t,n,r,i,u,a){
  128. a=a||!1;
  129. var f=tagpro.tiles[t];
  130. if(!f) return;
  131. r=r||40,i=i||40,this.firstLoad&&f.drawFloor&&tagpro.tiles.draw(e,2,n,undefined,undefined,undefined,a);
  132.  
  133. var h=f.spread||0,p=(f.size||r)*(a?1/tagpro.zoom:1),d=(f.size||i)*(a?1/tagpro.zoom:1),v=function(){u!=undefined&&(e.globalAlpha=u),f.drawFloor&&tagpro.tiles.draw(e,2,n,undefined,undefined,undefined,a),e.drawImage(tagpro.tiles.image,f.x*40-h,f.y*40-h,(f.size||40)+h*2,(f.size||40)+h*2,n.x-h,n.y-h,p+h*2,d+h*2),e.globalAlpha=1};h?(o.push(v),n={x:n.x,y:n.y}):v()
  134. if (t==6) {
  135. e.font="18px Helvetica";
  136. e.fillStyle="white";
  137. e.fillText(gameClock-60, n.x+8, n.y+28);
  138. //createTimer(n.x,n.y);
  139. }
  140.  
  141. }*/
  142.  
  143. /*function addPowerup(x,y,type,respawnTime) {
  144. var delta = x+"_"+y;
  145.  
  146. for (var i=0; i<powerups.length; i++)
  147. if (powerups[i].delta==delta) {
  148. powerups.splice(i,1);
  149. break;
  150. }
  151.  
  152. powerups[delta] = {delta: delta, x: x, y: y, type: type, respawnTime: respawnTime};
  153. };
  154. */
  155. tagpro.flair.draw = function(t,n,r){
  156. var img=document.getElementById("flair");
  157. t.drawImage(img,r.x*16,r.y*16,16,16,n.x+13,n.y-16,16,16)
  158. };
  159.  
  160. tagpro.ui.createPlayerCache = function f(e){e.cache={canvas:$("<canvas></canvas>").attr("width",125).attr("height",35).get(0)},e.degreeCache={canvas:$("<canvas></canvas>").attr("width",45).attr("height",35).get(0)},e.cache.context=e.cache.canvas.getContext("2d"),e.degreeCache.context=e.degreeCache.canvas.getContext("2d"),e.cache.update=function(){e.cache.context.clearRect(0,0,125,35),e.degreeCache.context.clearRect(0,0,45,35);var t=e.auth?"#BFFF00":"#ffffff";tagpro.settings.ui.names&&tagpro.prettyText(e.name,15,15,t,!1,!1,e.cache.context),e.degree&&tagpro.settings.ui.degrees&&tagpro.prettyText(e.degree,20,15,"#ffffff",!1,!1,e.degreeCache.context)},e.cache.update()};
  161.  
  162. //Start up the loop...
  163. setInterval(function(){
  164.  
  165. //Loop through the players object
  166. for(player in tagpro.players){
  167.  
  168. //This is for players that do not currently have flair
  169. tagpro.players[player].flair = tagpro.players[player].flair || { }
  170.  
  171.  
  172. //Extend the width of the degree area so more text will fit in it..
  173. tagpro.players[player].degreeCache.context.canvas.width=500;
  174.  
  175. //Juke juice checking...
  176. if (tagpro.players[player].grip) {
  177. if (gripTimerStarted[player]!=true) {
  178. gripExpires[player] = Math.round(new Date().getTime() / 1000)+21;
  179. gripTimerStarted[player]=true;
  180. }
  181. gripLeft[player] = gripExpires[player]-Math.round(new Date().getTime() / 1000);
  182. }
  183. else {
  184. gripLeft[player]=0;
  185. gripTimerStarted[player]=false;
  186. }
  187.  
  188. //Rolling bomb checking...
  189. if (tagpro.players[player].bomb) {
  190. if (bombTimerStarted[player]!=true) {
  191. bombExpires[player] = Math.round(new Date().getTime() / 1000)+21;
  192. bombTimerStarted[player]=true;
  193. }
  194. bombLeft[player] = bombExpires[player]-Math.round(new Date().getTime() / 1000);
  195. }
  196. else {
  197. bombLeft[player]=0;
  198. bombTimerStarted[player]=false;
  199. }
  200.  
  201. //Tagpro checking..
  202. if (tagpro.players[player].tagpro) {
  203. if (tagproTimerStarted[player]!=true) {
  204. tagproExpires[player] = Math.round(new Date().getTime() / 1000)+21;
  205. tagproTimerStarted[player]=true;
  206. }
  207. tagproLeft[player] = tagproExpires[player]-Math.round(new Date().getTime() / 1000);
  208. }
  209. else {
  210. tagproLeft[player]=0;
  211. tagproTimerStarted[player]=false;
  212. }
  213.  
  214. //If this is the first time seeing the player, store their degree, and add it to their name
  215. if (checked[player]!=true) {
  216. degree[player]=tagpro.players[player].degree;
  217. tagpro.players[player].name = tagpro.players[player].name + " ("+degree[player]+")";
  218. }
  219.  
  220.  
  221.  
  222. //Update the players degree with the times of the current powerups
  223. tagpro.players[player].degree="";
  224.  
  225. if (gripLeft[player]>0) tagpro.players[player].degree="JJ: "+gripLeft[player];
  226.  
  227. if (gripLeft[player]>0 && (bombLeft[player]>0 || tagproLeft[player]>0)) tagpro.players[player].degree=tagpro.players[player].degree+" | ";
  228.  
  229. if (bombLeft[player]>0) tagpro.players[player].degree=tagpro.players[player].degree+"RB: "+bombLeft[player];
  230.  
  231. if (bombLeft[player]>0 && tagproLeft[player]>0) tagpro.players[player].degree=tagpro.players[player].degree+" | ";
  232.  
  233. if (tagproLeft[player]>0) tagpro.players[player].degree=tagpro.players[player].degree+"TP: "+tagproLeft[player];
  234.  
  235.  
  236. //Update the players cache so it actually shows up in game
  237. tagpro.players[player].cache.update();
  238.  
  239. //Check the player off
  240. checked[player] = true;
  241. }
  242.  
  243. //Redraw player (???)
  244. //6: PU Spawn
  245. //6.1: JJ
  246. //6.2: RB
  247. //6.3: TP
  248. /* for(collumn in tagpro.map){
  249. for(tile in tagpro.map[collumn]){
  250. if(tagpro.map[collumn][tile]==6.1) {
  251. addPowerup(collumn,tile,"Juke Juice",0);
  252. }
  253. if(tagpro.map[collumn][tile]==6.2) {
  254. addPowerup(collumn,tile,"Rolling Romb",0);
  255. }
  256. if(tagpro.map[collumn][tile]==6.3) {
  257. addPowerup(collumn,tile,"TagPro",0);
  258. }
  259. if(tagpro.map[collumn][tile]==6) {
  260.  
  261. var delta = collumn+"_"+tile;
  262. for (var i=0; i<powerups.length; i++)
  263. if (powerups[i].delta==delta) var added=true;
  264.  
  265. if (added=!true) {
  266. var respawnTime = Math.round(new Date().getTime() / 1000)+60;
  267. addPowerup(collumn,tile,"Unknown",respawnTime);
  268. }
  269. }
  270. }
  271. }
  272.  
  273. console.clear();
  274. powerups.forEach(function(powerup){
  275. var secondsUntilRespawn = powerup.respawnTime - Math.round(new Date().getTime() / 1000);
  276. console.log("X: "+powerup.x+" | Y: "+powerup.y+" | Type: "+powerup.type+" | Respawns in: "+secondsUntilRespawn);
  277. //if (secondsUntilRespawn<1) powerups.splice(powerup,1);
  278. });
  279. */
  280.  
  281. },200);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement