Cat Screensaver!

ExonAuto moment

当前为 2023-04-13 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Cat Screensaver!
// @license MIT
// @namespace    http://tampermonkey.net/
// @version      2.9
// @description  ExonAuto moment
// @match        *://*/*
// @icon         https://favicon-generator.org/favicon-generator/htdocs/favicons/2023-04-12/025e32544727144aeac3e31ffa5a80b8.ico
// @grant        none
// ==/UserScript==

/*  ___          _           _____                         __     __      __      ___    */
/*  (  _`\       (_ )        (___  )                      /'__`\ /' _`\  /'__`\  /'_  )  */
/*  | |_) )  _    | |  _   _     | |   _ _   ___ ___     (_)  ) )| ( ) |(_)  ) )(_)_) |  */
/*  | ,__/'/'_`\  | | ( ) ( ) _  | | /'_` )/' _ ` _ `\      /' / | | | |   /' /  _(_ <   */
/*  | |   ( (_) ) | | | (_) |( )_| |( (_| || ( ) ( ) |    /' /( )| (_) | /' /( )( )_) |  */
/*  (_)   `\___/'(___)`\__, |`\___/'`\__,_)(_) (_) (_)   (_____/'`\___/'(_____/'`\____)  */
/*                  ( )_| |                                                              */
/*                  `\___/'                                                              */

//You can configure the code below, but don't edit the code below the "do not edit line" (unless you know what you are doin)

/*edit this to change how much time it will take to start the screensaver default is 60 seconds*/
var timeTillScreensaverStarts = 60 //in seconds

/*edit this to disable the alert that shows how much time you spent afk after you come back to your compute*/
var alertEnabled = true

/*debug stuff, it just sends stuff to console log that i used in the development process*/
var consoleLogs = false

/*the text of the little watermark that appears above images*/
var watermark = "PolyJam"

/*adds or removes the watermark from showing up in the screensaver*/
var includeWatermark = true


/* links to the images used in screensaver, currently just the default i made for the jam
DOESNT WORK ON A REGULAR WEBPAGE FIND THE "source" PAGE OF THE IMAGE TO ADD YOUR OWN*/
var imageUrls = [
    'https://cdn.discordapp.com/attachments/827543035981332501/1096196780875600083/despiteAllMyRageCat.png',//racing cat
    'https://cdn.discordapp.com/attachments/827543035981332501/1096196781123043519/eppyCat.png',//eepy cat
    'https://cdn.discordapp.com/attachments/827543035981332501/1096196780321931274/angry_cat.png',//angry cat (red)
    'https://cdn.discordapp.com/attachments/827543035981332501/1096196870755319880/JEnUY3nM_t.png',//you have alerted the cat cat
    'https://cdn.discordapp.com/attachments/827543035981332501/1096196937633509386/Jlow2CKl_t.png',//reaching cat
    'https://cdn.discordapp.com/attachments/827543035981332501/1096196869228597299/fYRZWYRs_t.png',//:D Cat (car window cat)
    'https://cdn.discordapp.com/attachments/827543035981332501/1096196939529330858/wakMaWsa_t.png',//maxwell the cat as a 3d model
    'https://cdn.discordapp.com/attachments/827543035981332501/1096196938749202554/NOOHEGOTEATEN.png',//sandwich cat geting squished :(
    'https://cdn.discordapp.com/attachments/827543035981332501/1096196938203930714/maxwell.jpeg',//smug maxwell (i think)
    'https://cdn.discordapp.com/attachments/827543035981332501/1096196870419795968/huhuhuhuuhuhuhuh.png',//huh cat (the what cat not the HUH cat)
    'https://cdn.discordapp.com/attachments/827543035981332501/1096196939034407052/polyjamCat.png',//the polygon cat (i couldn't find their name anywhere)
    'https://cdn.discordapp.com/attachments/827543035981332501/1096196869857738812/getCat.png',//get cat
    'https://cdn.discordapp.com/attachments/827543035981332501/1096196780674257006/boomCat.png',//cat stands infront of a fire
    'https://cdn.discordapp.com/attachments/827543035981332501/1096196871006982304/jinxALotOfCursors.png',//jinx with a lot of cursors
    'https://cdn.discordapp.com/attachments/827543035981332501/1096196871606763570/JinxSomeCursor.png',//jinx with some cursors (still a few but not as many)
    'https://cdn.discordapp.com/attachments/827543035981332501/1096196871912968232/jinxWhiteBackGround.png',//jinx, no cursors, standing in a white room
    'https://cdn.discordapp.com/attachments/827543035981332501/1096196871283822701/jinxOneCursor.png',//jinx, head, only one cursor
    'https://cdn.discordapp.com/attachments/827543035981332501/1096196940020064266/William.png',//w i l l i a m
    'https://cdn.discordapp.com/attachments/827543035981332501/1096196869551575050/get-real-cat-NO-WAY.png',//get real cat
    'https://cdn.discordapp.com/attachments/827543035981332501/1096196939298656326/ThisCatChillinNoWay.png',//chill cat
    'https://cdn.discordapp.com/attachments/827543035981332501/1096196939776806932/whar.jpeg',//sniif sniif
    'https://cdn.discordapp.com/attachments/827543035981332501/1096196779957031013/O-cat.png',//flabberghasted cat
    'https://cdn.discordapp.com/attachments/827543035981332501/1096196870172315728/huhCat.png',//huh cat
 ];

/*                 ____   ___     _   _  ___ _____    _____ ____ ___ _____    ____   _    ____ _____    _____ _   _ ___ ____     _     ___ _   _ _____                     */
/*                |  _ \ / _ \   | \ | |/ _ \_   _|  | ____|  _ \_ _|_   _|  |  _ \ / \  / ___|_   _|  |_   _| | | |_ _/ ___|   | |   |_ _| \ | | ____|                    */
/*                | | | | | | |  |  \| | | | || |    |  _| | | | | |  | |    | |_) / _ \ \___ \ | |      | | | |_| || |\___ \   | |    | ||  \| |  _|                      */
/*                | |_| | |_| |  | |\  | |_| || |    | |___| |_| | |  | |    |  __/ ___ \ ___) || |      | | |  _  || | ___) |  | |___ | || |\  | |___                     */
/*                |____/ \___/   |_| \_|\___/ |_|    |_____|____/___| |_|    |_| /_/   \_\____/ |_|      |_| |_| |_|___|____/   |_____|___|_| \_|_____|                    */
/*  _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____      */
/* |_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|     */
/*              _                                     _                                   _           _                                              _       _             */
/*  _   _ _ __ | | ___  ___ ___   _   _  ___  _   _  | | ___ __   _____      __ __      _| |__   __ _| |_   _   _  ___  _   _    __ _ _ __ ___    __| | ___ (_)_ __   __ _ */
/* | | | | '_ \| |/ _ \/ __/ __| | | | |/ _ \| | | | | |/ / '_ \ / _ \ \ /\ / / \ \ /\ / / '_ \ / _` | __| | | | |/ _ \| | | |  / _` | '__/ _ \  / _` |/ _ \| | '_ \ / _` |*/
/* | |_| | | | | |  __/\__ \__ \ | |_| | (_) | |_| | |   <| | | | (_) \ V  V /   \ V  V /| | | | (_| | |_  | |_| | (_) | |_| | | (_| | | |  __/ | (_| | (_) | | | | | (_| |*/
/*  \__,_|_| |_|_|\___||___/___/  \__, |\___/ \__,_| |_|\_\_| |_|\___/ \_/\_/     \_/\_/ |_| |_|\__,_|\__|  \__, |\___/ \__,_|  \__,_|_|  \___|  \__,_|\___/|_|_| |_|\__, |*/
/*                                |___/                                                                     |___/                                                    |___/ */

// var for checking the user is away
var AFK = false

//  checking for user interactions (to stop the screensaver)
document.body.addEventListener('mousemove', resetTheCount);
document.body.addEventListener('scroll', resetTheCount);
document.body.addEventListener('keydown', resetTheCount);
document.body.addEventListener('click', resetTheCount);
document.body.addEventListener('touchstart', resetTheCount);

var increaseAfkTime = setInterval(incrementTheCount, 1000);
var timeSpentAfk = 0

//  adds to the timer when needed
function incrementTheCount(){
    timeSpentAfk = timeSpentAfk + 1
    if(timeSpentAfk >= timeTillScreensaverStarts && AFK == false){
        AFK = true
        startScreensaver();
        window.scrollTo(0, 0);
        if(consoleLogs == true){
            console.log("Started the screensaver!")
        }
    }
    else{if(consoleLogs == true){
        console.log("afk timer: " + timeSpentAfk)
        console.log("afk: " + AFK)} //line for showing how much time has passed in the console
}}

//function that triggers when user interacts with the main body of the page
function resetTheCount(){
    AFK = false
    timeSpentAfk = 0
    stopScreensaver(); //also removes the canvas so it doesnt interfere with the page you are currently on
    if (consoleLogs == true){
        console.log("Reset the count!")
    }
    if(alertEnabled == true && timeSpentAfk >= timeTillScreensaverStarts){
        console.log("You spent " + timeSpentAfk + " seconds afk! thats " + timeSpentAfk/60 + "minutes!")
        alert("You spent " + timeSpentAfk + " seconds afk! thats " + timeSpentAfk/60 + " minutes!")
    }
}

var XPos = 0
var YPos = 0
var img = new Image()
var pageY = 0

//declaring the canvas
var x = document.createElement("CANVAS");
x.style.left = "0px";
x.style.top = "0px";
x.style.position = "absolute";
x.id = "canvas"
var ctx = x.getContext("2d");

// starts at  x=20, y=0
// The end gradient point is at x=220, y=0
const gradient = ctx.createLinearGradient(20, 0, 220, 0);

//  Add three color stops
gradient.addColorStop(0, "green");
gradient.addColorStop(0.5, "cyan");
gradient.addColorStop(1, "green");

// Set the fill style and draw a rectangle
ctx.fillStyle = gradient;
ctx.fillRect(20, 20, 200, 100);

ctx.canvas.width = window.innerWidth;
ctx.canvas.height = window.innerHeight;
ctx.font = "25px Times New Roman";

var randomNumber = undefined

// updating XPos and any other ones that may arise...
function updatePos(){
    if(AFK == true){
        XPos = Math.floor(Math.random() * window.innerWidth) + 1;
        YPos = Math.floor(Math.random() * window.innerHeight) + 1;
        randomNumber = Math.floor(Math.random() * 2) + 1;
    }
    //console.log("Current positions ~ " + "xPos = "+ XPos)
}

//updates image that will be shown on the canvas very epic
function updateImage(){
    if (AFK == true){
    img.src = imageUrls[Math.floor(Math.random() * imageUrls.length)];
    if (consoleLogs == true){console.log("img src-> " + img.src + " <-")}
    img.style.height = '500px';
    img.style.width = '500px';
    img.onload = drawScreen
    }
}
//draws the images from the updateImage function
function drawScreen(){
    if (AFK == true){
        ctx.drawImage(img, XPos, YPos);
        if (includeWatermark == true){ctx.fillText(watermark, XPos, YPos)}
    }
}

//declaring which and when the code will repeat
var updateImageInterval = setInterval(updateImage, 150);
var updateInterval = setInterval(updatePos, 250);

function startScreensaver(){
    document.body.appendChild(x);
    if (consoleLogs == true){
        console.log("started screensaver")
    }
}

function stopScreensaver(){
    if (AFK == false){document.getElementById("canvas").remove();}
    if (consoleLogs == true){
        console.log("stopped screensaver")
    }
}

startScreensaver();