Add GTA city builder + background injection API for Roblox Studio

- inject_gta_city.py: Full GTA-style city with 20 buildings, roads, cars,
  street lights, traffic lights, trees, 15 human enemies with varied
  skin/clothing, and 10 COD weapons with visible gun models
- inject_bg.py: Background injection using SendMessage/PostMessage Win32 API
- inject_bg2.py: PostMessage approach targeting main window for WPF apps
- inject_cod_final.py: Working COD game injection (7-step sequential)
- cod_inject.py: Combined COD game builder with proper Studio launch
- roblox-fps-p1-p6: Split Lua scripts for multi-part injection

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Gemini AI
2026-03-31 21:39:39 +04:00
Unverified
parent 9e3a4b9daa
commit 2065361e57
12 changed files with 2754 additions and 0 deletions

329
cod_inject.py Normal file
View File

@@ -0,0 +1,329 @@
"""
Build a complete Call of Duty game in Roblox Studio.
Uses small sequential injections that fit in command bar.
Part 1: New place + ground
"""
import ctypes, ctypes.wintypes, subprocess, time, sys, os
user32 = ctypes.windll.user32
def find_studio():
target = [None]
def cb(hwnd, _):
l = user32.GetWindowTextLengthW(hwnd)
if l > 0:
buf = ctypes.create_unicode_buffer(l + 1)
user32.GetWindowTextW(hwnd, buf, l + 1)
if "Roblox Studio" in buf.value:
target[0] = hwnd
return False
return True
WNDENUMPROC = ctypes.WINFUNCTYPE(ctypes.c_bool, ctypes.wintypes.HWND, ctypes.wintypes.LPARAM)
user32.EnumWindows(WNDENUMPROC(cb), 0)
return target[0]
def focus(hwnd):
user32.ShowWindow(hwnd, 9)
time.sleep(0.3)
fg = user32.GetForegroundWindow()
if fg != hwnd:
tid_fg = user32.GetWindowThreadProcessId(fg, None)
tid_target = user32.GetWindowThreadProcessId(hwnd, None)
user32.AttachThreadInput(tid_fg, tid_target, True)
user32.SetForegroundWindow(hwnd)
user32.AttachThreadInput(tid_fg, tid_target, False)
time.sleep(0.5)
def inject_code(code, hwnd):
"""Inject Lua code into Studio command bar."""
tmp = os.path.join(os.environ["TEMP"], "rbx_inj.lua")
with open(tmp, "w", encoding="utf-8") as f:
f.write(code)
subprocess.run(["powershell", "-Command", f"Get-Content '{tmp}' -Raw | Set-Clipboard"],
capture_output=True, timeout=15)
time.sleep(0.3)
# Escape to dismiss any dialog
user32.keybd_event(0x1B, 0, 0, 0); time.sleep(0.03); user32.keybd_event(0x1B, 0, 2, 0)
time.sleep(0.2)
# Click command bar area (bottom center of window)
rect = ctypes.wintypes.RECT()
user32.GetWindowRect(hwnd, ctypes.byref(rect))
w = rect.right - rect.left
h = rect.bottom - rect.top
cx = rect.left + w // 2
cy = rect.bottom - 45
sw = user32.GetSystemMetrics(0); sh = user32.GetSystemMetrics(1)
nx = int(cx * 65535 / sw); ny = int(cy * 65535 / sh)
user32.mouse_event(0x8001, nx, ny, 0, 0); time.sleep(0.02)
user32.mouse_event(0x8002, nx, ny, 0, 0); time.sleep(0.03)
user32.mouse_event(0x8004, nx, ny, 0, 0)
time.sleep(0.4)
# Select all + delete
user32.keybd_event(0x11, 0, 0, 0) # Ctrl
user32.keybd_event(0x41, 0, 0, 0); time.sleep(0.03); user32.keybd_event(0x41, 0, 2, 0) # A
user32.keybd_event(0x11, 0, 2, 0)
time.sleep(0.1)
user32.keybd_event(0x2E, 0, 0, 0); time.sleep(0.03); user32.keybd_event(0x2E, 0, 2, 0) # Del
time.sleep(0.1)
# Paste (Ctrl+V)
user32.keybd_event(0x11, 0, 0, 0); time.sleep(0.02)
user32.keybd_event(0x56, 0, 0, 0); time.sleep(0.03); user32.keybd_event(0x56, 0, 2, 0)
time.sleep(0.02); user32.keybd_event(0x11, 0, 2, 0)
time.sleep(1.0)
# Execute (Enter)
user32.keybd_event(0x0D, 0, 0, 0); time.sleep(0.03); user32.keybd_event(0x0D, 0, 2, 0)
time.sleep(1.5)
hwnd = find_studio()
if not hwnd:
print("ERROR: Roblox Studio not found!")
sys.exit(1)
print(f"Studio found: {hwnd}")
focus(hwnd)
# Step 1: Open new place (Ctrl+N)
print("[1/8] Opening new place...")
user32.keybd_event(0x11, 0, 0, 0); time.sleep(0.02)
user32.keybd_event(0x4E, 0, 0, 0); time.sleep(0.03); user32.keybd_event(0x4E, 0, 2, 0)
time.sleep(0.02); user32.keybd_event(0x11, 0, 2, 0)
time.sleep(5)
focus(hwnd)
# Step 2: Clean + build ground
print("[2/8] Building ground + lighting...")
code2 = """
for _,v in pairs(workspace:GetChildren()) do if v:IsA("Model")or v:IsA("Part")or v:IsA("Folder")then if v.Name~="Camera"and v.Name~="Terrain"then v:Destroy()end end end
wait(0.2)
local g=Instance.new("Part",workspace)g.Name="Ground"g.Size=Vector3.new(500,2,500)g.Position=Vector3.new(0,-1,0)g.Anchored=true g.BrickColor=BrickColor.new("Dark stone grey")g.Material=Enum.Material.Asphalt
local L=game:GetService("Lighting")L.ClockTime=6 L.Brightness=0.4 L.FogEnd=600 L.FogStart=150 L.Ambient=Color3.fromRGB(60,60,80)
print("Ground done")
"""
inject_code(code2, hwnd)
print(" Ground OK")
# Step 3: Buildings
print("[3/8] Building structures...")
code3 = """
local blds={{-80,10,-100,35,22,28},{90,10,-70,28,18,32},{-50,11,80,40,24,22},{100,9,90,25,16,30},{0,13,-160,32,26,32},{-130,10,0,22,20,22},{130,10,-30,26,20,26}}
for i,b in ipairs(blds)do local m=Instance.new("Model",workspace)m.Name="Building"..i local p=Instance.new("Part",m)p.Size=Vector3.new(b[4],b[5],b[6])p.Position=Vector3.new(b[1],b[2],b[3])p.Anchored=true p.BrickColor=BrickColor.new(i%2==0 and"Medium stone grey"or"Brown")p.Material=Enum.Material.Brick p.Name="Wall"end
for _,w in ipairs({{-250,10,0,2,20,500},{250,10,0,2,20,500},{0,10,-250,500,20,2},{0,10,250,500,20,2}})do local p=Instance.new("Part",workspace)p.Size=Vector3.new(w[4],w[5],w[6])p.Position=Vector3.new(w[1],w[2],w[3])p.Anchored=true p.BrickColor=BrickColor.new("Dark stone grey")p.Material=Enum.Material.Concrete p.Transparency=0.4 p.Name="Boundary"end
print("Buildings done")
"""
inject_code(code3, hwnd)
print(" Buildings OK")
# Step 4: Cover + towers
print("[4/8] Adding cover + watchtowers...")
code4 = """
for i=1,30 do local x,z=math.random(-200,200),math.random(-200,200)local p=Instance.new("Part",workspace)p.Anchored=true p.Name="Cover"..i if i%3==0 then p.Size=Vector3.new(2,4,2)p.Position=Vector3.new(x,2,z)p.BrickColor=BrickColor.new("Reddish brown")p.Material=Enum.Material.Metal p.Shape=Enum.PartType.Cylinder elseif i%3==1 then p.Size=Vector3.new(4,4,4)p.Position=Vector3.new(x,2,z)p.BrickColor=BrickColor.new("Brown")p.Material=Enum.Material.Wood else p.Size=Vector3.new(7,2.5,3)p.Position=Vector3.new(x,1.25,z)p.BrickColor=BrickColor.new("Brick yellow")p.Material=Enum.Material.Sand end end
for i=1,4 do local x,z=({-180,-180,180,180})[i],({-180,180,-180,180})[i]local t=Instance.new("Model",workspace)t.Name="Tower"..i local b=Instance.new("Part",t)b.Size=Vector3.new(6,1,6)b.Position=Vector3.new(x,0.5,z)b.Anchored=true b.BrickColor=BrickColor.new("Dark stone grey")for _,o in ipairs({{-2,0,-2},{2,0,-2},{-2,0,2},{2,0,2}})do local l=Instance.new("Part",t)l.Size=Vector3.new(1,18,1)l.Position=Vector3.new(x+o[1],9,z+o[2])l.Anchored=true l.BrickColor=BrickColor.new("Dark stone grey")end local pl=Instance.new("Part",t)pl.Size=Vector3.new(8,1,8)pl.Position=Vector3.new(x,18,z)pl.Anchored=true pl.BrickColor=BrickColor.new("Brown")pl.Material=Enum.Material.Wood end
print("Cover done")
"""
inject_code(code4, hwnd)
print(" Cover OK")
# Step 5: ReplicatedStorage + WeaponData
print("[5/8] Creating weapon system...")
code5 = """
for _,v in pairs(game.ReplicatedStorage:GetChildren())do v:Destroy()end
local sh=Instance.new("Folder",game.ReplicatedStorage)sh.Name="Shared"
local ev=Instance.new("Folder",game.ReplicatedStorage)ev.Name="Events"
for _,n in ipairs({"HitEvent","KillEvent","DamageEvent","HitMarkerEvent"})do Instance.new("RemoteEvent",ev).Name=n end
local wd=Instance.new("ModuleScript",sh)wd.Name="WeaponData"
wd.Source=[[local W={
{Name="M4A1",Cat="AR",Key=1,Dmg=28,HM=2.5,FR=0.09,MS=30,RL=2.2,Sp=0.02,ASp=0.007,Rec=0.3,Rng=350,Auto=true},
{Name="AK-47",Cat="AR",Key=2,Dmg=32,HM=2.5,FR=0.11,MS=30,RL=2.5,Sp=0.03,ASp=0.012,Rec=0.45,Rng=300,Auto=true},
{Name="SCAR-H",Cat="AR",Key=3,Dmg=38,HM=2.5,FR=0.1,MS=20,RL=2.6,Sp=0.022,ASp=0.009,Rec=0.4,Rng=400,Auto=true},
{Name="ACR 6.8",Cat="AR",Key=4,Dmg=30,HM=2.5,FR=0.075,MS=30,RL=2.0,Sp=0.015,ASp=0.005,Rec=0.25,Rng=380,Auto=true},
{Name="MP7",Cat="SMG",Key=5,Dmg=22,HM=2,FR=0.06,MS=40,RL=1.8,Sp=0.03,ASp=0.012,Rec=0.12,Rng=140,Auto=true},
{Name="MP5",Cat="SMG",Key=6,Dmg=21,HM=2,FR=0.07,MS=30,RL=1.7,Sp=0.032,ASp=0.014,Rec=0.15,Rng=150,Auto=true},
{Name="AWP",Cat="Sniper",Key=7,Dmg=120,HM=3,FR=1.5,MS=10,RL=3.5,Sp=0.001,ASp=0,Rec=2.5,Rng=900,Auto=false,Zoom=8},
{Name="Intervention",Cat="Sniper",Key=8,Dmg=98,HM=3,FR=1.2,MS=5,RL=3.0,Sp=0.002,ASp=0,Rec=3.0,Rng=850,Auto=false,Zoom=10},
{Name="SPAS-12",Cat="Shotgun",Key=9,Dmg=18,HM=1.5,FR=0.85,MS=8,RL=3.0,Sp=0.09,ASp=0.07,Rec=1.5,Rng=45,Auto=false,Pel=8},
{Name="RPG-7",Cat="Launcher",Key=0,Dmg=250,HM=1,FR=2.5,MS=1,RL=4.5,Sp=0.01,ASp=0.005,Rec=3.5,Rng=250,Auto=false,Expl=true,Blast=25},
}return W]]
print("WeaponData created with 10 weapons")
"""
inject_code(code5, hwnd)
print(" Weapons OK")
# Step 6: Game Server Script
print("[6/8] Creating game server + enemy AI...")
code6 = """
for _,v in pairs(game.ServerScriptService:GetChildren())do v:Destroy()end
local s=Instance.new("Script",game.ServerScriptService)s.Name="GameServer"
s.Source=[[
local RS=game:GetService("ReplicatedStorage")local P=game:GetService("Players")local D=game:GetService("Debris")
local E=RS:WaitForChild("Events")local HE=E.HitEvent KE=E.KillEvent DE=E.DamageEvent HME=E.HitMarkerEvent
P.PlayerAdded:Connect(function(pl)
local ls=Instance.new("Folder",pl)ls.Name="leaderstats"
local k=Instance.new("IntValue",ls)k.Name="Kills"k.Value=0
local d=Instance.new("IntValue",ls)d.Name="Deaths"d.Value=0
pl.CharacterAdded:Connect(function(c)local h=c:WaitForChild("Humanoid")h.MaxHealth=100 h.Health=100 h.WalkSpeed=20
h.Died:Connect(function()d.Value=d.Value+1 task.delay(4,function()if pl and pl.Parent then pl:LoadCharacter()end end)end)end)end)
HE.OnServerEvent:Connect(function(pl,hp,dmg,hs)
if hp and hp.Parent and hp.Parent:FindFirstChild("Humanoid")then local hm=hp.Parent.Humanoid
if hm and hm.Health>0 then local d=hs and dmg*2.5 or dmg hm:TakeDamage(d)HME:FireClient(pl,hs)
if hm.Health<=0 then KE:FireClient(pl,"Enemy")pl.leaderstats.Kills.Value=pl.leaderstats.Kills.Value+1 end end end end)
local SP={Vector3.new(-180,3,-180),Vector3.new(180,3,-180),Vector3.new(-180,3,180),Vector3.new(180,3,180),Vector3.new(0,3,-200),Vector3.new(0,3,200),Vector3.new(-200,3,0),Vector3.new(200,3,0),Vector3.new(-120,3,-120),Vector3.new(120,3,120),Vector3.new(0,3,0),Vector3.new(-60,3,60)}
local function mkE(sp)
local m=Instance.new("Model",workspace)m.Name="EnemyBot"
local t=Instance.new("Part",m)t.Name="Torso"t.Size=Vector3.new(3,3,2)t.Position=sp t.BrickColor=BrickColor.new("Dark olive green")t.Material=Enum.Material.Plastic
local h=Instance.new("Part",m)h.Name="Head"h.Size=Vector3.new(2,2,2)h.Position=sp+Vector3.new(0,2.5,0)h.BrickColor=BrickColor.new("Medium stone grey")
local ll=Instance.new("Part",m)ll.Name="Left Leg"ll.Size=Vector3.new(1,3,1)ll.Position=sp+Vector3.new(-.75,-2.5,0)ll.BrickColor=BrickColor.new("Dark olive green")
local rl=Instance.new("Part",m)rl.Name="Right Leg"rl.Size=Vector3.new(1,3,1)rl.Position=sp+Vector3.new(.75,-2.5,0)rl.BrickColor=BrickColor.new("Dark olive green")
local la=Instance.new("Part",m)la.Name="Left Arm"la.Size=Vector3.new(1,3,1)la.Position=sp+Vector3.new(-2,0,0)la.BrickColor=BrickColor.new("Dark olive green")
local ra=Instance.new("Part",m)ra.Name="Right Arm"ra.Size=Vector3.new(1,3,1)ra.Position=sp+Vector3.new(2,0,0)ra.BrickColor=BrickColor.new("Dark olive green")
local hm=Instance.new("Humanoid",m)hm.MaxHealth=100 hm.Health=100 hm.WalkSpeed=14
local rp=Instance.new("Part",m)rp.Name="HumanoidRootPart"rp.Size=Vector3.new(2,2,1)rp.Position=sp rp.Transparency=1 rp.CanCollide=false
for _,a in ipairs({{rp,t},{t,h},{t,ll},{t,rl},{t,la},{t,ra}})do local w=Instance.new("Weld")w.Part0=a[1]w.Part1=a[2]w.Parent=a[1]end
local tp=SP[math.random(#SP)]local ls=0
hm.Died:Connect(function()task.delay(6,function()if m.Parent then m:Destroy()end end)task.delay(15,function()mkE(SP[math.random(#SP)])end)end)
spawn(function()while m.Parent and hm.Health>0 do task.wait(.4)local r=m:FindFirstChild("HumanoidRootPart")if r then hm:MoveTo(tp)if(r.Position-tp).Magnitude<6 then tp=SP[math.random(#SP)]end end end end)
spawn(function()while m.Parent and hm.Health>0 do task.wait(.25)local r=m:FindFirstChild("HumanoidRootPart")if not r then continue end for _,pl in ipairs(P:GetPlayers())do if pl.Character and pl.Character:FindFirstChild("HumanoidRootPart")then local pr=pl.Character.HumanoidRootPart local d=(pr.Position-r.Position).Magnitude if d<70 then hm:MoveTo(pr.Position)if d<50 and tick()-ls>1.2 then ls=tick()local ph=pl.Character:FindFirstChild("Humanoid")if ph and ph.Health>0 then ph:TakeDamage(6+math.random(8))DE:FireClient(pl,8)end end end end end end end)
end
for i=1,12 do task.delay(i*.4,function()mkE(SP[i])end)end
print("[GameServer] 12 enemy bots spawned!")
]]
print("Server script created")
"""
inject_code(code6, hwnd)
print(" Server OK")
# Step 7: HUD
print("[7/8] Creating HUD...")
code7 = """
for _,v in pairs(game.StarterGui:GetChildren())do v:Destroy()end
local h=Instance.new("ScreenGui",game.StarterGui)h.Name="COD_HUD"h.ResetOnSpawn=false
-- Crosshair
local c1=Instance.new("Frame",h)c1.Name="CH"c1.Size=UDim2.new(0,24,0,2)c1.Position=UDim2.new(0.5,-12,0.5,-1)c1.BackgroundColor3=Color3.new(1,1,1)c1.BorderSizePixel=0
local c2=Instance.new("Frame",h)c2.Name="CV"c2.Size=UDim2.new(0,2,0,24)c2.Position=UDim2.new(0.5,-1,0.5,-12)c2.BackgroundColor3=Color3.new(1,1,1)c2.BorderSizePixel=0
-- Dot
local cd=Instance.new("Frame",h)cd.Name="CDot"cd.Size=UDim2.new(0,4,0,4)cd.Position=UDim2.new(0.5,-2,0.5,-2)cd.BackgroundColor3=Color3.fromRGB(255,50,50)cd.BorderSizePixel=0
-- Health bar
local hf=Instance.new("Frame",h)hf.Name="HP_Frame"hf.Size=UDim2.new(0,260,0,32)hf.Position=UDim2.new(0,15,1,-55)hf.BackgroundColor3=Color3.fromRGB(0,0,0)hf.BackgroundTransparency=0.4 hf.BorderSizePixel=0
local hfl=Instance.new("Frame",hf)hfl.Name="Fill"hfl.Size=UDim2.new(1,0,1,0)hfl.BackgroundColor3=Color3.fromRGB(0,180,0)hfl.BorderSizePixel=0
local htx=Instance.new("TextLabel",hf)htx.Size=UDim2.new(1,0,1,0)htx.BackgroundTransparency=1 htx.TextColor3=Color3.new(1,1,1)htx.TextStrokeTransparency=0.5 htx.Font=Enum.Font.GothamBold htx.TextSize=16 htx.Text="100"
-- Ammo
local af=Instance.new("Frame",h)af.Name="Ammo_Frame"af.Size=UDim2.new(0,220,0,65)af.Position=UDim2.new(1,-235,1,-75)af.BackgroundTransparency=1
local at=Instance.new("TextLabel",af)at.Name="AmmoTxt"at.Size=UDim2.new(1,0,0.6,0)at.BackgroundTransparency=1 at.TextColor3=Color3.new(1,1,1)at.TextStrokeTransparency=0.5 at.Font=Enum.Font.GothamBold at.TextSize=30 at.TextXAlignment=Enum.TextXAlignment.Right at.Text="30 | 30"
local wn=Instance.new("TextLabel",af)wn.Name="WepName"wn.Size=UDim2.new(1,0,0.4,0)wn.Position=UDim2.new(0,0,.6,0)wn.BackgroundTransparency=1 wn.TextColor3=Color3.fromRGB(180,180,180)wn.Font=Enum.Font.Gotham wn.TextSize=13 wn.TextXAlignment=Enum.TextXAlignment.Right wn.Text="M4A1"
-- Score
local sf=Instance.new("Frame",h)sf.Size=UDim2.new(0,180,0,36)sf.Position=UDim2.new(0.5,-90,0,8)sf.BackgroundColor3=Color3.fromRGB(0,0,0)sf.BackgroundTransparency=0.5 sf.BorderSizePixel=0
local st=Instance.new("TextLabel",sf)st.Name="ScoreTxt"st.Size=UDim2.new(1,0,1,0)st.BackgroundTransparency=1 st.TextColor3=Color3.new(1,1,1)st.Font=Enum.Font.GothamBold st.TextSize=18 st.Text="KILLS: 0"
-- Kill feed
local kf=Instance.new("Frame",h)kf.Name="KillFeed"kf.Size=UDim2.new(0,240,0,180)kf.Position=UDim2.new(1,-250,0,8)kf.BackgroundTransparency=1
Instance.new("UIListLayout",kf)
-- Hit marker
local hm=Instance.new("Frame",h)hm.Name="HitMark"hm.Size=UDim2.new(0,30,0,30)hm.Position=UDim2.new(0.5,-15,0.5,-15)hm.BackgroundTransparency=1 hm.Visible=false
for _,a in ipairs({{15,0,45},{0,15,45}})do local f=Instance.new("Frame",hm)f.Size=UDim2.new(0,14,0,3)f.Position=UDim2.new(0,a[1],0,a[2])f.Rotation=45 f.BackgroundColor3=Color3.new(1,1,1)f.BorderSizePixel=0 end
-- Reload bar
local rb=Instance.new("Frame",h)rb.Name="ReloadBar"rb.Size=UDim2.new(0,180,0,5)rb.Position=UDim2.new(0.5,-90,1,-100)rb.BackgroundColor3=Color3.fromRGB(50,50,50)rb.BorderSizePixel=0 rb.Visible=false rb.BackgroundTransparency=0.3
local rf=Instance.new("Frame",rb)rf.Name="Fill"rf.Size=UDim2.new(0,0,1,0)rf.BackgroundColor3=Color3.fromRGB(255,200,0)rf.BorderSizePixel=0
-- Weapon slots bar
local wb=Instance.new("Frame",h)wb.Name="WepBar"wb.Size=UDim2.new(0,400,0,28)wb.Position=UDim2.new(0.5,-200,1,-28)wb.BackgroundColor3=Color3.fromRGB(10,10,10)wb.BackgroundTransparency=0.5 wb.BorderSizePixel=0
local slts={{"1-4 AR",100,150,255},{"5-6 SMG",100,255,100},{"7-8 SNIPER",255,80,80},{"9 SHOTGUN",255,200,50},{"0 RPG",255,130,50}}
for i,s in ipairs(slts)do local l=Instance.new("TextLabel",wb)l.Size=UDim2.new(1/#slts,0,1,0)l.Position=UDim2.new((i-1)/#slts,0,0,0)l.BackgroundColor3=Color3.fromRGB(s[2],s[3],s[4])l.BackgroundTransparency=0.6 l.TextColor3=Color3.new(1,1,1)l.Font=Enum.Font.GothamBold l.TextSize=10 l.Text=s[1]end
print("HUD created")
"""
inject_code(code7, hwnd)
print(" HUD OK")
# Step 8: Player scripts
print("[8/8] Creating player controller + weapon system...")
code8 = """
for _,v in pairs(game.StarterPlayer.StarterPlayerScripts:GetChildren())do v:Destroy()end
local ps=Instance.new("LocalScript",game.StarterPlayer.StarterPlayerScripts)ps.Name="PlayerSetup"
ps.Source=[[
local P=game:GetService("Players")local RS=game:GetService("RunService")local UI=game:GetService("UserInputService")local RepS=game:GetService("ReplicatedStorage")local TS=game:GetService("TweenService")
local pl=P.LocalPlayer cam=workspace.CurrentCamera
pl.CharacterAdded:Connect(function(c)
local h=c:WaitForChild("Humanoid")h.MaxHealth=100 h.Health=100 h.WalkSpeed=20
RS.RenderStepped:Connect(function()if h.Health>0 then cam.CameraType=Enum.CameraType.LockFirstPerson local hd=c:FindFirstChild("Head")if hd then cam.CFrame=hd.CFrame end end end)
local sp,cr=false,false
UI.InputBegan:Connect(function(i,g)if g then return end
if i.KeyCode==Enum.KeyCode.LeftShift then sp=true h.WalkSpeed=32 elseif i.KeyCode==Enum.KeyCode.LeftControl then cr=true h.WalkSpeed=10 end end)
UI.InputEnded:Connect(function(i)
if i.KeyCode==Enum.KeyCode.LeftShift then sp=false h.WalkSpeed=cr and 10 or 20 elseif i.KeyCode==Enum.KeyCode.LeftControl then cr=false h.WalkSpeed=sp and 32 or 20 end end)
end)
]]
local wc=Instance.new("LocalScript",game.StarterPlayer.StarterPlayerScripts)wc.Name="WeaponCtrl"
wc.Source=[[
local P=game:GetService("Players")local RS=game:GetService("RunService")local UI=game:GetService("UserInputService")local RepS=game:GetService("ReplicatedStorage")local TS=game:GetService("TweenService")local D=game:GetService("Debris")
local pl=P.LocalPlayer cam=workspace.CurrentCamera ms=pl:GetMouse()
local E=RepS:WaitForChild("Events")local HE=E.HitEvent KE=E.KillEvent HME=E.HitMarkerEvent
local WD=require(RepS:WaitForChild("Shared"):WaitForChild("WeaponData"))
local ci=1 ammo={} isR=false isA=false canS=true ro=0 so=0 kills=0 holdM=false
for i,w in ipairs(WD)do ammo[i]=w.MS end
local km={}for i,w in ipairs(WD)do km[tostring(w.Key)]=i end
local function hud()return pl.PlayerGui:FindFirstChild("COD_HUD")end
local function sw(idx)
if idx<1 or idx>#WD or isR then return end ci=idx local w=WD[ci]
isA=false cam.FieldOfView=70 ro=0 so=0
local h=hud()if h then h.Ammo_Frame.AmmoTxt.Text=ammo[ci].." | "..w.MS h.Ammo_Frame.WepName.Text=w.Name end end
UI.InputBegan:Connect(function(i,g)if g then return end
local kn=tostring(i.KeyCode.Value)if km[kn]then sw(km[kn])end
if i.UserInputType==Enum.UserInputType.MouseButton2 then local w=WD[ci]
if w.Zoom then isA=true cam.FieldOfView=70/w.Zoom else isA=true TS:Create(cam,TweenInfo.new(.15),{FieldOfView=50}):Play()end end
if i.KeyCode==Enum.KeyCode.R and not isR then local w=WD[ci]if ammo[ci]<w.MS then isR=true canS=false
local h=hud()if h then h.ReloadBar.Visible=true local f=h.ReloadBar.Fill f.Size=UDim2.new(0,0,1,0)TS:Create(f,TweenInfo.new(w.RL),{Size=UDim2.new(1,0,1,0)}):Play()end
task.delay(w.RL,function()ammo[ci]=w.MS isR=false canS=true local h=hud()if h then h.ReloadBar.Visible=false h.Ammo_Frame.AmmoTxt.Text=ammo[ci].." | "..w.MS end end)end end end)
UI.InputEnded:Connect(function(i)if i.UserInputType==Enum.UserInputType.MouseButton2 then isA=false TS:Create(cam,TweenInfo.new(.15),{FieldOfView=70}):Play()end end)
local function shoot()
local w=WD[ci]if not canS or isR or ammo[ci]<=0 then return end ammo[ci]=ammo[ci]-1
local h=hud()if h then h.Ammo_Frame.AmmoTxt.Text=ammo[ci].." | "..w.MS end
local c=pl.Character if not c or not c:FindFirstChild("Head")then return end
local hd=c.Head local sp=isA and w.ASp or w.Sp sp=sp+so
local dir=(ms.Hit.Position-hd.Position).Unit+Vector3.new((math.random()-.5)*sp,(math.random()-.5)*sp,(math.random()-.5)*sp).Unit
local rp=RaycastParams.new()rp.FilterType=Enum.RaycastFilterType.Exclude rp.FilterDescendantsInstances={c}
local pe=w.Pel or 1
for p=1,pe do local d=dir if pe>1 then d=dir+Vector3.new((math.random()-.5)*w.Sp*2,(math.random()-.5)*w.Sp*2,(math.random()-.5)*w.Sp*2).Unit end
local r=workspace:Raycast(hd.Position,d*w.Rng,rp)
if r then local hp=r.Instance local hs=hp.Name=="Head"
local tr=Instance.new("Part",workspace)tr.Size=Vector3.new(.1,.1,(r.Position-hd.Position).Magnitude)tr.CFrame=CFrame.lookAt(hd.Position,r.Position)*CFrame.new(0,0,-tr.Size.Z/2)tr.Anchored=true tr.CanCollide=false tr.BrickColor=BrickColor.new("New Yeller")tr.Material=Enum.Material.Neon tr.Transparency=.4 D:AddItem(tr,.12)
local sp2=Instance.new("Part",workspace)sp2.Size=Vector3.new(.3,.3,.3)sp2.Position=r.Position sp2.Anchored=true sp2.CanCollide=false sp2.BrickColor=BrickColor.new("Bright orange")sp2.Material=Enum.Material.Neon D:AddItem(sp2,.08)
if w.Expl then local ex=Instance.new("Explosion",workspace)ex.Position=r.Position ex.BlastRadius=w.Blast or 25 ex.BlastPressure=500000 end
if hp.Parent and hp.Parent:FindFirstChild("Humanoid")then local hm=hp.Parent.Humanoid
if hm and hm.Health>0 then local dm=hs and w.Dmg*w.HM or w.Dmg HE:FireServer(hp,dm,hs)
if hm.Health<=0 then kills=kills+1 local h=hud()if h then h.ScoreFrame.ScoreTxt.Text="KILLS: "..kills end KE:FireServer("Enemy")end end end end end
ro=math.min(ro+w.Rec,w.Rec*5)so=math.min(so+w.Sp*.5,w.Sp*3)
if ammo[ci]<=0 then task.delay(.2,function()if ammo[ci]<=0 and not isR then isR=true canS=false local ww=WD[ci]local h=hud()if h then h.ReloadBar.Visible=true local f=h.ReloadBar.Fill f.Size=UDim2.new(0,0,1,0)TS:Create(f,TweenInfo.new(ww.RL),{Size=UDim2.new(1,0,1,0)}):Play()end
task.delay(ww.RL,function()ammo[ci]=ww.MS isR=false canS=true local h=hud()if h then h.ReloadBar.Visible=false h.Ammo_Frame.AmmoTxt.Text=ammo[ci].." | "..ww.MS end end)end end)end end
UI.InputBegan:Connect(function(i,g)if g then return end
if i.UserInputType==Enum.UserInputType.MouseButton1 then holdM=true local w=WD[ci]
if w.Auto then spawn(function()while holdM and canS do shoot()task.wait(w.FR)end end)elseif w.Burst then for b=1,w.Burst do shoot()task.wait(w.FR)end else shoot()end end end)
UI.InputEnded:Connect(function(i)if i.UserInputType==Enum.UserInputType.MouseButton1 then holdM=false end end)
RS.RenderStepped:Connect(function()ro=math.max(ro-.12,0)so=math.max(so-.008,0)end)
sw(1)print("[WeaponCtrl] 10 COD weapons loaded!")
]]
print("Player scripts created - GAME READY!")
"""
inject_code(code8, hwnd)
print(" Player scripts OK")
# Final: Press F5 to start
print("\nStarting Play mode...")
time.sleep(1)
focus(hwnd)
user32.keybd_event(0x74, 0, 0, 0); time.sleep(0.05); user32.keybd_event(0x74, 0, 2, 0)
print("\n" + "=" * 55)
print(" CALL OF DUTY - ROBLOX EDITION")
print(" 10 Weapons | 12 Enemy Bots | Urban Map")
print("=" * 55)
print(" CONTROLS:")
print(" WASD = Move LMB = Shoot RMB = ADS/Scope")
print(" Shift = Sprint Ctrl = Crouch R = Reload")
print("")
print(" WEAPONS:")
print(" 1 = M4A1 2 = AK-47 3 = SCAR-H")
print(" 4 = ACR 6.8 5 = MP7 6 = MP5")
print(" 7 = AWP 8 = Intervention 9 = SPAS-12")
print(" 0 = RPG-7")
print("=" * 55)

214
inject_bg.py Normal file
View File

@@ -0,0 +1,214 @@
"""
Background injection into Roblox Studio using SendMessage/PostMessage.
Works even when Studio is minimized or behind other windows.
Finds the command bar child control and sends text directly to it.
"""
import ctypes, ctypes.wintypes, subprocess, time, sys, os
user32 = ctypes.windll.user32
WM_SETTEXT = 0x000C
WM_KEYDOWN = 0x0100
WM_KEYUP = 0x0101
WM_CHAR = 0x0102
EM_GETLINECOUNT = 0x00BA
EM_LINELENGTH = 0x00C1
def find_studio():
target = [None]
def cb(hwnd, _):
l = user32.GetWindowTextLengthW(hwnd)
if l > 0:
buf = ctypes.create_unicode_buffer(l + 1)
user32.GetWindowTextW(hwnd, buf, l + 1)
if "Roblox Studio" in buf.value:
target[0] = hwnd
return False
return True
WNDENUMPROC = ctypes.WINFUNCTYPE(ctypes.c_bool, ctypes.wintypes.HWND, ctypes.wintypes.LPARAM)
user32.EnumWindows(WNDENUMPROC(cb), 0)
return target[0]
def find_command_bar(parent_hwnd):
"""Find the command bar edit control inside Studio."""
result = [None]
WNDENUMPROC = ctypes.WINFUNCTYPE(ctypes.c_bool, ctypes.wintypes.HWND, ctypes.wintypes.LPARAM)
def enum_children(hwnd, _):
# Check class name - Roblox command bar is typically an edit control
buf = ctypes.create_unicode_buffer(256)
user32.GetClassNameW(hwnd, buf, 256)
class_name = buf.value
# Get control text
l = user32.GetWindowTextLengthW(hwnd)
if l > 0:
tbuf = ctypes.create_unicode_buffer(l + 1)
user32.GetWindowTextW(hwnd, tbuf, l + 1)
# Look for edit controls or text input controls
# Roblox Studio uses WPF which hosts Win32 controls
rect = ctypes.wintypes.RECT()
user32.GetWindowRect(hwnd, ctypes.byref(rect))
h = rect.bottom - rect.top
# Command bar is a thin single-line edit at the bottom
if class_name in ("Edit", "TextBox", "WindowsForms10.Edit", "WpfTextEdit"):
if h > 10 and h < 60:
result[0] = hwnd
return False
# Recurse into children
user32.EnumChildWindows(hwnd, WNDENUMPROC(enum_children), 0)
return True
user32.EnumChildWindows(parent_hwnd, WNDENUMPROC(enum_children), 0)
return result[0]
def find_all_children(parent_hwnd):
"""List all child windows for debugging."""
children = []
WNDENUMPROC = ctypes.WINFUNCTYPE(ctypes.c_bool, ctypes.wintypes.HWND, ctypes.wintypes.LPARAM)
def enum_children(hwnd, _):
buf = ctypes.create_unicode_buffer(256)
user32.GetClassNameW(hwnd, buf, 256)
class_name = buf.value
l = user32.GetWindowTextLengthW(hwnd)
text = ""
if l > 0:
tbuf = ctypes.create_unicode_buffer(l + 1)
user32.GetWindowTextW(hwnd, tbuf, l + 1)
text = tbuf.value
rect = ctypes.wintypes.RECT()
user32.GetWindowRect(hwnd, ctypes.byref(rect))
w = rect.right - rect.left
h = rect.bottom - rect.top
visible = user32.IsWindowVisible(hwnd)
enabled = user32.IsWindowEnabled(hwnd)
children.append({
'hwnd': hwnd,
'class': class_name,
'text': text[:50],
'size': f"{w}x{h}",
'pos': f"({rect.left},{rect.top})",
'visible': visible,
'enabled': enabled
})
return True
user32.EnumChildWindows(parent_hwnd, WNDENUMPROC(enum_children), 0)
return children
def inject_background(code, target_hwnd):
"""Inject Lua code into a specific child control using SendMessage."""
# Put code on clipboard
tmp = os.path.join(os.environ["TEMP"], "rbx.lua")
with open(tmp, "w", encoding="utf-8") as f:
f.write(code)
subprocess.run(["powershell", "-Command", f"Get-Content '{tmp}' -Raw | Set-Clipboard"],
capture_output=True, timeout=10)
time.sleep(0.2)
# Send Ctrl+A (select all) then Ctrl+V (paste) then Enter via PostMessage
# PostMessage works on background windows
VK_CONTROL = 0x11
VK_A = 0x41
VK_V = 0x56
VK_RETURN = 0x0D
# Select all: Ctrl+A
user32.PostMessageW(target_hwnd, WM_KEYDOWN, VK_CONTROL, 0)
user32.PostMessageW(target_hwnd, WM_KEYDOWN, VK_A, 0)
time.sleep(0.02)
user32.PostMessageW(target_hwnd, WM_KEYUP, VK_A, 0)
user32.PostMessageW(target_hwnd, WM_KEYUP, VK_CONTROL, 0)
time.sleep(0.05)
# Paste: Ctrl+V
user32.PostMessageW(target_hwnd, WM_KEYDOWN, VK_CONTROL, 0)
user32.PostMessageW(target_hwnd, WM_KEYDOWN, VK_V, 0)
time.sleep(0.02)
user32.PostMessageW(target_hwnd, WM_KEYUP, VK_V, 0)
user32.PostMessageW(target_hwnd, WM_KEYUP, VK_CONTROL, 0)
time.sleep(0.5)
# Execute: Enter
user32.PostMessageW(target_hwnd, WM_KEYDOWN, VK_RETURN, 0)
time.sleep(0.02)
user32.PostMessageW(target_hwnd, WM_KEYUP, VK_RETURN, 0)
time.sleep(2)
# ═══════════════════════════════════════
# MAIN
# ═══════════════════════════════════════
hwnd = find_studio()
if not hwnd:
print("ERROR: Roblox Studio not found!")
sys.exit(1)
print(f"Studio window: {hwnd}")
# List all child windows to find command bar
print("\nSearching for command bar control...")
children = find_all_children(hwnd)
# Filter for likely candidates: visible, enabled, small height (thin bar), near bottom
print(f"Found {len(children)} child windows")
# Get main window rect
main_rect = ctypes.wintypes.RECT()
user32.GetWindowRect(hwnd, ctypes.byref(main_rect))
main_bottom = main_rect.bottom
main_top = main_rect.top
# Find candidates near bottom of window, visible, reasonable size
candidates = []
for c in children:
if not c['visible']:
continue
try:
h = int(c['size'].split('x')[1])
w = int(c['size'].split('x')[0])
except:
continue
if h < 5 or h > 80:
continue
if w < 100:
continue
# Parse position
pos = c['pos'].strip('()')
try:
y = int(pos.split(',')[1])
except:
continue
# Check if near bottom of main window
if y > main_bottom - 100:
candidates.append(c)
print(f" CANDIDATE: hwnd={c['hwnd']} class={c['class']} text='{c['text']}' size={c['size']} pos={c['pos']}")
if not candidates:
print("\nNo command bar candidates found. Listing ALL visible children near bottom:")
for c in children:
if not c['visible']:
continue
pos = c['pos'].strip('()')
try:
y = int(pos.split(',')[1])
except:
continue
if y > main_bottom - 150:
print(f" hwnd={c['hwnd']} class={c['class']} text='{c['text']}' size={c['size']} pos={c['pos']}")
# Try to test each candidate with a simple print
test_code = 'print("BG_INJECT_OK")'
print(f"\nTesting candidates with: {test_code}")
for c in candidates:
target = c['hwnd']
print(f"\n Trying hwnd={target} class={c['class']}...")
inject_background(test_code, target)
print(f" Sent to {target}. Check Studio Output for 'BG_INJECT_OK'")

103
inject_bg2.py Normal file
View File

@@ -0,0 +1,103 @@
"""
Background injection v2 - PostMessage to main window.
Roblox Studio uses WPF (no standard child controls).
We send keystrokes via PostMessage to the main window handle.
This works even when Studio is minimized or behind other windows.
"""
import ctypes, ctypes.wintypes, subprocess, time, sys, os
user32 = ctypes.windll.user32
WM_KEYDOWN = 0x0100
WM_KEYUP = 0x0101
WM_CHAR = 0x0102
WM_PASTE = 0x0302
def find_studio():
target = [None]
def cb(hwnd, _):
l = user32.GetWindowTextLengthW(hwnd)
if l > 0:
buf = ctypes.create_unicode_buffer(l + 1)
user32.GetWindowTextW(hwnd, buf, l + 1)
if "Roblox Studio" in buf.value:
target[0] = hwnd
return False
return True
WNDENUMPROC = ctypes.WINFUNCTYPE(ctypes.c_bool, ctypes.wintypes.HWND, ctypes.wintypes.LPARAM)
user32.EnumWindows(WNDENUMPROC(cb), 0)
return target[0]
def post_key(hwnd, vk, shift=False, ctrl=False):
"""Send a key press/release via PostMessage to background window."""
if ctrl:
user32.PostMessageW(hwnd, WM_KEYDOWN, 0x11, 0)
if shift:
user32.PostMessageW(hwnd, WM_KEYDOWN, 0x10, 0)
# Key down
scan = ctypes.windll.user32.MapVirtualKeyW(vk, 0)
lparam_down = (scan << 16) | 1
user32.PostMessageW(hwnd, WM_KEYDOWN, vk, lparam_down)
time.sleep(0.01)
# Key up
lparam_up = (scan << 16) | 1 | (1 << 30) | (1 << 31)
user32.PostMessageW(hwnd, WM_KEYUP, vk, lparam_up)
time.sleep(0.01)
if ctrl:
user32.PostMessageW(hwnd, WM_KEYUP, 0x11, 0)
if shift:
user32.PostMessageW(hwnd, WM_KEYUP, 0x10, 0)
def paste_and_run(hwnd, code):
"""Copy code to clipboard, then send Ctrl+A, Ctrl+V, Enter via PostMessage."""
tmp = os.path.join(os.environ["TEMP"], "rbx.lua")
with open(tmp, "w", encoding="utf-8") as f:
f.write(code)
subprocess.run(["powershell", "-Command", f"Get-Content '{tmp}' -Raw | Set-Clipboard"],
capture_output=True, timeout=10)
time.sleep(0.3)
# Select all: Ctrl+A
user32.PostMessageW(hwnd, WM_KEYDOWN, 0x11, 0) # Ctrl down
time.sleep(0.02)
scan_a = user32.MapVirtualKeyW(0x41, 0)
user32.PostMessageW(hwnd, WM_KEYDOWN, 0x41, (scan_a << 16) | 1)
time.sleep(0.02)
user32.PostMessageW(hwnd, WM_KEYUP, 0x41, (scan_a << 16) | 1 | (1 << 30) | (1 << 31))
time.sleep(0.02)
user32.PostMessageW(hwnd, WM_KEYUP, 0x11, 0) # Ctrl up
time.sleep(0.1)
# Paste: Ctrl+V
user32.PostMessageW(hwnd, WM_KEYDOWN, 0x11, 0)
time.sleep(0.02)
scan_v = user32.MapVirtualKeyW(0x56, 0)
user32.PostMessageW(hwnd, WM_KEYDOWN, 0x56, (scan_v << 16) | 1)
time.sleep(0.02)
user32.PostMessageW(hwnd, WM_KEYUP, 0x56, (scan_v << 16) | 1 | (1 << 30) | (1 << 31))
time.sleep(0.02)
user32.PostMessageW(hwnd, WM_KEYUP, 0x11, 0)
time.sleep(0.8)
# Enter to execute
scan_enter = user32.MapVirtualKeyW(0x0D, 0)
user32.PostMessageW(hwnd, WM_KEYDOWN, 0x0D, (scan_enter << 16) | 1)
time.sleep(0.02)
user32.PostMessageW(hwnd, WM_KEYUP, 0x0D, (scan_enter << 16) | 1 | (1 << 30) | (1 << 31))
time.sleep(2)
# ═══════════════════════════════════════
hwnd = find_studio()
if not hwnd:
print("ERROR: Roblox Studio not found!")
sys.exit(1)
print(f"Studio: {hwnd}")
state = "minimized" if user32.IsIconic(hwnd) else ("background" if user32.GetForegroundWindow() != hwnd else "foreground")
print(f"Window state: {state}")
# Test with simple code
print("\nTest: sending print('BG_TEST_OK') via PostMessage...")
paste_and_run(hwnd, """print("BG_TEST_OK - BACKGROUND INJECTION WORKS!")""")
print("Sent! Check Studio Output window (F9) for the message.")
print("\nNOTE: If nothing appeared, the command bar needs focus first.")
print("Alternative: bring Studio to front briefly, inject, then let it go to background.")

208
inject_cod_final.py Normal file
View File

@@ -0,0 +1,208 @@
"""
Fast COD game injection - command bar is already focused.
Uses paste for speed. Each step is a separate injection.
"""
import ctypes, ctypes.wintypes, subprocess, time, sys, os
user32 = ctypes.windll.user32
def key_down(vk): user32.keybd_event(vk, 0, 0, 0)
def key_up(vk): user32.keybd_event(vk, 0, 2, 0)
def press(vk): key_down(vk); time.sleep(0.02); key_up(vk)
def paste_execute(code):
tmp = os.path.join(os.environ["TEMP"], "rbx.lua")
with open(tmp, "w", encoding="utf-8") as f:
f.write(code)
subprocess.run(["powershell", "-Command", f"Get-Content '{tmp}' -Raw | Set-Clipboard"], capture_output=True, timeout=10)
time.sleep(0.2)
# Select all
key_down(0x11); key_down(0x41); time.sleep(0.02); key_up(0x41); key_up(0x11)
time.sleep(0.05)
# Paste
key_down(0x11); key_down(0x56); time.sleep(0.02); key_up(0x56); key_up(0x11)
time.sleep(0.8)
# Execute
press(0x0D)
time.sleep(2)
# Bring Studio to front
def find_studio():
target = [None]
def cb(hwnd, _):
l = user32.GetWindowTextLengthW(hwnd)
if l > 0:
buf = ctypes.create_unicode_buffer(l + 1)
user32.GetWindowTextW(hwnd, buf, l + 1)
if "Roblox Studio" in buf.value:
target[0] = hwnd
return False
return True
WNDENUMPROC = ctypes.WINFUNCTYPE(ctypes.c_bool, ctypes.wintypes.HWND, ctypes.wintypes.LPARAM)
user32.EnumWindows(WNDENUMPROC(cb), 0)
return target[0]
hwnd = find_studio()
if not hwnd:
print("Studio not found!"); sys.exit(1)
user32.ShowWindow(hwnd, 9); time.sleep(0.3)
user32.SetForegroundWindow(hwnd); time.sleep(0.3)
# ============ STEP 1: Clean + Ground + Lighting ============
print("[1/7] Ground + lighting...")
paste_execute("""for _,v in pairs(workspace:GetChildren()) do if v:IsA("Model")or v:IsA("Part")or v:IsA("Folder")then if v.Name~="Camera"and v.Name~="Terrain"then v:Destroy()end end end
for _,v in pairs(game.ServerScriptService:GetChildren())do v:Destroy()end
for _,v in pairs(game.StarterGui:GetChildren())do v:Destroy()end
for _,v in pairs(game.StarterPlayer.StarterPlayerScripts:GetChildren())do v:Destroy()end
for _,v in pairs(game.ReplicatedStorage:GetChildren())do v:Destroy()end
wait(0.2)
local g=Instance.new("Part",workspace)g.Name="Ground"g.Size=Vector3.new(500,2,500)g.Position=Vector3.new(0,-1,0)g.Anchored=true g.BrickColor=BrickColor.new("Dark stone grey")g.Material=Enum.Material.Asphalt
local L=game:GetService("Lighting")L.ClockTime=6 L.Brightness=0.3 L.FogEnd=500 L.FogStart=100 L.Ambient=Color3.fromRGB(50,50,70) L.OutdoorAmbient=Color3.fromRGB(40,40,60)
print("STEP1 DONE")""")
# ============ STEP 2: Buildings + Cover ============
print("[2/7] Buildings + cover...")
paste_execute("""local blds={{-80,10,-100,35,22,28},{90,10,-70,28,18,32},{-50,11,80,40,24,22},{100,9,90,25,16,30},{0,13,-160,32,26,32},{-130,10,0,22,20,22},{130,10,-30,26,20,26}}
for i,b in ipairs(blds)do local m=Instance.new("Model",workspace)m.Name="Building"..i local p=Instance.new("Part",m)p.Size=Vector3.new(b[4],b[5],b[6])p.Position=Vector3.new(b[1],b[2],b[3])p.Anchored=true p.BrickColor=BrickColor.new(i%2==0 and"Medium stone grey"or"Brown")p.Material=Enum.Material.Brick end
for i=1,30 do local x,z=math.random(-200,200),math.random(-200,200)local p=Instance.new("Part",workspace)p.Anchored=true p.Name="Cover"..i if i%3==0 then p.Size=Vector3.new(2,4,2)p.Position=Vector3.new(x,2,z)p.BrickColor=BrickColor.new("Reddish brown")p.Material=Enum.Material.Metal p.Shape=Enum.PartType.Cylinder elseif i%3==1 then p.Size=Vector3.new(4,4,4)p.Position=Vector3.new(x,2,z)p.BrickColor=BrickColor.new("Brown")p.Material=Enum.Material.Wood else p.Size=Vector3.new(7,2.5,3)p.Position=Vector3.new(x,1.25,z)p.BrickColor=BrickColor.new("Brick yellow")p.Material=Enum.Material.Sand end end
for i=1,4 do local x,z=({-180,-180,180,180})[i],({-180,180,-180,180})[i]local t=Instance.new("Model",workspace)t.Name="Tower"..i for _,o in ipairs({{-2,0,-2},{2,0,-2},{-2,0,2},{2,0,2}})do local l=Instance.new("Part",t)l.Size=Vector3.new(1,18,1)l.Position=Vector3.new(x+o[1],9,z+o[2])l.Anchored=true l.BrickColor=BrickColor.new("Dark stone grey")end local pl=Instance.new("Part",t)pl.Size=Vector3.new(8,1,8)pl.Position=Vector3.new(x,18,z)pl.Anchored=true pl.BrickColor=BrickColor.new("Brown")pl.Material=Enum.Material.Wood end
print("STEP2 DONE")""")
# ============ STEP 3: WeaponData + Events ============
print("[3/7] Weapons + events...")
paste_execute("""local sh=Instance.new("Folder",game.ReplicatedStorage)sh.Name="Shared"
local ev=Instance.new("Folder",game.ReplicatedStorage)ev.Name="Events"
for _,n in ipairs({"HitEvent","KillEvent","DamageEvent","HitMarkerEvent"})do Instance.new("RemoteEvent",ev).Name=n end
local wd=Instance.new("ModuleScript",sh)wd.Name="WeaponData"
wd.Source=[[local W={n="M4A1",d=28,h=2.5,f=0.09,m=30,r=2.2,s=0.02,a=0.007,rc=0.3,rng=350,auto=true},{n="AK-47",d=32,h=2.5,f=0.11,m=30,r=2.5,s=0.03,a=0.012,rc=0.45,rng=300,auto=true},{n="SCAR-H",d=38,h=2.5,f=0.1,m=20,r=2.6,s=0.022,a=0.009,rc=0.4,rng=400,auto=true},{n="ACR 6.8",d=30,h=2.5,f=0.075,m=30,r=2,s=0.015,a=0.005,rc=0.25,rng=380,auto=true},{n="MP7",d=22,h=2,f=0.06,m=40,r=1.8,s=0.03,a=0.012,rc=0.12,rng=140,auto=true},{n="MP5",d=21,h=2,f=0.07,m=30,r=1.7,s=0.032,a=0.014,rc=0.15,rng=150,auto=true},{n="AWP",d=120,h=3,f=1.5,m=10,r=3.5,s=0.001,a=0,rc=2.5,rng=900,auto=false,zm=8},{n="Intervention",d=98,h=3,f=1.2,m=5,r=3,s=0.002,a=0,rc=3,rng=850,auto=false,zm=10},{n="SPAS-12",d=18,h=1.5,f=0.85,m=8,r=3,s=0.09,a=0.07,rc=1.5,rng=45,auto=false,pel=8},{n="RPG-7",d=250,h=1,f=2.5,m=1,r=4.5,s=0.01,a=0.005,rc=3.5,rng=250,auto=false,expl=true,bl=25},}return W]]
print("STEP3 DONE")""")
# ============ STEP 4: Game Server + Enemy AI ============
print("[4/7] Game server + enemy AI...")
paste_execute("""local s=Instance.new("Script",game.ServerScriptService)s.Name="GameServer"
s.Source=[[
local RS=game.ReplicatedStorage local P=game.Players local D=game.Debris
local E=RS:WaitForChild("Events") local HE=E.HitEvent KE=E.KillEvent DE=E.DamageEvent HME=E.HitMarkerEvent
P.PlayerAdded:Connect(function(pl)
local ls=Instance.new("Folder",pl)ls.Name="leaderstats"
local k=Instance.new("IntValue",ls)k.Name="Kills"k.Value=0
local d=Instance.new("IntValue",ls)d.Name="Deaths"d.Value=0
pl.CharacterAdded:Connect(function(c)local h=c:WaitForChild("Humanoid")h.MaxHealth=100 h.Health=100 h.WalkSpeed=20
h.Died:Connect(function()d.Value=d.Value+1 task.delay(4,function()if pl and pl.Parent then pl:LoadCharacter()end end)end)end)end)
HE.OnServerEvent:Connect(function(pl,hp,dmg,hs)
if hp and hp.Parent and hp.Parent:FindFirstChild("Humanoid")then local hm=hp.Parent.Humanoid
if hm and hm.Health>0 then local d=hs and dmg*2.5 or dmg hm:TakeDamage(d)HME:FireClient(pl,hs)
if hm.Health<=0 then KE:FireClient(pl,"Enemy")pl.leaderstats.Kills.Value=pl.leaderstats.Kills.Value+1 end end end end)
local SP={Vector3.new(-180,3,-180),Vector3.new(180,3,-180),Vector3.new(-180,3,180),Vector3.new(180,3,180),Vector3.new(0,3,-200),Vector3.new(0,3,200),Vector3.new(-200,3,0),Vector3.new(200,3,0),Vector3.new(-120,3,-120),Vector3.new(120,3,120),Vector3.new(0,3,0),Vector3.new(-60,3,60)}
local function mkE(sp)
local m=Instance.new("Model",workspace)m.Name="EnemyBot"
local t=Instance.new("Part",m)t.Name="Torso"t.Size=Vector3.new(3,3,2)t.Position=sp t.BrickColor=BrickColor.new("Dark olive green")t.Material=Enum.Material.Plastic
local hd=Instance.new("Part",m)hd.Name="Head"hd.Size=Vector3.new(2,2,2)hd.Position=sp+Vector3.new(0,2.5,0)hd.BrickColor=BrickColor.new("Medium stone grey")
for _,n in ipairs({"Left Leg","Right Leg","Left Arm","Right Arm"})do local p=Instance.new("Part",m)p.Name=n p.Size=Vector3.new(1,3,1)p.BrickColor=BrickColor.new("Dark olive green")end
m["Left Leg"].Position=sp+Vector3.new(-.75,-2.5,0)m["Right Leg"].Position=sp+Vector3.new(.75,-2.5,0)
m["Left Arm"].Position=sp+Vector3.new(-2,0,0)m["Right Arm"].Position=sp+Vector3.new(2,0,0)
local hm=Instance.new("Humanoid",m)hm.MaxHealth=100 hm.Health=100 hm.WalkSpeed=14
local rp=Instance.new("Part",m)rp.Name="HumanoidRootPart"rp.Size=Vector3.new(2,2,1)rp.Position=sp rp.Transparency=1 rp.CanCollide=false
for _,a in ipairs({{rp,t},{t,hd},{t,m["Left Leg"]},{t,m["Right Leg"]},{t,m["Left Arm"]},{t,m["Right Arm"]}})do local w=Instance.new("Weld")w.Part0=a[1]w.Part1=a[2]w.Parent=a[1]end
local tp=SP[math.random(#SP)]local ls=0
hm.Died:Connect(function()task.delay(6,function()if m.Parent then m:Destroy()end end)task.delay(15,function()mkE(SP[math.random(#SP)])end)end)
spawn(function()while m.Parent and hm.Health>0 do task.wait(.4)local r=m:FindFirstChild("HumanoidRootPart")if r then hm:MoveTo(tp)if(r.Position-tp).Magnitude<6 then tp=SP[math.random(#SP)]end end end end)
spawn(function()while m.Parent and hm.Health>0 do task.wait(.25)local r=m:FindFirstChild("HumanoidRootPart")if not r then continue end for _,pl in ipairs(P:GetPlayers())do if pl.Character and pl.Character:FindFirstChild("HumanoidRootPart")then local pr=pl.Character.HumanoidRootPart local d=(pr.Position-r.Position).Magnitude if d<70 then hm:MoveTo(pr.Position)if d<50 and tick()-ls>1.2 then ls=tick()local ph=pl.Character:FindFirstChild("Humanoid")if ph and ph.Health>0 then ph:TakeDamage(6+math.random(8))DE:FireClient(pl,8)end end end end end end end)
end
for i=1,12 do task.delay(i*.4,function()mkE(SP[i])end)end
]]
print("STEP4 DONE")""")
# ============ STEP 5: HUD ============
print("[5/7] HUD...")
paste_execute("""local h=Instance.new("ScreenGui",game.StarterGui)h.Name="COD_HUD"h.ResetOnSpawn=false
local c1=Instance.new("Frame",h)c1.Name="CH"c1.Size=UDim2.new(0,24,0,2)c1.Position=UDim2.new(0.5,-12,0.5,-1)c1.BackgroundColor3=Color3.new(1,1,1)c1.BorderSizePixel=0
local c2=Instance.new("Frame",h)c2.Name="CV"c2.Size=UDim2.new(0,2,0,24)c2.Position=UDim2.new(0.5,-1,0.5,-12)c2.BackgroundColor3=Color3.new(1,1,1)c2.BorderSizePixel=0
local cd=Instance.new("Frame",h)cd.Name="CDot"cd.Size=UDim2.new(0,4,0,4)cd.Position=UDim2.new(0.5,-2,0.5,-2)cd.BackgroundColor3=Color3.fromRGB(255,50,50)cd.BorderSizePixel=0
local hf=Instance.new("Frame",h)hf.Name="HP_Frame"hf.Size=UDim2.new(0,260,0,32)hf.Position=UDim2.new(0,15,1,-55)hf.BackgroundColor3=Color3.fromRGB(0,0,0)hf.BackgroundTransparency=0.4 hf.BorderSizePixel=0
local hfl=Instance.new("Frame",hf)hfl.Name="Fill"hfl.Size=UDim2.new(1,0,1,0)hfl.BackgroundColor3=Color3.fromRGB(0,180,0)hfl.BorderSizePixel=0
local htx=Instance.new("TextLabel",hf)htx.Size=UDim2.new(1,0,1,0)htx.BackgroundTransparency=1 htx.TextColor3=Color3.new(1,1,1)htx.TextStrokeTransparency=0.5 htx.Font=Enum.Font.GothamBold htx.TextSize=16 htx.Text="100"
local af=Instance.new("Frame",h)af.Name="Ammo_Frame"af.Size=UDim2.new(0,220,0,65)af.Position=UDim2.new(1,-235,1,-75)af.BackgroundTransparency=1
local at=Instance.new("TextLabel",af)at.Name="AmmoTxt"at.Size=UDim2.new(1,0,0.6,0)at.BackgroundTransparency=1 at.TextColor3=Color3.new(1,1,1)at.TextStrokeTransparency=0.5 at.Font=Enum.Font.GothamBold at.TextSize=30 at.TextXAlignment=Enum.TextXAlignment.Right at.Text="30 | 30"
local wn=Instance.new("TextLabel",af)wn.Name="WepName"wn.Size=UDim2.new(1,0,0.4,0)wn.Position=UDim2.new(0,0,.6,0)wn.BackgroundTransparency=1 wn.TextColor3=Color3.fromRGB(180,180,180)wn.Font=Enum.Font.Gotham wn.TextSize=13 wn.TextXAlignment=Enum.TextXAlignment.Right wn.Text="M4A1"
local sf=Instance.new("Frame",h)sf.Name="ScoreFrame"sf.Size=UDim2.new(0,180,0,36)sf.Position=UDim2.new(0.5,-90,0,8)sf.BackgroundColor3=Color3.fromRGB(0,0,0)sf.BackgroundTransparency=0.5 sf.BorderSizePixel=0
local st=Instance.new("TextLabel",sf)st.Name="ScoreTxt"st.Size=UDim2.new(1,0,1,0)st.BackgroundTransparency=1 st.TextColor3=Color3.new(1,1,1)st.Font=Enum.Font.GothamBold st.TextSize=18 st.Text="KILLS: 0"
local kf=Instance.new("Frame",h)kf.Name="KillFeed"kf.Size=UDim2.new(0,240,0,180)kf.Position=UDim2.new(1,-250,0,8)kf.BackgroundTransparency=1 Instance.new("UIListLayout",kf)
local hm=Instance.new("Frame",h)hm.Name="HitMark"hm.Size=UDim2.new(0,30,0,30)hm.Position=UDim2.new(0.5,-15,0.5,-15)hm.BackgroundTransparency=1 hm.Visible=false
for _,a in ipairs({{15,0,45},{0,15,45}})do local f=Instance.new("Frame",hm)f.Size=UDim2.new(0,14,0,3)f.Position=UDim2.new(0,a[1],0,a[2])f.Rotation=45 f.BackgroundColor3=Color3.new(1,1,1)f.BorderSizePixel=0 end
local rb=Instance.new("Frame",h)rb.Name="ReloadBar"rb.Size=UDim2.new(0,180,0,5)rb.Position=UDim2.new(0.5,-90,1,-100)rb.BackgroundColor3=Color3.fromRGB(50,50,50)rb.BorderSizePixel=0 rb.Visible=false rb.BackgroundTransparency=0.3
Instance.new("Frame",rb).Name="Fill"Instance.new("Frame",rb).Fill.Size=UDim2.new(0,0,1,0)Instance.new("Frame",rb).Fill.BackgroundColor3=Color3.fromRGB(255,200,0)
local wb=Instance.new("Frame",h)wb.Name="WepBar"wb.Size=UDim2.new(0,400,0,28)wb.Position=UDim2.new(0.5,-200,1,-28)wb.BackgroundColor3=Color3.fromRGB(10,10,10)wb.BackgroundTransparency=0.5 wb.BorderSizePixel=0
for i,s in ipairs({{"1-4 AR",100,150,255},{"5-6 SMG",100,255,100},{"7-8 SNIPER",255,80,80},{"9 SHOTGUN",255,200,50},{"0 RPG",255,130,50}})do local l=Instance.new("TextLabel",wb)l.Size=UDim2.new(0.2,0,1,0)l.Position=UDim2.new((i-1)*0.2,0,0,0)l.BackgroundColor3=Color3.fromRGB(s[2],s[3],s[4])l.BackgroundTransparency=0.6 l.TextColor3=Color3.new(1,1,1)l.Font=Enum.Font.GothamBold l.TextSize=10 l.Text=s[1]end
print("STEP5 DONE")""")
# ============ STEP 6: Player Setup ============
print("[6/7] Player setup...")
paste_execute("""local ps=Instance.new("LocalScript",game.StarterPlayer.StarterPlayerScripts)ps.Name="PlayerSetup"
ps.Source=[[local P=game.Players local RS=game.RunService local UI=game.UserInputService local pl=P.LocalPlayer cam=workspace.CurrentCamera
pl.CharacterAdded:Connect(function(c)local h=c:WaitForChild("Humanoid")h.MaxHealth=100 h.Health=100 h.WalkSpeed=20
RS.RenderStepped:Connect(function()if h.Health>0 then cam.CameraType=Enum.CameraType.LockFirstPerson local hd=c:FindFirstChild("Head")if hd then cam.CFrame=hd.CFrame end end end)
local sp,cr=false,false
UI.InputBegan:Connect(function(i,g)if g then return end if i.KeyCode==Enum.KeyCode.LeftShift then sp=true h.WalkSpeed=32 elseif i.KeyCode==Enum.KeyCode.LeftControl then cr=true h.WalkSpeed=10 end end)
UI.InputEnded:Connect(function(i)if i.KeyCode==Enum.KeyCode.LeftShift then sp=false h.WalkSpeed=cr and 10 or 20 elseif i.KeyCode==Enum.KeyCode.LeftControl then cr=false h.WalkSpeed=sp and 32 or 20 end end)end)
]]
print("STEP6 DONE")""")
# ============ STEP 7: Weapon Controller ============
print("[7/7] Weapon controller...")
paste_execute("""local wc=Instance.new("LocalScript",game.StarterPlayer.StarterPlayerScripts)wc.Name="WeaponCtrl"
wc.Source=[[
local P=game.Players local RS=game.RunService local UI=game.UserInputService local RepS=game.ReplicatedStorage local TS=game.TweenService local D=game.Debris
local pl=P.LocalPlayer cam=workspace.CurrentCamera ms=pl:GetMouse()
local E=RepS:WaitForChild("Events")local HE=E.HitEvent KE=E.KillEvent HME=E.HitMarkerEvent
local WD=require(RepS:WaitForChild("Shared"):WaitForChild("WeaponData"))
local ci=1 ammo={} isR=false isA=false canS=true ro=0 so=0 kills=0 holdM=false
for i,w in ipairs(WD)do ammo[i]=w.m end
local function hud()return pl.PlayerGui:FindFirstChild("COD_HUD")end
local function sw(idx)if idx<1 or idx>#WD or isR then return end ci=idx local w=WD[ci]isA=false cam.FieldOfView=70 ro=0 so=0 local h=hud()if h then h.Ammo_Frame.AmmoTxt.Text=ammo[ci].." | "..w.m h.Ammo_Frame.WepName.Text=w.n end end
UI.InputBegan:Connect(function(i,g)if g then return end
if i.KeyCode.Value>=48 and i.KeyCode.Value<=57 then local idx=i.KeyCode.Value-47 if idx>0 and idx<=10 then sw(idx==10 and 10 or idx)end end
if i.UserInputType==Enum.UserInputType.MouseButton2 then local w=WD[ci]if w.zm then isA=true cam.FieldOfView=70/w.zm else isA=true TS:Create(cam,TweenInfo.new(.15),{FieldOfView=50}):Play()end end
if i.KeyCode==Enum.KeyCode.R and not isR then local w=WD[ci]if ammo[ci]<w.m then isR=true canS=false local h=hud()if h then h.ReloadBar.Visible=true local f=h.ReloadBar.Fill f.Size=UDim2.new(0,0,1,0)TS:Create(f,TweenInfo.new(w.r),{Size=UDim2.new(1,0,1,0)}):Play()end task.delay(w.r,function()ammo[ci]=w.m isR=false canS=true local h=hud()if h then h.ReloadBar.Visible=false h.Ammo_Frame.AmmoTxt.Text=ammo[ci].." | "..w.m end end)end end end)
UI.InputEnded:Connect(function(i)if i.UserInputType==Enum.UserInputType.MouseButton2 then isA=false TS:Create(cam,TweenInfo.new(.15),{FieldOfView=70}):Play()end end)
local function shoot()
local w=WD[ci]if not canS or isR or ammo[ci]<=0 then return end ammo[ci]=ammo[ci]-1
local h=hud()if h then h.Ammo_Frame.AmmoTxt.Text=ammo[ci].." | "..w.m end
local c=pl.Character if not c or not c:FindFirstChild("Head")then return end
local hd=c.Head local sp=isA and w.a or w.s sp=sp+so
local dir=(ms.Hit.Position-hd.Position).Unit+Vector3.new((math.random()-.5)*sp,(math.random()-.5)*sp,(math.random()-.5)*sp).Unit
local rp=RaycastParams.new()rp.FilterType=Enum.RaycastFilterType.Exclude rp.FilterDescendantsInstances={c}
local pe=w.pel or 1
for p=1,pe do local d=dir if pe>1 then d=dir+Vector3.new((math.random()-.5)*w.s*2,(math.random()-.5)*w.s*2,(math.random()-.5)*w.s*2).Unit end
local r=workspace:Raycast(hd.Position,d*w.rng,rp)
if r then local hp=r.Instance local hs=hp.Name=="Head"
local tr=Instance.new("Part",workspace)tr.Size=Vector3.new(.1,.1,(r.Position-hd.Position).Magnitude)tr.CFrame=CFrame.lookAt(hd.Position,r.Position)*CFrame.new(0,0,-tr.Size.Z/2)tr.Anchored=true tr.CanCollide=false tr.BrickColor=BrickColor.new("New Yeller")tr.Material=Enum.Material.Neon tr.Transparency=.4 D:AddItem(tr,.12)
if w.expl then local ex=Instance.new("Explosion",workspace)ex.Position=r.Position ex.BlastRadius=w.bl or 25 ex.BlastPressure=500000 end
if hp.Parent and hp.Parent:FindFirstChild("Humanoid")then local hm=hp.Parent.Humanoid
if hm and hm.Health>0 then local dm=hs and w.d*w.h or w.d HE:FireServer(hp,dm,hs)
if hm.Health<=0 then kills=kills+1 local h=hud()if h then h.ScoreFrame.ScoreTxt.Text="KILLS: "..kills end KE:FireServer("Enemy")end end end end end
ro=math.min(ro+w.rc,w.rc*5)so=math.min(so+w.s*.5,w.s*3)
if ammo[ci]<=0 then task.delay(.2,function()if ammo[ci]<=0 and not isR then isR=true canS=false local ww=WD[ci]local h=hud()if h then h.ReloadBar.Visible=true local f=h.ReloadBar.Fill f.Size=UDim2.new(0,0,1,0)TS:Create(f,TweenInfo.new(ww.r),{Size=UDim2.new(1,0,1,0)}):Play()end task.delay(ww.r,function()ammo[ci]=ww.m isR=false canS=true local h=hud()if h then h.ReloadBar.Visible=false h.Ammo_Frame.AmmoTxt.Text=ammo[ci].." | "..ww.m end end)end end)end end
UI.InputBegan:Connect(function(i,g)if g then return end
if i.UserInputType==Enum.UserInputType.MouseButton1 then holdM=true local w=WD[ci]
if w.auto then spawn(function()while holdM and canS do shoot()task.wait(w.f)end end)else shoot()end end end)
UI.InputEnded:Connect(function(i)if i.UserInputType==Enum.UserInputType.MouseButton1 then holdM=false end end)
RS.RenderStepped:Connect(function()ro=math.max(ro-.12,0)so=math.max(so-.008,0)end)
sw(1)print("[WeaponCtrl] 10 COD weapons loaded!")
]]
print("STEP7 DONE - ALL INJECTED!")
""")
# ============ PRESS F5 ============
print("\nStarting Play mode (F5)...")
time.sleep(1)
press(0x74) # F5
print("\n" + "=" * 50)
print(" CALL OF DUTY - ROBLOX EDITION LOADED!")
print("=" * 50)
print(" WASD=Move LMB=Shoot RMB=ADS R=Reload")
print(" Shift=Sprint Ctrl=Crouch")
print(" 1=M4A1 2=AK-47 3=SCAR-H 4=ACR 5=MP7")
print(" 6=MP5 7=AWP 8=Intervention 9=SPAS 0=RPG")
print("=" * 50)

346
inject_gta_city.py Normal file
View File

@@ -0,0 +1,346 @@
"""
GTA City Expansion + Visible Weapons + Human Enemies
Inject into Roblox Studio command bar (must be pre-focused by user)
"""
import ctypes, ctypes.wintypes, subprocess, time, sys, os
user32 = ctypes.windll.user32
def key_down(vk): user32.keybd_event(vk, 0, 0, 0)
def key_up(vk): user32.keybd_event(vk, 0, 2, 0)
def press(vk): key_down(vk); time.sleep(0.02); key_up(vk)
def paste_execute(code):
tmp = os.path.join(os.environ["TEMP"], "rbx.lua")
with open(tmp, "w", encoding="utf-8") as f:
f.write(code)
subprocess.run(["powershell", "-Command", f"Get-Content '{tmp}' -Raw | Set-Clipboard"], capture_output=True, timeout=10)
time.sleep(0.2)
key_down(0x11); key_down(0x41); time.sleep(0.02); key_up(0x41); key_up(0x11)
time.sleep(0.05)
key_down(0x11); key_down(0x56); time.sleep(0.02); key_up(0x56); key_up(0x11)
time.sleep(0.8)
press(0x0D)
time.sleep(2.5)
hwnd = None
def find_studio():
global hwnd
target = [None]
def cb(h, _):
l = user32.GetWindowTextLengthW(h)
if l > 0:
buf = ctypes.create_unicode_buffer(l + 1)
user32.GetWindowTextW(h, buf, l + 1)
if "Roblox Studio" in buf.value:
target[0] = h
return False
return True
WNDENUMPROC = ctypes.WINFUNCTYPE(ctypes.c_bool, ctypes.wintypes.HWND, ctypes.wintypes.LPARAM)
user32.EnumWindows(WNDENUMPROC(cb), 0)
return target[0]
hwnd = find_studio()
if not hwnd:
print("Studio not found!"); sys.exit(1)
user32.ShowWindow(hwnd, 9); time.sleep(0.3)
user32.SetForegroundWindow(hwnd); time.sleep(0.3)
# ═══════ STEP 1: GTA City - Roads + Sidewalks ═══════
print("[1/6] GTA roads + sidewalks...")
paste_execute("""
-- Destroy old map parts, keep scripts
for _,v in pairs(workspace:GetChildren()) do
if v:IsA("Part") or v:IsA("Model") then
if v.Name~="Camera" and v.Name~="Terrain" and v.Name~="SpawnLocation" then
if v.Name:find("Building") or v.Name:find("Cover") or v.Name:find("Tower") or v.Name=="Ground" or v.Name:find("Boundary") then v:Destroy() end
end end end
wait(0.3)
-- New larger ground
local gnd=Instance.new("Part",workspace)gnd.Name="Ground"gnd.Size=Vector3.new(800,2,800)gnd.Position=Vector3.new(0,-1,0)gnd.Anchored=true gnd.BrickColor=BrickColor.new("Dark stone grey")gnd.Material=Enum.Material.Asphalt
-- Main roads (N-S and E-W)
local roadCol=BrickColor.new("Medium stone grey")
for _,r in ipairs({{0,0,800,20},{0,0,20,800}})do
local rd=Instance.new("Part",workspace)rd.Size=Vector3.new(r[3],0.5,r[4])rd.Position=Vector3.new(r[1],0.1,r[2])rd.Anchored=true rd.BrickColor=roadCol rd.Material=Enum.Material.SmoothPlastic rd.Name="Road"
end
-- Cross roads
for _,r in ipairs({{200,0,800,14},{-200,0,800,14},{0,200,14,800},{0,-200,14,800}})do
local rd=Instance.new("Part",workspace)rd.Size=Vector3.new(r[3],0.5,r[4])rd.Position=Vector3.new(r[1],0.1,r[2])rd.Anchored=true rd.BrickColor=roadCol rd.Material=Enum.Material.SmoothPlastic rd.Name="Road"
end
-- Road markings (yellow center lines)
for _,r in ipairs({{0,0,780,0.5},{0,0,0.5,780}})do
local ln=Instance.new("Part",workspace)ln.Size=Vector3.new(r[3],0.3,r[4])ln.Position=Vector3.new(r[1],0.35,r[2])ln.Anchored=true ln.BrickColor=BrickColor.new("Bright yellow")ln.Material=Enum.Material.Neon ln.Name="RoadLine"
end
-- Sidewalks along main roads
for _,s in ipairs({{12,0,800,8},{-12,0,800,8},{-12,0,8,800},{12,0,8,800}})do
local sw=Instance.new("Part",workspace)sw.Size=Vector3.new(s[3],0.8,s[4])sw.Position=Vector3.new(s[1],0.4,s[2])sw.Anchored=true sw.BrickColor=BrickColor.new("Brick yellow")sw.Material=Enum.Material.Pavement sw.Name="Sidewalk"
end
print("ROADS DONE")
""")
# ═══════ STEP 2: GTA City - Buildings with windows ═══════
print("[2/6] GTA buildings with windows...")
paste_execute("""
-- City buildings - various sizes and colors
local bData={
-- Downtown (center area)
{0,30,0,40,60,30,"Medium stone grey",true},
{-60,25,-50,30,50,25,"White",true},
{70,20,50,35,40,28,"Institutional white",true},
{-80,35,60,45,70,35,"Medium stone grey",true},
-- Commercial district
{-200,15,-80,30,30,25,"Reddish brown",false},
{-170,20,-30,28,40,22,"White",true},
{-230,18,60,32,36,28,"Medium stone grey",true},
{-180,22,120,26,44,20,"Brick yellow",false},
-- Residential
{200,12,-120,24,24,20,"Brick yellow",false},
{240,14,-60,22,28,18,"Brown",false},
{180,10,100,26,20,22,"Reddish brown",false},
{220,16,160,20,32,16,"White",false},
-- Industrial
{-300,18,-200,50,36,40,"Dark stone grey",false},
{-260,14,-150,40,28,35,"Medium stone grey",false},
{300,16,200,45,32,38,"Dark stone grey",false},
{280,12,260,38,24,30,"Dark stone grey",false},
-- Outskirts
{-350,10,-300,30,20,25,"Brown",false},
{350,8,300,28,16,22,"Brick yellow",false},
{-150,10,250,25,20,20,"Reddish brown",false},
{160,12,-250,22,24,18,"White",false},
}
for i,b in ipairs(bData)do
local m=Instance.new("Model",workspace)m.Name="CityBuilding"..i
-- Main structure
local p=Instance.new("Part",m)p.Name="Wall"p.Size=Vector3.new(b[4],b[5],b[6])p.Position=Vector3.new(b[1],b[2],b[3])p.Anchored=true p.BrickColor=BrickColor.new(b[7])p.Material=Enum.Material.Brick
-- Roof
local rf=Instance.new("Part",m)rf.Name="Roof"rf.Size=Vector3.new(b[4]+2,1,b[6]+2)rf.Position=Vector3.new(b[1],b[2]*2+0.5,b[3])rf.Anchored=true rf.BrickColor=BrickColor.new("Dark stone grey")rf.Material=Enum.Material.Metal
-- Windows (only for taller buildings)
if b[8]then
for floor=1,math.floor(b[5]/12)do
for wx=1,3 do
local win=Instance.new("Part",m)win.Name="Window_F"..floor.."_W"..wx
win.Size=Vector3.new(3,4,0.3)win.Position=Vector3.new(b[1]-b[4]/2+wx*b[4]/4,b[2]-b[5]/2+floor*12,b[3]+b[6]/2+0.2)
win.Anchored=true win.BrickColor=BrickColor.new("Pastel light blue")win.Material=Enum.Material.Glass win.Transparency=0.3
end
end
end
end
print("BUILDINGS DONE")
""")
# ═══════ STEP 3: GTA City - Street objects ═══════
print("[3/6] GTA street objects (lights, cars, props)...")
paste_execute("""
-- Street lights
for i=-350,350,50 do
for _,side in ipairs({1,-1})do
local pole=Instance.new("Part",workspace)pole.Name="StreetLight"pole.Size=Vector3.new(0.5,12,0.5)pole.Position=Vector3.new(i+side*15,6,side*15)pole.Anchored=true pole.BrickColor=BrickColor.new("Dark stone grey")pole.Material=Enum.Material.Metal
local bulb=Instance.new("Part",workspace)bulb.Name="LightBulb"bulb.Size=Vector3.new(2,1,2)bulb.Position=Vector3.new(i+side*15,12.5,side*15)bulb.Anchored=true bulb.BrickColor=BrickColor.new("New Yeller")bulb.Material=Enum.Material.Neon
local pl=Instance.new("PointLight",bulb)pl.Brightness=2 pl.Range=30 pl.Color=Color3.fromRGB(255,240,200)
end
end
-- Parked cars
local carColors={"Bright red","Bright blue","White","Black","Bright green","Bright yellow"}
for i=1,18 do
local cx,cz=math.random(-300,300),math.random(-300,300)
if math.abs(cx)<20 or math.abs(cz)<20 then cx=cx+30 end
local car=Instance.new("Model",workspace)car.Name="Car"..i
local body=Instance.new("Part",car)body.Name="Body"body.Size=Vector3.new(5,2,10)body.Position=Vector3.new(cx,1.5,cz)body.Anchored=true body.BrickColor=BrickColor.new(carColors[math.random(#carColors)])body.Material=Enum.Material.Plastic
local top=Instance.new("Part",car)top.Name="Roof"top.Size=Vector3.new(4,1.5,5)top.Position=Vector3.new(cx,3,cz-1)top.Anchored=true top.BrickColor=BrickColor.new("Glass")top.Material=Enum.Material.Glass top.Transparency=0.5
for _,wo in ipairs({{-2.5,0.8,-3},{2.5,0.8,-3},{-2.5,0.8,3},{2.5,0.8,3}})do
local wh=Instance.new("Part",car)wh.Name="Wheel"wh.Size=Vector3.new(1,2,2)wh.Position=Vector3.new(cx+wo[1],wo[2],cz+wo[3])wh.Anchored=true wh.BrickColor=BrickColor.new("Really black")wh.Material=Enum.Material.Slate
end
end
-- Traffic lights
for _,pos in ipairs({{20,0,20},{-20,0,-20},{20,0,-20},{-20,0,20}})do
local tl=Instance.new("Model",workspace)tl.Name="TrafficLight"
local pole=Instance.new("Part",tl)pole.Size=Vector3.new(0.5,10,0.5)pole.Position=Vector3.new(pos[1]+3,5,pos[3]+3)pole.Anchored=true pole.BrickColor=BrickColor.new("Dark stone grey")pole.Material=Enum.Material.Metal
local box=Instance.new("Part",tl)box.Size=Vector3.new(1,4,1)box.Position=Vector3.new(pos[1]+3,11,pos[3]+3)box.Anchored=true box.BrickColor=BrickColor.new("Dark stone grey")
local red=Instance.new("Part",tl)red.Size=Vector3.new(0.8,0.8,0.3)red.Position=Vector3.new(pos[1]+3,12.2,pos[3]+3.6)red.Anchored=true red.BrickColor=BrickColor.new("Bright red")red.Material=Enum.Material.Neon
local yel=Instance.new("Part",tl)yel.Size=Vector3.new(0.8,0.8,0.3)yel.Position=Vector3.new(pos[1]+3,11.2,pos[3]+3.6)yel.Anchored=true yel.BrickColor=BrickColor.new("Bright yellow")yel.Material=Enum.Material.Neon
local grn=Instance.new("Part",tl)grn.Size=Vector3.new(0.8,0.8,0.3)grn.Position=Vector3.new(pos[1]+3,10.2,pos[3]+3.6)grn.Anchored=true grn.BrickColor=BrickColor.new("Bright green")grn.Material=Enum.Material.Neon
end
-- Trees in park areas
for i=1,25 do
local tx,tz=math.random(-350,350),math.random(-350,350)
if math.abs(tx)<25 and math.abs(tz)<25 then tx=tx+40 end
local trunk=Instance.new("Part",workspace)trunk.Name="TreeTrunk"trunk.Size=Vector3.new(1,6,1)trunk.Position=Vector3.new(tx,3,tz)trunk.Anchored=true trunk.BrickColor=BrickColor.new("Brown")trunk.Material=Enum.Material.Wood
local leaves=Instance.new("Part",workspace)leaves.Name="TreeLeaves"leaves.Size=Vector3.new(6,5,6)leaves.Position=Vector3.new(tx,8,tz)leaves.Anchored=true leaves.BrickColor=BrickColor.new("Dark green")leaves.Material=Enum.Material.Grass leaves.Shape=Enum.PartType.Ball
end
-- Dumpsters, benches, phone booths
for i=1,12 do
local px,pz=math.random(-300,300),math.random(-300,300)
local prop=Instance.new("Part",workspace)prop.Name="Dumpster"..i
prop.Size=Vector3.new(5,3,3)prop.Position=Vector3.new(px,1.5,pz)prop.Anchored=true prop.BrickColor=BrickColor.new("Dark green")prop.Material=Enum.Material.Metal
end
-- Boundary walls
for _,w in ipairs({{0,10,0,800,20,2,0,400},{0,10,0,800,20,2,0,-400},{0,10,0,2,20,800,400,0},{0,10,0,2,20,800,-400,0}})do
local wall=Instance.new("Part",workspace)wall.Name="CityWall"wall.Size=Vector3.new(w[4],w[5],w[6])wall.Position=Vector3.new(w[7],w[2],w[8])wall.Anchored=true wall.BrickColor=BrickColor.new("Dark stone grey")wall.Material=Enum.Material.Concrete wall.Transparency=0.5
end
print("CITY PROPS DONE")
""")
# ═══════ STEP 4: Replace GameServer with human enemies ═══════
print("[4/6] Upgrading enemies to human models...")
paste_execute("""
-- Destroy old server script and enemies
for _,v in pairs(game.ServerScriptService:GetChildren())do v:Destroy()end
for _,v in pairs(workspace:GetChildren())do if v.Name=="EnemyBot"then v:Destroy()end end
wait(0.3)
local s=Instance.new("Script",game.ServerScriptService)s.Name="GameServer"
s.Source=[[
local RS=game.ReplicatedStorage local P=game.Players local D=game.Debris
local E=RS:WaitForChild("Events")local HE=E.HitEvent KE=E.KillEvent DE=E.DamageEvent HME=E.HitMarkerEvent
P.PlayerAdded:Connect(function(pl)
local ls=Instance.new("Folder",pl)ls.Name="leaderstats"
Instance.new("IntValue",ls).Name="Kills"
local k=ls.Kills k.Value=0
Instance.new("IntValue",ls).Name="Deaths"
pl.CharacterAdded:Connect(function(c)local h=c:WaitForChild("Humanoid")h.MaxHealth=100 h.Health=100 h.WalkSpeed=20
-- Attach visible weapon to player
task.delay(0.5,function()
if c and c:FindFirstChild("Right Arm")then
local gun=Instance.new("Part",c)gun.Name="GunModel"gun.Size=Vector3.new(0.4,0.4,2.5)gun.CanCollide=false gun.Anchored=false
gun.BrickColor=BrickColor.new("Dark stone grey")gun.Material=Enum.Material.Metal
local weld=Instance.new("Weld",gun)weld.Part0=c["Right Arm"]weld.Part1=gun
weld.C0=CFrame.new(0,-0.5,1.5)*CFrame.Angles(0,math.rad(90),0)
end
end)
h.Died:Connect(function()ls.Deaths.Value=ls.Deaths.Value+1 task.delay(4,function()if pl and pl.Parent then pl:LoadCharacter()end end)end)
end)end)
HE.OnServerEvent:Connect(function(pl,hp,dmg,hs)
if hp and hp.Parent and hp.Parent:FindFirstChild("Humanoid")then local hm=hp.Parent.Humanoid
if hm and hm.Health>0 then local d=hs and dmg*2.5 or dmg hm:TakeDamage(d)HME:FireClient(pl,hs)
if hm.Health<=0 then KE:FireClient(pl,"Enemy")ls=pl.leaderstats ls.Kills.Value=ls.Kills.Value+1 end end end end)
-- Human-like enemy models
local skinTones={"Medium stone grey","Light stone grey","Pastel brown","Brick yellow","White","Brown"}
local shirtColors={"Bright red","Bright blue","White","Black","Bright green","Bright yellow","Dark green","Navy blue","Dark orange"}
local pantColors={"Dark stone grey","Black","Medium stone grey","Dark blue","Brown","Navy blue"}
local hairColors={"Black","Dark stone grey","Brown","Dark orange"}
local SP={Vector3.new(-300,3,-300),Vector3.new(300,3,-300),Vector3.new(-300,3,300),Vector3.new(300,3,300),Vector3.new(0,3,-350),Vector3.new(0,3,350),Vector3.new(-350,3,0),Vector3.new(350,3,0),Vector3.new(-200,3,-200),Vector3.new(200,3,200),Vector3.new(-100,3,100),Vector3.new(100,3,-100),Vector3.new(-250,3,150),Vector3.new(250,3,-150),Vector3.new(0,3,0)}
local function mkHuman(sp)
local skin=skinTones[math.random(#skinTones)]
local shirt=shirtColors[math.random(#shirtColors)]
local pants=pantColors[math.random(#pantsColors)]
local hair=hairColors[math.random(#hairColors)]
local m=Instance.new("Model",workspace)m.Name="EnemyBot"
-- Head
local hd=Instance.new("Part",m)hd.Name="Head"hd.Size=Vector3.new(2,2,1)hd.Position=sp+Vector3.new(0,8.5,0)hd.Anchored=false hd.BrickColor=BrickColor.new(skin)hd.Material=Enum.Material.Plastic
-- Face (eyes)
local eye1=Instance.new("Part",m)eye1.Name="Eye1"eye1.Size=Vector3.new(0.3,0.3,0.1)eye1.Position=sp+Vector3.new(-0.35,8.7,0.55)eye1.Anchored=false eye1.BrickColor=BrickColor.new("Really black")eye1.Material=Enum.Material.Plastic
local eye2=Instance.new("Part",m)eye2.Name="Eye2"eye2.Size=Vector3.new(0.3,0.3,0.1)eye2.Position=sp+Vector3.new(0.35,8.7,0.55)eye2.Anchored=false eye2.BrickColor=BrickColor.new("Really black")
-- Hair
local hr=Instance.new("Part",m)hr.Name="Hair"hr.Size=Vector3.new(2.1,0.8,1.1)hr.Position=sp+Vector3.new(0,9.7,0)hr.Anchored=false hr.BrickColor=BrickColor.new(hair)hr.Material=Enum.Material.Plastic
-- Torso
local ts=Instance.new("Part",m)ts.Name="Torso"ts.Size=Vector3.new(2,2,1)ts.Position=sp+Vector3.new(0,6.5,0)ts.Anchored=false ts.BrickColor=BrickColor.new(shirt)ts.Material=Enum.Material.Plastic
-- Arms
local la=Instance.new("Part",m)la.Name="Left Arm"la.Size=Vector3.new(1,2,1)la.Position=sp+Vector3.new(-1.5,6.5,0)la.Anchored=false la.BrickColor=BrickColor.new(skin)
local ra=Instance.new("Part",m)ra.Name="Right Arm"ra.Size=Vector3.new(1,2,1)ra.Position=sp+Vector3.new(1.5,6.5,0)ra.Anchored=false ra.BrickColor=BrickColor.new(skin)
-- Legs
local ll=Instance.new("Part",m)ll.Name="Left Leg"ll.Size=Vector3.new(1,2,1)ll.Position=sp+Vector3.new(-0.5,3.5,0)ll.Anchored=false ll.BrickColor=BrickColor.new(pants)
local rl=Instance.new("Part",m)rl.Name="Right Leg"rl.Size=Vector3.new(1,2,1)rl.Position=sp+Vector3.new(0.5,3.5,0)rl.Anchored=false rl.BrickColor=BrickColor.new(pants)
-- Enemy weapon
local gun=Instance.new("Part",m)gun.Name="GunModel"gun.Size=Vector3.new(0.3,0.3,2)gun.Position=sp+Vector3.new(2,6.5,1)gun.Anchored=false gun.CanCollide=false gun.BrickColor=BrickColor.new("Dark stone grey")gun.Material=Enum.Material.Metal
local hm=Instance.new("Humanoid",m)hm.MaxHealth=100 hm.Health=100 hm.WalkSpeed=14
local rp=Instance.new("Part",m)rp.Name="HumanoidRootPart"rp.Size=Vector3.new(2,2,1)rp.Position=sp rp.Transparency=1 rp.CanCollide=false
-- Weld all parts
local function wld(p0,p1,c0)local w=Instance.new("Weld")w.Part0=p0 w.Part1=p1 w.C0=c0 or CFrame.new()w.Parent=p0 end
wld(rp,ts,CFrame.new(0,0,0))wld(ts,hd,CFrame.new(0,1.5,0))wld(ts,la,CFrame.new(-1.5,0.5,0))wld(ts,ra,CFrame.new(1.5,0.5,0))wld(ts,ll,CFrame.new(-0.5,-2,0))wld(ts,rl,CFrame.new(0.5,-2,0))
wld(ra,gun,CFrame.new(0,-0.3,1.5))
wld(hd,eye1,CFrame.new(-0.35,0.2,0.55))wld(hd,eye2,CFrame.new(0.35,0.2,0.55))wld(hd,hr,CFrame.new(0,1.2,0))
local tp=SP[math.random(#SP)]local ls=0
hm.Died:Connect(function()task.delay(5,function()if m.Parent then m:Destroy()end end)task.delay(12,function()mkHuman(SP[math.random(#SP)])end)end)
spawn(function()while m.Parent and hm.Health>0 do task.wait(.4)local r=m:FindFirstChild("HumanoidRootPart")if r then hm:MoveTo(tp)if(r.Position-tp).Magnitude<8 then tp=SP[math.random(#SP)]end end end end)
spawn(function()while m.Parent and hm.Health>0 do task.wait(.2)local r=m:FindFirstChild("HumanoidRootPart")if not r then continue end for _,pl in ipairs(P:GetPlayers())do if pl.Character and pl.Character:FindFirstChild("HumanoidRootPart")then local pr=pl.Character.HumanoidRootPart local d=(pr.Position-r.Position).Magnitude if d<80 then hm:MoveTo(pr.Position)if d<55 and tick()-ls>1 then ls=tick()local ph=pl.Character:FindFirstChild("Humanoid")if ph and ph.Health>0 then ph:TakeDamage(5+math.random(10))DE:FireClient(pl,8)end end end end end end end)
end
for i=1,15 do task.delay(i*.3,function()mkHuman(SP[i])end)end
print("[GameServer] 15 human enemies spawned in GTA city!")
]]
print("ENEMIES DONE")
""")
# ═══════ STEP 5: Replace WeaponCtrl with gun model switching ═══════
print("[5/6] Weapon controller with visible guns...")
paste_execute("""
for _,v in pairs(game.StarterPlayer.StarterPlayerScripts:GetChildren())do v:Destroy()end
local ps=Instance.new("LocalScript",game.StarterPlayer.StarterPlayerScripts)ps.Name="PlayerSetup"
ps.Source=[[local P=game.Players local RS=game.RunService local UI=game.UserInputService local pl=P.LocalPlayer cam=workspace.CurrentCamera
pl.CharacterAdded:Connect(function(c)local h=c:WaitForChild("Humanoid")h.MaxHealth=100 h.Health=100 h.WalkSpeed=20
RS.RenderStepped:Connect(function()if h.Health>0 then cam.CameraType=Enum.CameraType.LockFirstPerson local hd=c:FindFirstChild("Head")if hd then cam.CFrame=hd.CFrame end end end)
local sp,cr=false,false
UI.InputBegan:Connect(function(i,g)if g then return end if i.KeyCode==Enum.KeyCode.LeftShift then sp=true h.WalkSpeed=30 elseif i.KeyCode==Enum.KeyCode.LeftControl then cr=true h.WalkSpeed=10 end end)
UI.InputEnded:Connect(function(i)if i.KeyCode==Enum.KeyCode.LeftShift then sp=false h.WalkSpeed=cr and 10 or 20 elseif i.KeyCode==Enum.KeyCode.LeftControl then cr=false h.WalkSpeed=sp and 30 or 20 end end)end)
]]
local wc=Instance.new("LocalScript",game.StarterPlayer.StarterPlayerScripts)wc.Name="WeaponCtrl"
wc.Source=[[
local P=game.Players local RS=game.RunService local UI=game.UserInputService local RepS=game.ReplicatedStorage local TS=game.TweenService local D=game.Debris
local pl=P.LocalPlayer cam=workspace.CurrentCamera ms=pl:GetMouse()
local E=RepS:WaitForChild("Events")local HE=E.HitEvent KE=E.KillEvent HME=E.HitMarkerEvent
local WD=require(RepS:WaitForChild("Shared"):WaitForChild("WeaponData"))
local ci=1 ammo={} isR=false isA=false canS=true ro=0 so=0 kills=0 holdM=false
for i,w in ipairs(WD)do ammo[i]=w.m end
local gunSizes={{0.4,0.4,2.5},{0.4,0.4,3},{0.4,0.5,3},{0.35,0.35,2.8},{0.3,0.3,1.8},{0.3,0.3,2},{0.3,0.3,4},{0.3,0.3,4.5},{0.4,0.4,2},{0.5,0.5,3.5}}
local gunColors={"Dark stone grey","Dark stone grey","Medium stone grey","Dark stone grey","Black","Black","Dark stone grey","Medium stone grey","Dark stone grey","Olive"}
local function updateGunModel()
local c=pl.Character if not c then return end
local old=c:FindFirstChild("GunModel")if old then old:Destroy()end
local arm=c:FindFirstChild("Right Arm")if not arm then return end
local gs=gunSizes[ci]or{0.4,0.4,2.5}
local gun=Instance.new("Part",c)gun.Name="GunModel"gun.Size=Vector3.new(gs[1],gs[2],gs[3])gun.CanCollide=false gun.Anchored=false
gun.BrickColor=BrickColor.new(gunColors[ci]or"Dark stone grey")gun.Material=Enum.Material.Metal
gun.CFrame=arm.CFrame*CFrame.new(0,-0.5,gs[3]/2+0.5)
local weld=Instance.new("Weld",gun)weld.Part0=arm weld.Part1=gun weld.C0=CFrame.new(0,-0.5,gs[3]/2+0.5)*CFrame.Angles(0,math.rad(90),0)
end
local function hud()return pl.PlayerGui:FindFirstChild("COD_HUD")end
local function sw(idx)if idx<1 or idx>#WD or isR then return end ci=idx local w=WD[ci]isA=false cam.FieldOfView=70 ro=0 so=0
local h=hud()if h then h.Ammo_Frame.AmmoTxt.Text=ammo[ci].." | "..w.m h.Ammo_Frame.WepName.Text=w.n end updateGunModel()end
UI.InputBegan:Connect(function(i,g)if g then return end
if i.KeyCode.Value>=48 and i.KeyCode.Value<=57 then local idx=i.KeyCode.Value-47 if idx>0 and idx<=10 then sw(idx==10 and 10 or idx)end end
if i.UserInputType==Enum.UserInputType.MouseButton2 then local w=WD[ci]if w.zm then isA=true cam.FieldOfView=70/w.zm else isA=true TS:Create(cam,TweenInfo.new(.15),{FieldOfView=50}):Play()end end
if i.KeyCode==Enum.KeyCode.R and not isR then local w=WD[ci]if ammo[ci]<w.m then isR=true canS=false local h=hud()if h then h.ReloadBar.Visible=true local f=h.ReloadBar.Fill f.Size=UDim2.new(0,0,1,0)TS:Create(f,TweenInfo.new(w.r),{Size=UDim2.new(1,0,1,0)}):Play()end task.delay(w.r,function()ammo[ci]=w.m isR=false canS=true local h=hud()if h then h.ReloadBar.Visible=false h.Ammo_Frame.AmmoTxt.Text=ammo[ci].." | "..w.m end end)end end end)
UI.InputEnded:Connect(function(i)if i.UserInputType==Enum.UserInputType.MouseButton2 then isA=false TS:Create(cam,TweenInfo.new(.15),{FieldOfView=70}):Play()end end)
local function shoot()
local w=WD[ci]if not canS or isR or ammo[ci]<=0 then return end ammo[ci]=ammo[ci]-1
local h=hud()if h then h.Ammo_Frame.AmmoTxt.Text=ammo[ci].." | "..w.m end
local c=pl.Character if not c or not c:FindFirstChild("Head")then return end
local hd=c.Head local sp=isA and w.a or w.s sp=sp+so
local dir=(ms.Hit.Position-hd.Position).Unit+Vector3.new((math.random()-.5)*sp,(math.random()-.5)*sp,(math.random()-.5)*sp).Unit
local rp=RaycastParams.new()rp.FilterType=Enum.RaycastFilterType.Exclude rp.FilterDescendantsInstances={c}
local pe=w.pel or 1
for p=1,pe do local d=dir if pe>1 then d=dir+Vector3.new((math.random()-.5)*w.s*2,(math.random()-.5)*w.s*2,(math.random()-.5)*w.s*2).Unit end
local r=workspace:Raycast(hd.Position,d*w.rng,rp)
if r then local hp=r.Instance local hs=hp.Name=="Head"
local tr=Instance.new("Part",workspace)tr.Size=Vector3.new(.1,.1,(r.Position-hd.Position).Magnitude)tr.CFrame=CFrame.lookAt(hd.Position,r.Position)*CFrame.new(0,0,-tr.Size.Z/2)tr.Anchored=true tr.CanCollide=false tr.BrickColor=BrickColor.new("New Yeller")tr.Material=Enum.Material.Neon tr.Transparency=.4 D:AddItem(tr,.12)
if w.expl then local ex=Instance.new("Explosion",workspace)ex.Position=r.Position ex.BlastRadius=w.bl or 25 ex.BlastPressure=500000 end
if hp.Parent and hp.Parent:FindFirstChild("Humanoid")then local hm=hp.Parent.Humanoid
if hm and hm.Health>0 then local dm=hs and w.d*w.h or w.d HE:FireServer(hp,dm,hs)
if hm.Health<=0 then kills=kills+1 local h=hud()if h then h.ScoreFrame.ScoreTxt.Text="KILLS: "..kills end KE:FireServer("Enemy")end end end end end
ro=math.min(ro+w.rc,w.rc*5)so=math.min(so+w.s*.5,w.s*3)
if ammo[ci]<=0 then task.delay(.2,function()if ammo[ci]<=0 and not isR then isR=true canS=false local ww=WD[ci]local h=hud()if h then h.ReloadBar.Visible=true local f=h.ReloadBar.Fill f.Size=UDim2.new(0,0,1,0)TS:Create(f,TweenInfo.new(ww.r),{Size=UDim2.new(1,0,1,0)}):Play()end task.delay(ww.r,function()ammo[ci]=ww.m isR=false canS=true local h=hud()if h then h.ReloadBar.Visible=false h.Ammo_Frame.AmmoTxt.Text=ammo[ci].." | "..ww.m end end)end end)end end
UI.InputBegan:Connect(function(i,g)if g then return end
if i.UserInputType==Enum.UserInputType.MouseButton1 then holdM=true local w=WD[ci]
if w.auto then spawn(function()while holdM and canS do shoot()task.wait(w.f)end end)else shoot()end end end)
UI.InputEnded:Connect(function(i)if i.UserInputType==Enum.UserInputType.MouseButton1 then holdM=false end end)
RS.RenderStepped:Connect(function()ro=math.max(ro-.12,0)so=math.max(so-.008,0)end)
pl.CharacterAdded:Connect(function()task.delay(1,updateGunModel)end)
sw(1)print("[WeaponCtrl] 10 COD weapons + visible guns loaded!")
]]
print("WEAPONS DONE")
""")
# ═══════ STEP 6: Press F5 ═══════
print("[6/6] Starting Play mode...")
time.sleep(1)
press(0x74)
print("\n" + "=" * 55)
print(" GTA CITY + COD WEAPONS + HUMAN ENEMIES")
print("=" * 55)
print(" City: 20 buildings, roads, cars, lights, trees")
print(" 15 human enemies with varied skin/clothes")
print(" 10 weapons with visible gun models")
print(" WASD=Move LMB=Shoot RMB=ADS R=Reload")
print(" Shift=Sprint Ctrl=Crouch")
print(" 1=M4A1 2=AK-47 3=SCAR-H 4=ACR 5=MP7")
print(" 6=MP5 7=AWP 8=Intervention 9=SPAS 0=RPG")
print("=" * 55)

1314
roblox-fps-complete.lua Normal file

File diff suppressed because it is too large Load Diff

25
roblox-fps-p1-map.lua Normal file
View File

@@ -0,0 +1,25 @@
-- CLEAN + MAP ONLY (~2500 chars)
for _,v in pairs({"GameServer","FPS_HUD","WeaponClient","WeaponController","PlayerSetup"}) do
local s=game.ServerScriptService:FindFirstChild(v)if s then s:Destroy() end
local g=game.StarterGui:FindFirstChild(v)if g then g:Destroy() end
local p=game.StarterPlayer.StarterPlayerScripts:FindFirstChild(v)if p then p:Destroy() end
end
if game.ReplicatedStorage:FindFirstChild("Shared")then game.ReplicatedStorage.Shared:Destroy()end
if game.ReplicatedStorage:FindFirstChild("Events")then game.ReplicatedStorage.Events:Destroy()end
for _,v in pairs(workspace:GetChildren())do
if v:IsA("Model")or v:IsA("Part")or v:IsA("Folder")then
if v.Name~="Camera"and v.Name~="Terrain"then v:Destroy()end
end
end
wait(0.3)
local g=Instance.new("Part",workspace)g.Name="Ground"g.Size=Vector3.new(400,2,400)g.Position=Vector3.new(0,-1,0)g.Anchored=true g.BrickColor=BrickColor.new("Dark stone grey")g.Material=Enum.Material.Concrete
local wd={{n="N",s={400,20,2},p={0,10,-200}},{n="S",s={400,20,2},p={0,10,200}},{n="E",s={2,20,400},p={200,10,0}},{n="W",s={2,20,400},p={-200,10,0}}}
for _,w in ipairs(wd)do local wl=Instance.new("Part",workspace)wl.Name=w.n.."Wall"wl.Size=Vector3.new(unpack(w.s))wl.Position=Vector3.new(unpack(w.p))wl.Anchored=true wl.BrickColor=BrickColor.new("Dark stone grey")wl.Material=Enum.Material.Concrete wl.Transparency=0.3 end
local bd={{n="Bld_Alpha",s={30,20,25},p={-60,10,-80}},{n="Bld_Bravo",s={25,18,30},p={70,9,-60}},{n="Bld_Charlie",s={35,22,20},p={-40,11,70}},{n="Bld_Delta",s={20,16,35},p={80,8,80}},{n="Bld_Echo",s={28,24,28},p={0,12,-150}}}
for _,b in ipairs(bd)do local m=Instance.new("Model",workspace)m.Name=b.n local p=Instance.new("Part",m)p.Size=Vector3.new(unpack(b.s))p.Position=Vector3.new(unpack(b.p))p.Anchored=true p.BrickColor=BrickColor.new("Medium stone grey")p.Material=Enum.Material.Brick end
local cp={{-20,1,0},{20,1,0},{0,1,-30},{0,1,30},{-50,1,20},{50,1,-20},{-30,1,-50},{30,1,50},{-80,1,0},{80,1,0},{0,1,-80},{0,1,80},{-10,1,-120},{10,1,120},{-100,1,-40},{100,1,40},{-60,1,40},{60,1,-40},{-40,1,-120},{40,1,120},{110,1,0},{-110,1,0},{0,1,110},{0,1,-110}}
for i,c in ipairs(cp)do local p=Instance.new("Part",workspace)if i%3==0 then p.Size=Vector3.new(3,4,3)p.Position=Vector3.new(c[1],c[2]+2,c[3])p.BrickColor=BrickColor.new("Reddish brown")p.Material=Enum.Material.Metal p.Shape=Enum.PartType.Cylinder p.Orientation=Vector3.new(0,0,90)elseif i%3==1 then p.Size=Vector3.new(5,5,5)p.Position=Vector3.new(c[1],c[2]+2.5,c[3])p.BrickColor=BrickColor.new("Brown")p.Material=Enum.Material.Wood else p.Size=Vector3.new(8,3,3)p.Position=Vector3.new(c[1],c[2]+1.5,c[3])p.BrickColor=BrickColor.new("Brick yellow")p.Material=Enum.Material.Sand end p.Anchored=true p.Name="Cover"..i end
for i,t in ipairs({{-120,0,-120},{120,0,-120},{-120,0,120},{120,0,120}})do local m=Instance.new("Model",workspace)m.Name="Tower"..i local b=Instance.new("Part",m)b.Size=Vector3.new(6,1,6)b.Position=Vector3.new(t[1],0.5,t[3])b.Anchored=true for _,o in ipairs({{-2,0,-2},{2,0,-2},{-2,0,2},{2,0,2}})do local l=Instance.new("Part",m)l.Size=Vector3.new(1,15,1)l.Position=Vector3.new(t[1]+o[1],7.5,t[3]+o[2])l.Anchored=true l.BrickColor=BrickColor.new("Dark stone grey")end local pl=Instance.new("Part",m)pl.Size=Vector3.new(8,1,8)pl.Position=Vector3.new(t[1],15,t[3])pl.Anchored=true pl.BrickColor=BrickColor.new("Brown")end
for _,sp in ipairs({{0,3,170},{-30,3,170},{30,3,170}})do local s=Instance.new("SpawnLocation",workspace)s.Size=Vector3.new(6,1,6)s.Position=Vector3.new(unpack(sp))s.Anchored=true s.CanCollide=false s.Transparency=1 s.Name="SpawnPoint"end
game:GetService("Lighting").ClockTime=17.5 game:GetService("Lighting").Brightness=0.5 game:GetService("Lighting").FogEnd=500 game:GetService("Lighting").FogStart=200
print("MAP DONE")

28
roblox-fps-p2-data.lua Normal file
View File

@@ -0,0 +1,28 @@
-- SHARED DATA + WEAPON MODULE (~2800 chars)
local sh=Instance.new("Folder",game.ReplicatedStorage)sh.Name="Shared"
local ev=Instance.new("Folder",game.ReplicatedStorage)ev.Name="Events"
for _,n in ipairs({"HitEvent","KillEvent","DamageEvent","WeaponSwitchEvent","ReloadEvent","PlayerDiedEvent","EnemyKilledEvent","HitMarkerEvent"})do Instance.new("RemoteEvent",ev).Name=n end
local wd=Instance.new("ModuleScript",sh)wd.Name="WeaponData"
wd.Source=[[local W={
{Name="M4A1 Carbine",Category="AR",Key=Enum.KeyCode.One,Damage=25,HeadMulti=2.5,FireRate=0.1,MagSize=30,ReloadTime=2.2,Spread=0.02,ADS_Spread=0.008,Recoil=0.3,Range=300,Auto=true},
{Name="AK-47",Category="AR",Key=Enum.KeyCode.Two,Damage=28,HeadMulti=2.5,FireRate=0.12,MagSize=30,ReloadTime=2.5,Spread=0.03,ADS_Spread=0.012,Recoil=0.45,Range=280,Auto=true},
{Name="FN SCAR-H",Category="AR",Key=Enum.KeyCode.Three,Damage=33,HeadMulti=2.5,FireRate=0.11,MagSize=20,ReloadTime=2.6,Spread=0.025,ADS_Spread=0.01,Recoil=0.4,Range=320,Auto=true},
{Name="M16A4",Category="AR",Key=Enum.KeyCode.Four,Damage=30,HeadMulti=2.8,FireRate=0.075,MagSize=30,ReloadTime=2.3,Spread=0.015,ADS_Spread=0.005,Recoil=0.35,Range=350,Auto=false,BurstCount=3},
{Name="FAMAS F1",Category="AR",Key=Enum.KeyCode.Five,Damage=24,HeadMulti=2.5,FireRate=0.065,MagSize=25,ReloadTime=2.1,Spread=0.025,ADS_Spread=0.01,Recoil=0.35,Range=270,Auto=true},
{Name="HK G36C",Category="AR",Key=Enum.KeyCode.Six,Damage=26,HeadMulti=2.5,FireRate=0.09,MagSize=30,ReloadTime=2.2,Spread=0.02,ADS_Spread=0.008,Recoil=0.3,Range=300,Auto=true},
{Name="MP5A4",Category="SMG",Key=Enum.KeyCode.Seven,Damage=20,HeadMulti=2,FireRate=0.08,MagSize=30,ReloadTime=1.8,Spread=0.035,ADS_Spread=0.015,Recoil=0.15,Range=150,Auto=true},
{Name="FN P90",Category="SMG",Key=Enum.KeyCode.Eight,Damage=21,HeadMulti=2,FireRate=0.065,MagSize=50,ReloadTime=2.5,Spread=0.04,ADS_Spread=0.018,Recoil=0.18,Range=140,Auto=true},
{Name="HK MP7A2",Category="SMG",Key=Enum.KeyCode.Nine,Damage=19,HeadMulti=2,FireRate=0.07,MagSize=40,ReloadTime=2.0,Spread=0.03,ADS_Spread=0.012,Recoil=0.12,Range=130,Auto=true},
{Name="UMP-45",Category="SMG",Key=Enum.KeyCode.Zero,Damage=23,HeadMulti=2,FireRate=0.11,MagSize=25,ReloadTime=2.0,Spread=0.04,ADS_Spread=0.018,Recoil=0.22,Range=160,Auto=true},
{Name="AWP",Category="Sniper",Key=Enum.KeyCode.Q,Damage=95,HeadMulti=3,FireRate=1.4,MagSize=10,ReloadTime=3.5,Spread=0.001,ADS_Spread=0,Recoil=2.0,Range=800,Auto=false,ScopeZoom=8},
{Name="Barrett M82",Category="Sniper",Key=Enum.KeyCode.E,Damage=150,HeadMulti=3,FireRate=1.8,MagSize=5,ReloadTime=4.0,Spread=0.002,ADS_Spread=0.001,Recoil=3.5,Range=1000,Auto=false,ScopeZoom=10},
{Name="SVD Dragunov",Category="Sniper",Key=Enum.KeyCode.T,Damage=55,HeadMulti=2.8,FireRate=0.5,MagSize=10,ReloadTime=3.0,Spread=0.005,ADS_Spread=0.002,Recoil=1.2,Range=600,Auto=false,ScopeZoom=4},
{Name="SPAS-12",Category="Shotgun",Key=Enum.KeyCode.Z,Damage=15,HeadMulti=1.5,FireRate=0.9,MagSize=8,ReloadTime=3.5,Spread=0.1,ADS_Spread=0.08,Recoil=1.5,Range=40,Auto=false,Pellets=8},
{Name="Remington 870",Category="Shotgun",Key=Enum.KeyCode.X,Damage=18,HeadMulti=1.5,FireRate=1.0,MagSize=6,ReloadTime=3.0,Spread=0.12,ADS_Spread=0.09,Recoil=1.8,Range=35,Auto=false,Pellets=6},
{Name="M249 SAW",Category="LMG",Key=Enum.KeyCode.C,Damage=28,HeadMulti=2,FireRate=0.08,MagSize=100,ReloadTime=5.5,Spread=0.05,ADS_Spread=0.025,Recoil=0.5,Range=350,Auto=true},
{Name="M134 Minigun",Category="LMG",Key=Enum.KeyCode.V,Damage=18,HeadMulti=1.8,FireRate=0.04,MagSize=200,ReloadTime=8.0,Spread=0.07,ADS_Spread=0.04,Recoil=0.35,Range=250,Auto=true},
{Name="Desert Eagle",Category="Pistol",Key=Enum.KeyCode.B,Damage=45,HeadMulti=3,FireRate=0.3,MagSize=7,ReloadTime=1.8,Spread=0.03,ADS_Spread=0.015,Recoil=0.8,Range=100,Auto=false},
{Name="Glock 18C",Category="Pistol",Key=Enum.KeyCode.N,Damage=18,HeadMulti=2,FireRate=0.05,MagSize=20,ReloadTime=1.5,Spread=0.04,ADS_Spread=0.02,Recoil=0.15,Range=60,Auto=true},
{Name="RPG-7",Category="Launcher",Key=Enum.KeyCode.G,Damage=200,HeadMulti=1,FireRate=2.0,MagSize=1,ReloadTime=4.5,Spread=0.01,ADS_Spread=0.005,Recoil=3.0,Range=200,Auto=false,Explosive=true,BlastRadius=20},
}return W]]
print("WEAPON DATA DONE")

50
roblox-fps-p3-server.lua Normal file
View File

@@ -0,0 +1,50 @@
-- GAME SERVER SCRIPT (~3000 chars)
local gs=Instance.new("Script",game.ServerScriptService)gs.Name="GameServer"
gs.Source=[[
local RS=game:GetService("ReplicatedStorage")local P=game:GetService("Players")
local E=RS:WaitForChild("Events")
local HE=E.HitEvent KE=E.KillEvent DE=E.DamageEvent PDE=E.PlayerDiedEvent EKE=E.EnemyKilledEvent HME=E.HitMarkerEvent
P.PlayerAdded:Connect(function(pl)
local ls=Instance.new("Folder",pl)ls.Name="leaderstats"
local k=Instance.new("IntValue",ls)k.Name="Kills"k.Value=0
local d=Instance.new("IntValue",ls)d.Name="Deaths"d.Value=0
pl.CharacterAdded:Connect(function(c)
local h=c:WaitForChild("Humanoid")h.MaxHealth=100 h.Health=100 h.WalkSpeed=18
h.Died:Connect(function()d.Value=d.Value+1 PDE:FireClient(pl,pl.Name)task.delay(4,function()pl:LoadCharacter()end)end)
end)end)
HE.OnServerEvent:Connect(function(pl,hp,dmg,hs,wn)
if hp and hp.Parent and hp.Parent:FindFirstChild("Humanoid")then
local hm=hp.Parent.Humanoid if hm and hm.Health>0 then
local d=hs and dmg*2.5 or dmg hm:TakeDamage(d)HME:FireClient(pl,hs)
local tp=P:GetPlayerFromCharacter(hp.Parent)
if tp and tp~=pl then DE:FireClient(tp,d)end
if hm.Health<=0 then KE:FireClient(pl,"Enemy")pl.leaderstats.Kills.Value=pl.leaderstats.Kills.Value+1 end
end end end)
EKE.OnServerEvent:Connect(function(pl,en)
if pl and pl:FindFirstChild("leaderstats")then pl.leaderstats.Kills.Value=pl.leaderstats.Kills.Value+1 end end)
local MX=10
local SP={Vector3.new(-150,3,-150),Vector3.new(150,3,-150),Vector3.new(-150,3,150),Vector3.new(150,3,150),Vector3.new(0,3,-150),Vector3.new(0,3,150),Vector3.new(-150,3,0),Vector3.new(150,3,0),Vector3.new(-100,3,-100),Vector3.new(100,3,100)}
local PP={Vector3.new(-60,3,-80),Vector3.new(70,3,-60),Vector3.new(-40,3,70),Vector3.new(80,3,80),Vector3.new(0,3,-150),Vector3.new(-120,3,-120),Vector3.new(120,3,-120),Vector3.new(-120,3,120),Vector3.new(120,3,120),Vector3.new(0,3,0)}
local function mkEnemy(sp)
local m=Instance.new("Model",workspace)m.Name="EnemySoldier"
local t=Instance.new("Part",m)t.Name="Torso"t.Size=Vector3.new(3,3,2)t.Position=sp t.BrickColor=BrickColor.new("Dark green")t.Material=Enum.Material.Plastic
local h=Instance.new("Part",m)h.Name="Head"h.Size=Vector3.new(2,2,2)h.Position=sp+Vector3.new(0,2.5,0)h.BrickColor=BrickColor.new("Medium stone grey")
local ll=Instance.new("Part",m)ll.Name="Left Leg"ll.Size=Vector3.new(1,3,1)ll.Position=sp+Vector3.new(-0.75,-2.5,0)ll.BrickColor=BrickColor.new("Dark green")
local rl=Instance.new("Part",m)rl.Name="Right Leg"rl.Size=Vector3.new(1,3,1)rl.Position=sp+Vector3.new(0.75,-2.5,0)rl.BrickColor=BrickColor.new("Dark green")
local hm=Instance.new("Humanoid",m)hm.MaxHealth=100 hm.Health=100 hm.WalkSpeed=12
local rp=Instance.new("Part",m)rp.Name="HumanoidRootPart"rp.Size=Vector3.new(2,2,1)rp.Position=sp rp.Transparency=1 rp.CanCollide=false
local w1=Instance.new("Weld",rp)w1.Part0=rp w1.Part1=t
local w2=Instance.new("Weld",t)w2.Part0=t w2.Part1=h
local tp=PP[math.random(#PP)]
hm.Died:Connect(function()
for _,p in ipairs(P:GetPlayers())do local c=p.Character if c and c:FindFirstChild("HumanoidRootPart")then EKE:FireClient(p,m.Name)end end
task.delay(8,function()if m and m.Parent then m:Destroy()end end)
task.delay(12,function()local cnt=0 for _,o in pairs(workspace:GetChildren())do if o.Name=="EnemySoldier"then cnt=cnt+1 end end if cnt<MX then mkEnemy(SP[math.random(#SP)])end end)
end)
coroutine.wrap(function()while m.Parent and hm.Health>0 do task.wait(0.5)local r=m:FindFirstChild("HumanoidRootPart")if r then hm:MoveTo(tp)if(r.Position-tp).Magnitude<5 then tp=PP[math.random(#PP)]end end end end)()
coroutine.wrap(function()local ls=0 while m.Parent and hm.Health>0 do task.wait(0.3)local r=m:FindFirstChild("HumanoidRootPart")if not r then continue end for _,pl in ipairs(P:GetPlayers())do if pl.Character and pl.Character:FindFirstChild("HumanoidRootPart")then local pr=pl.Character.HumanoidRootPart local d=(pr.Position-r.Position).Magnitude if d<60 then hm:MoveTo(pr.Position)if d<45 and tick()-ls>1.5 then ls=tick()local ph=pl.Character:FindFirstChild("Humanoid")if ph and ph.Health>0 then ph:TakeDamage(8+math.random(7))DE:FireClient(pl,10)end end elseif d>90 then hm:MoveTo(tp)end end end end end)()
end
for i=1,MX do task.delay(i*0.5,function()mkEnemy(SP[i])end)end
print("[GameServer] Loaded!")
]]
print("SERVER DONE")

28
roblox-fps-p4-hud.lua Normal file
View File

@@ -0,0 +1,28 @@
-- HUD GUI + PLAYER SETUP (~2800 chars)
local hud=Instance.new("ScreenGui",game.StarterGui)hud.Name="FPS_HUD"hud.ResetOnSpawn=false hud.ZIndexBehavior=Enum.ZIndexBehavior.Sibling
local ch=Instance.new("Frame",hud)ch.Name="Crosshair"ch.Size=UDim2.new(0,20,0,2)ch.Position=UDim2.new(0.5,-10,0.5,-1)ch.BackgroundColor3=Color3.new(1,1,1)ch.BorderSizePixel=0
local cv=Instance.new("Frame",hud)cv.Name="CrosshairV"cv.Size=UDim2.new(0,2,0,20)cv.Position=UDim2.new(0.5,-1,0.5,-10)cv.BackgroundColor3=Color3.new(1,1,1)cv.BorderSizePixel=0
local hm=Instance.new("Frame",hud)hm.Name="HitMarker"hm.Size=UDim2.new(0,30,0,30)hm.Position=UDim2.new(0.5,-15,0.5,-15)hm.BackgroundTransparency=1 hm.Visible=false
local h1=Instance.new("Frame",hm)h1.Size=UDim2.new(0,15,0,3)h1.Position=UDim2.new(0,15,0,0)h1.Rotation=45 h1.BackgroundColor3=Color3.new(1,1,1)h1.BorderSizePixel=0
local h2=Instance.new("Frame",hm)h2.Size=UDim2.new(0,15,0,3)h2.Position=UDim2.new(0,0,0,15)h2.Rotation=45 h2.BackgroundColor3=Color3.new(1,1,1)h2.BorderSizePixel=0
local hbf=Instance.new("Frame",hud)hbf.Name="HealthFrame"hbf.Size=UDim2.new(0,250,0,30)hbf.Position=UDim2.new(0,20,1,-60)hbf.BackgroundColor3=Color3.fromRGB(30,30,30)hbf.BorderSizePixel=0 hbf.BackgroundTransparency=0.3
local hfl=Instance.new("Frame",hbf)hfl.Name="HealthFill"hfl.Size=UDim2.new(1,0,1,0)hfl.BackgroundColor3=Color3.fromRGB(0,200,0)hfl.BorderSizePixel=0
local htx=Instance.new("TextLabel",hbf)htx.Name="HealthText"htx.Size=UDim2.new(1,0,1,0)htx.BackgroundTransparency=1 htx.TextColor3=Color3.new(1,1,1)htx.TextStrokeTransparency=0.5 htx.Font=Enum.Font.GothamBold htx.TextSize=16 htx.Text="100 HP"
local af=Instance.new("Frame",hud)af.Name="AmmoFrame"af.Size=UDim2.new(0,200,0,60)af.Position=UDim2.new(1,-220,1,-80)af.BackgroundTransparency=1
local at=Instance.new("TextLabel",af)at.Name="AmmoText"at.Size=UDim2.new(1,0,0.6,0)at.BackgroundTransparency=1 at.TextColor3=Color3.new(1,1,1)at.TextStrokeTransparency=0.5 at.Font=Enum.Font.GothamBold at.TextSize=28 at.TextXAlignment=Enum.TextXAlignment.Right at.Text="30 / 30"
local wn=Instance.new("TextLabel",af)wn.Name="WeaponName"wn.Size=UDim2.new(1,0,0.4,0)wn.Position=UDim2.new(0,0.6,0)wn.BackgroundTransparency=1 wn.TextColor3=Color3.fromRGB(200,200,200)wn.TextStrokeTransparency=0.7 wn.Font=Enum.Font.Gotham wn.TextSize=14 wn.TextXAlignment=Enum.TextXAlignment.Right wn.Text="M4A1 Carbine"
local rb=Instance.new("Frame",hud)rb.Name="ReloadBar"rb.Size=UDim2.new(0,200,0,6)rb.Position=UDim2.new(0.5,-100,1,-120)rb.BackgroundColor3=Color3.fromRGB(60,60,60)rb.BorderSizePixel=0 rb.Visible=false rb.BackgroundTransparency=0.3
local rf=Instance.new("Frame",rb)rf.Name="Fill"rf.Size=UDim2.new(0,0,1,0)rf.BackgroundColor3=Color3.fromRGB(255,200,0)rf.BorderSizePixel=0
local rt=Instance.new("TextLabel",hud)rt.Name="ReloadText"rt.Size=UDim2.new(0,200,0,20)rt.Position=UDim2.new(0.5,-100,1,-140)rt.BackgroundTransparency=1 rt.TextColor3=Color3.fromRGB(255,200,0)rt.Font=Enum.Font.GothamBold rt.TextSize=14 rt.Text="RELOADING..."rt.Visible=false
local kf=Instance.new("Frame",hud)kf.Name="KillFeed"kf.Size=UDim2.new(0,250,0,200)kf.Position=UDim2.new(1,-260,0,10)kf.BackgroundTransparency=1
Instance.new("UIListLayout",kf)
local sf=Instance.new("Frame",hud)sf.Name="ScoreFrame"sf.Size=UDim2.new(0,200,0,40)sf.Position=UDim2.new(0.5,-100,0,10)sf.BackgroundColor3=Color3.fromRGB(20,20,20)sf.BackgroundTransparency=0.5 sf.BorderSizePixel=0
local st=Instance.new("TextLabel",sf)st.Name="ScoreText"st.Size=UDim2.new(1,0,1,0)st.BackgroundTransparency=1 st.TextColor3=Color3.new(1,1,1)st.Font=Enum.Font.GothamBold st.TextSize=20 st.Text="KILLS: 0"
local sb=Instance.new("TextLabel",hud)sb.Name="StreakBanner"sb.Size=UDim2.new(0,400,0,60)sb.Position=UDim2.new(0.5,-200,0.3,0)sb.BackgroundTransparency=1 sb.TextColor3=Color3.fromRGB(255,50,50)sb.Font=Enum.Font.GothamBold sb.TextSize=36 sb.TextStrokeTransparency=0.3 sb.Text=""sb.Visible=false
local vi=Instance.new("ImageLabel",hud)vi.Name="DamageVignette"vi.Size=UDim2.new(1,0,1,0)vi.BackgroundTransparency=1 vi.ImageTransparency=1 vi.Image="rbxassetid://1489679531"vi.ImageColor3=Color3.new(1,0,0)
local mm=Instance.new("Frame",hud)mm.Name="Minimap"mm.Size=UDim2.new(0,150,0,150)mm.Position=UDim2.new(0,10,0,10)mm.BackgroundColor3=Color3.fromRGB(20,20,30)mm.BorderSizePixel=2 mm.BorderColor3=Color3.fromRGB(100,100,100)
local md=Instance.new("Frame",mm)md.Name="PlayerDot"md.Size=UDim2.new(0,6,0,6)md.Position=UDim2.new(0.5,-3,0.5,-3)md.BackgroundColor3=Color3.fromRGB(0,150,255)md.BorderSizePixel=0 md.Shape=Enum.UIRectShape.Circle
local wl=Instance.new("Frame",hud)wl.Name="WeaponList"wl.Size=UDim2.new(0,500,0,25)wl.Position=UDim2.new(0.5,-250,1,-25)wl.BackgroundColor3=Color3.fromRGB(15,15,15)wl.BackgroundTransparency=0.5 wl.BorderSizePixel=0
local cats={{"[1-6] AR",Color3.fromRGB(100,150,255)},{"[7-0] SMG",Color3.fromRGB(100,255,100)},{"[QET] SNIPER",Color3.fromRGB(255,100,100)},{"[ZX] SHOTGUN",Color3.fromRGB(255,200,50)},{"[CV] LMG",Color3.fromRGB(200,100,255)},{"[BNG] PISTOL/RPG",Color3.fromRGB(255,150,100)}}
for i,c in ipairs(cats)do local l=Instance.new("TextLabel",wl)l.Size=UDim2.new(1/#cats,0,1,0)l.Position=UDim2.new((i-1)/#cats,0,0,0)l.BackgroundColor3=c[2]l.BackgroundTransparency=0.7 l.TextColor3=Color3.new(1,1,1)l.Font=Enum.Font.GothamBold l.TextSize=10 l.Text=c[1]end
print("HUD DONE")

49
roblox-fps-p5-player.lua Normal file
View File

@@ -0,0 +1,49 @@
-- PLAYER SETUP SCRIPT (~2500 chars)
local ps=Instance.new("LocalScript",game.StarterPlayer.StarterPlayerScripts)ps.Name="PlayerSetup"
ps.Source=[[
local P=game:GetService("Players")local RS=game:GetService("RunService")local UI=game:GetService("UserInputService")local RepS=game:GetService("ReplicatedStorage")local TS=game:GetService("TweenService")
local pl=P.LocalPlayer local cam=workspace.CurrentCamera
pl.CharacterAdded:Connect(function(c)
local h=c:WaitForChild("Humanoid")local rp=c:WaitForChild("HumanoidRootPart")
RS.RenderStepped:Connect(function()
if h.Health>0 then cam.CameraType=Enum.CameraType.LockFirstPerson local hd=c:FindFirstChild("Head")if hd then cam.CFrame=hd.CFrame end end
end)
local sp=false cr=false
UI.InputBegan:Connect(function(i,g)if g then return end
if i.KeyCode==Enum.KeyCode.LeftShift then sp=true h.WalkSpeed=28
elseif i.KeyCode==Enum.KeyCode.LeftControl then cr=true h.WalkSpeed=8 end end)
UI.InputEnded:Connect(function(i)
if i.KeyCode==Enum.KeyCode.LeftShift then sp=false h.WalkSpeed=cr and 8 or 18
elseif i.KeyCode==Enum.KeyCode.LeftControl then cr=false h.WalkSpeed=sp and 28 or 18 end end)
end)
local E=RepS:WaitForChild("Events")
local KE=E:WaitForChild("KillEvent")local DE=E:WaitForChild("DamageEvent")local HME=E:WaitForChild("HitMarkerEvent")
KE.OnClientEvent:Connect(function(k)
local hd=pl:WaitForChild("PlayerGui"):WaitForChild("FPS_HUD")local kf=hd:FindFirstChild("KillFeed")
local e=Instance.new("TextLabel",kf)e.Size=UDim2.new(1,0,0,20)e.BackgroundColor3=Color3.fromRGB(0,0,0)e.BackgroundTransparency=0.5 e.TextColor3=Color3.new(1,1,1)e.Font=Enum.Font.GothamBold e.TextSize=13 e.Text=pl.Name.." eliminated "..(k or "Enemy")e.TextXAlignment=Enum.TextXAlignment.Right
game:GetService("Debris"):AddItem(e,5)end)
DE.OnClientEvent:Connect(function(d)
local hd=pl.PlayerGui:FindFirstChild("FPS_HUD")local v=hd and hd:FindFirstChild("DamageVignette")
if v then v.ImageTransparency=0.3 TS:Create(v,TweenInfo.new(0.8),{ImageTransparency=1}):Play()end end)
HME.OnClientEvent:Connect(function(hs)
local hd=pl.PlayerGui:FindFirstChild("FPS_HUD")local m=hd and hd:FindFirstChild("HitMarker")
if m then m.Visible=true for _,c in pairs(m:GetChildren())do c.BackgroundColor3=hs and Color3.fromRGB(255,50,50)or Color3.new(1,1,1)end task.delay(0.15,function()m.Visible=false end)end end)
RS.RenderStepped:Connect(function()
local hd=pl.PlayerGui:FindFirstChild("FPS_HUD")if not hd then return end
local mm=hd:FindFirstChild("Minimap")if not mm then return end
local c=pl.Character if not c or not c:FindFirstChild("HumanoidRootPart")then return end
local pos=c.HumanoidRootPart.Position
for _,x in pairs(mm:GetChildren())do if x.Name=="EnemyDot"then x:Destroy()end end
local dt=mm:FindFirstChild("PlayerDot")if dt then dt.Position=UDim2.new(0,(pos.X/400+0.5)*150-3,0,(pos.Z/400+0.5)*150-3)end
for _,o in pairs(workspace:GetChildren())do
if o:IsA("Model")and o.Name=="EnemySoldier"and o:FindFirstChild("HumanoidRootPart")then
local ep=o.HumanoidRootPart.Position if(ep-pos).Magnitude<100 then
local d=Instance.new("Frame",mm)d.Name="EnemyDot"d.Size=UDim2.new(0,4,0,4)d.Position=UDim2.new(0,(ep.X/400+0.5)*150-2,0,(ep.Z/400+0.5)*150-2)d.BackgroundColor3=Color3.new(1,0,0)d.BorderSizePixel=0 d.Shape=Enum.UIRectShape.Circle end end end
if c:FindFirstChild("Humanoid")then
local hh=c.Humanoid local hf=hd:FindFirstChild("HealthFrame")
if hf then local fl=hf:FindFirstChild("HealthFill")local tx=hf:FindFirstChild("HealthText")
if fl then fl.Size=UDim2.new(hh.Health/hh.MaxHealth,0,1,0)if hh.Health>60 then fl.BackgroundColor3=Color3.fromRGB(0,200,0)elseif hh.Health>30 then fl.BackgroundColor3=Color3.fromRGB(255,200,0)else fl.BackgroundColor3=Color3.fromRGB(255,0,0)end end
if tx then tx.Text=math.floor(hh.Health).." HP"end end end end end)
print("[PlayerSetup] Loaded!")
]]
print("PLAYER SETUP DONE")

60
roblox-fps-p6-weapons.lua Normal file
View File

@@ -0,0 +1,60 @@
-- WEAPON CONTROLLER SCRIPT (~3200 chars)
local wc=Instance.new("LocalScript",game.StarterPlayer.StarterPlayerScripts)wc.Name="WeaponController"
wc.Source=[[
local P=game:GetService("Players")local RS=game:GetService("RunService")local UI=game:GetService("UserInputService")local RepS=game:GetService("ReplicatedStorage")local TS=game:GetService("TweenService")local D=game:GetService("Debris")
local pl=P.LocalPlayer local cam=workspace.CurrentCamera local ms=pl:GetMouse()
local E=RepS:WaitForChild("Events")local HE=E.HitEvent local KE=E.KillEvent
local WD=require(RepS:WaitForChild("Shared"):WaitForChild("WeaponData"))
local ci=1 ammo={} isR=false isA=false canS=true ro=0 so=0 kills=0 ks=0 lkt=0 holdM=false
for i,w in ipairs(WD)do ammo[i]=w.MagSize end
local km={}for i,w in ipairs(WD)do km[w.Key]=i end
local function sw(idx)
if idx<1 or idx>#WD or isR then return end ci=idx local w=WD[ci]
isA=false cam.FieldOfView=70 ro=0 so=0
local hd=pl.PlayerGui:FindFirstChild("FPS_HUD")
if hd then local at=hd.AmmoFrame.AmmoText local wn=hd.AmmoFrame.WeaponName if at then at.Text=ammo[ci].." / "..w.MagSize end if wn then wn.Text=w.Name end end end
UI.InputBegan:Connect(function(i,g)if g then return end
if km[i.KeyCode]then sw(km[i.KeyCode])end
if i.UserInputType==Enum.UserInputType.MouseButton2 then
local w=WD[ci]if w.ScopeZoom then isA=true cam.FieldOfView=70/w.ScopeZoom else isA=true TS:Create(cam,TweenInfo.new(0.15),{FieldOfView=45}):Play()end end
if i.KeyCode==Enum.KeyCode.R and not isR then
local w=WD[ci]if ammo[ci]<w.MagSize then isR=true canS=false
local hd=pl.PlayerGui:FindFirstChild("FPS_HUD")if hd then hd.ReloadBar.Visible=true hd.ReloadText.Visible=true local f=hd.ReloadBar.Fill f.Size=UDim2.new(0,0,1,0)TS:Create(f,TweenInfo.new(w.ReloadTime),{Size=UDim2.new(1,0,1,0)}):Play()end
task.delay(w.ReloadTime,function()ammo[ci]=w.MagSize isR=false canS=true local hd=pl.PlayerGui:FindFirstChild("FPS_HUD")if hd then hd.ReloadBar.Visible=false hd.ReloadText.Visible=false local at=hd.AmmoFrame.AmmoText if at then at.Text=ammo[ci].." / "..w.MagSize end end end)end end end)
UI.InputEnded:Connect(function(i)if i.UserInputType==Enum.UserInputType.MouseButton2 then isA=false TS:Create(cam,TweenInfo.new(0.15),{FieldOfView=70}):Play()end end)
local function shoot()
local w=WD[ci]if not canS or isR then return end if ammo[ci]<=0 then return end
ammo[ci]=ammo[ci]-1
local hd=pl.PlayerGui:FindFirstChild("FPS_HUD")if hd then local at=hd.AmmoFrame.AmmoText if at then at.Text=ammo[ci].." / "..w.MagSize end end
local c=pl.Character if not c or not c:FindFirstChild("Head")then return end
local h=c.Head local sp=isA and w.ADS_Spread or w.Spread sp=sp+so
local ro2=(ms.Hit.Position-h.Position).Unit+Vector3.new((math.random()-0.5)*sp,(math.random()-0.5)*sp,(math.random()-0.5)*sp).Unit
local rp=RaycastParams.new()rp.FilterType=Enum.RaycastFilterType.Exclude rp.FilterDescendantsInstances={c}
local pe=w.Pellets or 1
for p=1,pe do
local d=ro2 if pe>1 then d=ro2+Vector3.new((math.random()-0.5)*w.Spread*2,(math.random()-0.5)*w.Spread*2,(math.random()-0.5)*w.Spread*2).Unit end
local r=workspace:Raycast(h.Position,d*w.Range,rp)
if r then local hp=r.Instance local hs=hp.Name=="Head"
local tr=Instance.new("Part",workspace)tr.Size=Vector3.new(0.1,0.1,(r.Position-h.Position).Magnitude)tr.CFrame=CFrame.lookAt(h.Position,r.Position)*CFrame.new(0,0,-tr.Size.Z/2)tr.Anchored=true tr.CanCollide=false tr.BrickColor=BrickColor.new("Bright yellow")tr.Material=Enum.Material.Neon tr.Transparency=0.3 D:AddItem(tr,0.15)
if hp.Parent and hp.Parent:FindFirstChild("Humanoid")then local hm=hp.Parent.Humanoid if hm and hm.Health>0 then
local dm=hs and w.Damage*w.HeadMulti or w.Damage
if w.Explosive then dm=w.Damage local ex=Instance.new("Explosion",workspace)ex.Position=r.Position ex.BlastRadius=w.BlastRadius or 20 ex.BlastPressure=500000 end
HE:FireServer(hp,dm,hs,w.Name)
if hm.Health<=0 then kills=kills+1 ks=ks+1 lkt=tick()
if hd then local st=hd.ScoreFrame.ScoreText if st then st.Text="KILLS: "..kills end
local bn=hd.StreakBanner
if bn then local sk={{2,"DOUBLE KILL!"},{3,"TRIPLE KILL!"},{5,"KILLING SPREE!"},{7,"UNSTOPPABLE!"},{10,"GODLIKE!"}}for _,s in ipairs(sk)do if ks==s[1]then bn.Text=s[2]bn.Visible=true task.delay(2,function()bn.Visible=false end)break end end end end
KE:FireServer("EnemySoldier")end end end end
ro=math.min(ro+w.Recoil,w.Recoil*5)so=math.min(so+w.Spread*0.5,w.Spread*3)
if ammo[ci]<=0 then task.delay(0.3,function()if ammo[ci]<=0 and not isR then isR=true canS=false local ww=WD[ci]local hd=pl.PlayerGui:FindFirstChild("FPS_HUD")if hd then hd.ReloadBar.Visible=true hd.ReloadText.Visible=true local f=hd.ReloadBar.Fill f.Size=UDim2.new(0,0,1,0)TS:Create(f,TweenInfo.new(ww.ReloadTime),{Size=UDim2.new(1,0,1,0)}):Play()end task.delay(ww.ReloadTime,function()ammo[ci]=ww.MagSize isR=false canS=true local hd=pl.PlayerGui:FindFirstChild("FPS_HUD")if hd then hd.ReloadBar.Visible=false hd.ReloadText.Visible=false local at=hd.AmmoFrame.AmmoText if at then at.Text=ammo[ci].." / "..ww.MagSize end end end)end end)end end
UI.InputBegan:Connect(function(i,g)if g then return end
if i.UserInputType==Enum.UserInputType.MouseButton1 then holdM=true local w=WD[ci]
if w.Auto then task.spawn(function()while holdM and canS do shoot()task.wait(w.FireRate)end end)
elseif w.BurstCount then for b=1,w.BurstCount do shoot()task.wait(w.FireRate)end else shoot()end end end)
UI.InputEnded:Connect(function(i)if i.UserInputType==Enum.UserInputType.MouseButton1 then holdM=false end end)
RS.RenderStepped:Connect(function()
ro=math.max(ro-0.15,0)so=math.max(so-0.01,0)
if tick()-lkt>5 and ks>0 then ks=0 end end)
sw(1)print("[WeaponController] 20 weapons loaded!")
]]
print("WEAPON CONTROLLER DONE")