/* BasedMTA — Panels batch 1: Log, Exec, Visuals, Aimbot, Local */
// ====================================================================
// LOG PANEL — built from feel of the rest of the UI (no screenshot)
// ====================================================================
const LOG_SEEDS = [
["info", "boot", "BasedMTA v1.6 loaded — 12 modules registered"],
["info", "net", "Connected to 172.202.89.86:22005 — handshake ok"],
["info", "spoof", "Identity rotated — serial 4031AC47…1DBCFC"],
["ok", "spoof", "License online — entitlement: full"],
["info", "scripts", "Indexed 378 client scripts / 208 resources (1.9 MB)"],
["warn", "events", "Hook installed on triggerServerEvent — 1462 events captured"],
["info", "visuals", "Player ESP enabled — 9 players visible, 0 npcs"],
["ok", "aimbot", "Aimbot armed (silent) — bone=Head fov=352px"],
["info", "local", "Movement::ACTIVE — Airbreak available on Space"],
["warn", "net", "Detected dutchman.mad call — suppressed (47)"],
["info", "bots", "Bot pool ready — 10 identities, 20 slots free"],
["bad", "exploits", "License tier: Online Demo - Some things might differ from final product."],
];
function LogPanel() {
const [filter, setFilter] = useState("");
const [paused, setPaused] = useState(false);
const [tick, setTick] = useState(0);
// simulate a rolling log
const [extra, setExtra] = useState([]);
useEffect(() => {
if (paused) return;
const id = setInterval(() => {
const ev = [
["info", "net", "RPC latency 12ms (avg 14ms)"],
["info", "net", "ping reply " + (8 + Math.floor(Math.random()*6)) + "ms"],
["warn", "events", "burst: 23 events/s — buffer at 71%"],
["info", "scripts", "decompiled chunk_" + Math.random().toString(16).slice(2,10) + ".luac"],
["ok", "bots", "bot online: " + ["Dutchman.1","Kowalski","BasedMTAUser47","GreetingsFromIran","DutchmanBad"][Math.floor(Math.random()*5)]],
][Math.floor(Math.random()*5)];
setExtra((arr) => [...arr.slice(-30), [ev[0], ev[1], ev[2], new Date()]]);
setTick((t) => t + 1);
}, 1400);
return () => clearInterval(id);
}, [paused]);
const all = useMemo(() => {
const base = LOG_SEEDS.map((r) => [...r, new Date(Date.now() - (LOG_SEEDS.length - LOG_SEEDS.indexOf(r)) * 1500)]);
return [...base, ...extra];
}, [extra]);
const filtered = filter
? all.filter((r) => (r[1] + " " + r[2]).toLowerCase().includes(filter.toLowerCase()))
: all;
const fmtT = (d) => {
const pad = (n) => String(n).padStart(2, "0");
return pad(d.getHours()) + ":" + pad(d.getMinutes()) + ":" + pad(d.getSeconds());
};
const toneClass = { ok: "tag-green", warn: "tag-amber", bad: "tag-red", info: "tag-blue" };
return (
setPaused((p) => !p)}>
{paused ? "Resume" : "Pause"}
setExtra([])}>Clear
{filtered.length} entries
{filtered.map((r, i) => (
{fmtT(r[3])}
{r[0].toUpperCase()}
{r[1]}
{r[2]}
))}
);
}
// ====================================================================
// EXEC PANEL
// ====================================================================
const EXEC_SAMPLE = `outputChatBox("hello from BasedMTA", 0, 200, 255, true)
local p = getLocalPlayer()
setElementHealth(p, 100)
setElementInterior(p, 0)
for i, ped in ipairs(getElementsByType("ped")) do
setPedStat(ped, 24, 999)
end`;
function highlightLua(src) {
// simple regex-based tokenizer for display only
const KW = /\b(local|function|end|if|then|else|elseif|for|in|do|while|return|true|false|nil|and|or|not)\b/g;
const FN = /\b(outputChatBox|getLocalPlayer|setElementHealth|setElementInterior|getElementsByType|ipairs|pairs|setPedStat|triggerServerEvent|getResourceName|addEventHandler|tonumber|tostring|print)\b/g;
const STR = /(".*?"|'.*?')/g;
const NUM = /\b(\d+(?:\.\d+)?)\b/g;
const COM = /(--[^\n]*)/g;
return src.split("\n").map((line, i) => {
let html = line
.replace(/&/g, "&")
.replace(//g, ">")
.replace(COM, '$1')
.replace(STR, '$1')
.replace(KW, '$1')
.replace(FN, '$1')
.replace(NUM, '$1');
return (
{String(i + 1).padStart(3, " ")}
);
});
}
function ExecPanel() {
const [code, setCode] = useState(EXEC_SAMPLE);
const [context, setContext] = useState("Auto (logger)");
const [console_, setConsole] = useState([
{ tag: "out", text: 'hello from BasedMTA' },
{ tag: "info", text: "= [userdata: 0x7ff...]" },
{ tag: "out", text: "set health -> 100" },
]);
const [cmd, setCmd] = useState("");
const ta = useRef(null);
const run = () => {
const lines = code.split("\n").filter(Boolean);
setConsole((c) => [
...c,
{ tag: "cmd", text: "> Run (" + lines.length + " lines, ctx=" + context + ")" },
{ tag: "out", text: "hello from BasedMTA" },
{ tag: "info", text: "exec ok in 2.3ms" },
]);
};
const send = () => {
if (!cmd.trim()) return;
setConsole((c) => [...c, { tag: "cmd", text: "Lua> " + cmd }, { tag: "out", text: "= " + cmd.length + " chars echoed" }]);
setCmd("");
};
const lineNo = code.slice(0, ta.current ? ta.current.selectionStart : 0).split("\n").length;
const colNo = (() => {
if (!ta.current) return 1;
const s = code.slice(0, ta.current.selectionStart);
const last = s.lastIndexOf("\n");
return s.length - last;
})();
return (
Context
{}} width={110} />
Run
Clear {/* onClick={() => setCode("")} */}
{}}>Scripts
Ln {lineNo}, Col {colNo} | {code.split("\n").length} lines
{/* highlighted layer */}
{highlightLua(code)}
{/* invisible textarea */}
Console ({console_.length})
{}} width={70} />
{}} />
navigator.clipboard && navigator.clipboard.writeText(console_.map(c=>c.text).join("\n"))}>Copy
setConsole([])}>Clear
Pop Out
{console_.map((c, i) => (
{c.text}
))}
Lua>
setCmd(e.target.value)}
onKeyDown={(e) => e.key === "Enter" && send()}
placeholder="…"
style={{ border: "none", background: "transparent" }}
/>
);
}
// ====================================================================
// AIMBOT PANEL
// ====================================================================
function AimbotPanel() {
const [mode, setMode] = useState("silent");
const [profile, setProfile] = useState("default");
const [section, setSection] = useState("settings");
const [s, setS] = useState({
enabled: true,
aimLock: true,
prediction: true,
players: true,
peds: false,
priority: "Lowest HP",
bone: "Head",
fov: 352,
range: 1000,
switchDelay: 0,
});
const upd = (k, v) => setS((x) => ({ ...x, [k]: v }));
const sidebar = [
{ id: "settings", label: "Settings" },
{ id: "checks", label: "Checks" },
{ id: "trigger", label: "Trigger Bot" },
{ id: "keybinds", label: "Keybinds" },
{ id: "adjustments",label: "Adjustments" },
{ id: "visuals", label: "Visuals" },
];
return (
setMode("normal")} label="Normal" />
setMode("silent")} label="Silent" />
{}} onReset={()=>setS({enabled:true,aimLock:true,prediction:true,players:true,peds:false,priority:"Lowest HP",bone:"Head",fov:352,range:1000,switchDelay:0})} />
{section === "settings" && (
<>
General
upd("enabled", v)} label="Enabled" />
upd("aimLock", v)} label="Aim Lock" />
upd("prediction", v)} label="Prediction" />
Target Entity
upd("players", v)} label="Players" />
upd("peds", v)} label="Peds" />
upd("priority", v)} options={["Lowest HP","Highest HP","Closest","Crosshair","Lowest Switch Time"]} />
Aim at Bone
upd("bone", v)} options={["Head","Neck","Chest","Pelvis","Closest"]} />
Tuning
upd("fov", v)} format={(v) => v + " px"} />
upd("range", v)} />
upd("switchDelay", v)} format={(v) => v.toFixed(2) + "s"} />
>
)}
{section === "checks" && (
<>
Visibility Checks
{}} label="Line of sight" />
{}} label="Hitbox in FOV" />
{}} label="Ignore through walls" />
State Filters
{}} label="Ignore downed" />
{}} label="Ignore in-vehicle" />
{}} label="Ignore teammates" />
>
)}
{section === "trigger" && (
<>
Trigger Bot
{}} label="Enabled" />
{}} label="Burst mode" />
{}} label="Hold to fire" />
{}} format={(v)=>v+"%"} />
{}} format={(v)=>v+" ms"} />
{}} format={(v)=>v+" ms"} />
>
)}
{section === "keybinds" && (
<>
Keybinds
{["Aim Lock","Toggle FOV","Toggle Silent","Trigger Bot","Reload profile"].map((k, i) => (
{k}
{}} />
))}
>
)}
{section === "adjustments" && (
<>
Smoothing
{}} />
{}} />
Recoil
{}} />
{}} />
>
)}
{section === "visuals" && (
<>
Indicators
{}} label="Draw FOV" />
{}} label="Target line" />
{}} label="Hit markers" />
>
)}
);
}
// ====================================================================
// VISUALS PANEL
// ====================================================================
function VisualsPanel() {
const [g, setG] = useState({ enable: true, ignoreSelf: true, fade: true, range: 6000 });
const [profile, setProfile] = useState("default");
const [section, setSection] = useState("players");
const [p, setP] = useState({
enable: true, box: true, skeleton: false, snapline: false,
healthBar: false, armorBar: false, hpText: false,
name: true, ping: true, weapon: true, distance: true,
boxStyle: "Corner", thickness: 1.4,
});
const upd = (k, v) => setP((x) => ({ ...x, [k]: v }));
const items = [
{ id: "players", label: "Players", count: 9 },
{ id: "npcs", label: "NPCs", count: 0 },
{ id: "vehicles", label: "Vehicles", count: 0 },
{ id: "projectiles", label: "Projectiles", count: 0 },
{ id: "bullets", label: "Bullets", count: 0 },
{ id: "radar", label: "Radar" },
{ id: "chams", label: "Chams" },
{ id: "world", label: "World" },
];
return (
setG({ ...g, enable: v })} label="Enable" />
setG({ ...g, ignoreSelf: v })} label="Ignore self" />
setG({ ...g, fade: v })} label="Fade" />
Range
setG({ ...g, range: v })} format={(v) => v + "m"} />
{section === "players" && (
<>
General
upd("enable", v)} label="Enable" />
upd("box", v)} label="Box" />
upd("skeleton", v)} label="Skeleton" />
upd("snapline", v)} label="Snapline" />
upd("healthBar", v)} label="Health bar" />
upd("armorBar", v)} label="Armor bar" />
upd("hpText", v)} label="HP text" />
Info
upd("name", v)} label="Name" />
upd("ping", v)} label="Ping" />
upd("weapon", v)} label="Weapon" />
upd("distance", v)} label="Distance" />
Box
Style
upd("boxStyle", v)} options={["Corner","Full","2D","3D"]} />
Thickness
upd("thickness", v)} />
Color
>
)}
{section === "npcs" && (
No NPCs in range.
Increase Range or enter a populated area to see entries.
)}
{section === "vehicles" && (
<>
General
{}} label="Enable" />
{}} label="Box" />
{}} label="Model" />
{}} label="Driver" />
>
)}
{section === "projectiles" &&
No projectiles tracked.}
{section === "bullets" &&
Bullet tracers disabled.}
{section === "radar" && (
<>
Radar
{}} label="Enable" />{}} label="Players" />{}} label="Vehicles" />
{}} />
{}} />
>
)}
{section === "chams" && (
<>
Chams
{}} label="Enable" />{}} label="Visible only" />
{}} />
>
)}
{section === "world" && (
<>
World
{}} label="Nightmode" />{}} label="No fog" />{}} label="Force noon" />
{}} format={(v)=>v+"°"} />
>
)}
);
}
// ====================================================================
// LOCAL PANEL
// ====================================================================
function LocalPanel() {
const [profile, setProfile] = useState("default");
const [section, setSection] = useState("movement");
const [m, setM] = useState({
airbreak: false, noclip: false,
superJump: false, noFall: false,
overrideG: false, overrideSpeed: false,
godmode: false, antiStun: false, autoHeal: false,
});
const upd = (k, v) => setM((x) => ({ ...x, [k]: v }));
const items = ["Movement", "Protection", "Stats", "Vehicle", "Weapons", "World", "Teleport"]
.map((x) => ({ id: x.toLowerCase(), label: x }));
return (
{section === "movement" && (
<>
Fly / Flight
upd("airbreak", v)} label="Airbreak (hold Space)" />
upd("noclip", v)} label="Noclip (WASD + Space/Ctrl)" />
Jump
upd("superJump", v)} label="Super Jump" />
upd("noFall", v)} label="No Fall Damage" />
Physics
upd("overrideG", v)} label="Override gravity" />
upd("overrideSpeed", v)} label="Override game speed" />
>
)}
{section === "protection" && (
<>
Damage
upd("godmode", v)} label="Godmode" />
upd("antiStun", v)} label="Anti-stun / anti-freeze" />
Recovery
upd("autoHeal", v)} label="Auto-heal under 30%" />
{}} label="Auto-armor refill" />
>
)}
{section === "stats" && (
<>
Stats
{}} />
{}} />
{}} format={(v)=>v.toFixed(2)+"x"} />
>
)}
{section === "vehicle" && (
<>
Vehicle
{}} label="Vehicle godmode" />{}} label="Tank mode" />{}} label="No flip" />
{}} format={(v)=>v.toFixed(1)+"x"} />
>
)}
{section === "weapons" && (
<>
Weapons
{}} label="Infinite ammo" />{}} label="No recoil" />{}} label="Instant reload" />
>
)}
{section === "world" && (
<>
World
{}} label="No traffic" />{}} label="No peds" />{}} label="Force weather: clear" />
>
)}
{section === "teleport" && (
<>
Teleport
{}} />
Go
{}} />
>
)}
);
}
// Export
Object.assign(window, { LogPanel, ExecPanel, AimbotPanel, VisualsPanel, LocalPanel });