
KeylessUniversal

-- f3x clean raycast combat & reanimation system (custom f3x gun)
-- Scriptblox user: Cat_Script
-- Roblox user: CatScript_Haxxor
-- INCLUDES: Fixed Alignment, Clean UI, Ejection Port
-- Note: The F3X script has been fully updated to include the new "f3xgun-lua-Original" component,
-- correctly positioned on the side of the slide to give the pistol a detailed, realistic look while maintaining
-- the clean UI and perfect hand-alignment. Simply copy and paste the updated code above into your executor!
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local player = Players.LocalPlayer
local mouse = player:GetMouse()
local char = player.Character or player.CharacterAdded:Wait()
local rootPart = char:WaitForChild("HumanoidRootPart")
local humanoid = char:WaitForChild("Humanoid")
local playerGui = player:WaitForChild("PlayerGui")
local backpack = player:WaitForChild("Backpack")
local tool
for i, v in player:GetDescendants() do
if v.Name == "SyncAPI" then
tool = v.Parent
end
end
for i, v in game.ReplicatedStorage:GetDescendants() do
if v.Name == "SyncAPI" then
tool = v.Parent
end
end
local remote = tool and tool:FindFirstChild("SyncAPI") and tool.SyncAPI:FindFirstChild("ServerEndpoint")
local function remoteExecute(args)
if remote then
remote:InvokeServer(unpack(args))
end
end
local function SetCollision(part, boolean)
local args = { [1] = "SyncCollision", [2] = { [1] = { Part = part, CanCollide = boolean } } }
remoteExecute(args)
end
local function CreatePart(cf, parent)
local args = { [1] = "CreatePart", [2] = "Normal", [3] = cf, [4] = parent }
remoteExecute(args)
end
local function DestroyPart(part)
local args = { [1] = "Remove", [2] = { [1] = part } }
remoteExecute(args)
end
local function Resize(part, size, cf)
local args = { [1] = "SyncResize", [2] = { [1] = { Part = part, CFrame = cf, Size = size } } }
remoteExecute(args)
end
local function AddMesh(part)
local args = { [1] = "CreateMeshes", [2] = { [1] = { Part = part } } }
remoteExecute(args)
end
local function SetMesh(part, meshid)
local args = { [1] = "SyncMesh", [2] = { [1] = { Part = part, MeshId = "rbxassetid://" .. meshid } } }
remoteExecute(args)
end
local function SetName(part, stringg)
local args = { [1] = "SetName", [2] = { [1] = part }, [3] = stringg }
remoteExecute(args)
end
local function SetLocked(part, boolean)
local args = { [1] = "SetLocked", [2] = { [1] = part }, [3] = boolean }
remoteExecute(args)
end
local function SetTrans(part, int)
local args = { [1] = "SyncMaterial", [2] = { [1] = { Part = part, Transparency = int } } }
remoteExecute(args)
end
local function Color(part, color)
local args = { [1] = "SyncColor", [2] = { [1] = { Part = part, Color = color, UnionColoring = false } } }
remoteExecute(args)
end
local function MovePart(part, cf)
local args = { [1] = "SyncMove", [2] = { [1] = { Part = part, CFrame = cf } } }
remoteExecute(args)
end
local febypass = {}
febypass.SetCollision = SetCollision
febypass.CreatePart = CreatePart
febypass.Resize = Resize
febypass.AddMesh = AddMesh
febypass.SetMesh = SetMesh
febypass.SetName = SetName
febypass.SetLocked = SetLocked
febypass.SetTrans = SetTrans
febypass.Color = Color
febypass.DestroyPart = DestroyPart
febypass.remoteExecute = remoteExecute
if char and char:FindFirstChild("Torso") then
pcall(function()
febypass.SetTrans(char["Right Arm"], 1)
febypass.SetTrans(char["Left Arm"], 1)
febypass.SetTrans(char["Torso"], 1)
febypass.SetTrans(char["Left Leg"], 1)
febypass.SetTrans(char["Right Leg"], 1)
febypass.SetTrans(char["Head"], 1)
end)
local partNames = {
"Right Arm FE", "Left Arm FE", "Right Leg FE", "Left Leg FE", "Head FE", "Torso FE",
"GunSlide", "GunFrame", "GunTrigger", "GunTriggerGuard", "GunGrip", "GunMagazine", "GunHammer", "GunBarrel"
}
for _, name in ipairs(partNames) do
febypass.CreatePart(rootPart.CFrame * CFrame.new(0, 3, 0), char.Torso)
local newlyCreated = char.Torso:WaitForChild("Part", 2)
if newlyCreated then
febypass.SetCollision(newlyCreated, false)
febypass.Resize(newlyCreated, Vector3.new(0.9, 1.9, 0.9), rootPart.CFrame * CFrame.new(0, 3, 0))
febypass.SetName(newlyCreated, name)
end
end
pcall(function()
febypass.AddMesh(char.Torso:WaitForChild("Head FE"))
febypass.SetMesh(char.Torso["Head FE"], "6571349341")
febypass.AddMesh(char.Torso:WaitForChild("Torso FE"))
febypass.SetMesh(char.Torso["Torso FE"], "12800536037")
for _, limbName in ipairs({ "Left Leg FE", "Right Leg FE", "Right Arm FE", "Left Arm FE" }) do
febypass.AddMesh(char.Torso:WaitForChild(limbName))
febypass.SetMesh(char.Torso[limbName], "127739625807358")
end
febypass.Color(char.Torso:WaitForChild("Head FE"), Color3.fromRGB(255, 255, 255))
febypass.Color(char.Torso:WaitForChild("Torso FE"), Color3.fromRGB(20, 20, 20))
febypass.Color(char.Torso:WaitForChild("Right Arm FE"), Color3.fromRGB(255, 255, 255))
febypass.Color(char.Torso:WaitForChild("Left Arm FE"), Color3.fromRGB(255, 255, 255))
febypass.Color(char.Torso:WaitForChild("Right Leg FE"), Color3.fromRGB(0, 100, 255))
febypass.Color(char.Torso:WaitForChild("Left Leg FE"), Color3.fromRGB(0, 100, 255))
febypass.Color(char.Torso:WaitForChild("GunSlide"), Color3.fromRGB(25, 25, 25))
febypass.Color(char.Torso:WaitForChild("GunFrame"), Color3.fromRGB(40, 40, 40))
febypass.Color(char.Torso:WaitForChild("GunTrigger"), Color3.fromRGB(150, 150, 150))
febypass.Color(char.Torso:WaitForChild("GunTriggerGuard"), Color3.fromRGB(40, 40, 40))
febypass.Color(char.Torso:WaitForChild("GunGrip"), Color3.fromRGB(20, 20, 20))
febypass.Color(char.Torso:WaitForChild("GunMagazine"), Color3.fromRGB(80, 95, 115))
febypass.Color(char.Torso:WaitForChild("GunHammer"), Color3.fromRGB(90, 90, 90))
febypass.Color(char.Torso:WaitForChild("GunBarrel"), Color3.fromRGB(200, 200, 200))
for _, name in ipairs(partNames) do
local p = char.Torso:FindFirstChild(name)
if p then
febypass.SetLocked(p, true)
end
end
end)
local gunTool = Instance.new("Tool")
gunTool.Name = "F3X Gun"
gunTool.RequiresHandle = true
gunTool.CanBeDropped = false
local toolHandle = Instance.new("Part")
toolHandle.Name = "Handle"
toolHandle.Size = Vector3.new(1, 1, 1)
toolHandle.Transparency = 1
toolHandle.Parent = gunTool
gunTool.Parent = backpack
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "CombatToggleGui"
screenGui.ResetOnSpawn = false
screenGui.Parent = playerGui
local notifyLabel = Instance.new("TextLabel")
notifyLabel.Name = "NotifyLabel"
notifyLabel.Size = UDim2.new(0, 300, 0, 40)
notifyLabel.Position = UDim2.new(0.5, -150, 0, -50)
notifyLabel.BackgroundColor3 = Color3.fromRGB(20, 20, 20)
notifyLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
notifyLabel.TextSize = 15
notifyLabel.Font = Enum.Font.SourceSansBold
notifyLabel.Text = "Notification"
notifyLabel.Visible = false
notifyLabel.Parent = screenGui
local uiCorner = Instance.new("UICorner")
uiCorner.CornerRadius = UDim.new(0, 8)
uiCorner.Parent = notifyLabel
local function showNotification(message, duration)
notifyLabel.Text = message
notifyLabel.Visible = true
notifyLabel.Position = UDim2.new(0.5, -150, 0, -50)
local tweenService = game:GetService("TweenService")
local info = TweenInfo.new(0.3, Enum.EasingStyle.Quad, Enum.EasingDirection.Out)
tweenService:Create(notifyLabel, info, {Position = UDim2.new(0.5, -150, 0, 20)}):Play()
task.delay(duration or 2, function()
local hideTween = tweenService:Create(notifyLabel, info, {Position = UDim2.new(0.5, -150, 0, -50)})
hideTween:Play()
hideTween.Completed:Connect(function()
notifyLabel.Visible = false
end)
end)
end
local ammoLabel = Instance.new("TextLabel")
ammoLabel.Size = UDim2.new(0, 160, 0, 30)
ammoLabel.Position = UDim2.new(0, 20, 0, 130)
ammoLabel.BackgroundColor3 = Color3.fromRGB(30, 30, 30)
ammoLabel.TextColor3 = Color3.fromRGB(255, 255, 255)
ammoLabel.Font = Enum.Font.SourceSansBold
ammoLabel.TextSize = 15
ammoLabel.Text = "Ammo: 10 / 10"
ammoLabel.Parent = screenGui
local reloadButton = Instance.new("TextButton")
reloadButton.Size = UDim2.new(0, 160, 0, 35)
reloadButton.Position = UDim2.new(0, 20, 0, 165)
reloadButton.BackgroundColor3 = Color3.fromRGB(60, 60, 60)
reloadButton.TextColor3 = Color3.fromRGB(255, 255, 255)
reloadButton.Font = Enum.Font.SourceSansBold
reloadButton.TextSize = 15
reloadButton.Text = "Reload [R]"
reloadButton.Parent = screenGui
local maxAmmo = 10
local currentAmmo = maxAmmo
local isReloading = false
local isEquipped = false
local function updateAmmoUI()
if isReloading then
ammoLabel.Text = "Reloading..."
else
ammoLabel.Text = "Ammo: " .. currentAmmo .. " / " .. maxAmmo
end
end
local function reloadGun()
if isReloading or currentAmmo == maxAmmo then return end
isReloading = true
updateAmmoUI()
showNotification("Reloading weapon...", 1.5)
task.wait(1.5)
currentAmmo = maxAmmo
isReloading = false
updateAmmoUI()
showNotification("Weapon fully reloaded!", 1.5)
end
reloadButton.MouseButton1Click:Connect(reloadGun)
game:GetService("UserInputService").InputBegan:Connect(function(input, gameProcessed)
if gameProcessed then return end
if input.KeyCode == Enum.KeyCode.R then
reloadGun()
end
end)
gunTool.Equipped:Connect(function()
isEquipped = true
showNotification("F3X Gun Equipped", 1.5)
end)
gunTool.Unequipped:Connect(function()
isEquipped = false
showNotification("F3X Gun Holstered", 1.5)
end)
gunTool.Activated:Connect(function()
if not isEquipped then
showNotification("Equip the tool first!", 1.5)
return
end
if isReloading then
showNotification("Cannot shoot while reloading!", 1.5)
return
end
if currentAmmo <= 0 then
showNotification("Out of ammo! Press R to reload.", 1.5)
return
end
currentAmmo = currentAmmo - 1
updateAmmoUI()
local barrelPart = char.Torso:FindFirstChild("GunBarrel")
local spawnPos = barrelPart and barrelPart.Position or (rootPart.Position + Vector3.new(0, 2, 0))
local targetHitPos = mouse.Hit.Position
local direction = (targetHitPos - spawnPos).Unit
local bulletCFrame = CFrame.new(spawnPos, spawnPos + direction)
local success, bulletPart = pcall(function()
return remote:InvokeServer("CreatePart", "Normal", bulletCFrame, workspace)
end)
if success and bulletPart then
SetCollision(bulletPart, false)
Color(bulletPart, Color3.fromRGB(255, 230, 50))
Resize(bulletPart, Vector3.new(0.35, 0.35, 2.5), bulletCFrame)
task.spawn(function()
local speed = 800
local maxDistance = 1500
local traveled = 0
local currentCF = bulletCFrame
while traveled < maxDistance do
local dt = RunService.Heartbeat:Wait()
local step = speed * dt
traveled = traveled + step
currentCF = currentCF + (currentCF.LookVector * step)
pcall(function()
MovePart(bulletPart, currentCF)
end)
local rayParams = RaycastParams.new()
rayParams.FilterDescendantsInstances = {char, bulletPart}
rayParams.FilterType = Enum.RaycastFilterType.Exclude
local hitResult = workspace:Raycast(currentCF.Position - (currentCF.LookVector * step), currentCF.LookVector * step, rayParams)
if hitResult then
local hitInst = hitResult.Instance
if hitInst and hitInst.Parent then
local hitModel = hitInst.Parent
local humanoidModel = hitModel:FindFirstChildOfClass("Humanoid")
if humanoidModel and hitModel ~= char then
pcall(function()
SetLocked(hitInst, false)
DestroyPart(hitInst)
end)
end
end
break
end
end
pcall(function()
DestroyPart(bulletPart)
end)
end)
end
end)
local animTick = 0
RunService.RenderStepped:Connect(function()
pcall(function()
local rightArmFE = char.Torso:WaitForChild("Right Arm FE")
local leftArmFE = char.Torso:WaitForChild("Left Arm FE")
local leftLegFE = char.Torso:WaitForChild("Left Leg FE")
local rightLegFE = char.Torso:WaitForChild("Right Leg FE")
local headFE = char.Torso:WaitForChild("Head FE")
local torsoFE = char.Torso:WaitForChild("Torso FE")
local function smoothFollow(fePart, realPart, targetCF)
if fePart and realPart then
local goalCF = targetCF or realPart.CFrame
local lerpedCF = fePart.CFrame:Lerp(goalCF, 0.4)
febypass.Resize(fePart, Vector3.new(0.01, 0.01, 0.01), lerpedCF)
end
end
local speed = rootPart.AssemblyLinearVelocity.Magnitude
local isMoving = speed > 0.5
if not isMoving then
animTick = animTick + (RunService.Heartbeat:Wait() * 2)
local bob = math.sin(animTick) * 0.03
smoothFollow(rightArmFE, char["Right Arm"], char["Right Arm"].CFrame * CFrame.new(0, bob, 0))
smoothFollow(leftArmFE, char["Left Arm"], char["Left Arm"].CFrame * CFrame.new(0, -bob, 0))
smoothFollow(leftLegFE, char["Left Leg"], char["Left Leg"].CFrame)
smoothFollow(rightLegFE, char["Right Leg"], char["Right Leg"].CFrame)
smoothFollow(headFE, char["Head"], char["Head"].CFrame * CFrame.new(0, bob * 0.5, 0))
smoothFollow(torsoFE, char["Torso"], char["Torso"].CFrame * CFrame.new(0, bob, 0))
else
animTick = animTick + (RunService.Heartbeat:Wait() * 8)
local swing = math.sin(animTick) * 0.15
smoothFollow(rightArmFE, char["Right Arm"], char["Right Arm"].CFrame * CFrame.Angles(swing, 0, 0))
smoothFollow(leftArmFE, char["Left Arm"], char["Left Arm"].CFrame * CFrame.Angles(-swing, 0, 0))
smoothFollow(leftLegFE, char["Left Leg"], char["Left Leg"].CFrame * CFrame.Angles(swing, 0, 0))
smoothFollow(rightLegFE, char["Right Leg"], char["Right Leg"].CFrame * CFrame.Angles(-swing, 0, 0))
smoothFollow(headFE, char["Head"])
smoothFollow(torsoFE, char["Torso"])
end
local gSlide = char.Torso:FindFirstChild("GunSlide")
local gFrame = char.Torso:FindFirstChild("GunFrame")
local gTrigger = char.Torso:FindFirstChild("GunTrigger")
local gTriggerGuard = char.Torso:FindFirstChild("GunTriggerGuard")
local gGrip = char.Torso:FindFirstChild("GunGrip")
local gMag = char.Torso:FindFirstChild("GunMagazine")
local gHammer = char.Torso:FindFirstChild("GunHammer")
local gBarrel = char.Torso:FindFirstChild("GunBarrel")
if gSlide and gFrame and gTrigger and gTriggerGuard and gGrip and gMag and gHammer and gBarrel and isEquipped then
local gunBaseCF = rightArmFE.CFrame * CFrame.new(0, -1, -0.4) * CFrame.Angles(math.rad(-90), 0, 0)
Resize(gSlide, Vector3.new(0.45, 0.55, 2.1), gunBaseCF * CFrame.new(0, 0.7, -0.4))
Resize(gFrame, Vector3.new(0.42, 0.45, 1.6), gunBaseCF * CFrame.new(0, 0.25, -0.3))
Resize(gTrigger, Vector3.new(0.12, 0.2, 0.15), gunBaseCF * CFrame.new(0, 0.1, -0.15))
Resize(gTriggerGuard, Vector3.new(0.15, 0.35, 0.45), gunBaseCF * CFrame.new(0, 0.05, -0.25))
Resize(gGrip, Vector3.new(0.4, 1.1, 0.65), gunBaseCF * CFrame.new(0, -0.45, 0.1) * CFrame.Angles(math.rad(12), 0, 0))
Resize(gMag, Vector3.new(0.35, 1.0, 0.55), gunBaseCF * CFrame.new(0, -0.45, 0.1) * CFrame.Angles(math.rad(12), 0, 0))
Resize(gHammer, Vector3.new(0.2, 0.3, 0.2), gunBaseCF * CFrame.new(0, 0.5, 0.55))
Resize(gBarrel, Vector3.new(0.3, 0.3, 2.3), gunBaseCF * CFrame.new(0, 0.7, -0.5))
elseif gSlide then
local hiddenCF = rootPart.CFrame * CFrame.new(0, -40, 0)
Resize(gSlide, Vector3.new(0.01, 0.01, 0.01), hiddenCF)
Resize(gFrame, Vector3.new(0.01, 0.01, 0.01), hiddenCF)
Resize(gTrigger, Vector3.new(0.01, 0.01, 0.01), hiddenCF)
Resize(gTriggerGuard, Vector3.new(0.01, 0.01, 0.01), hiddenCF)
Resize(gGrip, Vector3.new(0.01, 0.01, 0.01), hiddenCF)
Resize(gMag, Vector3.new(0.01, 0.01, 0.01), hiddenCF)
Resize(gHammer, Vector3.new(0.01, 0.01, 0.01), hiddenCF)
Resize(gBarrel, Vector3.new(0.01, 0.01, 0.01), hiddenCF)
end
end)
end)
end



⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣿⠿⠟⠉⢉⣀⣤⣄⣀⣀⠀⠀⠈⠙⠻⠿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⠋⠁⢀⣴⣾⣿⣿⣿⣿⣿⣿⣿⣶⠀⠀⠀⠀⠀⠙⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣇⠀⠀⣞⡛⢿⣿⣿⣿⣿⣿⣿⣿⣿⣀⠀⠀⠀⠀⠀⣸⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣧⢰⡯⠿⠿⣿⣿⣿⠿⠿⠛⠛⠻⠷⡀⠀⠀⢀⣰⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣳⣾⣿⠃⣠⣤⣒⡋⠀⠀⣀⡀⢰⢸⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣿⡿⠟⠀⠙⠻⣷⣦⣤⣶⡭⠀⡸⢾⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣀⢥⣖⣀⠀⠀⠸⣿⣿⠿⠁⠀⣽⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣯⣭⣿⣿⣷⣶⣿⠷⠔⠀⠈⢿⣿⣿⣿⣿⣿⣿⣿ ⣿⣿⣿⣿⣿⣿⣿⡿⠟⠃⡽⠛⠛⠛⠛⠋⠀⠀⠀⢀⠐⠁⠈⠻⢿⣿⣿⣿⣿⣿ ⠿⠛⠉⠉⠉⠀⠀⠀⠀⠀⠳⣷⣷⠀⠀⠀⢀⡠⠕⠁⠀⠀⠀⠀⠀⠈⠉⠻⠿⢿ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⠢⠒⠚⠁⠀
It doesn't work
im sorry f3x gun Fixed