您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
spnati
// ==UserScript== // @name S.P.N.A.T.I. // @namespace http://tampermonkey.net/ // @version 0.0.1 // @description spnati // @author Exotik // @match https://faraway-vision.io/ // @icon https://www.google.com/s2/favicons?domain=faraway-vision.io // @grant GM_addStyle // ==/UserScript== function createButton(id, text, onClick) { var btn = document.createElement ('div'); btn.innerHTML = '<button id="' + id + '" type="button">' + text + '</button>'; btn.setAttribute ('id', 'buttons'); document.body.appendChild(btn); document.getElementById (id).addEventListener ( "click", onClick, false ); } createButton("stripPlayer1", "Strip player 1", stripPlayer1); createButton("stripPlayer2", "Strip player 2", stripPlayer2); createButton("stripPlayer3", "Strip player 3", stripPlayer3); createButton("stripPlayer4", "Strip player 4", stripPlayer4); createButton("stripAll", "Strip all", stripAll); createButton("stripAllNakedBtn", "Strip all naked", ButtonStripAllNaked); createButton("masturbatePlayer1", "Masturbate player 1", masturbatePlayer1); createButton("masturbatePlayer2", "Masturbate player 2", masturbatePlayer2); createButton("masturbatePlayer3", "Masturbate player 3", masturbatePlayer3); createButton("masturbatePlayer4", "Masturbate player 4", masturbatePlayer4); createButton("masturbateAll", "Masturbate all", masturbateAll); createButton("unlockAllEndings", "Unlock all endings", unlockAllEndings); createButton("randomBackgorund", "Random background", randomBackground); function stripAll() {stripAllOnce();} function stripPlayer1() {stripPlayer(1);} function stripPlayer2() {stripPlayer(2);} function stripPlayer3() {stripPlayer(3);} function stripPlayer4() {stripPlayer(4);} function masturbatePlayer1() {startMasturbation(1);} function masturbatePlayer2() {startMasturbation(2);} function masturbatePlayer3() {startMasturbation(3);} function masturbatePlayer4() {startMasturbation(4);} function masturbateAll() {masturbateAllPlayers();} function ButtonStripAllNaked() { ButtonClickAction("stripAllNaked"); } function ButtonClickAction (type) { switch(type) { case "stripAllNaked": stripAllNaked(); } } //--- Style our newly added elements using CSS. GM_addStyle ( ` #myContainer { position: absolute; top: 0; left: 0; font-size: 20px; background: orange; border: 3px outset black; margin: 5px; opacity: 0.9; z-index: 1100; padding: 5px 20px; } #myButton { cursor: pointer; } #myContainer p { color: red; background: white; } ` ); function stripAllNaked(){ /*Strip everyone (except the PC) naked such that one round is left before they lose.*/ stripAllToLevel(1); } function stripAllOnce() { for (var i = 1; i < players.length; i++) { try { stripPlayer(i); } catch {} } } function masturbateAllPlayers() { for (var i = 1; i < players.length; i++) { try { startMasturbation(i); } catch {} } } function stripNaked(player){ /*Strip all layers off of a given player (0 is the PC, 1-4 are NPCs). Params: player - Integer (0 is the PC, 1-4 are NPCs) */ try { stripToLevel(player, 1); } catch {} } function autoWin(){ /*Automatically win.*/ try { stripAllToLevel(0); } catch {} } function stripAllToLevel(level){ /*Strip all players (except the PC) down so that they have at most _level_ number of layers left. Params: level - Integer (The number of layers to leave left on a player.) */ for(var i = 1; i < players.length; i++){ try { stripToLevel(i, level); } catch {} } } function stripToLevel(player, level){ /*Strip a player down such that they only have (at most) a certain number of layers left. Params: player - Integer (0 is the PC, 1-4 are NPCs) level - Integer (The number of layers to leave left on a player.) */ for (var c = countClothing(player); c >= level; c--){ try { stripChoice(player); } catch {} } } function countClothing(player){ /* Count the clothing the player has remaining. Params: Player - integer (0 is the PC, 1-4 are NPCs) */ var clothes = 0; for (var i = 0; i < players[player].clothing.length; i++) { if (players[player] && players[player].clothing[i]) { clothes++; } } return clothes; } function multiStripChoice(player, times){ /* Strip the indicated player of multiple layer. Params: Player - integer (0 is the PC, 1-4 are NPCs) times - integer (The number of layers to try to strip.) */ for(var i = 0; (i < times) && (countClothing(player) != -1); i++){ try { stripChoice(player); } catch {} } } function stripChoice(player){ /* Strip the indicated player of a single layer. Params: Player - integer (0 is the PC, 1-4 are NPCs) */ try { stripPlayer(player); } catch {} try { updateAllGameVisuals(); } catch {} } function randomBackground(){ /* Choose a random background from those available. */ //Note this randint helper function could either be inlined or broken out into an actual function. var randint = function(a,b){ return (function(n,x){ return Math.floor(Math.random()*(x-n)+n); })(Math.min(a,b), Math.max(a,b)); }; setBackground(function(){var a = randint(0,23); console.log(a); return a;}()); } function unlockAllEndings(){ /* Unlocks all the endings in the gallery mode. NOTE: You can access the gallery by using the command "loadGalleryScreen()" from the main menu. */ for(var i = 0; i < galleryEndings.length; i++) { try { galleryEndings[i].unlocked = true; } catch {} } }