您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
去除图寻街景车。使用Shift+K切换指南针。移植自GeoNoCar by 2020, drparse。
当前为
- // ==UserScript==
- // @name TuxunNoCar
- // @name:zh-CN 图寻-隐藏街景车和指南针
- // @description Redacts the car from tuxun, the Chinese geoguessr. Shift-K to toggle compass. Transplanted from GeoNoCar by 2020, drparse.
- // @description:zh-CN 去除图寻街景车。使用Shift+K切换指南针。移植自GeoNoCar by 2020, drparse。
- // @namespace https://tuxun.fun/
- // @version 0.1.1
- // @author strombooli
- // @match https://tuxun.fun/*
- // @exclude https://tuxun.fun/replay-pano?*
- // @exclude https://tuxun.fun/wonders
- // @exclude https://tuxun.fun/random
- // @grant unsafeWindow
- // @run-at document-start
- // @license GPL-3.0-or-later; http://www.gnu.org/licenses/gpl-3.0.txt
- // @noframes
- // ==/UserScript==
- (function() {
- 'use strict';
- function injected() {
- const OPTIONS = {
- colorR: 0.5,
- colorG: 0.5,
- colorB: 0.5,
- };
- // If the script breaks, search devtools for "BINTULU" and replace these lines with the new one
- const vertexOld = "const float f=3.1415926;varying vec3 a;uniform vec4 b;attribute vec3 c;attribute vec2 d;uniform mat4 e;void main(){vec4 g=vec4(c,1);gl_Position=e*g;a=vec3(d.xy*b.xy+b.zw,1);a*=length(c);}";
- const fragOld = "precision highp float;const float h=3.1415926;varying vec3 a;uniform vec4 b;uniform float f;uniform sampler2D g;void main(){vec4 i=vec4(texture2DProj(g,a).rgb,f);gl_FragColor=i;}";
- const vertexNew = `
- const float f=3.1415926;
- varying vec3 a;
- varying vec3 potato;
- uniform vec4 b;
- attribute vec3 c;
- attribute vec2 d;
- uniform mat4 e;
- void main(){
- vec4 g=vec4(c,1);
- gl_Position=e*g;
- a = vec3(d.xy * b.xy + b.zw,1);
- a *= length(c);
- potato = vec3(d.xy, 1.0) * length(c);
- }`;
- const fragNewBaidu = `precision highp float;
- const float h=3.1415926;
- varying vec3 a;
- varying vec3 potato;
- uniform vec4 b;
- uniform float f;
- uniform sampler2D g;
- void main(){
- vec2 aD = potato.xy / a.z;
- float thetaD = aD.y;
- float thresholdD1 = 0.62;
- float thresholdD2 = 0.62;
- float x = aD.x;
- float y = abs(4.0*x - 2.0);
- float phiD = smoothstep(0.0, 1.0, y > 1.0 ? 2.0 - y : y);
- vec4 i = vec4(
- thetaD > mix(thresholdD1, thresholdD2, phiD)
- ? vec3(float(${OPTIONS.colorR}), float(${OPTIONS.colorG}), float(${OPTIONS.colorB})) // texture2DProj(g,a).rgb * 0.25
- : texture2DProj(g,a).rgb
- ,f);
- gl_FragColor=i;
- }`;
- const fragNew = `precision highp float;
- const float h=3.1415926;
- varying vec3 a;
- varying vec3 potato;
- uniform vec4 b;
- uniform float f;
- uniform sampler2D g;
- void main(){
- vec2 aD = potato.xy / a.z;
- float thetaD = aD.y;
- float thresholdD1 = 0.6;
- float thresholdD2 = 0.7;
- float x = aD.x;
- float y = abs(4.0*x - 2.0);
- float phiD = smoothstep(0.0, 1.0, y > 1.0 ? 2.0 - y : y);
- vec4 i = vec4(
- thetaD > mix(thresholdD1, thresholdD2, phiD)
- ? vec3(float(${OPTIONS.colorR}), float(${OPTIONS.colorG}), float(${OPTIONS.colorB})) // texture2DProj(g,a).rgb * 0.25
- : texture2DProj(g,a).rgb
- ,f);
- gl_FragColor=i;
- }`;
- function isBaidu(){
- return document.getElementsByClassName("panorama___kKSrn")[0].children.length == 2;
- }
- function installShaderSource(ctx) {
- const g = ctx.shaderSource;
- function shaderSource() {
- if (typeof arguments[1] === 'string') {
- let glsl = arguments[1];
- console.log('BINTULU shader', glsl);
- if (glsl === vertexOld) glsl = vertexNew;
- else if (glsl === fragOld){
- if (isBaidu()) glsl = fragNewBaidu;
- else glsl = fragNew;
- }
- return g.call(this, arguments[0], glsl);
- }
- return g.apply(this, arguments);
- }
- shaderSource.bestcity = 'bintulu';
- ctx.shaderSource = shaderSource;
- }
- function installGetContext(el) {
- const g = el.getContext;
- el.getContext = function() {
- if (arguments[0] === 'webgl' || arguments[0] === 'webgl2') {
- const ctx = g.apply(this, arguments);
- if (ctx && ctx.shaderSource && ctx.shaderSource.bestcity !== 'bintulu') {
- installShaderSource(ctx);
- }
- return ctx;
- }
- return g.apply(this, arguments);
- };
- }
- const f = document.createElement;
- document.createElement = function() {
- if (arguments[0] === 'canvas' || arguments[0] === 'CANVAS') {
- const el = f.apply(this, arguments);
- installGetContext(el);
- return el;
- }
- return f.apply(this, arguments);
- };
- function addCompassStyle() {
- let style = document.createElement('style');
- style.id = 'bintulu_nocompass';
- style.innerHTML = '.gmnoprint.gm-bundled-control.gm-bundled-control-on-bottom { display: none }';
- document.head.appendChild(style);
- }
- addCompassStyle();
- document.addEventListener('keydown', (evt) => {
- if (!evt.repeat && evt.code === 'KeyK' && evt.shiftKey && !evt.altKey && !evt.ctrlKey && !evt.metaKey) {
- let style = document.getElementById('bintulu_nocompass');
- if (!style) {
- addCompassStyle();
- } else {
- style.remove();
- }
- }
- });
- }
- unsafeWindow.eval(`(${injected.toString()})()`);
- })();