您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Phinally menu with login functionality and improved UI.
当前为
- // ==UserScript==
- // @name Phinally menu
- // @namespace http://tampermonkey.net/
- // @version 1.4
- // @description Phinally menu with login functionality and improved UI.
- // @author ZeR
- // @match *://cryzen.io/*
- // @grant none
- // @license MIT
- // ==/UserScript==
- (function() {
- 'use strict';
- const newScopeURL = 'https://cdn.discordapp.com/attachments/1124114546810953770/1343722982127833124/cross.webp?ex=67be4f0c&is=67bcfd8c&hm=05ae9ad2c108e6ff5acc1daa1f8e56a4b5173e5ccdebf71f775ed4df8e2c8c30&'; // Mets ici ton viseur
- let originalMaterialDescriptor = Object.getOwnPropertyDescriptor(Object.prototype, 'material');
- let isLoggedIn = false;
- let autoBunnyHopInterval = null;
- let originalRandom = Math.random;
- let scope = null;
- let optimizationEnabled = true;
- let lowResolutionEnabled = false;
- const FPS_THRESHOLD_LOW = 30;
- const FPS_THRESHOLD_HIGH = 50;
- const OPTIMIZATION_INTERVAL = 3000;
- let lastCheck = performance.now();
- let fps = 0;
- let lastTime = performance.now();
- let fpsInterval;
- const fpsDisplay = document.createElement('div');
- fpsDisplay.style.position = 'fixed';
- fpsDisplay.style.top = '10px';
- fpsDisplay.style.right = '10px';
- fpsDisplay.style.backgroundColor = 'rgba(0, 0, 0, 0.7)';
- fpsDisplay.style.color = 'white';
- fpsDisplay.style.padding = '5px';
- fpsDisplay.style.zIndex = '1000';
- document.body.appendChild(fpsDisplay);
- function adjustCanvasResolution(scaleFactor) {
- const canvas = document.querySelector('canvas');
- if (canvas) {
- const devicePixelRatio = window.devicePixelRatio * scaleFactor;
- canvas.width = window.innerWidth * devicePixelRatio;
- canvas.height = window.innerHeight * devicePixelRatio;
- console.log(`Canvas resolution adjusted. Scale Factor: ${scaleFactor}`);
- }
- }
- function optimizeGame() {
- if (!optimizationEnabled) return;
- document.querySelectorAll('.high-detail').forEach(element => {
- element.style.display = 'none';
- });
- }
- function countFrames() {
- fps++;
- const now = performance.now();
- if (now - lastTime >= 1000) {
- fpsDisplay.innerText = `FPS: ${fps}`;
- adjustResolutionBasedOnFPS(fps);
- fps = 0;
- lastTime = now;
- }
- requestAnimationFrame(countFrames);
- }
- function adjustResolutionBasedOnFPS(fps) {
- if (fps < FPS_THRESHOLD_LOW && !lowResolutionEnabled) {
- lowResolutionEnabled = true;
- adjustCanvasResolution(0.5);
- } else if (fps > FPS_THRESHOLD_HIGH && lowResolutionEnabled) {
- lowResolutionEnabled = false;
- adjustCanvasResolution(1);
- }
- }
- countFrames();
- const menuCSS = `
- #mod-menu {
- position: fixed;
- top: 50%;
- left: 20px;
- transform: translateY(-50%);
- background: rgba(20, 20, 20, 0.95);
- color: white;
- padding: 15px;
- border-radius: 15px;
- border: 2px solid blue;
- font-family: Arial, sans-serif;
- width: 300px;
- height: auto;
- display: none;
- opacity: 0;
- transition: opacity 0.3s ease, transform 0.3s ease;
- cursor: grab;
- z-index: 9999; /* Assure que le menu est au-dessus des autres éléments */
- }
- #mod-menu.show {
- display: block;
- opacity: 1;
- }
- #mod-menu:hover {
- opacity: 1; /* Garde le menu visible au survol */
- }
- .menu-header {
- font-size: 20px;
- font-weight: bold;
- text-align: center;
- margin-bottom: 15px;
- cursor: move;
- }
- .menu-category {
- font-size: 18px;
- font-weight: bold;
- text-decoration: underline;
- margin-top: 10px;
- cursor: pointer;
- }
- .menu-section {
- display: none;
- flex-direction: column;
- gap: 10px;
- margin-bottom: 10px;
- opacity: 0;
- transition: opacity 0.3s ease;
- }
- .menu-button {
- background: #333;
- border: 1px solid #555;
- color: white;
- padding: 8px;
- border-radius: 8px;
- text-align: center;
- cursor: pointer;
- transition: background 0.2s, transform 0.1s;
- }
- .menu-button:hover {
- background: #444;
- }
- .menu-button.active {
- background: #4CAF50;
- transform: scale(1.05);
- }
- .menu-footer {
- font-size: 12px;
- color: #888;
- text-align: center;
- margin-top: 20px;
- }
- #login-screen {
- position: fixed;
- top: 50%;
- left: 50%;
- transform: translate(-50%, -50%);
- background: rgba(0, 0, 0, 0.8);
- padding: 20px;
- border-radius: 10px;
- width: 300px;
- color: white;
- text-align: center;
- display: none;
- opacity: 0;
- transition: opacity 0.3s ease;
- }
- #login-screen.show {
- display: block;
- opacity: 1;
- }
- h2 {
- font-size: 24px;
- margin-bottom: 20px;
- }
- .login-input {
- width: 100%;
- padding: 10px;
- margin: 10px 0;
- border-radius: 5px;
- border: 1px solid #555;
- color: white;
- background: #333;
- box-sizing: border-box;
- }
- .menu-section.active {
- display: flex;
- opacity: 1;
- }
- .login-button {
- background: #4CAF50;
- border: none;
- color: white;
- padding: 12px;
- width: 100%;
- border-radius: 5px;
- cursor: pointer;
- margin-top: 10px;
- }
- .login-button:hover {
- background: #45a049;
- }
- `;
- function injectCSS(css) {
- let style = document.createElement("style");
- style.textContent = css;
- document.head.appendChild(style);
- }
- function createModMenu() {
- let menu = document.createElement("div");
- menu.id = "mod-menu";
- menu.innerHTML = `
- <div class="menu-header">PHINALLY MENU</div>
- <!-- AIM Section -->
- <div class="menu-category" data-section="aim-section">AIM</div>
- <div class="menu-section" id="aim-section">
- <div class="menu-button" id="no-recoil-button" data-action="toggle-recoil">No Recoil</div>
- </div>
- <!-- MOVEMENT Section -->
- <div class="menu-category" data-section="movement-section">MOUVEMENT</div>
- <div class="menu-section" id="movement-section">
- <div class="menu-button" id="bunnyhop-button" data-action="toggle-bunnyhop">Bunny Hop</div>
- </div>
- <!-- VISUAL Section -->
- <div class="menu-category" data-section="visual-section">VISUAL</div>
- <div class="menu-section" id="visual-section">
- <div class="menu-button" id="esp-button" data-action="toggle-esp">ESP</div>
- <div class="menu-button" id="view-button" data-action="toggle-view">Better View</div>
- </div>
- <!-- HACK Section -->
- <div class="menu-category" data-section="hack-section">HACK</div>
- <div class="menu-section" id="hack-section">
- <div class="menu-button" id="adblock-button" data-action="toggle-adblock">Ad Block</div>
- <div class="menu-button" id="cross-button" data-action="toggle-cross">Crosshair</div>
- </div>
- <div class="menu-footer">ZeR©</div>
- `;
- document.body.appendChild(menu);
- addMenuEventListeners();
- makeMenuDraggable(menu);
- document.querySelectorAll('.menu-category').forEach(category => {
- category.addEventListener('click', (event) => {
- const sectionId = event.target.getAttribute('data-section');
- const section = document.getElementById(sectionId);
- if (section.classList.contains('active')) {
- section.classList.remove('active');
- } else {
- document.querySelectorAll('.menu-section').forEach(sec => sec.classList.remove('active'));
- section.classList.add('active');
- }
- });
- });
- }
- // Crée l'écran de login
- function createLoginScreen() {
- let loginScreen = document.createElement("div");
- loginScreen.id = "login-screen";
- loginScreen.innerHTML = `
- <h2>Phinally Login</h2>
- <input type="text" id="username" class="login-input" placeholder="Username" />
- <input type="password" id="password" class="login-input" placeholder="Password" />
- <button class="login-button" id="login-button">Login</button>
- <div class="menu-footer">ZeR©</div>
- `;
- document.body.appendChild(loginScreen);
- document.getElementById("login-button").addEventListener("click", handleLogin);
- }
- const usernameDisplay = document.createElement('div');
- usernameDisplay.style.position = 'fixed';
- usernameDisplay.style.top = '40px';
- usernameDisplay.style.right = '10px';
- usernameDisplay.style.backgroundColor = 'rgba(0, 0, 0, 0.7)';
- usernameDisplay.style.padding = '5px';
- usernameDisplay.style.zIndex = '1000';
- const loginText = document.createElement('span');
- loginText.style.color = 'white';
- loginText.textContent = 'Login as ';
- const usernameText = document.createElement('span');
- usernameText.style.color = 'green';
- usernameText.textContent = 'username';
- usernameDisplay.appendChild(loginText);
- usernameDisplay.appendChild(usernameText);
- document.body.appendChild(usernameDisplay);
- function updateUsername(username) {
- usernameText.textContent = username;
- }
- const users = [
- { username: 'admin', password: 'admin' },
- { username: 'Xeno', password: 'Xeno' }
- ];
- function handleLogin() {
- const username = document.getElementById("username").value;
- const password = document.getElementById("password").value;
- const user = users.find(u => u.username === username && u.password === password);
- if (user) {
- isLoggedIn = true;
- document.getElementById("login-screen").classList.remove("show");
- updateUsername(username);
- setTimeout(() => toggleModMenu(), 300);
- } else {
- alert("Nom d'utilisateur ou mot de passe incorrect.");
- }
- }
- function makeMenuDraggable(menu) {
- let isDragging = false, startX, startY;
- menu.querySelector(".menu-header").addEventListener("mousedown", (event) => {
- isDragging = true;
- startX = event.clientX - menu.offsetLeft;
- startY = event.clientY - menu.offsetTop;
- });
- document.addEventListener("mousemove", (event) => {
- if (isDragging) {
- menu.style.left = event.clientX - startX + "px";
- menu.style.top = event.clientY - startY + "px";
- }
- });
- document.addEventListener("mouseup", () => {
- isDragging = false;
- });
- }
- function toggleModMenu() {
- if (isLoggedIn) {
- let menu = document.getElementById("mod-menu");
- menu.classList.toggle("show");
- } else {
- document.getElementById("login-screen").classList.add("show");
- }
- }
- //////////////////////////////////////////////////
- /// ///
- /// BUTTON ACTIVATION ///
- /// ///
- //////////////////////////////////////////////////
- function addMenuEventListeners() {
- const features = [
- { id: "no-recoil-button", feature: "no-recoil" },
- { id: "bunnyhop-button", feature: "bunnyhop" },
- { id: "esp-button", feature: "esp" },
- { id: "view-button", feature: "view" },
- { id: "adblock-button", feature: "adblock" },
- { id: "cross-button", feature: "cross" }
- ];
- features.forEach(({ id, feature }) => {
- document.getElementById(id).addEventListener("click", () => toggleFeature(feature, id));
- });
- }
- function toggleFeature(feature, buttonId) {
- const button = document.getElementById(buttonId);
- const isActive = button.classList.contains("active");
- const action = isActive ? disableFeature : enableFeature;
- action(feature);
- button.classList.toggle("active");
- }
- function enableFeature(feature) {
- switch (feature) {
- case "no-recoil":
- enableNoRecoil();
- break;
- case "bunnyhop":
- enableUP();
- break;
- case "esp":
- enableESP();
- break;
- case "view":
- enableVIEW();
- break;
- case "cross":
- enableCROSS();
- break;
- case "adblock":
- enableAdBlock();
- break;
- default:
- break;
- }
- }
- function disableFeature(feature) {
- switch (feature) {
- case "no-recoil":
- disableNoRecoil();
- break;
- case "bunnyhop":
- disableUP();
- break;
- case "esp":
- disableESP();
- break;
- case "view":
- disableVIEW();
- break;
- case "cross":
- disableCROSS();
- break;
- case "adblock":
- disableAdBlock();
- break;
- default:
- break;
- }
- }
- //////////////////////////////////////////////////
- /// ///
- /// BUTTON FUNCTION ///
- /// ///
- //////////////////////////////////////////////////
- function enableNoRecoil() {
- console.log("No Recoil activé !");
- const _random = Math.random;
- Object.defineProperty(Math, 'random', {
- get() {
- try {
- throw new Error();
- } catch (error) {
- const stack = error.stack;
- if (stack.includes('shoot')) {
- return () => 0.5;
- }
- }
- return _random;
- }
- });
- }
- function disableNoRecoil() {
- console.log("No Recoil désactivé !");
- Object.defineProperty(Math, 'random', {
- get() {
- return originalRandom;
- }
- });
- }
- function enableAdBlock() {
- return new Promise(resolve => {
- resolve(true);
- });
- }
- Object.defineProperties(Object.prototype, {
- 'rewardedBreak': {
- get() {
- return enableAdBlock.bind(this);
- },
- set() {},
- enumerable: false,
- }
- });
- function disableAdBlock() {
- console.log("Ad Blocker désactivé !");
- }
- function disableESP() {
- console.log("ESP désactivé !");
- if (originalMaterialDescriptor) {
- Object.defineProperty(Object.prototype, 'material', originalMaterialDescriptor);
- } else {
- delete Object.prototype.material;
- }
- }
- function enableESP() {
- console.log("ESP activé !");
- Object.defineProperty(Object.prototype, 'material', {
- get() {
- return this._material;
- },
- set(v) {
- if (this.type === 'SkinnedMesh' && this?.skeleton) {
- Object.defineProperties(v, {
- 'depthTest': {
- get() {
- return false;
- },
- set(v) {},
- },
- 'transparent': {
- get() {
- return true;
- },
- set(v) {},
- },
- });
- }
- this._material = v;
- },
- });
- }
- function getSqareDataURL(width, height, color) {
- const canvas = document.createElement('canvas');
- canvas.width = width;
- canvas.height = height;
- const context = canvas.getContext('2d');
- context.fillStyle = color;
- context.fillRect(0, 0, width, height);
- const dataURL = canvas.toDataURL();
- return dataURL;
- }
- const originalSrcDescriptor = Object.getOwnPropertyDescriptor(Image.prototype, 'src');
- const srcset = originalSrcDescriptor.set;
- function enableVIEW() {
- console.log("Vue modifiée activée !");
- Object.defineProperty(Image.prototype, 'src', {
- set(value) {
- this._src = value;
- if (typeof value !== 'string') {
- return srcset.call(this, value);
- }
- if (value.includes('colorMap')) {
- if (value.toLowerCase().includes('red')) {
- value = getSqareDataURL(1000, 1000, '#FF7373');
- } else if (value.toLowerCase().includes('blue')) {
- value = getSqareDataURL(1000, 1000, '#00FFFF');
- } else {
- value = getSqareDataURL(1000, 1000, '#73FF73');
- }
- }
- if (value.includes('map-')) {
- value = getSqareDataURL(4096, 2048, '#AAAAAA');
- }
- srcset.call(this, value);
- },
- get() {
- return this._src;
- }
- });
- }
- function disableVIEW() {
- console.log("Vue modifiée désactivée !");
- Object.defineProperty(Image.prototype, 'src', originalSrcDescriptor);
- }
- function enableUP() {
- console.log("Auto Bunny Hop activé !");
- document.addEventListener('keydown', (event) => {
- if (event.key === ' ' && autoBunnyHopInterval === null) {
- autoBunnyHopInterval = setInterval(() => {
- const event = new KeyboardEvent('keydown', { key: ' ' });
- document.dispatchEvent(event);
- }, 3000);
- }
- });
- document.addEventListener('keyup', (event) => {
- if (event.key === ' ') {
- clearInterval(autoBunnyHopInterval);
- autoBunnyHopInterval = null;
- }
- });
- }
- function disableUP() {
- console.log("Auto Bunny Hop activé !");
- }
- function createScopeOverlay() {
- scope = document.createElement("img");
- scope.src = newScopeURL;
- scope.id = "custom-sniper-scope";
- scope.style.position = "fixed";
- scope.style.top = "50%";
- scope.style.left = "50%";
- scope.style.transform = "translate(-50%, -50%)";
- scope.style.pointerEvents = "none";
- scope.style.maxWidth = "100vw";
- scope.style.maxHeight = "100vh";
- scope.style.zIndex = "99999";
- document.body.appendChild(scope);
- }
- function enableCROSS() {
- if (!scope) {
- createScopeOverlay();
- } else {
- scope.style.display = "block";
- }
- }
- function disableCROSS() {
- if (scope) {
- scope.style.display = "none";
- }
- }
- function updateFPS() {
- const now = performance.now();
- const delta = now - lastTime;
- if (delta > 100) {
- const fps = Math.round(1000 / delta);
- fpsDisplay.textContent = `FPS: ${fps}`;
- lastTime = now;
- }
- }
- function enableFPS() {
- fpsInterval = setInterval(updateFPS, 100);
- fpsDisplay.style.display = 'block';
- }
- function disableFPS() {
- clearInterval(fpsInterval);
- fpsDisplay.style.display = 'none';
- }
- //////////////////////////////////////////////////
- /// ///
- /// END BUTTON FUNCTION ///
- /// ///
- //////////////////////////////////////////////////
- injectCSS(menuCSS);
- createLoginScreen();
- createModMenu();
- document.addEventListener("keydown", function(event) {
- if (event.key === "Insert") {
- if (isLoggedIn) {
- toggleModMenu();
- } else {
- document.getElementById("login-screen").classList.add("show");
- }
- }
- });
- })();