Choppy Orc Framestepper

Press `q` to toggle pause and `z` to frame-advance within pause mode.

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         Choppy Orc Framestepper
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  Press `q` to toggle pause and `z` to frame-advance within pause mode.
// @author       You
// @match        *://*/*
// @grant        none
// ==/UserScript==

var delayedCallback = null;
var paused = false;

var scheduler = window.requestAnimationFrame;

var fakeTime = 0;

performance.now = function() { return fakeTime; }

window.requestAnimationFrame = function(callback) {
    fakeTime += 20;
    if (paused) {
        delayedCallback = callback;
    } else {
        delayedCallback = null;
        scheduler(callback);
    }
}

window.onkeyup = function(e) {
   var key = e.keyCode ? e.keyCode : e.which;

   if (key == 90 && paused && delayedCallback) { // z key
       delayedCallback();
   }

    if (key == 81) { // q key
        paused = !paused;
        if (!paused) delayedCallback();
    }
}