Advertisement
Guest User

Untitled

a guest
May 19th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.59 KB | None | 0 0
  1. // ==UserScript==
  2. // @name TagPro Easter Aim Helper
  3. // @version 0.4.2
  4. // @author Some Ball -1
  5. // @include http://tagpro-*.koalabeast.com:*
  6. // @grant none
  7. // ==/UserScript==
  8. /* jshint -W097 */
  9. 'use strict';
  10.  
  11. var wait = 0;
  12. tagpro.ready(function init() {
  13. var rotation = false;
  14. var rotationSpeed = 0.25; //number in radians to change each step
  15. var rotationFreq = 50; //milliseconds between rotation steps
  16.  
  17. var lineWidth = 23; //23 is default
  18.  
  19. var showCount = true;
  20.  
  21. var clickThroughScoreboard = false; //will not be able to report or change name via scoreboard if enabled
  22.  
  23. var disableRightClickOnCanvas = false; //also allows right click to shoot if enabled
  24.  
  25. var customEggs = false;
  26. var redEgg = 'http://i.imgur.com/K0B2Nem.png';
  27. var blueEgg = 'http://i.imgur.com/4bqBaDp.png';
  28.  
  29. var customCrosshair = 'http://i.imgur.com/SqgcQCb.png'; //url for custom crosshair image, designed for a 32x32 image; set to empty single quote marks, '', to disable
  30.  
  31.  
  32. var tr = tagpro.renderer;
  33. if(!tr.stage.click) {
  34. if(wait>25) return;
  35. wait++;
  36. return setTimeout(init,10);
  37. }
  38.  
  39.  
  40. if(clickThroughScoreboard) $('#options').css('pointer-events','none');
  41.  
  42. var mousePos = {x: 0, y: 0};
  43. if(customCrosshair) {
  44. $("<style type='text/css'>canvas{cursor: url("+customCrosshair+") 16 16, crosshair !important;}</style>").appendTo("head");
  45. $('body').append('<img id="crosshair" src='+customCrosshair+' style="display: none; position: absolute; pointer-events: none;">');
  46. $(document).keydown(function(e) {
  47. if(tagpro.disableControls) return;
  48. $('#crosshair').show().css({top: (mousePos.y-16)+'px', left: (mousePos.x+17)+'px'});
  49. });
  50. }
  51.  
  52. var usps = tr.updatePlayerSpritePosition;
  53. tr.updatePlayerSpritePosition = function(player) {
  54. if(player.id===tagpro.playerId && (!player.sprites.mouseLine || !player.sprites.mouseLine.parent)) {
  55. var rect = new PIXI.Graphics();
  56. rect.beginFill(player.team===1?0xff0000:0x0000ff).drawRect(0,0,lineWidth,40*15).alpha = 0.5;
  57. rect.pivot.set(lineWidth/2,-lineWidth/2);
  58. rect.position.set(20,20);
  59. player.sprites.mouseLine = rect;
  60. player.sprites.ball.addChildAt(player.sprites.mouseLine,0);
  61. }
  62. return usps.apply(this,arguments);
  63. }
  64.  
  65. if(customEggs) {
  66. tr.drawMarsball = function(object, position) {
  67. if (object.type == "marsball") {
  68. return oldDrawMarsball(object, position);
  69. }
  70.  
  71. if (object.type !== "egg") {
  72. return;
  73. }
  74.  
  75. if (tagpro.spectator) {
  76. object.draw = true;
  77. }
  78.  
  79. if (object.team === "Red") {
  80. object.sprite = new PIXI.Sprite.fromImage(redEgg);
  81. } else {
  82. object.sprite = new PIXI.Sprite.fromImage(blueEgg);
  83. }
  84.  
  85. object.sprite.position.x = position.x;
  86. object.sprite.position.y = position.y;
  87. object.sprite.pivot.set(-8, -4);
  88.  
  89. tagpro.renderer.layers.foreground.addChild(object.sprite);
  90.  
  91. object.sprite.keep = true;
  92. if (!object.draw) {
  93. object.sprite.visible = false;
  94. }
  95. };
  96. }
  97.  
  98. function ab(v1,v2) { return Math.atan((v1.x-v2.x)/(v1.y-v2.y)) };
  99.  
  100. var clearable;
  101. function disableTint() {
  102. if(!clearable) {
  103. var me = tagpro.players[tagpro.playerId];
  104. if(me.sprites.mouseLine) me.sprites.mouseLine.tint = 0x000000;
  105. clearable = setTimeout(() => {
  106. if(me.sprites.mouseLine) me.sprites.mouseLine.tint = 0xffffff;
  107. clearable = false;
  108. }, 1000);
  109. }
  110. }
  111.  
  112. var pause = 0;
  113. tr.stage.interactive = true;
  114. tr.stage.click = function(event) {
  115. if(!event.originalEvent) {
  116. if(rotation) return;
  117. event.global = mousePos;
  118. }
  119.  
  120. //var pos = event.getLocalPosition(tr.gameContainer);
  121. var pos = {
  122. x: (event.global.x-tr.gameContainer.position.x)/tr.gameContainer.scale.x,
  123. y: (event.global.y-tr.gameContainer.position.y)/tr.gameContainer.scale.y
  124. };
  125. tagpro.socket.emit("click",pos);
  126. disableTint();
  127. };
  128. if(disableRightClickOnCanvas) {
  129. $('#viewport').attr('oncontextmenu','return false;');
  130. tr.stage.rightclick = function(event) {
  131. tr.stage.click(event);
  132. }
  133. }
  134. tr.stage.mousemove = function(event) {
  135. var me = tagpro.players[tagpro.playerId];
  136. if(!me.sprites.mouseLine) return;
  137. mousePos = event.global;//{x: event.originalEvent.pageX, y: event.originalEvent.pageY};
  138. $('#crosshair').hide();
  139. var pos = event.getLocalPosition(tr.gameContainer);
  140. pause = 1;
  141. me.sprites.mouseLine.rotation = Math.PI+(((Math.round(me.y)+20)<pos.y)?Math.PI:0)-ab({x: Math.round(me.x)+20,y: Math.round(me.y)+20},{x: pos.x,y: pos.y});
  142. };
  143.  
  144. $(document).click((event) => {
  145. if(event.target!=$('#viewport')[0]) {
  146. var e = {originalEvent: true};
  147. e.global = {x: event.pageX-parseInt($('#viewport').css('left')), y: event.pageY-parseInt($('#viewport').css('top'))};
  148. tr.stage.click(e);
  149. }
  150. });
  151.  
  152. if(showCount) {
  153. var pops = 0;
  154. var tags = 0;
  155. function makeCount(me) {
  156. me.sprites.count = tr.veryPrettyText(tags+' - '+pops, me.team===1?'#ff0000':'#2222ff');
  157. me.sprites.count.position.x = 4-Math.round((new PIXI.Text(tags+' - '+pops, {font: "bold 8pt Arial"})).width/2);
  158. me.sprites.count.position.y = 40;
  159. me.sprites.info.addChild(me.sprites.count);
  160. }
  161. tagpro.socket.on('p',(data) => {
  162. data = data.u || data;
  163. for(var i = 0;i < data.length;i++) {
  164. if(data[i].id===tagpro.playerId) {
  165. var me = tagpro.players[tagpro.playerId];
  166. if(me.sprites) {
  167. if(!me.sprites.count) makeCount(me);
  168. if(data[i]['s-pops'] || data[i]['s-tags']) {
  169. if(data[i]['s-pops']) pops = data[i]['s-pops'];
  170. if(data[i]['s-tags']) tags = data[i]['s-tags'];
  171. if(me.sprites.count) me.sprites.info.removeChild(me.sprites.count);
  172. makeCount(me);
  173. }
  174. }
  175. }
  176. }
  177. });
  178. }
  179.  
  180. if(rotation) {
  181. tagpro.events.register({
  182. keyDown: function(key) {
  183. var me = tagpro.players[tagpro.playerId];
  184. if(key==='space' && me.sprites && me.sprites.mouseLine) {
  185. var e = {originalEvent: true};
  186. e.global = {x: Math.round(me.x)+20-10*Math.sin(me.sprites.mouseLine.rotation)+tr.gameContainer.position.x,
  187. y: Math.round(me.y)+20+10*Math.cos(me.sprites.mouseLine.rotation)+tr.gameContainer.position.y};
  188. tr.stage.click(e);
  189. }
  190. }
  191. });
  192.  
  193. setInterval(function() {
  194. var me = tagpro.players[tagpro.playerId];
  195. if(pause>0) pause++;
  196. else if(me && me.sprites && me.sprites.mouseLine) me.sprites.mouseLine.rotation += rotationSpeed;
  197. if(pause>5) pause = 0;
  198. }, rotationFreq);
  199. }
  200. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement