-- Konfigurasi Utama (Kembali ke Metode V12 Baku) getgenv().CustomControls = true getgenv().OneTapTrigger = true local JedaDeteksi = 0.01 -- Kecepatan respons sensor gerak & tembak local JedaTembak = 0.15 -- Jeda antar peluru agar sniper tidak nge-bug local Players = game:GetService("Players") local LocalPlayer = Players.LocalPlayer local PlayerGui = LocalPlayer:WaitForChild("PlayerGui") local VirtualInputManager = game:GetService("VirtualInputManager") local TweenService = game:GetService("TweenService") local UserInputService = game:GetService("UserInputService") local Camera = game:GetService("Workspace").CurrentCamera local sedangMenembak = false if PlayerGui:FindFirstChild("CustomMobileUI") then PlayerGui.CustomMobileUI:Destroy() end -- ======================================================================= -- 1. MEMBUAT TAMPILAN INTERFACE (KOTAK SENSOR & JOYSTICK) -- ======================================================================= local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "CustomMobileUI" ScreenGui.ResetOnSpawn = false ScreenGui.ClipToDeviceSafeArea = true ScreenGui.Parent = PlayerGui -- Kotak Area Sentuh Terbatas (Ukuran 2.5x lebih besar dari Joystick) local TouchZoneBox = Instance.new("TextButton") TouchZoneBox.Name = "TouchZoneBox" TouchZoneBox.Size = UDim2.new(0, 300, 0, 300) TouchZoneBox.Position = UDim2.new(0, 30, 1, -330) TouchZoneBox.BackgroundTransparency = 1 -- Transparan penuh agar tidak menghalangi visual game TouchZoneBox.Text = "" TouchZoneBox.Active = true TouchZoneBox.Parent = ScreenGui -- Tombol Lompat local JumpButton = Instance.new("ImageButton") JumpButton.Name = "VirtualJump" JumpButton.Size = UDim2.new(0, 75, 0, 75) JumpButton.Position = UDim2.new(1, -120, 1, -130) JumpButton.BackgroundColor3 = Color3.fromRGB(0, 0, 0) JumpButton.BackgroundTransparency = 0.5 JumpButton.Image = "rbxassetid://18244229671" JumpButton.ImageTransparency = 0.2 JumpButton.Active = true JumpButton.Parent = ScreenGui local JumpCorner = Instance.new("UICorner") JumpCorner.CornerRadius = UDim.new(1, 0) JumpCorner.Parent = JumpButton -- Base Lingkaran Joystick local JoystickBase = Instance.new("Frame") JoystickBase.Name = "DynamicJoystickBase" JoystickBase.Size = UDim2.new(0, 120, 0, 120) JoystickBase.BackgroundColor3 = Color3.fromRGB(0, 0, 0) JoystickBase.BackgroundTransparency = 0.6 JoystickBase.Visible = false JoystickBase.Active = false JoystickBase.Parent = ScreenGui local BaseCorner = Instance.new("UICorner") BaseCorner.CornerRadius = UDim.new(1, 0) BaseCorner.Parent = JoystickBase -- Stick Tengah Bulat Kecil local JoystickStick = Instance.new("ImageButton") JoystickStick.Name = "Stick" JoystickStick.Size = UDim2.new(0, 55, 0, 55) JoystickStick.Position = UDim2.new(0.5, -27, 0.5, -27) JoystickStick.BackgroundColor3 = Color3.fromRGB(255, 255, 255) JoystickStick.BackgroundTransparency = 0.4 JoystickStick.Image = "rbxassetid://18244231234" JoystickStick.Active = false JoystickStick.Parent = JoystickBase local StickCorner = Instance.new("UICorner") StickCorner.CornerRadius = UDim.new(1, 0) StickCorner.Parent = JoystickStick -- ======================================================================= -- 2. LOGIKA TOMBOL LOMPAT -- ======================================================================= JumpButton.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then JumpButton.BackgroundTransparency = 0.3 VirtualInputManager:SendKeyEvent(true, Enum.KeyCode.Space, false, game) end end) JumpButton.InputEnded:Connect(function(input) if input.UserInputType == Enum.UserInputType.Touch or input.UserInputType == Enum.UserInputType.MouseButton1 then JumpButton.BackgroundTransparency = 0.5 VirtualInputManager:SendKeyEvent(false, Enum.KeyCode.Space, false, game) end end) -- ======================================================================= -- 3. LOGIKA GERAKAN KOTAK SENSOR (INFINITE DRAG OUT) -- ======================================================================= local dragging = false local activeTouchInput = nil local currentKeys = {W = false, A = false, S = false, D = false} local function UpdateMovementKeys(newKeys) for key, shouldPress in pairs(newKeys) do if shouldPress ~= currentKeys[key] then currentKeys[key] = shouldPress VirtualInputManager:SendKeyEvent(shouldPress, Enum.KeyCode[key], false, game) end end end local function ProcessJoystickInput(touchPos) local center = JoystickBase.AbsolutePosition + (JoystickBase.AbsoluteSize / 2) local distance = (touchPos - center) local maxRadius = JoystickBase.AbsoluteSize.X / 2 if distance.Magnitude > maxRadius then distance = distance.Unit * maxRadius end JoystickStick.Position = UDim2.new(0.5, distance.X - 27, 0.5, distance.Y - 27) local keys = {W = false, A = false, S = false, D = false} if distance.Magnitude > 8 then local dir = distance.Unit if dir.Y < -0.38 then keys.W = true end if dir.Y > 0.38 then keys.S = true end if dir.X < -0.38 then keys.A = true end if dir.X > 0.38 then keys.D = true end end UpdateMovementKeys(keys) end -- Sentuhan harus dimulai dari dalam Kotak Transparan Kiri TouchZoneBox.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.Touch and not dragging then dragging = true activeTouchInput = input local pos = input.Position JoystickBase.Position = UDim2.new(0, pos.X - 60, 0, pos.Y - 60) JoystickStick.Position = UDim2.new(0.5, -27, 0.5, -27) JoystickBase.Visible = true ProcessJoystickInput(Vector2.new(pos.X, pos.Y)) end end) -- Menyeret bebas keluar dari batas kotak sensor UserInputService.InputChanged:Connect(function(input) if dragging and input == activeTouchInput and input.UserInputType == Enum.UserInputType.Touch then local pos = input.Position ProcessJoystickInput(Vector2.new(pos.X, pos.Y)) end end) -- Jari dilepas di mana saja UserInputService.InputEnded:Connect(function(input) if dragging and input == activeTouchInput then dragging = false activeTouchInput = nil TweenService:Create(JoystickStick, TweenInfo.new(0.06, Enum.EasingStyle.Quad, Enum.EasingDirection.Out), {Position = UDim2.new(0.5, -27, 0.5, -27)}):Play() JoystickBase.Visible = false UpdateMovementKeys({W = false, A = false, S = false, D = false}) end end) -- ======================================================================= -- 4. LOGIKA INTEGRASI TRIGGERBOT RAYCAST UNIVERSAL (METODE V12 BAKU) -- ======================================================================= local function GetEnemyInCrosshair() local centerScreen = Camera.ViewportSize / 2 local ray = Camera:ViewportPointToRay(centerScreen.X, centerScreen.Y) local raycastParams = RaycastParams.new() raycastParams.FilterType = Enum.RaycastFilterType.Exclude raycastParams.FilterDescendantsInstances = {LocalPlayer.Character, ScreenGui} local result = game:GetService("Workspace"):Raycast(ray.Origin, ray.Direction * 1000, raycastParams) if result and result.Instance then local hitPart = result.Instance local humanoid = hitPart:FindFirstAncestorOfClass("Model") and hitPart:FindFirstAncestorOfClass("Model"):FindFirstChildOfClass("Humanoid") if not humanoid and hitPart.Parent then humanoid = hitPart.Parent:FindFirstChildOfClass("Humanoid") or (hitPart.Parent.Parent and hitPart.Parent.Parent:FindFirstChildOfClass("Humanoid")) end if humanoid and humanoid.Health > 0 and humanoid.Parent ~= LocalPlayer.Character then return true end end return false end task.spawn(function() while getgenv().OneTapTrigger do if not sedangMenembak then if GetEnemyInCrosshair() then sedangMenembak = true -- Fungsi klik murni andalan dari versi awal Anda yang terbukti menembak if mouse1press and mouse1release then mouse1press() task.wait(0.02) mouse1release() elseif pressMouseButton1 then pressMouseButton1() task.wait(0.02) releaseMouseButton1() end task.wait(JedaTembak) sedangMenembak = false end end task.wait(JedaDeteksi) end end) game:GetService("StarterGui"):SetCore("SendNotification", { Title = "One Tap V12 Reborn", Text = "Berhasil memulihkan ke versi V12 asli pilihan Anda!", Duration = 5 })