Steuerungspanel für Rush Team. Rückstoßkontrolle kostenlos. Vollversion (Wallhack, Aimbot, ESP, Geistermodus) auf rushteam.tools.
// ==UserScript==
// @name RushTeam Hack — Wallhack, ESP, Aimbot & More
// @name:tr RushTeam Hack — Wallhack, ESP, Aimbot ve Daha Fazlası
// @name:ru RushTeam Hack — Wallhack, ESP, Аимбот и многое другое
// @name:fr RushTeam Hack — Wallhack, ESP, Aimbot et plus
// @name:pt-BR RushTeam Hack — Wallhack, ESP, Aimbot e Muito Mais
// @name:de RushTeam Hack — Wallhack, ESP, Aimbot & Mehr
// @name:es RushTeam Hack — Wallhack, ESP, Aimbot y Más
// @namespace https://rushteam.tools
// @version 2.1.3
// @description Control panel for Rush Team WebGL. Recoil Control free. Full version (Wallhack, Aimbot, ESP, Ghost Mode) at rushteam.tools
// @description:tr Rush Team için hile paneli. Geri Tepme Kontrolü ücretsiz. Tam sürüm (Wallhack, Aimbot, ESP, Ghost Modu) rushteam.tools'ta.
// @description:ru Панель управления для Rush Team. Контроль отдачи бесплатно. Полная версия (Wallhack, Аимбот, ESP, Ghost Mode) на rushteam.tools.
// @description:fr Panneau de contrôle pour Rush Team. Contrôle du recul gratuit. Version complète (Wallhack, Aimbot, ESP, Ghost Mode) sur rushteam.tools.
// @description:pt-BR Painel de controle para Rush Team. Controle de Recuo grátis. Versão completa (Wallhack, Aimbot, ESP, Ghost Mode) em rushteam.tools.
// @description:de Steuerungspanel für Rush Team. Rückstoßkontrolle kostenlos. Vollversion (Wallhack, Aimbot, ESP, Geistermodus) auf rushteam.tools.
// @description:es Panel de control para Rush Team. Control de Retroceso gratis. Versión completa (Wallhack, Aimbot, ESP, Modo Fantasma) en rushteam.tools.
// @author Polyfillers
// @homepage https://rushteam.tools
// @match https://www.gaming-style.com/RushTeam/RushTeamWebGL/index.php*
// @match https://www.gaming-style.com/RushTeam/index.php*
// @icon https://www.google.com/s2/favicons?sz=64&domain=gaming-style.com
// @grant none
// @run-at document-start
// ==/UserScript==
(function () {
"use strict";
const SITE = "https://rushteam.tools";
const DISCORD = "https://discord.gg/hNAtbuUM";
const VERSION = "2.1.3";
const WEBGL_URL =
"https://www.gaming-style.com/RushTeam/RushTeamWebGL/index.php";
const IS_WEBGL = /RushTeamWebGL/.test(window.location.pathname);
const _cn = ["unity", "canvas"].join("-");
const _ev = ["mouse", "move"].join("");
const _na = ["Not", "Allowed"].join("");
const _uc = ["unity", "container"].join("-");
let panelOpen = false;
let _on = false;
let _ti = null;
let _str = 180;
let _mb = false;
let isDragging = false, dragOffX = 0, dragOffY = 0;
document.addEventListener("mousedown", (e) => { if (e.button === 0) _mb = true; }, true);
document.addEventListener("mouseup", (e) => { if (e.button === 0) _mb = false; }, true);
function _rs() {
if (_ti) return;
_ti = setInterval(() => {
if (!_mb) return;
const _c = document.getElementById(_cn);
if (!_c) return;
_c.dispatchEvent(new MouseEvent(_ev, { bubbles: true, cancelable: true, movementX: 0, movementY: _str / 50 }));
}, 16);
}
function _rx() {
clearInterval(_ti);
_ti = null;
}
function toggleRecoil() {
_on = !_on;
_on ? _rs() : _rx();
_syncRc();
toast("Recoil Control " + (_on ? "ON" : "OFF"));
}
function _syncRc() {
document.querySelectorAll('#security-toolkit-panel [data-id="norecoil"], #security-toolkit-panel [data-id="norecoil-toggle"]').forEach((row) => {
const v = row.querySelector(".rt-row-value");
if (v) v.textContent = _on ? "ON" : "OFF";
row.classList.toggle("on", _on);
});
const dot = document.getElementById("stp-dot-norecoil");
if (dot) dot.classList.toggle("on", _on);
}
function toast(msg) {
const el = document.createElement("div");
el.textContent = msg;
Object.assign(el.style, {
position: "fixed",
bottom: "20px",
right: "20px",
background: "#0d1117",
border: "1px solid #10b981",
color: "#e6edf3",
padding: "7px 13px",
borderRadius: "6px",
fontSize: "11px",
fontFamily: "monospace",
zIndex: "2147483647",
opacity: "0",
transition: "opacity 180ms ease",
pointerEvents: "none",
});
document.body.appendChild(el);
requestAnimationFrame(() => {
el.style.opacity = "1";
});
setTimeout(() => {
el.style.opacity = "0";
setTimeout(() => el.remove(), 200);
}, 2200);
}
const PANEL_CSS = `
#security-toolkit-panel {
--rt-bg-primary: #111118;
--rt-bg-secondary: #0d0d14;
--rt-bg-elevated: rgba(255,255,255,0.025);
--rt-bg-hover: rgba(16,185,129,0.04);
--rt-bg-active: rgba(16,185,129,0.08);
--rt-border: rgba(255,255,255,0.04);
--rt-border-subtle: rgba(255,255,255,0.025);
--rt-border-active: #10b981;
--rt-text-primary: #e2e2e8;
--rt-text-secondary: #7a7a8a;
--rt-text-muted: #4a4a60;
--rt-text-accent: #10b981;
--rt-text-accent-light: #34d399;
--rt-text-danger: #ef4444;
--rt-text-warning: #f59e0b;
--rt-accent: #10b981;
--rt-accent-dim: rgba(16,185,129,0.15);
--rt-accent-glow: rgba(16,185,129,0.3);
--rt-tier-free: #6b6b7b;
--rt-tier-paid: #10b981;
--rt-tier-pro: #f59e0b;
--rt-font: 'Segoe UI', system-ui, -apple-system, sans-serif;
--rt-font-mono: 'Consolas', 'Monaco', monospace;
--rt-font-xs: 9px;
--rt-font-sm: 10px;
--rt-font-base: 12px;
--rt-transition: 150ms ease;
}
#security-toolkit-panel {
position: fixed; top: 64px; left: 16px; width: 440px;
background: var(--rt-bg-primary); border: 1px solid var(--rt-border);
border-radius: 10px; font-family: var(--rt-font); font-size: var(--rt-font-base);
color: var(--rt-text-primary); z-index: 999999; display: none;
user-select: none; overflow: hidden; box-shadow: 0 8px 32px rgba(0,0,0,0.5); line-height: 1.4;
}
#security-toolkit-panel.visible { display: block; }
#security-toolkit-panel * { box-sizing: border-box; }
.rt-header {
display: flex; align-items: center; justify-content: space-between;
padding: 8px 12px; background: var(--rt-bg-secondary);
border-bottom: 1px solid var(--rt-border); cursor: move;
}
.rt-header-left { display: flex; align-items: center; gap: 8px; }
.rt-logo-box {
width: 20px; height: 20px; background: var(--rt-accent); border-radius: 3px;
display: flex; align-items: center; justify-content: center;
color: #000; font-weight: 900; font-size: 11px; letter-spacing: -0.5px; flex-shrink: 0;
}
.rt-title { font-size: var(--rt-font-base); font-weight: 700; color: var(--rt-text-primary); letter-spacing: 1px; text-transform: uppercase; }
.rt-version { font-size: var(--rt-font-xs); color: var(--rt-text-muted); font-weight: 600; }
.rt-header-right { display: flex; align-items: center; gap: 8px; }
.rt-close {
width: 22px; height: 22px; display: flex; align-items: center; justify-content: center;
border-radius: 6px; border: none; background: none; color: var(--rt-text-muted);
cursor: pointer; transition: all var(--rt-transition); padding: 0;
}
.rt-close:hover { background: rgba(255,255,255,0.05); color: var(--rt-text-secondary); }
.rt-tabs {
display: flex; padding: 0 12px; background: var(--rt-bg-secondary);
border-bottom: 1px solid var(--rt-border); gap: 0;
}
.rt-tab {
padding: 7px 12px 5px; background: none; border: none;
border-bottom: 2px solid transparent; color: var(--rt-text-muted);
font-family: inherit; font-size: var(--rt-font-sm); font-weight: 600;
cursor: pointer; transition: all var(--rt-transition); white-space: nowrap;
}
.rt-tab .rt-tab-hint { font-size: 8px; color: var(--rt-text-muted); opacity: 0.5; margin-left: 3px; vertical-align: super; }
.rt-tab:hover { color: var(--rt-text-secondary); }
.rt-tab.active { color: var(--rt-accent); border-bottom-color: var(--rt-accent); }
.rt-guide-bar {
display: flex; align-items: center; justify-content: center; gap: 12px;
padding: 4px 12px; background: var(--rt-bg-secondary);
border-bottom: 1px solid var(--rt-border); font-size: 8px;
color: var(--rt-text-muted); letter-spacing: 0.5px;
}
.rt-guide-bar kbd {
display: inline-block; padding: 0 4px; background: rgba(255,255,255,0.04);
border: 1px solid rgba(255,255,255,0.06); border-radius: 2px;
font-family: var(--rt-font-mono); font-size: 8px; color: var(--rt-text-secondary); line-height: 1.4;
}
.rt-tab-content { display: none; padding: 8px 0; max-height: 420px; overflow-y: auto; }
.rt-tab-content.active { display: block; }
.rt-tab-content::-webkit-scrollbar { width: 2px; }
.rt-tab-content::-webkit-scrollbar-thumb { background: rgba(16,185,129,0.2); border-radius: 1px; }
.rt-category {
font-size: 8px; font-weight: 700; letter-spacing: 1.5px; text-transform: uppercase;
color: #3a3a50; padding: 8px 14px 3px;
}
.rt-category:first-child { padding-top: 4px; }
.rt-row {
display: flex; align-items: center; padding: 5px 14px 5px 18px;
position: relative; cursor: pointer; transition: background var(--rt-transition); min-height: 28px;
}
.rt-row:hover { background: var(--rt-bg-hover); }
.rt-row.on::before {
content: ''; position: absolute; left: 0; top: 4px; bottom: 4px; width: 3px;
background: var(--rt-accent); border-radius: 0 2px 2px 0; box-shadow: 0 0 4px var(--rt-accent-glow);
}
.rt-row.locked {
opacity: 0.8; background: rgba(245,158,11,0.03);
border-left: 2px solid rgba(245,158,11,0.28); cursor: pointer;
}
.rt-row.locked .rt-row-name { color: var(--rt-text-secondary); }
.rt-row.locked .rt-row-key { visibility: hidden; }
.rt-row.locked .rt-row-value {
color: #f59e0b; display: flex; align-items: center; justify-content: flex-end; gap: 3px;
}
.rt-row.locked .rt-row-value::after {
content: 'PRO'; font-size: 7px; font-weight: 800; letter-spacing: 0.6px;
color: rgba(245,158,11,0.65); background: rgba(245,158,11,0.1);
border: 1px solid rgba(245,158,11,0.22); border-radius: 2px;
padding: 1px 3px; margin-left: 3px; line-height: 1.4;
}
.rt-row.locked:hover { background: rgba(245,158,11,0.08); opacity: 1; border-left-color: rgba(245,158,11,0.6); }
.rt-row.locked:hover .rt-row-value { color: #fbbf24; }
.rt-row.locked:hover .rt-row-value::after { color: #f59e0b; background: rgba(245,158,11,0.18); border-color: rgba(245,158,11,0.4); }
.rt-row-name { flex: 1; font-size: var(--rt-font-sm); font-weight: 500; color: var(--rt-text-primary); }
.rt-row-key {
font-size: 8px; color: var(--rt-text-muted); font-weight: 600;
padding: 1px 5px; background: rgba(255,255,255,0.03); border-radius: 3px;
margin-right: 8px; font-family: var(--rt-font-mono);
}
.rt-row-value { font-size: var(--rt-font-sm); font-weight: 600; color: var(--rt-text-muted); min-width: 30px; text-align: right; }
.rt-row.on .rt-row-value { color: var(--rt-accent); }
.rt-row-slider { display: flex; align-items: center; gap: 6px; min-width: 120px; justify-content: flex-end; }
.rt-slider-track {
-webkit-appearance: none; appearance: none; height: 3px;
background: rgba(255,255,255,0.06); border-radius: 2px; outline: none; cursor: pointer; width: 80px;
}
.rt-slider-track::-webkit-slider-thumb {
-webkit-appearance: none; appearance: none; width: 10px; height: 10px;
background: var(--rt-accent); border-radius: 50%; cursor: pointer; border: none;
}
.rt-slider-track::-moz-range-thumb { width: 10px; height: 10px; background: var(--rt-accent); border-radius: 50%; cursor: pointer; border: none; }
.rt-slider-fill {
color: var(--rt-text-accent); font-size: var(--rt-font-sm); min-width: 28px;
text-align: right; font-family: var(--rt-font-mono); font-weight: 600;
}
.rt-select {
background: var(--rt-bg-secondary); border: 1px solid var(--rt-border);
color: var(--rt-text-primary); padding: 4px 8px; border-radius: 4px;
font-family: inherit; font-size: var(--rt-font-sm); cursor: pointer; outline: none;
transition: border-color var(--rt-transition);
}
.rt-select:hover, .rt-select:focus { border-color: var(--rt-accent); }
.rt-select option { background: var(--rt-bg-primary); color: var(--rt-text-primary); }
.rt-info-row { padding: 3px 14px 3px 18px; font-size: var(--rt-font-xs); color: var(--rt-text-muted); line-height: 1.5; }
.rt-info-row.rt-nudge { color: #f59e0b; cursor: pointer; letter-spacing: 0.3px; font-weight: 600; }
.rt-info-row.rt-nudge:hover { color: #fbbf24; }
.rt-keybind-value {
background: var(--rt-bg-secondary); border: 1px solid var(--rt-border);
color: var(--rt-text-primary); padding: 2px 6px; border-radius: 4px;
font-family: var(--rt-font-mono); font-size: var(--rt-font-xs);
width: 52px; text-align: center; cursor: default; outline: none;
}
.rt-status-bar {
display: flex; align-items: center; justify-content: space-between;
padding: 5px 12px; background: var(--rt-bg-secondary); border-top: 1px solid var(--rt-border);
}
.rt-status-items { display: flex; gap: 10px; align-items: center; }
.rt-status-item { display: flex; align-items: center; gap: 4px; font-size: 8px; color: var(--rt-text-muted); font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; }
.rt-dot { width: 5px; height: 5px; border-radius: 50%; background: rgba(255,255,255,0.08); transition: background var(--rt-transition), box-shadow var(--rt-transition); }
.rt-dot.on { background: var(--rt-accent); box-shadow: 0 0 6px var(--rt-accent-glow); }
.rt-badge { padding: 2px 8px; border-radius: 9999px; font-size: 8px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.5px; line-height: 1.4; }
.rt-badge-free { background: rgba(107,107,123,0.15); color: var(--rt-tier-free); }
.rt-badge-paid { background: rgba(16,185,129,0.12); color: var(--rt-tier-paid); }
.rt-tier-display { display: flex; align-items: center; justify-content: space-between; padding: 4px 14px 4px 18px; }
.rt-tier-label { font-size: var(--rt-font-sm); color: var(--rt-text-secondary); }
.rt-tier-value { font-size: var(--rt-font-sm); font-weight: 700; text-transform: uppercase; letter-spacing: 0.5px; }
.rt-timer { font-family: var(--rt-font-mono); font-size: var(--rt-font-sm); font-weight: 600; color: var(--rt-text-secondary); }
.rt-input-row { display: flex; gap: 4px; align-items: center; padding: 6px 14px; }
.rt-input {
background: var(--rt-bg-secondary); border: 1px solid var(--rt-border);
color: var(--rt-text-primary); padding: 4px 8px; border-radius: 4px;
font-family: inherit; font-size: var(--rt-font-sm); outline: none;
transition: border-color var(--rt-transition); width: 60px;
}
.rt-input:focus { border-color: var(--rt-accent); }
.rt-input::placeholder { color: var(--rt-text-muted); }
.rt-btn {
padding: 4px 10px; border: 1px solid var(--rt-border); background: var(--rt-bg-elevated);
color: var(--rt-text-secondary); border-radius: 4px; cursor: pointer;
font-family: inherit; font-size: var(--rt-font-sm); transition: all var(--rt-transition); white-space: nowrap;
}
.rt-btn:hover { border-color: var(--rt-accent); color: var(--rt-accent); }
.rt-btn-primary { border-color: var(--rt-accent); color: var(--rt-accent); }
.rt-btn-primary:hover { background: var(--rt-accent-dim); }
.rt-btn-danger { border-color: rgba(239,68,68,0.3); color: var(--rt-text-danger); }
.rt-btn-icon-danger {
flex-shrink: 0; width: 26px; padding: 0; display: flex; align-items: center;
justify-content: center; color: var(--rt-text-muted); border-color: transparent;
}
.rt-btn-icon-danger:hover { color: var(--rt-text-danger); border-color: rgba(239,68,68,0.3); background: rgba(239,68,68,0.08); }
.rt-btn-warning { border-color: rgba(245,158,11,0.3); color: var(--rt-text-warning); }
.rt-btn-warning:hover { background: rgba(245,158,11,0.1); border-color: var(--rt-text-warning); }
.rt-divider { height: 1px; background: var(--rt-border); margin: 8px 0; }
.rt-discord-card {
display: flex; align-items: center; justify-content: space-between; gap: 10px;
margin: 8px 10px 6px; padding: 9px 12px;
background: rgba(88,101,242,0.1); border: 1px solid rgba(88,101,242,0.3);
border-radius: 6px; cursor: pointer; transition: background var(--rt-transition), border-color var(--rt-transition);
}
.rt-discord-card:hover { background: rgba(88,101,242,0.16); border-color: rgba(88,101,242,0.5); }
.rt-discord-card-left { display: flex; align-items: center; gap: 9px; }
.rt-discord-title { font-size: var(--rt-font-sm); font-weight: 700; color: #7289da; line-height: 1.3; }
.rt-discord-sub { font-size: var(--rt-font-xs); color: rgba(114,137,218,0.65); margin-top: 1px; }
.rt-discord-join { font-size: var(--rt-font-xs); font-weight: 700; color: #7289da; font-family: var(--rt-font-mono); white-space: nowrap; opacity: 0.8; }
.rt-discord-card:hover .rt-discord-join { opacity: 1; }
.rt-plan-row {
display: flex; align-items: center; gap: 8px; padding: 5px 14px 5px 18px;
border-bottom: 1px solid var(--rt-border-subtle); cursor: pointer; transition: background 0.15s ease;
}
.rt-plan-row:hover { background: rgba(16,185,129,0.07); }
.rt-plan-row.rt-plan-highlight { background: rgba(16,185,129,0.03); }
.rt-plan-row.rt-plan-highlight:hover { background: rgba(16,185,129,0.1); }
.rt-plan-name { flex: 1; font-size: var(--rt-font-sm); font-weight: 600; color: var(--rt-text-primary); display: flex; align-items: center; gap: 5px; }
.rt-plan-period { font-size: var(--rt-font-xs); color: var(--rt-text-muted); font-family: var(--rt-font-mono); min-width: 42px; text-align: right; }
.rt-plan-price { font-size: var(--rt-font-sm); font-weight: 700; font-family: var(--rt-font-mono); color: var(--rt-text-accent); min-width: 28px; text-align: right; }
.rt-plan-price-gold { color: var(--rt-text-warning); }
.rt-plan-badge { font-size: 7px; font-weight: 700; letter-spacing: 0.5px; padding: 1px 4px; border-radius: 2px; background: rgba(16,185,129,0.1); border: 1px solid rgba(16,185,129,0.25); color: var(--rt-accent); }
.rt-plan-badge-gold { background: rgba(245,158,11,0.1); border: 1px solid rgba(245,158,11,0.25); color: var(--rt-text-warning); }
.rt-btn-plan { font-size: var(--rt-font-xs); padding: 3px 8px; font-family: var(--rt-font-mono); letter-spacing: 0.3px; pointer-events: none; }
`;
const SVG_CLOSE =
'<svg width="12" height="12" viewBox="0 0 12 12" fill="none"><path d="M1 1l10 10M11 1L1 11" stroke="currentColor" stroke-width="1.5" stroke-linecap="round"/></svg>';
const SVG_TRASH =
'<svg width="12" height="12" viewBox="0 0 12 12" fill="none"><path d="M1 3h10M4 3V2a1 1 0 011-1h2a1 1 0 011 1v1m1 0v7a1 1 0 01-1 1H4a1 1 0 01-1-1V3h8z" stroke="currentColor" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round"/></svg>';
const SVG_DISCORD =
'<svg width="16" height="16" viewBox="0 0 24 24" fill="#7289da" style="flex-shrink:0"><path d="M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057c.002.022.015.043.033.054a19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03z"/></svg>';
const PANEL_HTML = `
<!-- Title Bar -->
<div class="rt-header">
<div class="rt-header-left">
<div class="rt-logo-box">PF</div>
<span class="rt-title">Polyfillers Hack</span>
<span class="rt-version">v${VERSION}</span>
<span class="rt-badge rt-badge-free">FREE</span>
</div>
<div class="rt-header-right">
<button class="rt-close" id="stp-close">${SVG_CLOSE}</button>
</div>
</div>
<!-- Version notice banner — always shown (GreasyFork build is always outdated) -->
<div id="stp-version-banner" style="display:flex; background:rgba(124,58,237,0.12); border-bottom:1px solid rgba(124,58,237,0.3); padding:5px 12px; font-size:9px; color:#a78bfa; align-items:center; justify-content:space-between; gap:8px; flex-shrink:0;">
<span style="flex:1;">v${VERSION} is outdated — newer version available with all features unlocked</span>
<a href="${SITE}/install/rush-team-hack.production.user.js" target="_blank" style="color:#c4b5fd; text-decoration:none; white-space:nowrap; font-weight:600;">Update →</a>
</div>
<!-- Tabs -->
<div class="rt-tabs">
<button class="rt-tab active" data-tab="license"><span class="rt-tab-hint">1</span> License</button>
<button class="rt-tab" data-tab="main"><span class="rt-tab-hint">2</span> Main</button>
<button class="rt-tab" data-tab="visuals"><span class="rt-tab-hint">3</span> Visuals</button>
<button class="rt-tab" data-tab="aim"><span class="rt-tab-hint">4</span> Aim</button>
<button class="rt-tab" data-tab="ghost"><span class="rt-tab-hint">5</span> Ghost</button>
</div>
<!-- Guide Bar -->
<div class="rt-guide-bar">
<span><kbd>F2</kbd>/<kbd>Ins</kbd> panel</span>
<span><kbd>↑↓</kbd> nav</span>
<span><kbd>Enter</kbd> toggle</span>
<span><kbd>←→</kbd> adjust</span>
<span><kbd>Tab</kbd> tabs</span>
</div>
<!-- ── Tab 1: License ─────────────────────────────────────────────────── -->
<div class="rt-tab-content active" id="tab-license">
<div class="rt-discord-card" id="stp-discord-btn">
<div class="rt-discord-card-left">
${SVG_DISCORD}
<div>
<div class="rt-discord-title">Support & Help</div>
<div class="rt-discord-sub">Key delivery · device resets · issues</div>
</div>
</div>
<span class="rt-discord-join">Join →</span>
</div>
<div class="rt-category">License Key</div>
<div class="rt-input-row">
<input type="text" class="rt-input" id="stp-license-key" placeholder="RT-XXXX-XXXX-XXXX-XXXX" style="flex:1; width:auto; font-size:9px;">
<button class="rt-btn rt-btn-primary" id="stp-license-apply">Apply</button>
<button class="rt-btn rt-btn-icon-danger" id="stp-license-clear" title="Clear key">${SVG_TRASH}</button>
</div>
<div class="rt-category">Status</div>
<div class="rt-tier-display">
<span class="rt-tier-label">Tier</span>
<span class="rt-tier-value" style="color: var(--rt-tier-free);">FREE</span>
</div>
<div class="rt-tier-display">
<span class="rt-tier-label">Session</span>
<span class="rt-timer">—</span>
</div>
<div class="rt-category">Get a License</div>
<div class="rt-plan-row" data-checkout="weekly">
<span class="rt-plan-name">Weekly</span>
<span class="rt-plan-period">7 days</span>
<span class="rt-plan-price">$5</span>
<span class="rt-btn rt-btn-plan">Buy →</span>
</div>
<div class="rt-plan-row rt-plan-highlight" data-checkout="monthly">
<span class="rt-plan-name">Monthly <span class="rt-plan-badge">POPULAR</span></span>
<span class="rt-plan-period">30 days</span>
<span class="rt-plan-price">$10</span>
<span class="rt-btn rt-btn-plan rt-btn-primary">Buy →</span>
</div>
<div class="rt-plan-row" data-checkout="lifetime">
<span class="rt-plan-name">Lifetime <span class="rt-plan-badge rt-plan-badge-gold">BEST</span></span>
<span class="rt-plan-period">Forever</span>
<span class="rt-plan-price rt-plan-price-gold">$40</span>
<span class="rt-btn rt-btn-plan rt-btn-warning">Buy →</span>
</div>
<div class="rt-info-row">Instant · Crypto · 0 bans · rushteam.tools</div>
<div class="rt-divider"></div>
<div class="rt-info-row" style="text-align:center; padding:6px 14px; cursor:pointer;" id="stp-access-link">
Get full access at <span style="color:var(--rt-accent);">rushteam.tools</span>
</div>
</div>
<!-- ── Tab 2: Main ────────────────────────────────────────────────────── -->
<div class="rt-tab-content" id="tab-main">
<div class="rt-category">Features</div>
<div class="rt-row locked" data-id="xray">
<span class="rt-row-name">Wallhack</span>
<span class="rt-row-key">F3</span>
<span class="rt-row-value"></span>
</div>
<div class="rt-row locked" data-id="chams">
<span class="rt-row-name">Chams</span>
<span class="rt-row-key">F4</span>
<span class="rt-row-value"></span>
</div>
<div class="rt-row" data-id="norecoil">
<span class="rt-row-name">Recoil Control</span>
<span class="rt-row-key">F5</span>
<span class="rt-row-value">OFF</span>
</div>
<div class="rt-row locked" data-id="desync">
<span class="rt-row-name">Ghost Hack</span>
<span class="rt-row-key">F6</span>
<span class="rt-row-value"></span>
</div>
<div class="rt-row locked" data-id="aim">
<span class="rt-row-name">Aimbot</span>
<span class="rt-row-key">F7</span>
<span class="rt-row-value"></span>
</div>
<div class="rt-row locked" data-id="bot">
<span class="rt-row-name">Bot Mode</span>
<span class="rt-row-key">F8</span>
<span class="rt-row-value"></span>
</div>
<div class="rt-info-row rt-nudge" id="stp-upgrade-nudge" style="display:none;">Features locked — upgrade to unlock all</div>
<div class="rt-category">Keybinds</div>
<div class="rt-row" style="cursor:default;" data-id="key-panel">
<span class="rt-row-name">Panel</span>
<input type="text" class="rt-keybind-value" value="F2" readonly tabindex="-1">
</div>
<div class="rt-row" style="cursor:default;" data-id="key-esp">
<span class="rt-row-name">Wallhack</span>
<input type="text" class="rt-keybind-value" value="F3" readonly tabindex="-1">
</div>
<div class="rt-row" style="cursor:default;" data-id="key-chams">
<span class="rt-row-name">Chams</span>
<input type="text" class="rt-keybind-value" value="F4" readonly tabindex="-1">
</div>
<div class="rt-row" style="cursor:default;" data-id="key-norecoil">
<span class="rt-row-name">Recoil Ctrl</span>
<input type="text" class="rt-keybind-value" value="F5" readonly tabindex="-1">
</div>
<div class="rt-row" style="cursor:default;" data-id="key-desync">
<span class="rt-row-name">Ghost Hack</span>
<input type="text" class="rt-keybind-value" value="F6" readonly tabindex="-1">
</div>
<div class="rt-row" style="cursor:default;" data-id="key-aimdebug">
<span class="rt-row-name">Aimbot</span>
<input type="text" class="rt-keybind-value" value="F7" readonly tabindex="-1">
</div>
<div class="rt-row" style="cursor:default;" data-id="key-botmode">
<span class="rt-row-name">Bot Mode</span>
<input type="text" class="rt-keybind-value" value="F8" readonly tabindex="-1">
</div>
<div class="rt-info-row">Keybind editing available in full version at rushteam.tools</div>
<div class="rt-category">Network</div>
<div class="rt-row locked" data-id="bypass">
<span class="rt-row-name">IP Bypass</span>
<span class="rt-row-key"></span>
<span class="rt-row-value"></span>
</div>
</div>
<!-- ── Tab 3: Visuals ─────────────────────────────────────────────────── -->
<div class="rt-tab-content" id="tab-visuals">
<div class="rt-category">Wallhack</div>
<div class="rt-row locked" data-id="xray-toggle">
<span class="rt-row-name">Wallhack</span>
<span class="rt-row-key">F3</span>
<span class="rt-row-value"></span>
</div>
<div class="rt-row locked" data-id="xray-depth">
<span class="rt-row-name">Depth Offset</span>
<span class="rt-row-key"></span>
<span class="rt-row-value">-100000</span>
</div>
<div class="rt-category">Chams</div>
<div class="rt-row locked" data-id="chams-toggle">
<span class="rt-row-name">Chams</span>
<span class="rt-row-key">F4</span>
<span class="rt-row-value"></span>
</div>
<div class="rt-row locked" data-id="chams-color">
<span class="rt-row-name">Color</span>
<span class="rt-row-key"></span>
<span class="rt-row-value">Red</span>
</div>
</div>
<!-- ── Tab 4: Aim ─────────────────────────────────────────────────────── -->
<div class="rt-tab-content" id="tab-aim">
<div class="rt-category">Aimbot</div>
<div class="rt-row locked" data-id="aim-toggle">
<span class="rt-row-name">Aimbot</span>
<span class="rt-row-key">F7</span>
<span class="rt-row-value"></span>
</div>
<div class="rt-info-row">Hold aim key to lock onto nearest target</div>
<div class="rt-category">Configuration</div>
<div class="rt-row locked" data-id="aim-mode">
<span class="rt-row-name">Mode</span>
<span class="rt-row-key"></span>
<span class="rt-row-value">Smooth</span>
</div>
<div class="rt-row locked" data-id="aim-smoothing">
<span class="rt-row-name">Smoothing</span>
<span class="rt-row-key"></span>
<span class="rt-row-value">0.50</span>
</div>
<div class="rt-row locked" data-id="aim-fov">
<span class="rt-row-name">FOV</span>
<span class="rt-row-key"></span>
<span class="rt-row-value">300</span>
</div>
<div class="rt-row locked" data-id="aim-sensitivity">
<span class="rt-row-name">Sensitivity</span>
<span class="rt-row-key"></span>
<span class="rt-row-value">1.00</span>
</div>
<div class="rt-row locked" data-id="aim-headheight">
<span class="rt-row-name">Target Spot</span>
<span class="rt-row-key"></span>
<span class="rt-row-value">Head</span>
</div>
<div class="rt-row locked" data-id="aim-priority">
<span class="rt-row-name">Priority</span>
<span class="rt-row-key"></span>
<span class="rt-row-value">Crosshair</span>
</div>
<div class="rt-category">Aim Key</div>
<div class="rt-row locked" data-id="aim-key">
<span class="rt-row-name">Hold Key</span>
<span class="rt-row-key"></span>
<span class="rt-row-value">Mouse4</span>
</div>
<div class="rt-category">Recoil Control</div>
<div class="rt-row" data-id="norecoil-toggle">
<span class="rt-row-name">Recoil Control</span>
<span class="rt-row-key">F5</span>
<span class="rt-row-value">OFF</span>
</div>
<div class="rt-row" style="cursor:default;" data-id="rc-strength">
<span class="rt-row-name">Strength</span>
<div class="rt-row-slider">
<input type="range" class="rt-slider-track" id="stp-rc-strength" min="10" max="300" value="180" step="10">
<span class="rt-slider-fill" id="stp-rc-strength-val">1.80</span>
</div>
</div>
<div class="rt-row" style="cursor:default;" data-id="rc-preset">
<span class="rt-row-name">Preset</span>
<select class="rt-select" id="stp-rc-preset" style="width:90px;">
<option value="light">Light 1.5x</option>
<option value="medium" selected>Medium 2.0x</option>
<option value="heavy">Heavy 2.5x</option>
<option value="sniper">Sniper 1.0x</option>
</select>
</div>
</div>
<!-- ── Tab 5: Ghost ───────────────────────────────────────────────────── -->
<div class="rt-tab-content" id="tab-ghost">
<div class="rt-category">Ghost Hack</div>
<div class="rt-row locked" data-id="ghost-toggle">
<span class="rt-row-name">Ghost Hack</span>
<span class="rt-row-key">F6</span>
<span class="rt-row-value"></span>
</div>
<div class="rt-category">Configuration</div>
<div class="rt-row locked" data-id="ghost-mode">
<span class="rt-row-name">Mode</span>
<span class="rt-row-key"></span>
<span class="rt-row-value">Ghost</span>
</div>
<div class="rt-info-row">Ghost: frozen until shoot, click = brief flash</div>
<div class="rt-row locked" data-id="ghost-autopulse">
<span class="rt-row-name">Auto-Pulse</span>
<span class="rt-row-key"></span>
<span class="rt-row-value"></span>
</div>
<div class="rt-row locked" data-id="ghost-interval">
<span class="rt-row-name">Interval</span>
<span class="rt-row-key"></span>
<span class="rt-row-value">0.4s</span>
</div>
</div>
<!-- Upgrade overlay — shown immediately to push users to full version -->
<div id="rt-upgrade-overlay" style="display:flex; position:absolute; inset:0; background:#0a0a0f; z-index:9999; flex-direction:column; align-items:center; justify-content:center; padding:28px 24px; text-align:center; gap:14px;">
<div style="color:#ef4444; font-size:13px; font-weight:700; letter-spacing:0.08em; text-transform:uppercase;">Newer Version Available</div>
<div style="color:#4a4a60; font-size:10px; line-height:1.9; max-width:260px;">
v2.1.0 (GreasyFork) is a limited preview.<br>
The latest version unlocks all features:<br>
<span style="color:#7a7a8a;">Wallhack · Aimbot · Chams · Ghost Mode</span><br>
<span style="color:#3a3a50; font-size:9px;">Recoil Control is free in both versions.</span>
</div>
<a href="https://rushteam.tools/install/rush-team-hack.production.user.js" target="_blank" style="display:inline-block; background:#10b981; color:#000; font-size:10px; font-weight:700; padding:9px 20px; border-radius:6px; text-decoration:none; font-family:monospace; letter-spacing:0.04em;">Get Full Version →</a>
<div id="rt-overlay-dismiss" style="font-size:8px; color:#2a2a3a; font-family:monospace; cursor:pointer; text-decoration:underline; text-underline-offset:2px;">continue with limited version</div>
</div>
<!-- Status Bar -->
<div class="rt-status-bar">
<div class="rt-status-items">
<div class="rt-status-item"><span class="rt-dot" id="stp-dot-xray"></span> WH</div>
<div class="rt-status-item"><span class="rt-dot" id="stp-dot-chams"></span> CH</div>
<div class="rt-status-item"><span class="rt-dot" id="stp-dot-norecoil"></span> RC</div>
<div class="rt-status-item"><span class="rt-dot" id="stp-dot-aim"></span> AB</div>
<div class="rt-status-item"><span class="rt-dot" id="stp-dot-ghost"></span> Ghost</div>
<div class="rt-status-item"><span class="rt-dot" id="stp-dot-bot"></span> Bot</div>
</div>
<span class="rt-badge rt-badge-free">FREE</span>
</div>
`;
let panelEl = null;
function buildPanel() {
if (panelEl) return;
const styleEl = document.createElement("style");
styleEl.textContent = PANEL_CSS;
(document.head || document.documentElement).appendChild(styleEl);
const el = document.createElement("div");
el.id = "security-toolkit-panel";
el.innerHTML = PANEL_HTML;
document.body.appendChild(el);
panelEl = el;
setupEvents();
}
function setupEvents() {
const p = panelEl;
p.querySelector("#stp-close").addEventListener("click", () => {
panelOpen = false;
p.classList.remove("visible");
});
p.querySelector(".rt-header").addEventListener("mousedown", (e) => {
if (e.target.closest("#stp-close")) return;
isDragging = true;
const r = p.getBoundingClientRect();
dragOffX = e.clientX - r.left;
dragOffY = e.clientY - r.top;
});
document.addEventListener("mousemove", (e) => {
if (!isDragging) return;
p.style.left = e.clientX - dragOffX + "px";
p.style.top = e.clientY - dragOffY + "px";
});
document.addEventListener("mouseup", () => {
isDragging = false;
});
p.querySelectorAll(".rt-tab").forEach((tab) => {
tab.addEventListener("click", () => {
const id = tab.dataset.tab;
p.querySelectorAll(".rt-tab").forEach((t) =>
t.classList.toggle("active", t === tab),
);
p.querySelectorAll(".rt-tab-content").forEach((c) =>
c.classList.toggle("active", c.id === "tab-" + id),
);
});
});
p.querySelector("#stp-discord-btn").addEventListener("click", () =>
window.open(DISCORD, "_blank"),
);
p.querySelector("#stp-access-link").addEventListener("click", () =>
window.open(SITE, "_blank"),
);
p.querySelectorAll(".rt-plan-row").forEach((row) => {
row.addEventListener("click", () => window.open(SITE, "_blank"));
});
p.querySelector("#stp-license-apply").addEventListener("click", () => {
toast("Enter your key at rushteam.tools");
setTimeout(() => window.open(SITE, "_blank"), 400);
});
p.querySelector("#stp-license-clear").addEventListener("click", () => {
p.querySelector("#stp-license-key").value = "";
});
p.querySelectorAll(".rt-row.locked").forEach((row) => {
row.addEventListener("click", (e) => {
if (e.target.tagName === "SELECT" || e.target.tagName === "INPUT")
return;
const name =
(row.querySelector(".rt-row-name") || {}).textContent ||
"This feature";
toast(name.trim() + " — unlock at rushteam.tools");
setTimeout(() => window.open(SITE, "_blank"), 400);
});
});
p.querySelectorAll(
'[data-id="norecoil"], [data-id="norecoil-toggle"]',
).forEach((row) => {
row.addEventListener("click", () => toggleRecoil());
});
const rcSlider = p.querySelector("#stp-rc-strength");
const rcVal = p.querySelector("#stp-rc-strength-val");
if (rcSlider) {
rcSlider.addEventListener("input", () => {
_str = +rcSlider.value;
if (rcVal) rcVal.textContent = (_str / 100).toFixed(2);
if (_on) { _rx(); _rs(); }
});
}
const rcPreset = p.querySelector("#stp-rc-preset");
if (rcPreset) {
rcPreset.addEventListener("change", () => {
const map = { light: 150, medium: 200, heavy: 250, sniper: 100 };
_str = map[rcPreset.value] || 200;
if (rcSlider) rcSlider.value = String(_str);
if (rcVal) rcVal.textContent = (_str / 100).toFixed(2);
if (_on) { _rx(); _rs(); }
});
}
const nudge = p.querySelector("#stp-upgrade-nudge");
if (nudge) {
nudge.style.display = "block";
nudge.addEventListener("click", () => window.open(SITE, "_blank"));
}
const dismiss = p.querySelector("#rt-overlay-dismiss");
if (dismiss) {
dismiss.addEventListener("click", () => {
const overlay = p.querySelector("#rt-upgrade-overlay");
if (overlay) overlay.style.display = "none";
});
}
}
function togglePanel() {
panelOpen = !panelOpen;
if (panelEl) panelEl.classList.toggle("visible", panelOpen);
}
document.addEventListener(
"keydown",
(e) => {
if (e.key === "F2" || e.key === "Insert") {
e.preventDefault();
togglePanel();
}
if (e.key === "F5" && document.getElementById("unity-canvas")) {
e.preventDefault();
toggleRecoil();
}
},
true,
);
function _ab() {
const _a = document.getElementById(_na);
const _b = document.getElementById(_uc);
if (_a) _a.style.setProperty("display", "none", "important");
if (_b) _b.style.setProperty("display", "block", "important");
}
function startBypass() {
_ab();
const _obs = new MutationObserver(_ab);
[_na, _uc].forEach((id) => {
const el = document.getElementById(id);
if (el) _obs.observe(el, { attributes: true, attributeFilter: ["style"] });
});
setTimeout(() => {
if (typeof runUnityLoader === "function") {
runUnityLoader();
} else {
const _btn = document.getElementById(["loading", "button"].join("-"));
if (_btn) _btn.click();
}
}, 200);
}
function buildNotice() {
if (panelEl) return;
const styleEl = document.createElement("style");
styleEl.textContent =
PANEL_CSS +
`
#security-toolkit-notice {
--rt-bg-primary: #111118; --rt-bg-secondary: #0d0d14;
--rt-bg-elevated: rgba(255,255,255,0.025); --rt-border: rgba(255,255,255,0.04);
--rt-text-primary: #e2e2e8; --rt-text-secondary: #7a7a8a; --rt-text-muted: #4a4a60;
--rt-text-accent: #10b981; --rt-accent: #10b981; --rt-accent-dim: rgba(16,185,129,0.15);
--rt-font: 'Segoe UI', system-ui, -apple-system, sans-serif;
--rt-font-mono: 'Consolas', 'Monaco', monospace;
--rt-font-xs: 9px; --rt-font-sm: 10px; --rt-font-base: 12px; --rt-transition: 150ms ease;
position: fixed; top: 64px; left: 16px; width: 300px;
background: var(--rt-bg-primary); border: 1px solid var(--rt-border);
border-radius: 10px; font-family: var(--rt-font); font-size: var(--rt-font-base);
color: var(--rt-text-primary); z-index: 999999; display: none;
user-select: none; overflow: hidden; box-shadow: 0 8px 32px rgba(0,0,0,0.5); line-height: 1.4;
}
#security-toolkit-notice.visible { display: block; }
#security-toolkit-notice * { box-sizing: border-box; }
`;
(document.head || document.documentElement).appendChild(styleEl);
const el = document.createElement("div");
el.id = "security-toolkit-notice";
el.innerHTML = `
<div class="rt-header" style="cursor:move;">
<div class="rt-header-left">
<div class="rt-logo-box">PF</div>
<span class="rt-title">Polyfillers Hack</span>
<span class="rt-version">v${VERSION}</span>
</div>
<div class="rt-header-right">
<button class="rt-close" id="stp-notice-close">${SVG_CLOSE}</button>
</div>
</div>
<div style="padding:14px 16px 18px; text-align:center;">
<div style="font-size:10px; color:#7a7a8a; line-height:1.8; margin-bottom:14px;">
You're on the standard Rush Team client.<br>
Switch to the ad-free WebGL version for a<br>
cleaner experience with full toolkit support<br>
and no interruptions.
</div>
<a href="${WEBGL_URL}" style="display:block; background:#10b981; color:#000; font-size:10px; font-weight:700; padding:8px 18px; border-radius:6px; text-decoration:none; font-family:monospace; letter-spacing:0.04em; text-align:center;">Switch to WebGL Version →</a>
</div>
`;
document.body.appendChild(el);
panelEl = el;
el.querySelector("#stp-notice-close").addEventListener("click", () => {
panelOpen = false;
el.classList.remove("visible");
});
el.querySelector(".rt-header").addEventListener("mousedown", (e) => {
if (e.target.closest("#stp-notice-close")) return;
isDragging = true;
const r = el.getBoundingClientRect();
dragOffX = e.clientX - r.left;
dragOffY = e.clientY - r.top;
});
}
function init() {
if (IS_WEBGL) {
startBypass();
buildPanel();
panelOpen = true;
panelEl.classList.add("visible");
toast("RushTeam Tools loaded · F2 to toggle panel");
} else {
buildNotice();
panelOpen = true;
panelEl.classList.add("visible");
}
}
if (document.readyState === "loading") window.addEventListener("load", init);
else init();
})();