Guest User

Untitled

a guest
May 30th, 2015
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.66 KB | None | 0 0
  1. // ==UserScript==
  2. // @name TagPro Chat Macros Userscript
  3. // @namespace http://www.reddit.com/user/contact_lens_linux/
  4. // @description Help your team with quick chat macros.
  5. // @include http://tagpro-*.koalabeast.com:*
  6. // @include http://tangent.jukejuice.com:*
  7. // @include http://maptest.newcompte.fr:*
  8. // @license GPL version 3 or any later version; http://www.gnu.org/copyleft/gpl.html
  9. // @author steppin, Watball
  10. // @version 0.4
  11. // ==/UserScript==
  12.  
  13. (function() {
  14.  
  15. function contentEval(source) {
  16. // Check for function input.
  17. if ('function' == typeof source) {
  18. // Execute this function with no arguments, by adding parentheses.
  19. // One set around the function, required for valid syntax, and a
  20. // second empty set calls the surrounded function.
  21. source = '(' + source + ')();'
  22. }
  23.  
  24. // Create a script node holding this source code.
  25. var script = document.createElement('script');
  26. script.setAttribute("type", "application/javascript");
  27. script.textContent = source;
  28.  
  29. // Insert the script node into the page, so it will run, and immediately
  30. // remove it to clean up.
  31. document.body.appendChild(script);
  32. document.body.removeChild(script);
  33. }
  34.  
  35. function actualScript() {
  36. var macros = {};
  37. macros[103] = {"message": "Top Left", "toAll": false}; // numpad 7
  38. macros[104] = {"message": "Top", "toAll": false}; // numpad 8
  39. macros[105] = {"message": "Top Right", "toAll": false}; // numpad 9
  40. macros[102] = {"message": "Right", "toAll": false}; // numpad 6
  41. macros[99] = {"message": "Bottom Right", "toAll": false}; // numpad 3
  42. macros[98] = {"message": "Bottom", "toAll": false}; // numpad 2
  43. macros[97] = {"message": "Bottom Right", "toAll": false}; // numpad 1
  44. macros[100] = {"message": "Left", "toAll": false}; // numpad 4
  45. macros[101] = {"message": "Centre", "toAll": false}; // numpad 5
  46. macros[106] = {"message": "Rolling Bomb", "toAll": false}; // multiply
  47. macros[109] = {"message": "TagPro", "toAll": false}; // subtract
  48. macros[107] = {"message": "Juke Juice", "toAll": false}; // add
  49. macros[110] = {"message": "mb", "toAll": false}; // decimal point
  50. macros[96] = {"message": "Base Cleared", "toAll": false}; // numpad 0
  51. macros[49] = {"message": "1 in Base", "toAll": false}; // 1
  52. macros[50] = {"message": "2 in Base", "toAll": false}; // 2
  53. macros[51] = {"message": "3 in Base", "toAll": false}; // 3
  54. macros[52] = {"message": "4 in Base", "toAll": false}; // 4
  55. macros[66] = {"message": "Grab Button", "toAll": false}; // B
  56. macros[111] = {"message": "gg", "toAll": false}; // divide
  57. macros[53] = {"message": "1", "toAll": false}; // 5
  58. macros[54] = {"message": "2", "toAll": false}; // 6
  59. macros[55] = {"message": "3", "toAll": false}; // 7
  60. macros[56] = {"message": "4", "toAll": false}; // 8
  61.  
  62. // Game bindings overriding adapted from JohnnyPopcorn's NeoMacro https://gist.github.com/JohnnyPopcorn/8150909
  63. var handlerbtn = $('#macrohandlerbutton');
  64. handlerbtn.keydown(keydownHandler)
  65. .keyup(keyupHandler);
  66. handlerbtn.focus();
  67.  
  68. $(document).keydown(documentKeydown);
  69. function documentKeydown(event) {
  70. if (!tagpro.disableControls) {
  71. handlerbtn.focus(); // The handler button should be always focused
  72. }
  73. }
  74.  
  75. function keydownHandler(event) {
  76. var code = event.keyCode || event.which;
  77. if (code in macros && !tagpro.disableControls) {
  78. chat(macros[code]);
  79. event.preventDefault();
  80. event.stopPropagation();
  81. //console.log(macros[code]);
  82. }
  83. }
  84.  
  85. function keyupHandler(event) {
  86. if (event.keyCode in macros && !tagpro.disableControls) {
  87. event.preventDefault();
  88. event.stopPropagation();
  89. }
  90. }
  91.  
  92. var lastMessage = 0;
  93. var active = false;
  94. function chat(chatMessage) {
  95. var limit = 500 + 10;
  96. var now = new Date();
  97. var timeDiff = now - lastMessage;
  98. if (timeDiff > limit) {
  99. tagpro.socket.emit("chat", chatMessage);
  100. lastMessage = new Date();
  101. } else if (timeDiff >= 0 && !active) {
  102. active = true;
  103. setTimeout(function(chatMessage) { chat(chatMessage); active = false }, limit - timeDiff, chatMessage);
  104. }
  105. }
  106. }
  107.  
  108. // This dummy input will handle macro keypresses
  109. var btn = document.createElement("input");
  110. btn.style.opacity = 0;
  111. btn.style.position = "absolute";
  112. btn.style.top = "-100px";
  113. btn.style.left = "-100px";
  114. btn.id = "macrohandlerbutton";
  115. document.body.appendChild(btn);
  116.  
  117. contentEval(actualScript);
  118. })();
Add Comment
Please, Sign In to add comment