您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Take over the world
当前为
// ==UserScript== // @name TagPro Respawn Pizzas // @description Take over the world // @author Ko // @version 1.0 // @include *.koalabeast.com* // @include *.jukejuice.com* // @include *.newcompte.fr* // @icon https://github.com/wilcooo/TagPro-RespawnPizzas/raw/master/icon.png // @supportURL https://www.reddit.com/message/compose/?to=Wilcooo // @website https://redd.it/no-post-yet // @license MIT // @require https://greasyfork.org/scripts/371240/code/TagPro%20Userscript%20Library.js // @grant GM_setValue // @grant GM_getValue // @grant GM_xmlhttpRequest // @connect koalabeast.com // @namespace https://greasyfork.org/users/152992 // ==/UserScript== // =====SETTINGS SECTION===== // I use tpul for this userscripts' options. // see: https://github.com/wilcooo/TagPro-UserscriptLibrary var settings = tpul.settings.addSettings({ id: 'RespawnPizzas', title: "Configure Respawn Pizza's", tooltipText: "Respawn Pizza's", icon: "https://github.com/wilcooo/TagPro-RespawnPizzas/raw/master/icon.png", fields: { slices: { label: 'Slices', section: ['','Tip: set this to 180 if you want it to grow gradually.'], type: 'int', min: 2, max: 180, default: 7, }, tp_warnings: { label: 'Tile Respawn Warnings:', section: ['','This next option is the same as on your profile page. A refresh is required after updating it.'], type: 'select', options: ['Blink','Transparant','None'], default: 'Transparant', save: false, // We have defined a custom way of storing/retrieving this. }, }, events: { save: function(){ // This function will be called after a successful save // Update the slices setting directly, no refresh required! // TODO: check if this works. Might need to be asynchronous. slices = settings.get('slices'); // Save the tp_warnings value (to the cookies, using tpul) var selected_value = settings.fields.tp_warnings.node.value, setting_value = {Blink: 'blink', Transparant: 'alpha', None: 'none'}[selected_value]; tpul.profile.setSettings({ tileRespawnWarnings: setting_value }); }, open: function(){ // This function will be called upon opening the settings // Set the tp_warnings field to the right value (it's in the cookies) var setting_value = /(?:^|;)\s*tileRespawnWarnings\s*=\s*(.*?)\s*(?:;|$)/.exec(document.cookie)[1], selected_value = {blink: 'Blink', alpha: 'Transparant', none: 'None'}[setting_value]; settings.fields.tp_warnings.node.value = selected_value; }, } }); var slices = settings.get('slices'); // =====LOGIC SECTION===== if (location.port) { tagpro.ready(function() { const elements = tagpro.renderer.dynamicSprites, start = 1.5 * Math.PI; // The first slice should be at the top // Listen for respawn warnings... tagpro.socket.on('mapupdate', function(mapupdates){ if (!Array.isArray(mapupdates)) mapupdates = [mapupdates]; for (var mapupdate of mapupdates) { var element = elements && elements[mapupdate.x] && elements[mapupdate.x][mapupdate.y]; if (!element) continue; if (mapupdate.v > 2 && String(mapupdate.v).match(/.\d1$/) ) { // We got a respawn warning! // Bake a new pizza if it's the first time if (!element.pizza) { element.pizza = new PIXI.Graphics(); element.pizza.position.set(element.x, element.y); element.parent.addChild(element.pizza); } // Reset the pizza element.mask = element.pizza; element.slices = 0; element.warning = performance.now(); // Let it grow! updatePizza(element); } else if (element.pizza) element.mask = null; // <<-- Hide the pizza once respawned. } }); function updatePizza(element){ // Adds a slice var portion = ++element.slices * (2 * Math.PI / slices); // Draw the pizza! element.pizza.clear().beginFill().moveTo(20,20).arc(20,20,30, start, start+portion ); // Set a timer for the next slice (if there is one) if (element.slices < slices) setTimeout( updatePizza, ( element.warning + 3e3 * element.slices / (slices-1) ) - performance.now(), element); } }); } /* TODO: Try updating the respawn warning type on the fly: look at tagpro._readyCallbacks soon enough, to find the function that modifies tagpro.tiles. I think when calling that again it will update everything. It might break things though. */