/* BasedMTA site - v3. */ const { useState, useEffect, useRef, useMemo, createContext, useContext } = React; const CheckoutModal = window.CheckoutModal; // ===================================================================== // Tweaks // ===================================================================== const TWEAK_DEFAULTS = /*EDITMODE-BEGIN*/{ "accent": "blue" }/*EDITMODE-END*/; // ===================================================================== // Data // ===================================================================== const TIERS = [ { id: "basic", name: "Basic", tagline: "Visual coverage", durations: { "1d": 1, "7d": 5, "30d": 10 }, pros: [ { t: "Aimbot", d: "every mode, every bone & FOV control" }, { t: "ESP", d: "players, NPCs, vehicles, projectiles, chams & radar" }, { t: "Spoofer", d: "new identity on every launch" }, { t: "Comfy, easy to use UI" }, ], cons: [ { t: "Lua execution" }, { t: "Resource management and autoexec" }, { t: "Bot fleet and swarm coverage" }, { t: "Exploit suite" }, ], visual: { type: "image-pair", primary: { src: "site/img/esp-1.png", tag: "" }, secondary: { src: "site/img/esp-targeting.png", tag: "" }, }, }, { id: "pro", name: "Pro", featured: true, tagline: "Scripting utilities", durations: { "1d": 2, "7d": 10, "30d": 20 }, pros: [ { t: "Lua executor", d: "blazingly fast, secure bytecode-based VM" }, { t: "Autoexec", d: "global + per-server scripts, runs code inside any loaded resource" }, { t: "Script tools", d: "decompiler for any .luac MTA script + dumper" }, { t: "PktLib", d: "state of the art Lua library for packet manipulation, injection and hooking" }, { t: "Everything in Basic" }, ], cons: [ { t: "Bot fleet and swarm coverage" }, { t: "Exploit suite" }, ], visual: { type: "image-pair", primary: { src: "site/img/decompiler.png", tag: "" }, secondary: { src: "site/img/exec-console.png", tag: "" }, }, }, { id: "vip", name: "VIP", tagline: "Bots, exploits and scripting", durations: { "1d": 3, "7d": 15, "30d": 30 }, pros: [ { t: "Everything in Pro" }, { t: "Bot fleet", d: "Up to 20 instances with proxy support" }, { t: "Swarm coverage", d: "Shared blackboard across the fleet" }, { t: "Private exploits", d: "Exclusive to this tier" }, ], cons: [], visual: { type: "image-single", primary: { src: "site/img/bots-running.png", tag: "" }, }, }, ]; const DURATIONS = [ { id: "1d", label: "1 day", days: 1 }, { id: "7d", label: "7 days", days: 7 }, { id: "30d", label: "30 days", days: 30 }, ]; const ADDONS = [ { id: "exploits", name: "Extra 10 exploit uses", sub: "Top up your exploit budget", price: 5, vipOnly: true }, { id: "bots", name: "Extra bots (>20)", sub: "Open a ticket on Discord", price: null, vipOnly: true, contact: true }, ]; // ===================================================================== // Checkout context // ===================================================================== const CheckoutCtx = createContext(null); const useCheckout = () => useContext(CheckoutCtx); function CheckoutProvider({ children }) { const [order, setOrder] = useState(null); const open = (tier, duration, addonIds = []) => { const addons = ADDONS.filter((a) => addonIds.includes(a.id) && a.price); const base = tier.durations[duration.id]; const addonTotal = addons.reduce((s, a) => s + a.price, 0); setOrder({ tier, duration, addons, total: base + addonTotal }); }; const close = () => setOrder(null); return ( {children} ); } // ===================================================================== // Brand // ===================================================================== function Brand({ size = "sm" }) { return ( B asedMTA ); } // ===================================================================== // Nav // ===================================================================== function useScrolled(threshold = 40) { const [s, setS] = useState(false); useEffect(() => { const f = () => setS(window.scrollY > threshold); f(); window.addEventListener("scroll", f, { passive: true }); return () => window.removeEventListener("scroll", f); }, [threshold]); return s; } function Nav() { const scrolled = useScrolled(); const { open } = useCheckout(); const quickBuy = (e) => { e.preventDefault(); const tier = TIERS.find((t) => t.id === "pro"); const duration = DURATIONS.find((d) => d.id === "30d"); open(tier, duration, []); }; return ( ); } // ===================================================================== // Typed hero title // ===================================================================== function TypedHeroTitle() { const PART1 = "Advanced Scripting"; const PART2 = "Utilities for MTA:SA"; const total = PART1.length + PART2.length; const [n, setN] = useState(0); useEffect(() => { if (n >= total) return; // Human-feeling rhythm: faster mid-word, slower on spaces and at the line break const just = (n === 0 ? PART1[0] : (n <= PART1.length ? PART1[n - 1] : PART2[n - PART1.length - 1])) || ""; let delay = 38 + Math.random() * 30; if (just === " ") delay += 40; if (n === PART1.length) delay = 260; // pause before line 2 const t = setTimeout(() => setN(n + 1), delay); return () => clearTimeout(t); }, [n, total]); const a = PART1.slice(0, Math.min(n, PART1.length)); const b = n > PART1.length ? PART2.slice(0, n - PART1.length) : ""; const done = n >= total; return (

{a} {n < PART1.length && } {n >= PART1.length && ( {b} )}

); } // ===================================================================== // Hero // ===================================================================== const HERO_SLIDES = [ "site/img/esp-targeting.png", "site/img/esp-1.png", "site/img/esp-2.png", "site/img/esp-3.png", ]; function Hero() { return (

BasedMTA is a tiered scripting utility for Multi Theft Auto: San Andreas. Built to a standard most tools in this space don’t reach.

Version v1.6.24103
Payment BTC XMR USDT ETH LTC
Status Live
); } // ===================================================================== // Process strip - "How it works" reassurance // ===================================================================== const PROCESS_STEPS = [ { n: "01", t: "Checkout in crypto", d: "Pick a tier and a duration. Pay in BTC, XMR, USDT, ETH or LTC. Every invoice is capped at $30.", icon: ( ), }, { n: "02", t: "Bind your key", d: "Open a Discord ticket with your invoice ID. We bind the key to your HWID and deliver the DLL in minutes.", icon: ( ), }, { n: "03", t: "Inject and play", d: "Inject the DLL, launch MTA, press Insert to open the menu. Identity rotates on every launch.", icon: ( ), }, ]; function ProcessStrip() { return (
{PROCESS_STEPS.map((s, i) => (
{s.n} {s.icon}
{s.t}
{s.d}
{i < PROCESS_STEPS.length - 1 && ); } // ===================================================================== // Capability rows // ===================================================================== function CapabilityRow({ tier, flip, extra }) { return (
{tier.name} tier

{tier.tagline}

Included
    {tier.pros.map((f, i) => (
  • {f.t} {f.d && {f.d}}
  • ))}
{tier.cons.length > 0 && (
Not in this tier
    {tier.cons.map((f, i) => (
  • {f.t} {f.d && {f.d}}
  • ))}
)}
{extra}
); } function CapVisual({ visual }) { if (visual.type === "image-single") { return (
{visual.primary.tag}
); } if (visual.type === "image-pair") { return (
{visual.primary.tag}
{visual.secondary.tag}
); } if (visual.type === "code") { return ; } if (visual.type === "fleet") { return ; } return null; } function CapCodeVisual({ visual }) { return (
{visual.filename}
{visual.meta}
{visual.lines.map((l, i) => (
{String(i + 1).padStart(2, " ")}
))}
{visual.footLeft} {visual.footRight}
); } const FLEET_BOTS = [ { id: "01", ip: "216.58.x.x", region: "us-west-1", ping: 41 }, { id: "02", ip: "172.217.x.x", region: "us-west-1", ping: 38 }, { id: "03", ip: "104.18.x.x", region: "us-east-1", ping: 54 }, { id: "04", ip: "91.108.x.x", region: "eu-west-1", ping: 67 }, { id: "05", ip: "13.107.x.x", region: "eu-west-1", ping: 71 }, { id: "06", ip: "151.101.x.x", region: "eu-cent-1", ping: 79 }, { id: "07", ip: "23.235.x.x", region: "ap-south", ping: 132 }, { id: "08", ip: "199.232.x.x", region: "ap-south", ping: 128 }, ]; function CapFleetVisual() { const [tick, setTick] = useState(0); useEffect(() => { const t = setInterval(() => setTick((x) => x + 1), 1400); return () => clearInterval(t); }, []); const jitter = (base) => base + ((tick * 7 + base) % 11) - 5; return (
FLEET srv-fleet-01.basedmta
UP8 / 8 UPTIME99.8% SHAREDSYNCED
NODE PROXY REGION PING STATE
{FLEET_BOTS.map((b) => (
bot-{b.id} {b.ip} {b.region} {jitter(b.ping)}ms live
))}
blackboard / shared targeting packets in sync
); } // ===================================================================== // Feature matrix // ===================================================================== const MATRIX_GROUPS = [ { g: "Visuals", rows: [ { f: "Aimbot", b: true, p: true, v: true }, { f: "ESP", b: true, p: true, v: true }, { f: "Chams and radar", b: true, p: true, v: true }, { f: "Spoofer", b: true, p: true, v: true }, ], }, { g: "Scripting", rows: [ { f: "Lua executor (bytecode VM)", b: false, p: true, v: true }, { f: "Autoexec", b: false, p: true, v: true }, { f: "Resource code injection", b: false, p: true, v: true }, { f: "Decompiler and dumper", b: false, p: true, v: true }, { f: "PktLib", b: false, p: true, v: true }, ], }, { g: "Fleet and exploits", rows: [ { f: "Bot fleet", b: false, p: false, v: "up to 20" }, { f: "Swarm coverage", b: false, p: false, v: true }, { f: "Private exploits", b: false, p: false, v: true }, ], }, ]; function MatrixCell({ v }) { if (v === true) return ; if (v === false) return -; return {v}; } function FeatureMatrix() { const { open } = useCheckout(); const buy = (id) => { const tier = TIERS.find((t) => t.id === id); const duration = DURATIONS.find((d) => d.id === "30d"); open(tier, duration, []); }; return (
Compare tiers
Basic from $1 / day
Pro from $2 / day
VIP from $3 / day
{MATRIX_GROUPS.map((g, gi) => (
{g.g}
{g.rows.map((r, ri) => (
{r.f}
))}
))}
Pick a tier
); } // ===================================================================== // Pricing // ===================================================================== function PricingCard({ tier, duration }) { const cardRef = useRef(null); const onMouseMove = (e) => { if (!cardRef.current) return; const r = cardRef.current.getBoundingClientRect(); cardRef.current.style.setProperty("--mx", `${e.clientX - r.left}px`); cardRef.current.style.setProperty("--my", `${e.clientY - r.top}px`); }; const { open } = useCheckout(); const [addons, setAddons] = useState({}); const [shownDuration, setShownDuration] = useState(duration); const [animPhase, setAnimPhase] = useState("idle"); const [shownTotalDuration, setShownTotalDuration] = useState(duration); const [totalAnimPhase, setTotalAnimPhase] = useState("idle"); useEffect(() => { if (duration === shownDuration) return; setAnimPhase("out"); const priceSwap = setTimeout(() => { setShownDuration(duration); setAnimPhase("in"); }, 140); const priceDone = setTimeout(() => setAnimPhase("idle"), 290); const totalOut = setTimeout(() => setTotalAnimPhase("out"), 50); const totalSwap = setTimeout(() => { setShownTotalDuration(duration); setTotalAnimPhase("in"); }, 190); const totalDone = setTimeout(() => setTotalAnimPhase("idle"), 340); return () => { clearTimeout(priceSwap); clearTimeout(priceDone); clearTimeout(totalOut); clearTimeout(totalSwap); clearTimeout(totalDone); }; }, [duration]); const base = tier.durations[shownDuration]; const totalBase = tier.durations[shownTotalDuration]; const addonTotal = Object.entries(addons).reduce((sum, [id, on]) => { if (!on) return sum; const a = ADDONS.find((x) => x.id === id); return sum + (a && a.price ? a.price : 0); }, 0); const total = totalBase + addonTotal; const durLabel = DURATIONS.find((d) => d.id === shownDuration)?.label ?? ""; const toggleAddon = (id, contact) => { if (contact) return; setAddons((a) => ({ ...a, [id]: !a[id] })); }; const checkout = () => { const enabledAddonIds = Object.entries(addons).filter(([_, on]) => on).map(([id]) => id); const dur = DURATIONS.find((d) => d.id === shownTotalDuration); open(tier, dur, enabledAddonIds); }; const visibleAddons = ADDONS.filter((a) => !a.vipOnly || tier.id === "vip"); return (
{tier.featured && Most popular}
{tier.name}

{tier.tagline}

${base} / {durLabel}
Includes
    {tier.pros.map((f, i) => (
  • {f.t} {f.d && {f.d}}
  • ))}
{tier.cons.length > 0 && (
Not in this tier
    {tier.cons.map((f, i) => (
  • {f.t} {f.d && {f.d}}
  • ))}
)}
{visibleAddons.length > 0 && (
Add-ons
{visibleAddons.map((a) => { if (a.contact) { return (

{a.name} available on request. Open a Discord ticket.

); } const added = !!addons[a.id]; return (
toggleAddon(a.id, a.contact)} >
{a.name}
{a.sub}
+${a.price} {added ? "Added" : "Add"}
); })}
)}
Total ${total}
); } function PricingMatrix() { const [duration, setDuration] = useState("30d"); return (
{DURATIONS.map((d) => ( ))}
{TIERS.map((t) => )}
HWID Reset First 14 days of resets included free with any active key.
$2 per reset after quota
Open ticket
); } // ===================================================================== // Demo // ===================================================================== function DemoSection() { return (

Try it in the browser.

Same ImGui shell that ships with the DLL. Click anything.

Prototype. All data is simulated.

); } // ===================================================================== // FAQ // ===================================================================== const FAQ_ITEMS = [ { q: "How does payment work?", a: "Crypto only. BTC, XMR, USDT (TRC-20 or ERC-20), ETH, LTC. Each invoice covers one tier for 1, 7, or 30 days and is capped at $30. On every launch, the DLL receives a session-bound capability ticket that authorizes your tier." }, { q: "What does HWID-bound mean?", a: "Your license is tied to a single machine's HWID. After 14 days of usage you may reset your HWID for free. Before that, resets cost $2 each." }, { q: "Will I get banned using this?", a: "We protect against any hardware detection so you remain anonymous. Identity rotates on every launch and the DLL signature is randomized per session." }, { q: "What operating systems are supported?", a: "Windows is currently the only supported OS. Linux support may be added if you say \"pretty please\"." }, { q: "Can I resell BasedMTA?", a: "Yes. Open a ticket on our Discord for reselling terms." }, { q: "Are updates included?", a: "Updates are free for the entire duration of any active key." }, { q: "What is your refund policy?", a: "No refunds. All sales are final." }, { q: "How do I reach support?", a: "Open a ticket on our Discord for billing, license key delivery, HWID resets, and contact-priced add-ons. Keep your invoice ID private; do not share it publicly." }, ]; function FAQ() { const [open, setOpen] = useState(0); return (
{FAQ_ITEMS.map((item, i) => (
setOpen(open === i ? -1 : i)}>
{String(i + 1).padStart(2, "0")} {item.q} +
{item.a}
))}
); } // ===================================================================== // Key status checker // Public, read-only license oracle. POST /v1/license/status with // {key, captcha} served same-origin via the Caddy reverse-proxy (no // CORS, no secrets in the page). Server-side rate limit is 0.5/s // burst 10, and every successful query consumes a verified hCaptcha // token, so brute-force probing is both rate-bounded AND has to // solve a fresh challenge per attempt. // ===================================================================== const KEYCHK_API_BASE = (typeof window !== "undefined" && window.BMTA_API_BASE) || ""; const HCAPTCHA_SITEKEY = (typeof window !== "undefined" && window.BMTA_HCAPTCHA_SITE_KEY) || ""; function fmtTs(unix) { if (!unix || unix <= 0) return null; try { return new Date(unix * 1000).toLocaleString(undefined, { year: "numeric", month: "short", day: "numeric", hour: "2-digit", minute: "2-digit", }); } catch (_) { return null; } } function fmtRemaining(expiresUnix) { if (!expiresUnix || expiresUnix <= 0) return null; const secs = expiresUnix - Math.floor(Date.now() / 1000); if (secs <= 0) return null; const days = Math.floor(secs / 86400); const hours = Math.floor((secs % 86400) / 3600); const mins = Math.floor((secs % 3600) / 60); if (days >= 2) return `${days} days remaining`; if (days === 1) return `1 day ${hours}h remaining`; if (hours >= 1) return `${hours}h ${mins}m remaining`; return `${mins}m remaining`; } function maskKey(k) { if (!k || k.length < 16) return k || ""; return k.slice(0, 8) + "…" + k.slice(-8); } const KEYCHK_TONES = { Active: { tone: "ok", title: "Active", blurb: "This key is live." }, Unused: { tone: "info", title: "Unused", blurb: "Valid key, not activated yet. The clock starts on first launch." }, Expired: { tone: "warn", title: "Expired", blurb: "This key's duration has elapsed. Grab a new one any time." }, Revoked: { tone: "bad", title: "Revoked", blurb: "This key has been revoked or banned and can't be used." }, Invalid: { tone: "bad", title: "Not found", blurb: "No license matches that value. Double-check for typos." }, }; function KeyStatusChecker() { const [key, setKey] = useState(""); const [loading, setLoading] = useState(false); const [result, setResult] = useState(null); const [checkedKey, setCheckedKey] = useState(""); const [err, setErr] = useState(""); const captchaHostRef = useRef(null); const widgetIdRef = useRef(null); const [captchaReady, setCaptchaReady] = useState(false); // Render the invisible hCaptcha widget once. The script tag in // index.html loads js.hcaptcha.com/1/api.js asynchronously, so we // poll briefly until window.hcaptcha is defined. useEffect(() => { if (!HCAPTCHA_SITEKEY) return; let cancelled = false; let tries = 0; const attempt = () => { if (cancelled) return; const hc = window.hcaptcha; if (!hc || !captchaHostRef.current) { if (tries++ < 50) setTimeout(attempt, 200); return; } try { widgetIdRef.current = hc.render(captchaHostRef.current, { sitekey: HCAPTCHA_SITEKEY, size: "invisible", }); setCaptchaReady(true); } catch (_) { if (tries++ < 5) setTimeout(attempt, 400); } }; attempt(); return () => { cancelled = true; }; }, []); const normalized = key.trim().toLowerCase(); const looksValid = /^[0-9a-f]{64}$/.test(normalized); const check = async () => { setErr(""); setResult(null); setCheckedKey(""); if (!looksValid) { setErr("A license key is exactly 64 hexadecimal characters (0-9, a-f)."); return; } setLoading(true); // Get a fresh hCaptcha token. With size="invisible" this shows no // challenge for legitimate users and pops a challenge modal only // when hCaptcha thinks the visitor is suspicious. let token = ""; const hc = window.hcaptcha; if (HCAPTCHA_SITEKEY && hc && widgetIdRef.current !== null) { try { const exec = await hc.execute(widgetIdRef.current, { async: true }); token = exec && exec.response ? exec.response : ""; } catch (_) { setErr("Captcha check was cancelled. Try again."); setLoading(false); return; } } else if (HCAPTCHA_SITEKEY) { setErr("Captcha is still loading. Try again in a second."); setLoading(false); return; } try { const resp = await fetch(KEYCHK_API_BASE + "/v1/license/status", { method: "POST", headers: { "Content-Type": "application/json", Accept: "application/json" }, body: JSON.stringify({ key: normalized, captcha: token }), }); const data = await resp.json().catch(() => ({})); if (resp.status === 429) { setErr("Too many checks. Wait a few seconds and try again."); } else if (data && data.error === "captcha_failed") { setErr("Captcha verification failed. Please try again."); } else if (!resp.ok && !data.Status) { setErr(data.error || "Couldn't check that key right now. Try again shortly."); } else { setResult(data); setCheckedKey(normalized); } } catch (_) { setErr("Network error. Check your connection and try again."); } try { if (hc && widgetIdRef.current !== null) hc.reset(widgetIdRef.current); } catch (_) {} setLoading(false); }; const onKeyDown = (e) => { if (e.key === "Enter") check(); }; const meta = result ? (KEYCHK_TONES[result.Status] || { tone: "info", title: result.Status || "Unknown", blurb: "" }) : null; const expiryStr = result ? fmtTs(result.Expires) : null; const activatedStr = result ? fmtTs(result.ActivatedAt) : null; const remaining = result && result.Status === "Active" ? fmtRemaining(result.Expires) : null; const durationLbl = result && result.DurationDays > 0 ? `${result.DurationDays}-day key` : null; return (
{ setKey(e.target.value); if (err) setErr(""); }} onKeyDown={onKeyDown} autoComplete="off" autoCapitalize="off" autoCorrect="off" spellCheck="false" maxLength={80} aria-label="License key" />
Read-only. Protected by hCaptcha. We never store what you paste here.
{/* Invisible hCaptcha host — only ever visible if hCaptcha decides to challenge */} ); } // ===================================================================== // Footer // ===================================================================== function Footer() { return ( ); } // ===================================================================== // Tweaks // ===================================================================== function TweaksWrapper({ children }) { const [t, setTweak] = useTweaks(TWEAK_DEFAULTS); useEffect(() => { document.documentElement.setAttribute("data-accent", t.accent || "blue"); }, [t.accent]); return ( {children} setTweak("accent", v)} options={[ { value: "blue", color: "#5b9eff" }, { value: "amber", color: "#e0a458" }, { value: "green", color: "#4dd699" }, { value: "mono", color: "#e7e9ee" }, ]} /> ); } // ===================================================================== // Page // ===================================================================== function Page() { // Smooth anchor scroll useEffect(() => { const ease = (t) => t < 0.5 ? 4 * t * t * t : 1 - Math.pow(-2 * t + 2, 3) / 2; const scrollTo = (target) => { const navH = document.querySelector(".nav")?.offsetHeight || 0; const start = window.scrollY; const end = target.getBoundingClientRect().top + start - navH - 16; const duration = 700; let startTime = null; const step = (now) => { if (!startTime) startTime = now; const elapsed = Math.min((now - startTime) / duration, 1); window.scrollTo(0, start + (end - start) * ease(elapsed)); if (elapsed < 1) requestAnimationFrame(step); }; requestAnimationFrame(step); }; const onClick = (e) => { const a = e.target.closest("a[href^='#']"); if (!a) return; const href = a.getAttribute("href"); if (href === "#" || href.length < 2) return; const id = href.slice(1); const el = document.getElementById(id); if (!el) return; e.preventDefault(); scrollTo(el); }; document.addEventListener("click", onClick); return () => document.removeEventListener("click", onClick); }, []); // Reveal animations useEffect(() => { const obs = new IntersectionObserver( (entries) => { for (const e of entries) { if (e.isIntersecting) { e.target.classList.add("in"); obs.unobserve(e.target); } } }, { threshold: 0.06, rootMargin: "0px 0px -5% 0px" } ); document.querySelectorAll(".reveal").forEach((el) => { const inView = el.getBoundingClientRect().top < window.innerHeight * 0.92; if (inView) { el.classList.add("in"); } else { el.classList.add("preanim"); obs.observe(el); } }); document.querySelectorAll(".reveal-stagger").forEach((parent) => { Array.from(parent.children).forEach((child, i) => { child.style.transitionDelay = `${i * 60}ms`; }); }); return () => obs.disconnect(); }, []); return (