i didnt make this for a "call of duty mod community" i made this for myself and realized its not a widely open source thing so forgive me for posting it here but i dont care how you benefit from it. at bare minimum i posted it because i can and wanted to for those of similar ambition.
paco_1
@paco_1
Posts
-
(Not Mod Related) --- Aircraft Tracker -
(Not Mod Related) --- Aircraft TrackerI started exploring different things and dont really do the whole forum thing often but figured I'll start sharing my codes for programs, i feel dont get enough open source code for people to learn.This is a fairly simple python aircraft tracker using ads-b and other thangs(im drunk and dont wanna explain it right now, will maybe update with "//" explanations if i dont start another random project)import requests import tkinter as tk from tkinter import ttk import threading import time import math from datetime import datetime, timedelta, timezone import numpy as np from skyfield.api import load, Topos, wgs84 # ============================== # LOCATION (MULTI-SOURCE) # ============================== def get_best_location(): sources = [] try: r = requests.get("http://ip-api.com/json/", timeout=2).json() if r.get("status") == "success": sources.append((r["lat"], r["lon"])) except: pass try: r = requests.get("https://ipinfo.io/json", timeout=2).json() if "loc" in r: lat, lon = map(float, r["loc"].split(",")) sources.append((lat, lon)) except: pass try: r = requests.get("https://ipwho.is/", timeout=2).json() if r.get("success"): sources.append((r["latitude"], r["longitude"])) except: pass try: r = requests.get("https://freegeoip.app/json/", timeout=2).json() sources.append((r["latitude"], r["longitude"])) except: pass if not sources: return 40.7128, -74.0060, 1 lats, lons = zip(*sources) return float(np.mean(lats)), float(np.mean(lons)), len(sources) LAT, LON, CONF = get_best_location() print(f"Location: {LAT:.4f}, {LON:.4f} (Confidence: {CONF} sources)") # ============================== # SATELLITES # ============================== sat_data = {} try: print("Fetching satellite data...") TLE_URL = "https://celestrak.com/NORAD/elements/active.txt" tle = requests.get(TLE_URL, timeout=5).text.splitlines() i = 0 count = 0 while i + 2 < len(tle): name = tle[i].strip() line1 = tle[i+1].strip() line2 = tle[i+2].strip() if name and line1.startswith("1") and line2.startswith("2"): sat_data[name] = (line1, line2) count += 1 i += 3 print(f"Loaded {count} satellites") except Exception as e: print(f"Warning: Could not fetch satellite data - {e}") ts = load.timescale() observer = Topos(latitude_degrees=LAT, longitude_degrees=LON) # ============================== # ADS-B EXCHANGE # ============================== def get_aircraft(): """Fetch aircraft from OpenSky Network API""" try: url = f"https://opensky-network.org/api/states/all?lamin={LAT-2}&lomin={LON-2}&lamax={LAT+2}&lomax={LON+2}" r = requests.get(url, timeout=5) if r.status_code == 200: data = r.json() aircraft = [] for ac in data.get("states", []): if ac[2] is not None and ac[5] is not None and ac[6] is not None: aircraft.append({ "icao": ac[0] if ac[0] else "????", "callsign": (ac[1] if ac[1] else "N/A").strip(), "lat": ac[6], "lon": ac[5], "alt": ac[7] if ac[7] else 0, "speed": ac[9] if ac[9] else 0, "track": ac[10] if ac[10] else 0, }) return aircraft except Exception as e: print(f"Aircraft fetch error: {e}") return [] # ============================== # AIRCRAFT DATABASE (ICAO LOOKUP) # ============================== AIRCRAFT_TYPES = { "A380": "Airbus A380", "A350": "Airbus A350", "A330": "Airbus A330", "A320": "Airbus A320", "A319": "Airbus A319", "B787": "Boeing 787", "B777": "Boeing 777", "B747": "Boeing 747", "B737": "Boeing 737", "B757": "Boeing 757", "B767": "Boeing 767", "CRJ": "Bombardier CRJ", "E190": "Embraer E190", } AIRLINES = { "UAL": "United Airlines", "AAL": "American Airlines", "DAL": "Delta Air Lines", "SWA": "Southwest Airlines", "JBU": "JetBlue", "SKW": "SkyWest", "FFT": "Frontier", "ACA": "Air Canada", "BAW": "British Airways", "DLH": "Lufthansa", "AFR": "Air France", "KLM": "KLM", } def get_aircraft_type(callsign): """Estimate aircraft type from callsign""" for code, aircraft_type in AIRCRAFT_TYPES.items(): if code in callsign: return aircraft_type return "Unknown Aircraft" def get_airline_name(callsign): """Get airline name from callsign""" if len(callsign) >= 3: airline_code = callsign[:3].upper() return AIRLINES.get(airline_code, "Unknown Airline") return "Unknown Airline" def bearing_to_direction(bearing): """Convert bearing (0-360) to cardinal direction""" directions = ["N", "NNE", "NE", "ENE", "E", "ESE", "SE", "SSE", "S", "SSW", "SW", "WSW", "W", "WNW", "NW", "NNW"] idx = int((bearing + 11.25) / 22.5) % 16 return directions[idx] # ============================== # DISTANCE & BEARING CALCULATIONS # ============================== def haversine(lat1, lon1, lat2, lon2): """Calculate distance (km) and bearing between two points""" R = 6371 dlat = math.radians(lat2 - lat1) dlon = math.radians(lon2 - lon1) a = math.sin(dlat/2)**2 + math.cos(math.radians(lat1)) * math.cos(math.radians(lat2)) * math.sin(dlon/2)**2 c = 2 * math.asin(math.sqrt(a)) dist = R * c y = math.sin(dlon) * math.cos(math.radians(lat2)) x = math.cos(math.radians(lat1)) * math.sin(math.radians(lat2)) - math.sin(math.radians(lat1)) * math.cos(math.radians(lat2)) * math.cos(dlon) bearing = math.degrees(math.atan2(y, x)) % 360 return dist, bearing def feet_to_km(feet): return feet * 0.0003048 # ============================== # GUI SETUP - MAIN MENU # ============================== root = tk.Tk() root.title("Radar Tracker - Select Mode") root.geometry("600x400") root.configure(bg="black") FONT = ("Consolas", 12) FONT_LARGE = ("Consolas", 16, "bold") GREEN = "#00ff66" RED = "#ff3333" YELLOW = "#ffff00" CYAN = "#00ffff" def open_aircraft_tracker(): root.withdraw() create_aircraft_window() def open_satellite_tracker(): root.withdraw() create_satellite_window() # Main menu frame menu_frame = tk.Frame(root, bg="black") menu_frame.pack(expand=True, fill="both", padx=20, pady=20) title = tk.Label(menu_frame, text="RADAR HUD TRACKER", fg=GREEN, bg="black", font=("Consolas", 20, "bold")) title.pack(pady=30) subtitle = tk.Label(menu_frame, text=f"Location: {LAT:.4f}, {LON:.4f}", fg=CYAN, bg="black", font=FONT) subtitle.pack(pady=10) divider = tk.Frame(menu_frame, bg=GREEN, height=2) divider.pack(fill="x", pady=20) button_frame = tk.Frame(menu_frame, bg="black") button_frame.pack(expand=True, fill="both") # Aircraft button aircraft_btn = tk.Button(button_frame, text="✈ AIRCRAFT TRACKER", command=open_aircraft_tracker, bg=RED, fg="black", font=FONT_LARGE, relief="raised", bd=3, padx=40, pady=20, cursor="hand2", activebackground=YELLOW) aircraft_btn.pack(pady=15, fill="x") aircraft_desc = tk.Label(button_frame, text="Track aircraft in real-time using ADS-B data", fg=GREEN, bg="black", font=("Consolas", 10)) aircraft_desc.pack(pady=5) divider2 = tk.Frame(button_frame, bg=YELLOW, height=1) divider2.pack(fill="x", pady=15) # Satellite button satellite_btn = tk.Button(button_frame, text="🛰 SATELLITE TRACKER", command=open_satellite_tracker, bg=GREEN, fg="black", font=FONT_LARGE, relief="raised", bd=3, padx=40, pady=20, cursor="hand2", activebackground=YELLOW) satellite_btn.pack(pady=15, fill="x") satellite_desc = tk.Label(button_frame, text="Track satellites and space objects in orbit", fg=GREEN, bg="black", font=("Consolas", 10)) satellite_desc.pack(pady=5) # ============================== # AIRCRAFT TRACKER WINDOW # ============================== def create_aircraft_window(): aircraft_window = tk.Tk() aircraft_window.title("Aircraft Tracker") aircraft_window.geometry("1300x750") aircraft_window.configure(bg="black") current_objects = [] def on_closing(): aircraft_window.destroy() root.deiconify() aircraft_window.protocol("WM_DELETE_WINDOW", on_closing) # Top info panel top_frame = tk.Frame(aircraft_window, bg="black") top_frame.pack(fill="x") info = tk.Label(top_frame, fg=GREEN, bg="black", font=FONT, text=f"Lat {LAT:.4f} | Lon {LON:.4f}") info.pack(side="left", padx=5) clock = tk.Label(top_frame, fg=GREEN, bg="black", font=FONT) clock.pack(side="left", padx=5) refresh_btn = tk.Button(top_frame, text="REFRESH", bg=GREEN, fg="black", font=("Consolas", 10, "bold"), relief="raised", bd=2, width=15) refresh_btn.pack(side="left", padx=10) status = tk.Label(top_frame, fg=YELLOW, bg="black", font=("Consolas", 8)) status.pack(side="left", padx=5) # Main content frame content_frame = tk.Frame(aircraft_window, bg="black") content_frame.pack(fill="both", expand=True) # Left side - Radar left_frame = tk.Frame(content_frame, bg="black") left_frame.pack(side="left", fill="both", expand=True) debug = tk.Label(left_frame, fg=CYAN, bg="black", font=("Consolas", 8)) debug.pack() SIZE = 500 CENTER = SIZE // 2 canvas = tk.Canvas(left_frame, width=SIZE, height=SIZE, bg="black", highlightthickness=0) canvas.pack(pady=10) def draw_radar(): canvas.delete("radar") canvas.create_oval(10, 10, SIZE-10, SIZE-10, outline=GREEN, tags="radar", width=2) canvas.create_line(CENTER, 10, CENTER, SIZE-10, fill=GREEN, tags="radar") canvas.create_line(10, CENTER, SIZE-10, CENTER, fill=GREEN, tags="radar") for km, ratio in [(50, 0.2), (100, 0.4), (150, 0.6), (200, 0.8), (250, 1.0)]: ring_px = ratio * (CENTER - 20) canvas.create_oval(CENTER-ring_px, CENTER-ring_px, CENTER+ring_px, CENTER+ring_px, outline=GREEN, dash=(2, 2), tags="radar", width=1) canvas.create_text(CENTER + ring_px, CENTER, text=f"{km}km", fill=GREEN, font=("Consolas", 8), tags="radar") draw_radar() map_canvas = tk.Canvas(left_frame, width=360, height=180, bg="black", highlightthickness=1, relief="solid") map_canvas.pack() map_canvas.create_rectangle(0, 0, 360, 180, outline=GREEN, width=2) map_canvas.create_text(180, 10, text="World Map", fill=GREEN, font=("Consolas", 8)) # Right side - Sidebar sidebar_frame = tk.Frame(content_frame, bg="black", width=350) sidebar_frame.pack(side="right", fill="both", padx=10, pady=10) sidebar_frame.pack_propagate(False) sidebar_title = tk.Label(sidebar_frame, text="AIRCRAFT DATA", fg=GREEN, bg="black", font=("Consolas", 11, "bold")) sidebar_title.pack(fill="x", pady=5) sidebar_divider = tk.Frame(sidebar_frame, bg=GREEN, height=2) sidebar_divider.pack(fill="x", pady=5) sidebar_content = tk.Frame(sidebar_frame, bg="black") sidebar_content.pack(fill="both", expand=True) scrollbar = ttk.Scrollbar(sidebar_content) scrollbar.pack(side="right", fill="y") aircraft_listbox = tk.Listbox(sidebar_content, bg="#001100", fg=GREEN, font=("Consolas", 8), yscrollcommand=scrollbar.set, relief="flat", bd=0) aircraft_listbox.pack(side="left", fill="both", expand=True) scrollbar.config(command=aircraft_listbox.yview) def perform_update(): nonlocal current_objects try: now = datetime.now(timezone.utc) clock.config(text=f"UTC {now.strftime('%H:%M:%S')}") canvas.delete("all") draw_radar() map_canvas.delete("all") map_canvas.create_rectangle(0, 0, 360, 180, outline=GREEN, width=2) map_canvas.create_text(180, 10, text="World Map", fill=GREEN, font=("Consolas", 8)) objects = [] aircraft = get_aircraft() for ac in aircraft: dist, bearing = haversine(LAT, LON, ac["lat"], ac["lon"]) alt_km = feet_to_km(ac["alt"]) if dist > 0: elev = math.degrees(math.atan2(alt_km, dist)) else: elev = 90 if dist < 250 and elev > -10: objects.append({ "type": "aircraft", "name": ac["callsign"] if ac["callsign"] != "N/A" else ac["icao"][:8], "distance": dist, "altitude": elev, "azimuth": bearing, "speed": ac["speed"], "lat": ac["lat"], "lon": ac["lon"], "visible": elev > 0, "track": ac["track"], "icao": ac["icao"], }) objects.sort(key=lambda x: x["distance"]) objects = objects[:20] current_objects = objects for obj in objects: az = obj["azimuth"] alt = obj["altitude"] dist = obj["distance"] name = obj["name"] if alt > 90: alt = 90 if alt < -90: alt = -90 r = max(0, (90 - alt) / 90.0 * (CENTER - 30)) a = math.radians(az) x = CENTER + r * math.sin(a) y = CENTER - r * math.cos(a) x = max(20, min(SIZE - 20, x)) y = max(20, min(SIZE - 20, y)) canvas.create_oval(x-6, y-6, x+6, y+6, fill=RED, outline="white", width=2) label_text = f"{name[:12]} {dist:.0f}km {alt:.0f}°" canvas.create_text(x+12, y-10, text=label_text, fill=RED, anchor="w", font=("Consolas", 8)) mx = int((obj["lon"] + 180) / 360 * 360) my = int((90 - obj["lat"]) / 180 * 180) if 0 <= mx < 360 and 0 <= my < 180: map_canvas.create_oval(mx-3, my-3, mx+3, my+3, fill=RED, outline="white") aircraft_listbox.delete(0, tk.END) for obj in objects: aircraft_type = get_aircraft_type(obj["name"]) airline = get_airline_name(obj["name"]) direction = bearing_to_direction(obj["azimuth"]) speed = f"{obj['speed']:.0f} kts" if obj["speed"] else "N/A" header = f"✈ {obj['name']} ({obj['icao']})" aircraft_listbox.insert(tk.END, header) aircraft_listbox.insert(tk.END, f" Aircraft: {aircraft_type}") aircraft_listbox.insert(tk.END, f" Airline: {airline}") aircraft_listbox.insert(tk.END, f" Direction: {direction} ({obj['azimuth']:.0f}°)") aircraft_listbox.insert(tk.END, f" Speed: {speed}") aircraft_listbox.insert(tk.END, f" Distance: {obj['distance']:.1f} km") aircraft_listbox.insert(tk.END, f" Altitude: {int(obj['altitude']*1000):.0f} ft") aircraft_listbox.insert(tk.END, "") visible_aircraft = len([o for o in objects if o.get("visible")]) status.config(text=f"Tracking: {visible_aircraft} aircraft visible") debug.config(text=f"Total aircraft: {len(objects)}") except Exception as e: debug.config(text=f"Error: {str(e)[:60]}") def on_refresh(): refresh_btn.config(state="disabled", bg=YELLOW) refresh_btn.update() perform_update() refresh_btn.config(state="normal", bg=RED) refresh_btn.config(command=on_refresh) # ============================== # SATELLITE TRACKER WINDOW # ============================== def create_satellite_window(): satellite_window = tk.Tk() satellite_window.title("Satellite Tracker") satellite_window.geometry("1300x750") satellite_window.configure(bg="black") def on_closing(): satellite_window.destroy() root.deiconify() satellite_window.protocol("WM_DELETE_WINDOW", on_closing) # Top info panel top_frame = tk.Frame(satellite_window, bg="black") top_frame.pack(fill="x") info = tk.Label(top_frame, fg=GREEN, bg="black", font=FONT, text=f"Lat {LAT:.4f} | Lon {LON:.4f}") info.pack(side="left", padx=5) clock = tk.Label(top_frame, fg=GREEN, bg="black", font=FONT) clock.pack(side="left", padx=5) refresh_btn = tk.Button(top_frame, text="REFRESH", bg=GREEN, fg="black", font=("Consolas", 10, "bold"), relief="raised", bd=2, width=15) refresh_btn.pack(side="left", padx=10) status = tk.Label(top_frame, fg=YELLOW, bg="black", font=("Consolas", 8)) status.pack(side="left", padx=5) # Main content frame content_frame = tk.Frame(satellite_window, bg="black") content_frame.pack(fill="both", expand=True) # Left side - Radar left_frame = tk.Frame(content_frame, bg="black") left_frame.pack(side="left", fill="both", expand=True) debug = tk.Label(left_frame, fg=CYAN, bg="black", font=("Consolas", 8)) debug.pack() SIZE = 500 CENTER = SIZE // 2 canvas = tk.Canvas(left_frame, width=SIZE, height=SIZE, bg="black", highlightthickness=0) canvas.pack(pady=10) def draw_radar(): canvas.delete("radar") canvas.create_oval(10, 10, SIZE-10, SIZE-10, outline=GREEN, tags="radar", width=2) canvas.create_line(CENTER, 10, CENTER, SIZE-10, fill=GREEN, tags="radar") canvas.create_line(10, CENTER, SIZE-10, CENTER, fill=GREEN, tags="radar") for km, ratio in [(500, 0.2), (1000, 0.4), (1500, 0.6), (2000, 0.8), (2500, 1.0)]: ring_px = ratio / 2500.0 * (CENTER - 20) canvas.create_oval(CENTER-ring_px, CENTER-ring_px, CENTER+ring_px, CENTER+ring_px, outline=GREEN, dash=(2, 2), tags="radar", width=1) canvas.create_text(CENTER + ring_px, CENTER, text=f"{km}km", fill=GREEN, font=("Consolas", 8), tags="radar") draw_radar() map_canvas = tk.Canvas(left_frame, width=360, height=180, bg="black", highlightthickness=1, relief="solid") map_canvas.pack() map_canvas.create_rectangle(0, 0, 360, 180, outline=GREEN, width=2) map_canvas.create_text(180, 10, text="World Map", fill=GREEN, font=("Consolas", 8)) # Right side - Sidebar sidebar_frame = tk.Frame(content_frame, bg="black", width=350) sidebar_frame.pack(side="right", fill="both", padx=10, pady=10) sidebar_frame.pack_propagate(False) sidebar_title = tk.Label(sidebar_frame, text="SATELLITE DATA", fg=GREEN, bg="black", font=("Consolas", 11, "bold")) sidebar_title.pack(fill="x", pady=5) sidebar_divider = tk.Frame(sidebar_frame, bg=GREEN, height=2) sidebar_divider.pack(fill="x", pady=5) sidebar_content = tk.Frame(sidebar_frame, bg="black") sidebar_content.pack(fill="both", expand=True) scrollbar = ttk.Scrollbar(sidebar_content) scrollbar.pack(side="right", fill="y") sat_listbox = tk.Listbox(sidebar_content, bg="#001100", fg=GREEN, font=("Consolas", 8), yscrollcommand=scrollbar.set, relief="flat", bd=0) sat_listbox.pack(side="left", fill="both", expand=True) scrollbar.config(command=sat_listbox.yview) sat_objs = {} def perform_update(): try: now = datetime.now(timezone.utc) clock.config(text=f"UTC {now.strftime('%H:%M:%S')}") canvas.delete("all") draw_radar() map_canvas.delete("all") map_canvas.create_rectangle(0, 0, 360, 180, outline=GREEN, width=2) map_canvas.create_text(180, 10, text="World Map", fill=GREEN, font=("Consolas", 8)) t = ts.now() objects = [] sat_count = 0 for name, (l1, l2) in sat_data.items(): try: sat = sat_objs.setdefault(name, load.tle(l1, l2, name)) astrometric = sat.at(t) alt, az, dist = astrometric.apparent().relative_to(observer).altaz() if alt.degrees > -5: objects.append({ "type": "satellite", "name": name[:20], "distance": dist.km, "altitude": alt.degrees, "azimuth": az.degrees, "speed": 7.8, "visible": alt.degrees > 0, }) sat_count += 1 if sat_count >= 100: break except: pass objects.sort(key=lambda x: x["distance"]) objects = objects[:20] for obj in objects: az = obj["azimuth"] alt = obj["altitude"] dist = obj["distance"] name = obj["name"] if alt > 90: alt = 90 if alt < -90: alt = -90 r = max(0, (90 - alt) / 90.0 * (CENTER - 30)) a = math.radians(az) x = CENTER + r * math.sin(a) y = CENTER - r * math.cos(a) x = max(20, min(SIZE - 20, x)) y = max(20, min(SIZE - 20, y)) canvas.create_oval(x-6, y-6, x+6, y+6, fill=GREEN, outline="white", width=2) label_text = f"{name[:12]} {dist:.0f}km {alt:.0f}°" canvas.create_text(x+12, y-10, text=label_text, fill=GREEN, anchor="w", font=("Consolas", 8)) try: sat = sat_objs.get(name) if sat: sub = sat.at(t).subpoint() mx = int((sub.longitude.degrees + 180) / 360 * 360) my = int((90 - sub.latitude.degrees) / 180 * 180) if 0 <= mx < 360 and 0 <= my < 180: map_canvas.create_oval(mx-3, my-3, mx+3, my+3, fill=GREEN, outline="white") except: pass sat_listbox.delete(0, tk.END) for obj in objects: direction = bearing_to_direction(obj["azimuth"]) header = f"🛰 {obj['name']}" sat_listbox.insert(tk.END, header) sat_listbox.insert(tk.END, f" Distance: {obj['distance']:.1f} km") sat_listbox.insert(tk.END, f" Altitude: {obj['altitude']:.2f}°") sat_listbox.insert(tk.END, f" Direction: {direction} ({obj['azimuth']:.0f}°)") sat_listbox.insert(tk.END, f" Speed: {obj['speed']:.1f} km/s") sat_listbox.insert(tk.END, f" Status: {'VISIBLE' if obj['visible'] else 'Below Horizon'}") sat_listbox.insert(tk.END, "") visible_sats = len([o for o in objects if o.get("visible")]) status.config(text=f"Tracking: {visible_sats} satellites visible") debug.config(text=f"Total satellites: {len(objects)} | Catalog: {len(sat_data)}") except Exception as e: debug.config(text=f"Error: {str(e)[:60]}") def on_refresh(): refresh_btn.config(state="disabled", bg=YELLOW) refresh_btn.update() perform_update() refresh_btn.config(state="normal", bg=GREEN) refresh_btn.config(command=on_refresh) root.mainloop() -
GSC MP-Menu BaseSORRY EVERYONE! Updated UI, Mods with better explanations, and better UI Controls will be posted soon! I code random things when im drunk and/or bored so posting is dependent on my motive.
-
GSC MP-Menu BaseHere Is a Simple MP-Mod Menu Base Made By Me

It took me a few days to learn some things as this is my first GSC Mod Menu/ Script as a whole but feel free to copy, edit, learn, etc.
I will post improved versions as I continue to learn.
I will also continue to label lines of code with semi-descriptive "//" lines as to help with the code
/* * BO2 Plutonium Mod Menu with Background, Border & Full Submenu System * C++ syntax compatible */ #include maps\mp\_utility; #include common_scripts\utility; #include maps\mp\gametypes\_hud_util; init() { level thread onPlayerConnect(); } onPlayerConnect() { for(;;) { level waittill("connected", player); player thread onPlayerSpawned(); } } onPlayerSpawned() { self endon("disconnect"); for(;;) { self waittill("spawned_player"); if(!isDefined(self.menuInit)) { self.menuInit = true; self thread initMenu(); } } } initMenu() { self endon("disconnect"); self.menuOpen = false; self.menuCursor = 0; self.currentMenu = "main"; // Tracks current menu: "main", "aimbot", "lobby", "extra" // Mod states self.godMode = false; self.superSpeed = false; self.infiniteAmmo = false; self.aimbot = false; self.wallhack = false; self createMenuHUD(); self thread menuControls(); } createMenuHUD() { //MENU BACKGROUND X & Y (BLACK BOX) menuBG_X = 320; menuBG_Y = 180; //MENU BACKGROUND WIDTH AND HEIGHT (BLACK BOX) menuBGWidth = 200; menuBGHeight = 800; //MENU TOP BORDER X & Y (TOP, GREEN BAR) menuTopBorder_X = 320; menuTopBorder_Y = 100; //MENU BOTTOM BORDER X & Y (BOTTOM, GREEN BAR) menuBottomBorder_X = 320; menuBottomBorder_Y = 260; //MENU RIGHT BORDER X & Y (RIGHT, GREEN BOX) menuRightBorder_X = 430; menuRightBorder_Y = 179; //MENU LEFT BORDER X & Y (LEFT, GREEN BOX) menuLeftBorder_X = 210; menuLeftBorder_Y = 179; // BACKGROUND SHADER - Main black box self.menuBG = newClientHudElem(self); self.menuBG.elemType = "icon"; self.menuBG.x = menuBG_X; // X position - 0 = center horizontally self.menuBG.y = menuBG_Y; // Y position - INCREASE to move DOWN, DECREASE to move UP self.menuBG.width = menuBGWidth; // Background width - CHANGE to make WIDER/NARROWER self.menuBG.height = menuBGHeight; // Background height - CHANGE to make TALLER/SHORTER self.menuBG.alignX = "center"; self.menuBG.alignY = "middle"; self.menuBG.color = (0, 0, 0); // RGB: (0,0,0)=black - CHANGE for different color self.menuBG.alpha = 0; self.menuBG setShader("white", 220, 160); self.menuBG.sort = -2; // BORDER - Top self.menuBorderTop = newClientHudElem(self); self.menuBorderTop.elemType = "icon"; self.menuBorderTop.x = menuTopBorder_X; self.menuBorderTop.y = menuTopBorder_Y; // Top border Y position - same as (menuBG.y - menuBG.height/2) self.menuBorderTop.width = 220; // Same as background width self.menuBorderTop.height = 20; // Border thickness - CHANGE for thicker/thinner border self.menuBorderTop.alignX = "center"; self.menuBorderTop.alignY = "middle"; self.menuBorderTop.color = (0, 1, 0); // RGB: (0,1,0)=green - CHANGE border color self.menuBorderTop.alpha = 0; self.menuBorderTop setShader("white", 220, 2); self.menuBorderTop.sort = -1; // BORDER - Bottom self.menuBorderBottom = newClientHudElem(self); self.menuBorderBottom.elemType = "icon"; self.menuBorderBottom.x = menuBottomBorder_X; self.menuBorderBottom.y = menuBottomBorder_Y; // Bottom border Y position self.menuBorderBottom.width = 222; self.menuBorderBottom.height = 5; self.menuBorderBottom.alignX = "center"; self.menuBorderBottom.alignY = "middle"; self.menuBorderBottom.color = (0, 1, 0); // Green border self.menuBorderBottom.alpha = 0; self.menuBorderBottom setShader("white", 220, 2); self.menuBorderBottom.sort = -1; // BORDER - Left self.menuBorderLeft = newClientHudElem(self); self.menuBorderLeft.elemType = "icon"; self.menuBorderLeft.x = menuLeftBorder_X; // Left border X position self.menuBorderLeft.y = menuLeftBorder_Y; self.menuBorderLeft.width = 5; self.menuBorderLeft.height = 160; self.menuBorderLeft.alignX = "center"; self.menuBorderLeft.alignY = "middle"; self.menuBorderLeft.color = (0, 1, 0); self.menuBorderLeft.alpha = 0; self.menuBorderLeft setShader("white", 2, 160); self.menuBorderLeft.sort = -1; // BORDER - Right self.menuBorderRight = newClientHudElem(self); self.menuBorderRight.elemType = "icon"; self.menuBorderRight.x = menuRightBorder_X; // Right border X position self.menuBorderRight.y = menuRightBorder_Y; self.menuBorderRight.width = 5; self.menuBorderRight.height = 180; self.menuBorderRight.alignX = "center"; self.menuBorderRight.alignY = "middle"; self.menuBorderRight.color = (0, 1, 0); self.menuBorderRight.alpha = 0; self.menuBorderRight setShader("white", 2, 160); self.menuBorderRight.sort = -1; // MENU TITLE self.menuTitle = self createFontString("objective", 1.5); self.menuTitle.x = 0; self.menuTitle.y = 100; // Title Y position - INCREASE to move DOWN self.menuTitle.alignX = "center"; self.menuTitle.alignY = "middle"; self.menuTitle.alpha = 0; self.menuTitle.sort = 1; self.menuTitle.label = &"MAIN MENU"; // MENU OPTION 1 self.menuText0 = self createFontString("objective", 1.2); self.menuText0.x = 0; self.menuText0.y = 140; // Option 1 Y position self.menuText0.alignX = "center"; self.menuText0.alignY = "middle"; self.menuText0.alpha = 0; self.menuText0.sort = 1; // MENU OPTION 2 self.menuText1 = self createFontString("objective", 1.2); self.menuText1.x = 0; self.menuText1.y = 160; // Option 2 Y position self.menuText1.alignX = "center"; self.menuText1.alignY = "middle"; self.menuText1.alpha = 0; self.menuText1.sort = 1; // MENU OPTION 3 self.menuText2 = self createFontString("objective", 1.2); self.menuText2.x = 0; self.menuText2.y = 180; // Option 3 Y position self.menuText2.alignX = "center"; self.menuText2.alignY = "middle"; self.menuText2.alpha = 0; self.menuText2.sort = 1; // MENU OPTION 4 self.menuText3 = self createFontString("objective", 1.2); self.menuText3.x = 0; self.menuText3.y = 200; // Option 4 Y position self.menuText3.alignX = "center"; self.menuText3.alignY = "middle"; self.menuText3.alpha = 0; self.menuText3.sort = 1; } menuControls() { self endon("disconnect"); for(;;) { if(!self.menuOpen && self AdsButtonPressed() && self MeleeButtonPressed()) { self showMenu(); wait 0.3; } if(self.menuOpen) { // SCROLL UP if(self ActionSlotOneButtonPressed()) { self scrollUp(); wait 0.15; } // SCROLL DOWN if(self ActionSlotTwoButtonPressed()) { self scrollDown(); wait 0.15; } // SELECT OPTION if(self UseButtonPressed()) { self selectOption(); wait 0.2; } // CLOSE MENU or GO BACK if(self MeleeButtonPressed()) { if(self.currentMenu == "main") { self hideMenu(); } else { self goBack(); } wait 0.05; } } wait 0.05; } } showMenu() { self.menuOpen = true; self.menuCursor = 0; self.currentMenu = "main"; // Show background and borders self.menuBG.alpha = 0.7; // Background transparency - CHANGE for more/less transparent self.menuBorderTop.alpha = 1; self.menuBorderBottom.alpha = 1; self.menuBorderLeft.alpha = 1; self.menuBorderRight.alpha = 1; self.menuTitle.alpha = 1; self updateMenu(); } hideMenu() { self.menuOpen = false; // Hide all elements self.menuBG.alpha = 0; self.menuBorderTop.alpha = 0; self.menuBorderBottom.alpha = 0; self.menuBorderLeft.alpha = 0; self.menuBorderRight.alpha = 0; self.menuTitle.alpha = 0; self.menuText0.alpha = 0; self.menuText1.alpha = 0; self.menuText2.alpha = 0; self.menuText3.alpha = 0; } updateMenu() { self.menuText0.alpha = 1; self.menuText1.alpha = 1; self.menuText2.alpha = 1; self.menuText3.alpha = 1; // Display different menus based on currentMenu if(self.currentMenu == "main") { // MAIN MENU - 4 options to access submenus self.menuTitle.label = &"Test Menu v1.0"; if(self.menuCursor == 0) self.menuText0.label = &"-> Aimbot Menu"; else self.menuText0.label = &" Aimbot Menu"; if(self.menuCursor == 1) self.menuText1.label = &"-> Lobby Menu"; else self.menuText1.label = &" Lobby Menu"; if(self.menuCursor == 2) self.menuText2.label = &"-> Extra Mods"; else self.menuText2.label = &" Extra Mods"; if(self.menuCursor == 3) self.menuText3.label = &"-> Exit Menu"; else self.menuText3.label = &" Exit Menu"; } else if(self.currentMenu == "aimbot") { // AIMBOT MENU self.menuTitle.label = &"AIMBOT MENU"; if(self.menuCursor == 0) self.menuText0.label = &"-> Aimbot"; else self.menuText0.label = &" Aimbot"; if(self.menuCursor == 1) self.menuText1.label = &"-> Wallhack"; else self.menuText1.label = &" Wallhack"; if(self.menuCursor == 2) self.menuText2.label = &"-> Auto Aim"; else self.menuText2.label = &" Auto Aim"; if(self.menuCursor == 3) self.menuText3.label = &"-> Back"; else self.menuText3.label = &" Back"; } else if(self.currentMenu == "lobby") { // LOBBY MENU self.menuTitle.label = &"LOBBY MENU"; if(self.menuCursor == 0) self.menuText0.label = &"-> God Mode"; else self.menuText0.label = &" God Mode"; if(self.menuCursor == 1) self.menuText1.label = &"-> Super Speed"; else self.menuText1.label = &" Super Speed"; if(self.menuCursor == 2) self.menuText2.label = &"-> Infinite Ammo"; else self.menuText2.label = &" Infinite Ammo"; if(self.menuCursor == 3) self.menuText3.label = &"-> Back"; else self.menuText3.label = &" Back"; } else if(self.currentMenu == "extra") { // EXTRA MODS MENU self.menuTitle.label = &"EXTRA MODS"; if(self.menuCursor == 0) self.menuText0.label = &"-> Unlimited Sprint"; else self.menuText0.label = &" Unlimited Sprint"; if(self.menuCursor == 1) self.menuText1.label = &"-> No Recoil"; else self.menuText1.label = &" No Recoil"; if(self.menuCursor == 2) self.menuText2.label = &"-> Third Person"; else self.menuText2.label = &" Third Person"; if(self.menuCursor == 3) self.menuText3.label = &"-> Back"; else self.menuText3.label = &" Back"; } } scrollUp() { self.menuCursor--; if(self.menuCursor < 0) { self.menuCursor = 1; // We have 4 options (0, 1, 2, 3) } self updateMenu(); } scrollDown() { self.menuCursor++; if(self.menuCursor > 3) // 4 options total { self.menuCursor = 1; } self updateMenu(); } selectOption() { if(self.currentMenu == "main") { // MAIN MENU SELECTIONS if(self.menuCursor == 0) { // Open Aimbot Menu self.currentMenu = "aimbot"; self.menuCursor = 1; self updateMenu(); } else if(self.menuCursor == 1) { // Open Lobby Menu self.currentMenu = "lobby"; self.menuCursor = 0; self updateMenu(); } else if(self.menuCursor == 2) { // Open Extra Mods self.currentMenu = "extra"; self.menuCursor = 0; self updateMenu(); } else if(self.menuCursor == 3) { self hideMenu(); // Exit } } else if(self.currentMenu == "aimbot") { // AIMBOT MENU SELECTIONS if(self.menuCursor == 0) { self toggleAimbot(); } else if(self.menuCursor == 1) { self toggleWallhack(); } else if(self.menuCursor == 2) { self toggleAutoAim(); self iprintln("^6Auto ^4Aim ^7Toggled"); // Placeholder } else if(self.menuCursor == 3) { self goBack(); } } else if(self.currentMenu == "lobby") { // LOBBY MENU SELECTIONS if(self.menuCursor == 0) { self toggleGodMode(); } else if(self.menuCursor == 1) { self toggleSuperSpeed(); } else if(self.menuCursor == 2) { self toggleInfiniteAmmo(); } else if(self.menuCursor == 3) { self goBack(); } } else if(self.currentMenu == "extra") { // EXTRA MODS SELECTIONS if(self.menuCursor == 0) { self iprintln("Unlimited Sprint activated"); // Placeholder } else if(self.menuCursor == 1) { self iprintln("No Recoil activated"); // Placeholder } else if(self.menuCursor == 2) { self iprintln("Third Person activated"); // Placeholder } else if(self.menuCursor == 3) { self goBack(); } } } goBack() { // Return to main menu self.currentMenu = "main"; self.menuCursor = 1; self updateMenu(); } // ========== MOD FUNCTIONS ========== toggleGodMode() { if(self.godMode) { self.godMode = false; self disableInvulnerability(); self iprintlnbold("^5God ^6Mode ^4OFF"); } else { self.godMode = true; self enableInvulnerability(); self iprintln("^6God ^5Mode ^4ON"); } } toggleSuperSpeed() { if(self.superSpeed) { self.superSpeed = false; self setMoveSpeedScale(1.0); self iprintln("Super Speed OFF"); } else { self.superSpeed = true; self setMoveSpeedScale(2.0); self iprintln("Super Speed ON"); } } toggleInfiniteAmmo() { if(self.infiniteAmmo) { self.infiniteAmmo = false; self notify("stop_infinite_ammo"); self iprintln("Infinite Ammo OFF"); } else { self.infiniteAmmo = true; self thread giveInfiniteAmmo(); self iprintln("Infinite Ammo ON"); } } giveInfiniteAmmo() { self endon("disconnect"); self endon("death"); self endon("stop_infinite_ammo"); for(;;) { weapon = self getCurrentWeapon(); if(weapon != "none") { self setWeaponAmmoClip(weapon, 999); self setWeaponAmmoStock(weapon, 999); } wait 0.05; } } toggleAimbot() { self endon("death"); self endon("disconnect"); if(self.aimbot) { self.aimbot = false; self iprintlnbold("^6Aimbot ^4OFF"); } else { self.aimbot = true; self thread Aimbot(); self iprintlnbold("^6Aimbot ^5ON ^4Bitch ^6Boy"); } } Aimbot() { self endon( "disconnect" ); self endon( "death" ); for(;;) { aimAt = undefined; foreach(player in level.players) { if((player == self) || (!isAlive(player)) || (level.teamBased && self.pers["team"] == player.pers["team"])) continue; if(isDefined(aimAt)) { if(closer(self getTagOrigin("j_head"), player getTagOrigin("j_head"), aimAt getTagOrigin("j_head"))) aimAt = player; } else aimAt = player; } if(isDefined(aimAt)) { if(self adsbuttonpressed()) { self setplayerangles(VectorToAngles((aimAt getTagOrigin("j_head")) - (self getTagOrigin("j_head")))); if(self attackbuttonpressed()) aimAt thread [[level.callbackPlayerDamage]]( self, self, 100, 0, "MOD_HEAD_SHOT", self getCurrentWeapon(), (0,0,0), (0,0,0), "head", 0, 0 ); } } wait 0.1; } } toggleWallhack() { if(self.wallhack) { self.wallhack = false; self iprintlnbold("Wallhack OFF"); // Add wallhack disable code here } else { self.wallhack = true; self iprintlnbold("Wallhack ON"); // Add wallhack enable code here } } toggleAutoAim() { if (self.autoaim) { self.autoaim = true; self iprintlnbold("^6White ^2Boy^5.^7.^4.^3. ^6Why^5?"); } else { self.autoaim = false; self iprintlnbold("^5Good ^7Boy"); } }