this is a basic omegle cheating script that gets you a rating of ~8-9 with an ui
// ==UserScript==
// @name omogglev2
// @namespace http://tampermonkey.net/
// @version 2026-06-01
// @description this is a basic omegle cheating script that gets you a rating of ~8-9 with an ui
// @author c8g
// @match https://omoggle.com/
// @icon https://www.google.com/s2/favicons?sz=64&domain=omoggle.com
// @grant jew
// @license nignig
// ==/UserScript==
(function() {
'use strict';
let active = false;
let jitterAmount = 0.15;
let queueDelaySecs = 1.5; // seconds between auto queue clicks
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
canvas.width = 640;
canvas.height = 480;
// ─── Hardcoded Face Config ────────────────────────────────────────────────────
const faceConfig = {
eyeTilt: 20.0,
eyeWidth: 26,
eyeHeight: 8,
eyeSpacing: 52,
faceWidth: 85,
faceHeight: 620,
jawWidth: 74,
jawDepth: 214,
mouthY: 44,
philtrumY: 16,
headX: 0,
headY: 0,
rotateZ: 0,
rotateX: 0,
rotateY: 0,
};
// ─── 3D helpers ──────────────────────────────────────────────────────────────
function rotatePoint3D(x, y, z, rx, ry, rz) {
let x1 = x * Math.cos(rz) - y * Math.sin(rz);
let y1 = x * Math.sin(rz) + y * Math.cos(rz);
let z1 = z;
let y2 = y1 * Math.cos(rx) - z1 * Math.sin(rx);
let z2 = y1 * Math.sin(rx) + z1 * Math.cos(rx);
let x2 = x1;
let x3 = x2 * Math.cos(ry) + z2 * Math.sin(ry);
let z3 = -x2 * Math.sin(ry) + z2 * Math.cos(ry);
let y3 = y2;
return { x: x3, y: y3, z: z3 };
}
function project(x, y, z, focalLen = 600) {
const scale = focalLen / (focalLen + z);
return { x: x * scale, y: y * scale, scale };
}
// ─── Renderer ────────────────────────────────────────────────────────────────
function renderFace(targetCtx, W, H, config, jitter) {
targetCtx.clearRect(0, 0, W, H);
targetCtx.fillStyle = "#000";
targetCtx.fillRect(0, 0, W, H);
const t = Date.now() * 0.015;
const jx = Math.sin(t) * jitter;
const jy = Math.cos(t * 1.1) * (jitter * 0.67);
const drawScale = Math.min(W / 640, H / 480);
const baseCX = 320 + config.headX * 80 + jx;
const baseCY = 212 + config.headY * 80 + jy;
const rx = config.rotateX * Math.PI / 180;
const ry = config.rotateY * Math.PI / 180;
const rz = config.rotateZ * Math.PI / 180;
function tp(dx, dy, dz = 0) {
const r = rotatePoint3D(dx, dy, dz, rx, ry, rz);
const p = project(r.x, r.y, r.z);
return { x: baseCX + p.x, y: baseCY + p.y, s: p.scale };
}
targetCtx.save();
targetCtx.translate(W / 2, H / 2);
targetCtx.scale(drawScale, drawScale);
targetCtx.translate(-320, -240);
// Face oval
targetCtx.beginPath();
const steps = 48;
for (let i = 0; i <= steps; i++) {
const a = (i / steps) * Math.PI * 2;
const p = tp(Math.cos(a) * config.faceWidth, Math.sin(a) * config.faceHeight + 12);
i === 0 ? targetCtx.moveTo(p.x, p.y) : targetCtx.lineTo(p.x, p.y);
}
targetCtx.closePath();
const g = targetCtx.createRadialGradient(baseCX, baseCY, 20, baseCX, baseCY, 170);
g.addColorStop(0, "#c4a484");
g.addColorStop(0.75, "#2a1b10");
g.addColorStop(1, "#000");
targetCtx.fillStyle = g;
targetCtx.fill();
// Eyes
[-1, 1].forEach(side => {
const ep = tp(config.eyeSpacing * side, -16);
targetCtx.save();
targetCtx.translate(ep.x, ep.y);
targetCtx.rotate((side * config.eyeTilt + ry * 15 * side) * Math.PI / 180);
targetCtx.scale(ep.s, ep.s);
targetCtx.fillStyle = "black";
targetCtx.fillRect(-config.eyeWidth / 2, -config.eyeHeight / 2, config.eyeWidth, config.eyeHeight);
targetCtx.restore();
});
// Philtrum
const pp = tp(0, config.philtrumY);
targetCtx.fillStyle = "black";
targetCtx.beginPath();
targetCtx.arc(pp.x, pp.y, 8 * pp.s, 0, Math.PI * 2);
targetCtx.fill();
// Mouth
const mL = tp(-28, config.mouthY), mR = tp(28, config.mouthY), mC = tp(0, config.mouthY - 3);
targetCtx.strokeStyle = "black";
targetCtx.lineWidth = 6;
targetCtx.beginPath();
targetCtx.moveTo(mL.x, mL.y);
targetCtx.quadraticCurveTo(mC.x, mC.y, mR.x, mR.y);
targetCtx.stroke();
// Jawline
const jL = tp(-config.jawWidth, config.mouthY);
const jR = tp(config.jawWidth, config.mouthY);
const jCL = tp(-22, config.jawDepth);
const jCR = tp(22, config.jawDepth);
targetCtx.lineWidth = 14;
targetCtx.strokeStyle = "black";
targetCtx.lineJoin = "round";
targetCtx.beginPath();
targetCtx.moveTo(jL.x, jL.y);
targetCtx.lineTo(jCL.x, jCL.y);
targetCtx.lineTo(jCR.x, jCR.y);
targetCtx.lineTo(jR.x, jR.y);
targetCtx.stroke();
targetCtx.restore();
}
function drawPerfectFace() {
renderFace(ctx, 640, 480, faceConfig, jitterAmount);
}
// ─── WebGL Hook ──────────────────────────────────────────────────────────────
const hook = (proto) => {
const original = proto.texImage2D;
proto.texImage2D = function (...args) {
if (active && args[args.length - 1] instanceof HTMLVideoElement) {
drawPerfectFace();
return original.apply(this, [args[0], args[1], args[2], args[3], args[4], canvas]);
}
return original.apply(this, args);
};
};
if (window.WebGLRenderingContext) hook(window.WebGLRenderingContext.prototype);
if (window.WebGL2RenderingContext) hook(window.WebGL2RenderingContext.prototype);
// ─── UI ──────────────────────────────────────────────────────────────────────
function injectUI() {
if (document.getElementById('mgr-ui')) return;
const style = document.createElement('style');
style.textContent = `
@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500;600&display=swap');
#mgr-ui {
position: fixed;
top: 18px;
left: 18px;
z-index: 1000000;
width: 240px;
font-family: 'JetBrains Mono', 'Consolas', monospace;
font-size: 11px;
user-select: none;
pointer-events: all;
}
/* window */
.mgr-window {
background: #1e1e1e;
border: 1px solid #3a3a3a;
border-radius: 4px;
box-shadow: 0 8px 32px rgba(0,0,0,0.6), 0 1px 0 rgba(255,255,255,0.04) inset;
overflow: hidden;
}
/* titlebar */
.mgr-titlebar {
background: #2c2c2c;
border-bottom: 1px solid #3a3a3a;
padding: 6px 10px;
cursor: move;
display: flex;
align-items: center;
gap: 6px;
}
.mgr-titlebar-dot {
width: 8px; height: 8px;
border-radius: 50%;
background: #444;
flex-shrink: 0;
}
.mgr-titlebar-dot.active-dot { background: #d4a017; box-shadow: 0 0 4px #d4a01788; }
.mgr-titlebar-title {
color: #aaa;
font-size: 10px;
font-weight: 500;
letter-spacing: 0.05em;
flex: 1;
}
/* body */
.mgr-body {
padding: 10px;
}
/* separator */
.mgr-sep {
border: none;
border-top: 1px solid #2e2e2e;
margin: 8px 0;
}
/* label row */
.mgr-row {
display: flex;
align-items: center;
margin-bottom: 6px;
gap: 6px;
}
.mgr-label {
color: #888;
font-size: 10px;
flex: 1;
white-space: nowrap;
}
.mgr-value {
color: #ccc;
font-size: 10px;
min-width: 32px;
text-align: right;
}
/* slider */
.mgr-slider-wrap {
margin-bottom: 2px;
}
.mgr-slider {
width: 100%;
-webkit-appearance: none;
appearance: none;
height: 3px;
border-radius: 2px;
background: #333;
outline: none;
cursor: pointer;
}
.mgr-slider::-webkit-slider-thumb {
-webkit-appearance: none;
width: 12px;
height: 12px;
border-radius: 50%;
background: #e0e0e0;
border: 2px solid #555;
cursor: pointer;
box-shadow: 0 1px 4px rgba(0,0,0,0.5);
transition: background 0.1s, border-color 0.1s;
}
.mgr-slider::-webkit-slider-thumb:hover {
background: #fff;
border-color: #888;
}
.mgr-slider:focus::-webkit-slider-thumb {
background: #fff;
border-color: #aaa;
box-shadow: 0 0 0 2px rgba(255,255,255,0.1);
}
/* section heading */
.mgr-section-title {
color: #555;
font-size: 8.5px;
letter-spacing: 0.18em;
text-transform: uppercase;
margin-bottom: 7px;
}
/* warning note */
.mgr-note {
color: #c97c2e;
font-size: 9px;
margin-top: 2px;
margin-bottom: 8px;
padding: 4px 6px;
background: rgba(201, 124, 46, 0.08);
border-left: 2px solid #c97c2e55;
border-radius: 0 2px 2px 0;
line-height: 1.5;
}
/* activate button */
.mgr-btn {
width: 100%;
padding: 6px 0;
cursor: pointer;
background: #2a2a2a;
color: #888;
border: 1px solid #3a3a3a;
border-radius: 3px;
font-family: 'JetBrains Mono', monospace;
font-size: 10px;
font-weight: 500;
letter-spacing: 0.1em;
text-transform: uppercase;
transition: all 0.1s;
margin-top: 2px;
}
.mgr-btn:hover {
background: #333;
color: #bbb;
border-color: #555;
}
.mgr-btn.on {
background: #2a2210;
color: #d4a017;
border-color: #5a4510;
box-shadow: 0 0 8px rgba(212, 160, 23, 0.15);
}
.mgr-btn.on:hover {
background: #332910;
border-color: #7a5e18;
}
/* status indicator */
.mgr-status {
display: flex;
align-items: center;
gap: 5px;
margin-top: 8px;
padding: 4px 6px;
background: #252525;
border-radius: 2px;
}
.mgr-status-dot {
width: 5px; height: 5px;
border-radius: 50%;
background: #444;
flex-shrink: 0;
}
.mgr-status-dot.on { background: #d4a017; box-shadow: 0 0 4px #d4a017; }
.mgr-status-text {
color: #555;
font-size: 9px;
letter-spacing: 0.05em;
}
.mgr-status-text.on { color: #d4a017; }
`;
document.head.appendChild(style);
const ui = document.createElement('div');
ui.id = 'mgr-ui';
ui.innerHTML = `
<div class="mgr-window">
<div class="mgr-titlebar" id="mgr-titlebar">
<div class="mgr-titlebar-dot" id="mgr-tbar-dot"></div>
<div class="mgr-titlebar-title">golden ratio v2</div>
</div>
<div class="mgr-body">
<div class="mgr-section-title">output</div>
<button class="mgr-btn" id="mgr-activate">activate</button>
<div class="mgr-status">
<div class="mgr-status-dot" id="mgr-status-dot"></div>
<span class="mgr-status-text" id="mgr-status-text">inactive</span>
</div>
<hr class="mgr-sep">
<div class="mgr-section-title">face</div>
<div class="mgr-row">
<span class="mgr-label">Philtrum Y</span>
<span class="mgr-value" id="mgr-philtrum-val">${faceConfig.philtrumY.toFixed(1)}</span>
</div>
<div class="mgr-slider-wrap">
<input type="range" class="mgr-slider" id="mgr-philtrum"
min="15" max="17" step="0.1" value="${faceConfig.philtrumY}">
</div>
<hr class="mgr-sep">
<div class="mgr-section-title">safety</div>
<div class="mgr-row">
<span class="mgr-label">Jitter</span>
<span class="mgr-value" id="mgr-jitter-val">${jitterAmount.toFixed(2)}</span>
</div>
<div class="mgr-slider-wrap">
<input type="range" class="mgr-slider" id="mgr-jitter"
min="0.0" max="2.0" step="0.01" value="${jitterAmount}">
</div>
<div class="mgr-note">⚠ values below 0.10 may result in ban</div>
<hr class="mgr-sep">
<div class="mgr-section-title">automation</div>
<button class="mgr-btn" id="mgr-autoqueue">auto queue</button>
</div>
</div>
`;
document.body.appendChild(ui);
const jitterSlider = ui.querySelector('#mgr-jitter');
const jitterVal = ui.querySelector('#mgr-jitter-val');
const activateBtn = ui.querySelector('#mgr-activate');
const statusDot = ui.querySelector('#mgr-status-dot');
const statusText = ui.querySelector('#mgr-status-text');
const tbarDot = ui.querySelector('#mgr-tbar-dot');
const philtrumSlider = ui.querySelector('#mgr-philtrum');
const philtrumVal = ui.querySelector('#mgr-philtrum-val');
philtrumSlider.addEventListener('input', () => {
faceConfig.philtrumY = parseFloat(philtrumSlider.value);
philtrumVal.textContent = faceConfig.philtrumY.toFixed(1);
});
jitterSlider.addEventListener('input', () => {
jitterAmount = parseFloat(jitterSlider.value);
jitterVal.textContent = jitterAmount.toFixed(2);
});
activateBtn.addEventListener('click', () => {
active = !active;
activateBtn.textContent = active ? 'deactivate' : 'activate';
activateBtn.classList.toggle('on', active);
statusDot.classList.toggle('on', active);
statusText.classList.toggle('on', active);
statusText.textContent = active ? 'running' : 'inactive';
tbarDot.classList.toggle('active-dot', active);
});
let autoQueue = false;
let autoQueueInterval = null;
const autoQueueBtn = ui.querySelector('#mgr-autoqueue');
function tryClickQueue() {
const btn = document.querySelector('button.w-full.flex.items-center.justify-center.rounded-xl.border.border-cyan-400\\/55');
if (btn && !btn.disabled) btn.click();
}
autoQueueBtn.addEventListener('click', () => {
autoQueue = !autoQueue;
autoQueueBtn.textContent = autoQueue ? 'auto queue: on' : 'auto queue';
autoQueueBtn.classList.toggle('on', autoQueue);
if (autoQueue) {
tryClickQueue();
autoQueueInterval = setInterval(tryClickQueue, queueDelaySecs * 1000);
} else {
clearInterval(autoQueueInterval);
autoQueueInterval = null;
}
});
// Drag
let dragging = false, ox = 0, oy = 0;
const titlebar = ui.querySelector('#mgr-titlebar');
titlebar.addEventListener('mousedown', (e) => {
dragging = true;
ox = e.clientX - ui.offsetLeft;
oy = e.clientY - ui.offsetTop;
e.preventDefault();
});
document.addEventListener('mousemove', (e) => {
if (!dragging) return;
ui.style.left = (e.clientX - ox) + 'px';
ui.style.top = (e.clientY - oy) + 'px';
});
document.addEventListener('mouseup', () => { dragging = false; });
}
setInterval(injectUI, 1000);
})();