OloCube Player

2/10/2025, 7:09:14 PM

Bu betiği kurabilmeniz için Tampermonkey, Greasemonkey ya da Violentmonkey gibi bir kullanıcı betiği eklentisini kurmanız gerekmektedir.

Bu betiği yüklemek için Tampermonkey gibi bir uzantı yüklemeniz gerekir.

Bu betiği kurabilmeniz için Tampermonkey ya da Violentmonkey gibi bir kullanıcı betiği eklentisini kurmanız gerekmektedir.

Bu betiği kurabilmeniz için Tampermonkey ya da Userscripts gibi bir kullanıcı betiği eklentisini kurmanız gerekmektedir.

Bu betiği indirebilmeniz için ayrıca Tampermonkey gibi bir eklenti kurmanız gerekmektedir.

Bu betiği yüklemek için bir betik yöneticisi eklentisi yüklemeniz gerekecektir.

(Zaten bir betik yöneticim var, hadi yükleyelim!)

Bu stili yüklemek için Stylus gibi bir uzantı yüklemeniz gerekir.

Bu stili yüklemek için Stylus gibi bir uzantı kurmanız gerekir.

Bu stili yükleyebilmek için Stylus gibi bir uzantı yüklemeniz gerekir.

Bu stili yüklemek için bir kullanıcı stili yöneticisi uzantısı yüklemeniz gerekir.

Bu stili yüklemek için bir kullanıcı stili yöneticisi uzantısı kurmanız gerekir.

Bu stili yükleyebilmek için bir kullanıcı stili yöneticisi uzantısı yüklemeniz gerekir.

(Zateb bir user-style yöneticim var, yükleyeyim!)

// ==UserScript==
// @name        OloCube Player
// @namespace   Violentmonkey Scripts
// @match       https://johnbutlergames.com/games/opposite-day/1-1-0/index.html*
// @grant       none
// @version     1.0
// @author      George_in_Gorge, ppougj
// @description 2/10/2025, 7:09:14 PM
// ==/UserScript==

(function() {
    'use strict';

    function modifyPlayerDraw() {
        if (typeof player !== "undefined" && typeof player.draw === "function") {
            console.log("Modifying player draw function...");

            player.draw = function() {
                let ctx = document.getElementById('canvas').getContext('2d');

                var centerX = this.x + this.w / 2;
                var centerY = this.y + this.h / 2;
                var eyeSpacing = 11;
                var eyeSize = 5;
                var pupilSize = 2;
                var pupilMovement = 1;
                var strokeWidth = 2;
                var noseWidth = 7;
                var noseHeight = 10;
                var nosePosition = {x:-2, y:5};

                ctx.lineWidth = strokeWidth;

                var gradient = ctx.createLinearGradient(this.x, this.y, this.x + this.w, this.y + this.h);
                gradient.addColorStop(0, 'orange');
                gradient.addColorStop(1, 'red');

                ctx.fillStyle = gradient;
                ctx.fillRect(this.x, this.y, this.w, this.h);

                ctx.strokeStyle = 'black';
                ctx.strokeRect(this.x, this.y, this.w, this.h);

                ctx.save();
                ctx.translate(centerX, centerY);
                ctx.fillStyle = 'black';
                ctx.strokeStyle = 'black';

                ctx.beginPath();
                ctx.arc(-eyeSpacing, 0, eyeSize, 0, 2 * Math.PI);
                ctx.stroke();
                ctx.beginPath();
                ctx.arc(eyeSpacing, 0, eyeSize, 0, 2 * Math.PI);
                ctx.stroke();

                ctx.save();
                ctx.translate(nosePosition.x, nosePosition.y);
                ctx.beginPath();
                ctx.moveTo(0, -noseHeight);
                ctx.lineTo(0, 0);
                ctx.lineTo(noseWidth, 0);
                ctx.stroke();
                ctx.restore();

                var dir = dirTo(0, 0, this.xmove, this.ymove);
                var speed = distTo(0, 0, this.xmove, this.ymove);
                speed = Math.min(speed, 5) * (eyeSize - strokeWidth) / 5 * pupilMovement;
                var move = distToMove(speed, dir);

                // Draw pupils
                ctx.beginPath();
                ctx.arc(-eyeSpacing + move.x, move.y, pupilSize, 0, 2 * Math.PI);
                ctx.fill();
                ctx.beginPath();
                ctx.arc(eyeSpacing + move.x, move.y, pupilSize, 0, 2 * Math.PI);
                ctx.fill();

                ctx.restore();
            };
        } else {
            setTimeout(modifyPlayerDraw, 500);
        }
    }

    modifyPlayerDraw();
})();