Willgamesyt

WL hs hub

Jul 31st, 2026 (edited)
18
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 38.79 KB | None | 0 0
  1. -- WLh4x Hub v10 - Anti Lag e FPS Booster realmente funcionais
  2. -- Delta Executor | Mobile e PC
  3.  
  4. local player = game.Players.LocalPlayer
  5. local camera = workspace.CurrentCamera
  6. local UIS = game:GetService("UserInputService")
  7. local RunService = game:GetService("RunService")
  8. local TweenService = game:GetService("TweenService")
  9. local StarterGui = game:GetService("StarterGui")
  10. local HttpService = game:GetService("HttpService")
  11. local Lighting = game:GetService("Lighting")
  12.  
  13. if not game:IsLoaded() then game.Loaded:Wait() end
  14.  
  15. -- ==================== CONFIGURAÇÕES ====================
  16. local Settings = {
  17. Aimbot = false,
  18. AimbotKey = nil,
  19. AimPart = "Head",
  20. FOV = 150,
  21. FOVCircle = false,
  22. FOVColor = Color3.fromRGB(255, 255, 255),
  23. Smoothness = 1.0,
  24. TriggerBot = false,
  25. TriggerDelay = 0.1,
  26. SilentAim = false,
  27. BoxESP = false,
  28. ESPMaxDistance = 1000,
  29. LineESP = false,
  30. SkeletonESP = false,
  31. NoRecoil = false,
  32. NoSpread = false,
  33. HitboxExpand = false,
  34. HitboxMultiplier = 1.2,
  35. AntiLag = false,
  36. FPSBoost = false,
  37. ToggleKey = Enum.KeyCode.RightShift
  38. }
  39.  
  40. -- ==================== SALVAMENTO ====================
  41. local function save()
  42. pcall(function() writefile("WLh4xHub_v10.json", HttpService:JSONEncode(Settings)) end)
  43. end
  44. local function load()
  45. pcall(function()
  46. if isfile("WLh4xHub_v10.json") then
  47. local data = HttpService:JSONDecode(readfile("WLh4xHub_v10.json"))
  48. for k, v in pairs(data) do Settings[k] = v end
  49. end
  50. end)
  51. end
  52. load()
  53.  
  54. -- ==================== UTILITÁRIOS ====================
  55. local function isEnemy(plr)
  56. if plr == player then return false end
  57. if not player.Team or not plr.Team then return true end
  58. return plr.Team ~= player.Team
  59. end
  60.  
  61. local function getWeaponName(char)
  62. for _, v in ipairs(char:GetChildren()) do
  63. if v:IsA("Tool") and v:FindFirstChild("Handle") then return v.Name end
  64. end
  65. return "Unarmed"
  66. end
  67.  
  68. local function isVisible(targetPos, ignoreChar)
  69. local origin = camera.CFrame.Position
  70. local dir = (targetPos - origin).Unit
  71. local ray = Ray.new(origin, dir * 1000)
  72. local ignore = {player.Character or nil}
  73. if ignoreChar then table.insert(ignore, ignoreChar) end
  74. local hit = workspace:FindPartOnRayWithIgnoreList(ray, ignore)
  75. return hit == nil
  76. end
  77.  
  78. local function onScreen(pos)
  79. local sp, on = camera:WorldToViewportPoint(pos)
  80. return on, sp
  81. end
  82.  
  83. -- Pega APENAS a parte "Head"
  84. local function getHeadPos(char)
  85. local head = char:FindFirstChild("Head")
  86. return head and head.Position or nil
  87. end
  88.  
  89. -- ==================== ESP (CORRIGIDO) ====================
  90. local ESPObjects = {}
  91.  
  92. function clearESP(plr)
  93. if ESPObjects[plr] then
  94. local data = ESPObjects[plr]
  95. for _, drawing in pairs(data.drawings) do
  96. if type(drawing) == "table" then
  97. for _, sub in pairs(drawing) do
  98. if sub.Visible ~= nil then sub:Remove() end
  99. end
  100. elseif drawing.Remove then
  101. drawing:Remove()
  102. end
  103. end
  104. if data.connection then data.connection:Disconnect() end
  105. ESPObjects[plr] = nil
  106. end
  107. end
  108.  
  109. local function createESP(plr)
  110. if not isEnemy(plr) then return end
  111.  
  112. local function setup()
  113. local char = plr.Character
  114. if not char then return false end
  115. local head = char:FindFirstChild("Head")
  116. local root = char:FindFirstChild("HumanoidRootPart")
  117. local humanoid = char:FindFirstChildOfClass("Humanoid")
  118. if not (head and root and humanoid) then return false end
  119.  
  120. clearESP(plr)
  121.  
  122. local d = {}
  123. d.box = Drawing.new("Square"); d.box.Visible = false; d.box.Color = Color3.fromRGB(255,0,0); d.box.Thickness = 2; d.box.Filled = false
  124. d.name = Drawing.new("Text"); d.name.Visible = false; d.name.Color = Color3.fromRGB(255,255,255); d.name.Size = 14; d.name.Center = true; d.name.Outline = true
  125. d.weapon = Drawing.new("Text"); d.weapon.Visible = false; d.weapon.Color = Color3.fromRGB(200,200,200); d.weapon.Size = 12; d.weapon.Center = true; d.weapon.Outline = true
  126. d.dist = Drawing.new("Text"); d.dist.Visible = false; d.dist.Color = Color3.fromRGB(200,200,200); d.dist.Size = 12; d.dist.Center = true; d.dist.Outline = true
  127. d.hpBar = Drawing.new("Square"); d.hpBar.Visible = false; d.hpBar.Filled = true; d.hpBar.Color = Color3.fromRGB(0,255,0)
  128. d.hpBg = Drawing.new("Square"); d.hpBg.Visible = false; d.hpBg.Filled = true; d.hpBg.Color = Color3.fromRGB(50,50,50)
  129. d.line = Drawing.new("Line"); d.line.Visible = false; d.line.Color = Color3.fromRGB(255,0,0); d.line.Thickness = 1
  130.  
  131. d.skeletonLines = {}
  132. local connections = {
  133. {"Head", "UpperTorso"}, {"UpperTorso", "LowerTorso"},
  134. {"UpperTorso", "LeftUpperArm"}, {"UpperTorso", "RightUpperArm"},
  135. {"LowerTorso", "LeftUpperLeg"}, {"LowerTorso", "RightUpperLeg"}
  136. }
  137. for _, conn in ipairs(connections) do
  138. local l = Drawing.new("Line"); l.Visible = false; l.Color = Color3.fromRGB(0,255,0); l.Thickness = 1
  139. table.insert(d.skeletonLines, {line = l, from = conn[1], to = conn[2]})
  140. end
  141.  
  142. local function update()
  143. local c = plr.Character
  144. if not c or not c:FindFirstChild("Head") or not c:FindFirstChild("HumanoidRootPart") or not c:FindFirstChildOfClass("Humanoid") then
  145. for _, obj in pairs(d) do
  146. if type(obj) == "table" then
  147. for _, sub in pairs(obj) do if sub.Visible ~= nil then sub.Visible = false end end
  148. elseif obj.Visible ~= nil then obj.Visible = false end
  149. end
  150. return
  151. end
  152. local headPos = c.Head.Position
  153. local r = c.HumanoidRootPart
  154. local hum = c.Humanoid
  155.  
  156. local myRoot = player.Character and player.Character:FindFirstChild("HumanoidRootPart")
  157. local dist = myRoot and (r.Position - myRoot.Position).Magnitude or 0
  158.  
  159. if dist > Settings.ESPMaxDistance then
  160. for _, obj in pairs(d) do
  161. if type(obj) == "table" then
  162. for _, sub in pairs(obj) do if sub.Visible ~= nil then sub.Visible = false end end
  163. elseif obj.Visible ~= nil then obj.Visible = false end
  164. end
  165. return
  166. end
  167.  
  168. local on, pos = onScreen(headPos)
  169. if not on then
  170. for _, obj in pairs(d) do
  171. if type(obj) == "table" then
  172. for _, sub in pairs(obj) do if sub.Visible ~= nil then sub.Visible = false end end
  173. elseif obj.Visible ~= nil then obj.Visible = false end
  174. end
  175. return
  176. end
  177.  
  178. local charHeight = (headPos.Y - r.Position.Y) * 1.2
  179. local height = math.clamp(charHeight / (dist * 0.01), 40, 250)
  180. local width = height * 0.6
  181. local x = pos.X - width/2
  182. local y = pos.Y - height/2
  183.  
  184. d.box.Size = Vector2.new(width, height); d.box.Position = Vector2.new(x, y); d.box.Visible = Settings.BoxESP
  185. d.name.Text = plr.Name; d.name.Position = Vector2.new(pos.X, y - 18); d.name.Visible = Settings.BoxESP
  186. d.weapon.Text = getWeaponName(c); d.weapon.Position = Vector2.new(pos.X, y - 6); d.weapon.Visible = Settings.BoxESP
  187. d.dist.Text = string.format("%.0fm", dist); d.dist.Position = Vector2.new(pos.X, y + height + 6); d.dist.Visible = Settings.BoxESP
  188.  
  189. local hp = (hum.MaxHealth > 0) and (hum.Health / hum.MaxHealth) or 0
  190. local barWidth = 4
  191. d.hpBg.Size = Vector2.new(barWidth, height); d.hpBg.Position = Vector2.new(x - barWidth - 2, y); d.hpBg.Visible = Settings.BoxESP
  192. d.hpBar.Size = Vector2.new(barWidth, height * hp); d.hpBar.Position = Vector2.new(x - barWidth - 2, y + height * (1 - hp))
  193. if hp > 0.6 then d.hpBar.Color = Color3.fromRGB(0,255,0)
  194. elseif hp > 0.3 then d.hpBar.Color = Color3.fromRGB(255,255,0)
  195. else d.hpBar.Color = Color3.fromRGB(255,0,0) end
  196. d.hpBar.Visible = Settings.BoxESP
  197.  
  198. if myRoot then
  199. local myPos = camera:WorldToViewportPoint(myRoot.Position)
  200. d.line.From = Vector2.new(myPos.X, myPos.Y); d.line.To = Vector2.new(pos.X, pos.Y)
  201. end
  202. d.line.Visible = Settings.LineESP
  203.  
  204. for _, sk in ipairs(d.skeletonLines) do
  205. local partA = c:FindFirstChild(sk.from)
  206. local partB = c:FindFirstChild(sk.to)
  207. if partA and partB then
  208. local onA, posA = onScreen(partA.Position)
  209. local onB, posB = onScreen(partB.Position)
  210. if onA and onB then
  211. sk.line.From = Vector2.new(posA.X, posA.Y); sk.line.To = Vector2.new(posB.X, posB.Y)
  212. sk.line.Visible = Settings.SkeletonESP
  213. else sk.line.Visible = false end
  214. else sk.line.Visible = false end
  215. end
  216. end
  217.  
  218. local conn = RunService.RenderStepped:Connect(update)
  219. ESPObjects[plr] = {drawings = d, connection = conn}
  220. return true
  221. end
  222.  
  223. if not setup() then
  224. local retryConn
  225. retryConn = RunService.Heartbeat:Connect(function()
  226. if setup() then retryConn:Disconnect() end
  227. end)
  228. end
  229.  
  230. plr.CharacterAdded:Connect(function()
  231. clearESP(plr)
  232. local retryConn
  233. retryConn = RunService.Heartbeat:Connect(function()
  234. if setup() then retryConn:Disconnect() end
  235. end)
  236. end)
  237.  
  238. plr.CharacterRemoving:Connect(function()
  239. clearESP(plr)
  240. end)
  241. end
  242.  
  243. for _, p in ipairs(game.Players:GetPlayers()) do
  244. if p ~= player then createESP(p) end
  245. end
  246. game.Players.PlayerAdded:Connect(function(p)
  247. if p ~= player then createESP(p) end
  248. end)
  249. game.Players.PlayerRemoving:Connect(function(p)
  250. clearESP(p)
  251. end)
  252.  
  253. -- ==================== AIMBOT ====================
  254. local function getClosest()
  255. local best, bestAngle = nil, math.huge
  256. local myChar = player.Character
  257. if not myChar or not myChar.PrimaryPart then return nil end
  258. for _, target in ipairs(game.Players:GetPlayers()) do
  259. if isEnemy(target) and target.Character then
  260. local headPos = getHeadPos(target.Character)
  261. if not headPos then continue end
  262. if not isVisible(headPos, target.Character) then continue end
  263. local on, sp = onScreen(headPos)
  264. if not on then continue end
  265. local dist = (myChar.PrimaryPart.Position - headPos).Magnitude
  266. if dist > Settings.ESPMaxDistance then continue end
  267. if Settings.FOVCircle then
  268. local center = Vector2.new(camera.ViewportSize.X/2, camera.ViewportSize.Y/2)
  269. if (Vector2.new(sp.X, sp.Y) - center).Magnitude > Settings.FOV then continue end
  270. end
  271. local dir = (headPos - camera.CFrame.Position).Unit
  272. local angle = math.acos(math.clamp(camera.CFrame.LookVector:Dot(dir), -1, 1))
  273. if angle < bestAngle then
  274. bestAngle = angle
  275. best = {position = headPos}
  276. end
  277. end
  278. end
  279. return best
  280. end
  281.  
  282. RunService:BindToRenderStep("WLh4xAimbot", 200, function()
  283. if not Settings.Aimbot then return end
  284. if Settings.AimbotKey and not UIS:IsKeyDown(Settings.AimbotKey) then return end
  285. local target = getClosest()
  286. if target then
  287. if Settings.Smoothness >= 1.0 then
  288. camera.CFrame = CFrame.lookAt(camera.CFrame.Position, target.position)
  289. else
  290. local newDir = (target.position - camera.CFrame.Position).Unit
  291. local currentDir = camera.CFrame.LookVector
  292. local interpolated = currentDir:Lerp(newDir, Settings.Smoothness)
  293. camera.CFrame = CFrame.new(camera.CFrame.Position, camera.CFrame.Position + interpolated)
  294. end
  295. end
  296. end)
  297.  
  298. -- Trigger Bot
  299. RunService.RenderStepped:Connect(function()
  300. if Settings.TriggerBot then
  301. local t = getClosest()
  302. if t then
  303. local tool = player.Character and player.Character:FindFirstChildOfClass("Tool")
  304. if tool then
  305. tool:Activate()
  306. task.wait(Settings.TriggerDelay)
  307. tool:Deactivate()
  308. end
  309. end
  310. end
  311. end)
  312.  
  313. -- ==================== NO RECOIL ====================
  314. local lastRecoilTime = 0
  315. UIS.InputBegan:Connect(function(input)
  316. if input.UserInputType == Enum.UserInputType.MouseButton1 then
  317. lastRecoilTime = tick()
  318. end
  319. end)
  320. RunService.RenderStepped:Connect(function()
  321. if Settings.NoRecoil and tick() - lastRecoilTime < 0.5 then
  322. camera.CFrame = camera.CFrame * CFrame.Angles(-0.003, 0, 0)
  323. end
  324. end)
  325.  
  326. -- ==================== NO SPREAD ====================
  327. local oldRandom = math.random
  328. local function setNoSpread(state)
  329. if state then math.random = function(...) return 0 end
  330. else math.random = oldRandom end
  331. end
  332. local function onNoSpreadChanged(val)
  333. Settings.NoSpread = val
  334. setNoSpread(val)
  335. save()
  336. end
  337.  
  338. -- ==================== HITBOX EXPAND ====================
  339. local function expandHitbox(char)
  340. if not Settings.HitboxExpand then return end
  341. for _, part in ipairs(char:GetChildren()) do
  342. if part:IsA("BasePart") and part.Name ~= "HumanoidRootPart" then
  343. part.Size = part.Size * Settings.HitboxMultiplier
  344. end
  345. end
  346. end
  347. for _, p in ipairs(game.Players:GetPlayers()) do
  348. if p ~= player then
  349. if p.Character then expandHitbox(p.Character) end
  350. p.CharacterAdded:Connect(expandHitbox)
  351. end
  352. end
  353. game.Players.PlayerAdded:Connect(function(p)
  354. if p ~= player then
  355. p.CharacterAdded:Connect(expandHitbox)
  356. if p.Character then expandHitbox(p.Character) end
  357. end
  358. end)
  359.  
  360. -- ==================== FOV CIRCLE ====================
  361. local fovCircle
  362. local function updateFOV()
  363. if fovCircle then fovCircle:Remove() fovCircle = nil end
  364. if not Settings.FOVCircle then return end
  365. pcall(function()
  366. fovCircle = Drawing.new("Circle")
  367. fovCircle.Visible = true
  368. fovCircle.Color = Settings.FOVColor
  369. fovCircle.Thickness = 2
  370. fovCircle.NumSides = 80
  371. fovCircle.Radius = Settings.FOV
  372. fovCircle.Position = Vector2.new(camera.ViewportSize.X/2, camera.ViewportSize.Y/2)
  373. fovCircle.Transparency = 0.4
  374. end)
  375. end
  376. camera:GetPropertyChangedSignal("ViewportSize"):Connect(updateFOV)
  377.  
  378. -- ==================== SISTEMA DE PERFORMANCE (ANTI LAG / FPS BOOST) ====================
  379. local function applyPerformanceChanges()
  380. -- Anti Lag
  381. if Settings.AntiLag then
  382. pcall(function() settings().Rendering.QualityLevel = "Level01" end)
  383. for _, obj in ipairs(workspace:GetDescendants()) do
  384. if obj:IsA("ParticleEmitter") or obj:IsA("Fire") or obj:IsA("Smoke") then
  385. obj.Enabled = false
  386. end
  387. if obj:IsA("Decal") or obj:IsA("Texture") then
  388. obj.Texture = ""
  389. end
  390. end
  391. -- Reduz distância de renderização
  392. workspace.StreamingMinRadius = 16
  393. workspace.StreamingTargetRadius = 32
  394. -- Remove neblina
  395. Lighting.FogEnd = 1000
  396. Lighting.FogStart = 800
  397. -- Desliga pós‑processamento
  398. if Lighting:FindFirstChild("Bloom") then Lighting.Bloom.Enabled = false end
  399. if Lighting:FindFirstChild("Blur") then Lighting.Blur.Enabled = false end
  400. if Lighting:FindFirstChild("SunRays") then Lighting.SunRays.Enabled = false end
  401. if Lighting:FindFirstChild("ColorCorrection") then Lighting.ColorCorrection.Enabled = false end
  402. else
  403. pcall(function() settings().Rendering.QualityLevel = "Level10" end)
  404. for _, obj in ipairs(workspace:GetDescendants()) do
  405. if obj:IsA("ParticleEmitter") or obj:IsA("Fire") or obj:IsA("Smoke") then
  406. obj.Enabled = true
  407. end
  408. end
  409. workspace.StreamingMinRadius = 64
  410. workspace.StreamingTargetRadius = 128
  411. Lighting.FogEnd = 10000
  412. Lighting.FogStart = 8000
  413. if Lighting:FindFirstChild("Bloom") then Lighting.Bloom.Enabled = true end
  414. if Lighting:FindFirstChild("Blur") then Lighting.Blur.Enabled = true end
  415. if Lighting:FindFirstChild("SunRays") then Lighting.SunRays.Enabled = true end
  416. if Lighting:FindFirstChild("ColorCorrection") then Lighting.ColorCorrection.Enabled = true end
  417. end
  418.  
  419. -- FPS Boost
  420. if Settings.FPSBoost then
  421. pcall(function() settings().Rendering.ShadowQuality = "Level01" end)
  422. for _, light in ipairs(workspace:GetDescendants()) do
  423. if light:IsA("SurfaceLight") or light:IsA("PointLight") or light:IsA("SpotLight") then
  424. light.Enabled = false
  425. end
  426. end
  427. -- Desliga reflexos
  428. for _, obj in ipairs(workspace:GetDescendants()) do
  429. if obj:IsA("Part") and obj.Material == Enum.Material.Glass then
  430. obj.Reflectance = 0
  431. end
  432. end
  433. -- Aumenta prioridade de performance
  434. pcall(function() settings().Rendering.FrameRateManager = "Default" end)
  435. -- Congela corpos mortos (ragdolls)
  436. for _, plr in ipairs(game.Players:GetPlayers()) do
  437. if plr.Character and plr.Character:FindFirstChild("Humanoid") then
  438. local humanoid = plr.Character.Humanoid
  439. if humanoid.Health <= 0 then
  440. for _, part in ipairs(plr.Character:GetChildren()) do
  441. if part:IsA("BasePart") then part.Anchored = true end
  442. end
  443. end
  444. end
  445. end
  446. else
  447. pcall(function() settings().Rendering.ShadowQuality = "Level10" end)
  448. for _, light in ipairs(workspace:GetDescendants()) do
  449. if light:IsA("SurfaceLight") or light:IsA("PointLight") or light:IsA("SpotLight") then
  450. light.Enabled = true
  451. end
  452. end
  453. pcall(function() settings().Rendering.FrameRateManager = "Auto" end)
  454. end
  455. end
  456.  
  457. -- Monitorar mudanças nas toggles
  458. local function onAntiLagChanged(val)
  459. Settings.AntiLag = val
  460. applyPerformanceChanges()
  461. save()
  462. end
  463.  
  464. local function onFPSBoostChanged(val)
  465. Settings.FPSBoost = val
  466. applyPerformanceChanges()
  467. save()
  468. end
  469.  
  470. -- Aplicar imediatamente ao ligar o script se já estiver ativo
  471. applyPerformanceChanges()
  472.  
  473. -- ==================== INTERFACE ====================
  474. local gui = Instance.new("ScreenGui")
  475. gui.Name = "WLh4xHub"
  476. gui.Parent = game.CoreGui
  477. gui.ResetOnSpawn = false
  478. gui.IgnoreGuiInset = true
  479. gui.ZIndexBehavior = Enum.ZIndexBehavior.Sibling
  480.  
  481. local main = Instance.new("Frame")
  482. main.Size = UDim2.new(0.5, 0, 0.5, 0)
  483. main.Position = UDim2.new(0.25, 0, 0.25, 0)
  484. main.BackgroundColor3 = Color3.fromRGB(17, 17, 17)
  485. main.BorderSizePixel = 0
  486. main.ClipsDescendants = true
  487. main.Active = false
  488. Instance.new("UICorner", main).CornerRadius = UDim.new(0, 8)
  489. main.Parent = gui
  490.  
  491. local topBar = Instance.new("Frame")
  492. topBar.Size = UDim2.new(1, 0, 0, 32)
  493. topBar.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
  494. topBar.BorderSizePixel = 0
  495. topBar.Active = true
  496. topBar.Parent = main
  497.  
  498. local title = Instance.new("TextLabel")
  499. title.Text = "WLh4x Hub"
  500. title.Size = UDim2.new(0.5, 0, 1, 0)
  501. title.Position = UDim2.new(0.02, 0, 0, 0)
  502. title.BackgroundTransparency = 1
  503. title.TextColor3 = Color3.fromRGB(255, 40, 40)
  504. title.Font = Enum.Font.GothamBold
  505. title.TextSize = 16
  506. title.TextXAlignment = Enum.TextXAlignment.Left
  507. title.Parent = topBar
  508.  
  509. -- Arrastar
  510. local dragging, dragStart, startPos
  511. topBar.InputBegan:Connect(function(input)
  512. if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
  513. dragging = true
  514. dragStart = input.Position
  515. startPos = main.Position
  516. input.Changed:Connect(function()
  517. if input.UserInputState == Enum.UserInputState.End then dragging = false end
  518. end)
  519. end
  520. end)
  521. topBar.InputChanged:Connect(function(input)
  522. if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
  523. local delta = input.Position - dragStart
  524. main.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
  525. end
  526. end)
  527.  
  528. -- Botões
  529. local minBtn = Instance.new("TextButton")
  530. minBtn.Text = "_"
  531. minBtn.Size = UDim2.new(0, 30, 0, 30)
  532. minBtn.Position = UDim2.new(1, -65, 0, 0)
  533. minBtn.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
  534. minBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
  535. minBtn.Font = Enum.Font.GothamBold; minBtn.TextSize = 18; minBtn.BorderSizePixel = 0
  536. Instance.new("UICorner", minBtn).CornerRadius = UDim.new(0, 6)
  537. minBtn.Parent = topBar
  538.  
  539. local closeBtn = Instance.new("TextButton")
  540. closeBtn.Text = "X"
  541. closeBtn.Size = UDim2.new(0, 30, 0, 30)
  542. closeBtn.Position = UDim2.new(1, -30, 0, 0)
  543. closeBtn.BackgroundColor3 = Color3.fromRGB(255, 0, 0)
  544. closeBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
  545. closeBtn.Font = Enum.Font.GothamBold; closeBtn.TextSize = 16; closeBtn.BorderSizePixel = 0
  546. Instance.new("UICorner", closeBtn).CornerRadius = UDim.new(0, 6)
  547. closeBtn.Parent = topBar
  548.  
  549. closeBtn.MouseButton1Click:Connect(function()
  550. gui:Destroy()
  551. if fovCircle then fovCircle:Remove() end
  552. end)
  553.  
  554. -- Botão flutuante
  555. local floatBtn = Instance.new("TextButton")
  556. floatBtn.Text = "WL"
  557. floatBtn.Size = UDim2.new(0, 40, 0, 40)
  558. floatBtn.Position = UDim2.new(1, -50, 0, 10)
  559. floatBtn.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
  560. floatBtn.BorderColor3 = Color3.fromRGB(255, 0, 0); floatBtn.BorderSizePixel = 2
  561. floatBtn.TextColor3 = Color3.fromRGB(255, 0, 0)
  562. floatBtn.Font = Enum.Font.GothamBold; floatBtn.TextSize = 18
  563. floatBtn.Visible = false
  564. floatBtn.Draggable = true
  565. floatBtn.Active = true
  566. floatBtn.Parent = gui
  567.  
  568. local minimized = false
  569. minBtn.MouseButton1Click:Connect(function()
  570. minimized = true; main.Visible = false; floatBtn.Visible = true
  571. end)
  572. floatBtn.MouseButton1Click:Connect(function()
  573. minimized = false; main.Visible = true; floatBtn.Visible = false
  574. end)
  575.  
  576. UIS.InputBegan:Connect(function(input, gpe)
  577. if gpe then return end
  578. if input.KeyCode == Settings.ToggleKey then
  579. minimized = not minimized
  580. main.Visible = not minimized
  581. floatBtn.Visible = minimized
  582. end
  583. end)
  584.  
  585. -- Abas
  586. local tabFrame = Instance.new("Frame")
  587. tabFrame.Size = UDim2.new(1, 0, 0, 30)
  588. tabFrame.Position = UDim2.new(0, 0, 0, 32)
  589. tabFrame.BackgroundTransparency = 1
  590. tabFrame.Active = false
  591. tabFrame.Parent = main
  592.  
  593. local combatTab = Instance.new("TextButton")
  594. combatTab.Text = "Combate"; combatTab.Size = UDim2.new(0.5, -2, 1, 0)
  595. combatTab.Position = UDim2.new(0, 0, 0, 0)
  596. combatTab.BackgroundColor3 = Color3.fromRGB(255, 0, 0); combatTab.TextColor3 = Color3.fromRGB(255,255,255)
  597. combatTab.Font = Enum.Font.GothamBold; combatTab.TextSize = 14; combatTab.BorderSizePixel = 0
  598. Instance.new("UICorner", combatTab).CornerRadius = UDim.new(0, 6)
  599. combatTab.Parent = tabFrame
  600.  
  601. local configTab = Instance.new("TextButton")
  602. configTab.Text = "Configurações"; configTab.Size = UDim2.new(0.5, -2, 1, 0)
  603. configTab.Position = UDim2.new(0.5, 2, 0, 0)
  604. configTab.BackgroundColor3 = Color3.fromRGB(40, 40, 40); configTab.TextColor3 = Color3.fromRGB(255,255,255)
  605. configTab.Font = Enum.Font.GothamBold; configTab.TextSize = 14; configTab.BorderSizePixel = 0
  606. Instance.new("UICorner", configTab).CornerRadius = UDim.new(0, 6)
  607. configTab.Parent = tabFrame
  608.  
  609. local combatContent = Instance.new("ScrollingFrame")
  610. combatContent.Size = UDim2.new(1, -10, 1, -67)
  611. combatContent.Position = UDim2.new(0, 5, 0, 67)
  612. combatContent.BackgroundTransparency = 1
  613. combatContent.ScrollBarThickness = 4
  614. combatContent.ScrollBarImageColor3 = Color3.fromRGB(255, 0, 0)
  615. combatContent.CanvasSize = UDim2.new(0, 0, 0, 700)
  616. combatContent.Active = false
  617. combatContent.Visible = true
  618. combatContent.Parent = main
  619.  
  620. local configContent = Instance.new("ScrollingFrame")
  621. configContent.Size = UDim2.new(1, -10, 1, -67)
  622. configContent.Position = UDim2.new(0, 5, 0, 67)
  623. configContent.BackgroundTransparency = 1
  624. configContent.ScrollBarThickness = 4
  625. configContent.ScrollBarImageColor3 = Color3.fromRGB(255, 0, 0)
  626. configContent.CanvasSize = UDim2.new(0, 0, 0, 600)
  627. configContent.Active = false
  628. configContent.Visible = false
  629. configContent.Parent = main
  630.  
  631. combatTab.MouseButton1Click:Connect(function()
  632. combatTab.BackgroundColor3 = Color3.fromRGB(255, 0, 0)
  633. configTab.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
  634. combatContent.Visible = true; configContent.Visible = false
  635. end)
  636. configTab.MouseButton1Click:Connect(function()
  637. configTab.BackgroundColor3 = Color3.fromRGB(255, 0, 0)
  638. combatTab.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
  639. configContent.Visible = true; combatContent.Visible = false
  640. end)
  641.  
  642. local function createToggle(parent, text, default, callback, yPos)
  643. local frame = Instance.new("Frame")
  644. frame.Size = UDim2.new(1, -10, 0, 32)
  645. frame.Position = UDim2.new(0, 5, 0, yPos)
  646. frame.BackgroundColor3 = Color3.fromRGB(28, 28, 28)
  647. frame.BorderSizePixel = 0
  648. frame.Active = false
  649. Instance.new("UICorner", frame).CornerRadius = UDim.new(0, 6)
  650. frame.Parent = parent
  651.  
  652. local label = Instance.new("TextLabel")
  653. label.Text = text; label.Size = UDim2.new(0.65, 0, 1, 0)
  654. label.BackgroundTransparency = 1; label.TextColor3 = Color3.fromRGB(240, 240, 240)
  655. label.Font = Enum.Font.Gotham; label.TextSize = 13; label.TextXAlignment = Enum.TextXAlignment.Left
  656. label.Parent = frame
  657.  
  658. local btn = Instance.new("TextButton")
  659. btn.Size = UDim2.new(0, 40, 0, 20); btn.Position = UDim2.new(0.75, 10, 0.5, -10)
  660. btn.BackgroundColor3 = Color3.fromRGB(100, 100, 100); btn.BorderSizePixel = 0; btn.Text = ""
  661. Instance.new("UICorner", btn).CornerRadius = UDim.new(1, 0)
  662. btn.Parent = frame
  663.  
  664. local ball = Instance.new("Frame")
  665. ball.Size = UDim2.new(0, 16, 0, 16); ball.Position = UDim2.new(0, 2, 0.5, -8)
  666. ball.BackgroundColor3 = Color3.fromRGB(255, 255, 255); ball.BorderSizePixel = 0
  667. Instance.new("UICorner", ball).CornerRadius = UDim.new(1, 0)
  668. ball.Parent = btn
  669.  
  670. local active = default
  671. local function update()
  672. if active then
  673. btn.BackgroundColor3 = Color3.fromRGB(0, 200, 0)
  674. ball:TweenPosition(UDim2.new(1, -18, 0.5, -8), "In", "Linear", 0.15)
  675. else
  676. btn.BackgroundColor3 = Color3.fromRGB(100, 100, 100)
  677. ball:TweenPosition(UDim2.new(0, 2, 0.5, -8), "In", "Linear", 0.15)
  678. end
  679. end
  680. update()
  681. btn.MouseButton1Click:Connect(function()
  682. active = not active; update(); callback(active)
  683. end)
  684. return frame
  685. end
  686.  
  687. -- ==================== PREENCHER COMBATE ====================
  688. local y = 0
  689. createToggle(combatContent, "Aimbot", Settings.Aimbot, function(v) Settings.Aimbot = v save() end, y)
  690. y = y + 37
  691.  
  692. -- Slider Smoothness
  693. local smoothFrame = Instance.new("Frame")
  694. smoothFrame.Size = UDim2.new(1, -10, 0, 32)
  695. smoothFrame.Position = UDim2.new(0, 5, 0, y)
  696. smoothFrame.BackgroundColor3 = Color3.fromRGB(28, 28, 28)
  697. smoothFrame.BorderSizePixel = 0
  698. Instance.new("UICorner", smoothFrame).CornerRadius = UDim.new(0, 6)
  699. smoothFrame.Parent = combatContent
  700.  
  701. local smoothLabel = Instance.new("TextLabel")
  702. smoothLabel.Text = "Smoothness: " .. string.format("%.1f", Settings.Smoothness)
  703. smoothLabel.Size = UDim2.new(0.4, 0, 1, 0); smoothLabel.BackgroundTransparency = 1
  704. smoothLabel.TextColor3 = Color3.fromRGB(240, 240, 240); smoothLabel.Font = Enum.Font.Gotham; smoothLabel.TextSize = 13; smoothLabel.TextXAlignment = Enum.TextXAlignment.Left
  705. smoothLabel.Parent = smoothFrame
  706.  
  707. local smoothSliderFrame = Instance.new("Frame")
  708. smoothSliderFrame.Size = UDim2.new(0.5, 0, 0.6, 0)
  709. smoothSliderFrame.Position = UDim2.new(0.45, 0, 0.2, 0)
  710. smoothSliderFrame.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
  711. smoothSliderFrame.BorderSizePixel = 0
  712. Instance.new("UICorner", smoothSliderFrame).CornerRadius = UDim.new(0, 4)
  713. smoothSliderFrame.Parent = smoothFrame
  714.  
  715. local smoothFill = Instance.new("Frame")
  716. smoothFill.Size = UDim2.new(Settings.Smoothness, 0, 1, 0)
  717. smoothFill.BackgroundColor3 = Color3.fromRGB(255, 0, 0); smoothFill.BorderSizePixel = 0
  718. Instance.new("UICorner", smoothFill).CornerRadius = UDim.new(0, 4)
  719. smoothFill.Parent = smoothSliderFrame
  720.  
  721. local smoothKnob = Instance.new("TextButton")
  722. smoothKnob.Size = UDim2.new(0, 16, 0, 16)
  723. smoothKnob.Position = UDim2.new(Settings.Smoothness, -8, 0.5, -8)
  724. smoothKnob.BackgroundColor3 = Color3.fromRGB(255, 255, 255); smoothKnob.BorderSizePixel = 0; smoothKnob.Text = ""
  725. Instance.new("UICorner", smoothKnob).CornerRadius = UDim.new(1, 0)
  726. smoothKnob.Parent = smoothSliderFrame
  727.  
  728. local function updateSmoothSlider(percent)
  729. local val = math.clamp(percent, 0.1, 1.0)
  730. Settings.Smoothness = val
  731. smoothLabel.Text = "Smoothness: " .. string.format("%.1f", val)
  732. smoothFill.Size = UDim2.new(val, 0, 1, 0)
  733. smoothKnob.Position = UDim2.new(val, -8, 0.5, -8)
  734. save()
  735. end
  736.  
  737. local draggingSmooth = false
  738. smoothKnob.InputBegan:Connect(function(input)
  739. if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
  740. draggingSmooth = true
  741. end
  742. end)
  743. smoothKnob.InputEnded:Connect(function(input)
  744. if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
  745. draggingSmooth = false
  746. end
  747. end)
  748. smoothSliderFrame.InputBegan:Connect(function(input)
  749. if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
  750. local pos = input.Position.X - smoothSliderFrame.AbsolutePosition.X
  751. local perc = math.clamp(pos / smoothSliderFrame.AbsoluteSize.X, 0, 1)
  752. updateSmoothSlider(perc)
  753. draggingSmooth = true
  754. end
  755. end)
  756. smoothSliderFrame.InputEnded:Connect(function(input)
  757. draggingSmooth = false
  758. end)
  759. UIS.InputChanged:Connect(function(input)
  760. if draggingSmooth and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
  761. local pos = input.Position.X - smoothSliderFrame.AbsolutePosition.X
  762. local perc = math.clamp(pos / smoothSliderFrame.AbsoluteSize.X, 0, 1)
  763. updateSmoothSlider(perc)
  764. end
  765. end)
  766.  
  767. y = y + 37
  768. createToggle(combatContent, "FOV Circle", Settings.FOVCircle, function(v) Settings.FOVCircle = v updateFOV() save() end, y)
  769. y = y + 37
  770.  
  771. -- Slider FOV
  772. local fovFrame = Instance.new("Frame")
  773. fovFrame.Size = UDim2.new(1, -10, 0, 32)
  774. fovFrame.Position = UDim2.new(0, 5, 0, y)
  775. fovFrame.BackgroundColor3 = Color3.fromRGB(28, 28, 28)
  776. fovFrame.BorderSizePixel = 0
  777. Instance.new("UICorner", fovFrame).CornerRadius = UDim.new(0, 6)
  778. fovFrame.Parent = combatContent
  779.  
  780. local fovLabel = Instance.new("TextLabel")
  781. fovLabel.Text = "FOV Size: " .. Settings.FOV
  782. fovLabel.Size = UDim2.new(0.4, 0, 1, 0); fovLabel.BackgroundTransparency = 1
  783. fovLabel.TextColor3 = Color3.fromRGB(240, 240, 240); fovLabel.Font = Enum.Font.Gotham; fovLabel.TextSize = 13; fovLabel.TextXAlignment = Enum.TextXAlignment.Left
  784. fovLabel.Parent = fovFrame
  785.  
  786. local fovSliderFrame = Instance.new("Frame")
  787. fovSliderFrame.Size = UDim2.new(0.5, 0, 0.6, 0)
  788. fovSliderFrame.Position = UDim2.new(0.45, 0, 0.2, 0)
  789. fovSliderFrame.BackgroundColor3 = Color3.fromRGB(50, 50, 50)
  790. fovSliderFrame.BorderSizePixel = 0
  791. Instance.new("UICorner", fovSliderFrame).CornerRadius = UDim.new(0, 4)
  792. fovSliderFrame.Parent = fovFrame
  793.  
  794. local fovFill = Instance.new("Frame")
  795. fovFill.Size = UDim2.new((Settings.FOV - 50) / 200, 0, 1, 0)
  796. fovFill.BackgroundColor3 = Color3.fromRGB(255, 0, 0); fovFill.BorderSizePixel = 0
  797. Instance.new("UICorner", fovFill).CornerRadius = UDim.new(0, 4)
  798. fovFill.Parent = fovSliderFrame
  799.  
  800. local fovKnob = Instance.new("TextButton")
  801. fovKnob.Size = UDim2.new(0, 16, 0, 16)
  802. fovKnob.Position = UDim2.new((Settings.FOV - 50) / 200, -8, 0.5, -8)
  803. fovKnob.BackgroundColor3 = Color3.fromRGB(255, 255, 255); fovKnob.BorderSizePixel = 0; fovKnob.Text = ""
  804. Instance.new("UICorner", fovKnob).CornerRadius = UDim.new(1, 0)
  805. fovKnob.Parent = fovSliderFrame
  806.  
  807. local function updateFovSlider(percent)
  808. local val = math.floor(50 + percent * 200)
  809. Settings.FOV = val
  810. fovLabel.Text = "FOV Size: " .. val
  811. fovFill.Size = UDim2.new(percent, 0, 1, 0)
  812. fovKnob.Position = UDim2.new(percent, -8, 0.5, -8)
  813. if Settings.FOVCircle then updateFOV() end
  814. save()
  815. end
  816.  
  817. local draggingFov = false
  818. fovKnob.InputBegan:Connect(function(input)
  819. if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
  820. draggingFov = true
  821. end
  822. end)
  823. fovKnob.InputEnded:Connect(function(input)
  824. if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
  825. draggingFov = false
  826. end
  827. end)
  828. fovSliderFrame.InputBegan:Connect(function(input)
  829. if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
  830. local pos = input.Position.X - fovSliderFrame.AbsolutePosition.X
  831. local perc = math.clamp(pos / fovSliderFrame.AbsoluteSize.X, 0, 1)
  832. updateFovSlider(perc)
  833. draggingFov = true
  834. end
  835. end)
  836. fovSliderFrame.InputEnded:Connect(function(input)
  837. draggingFov = false
  838. end)
  839. UIS.InputChanged:Connect(function(input)
  840. if draggingFov and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
  841. local pos = input.Position.X - fovSliderFrame.AbsolutePosition.X
  842. local perc = math.clamp(pos / fovSliderFrame.AbsoluteSize.X, 0, 1)
  843. updateFovSlider(perc)
  844. end
  845. end)
  846.  
  847. y = y + 37
  848. createToggle(combatContent, "Trigger Bot", Settings.TriggerBot, function(v) Settings.TriggerBot = v save() end, y)
  849. y = y + 37
  850. createToggle(combatContent, "Silent Aim", Settings.SilentAim, function(v) Settings.SilentAim = v save() end, y)
  851. y = y + 37
  852. createToggle(combatContent, "No Recoil", Settings.NoRecoil, function(v) Settings.NoRecoil = v save() end, y)
  853. y = y + 37
  854. createToggle(combatContent, "No Spread", Settings.NoSpread, onNoSpreadChanged, y)
  855. y = y + 37
  856. createToggle(combatContent, "Hitbox Expand", Settings.HitboxExpand, function(v)
  857. Settings.HitboxExpand = v
  858. for _, p in ipairs(game.Players:GetPlayers()) do
  859. if p ~= player and p.Character then expandHitbox(p.Character) end
  860. end
  861. save()
  862. end, y)
  863. y = y + 37
  864.  
  865. -- ==================== PREENCHER CONFIGURAÇÕES ====================
  866. y = 0
  867. createToggle(configContent, "Box ESP", Settings.BoxESP, function(v)
  868. Settings.BoxESP = v
  869. for _, data in pairs(ESPObjects) do
  870. if data.drawings.box then data.drawings.box.Visible = v end
  871. if data.drawings.name then data.drawings.name.Visible = v end
  872. if data.drawings.weapon then data.drawings.weapon.Visible = v end
  873. if data.drawings.dist then data.drawings.dist.Visible = v end
  874. if data.drawings.hpBar then data.drawings.hpBar.Visible = v end
  875. if data.drawings.hpBg then data.drawings.hpBg.Visible = v end
  876. end
  877. save()
  878. end, y)
  879. y = y + 37
  880. createToggle(configContent, "Line ESP", Settings.LineESP, function(v)
  881. Settings.LineESP = v
  882. for _, data in pairs(ESPObjects) do
  883. if data.drawings.line then data.drawings.line.Visible = v end
  884. end
  885. save()
  886. end, y)
  887. y = y + 37
  888. createToggle(configContent, "Skeleton ESP", Settings.SkeletonESP, function(v)
  889. Settings.SkeletonESP = v
  890. for _, data in pairs(ESPObjects) do
  891. if data.drawings.skeletonLines then
  892. for _, sk in ipairs(data.drawings.skeletonLines) do sk.line.Visible = v end
  893. end
  894. end
  895. save()
  896. end, y)
  897. y = y + 37
  898. createToggle(configContent, "Anti Lag", Settings.AntiLag, onAntiLagChanged, y)
  899. y = y + 37
  900. createToggle(configContent, "FPS Booster", Settings.FPSBoost, onFPSBoostChanged, y)
  901. y = y + 37
  902.  
  903. -- Tecla de atalho
  904. local keyFrame = Instance.new("Frame")
  905. keyFrame.Size = UDim2.new(1, -10, 0, 32)
  906. keyFrame.Position = UDim2.new(0, 5, 0, y)
  907. keyFrame.BackgroundColor3 = Color3.fromRGB(28, 28, 28)
  908. keyFrame.BorderSizePixel = 0
  909. Instance.new("UICorner", keyFrame).CornerRadius = UDim.new(0, 6)
  910. keyFrame.Parent = configContent
  911.  
  912. local keyLabel = Instance.new("TextLabel")
  913. keyLabel.Text = "Toggle Key"; keyLabel.Size = UDim2.new(0.6, 0, 1, 0)
  914. keyLabel.BackgroundTransparency = 1; keyLabel.TextColor3 = Color3.fromRGB(240, 240, 240)
  915. keyLabel.Font = Enum.Font.Gotham; keyLabel.TextSize = 13; keyLabel.TextXAlignment = Enum.TextXAlignment.Left
  916. keyLabel.Parent = keyFrame
  917.  
  918. local keyBtn = Instance.new("TextButton")
  919. keyBtn.Size = UDim2.new(0, 100, 0, 24); keyBtn.Position = UDim2.new(0.65, 10, 0.5, -12)
  920. keyBtn.BackgroundColor3 = Color3.fromRGB(50, 50, 50); keyBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
  921. keyBtn.Font = Enum.Font.Gotham; keyBtn.TextSize = 13; keyBtn.Text = Settings.ToggleKey.Name
  922. keyBtn.BorderSizePixel = 0
  923. Instance.new("UICorner", keyBtn).CornerRadius = UDim.new(0, 6)
  924. keyBtn.Parent = keyFrame
  925. keyBtn.MouseButton1Click:Connect(function()
  926. keyBtn.Text = "..."
  927. local conn
  928. conn = UIS.InputBegan:Connect(function(input, gpe)
  929. if gpe then return end
  930. if input.UserInputType == Enum.UserInputType.Keyboard then
  931. Settings.ToggleKey = input.KeyCode
  932. keyBtn.Text = input.KeyCode.Name
  933. save()
  934. conn:Disconnect()
  935. end
  936. end)
  937. end)
  938. y = y + 37
  939.  
  940. -- Salvar
  941. local saveBtn = Instance.new("TextButton")
  942. saveBtn.Size = UDim2.new(1, -10, 0, 32)
  943. saveBtn.Position = UDim2.new(0, 5, 0, y)
  944. saveBtn.BackgroundColor3 = Color3.fromRGB(255, 0, 0); saveBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
  945. saveBtn.Font = Enum.Font.GothamBold; saveBtn.TextSize = 14; saveBtn.Text = "Salvar Configurações"
  946. saveBtn.BorderSizePixel = 0
  947. Instance.new("UICorner", saveBtn).CornerRadius = UDim.new(0, 6)
  948. saveBtn.Parent = configContent
  949. saveBtn.MouseButton1Click:Connect(function()
  950. save()
  951. StarterGui:SetCore("SendNotification", {Title = "WLh4x Hub", Text = "Configurações salvas!", Duration = 2})
  952. end)
  953.  
  954. -- Animação
  955. main.BackgroundTransparency = 1
  956. main.Size = UDim2.new(0, 0, 0, 0)
  957. main.Position = UDim2.new(0.5, 0, 0.5, 0)
  958. local info = TweenInfo.new(0.5, Enum.EasingStyle.Back, Enum.EasingDirection.Out)
  959. local goalSize = UDim2.new(0.5, 0, 0.5, 0)
  960. local goalPos = UDim2.new(0.25, 0, 0.25, 0)
  961. local tween = TweenService:Create(main, info, {Size = goalSize, Position = goalPos, BackgroundTransparency = 0})
  962. tween:Play()
  963.  
  964. StarterGui:SetCore("SendNotification", {Title = "WLh4x Hub", Text = "Welcome to WLh4x Hub", Duration = 3})
  965. updateFOV()
Advertisement
Add Comment
Please, Sign In to add comment