
KeylessUniversal

local WindUI = loadstring(game:HttpGet("https://github.com/Footagesus/WindUI/releases/latest/download/main.lua"))()
local Players = game:GetService("Players")
local RS = game:GetService("RunService")
local Player = Players.LocalPlayer
local Camera = workspace.CurrentCamera
local State = {
AimEnabled = false,
AimFOV = 150,
LockHead = false,
LockClosest = false,
AimWallbang = false,
ESPEnabled = false,
ESPThroughWalls = false,
Language = "English"
}
local CurrentLock, TargetPart = nil, nil
-- คลังคำแปลภาษา (Translations Dictionary)
local Translations = {
["English"] = {
WindowTitle = "Pun Aimbot",
MainTab = "Main",
AimbotSection = "Aimbot Controls",
AimbotDesc = "Configure target lock-on properties and behaviors",
AimbotToggle = "Aimbot",
AimHead = "Aim Head*",
AimClosest = "Aim Closest*",
Wallbang = "Wallbang",
FOVSection = "FOV Configuration",
FOVDesc = "Adjust the active radius for locking onto targets",
FOVSize = "FOV Size",
ESPSection = "Visual ESP",
ESPDesc = "Highlight players on viewport (Pure Red Drawing Line & Name)",
ESPToggle = "ESP*",
ThroughWalls = "Through Walls",
SettingsTab = "Settings",
ThemeSection = "Theme Settings",
SelectTheme = "Select Theme",
LangSection = "Language Settings",
SelectLang = "Select Language"
},
["Thai"] = {
WindowTitle = "ปัน จุดมุ่งหมาย",
MainTab = "หน้าหลัก",
AimbotSection = "ระบบล็อกเป้า (Aimbot)",
AimbotDesc = "ตั้งค่ารูปแบบและการทำงานของระบบล็อกเป้า",
AimbotToggle = "เปิดใช้งาน Aimbot",
AimHead = "ล็อกหัว*",
AimClosest = "ล็อกจุดที่ใกล้ที่สุด*",
Wallbang = "ล็อกทะลุกำแพง",
FOVSection = "ตั้งค่า FOV",
FOVDesc = "ปรับขนาดรัศมีขอบเขตการล็อกเป้า",
FOVSize = "ขนาด FOV",
ESPSection = "ระบบมองทะลุ (ESP)",
ESPDesc = "แสดงกรอบและชื่อผู้เล่นด้วยเส้น Drawing สีแดง",
ESPToggle = "เปิดใช้งาน ESP*",
ThroughWalls = "แสดงผลทะลุกำแพง",
SettingsTab = "ปรับแต่ง",
ThemeSection = "ตั้งค่าธีม",
SelectTheme = "เลือกธีม",
LangSection = "ตั้งค่าภาษา",
SelectLang = "เลือกภาษา"
}
}
if Player.PlayerGui:FindFirstChild("AimbotFOV") then
Player.PlayerGui.AimbotFOV:Destroy()
end
local fovGui = Instance.new("ScreenGui")
fovGui.Name = "AimbotFOV"
fovGui.IgnoreGuiInset = true
fovGui.DisplayOrder = 999
fovGui.ResetOnSpawn = false
fovGui.Parent = Player:WaitForChild("PlayerGui")
local circ = Instance.new("Frame", fovGui)
circ.AnchorPoint, circ.BackgroundTransparency, circ.Visible = Vector2.new(0.5, 0.5), 1, false
local stroke = Instance.new("UIStroke", circ)
stroke.Thickness = 1.5
stroke.Color = Color3.fromRGB(255, 255, 255)
Instance.new("UICorner", circ).CornerRadius = UDim.new(1, 0)
local function IsVisible(part, char)
local rayParams = RaycastParams.new()
rayParams.FilterDescendantsInstances = {Player.Character, char, Camera}
rayParams.FilterType = Enum.RaycastFilterType.Exclude
return workspace:Raycast(Camera.CFrame.Position, (part.Position - Camera.CFrame.Position).Unit * (part.Position - Camera.CFrame.Position).Magnitude, rayParams) == nil
end
local function GetAimbotTarget()
if not State.AimEnabled then return nil, nil end
local targetPlr, targetPart, close = nil, nil, State.AimFOV
local mid = Vector2.new(Camera.ViewportSize.X/2, Camera.ViewportSize.Y/2)
for _, v in pairs(Players:GetPlayers()) do
if v ~= Player and v.Character and v.Character:FindFirstChild("Humanoid") and v.Character.Humanoid.Health > 0 then
local head = v.Character:FindFirstChild("Head")
local fallbackPart = head or v.Character:FindFirstChild("HumanoidRootPart") or v.Character:FindFirstChildWhichIsA("BasePart")
if fallbackPart then
local canAim = State.AimWallbang or IsVisible(fallbackPart, v.Character)
if canAim then
if State.LockHead and head then
local p, vis = Camera:WorldToViewportPoint(head.Position)
if vis and (Vector2.new(p.X, p.Y) - mid).Magnitude < close then
close, targetPlr, targetPart = (Vector2.new(p.X, p.Y) - mid).Magnitude, v, head
end
elseif State.LockClosest then
for _, part in pairs(v.Character:GetChildren()) do
if part:IsA("BasePart") and (State.AimWallbang or IsVisible(part, v.Character)) then
local p, vis = Camera:WorldToViewportPoint(part.Position)
if vis and (Vector2.new(p.X, p.Y) - mid).Magnitude < close then
close, targetPlr, targetPart = (Vector2.new(p.X, p.Y) - mid).Magnitude, v, part
end
end
end
end
end
end
end
end
return targetPlr, targetPart
end
local function NewLine(color, thickness)
local line = Drawing.new("Line")
line.Visible = false
line.From = Vector2.new(0, 0)
line.To = Vector2.new(0, 0)
line.Color = color
line.Thickness = thickness
line.Transparency = 1
return line
end
local function CreateDrawingESP(plr)
if plr == Player then return end
local Library = {
TL1 = NewLine(Color3.fromRGB(255, 0, 0), 2),
TL2 = NewLine(Color3.fromRGB(255, 0, 0), 2),
TR1 = NewLine(Color3.fromRGB(255, 0, 0), 2),
TR2 = NewLine(Color3.fromRGB(255, 0, 0), 2),
BL1 = NewLine(Color3.fromRGB(255, 0, 0), 2),
BL2 = NewLine(Color3.fromRGB(255, 0, 0), 2),
BR1 = NewLine(Color3.fromRGB(255, 0, 0), 2),
BR2 = NewLine(Color3.fromRGB(255, 0, 0), 2),
NameTag = Drawing.new("Text")
}
Library.NameTag.Visible = false
Library.NameTag.Center = true
Library.NameTag.Outline = true
Library.NameTag.OutlineColor = Color3.fromRGB(0, 0, 0)
Library.NameTag.Color = Color3.fromRGB(255, 0, 0)
Library.NameTag.Size = 13
Library.NameTag.Font = 2
local oripart = Instance.new("Part")
oripart.Parent = workspace
oripart.Transparency = 1
oripart.CanCollide = false
oripart.Size = Vector3.new(1, 1, 1)
oripart.Position = Vector3.new(0, 0, 0)
local connection
connection = RS.RenderStepped:Connect(function()
local char = plr.Character
if char and char:FindFirstChild("Humanoid") and char:FindFirstChild("HumanoidRootPart") and char.Humanoid.Health > 0 and char:FindFirstChild("Head") then
local isTargetVisible = IsVisible(char.Head, char)
local shouldShow = State.ESPEnabled and (State.ESPThroughWalls or isTargetVisible)
local HumPos, vis = Camera:WorldToViewportPoint(char.HumanoidRootPart.Position)
if shouldShow and vis then
oripart.Size = Vector3.new(char.HumanoidRootPart.Size.X, char.HumanoidRootPart.Size.Y * 1.5, char.HumanoidRootPart.Size.Z)
oripart.CFrame = CFrame.new(char.HumanoidRootPart.CFrame.Position, Camera.CFrame.Position)
local SizeX = oripart.Size.X
local SizeY = oripart.Size.Y
local TL = Camera:WorldToViewportPoint((oripart.CFrame * CFrame.new(SizeX, SizeY, 0)).Position)
local TR = Camera:WorldToViewportPoint((oripart.CFrame * CFrame.new(-SizeX, SizeY, 0)).Position)
local BL = Camera:WorldToViewportPoint((oripart.CFrame * CFrame.new(SizeX, -SizeY, 0)).Position)
local BR = Camera:WorldToViewportPoint((oripart.CFrame * CFrame.new(-SizeX, -SizeY, 0)).Position)
local dist = (Player.Character and Player.Character:FindFirstChild("HumanoidRootPart") and (Player.Character.HumanoidRootPart.Position - oripart.Position).Magnitude) or 100
local thicknessValue = math.clamp(1 / dist * 100, 1, 3)
local ratio = (Camera.CFrame.Position - char.HumanoidRootPart.Position).Magnitude
local offset = math.clamp(1 / ratio * 750, 2, 300)
Library.TL1.From = Vector2.new(TL.X, TL.Y)
Library.TL1.To = Vector2.new(TL.X + offset, TL.Y)
Library.TL2.From = Vector2.new(TL.X, TL.Y)
Library.TL2.To = Vector2.new(TL.X, TL.Y + offset)
Library.TR1.From = Vector2.new(TR.X, TR.Y)
Library.TR1.To = Vector2.new(TR.X - offset, TR.Y)
Library.TR2.From = Vector2.new(TR.X, TR.Y)
Library.TR2.To = Vector2.new(TR.X, TR.Y + offset)
Library.BL1.From = Vector2.new(BL.X, BL.Y)
Library.BL1.To = Vector2.new(BL.X + offset, BL.Y)
Library.BL2.From = Vector2.new(BL.X, BL.Y)
Library.BL2.To = Vector2.new(BL.X, BL.Y - offset)
Library.BR1.From = Vector2.new(BR.X, BR.Y)
Library.BR1.To = Vector2.new(BR.X - offset, BR.Y)
Library.BR2.From = Vector2.new(BR.X, BR.Y)
Library.BR2.To = Vector2.new(BR.X, BR.Y - offset)
local headPos, headOnScreen = Camera:WorldToViewportPoint(char.Head.Position + Vector3.new(0, 2, 0))
if headOnScreen then
Library.NameTag.Position = Vector2.new(headPos.X, headPos.Y - 15)
Library.NameTag.Text = plr.Name
Library.NameTag.Visible = true
else
Library.NameTag.Visible = false
end
for i, v in pairs(Library) do
if v ~= Library.NameTag then
v.Thickness = thicknessValue
v.Visible = true
end
end
else
for i, v in pairs(Library) do
v.Visible = false
end
end
else
for i, v in pairs(Library) do
v.Visible = false
end
if not Players:FindFirstChild(plr.Name) then
for i, v in pairs(Library) do
v:Remove()
end
if oripart then oripart:Destroy() end
connection:Disconnect()
end
end
end)
end
-- สร้าง UI Window
local Window = WindUI:CreateWindow({
Title = Translations["English"].WindowTitle,
Icon = "solar:target-line-duotone",
Author = "Pun",
Theme = "Violet"
})
-- หน้าหลัก (Main Tab)
local MainTab = Window:Tab({
Title = Translations["English"].MainTab,
Icon = "solar:radar-2-line-duotone"
})
local AimbotSec = MainTab:Section({
Title = Translations["English"].AimbotSection,
Desc = Translations["English"].AimbotDesc
})
local Row1 = MainTab:HStack()
local ToggleAim = Row1:Toggle({
Title = Translations["English"].AimbotToggle,
Value = State.AimEnabled,
Callback = function(v) State.AimEnabled = v end
})
local Row2 = MainTab:HStack()
local ToggleHead, ToggleClosest
ToggleHead = Row2:Toggle({
Title = Translations["English"].AimHead,
Value = State.LockHead,
Callback = function(v)
State.LockHead = v
if v then
State.LockClosest = false
if ToggleClosest then ToggleClosest:SetValue(false) end
end
end
})
ToggleClosest = Row2:Toggle({
Title = Translations["English"].AimClosest,
Value = State.LockClosest,
Callback = function(v)
State.LockClosest = v
if v then
State.LockHead = false
if ToggleHead then ToggleHead:SetValue(false) end
end
end
})
local RowAimbotPlugin = MainTab:HStack()
local ToggleWallbang = RowAimbotPlugin:Toggle({
Title = Translations["English"].Wallbang,
Value = State.AimWallbang,
Callback = function(v) State.AimWallbang = v end
})
local FOVSec = MainTab:Section({
Title = Translations["English"].FOVSection,
Desc = Translations["English"].FOVDesc
})
local SliderFOV = MainTab:Slider({
Title = Translations["English"].FOVSize,
Step = 1,
Value = { Min = 10, Max = 800, Default = State.AimFOV },
Callback = function(v) State.AimFOV = v end
})
local ESPSec = MainTab:Section({
Title = Translations["English"].ESPSection,
Desc = Translations["English"].ESPDesc
})
local Row3 = MainTab:HStack()
local ToggleESP = Row3:Toggle({
Title = Translations["English"].ESPToggle,
Value = State.ESPEnabled,
Callback = function(v) State.ESPEnabled = v end
})
local RowESPPlugin = MainTab:HStack()
local ToggleThroughWalls = RowESPPlugin:Toggle({
Title = Translations["English"].ThroughWalls,
Value = State.ESPThroughWalls,
Callback = function(v) State.ESPThroughWalls = v end
})
-- แถบปรับแต่ง (Settings Tab)
local SettingsTab = Window:Tab({
Title = Translations["English"].SettingsTab,
Icon = "solar:settings-bold-duotone"
})
local ThemeSec = SettingsTab:Section({
Title = Translations["English"].ThemeSection
})
local ThemeDropdown = SettingsTab:Dropdown({
Title = Translations["English"].SelectTheme,
Values = {
"Light", "Dark", "Rose", "Plant", "Red", "Indigo",
"Sky", "Violet", "Amber", "Emerald", "Midnight",
"Crimson", "MonakaiPro", "CottonCandy", "Mellowsi", "Rainbow"
},
Value = "Violet",
Callback = function(selected)
WindUI:SetTheme(selected)
end
})
local LangSec = SettingsTab:Section({
Title = Translations["English"].LangSection
})
-- ฟังก์ชันสำหรับอัปเดตข้อความบน UI เมื่อสลับภาษา
local function UpdateText(elem, title, desc)
if not elem then return end
pcall(function()
if title and typeof(elem.SetTitle) == "function" then elem:SetTitle(title) end
if desc and typeof(elem.SetDesc) == "function" then elem:SetDesc(desc) end
end)
end
local function ApplyLanguage(lang)
State.Language = lang
local t = Translations[lang] or Translations["English"]
UpdateText(MainTab, t.MainTab)
UpdateText(AimbotSec, t.AimbotSection, t.AimbotDesc)
UpdateText(ToggleAim, t.AimbotToggle)
UpdateText(ToggleHead, t.AimHead)
UpdateText(ToggleClosest, t.AimClosest)
UpdateText(ToggleWallbang, t.Wallbang)
UpdateText(FOVSec, t.FOVSection, t.FOVDesc)
UpdateText(SliderFOV, t.FOVSize)
UpdateText(ESPSec, t.ESPSection, t.ESPDesc)
UpdateText(ToggleESP, t.ESPToggle)
UpdateText(ToggleThroughWalls, t.ThroughWalls)
UpdateText(SettingsTab, t.SettingsTab)
UpdateText(ThemeSec, t.ThemeSection)
UpdateText(ThemeDropdown, t.SelectTheme)
UpdateText(LangSec, t.LangSection)
if LangDropdown then UpdateText(LangDropdown, t.SelectLang) end
end
local LangDropdown = SettingsTab:Dropdown({
Title = Translations["English"].SelectLang,
Values = { "English", "Thai" },
Value = "English",
Callback = function(selected)
ApplyLanguage(selected)
end
})
-- เริ่มต้นระบบตรวจจับผู้เล่น
for _, p in pairs(Players:GetPlayers()) do
CreateDrawingESP(p)
end
Players.PlayerAdded:Connect(function(newplr)
CreateDrawingESP(newplr)
end)
-- ลูปการทำงานควบคุมระบบล็อกเป้า
RS.RenderStepped:Connect(function()
local mid = Vector2.new(Camera.ViewportSize.X/2, Camera.ViewportSize.Y/2)
CurrentLock, TargetPart = GetAimbotTarget()
circ.Visible = State.AimEnabled
if circ.Visible then
circ.Size = UDim2.fromOffset(State.AimFOV * 2, State.AimFOV * 2)
circ.Position = UDim2.fromOffset(mid.X, mid.Y)
end
if State.AimEnabled and CurrentLock and TargetPart then
Camera.CFrame = CFrame.new(Camera.CFrame.Position, TargetPart.Position)
end
end)No comments yet for this script.



