Guest User

lol

a guest
Jun 17th, 2017
615
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.76 KB | None | 0 0
  1. // ==UserScript==
  2. // @name moomoo aim + heal
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.1
  5. // @description try to take over the world!
  6. // @author You
  7. // @match *://moomoo.io/*
  8. // @grant none
  9. // ==/UserScript==
  10.  
  11. var playersNear = [];
  12. var ws;
  13. var id;
  14. var user;
  15. var canvas = document.querySelector("#gameCanvas");
  16. var hasApple = true;
  17. var currentTarget;
  18.  
  19. function Player(id, x, y, tribe){
  20. this.id = id;
  21. this.x = x;
  22. this.y = y;
  23. this.tribe = tribe;
  24. }
  25.  
  26. Player.prototype.getAngle = function(){
  27. return Math.atan2(this.deltaY, this.deltaX);
  28. };
  29.  
  30. Player.prototype.getDistance = function(){
  31. return Math.sqrt(Math.pow(this.deltaX, 2) + Math.pow(this.deltaY, 2));
  32. };
  33.  
  34. function lookAtPointRelativeToCharacter(x, y){
  35. var centerX = innerWidth / 2;
  36. var centerY = innerHeight / 2;
  37. canvas.dispatchEvent(new MouseEvent("mousemove", {
  38. clientX: centerX + x,
  39. clientY: centerY + y
  40. }));
  41. }
  42.  
  43. WebSocket.prototype.oldSend = WebSocket.prototype.send;
  44. WebSocket.prototype.send = function(m){
  45. var parsed = parseWSMsg(m);
  46. if (currentTarget && parsed[0] === "2" && Math.abs(currentTarget.getAngle() - parsed[1]) > 0.0872665){
  47. aimAt(currentTarget);
  48. console.log("mouse moved");
  49. }
  50. this.oldSend(m);
  51. if (!ws){
  52. ws = this;
  53. socketFound(this);
  54. }
  55. };
  56.  
  57. function socketFound(socket){
  58. console.log("found socket object");
  59. socket.addEventListener('message', function(e){
  60. handleMessage(e);
  61. });
  62. }
  63.  
  64. function handleMessage(e){
  65. var m = e.data;
  66. //console.log(m);
  67. var parsed = parseWSMsg(m);
  68. if (parsed[0] === "3"){ //position update
  69. playersNear = [];
  70. var data = parsed[1];
  71. for (var i = 0; i < data.length ; i += 11) { //loop to assign chunks of the array to a player
  72. var playerData = data.slice(i, i + 11);
  73. var player = new Player(playerData[0], playerData[1], playerData[2], playerData[6]);
  74. if (player.id !== id) playersNear.push(player);
  75. else user = player;
  76. }
  77. currentTarget = null;
  78. if (playersNear.length > 0){
  79. var closestPlayer = getClosestPlayer();
  80. if (closestPlayer.getDistance() < 200 && (closestPlayer.tribe !== user.tribe || user.tribe === null)) aimAt(closestPlayer);
  81. }
  82. }
  83. if (parsed[0] === "1" && !id){
  84. id = parsed[1];
  85. console.log("id found: " + id);
  86. }
  87. if (parsed[0] === "10" && parsed[1] === id && parsed[2] !== 100){
  88. heal();
  89. }
  90. }
  91.  
  92. function aimAt(target){
  93. lookAtPointRelativeToCharacter(target.deltaX, target.deltaY);
  94. currentTarget = target;
  95. }
  96.  
  97. function getClosestPlayer(){
  98. var closestPlayer;
  99. for (var i = 0 ; i < playersNear.length; i++){
  100. var currentPlayer = playersNear[i];
  101. currentPlayer.deltaX = currentPlayer.x - user.x;
  102. currentPlayer.deltaY = currentPlayer.y - user.y;
  103. if (i === 0 || currentPlayer.getDistance() < closestPlayer.getDistance()){
  104. closestPlayer = currentPlayer;
  105. }
  106. }
  107. return closestPlayer;
  108. }
  109.  
  110. function parseWSMsg(s){
  111. if (s.indexOf("42") === -1) return -1;
  112. var o = s.substring(s.indexOf("["));
  113. return JSON.parse(o);
  114. }
  115.  
  116. function heal(){
  117. console.log("healing");
  118. if (hasApple){
  119. if (!haveApple()){
  120. heal();
  121. return;
  122. }
  123. else ws.send("42[\"5\",0,null]");
  124. }
  125. else ws.send("42[\"5\",1,null]");
  126. ws.send("42[\"4\",1,null]");
  127. }
  128.  
  129. function haveApple(){
  130. if (hasApple) hasApple = isElementVisible(document.getElementById("actionBarItem9"));
  131. return hasApple;
  132. }
  133.  
  134. function isElementVisible(e) {
  135. return (e.offsetParent !== null);
  136. }
Advertisement
Add Comment
Please, Sign In to add comment