// ==UserScript== // @name Miracle Scripts // @namespace Miracle Scripts // @version 2.0 // @description Bookmark your favorite skins! Use skin shortcuts! Go crazy with cell animations! Improved chatlog! Dance! Use chat replacements! Display the time! // @homepage http://agarioforums.net/member.php?action=profile&uid=21263 // @author You // @license MIT // @icon https://abload.de/img/mh3k8o.png // @match http://agma.io/ // @grant none // @downloadURL none // ==/UserScript== (function() { 'use strict'; window.miracleScripts = { // Source: http://stackoverflow.com/questions/1772179/get-character-value-from-keycode-in-javascript-then-trim#answer-23377822 keyboardMap: [ '', // [0] '', // [1] '', // [2] 'CANCEL', // [3] '', // [4] '', // [5] 'HELP', // [6] '', // [7] 'BACK_SPACE', // [8] 'TAB', // [9] '', // [10] '', // [11] 'CLEAR', // [12] 'ENTER', // [13] 'ENTER_SPECIAL', // [14] '', // [15] 'SHIFT', // [16] 'CONTROL', // [17] 'ALT', // [18] 'PAUSE', // [19] 'CAPS_LOCK', // [20] 'KANA', // [21] 'EISU', // [22] 'JUNJA', // [23] 'FINAL', // [24] 'HANJA', // [25] '', // [26] 'ESCAPE', // [27] 'CONVERT', // [28] 'NONCONVERT', // [29] 'ACCEPT', // [30] 'MODECHANGE', // [31] 'SPACE', // [32] 'PAGE_UP', // [33] 'PAGE_DOWN', // [34] 'END', // [35] 'HOME', // [36] 'LEFT', // [37] 'UP', // [38] 'RIGHT', // [39] 'DOWN', // [40] 'SELECT', // [41] 'PRINT', // [42] 'EXECUTE', // [43] 'PRINTSCREEN', // [44] 'INSERT', // [45] 'DELETE', // [46] '', // [47] '0', // [48] '1', // [49] '2', // [50] '3', // [51] '4', // [52] '5', // [53] '6', // [54] '7', // [55] '8', // [56] '9', // [57] 'COLON', // [58] 'SEMICOLON', // [59] 'LESS_THAN', // [60] 'EQUALS', // [61] 'GREATER_THAN', // [62] 'QUESTION_MARK', // [63] 'AT', // [64] 'A', // [65] 'B', // [66] 'C', // [67] 'D', // [68] 'E', // [69] 'F', // [70] 'G', // [71] 'H', // [72] 'I', // [73] 'J', // [74] 'K', // [75] 'L', // [76] 'M', // [77] 'N', // [78] 'O', // [79] 'P', // [80] 'Q', // [81] 'R', // [82] 'S', // [83] 'T', // [84] 'U', // [85] 'V', // [86] 'W', // [87] 'X', // [88] 'Y', // [89] 'Z', // [90] 'OS_KEY', // [91] Windows Key (Windows) or Command Key (Mac) '', // [92] 'CONTEXT_MENU', // [93] '', // [94] 'SLEEP', // [95] 'NUMPAD0', // [96] 'NUMPAD1', // [97] 'NUMPAD2', // [98] 'NUMPAD3', // [99] 'NUMPAD4', // [100] 'NUMPAD5', // [101] 'NUMPAD6', // [102] 'NUMPAD7', // [103] 'NUMPAD8', // [104] 'NUMPAD9', // [105] 'MULTIPLY', // [106] 'ADD', // [107] 'SEPARATOR', // [108] 'SUBTRACT', // [109] 'DECIMAL', // [110] 'DIVIDE', // [111] 'F1', // [112] 'F2', // [113] 'F3', // [114] 'F4', // [115] 'F5', // [116] 'F6', // [117] 'F7', // [118] 'F8', // [119] 'F9', // [120] 'F10', // [121] 'F11', // [122] 'F12', // [123] 'F13', // [124] 'F14', // [125] 'F15', // [126] 'F16', // [127] 'F17', // [128] 'F18', // [129] 'F19', // [130] 'F20', // [131] 'F21', // [132] 'F22', // [133] 'F23', // [134] 'F24', // [135] '', // [136] '', // [137] '', // [138] '', // [139] '', // [140] '', // [141] '', // [142] '', // [143] 'NUM_LOCK', // [144] 'SCROLL_LOCK', // [145] 'WIN_OEM_FJ_JISHO', // [146] 'WIN_OEM_FJ_MASSHOU', // [147] 'WIN_OEM_FJ_TOUROKU', // [148] 'WIN_OEM_FJ_LOYA', // [149] 'WIN_OEM_FJ_ROYA', // [150] '', // [151] '', // [152] '', // [153] '', // [154] '', // [155] '', // [156] '', // [157] '', // [158] '', // [159] 'CIRCUMFLEX', // [160] 'EXCLAMATION', // [161] 'DOUBLE_QUOTE', // [162] 'HASH', // [163] 'DOLLAR', // [164] 'PERCENT', // [165] 'AMPERSAND', // [166] 'UNDERSCORE', // [167] 'OPEN_PAREN', // [168] 'CLOSE_PAREN', // [169] 'ASTERISK', // [170] 'PLUS', // [171] 'PIPE', // [172] 'HYPHEN_MINUS', // [173] 'OPEN_CURLY_BRACKET', // [174] 'CLOSE_CURLY_BRACKET', // [175] 'TILDE', // [176] '', // [177] '', // [178] '', // [179] '', // [180] 'VOLUME_MUTE', // [181] 'VOLUME_DOWN', // [182] 'VOLUME_UP', // [183] '', // [184] '', // [185] 'SEMICOLON', // [186] 'EQUALS', // [187] 'COMMA', // [188] 'MINUS', // [189] 'PERIOD', // [190] 'SLASH', // [191] 'BACK_QUOTE', // [192] '', // [193] '', // [194] '', // [195] '', // [196] '', // [197] '', // [198] '', // [199] '', // [200] '', // [201] '', // [202] '', // [203] '', // [204] '', // [205] '', // [206] '', // [207] '', // [208] '', // [209] '', // [210] '', // [211] '', // [212] '', // [213] '', // [214] '', // [215] '', // [216] '', // [217] '', // [218] 'OPEN_BRACKET', // [219] 'BACK_SLASH', // [220] 'CLOSE_BRACKET', // [221] 'QUOTE', // [222] '', // [223] 'META', // [224] 'ALTGR', // [225] '', // [226] 'WIN_ICO_HELP', // [227] 'WIN_ICO_00', // [228] '', // [229] 'WIN_ICO_CLEAR', // [230] '', // [231] '', // [232] 'WIN_OEM_RESET', // [233] 'WIN_OEM_JUMP', // [234] 'WIN_OEM_PA1', // [235] 'WIN_OEM_PA2', // [236] 'WIN_OEM_PA3', // [237] 'WIN_OEM_WSCTRL', // [238] 'WIN_OEM_CUSEL', // [239] 'WIN_OEM_ATTN', // [240] 'WIN_OEM_FINISH', // [241] 'WIN_OEM_COPY', // [242] 'WIN_OEM_AUTO', // [243] 'WIN_OEM_ENLW', // [244] 'WIN_OEM_BACKTAB', // [245] 'ATTN', // [246] 'CRSEL', // [247] 'EXSEL', // [248] 'EREOF', // [249] 'PLAY', // [250] 'ZOOM', // [251] '', // [252] 'PA1', // [253] 'WIN_OEM_CLEAR', // [254] '' // [255] ], // Don't remove the spaces, they are used as separators! Source: https://emojiterra.com/de/liste/ emojis: 'đ đ đ đ đ đ đ đ đ đ đ đ đ âēī¸ đ đ đ đ đ đ đ đ đļ đ đ đŦ đ đ đĒ đ´ đˇ đĩ đ đ đ đŽ đ¯ đ˛ đŗ đĻ đ§ đ¨ đ° đĨ đĸ đ đą đ đŖ đ đ đŠ đĢ đ¤ đĄ đ đ đŋ đ đŠ đš đē đģ đŊ đž đē đ¸ đš đģ đŧ đŊ đ đŋ đž đ đ đ đ đ đ đ đ đ đ đ đ đ đ â¤ī¸ đ đ đ đ đ¯ đĸ đĨ đĢ đĻ đ¨ đŖ đŦ đ đ¤ đ â đ âī¸ đ đ đ đ âī¸ đ đ â đ đ đ đ đ đ đĒ đ đ đ đ đ đļ đĻ đ§ đą đ¨ đŠ đ´ đĩ đ đ đ đ đ đ đ đŽ đ đˇ đ¸ đŗ đ˛ đ° đŧ đ đ đ đļ đ đ đ¯ đ đ đ đŖ đ đ´ đĩ đ đ đĢ đŦ đ đ đĒ đ¤ đĨ đŖ đĩ đ đļ đ đŠ đē đą đ đ¯ đ đ đ´ đ đŽ đ đ đ đˇ đ đ đŊ đ đ đ đĒ đĢ đ đ đ đ đš đ° đ đģ đ¨ đŧ đž đ đ đŖ đ¤ đĨ đĻ đ§ đ¸ đ đĸ đ đ˛ đ đŗ đ đŦ đ đ đĄ đ đ đ đ đ đ đ đ đ¸ đŽ đš đē đģ đŧ đˇ đą đ˛ đŗ đ´ đĩ đž đŋ đ đ đ đ đ đ đ đ đ đ đ đ đ đ đ đ đ đ đ đŊ đ đ° đ đ đ đ đ đ đŗ đ˛ đą đ đ đ đ đ đ đ đĸ đŖ đ¤ đĨ đĄ đĻ đ§ đ¨ đŠ đĒ đ đ° đĢ đŦ đ đŽ đ¯ đŧ â đĩ đļ đˇ đ¸ đš đē đģ đ´ đĒ đ đ đ đ đž đ đģ đ đĄ đĸ đŖ đ¤ đĨ đĻ đ¨ đŠ đĒ đĢ đŦ đ đ¯ đ° đ đŧ đŊ âĒ â˛ âē đ đ đ đ đ đ đ â¨ī¸ đ đĄ đĸ đ đĒ đ đ đ đ đ đ đ đ đ đ đ đ đ đ đ đ đ đ đ đ đ đ đ đ đ đ đ đ đ˛ đ âŊ đ¨ đĨ đĻ đ§ â âĩ đ¤ đĸ âī¸ đē đ đ đ đĄ đ â âŗ â â° đ đ§ đ đ đ đ đ đ đ đ đ đ đ đĄ đ đĸ đ đŖ đ đ¤ đ đĨ đ đĻ đ đ đ đ đ đ đ đ đ đ đ đ âī¸ đ đ â đ đ đ âī¸ â đ đ đ â ⥠âī¸ â đĨ đ§ đ đ đ đ đ ⨠đ đ đ đ đ đ đ đ đ đ đ đĢ đ âŊ âž đ đ đ đž đŗ âŗ đŖ đŊ đŋ đ¯ đą đŽ đŽ đ° đ˛ â ī¸ âĨī¸ âĻī¸ âŖī¸ đ đ đ´ đ đ¨ đ đ đ đ đ đ đ đ đ đ đ đ đ đ đ đĄ đĸ đ đ đŠ đ đ đ đ đ đ đ đ đĸ đŖ đ¯ đ đ đŧ đĩ đļ đ¤ đ§ đģ đˇ đ¸ đš đē đģ đą đ˛ âī¸ đ đ đ đ đ đģ đŊ đž đŋ đ đĨ đŦ đē đˇ đš đŧ đ đ đĄ đĻ đŽ đ đ đ đ đ đ đ đ đ đ đ đ đ° đ đ đ° đ´ đĩ đļ đˇ đ¸ đŗ đš đą đ˛ âī¸ đ§ đ¨ đŠ đ¤ đĨ đĻ đĢ đĒ đŦ đ đŽ âī¸ âī¸ đ đŧ đ đ đ đ đ đ đ đ đ đ đ đ đ đ âī¸ đ đ đ đ đ đ¨ đĢ đ§ đŠ đ đŦ đ đĄ đ đ đĒ đŊ đŋ đ đŦ đŋ đ§ đŽ đ° âŋ đš đē đģ đŧ đž đ đ đ đ â ī¸ đ¸ â đĢ đŗ đ đ¯ đą đˇ đĩ đ âŦī¸ âī¸ âĄī¸ âī¸ âŦī¸ âī¸ âŦ ī¸ âī¸ âī¸ âī¸ đ đ đ đ đ đ đ đ¯ â â â â â â â â â â â â â đ đ đ âļī¸ âī¸ đŧ đŊ đĻ đļ đŗ đ´ âģī¸ đą đ đ° â â âī¸ âī¸ â â â â â â° âŋ ãŊī¸ âŗī¸ â´ī¸ âī¸ âŧī¸ âī¸ â â â â ã°ī¸ ÂŠī¸ ÂŽī¸ âĸī¸ đ đĄ đĸ đŖ đ¤ đ °ī¸ đ đ ąī¸ đ đ đ đ âī¸ đ đ đ žī¸ đ đ ŋī¸ đ đ đ đ đī¸ đˇī¸ đļ đ¯ đ đš đ đ˛ đ đ¸ đ´ đŗ ãī¸ ãī¸ đē đĩ đ´ đĩ âĢ âĒ âŦ âŦ âŧī¸ âģī¸ âž âŊ âĒī¸ âĢī¸ đļ đˇ đ¸ đš đē đģ đ đ đŗ đ˛ đ đŠ đ', init: function() { this.config(); this.animation(); this.chatLog(); this.commands(); this.dance(); this.favSkins(); this.paste(); this.replacements(); console.log('đ¸ Miracle Scripts successfully loaded!'); }, config: function() { var self = this; var settings; var loadSettings = function (stringifiedSettings) { var defaultSettings = { // To get keycodes: https://keycode.info bindings: { animation: 17, // CTRL paste: 33, // PAGE UP dance: 34, // PAGE DOWN, chatLog: 76, // L }, replacements: ":D|:smile:\n:*(|:sob:\n:'D|:sweat_smiley:\nxD|:joy:", primaryColor: '#FF69B4', targetLanguage: 'EN', favSkins: [], }; if (stringifiedSettings == null) { settings = defaultSettings; localStorage.setItem('miracleScripts', JSON.stringify(settings)); } else { settings = JSON.parse(stringifiedSettings); // Update for settings: if (typeof settings.primaryColor === 'undefined') { settings.primaryColor = defaultSettings.primaryColor; localStorage.setItem('miracleScripts', JSON.stringify(settings)); } if (typeof settings.bindings.chatLog === 'undefined') { settings.bindings.chatLog = defaultSettings.bindings.chatLog; localStorage.setItem('miracleScripts', JSON.stringify(settings)); } if (typeof settings.favSkins === 'undefined') { settings.favSkins = defaultSettings.favSkins; localStorage.setItem('miracleScripts', JSON.stringify(settings)); } if (typeof settings.targetLanguage === 'undefined') { settings.targetLanguage = defaultSettings.targetLanguage; localStorage.setItem('miracleScripts', JSON.stringify(settings)); } if (typeof settings.quickSkins === 'undefined') { settings.quickSkins = []; localStorage.setItem('miracleScripts', JSON.stringify(settings)); } } }; loadSettings(localStorage.getItem('miracleScripts')); var applyPrimaryColor = function () { var primaryColorCss = '.miracle-primary-color-font { color: ' + settings.primaryColor + ' !important } .miracle-primary-color-background { background-color: ' + settings.primaryColor + ' !important }; '; $('body').append(''); }; applyPrimaryColor(); var download = function (filename, text) { var element = document.createElement('a'); element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)); element.setAttribute('download', filename); element.style.display = 'none'; document.body.appendChild(element); element.click(); document.body.removeChild(element); }; // We need to have a delay, because the menu is not loaded right away setTimeout(function () { var $playButton = $('#playBtn'); var $specateButton = $('#spectateBtn'); $playButton.get(0).style.width = '40%'; $specateButton.get(0).style.width = '40%'; var $settingsButton = $(''); $settingsButton.insertAfter($playButton); var changeKey = function (event) { var name = this.name.substr(4); $(this).val(self.keyboardMap[event.keyCode]); settings.bindings[name] = event.keyCode; localStorage.setItem('miracleScripts', JSON.stringify(settings)); }; var deleteKey = function () { var action = $(this).attr('data-action'); $('#miracle-settings input[name=key_' + action + ']').val('undefined'); settings.bindings[action] = null; localStorage.setItem('miracleScripts', JSON.stringify(settings)); }; // Weird Agma scripting... press enter in the replacements textarea and the chat box gets focused! // Therefore catch the keydown event (that happens earlier) and insert the linebreak manually, // focus again (delayed) and go to the end of the text where the linebreak is. // We can improve this later on... var addReturn = function (event) { if (event.keyCode === 13) { var textarea = this; $(textarea).text($(this).text() + '\n').focus(); setTimeout(function () { $(textarea).focus(); textarea.setSelectionRange(textarea.value.length, textarea.value.length); }, 1); } }; var changeReplacements = function () { settings.replacements = $(this).val(); localStorage.setItem('miracleScripts', JSON.stringify(settings)); }; var changePrimaryColor = function () { settings.primaryColor = $(this).val(); localStorage.setItem('miracleScripts', JSON.stringify(settings)); applyPrimaryColor(); }; var changeTargetLanguage = function () { settings.targetLanguage = $(this).val(); localStorage.setItem('miracleScripts', JSON.stringify(settings)); }; var $modal = $('
'); $modal.append('