local Players = game:GetService("Players") local RunService = game:GetService("RunService") local Debris = game:GetService("Debris") local UserInputService = game:GetService("UserInputService") local TextChatService = game:GetService("TextChatService") local function SendChatMessage(message) if TextChatService.ChatVersion == Enum.ChatVersion.TextChatService then local textChannel = TextChatService.TextChannels:FindFirstChild("RBXGeneral") if textChannel then textChannel:SendAsync(message) end else game:GetService("ReplicatedStorage").DefaultChatSystemChatEvents.SayMessageRequest:FireServer(message, "All") end end local player = Players.LocalPlayer local function GetNearestPlayerInFront(targetPlayer, maxAngle) maxAngle = maxAngle or 60 -- degrees (cone size) if not targetPlayer.Character then return nil end local targetHRP = targetPlayer.Character:FindFirstChild("HumanoidRootPart") if not targetHRP then return nil end local targetLook = targetHRP.CFrame.LookVector local closest = nil local closestDist = math.huge for _, p in pairs(Players:GetPlayers()) do if p ~= player and p ~= targetPlayer and p.Character then local hrp = p.Character:FindFirstChild("HumanoidRootPart") if hrp then local vec = (hrp.Position - targetHRP.Position).Unit local angle = math.deg(math.acos(targetLook:Dot(vec))) -- Check if player is in front if angle <= maxAngle then local dist = (hrp.Position - targetHRP.Position).Magnitude if dist < closestDist then closestDist = dist closest = hrp end end end end end return closest end local character = player.Character or player.CharacterAdded:Wait() local humanoidRootPart = character:WaitForChild("HumanoidRootPart") local humanoid = character:FindFirstChildOfClass("Humanoid") or character:WaitForChild("Humanoid") local standDistance = 3 local sideOffset = 2 local heightOffset = 2 local followSpeed = 0.35 local flingDuration = 1 local followDuration = 0.6 local punchSoundId = "rbxassetid://6186250072" local heavyPunchSoundId = "rbxassetid://6164853733" local summonSoundIds = { "rbxassetid://2102274452", "rbxassetid://2554017604" } local screenGui = Instance.new("ScreenGui") screenGui.Name = "StandControllerGUI" screenGui.ResetOnSpawn = false screenGui.Parent = player:WaitForChild("PlayerGui") local mainFrame = Instance.new("Frame") mainFrame.Size = UDim2.new(0, 200, 0, 270) mainFrame.Position = UDim2.new(0.05, 0, 0.5, -135) mainFrame.BackgroundColor3 = Color3.fromRGB(25,25,30) mainFrame.BorderSizePixel = 0 mainFrame.Parent = screenGui Instance.new("UICorner", mainFrame).CornerRadius = UDim.new(0,12) local title = Instance.new("TextLabel") title.Size = UDim2.new(1, -10, 0, 28) title.Position = UDim2.new(0, 10, 0, 6) title.BackgroundTransparency = 1 title.Text = "Stand Controller" title.TextColor3 = Color3.fromRGB(0, 200, 255) title.Font = Enum.Font.GothamBold title.TextSize = 18 title.TextXAlignment = Enum.TextXAlignment.Left title.Parent = mainFrame local closeBtn = Instance.new("TextButton") closeBtn.Size = UDim2.new(0, 28, 0, 24) closeBtn.Position = UDim2.new(1, -36, 0, 6) closeBtn.Text = "X" closeBtn.Font = Enum.Font.GothamBold closeBtn.TextSize = 14 closeBtn.TextColor3 = Color3.fromRGB(255,255,255) closeBtn.BackgroundColor3 = Color3.fromRGB(35,35,45) Instance.new("UICorner", closeBtn).CornerRadius = UDim.new(0,8) closeBtn.Parent = mainFrame local guiToggle = Instance.new("TextButton") guiToggle.Size = UDim2.new(0, 48, 0, 28) guiToggle.Position = UDim2.new(0.5, -24, 1, -44) guiToggle.Text = "GUI" guiToggle.Font = Enum.Font.GothamBold guiToggle.TextSize = 14 guiToggle.TextColor3 = Color3.fromRGB(255,255,255) guiToggle.BackgroundColor3 = Color3.fromRGB(30,30,40) Instance.new("UICorner", guiToggle).CornerRadius = UDim.new(0,8) guiToggle.Parent = screenGui local guiVisible = true guiToggle.MouseButton1Click:Connect(function() guiVisible = not guiVisible mainFrame.Visible = guiVisible end) closeBtn.MouseButton1Click:Connect(function() mainFrame.Visible = false end) local function makeButton(text, y) local b = Instance.new("TextButton") b.Size = UDim2.new(0.78, 0, 0, 36) b.Position = UDim2.new(0.11, 0, 0, y) b.Text = text b.Font = Enum.Font.GothamBold b.TextSize = 16 b.TextColor3 = Color3.fromRGB(255,255,255) b.BackgroundColor3 = Color3.fromRGB(30,30,45) Instance.new("UICorner", b).CornerRadius = UDim.new(0,10) b.Parent = mainFrame return b end local standBtn = makeButton("Stand: OFF", 36) local targetBox = Instance.new("TextBox") targetBox.Size = UDim2.new(0.78, 0, 0, 36) targetBox.Position = UDim2.new(0.11, 0, 0, 80) targetBox.PlaceholderText = "Enter target name" targetBox.ClearTextOnFocus = false targetBox.Font = Enum.Font.Gotham targetBox.TextSize = 14 targetBox.BackgroundColor3 = Color3.fromRGB(35,35,45) targetBox.TextColor3 = Color3.fromRGB(255,255,255) Instance.new("UICorner", targetBox).CornerRadius = UDim.new(0,10) targetBox.Parent = mainFrame local punchBtn = makeButton("Skull Crusher", 122) local function makeSlider(labelText, y, default, min, max, callback) local lbl = Instance.new("TextLabel") lbl.Size = UDim2.new(0.5, 0, 0, 16) lbl.Position = UDim2.new(0.14, 0, 0, y) lbl.BackgroundTransparency = 1 lbl.Text = labelText .. ": " .. tostring(default) lbl.TextColor3 = Color3.fromRGB(0,200,255) lbl.Font = Enum.Font.Gotham lbl.TextSize = 12 lbl.TextXAlignment = Enum.TextXAlignment.Left lbl.Parent = mainFrame local box = Instance.new("TextBox") box.Size = UDim2.new(0.72, 0, 0, 20) box.Position = UDim2.new(0.14, 0, 0, y + 16) box.Text = tostring(default) box.ClearTextOnFocus = false box.BackgroundColor3 = Color3.fromRGB(35,35,45) box.TextColor3 = Color3.fromRGB(255,255,255) box.Font = Enum.Font.Gotham box.TextSize = 14 Instance.new("UICorner", box).CornerRadius = UDim.new(0,6) box.Parent = mainFrame box.FocusLost:Connect(function(enter) local num = tonumber(box.Text) if num then num = math.clamp(num, min, max) box.Text = tostring(num) lbl.Text = labelText .. ": " .. tostring(num) callback(num) else box.Text = tostring(default) end end) return box, lbl end local posBox, posLabel = makeSlider("Position", 160, standDistance, 0, 20, function(v) standDistance = v end) local offBox, offLabel = makeSlider("Offset", 188, sideOffset, -10, 10, function(v) sideOffset = v end) local heightBox, heightLabel = makeSlider("Float Height", 216, heightOffset, 0, 10, function(v) heightOffset = v end) do local dragging = false local dragStart = Vector2.new() local startPos = mainFrame.Position mainFrame.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then dragging = true dragStart = input.Position startPos = mainFrame.Position input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false end end) end end) RunService.RenderStepped:Connect(function() if dragging then local mousePos = UserInputService:GetMouseLocation() local delta = mousePos - dragStart local newX = math.clamp(startPos.X.Offset + delta.X, 0, workspace.CurrentCamera.ViewportSize.X - mainFrame.Size.X.Offset) local newY = math.clamp(startPos.Y.Offset + delta.Y, 0, workspace.CurrentCamera.ViewportSize.Y - mainFrame.Size.Y.Offset) mainFrame.Position = UDim2.new(0, newX, 0, newY) end end) end local function findTargetByName(namePart) if not namePart or namePart == "" then return nil end namePart = namePart:lower() for _, p in pairs(Players:GetPlayers()) do if p ~= player and p.Name:lower():find(namePart) then return p end end return nil end local standOn = false local bp, gyro = nil, nil local floatTime = 0 local function enableStand() for _, part in pairs(character:GetDescendants()) do if part:IsA("BasePart") then part.CanCollide = false end end if not bp then bp = Instance.new("BodyPosition") bp.MaxForce = Vector3.new(4e5, 4e5, 4e5) bp.P = 2000 bp.D = 50 bp.Position = humanoidRootPart.Position bp.Parent = humanoidRootPart end if not gyro then gyro = Instance.new("BodyGyro") gyro.P = 2000 gyro.D = 50 gyro.MaxTorque = Vector3.new(4e5, 4e5, 4e5) gyro.CFrame = humanoidRootPart.CFrame gyro.Parent = humanoidRootPart end end local function disableStand() for _, part in pairs(character:GetDescendants()) do if part:IsA("BasePart") then part.CanCollide = true end end if bp then bp:Destroy(); bp=nil end if gyro then gyro:Destroy(); gyro=nil end end standBtn.MouseButton1Click:Connect(function() standOn = not standOn standBtn.Text = standOn and "Stand: ON" or "Stand: OFF" if standOn then enableStand() local t = findTargetByName(targetBox.Text) if t and t.Character and t.Character:FindFirstChild("HumanoidRootPart") then for _, id in ipairs(summonSoundIds) do local summon = Instance.new("Sound", humanoidRootPart) summon.SoundId = id summon.Volume = 1 summon:Play() Debris:AddItem(summon, 3) end end -- Tambah di sini untuk hantar mesej summon JoJo SendChatMessage("Sutāpurachina, osewaninarimasu.") else disableStand() end end) RunService.RenderStepped:Connect(function(dt) if standOn and bp and gyro and targetBox.Text~="" then floatTime += dt * 2 local floatOffset = math.sin(floatTime) * 0.5 local t = findTargetByName(targetBox.Text) if t and t.Character and t.Character:FindFirstChild("HumanoidRootPart") then local targetHRP = t.Character.HumanoidRootPart local tcf = targetHRP.CFrame local desiredPos = tcf.Position - tcf.LookVector*standDistance + tcf.RightVector*sideOffset + Vector3.new(0, heightOffset + floatOffset, 0) bp.Position = bp.Position:Lerp(desiredPos, math.clamp(followSpeed,0.01,1)) gyro.CFrame = CFrame.new(humanoidRootPart.Position, humanoidRootPart.Position + tcf.LookVector) end end end) local function runPastebinStyleFling(duration) local start = tick() local movel = 0.1 while tick() - start < duration do RunService.Heartbeat:Wait() local c = player.Character local hrp = c and c:FindFirstChild("HumanoidRootPart") if hrp then local vel = hrp.Velocity hrp.Velocity = vel * 10000 + Vector3.new(0,10000,0) RunService.RenderStepped:Wait() hrp.Velocity = vel RunService.Stepped:Wait() hrp.Velocity = vel + Vector3.new(0, movel, 0) movel = -movel end end end local function punchTarget() local punchAnim = Instance.new("Animation") punchAnim.AnimationId = "rbxassetid://86464152593138" local punchTrack = humanoid:LoadAnimation(punchAnim) punchTrack.Priority = Enum.AnimationPriority.Action punchTrack:Play() -- Berhenti automatik lepas 1 saat task.delay(1, function() if punchTrack then punchTrack:Stop() punchTrack:Destroy() end end) local targetPlayer = findTargetByName(targetBox.Text) if not targetPlayer or not targetPlayer.Character then return end local targetHRP = targetPlayer.Character:FindFirstChild("HumanoidRootPart") if not targetHRP then return end -- 🌟 Hantar mesej Skull Crusher SendChatMessage("ORA ORA! Sabaku no ha ore no sutando da!") local nearest = GetNearestPlayerInFront(targetPlayer) if not nearest then return end local wasStandOn = standOn if wasStandOn then standOn = false standBtn.Text = "Stand: OFF" disableStand() end humanoidRootPart.CFrame = CFrame.new(nearest.Position + Vector3.new(0,3,0)) local tempBP = Instance.new("BodyPosition") tempBP.MaxForce = Vector3.new(1e6, 1e6, 1e6) tempBP.P = 4000 tempBP.D = 100 tempBP.Position = nearest.Position tempBP.Parent = humanoidRootPart local tempGyro = Instance.new("BodyGyro") tempGyro.MaxTorque = Vector3.new(1e6, 1e6, 1e6) tempGyro.P = 4000 tempGyro.D = 100 tempGyro.CFrame = humanoidRootPart.CFrame tempGyro.Parent = humanoidRootPart local followConnection followConnection = RunService.RenderStepped:Connect(function() if not (tempBP and tempGyro and nearest and nearest.Parent) then return end tempBP.Position = nearest.Position local lookVec = nearest.CFrame.LookVector tempGyro.CFrame = CFrame.new(humanoidRootPart.Position, humanoidRootPart.Position + lookVec) end) task.delay(followDuration, function() if followConnection then followConnection:Disconnect() followConnection = nil end if tempBP then tempBP:Destroy(); tempBP = nil end if tempGyro then tempGyro:Destroy(); tempGyro = nil end end) local effect = Instance.new("ColorCorrectionEffect") effect.Saturation = -1 effect.Parent = game.Lighting local s = Instance.new("Sound", humanoidRootPart) s.SoundId = punchSoundId s.Volume = 1 s:Play() Debris:AddItem(s,3) task.delay(0.2, function() local s2 = Instance.new("Sound", humanoidRootPart) s2.SoundId = heavyPunchSoundId s2.Volume = 1 s2:Play() Debris:AddItem(s2,3) end) task.spawn(function() runPastebinStyleFling(flingDuration) end) task.delay(flingDuration + 0.25, function() if followConnection then followConnection:Disconnect() followConnection = nil end if tempBP then tempBP:Destroy(); tempBP = nil end if tempGyro then tempGyro:Destroy(); tempGyro = nil end if effect and effect.Parent then effect:Destroy() end if wasStandOn then standOn = true standBtn.Text = "Stand: ON" enableStand() if bp then bp.Position = humanoidRootPart.Position end end end) end punchBtn.MouseButton1Click:Connect(punchTarget) local function onPlayerChatted(otherPlayer, message) local targetName = targetBox.Text if not targetName or targetName == "" then return end if standOn and otherPlayer.Name:lower():find(targetName:lower()) and message:lower():find("barrage") then punchTarget() end if standOn and otherPlayer.Name:lower():find(targetName:lower()) and message:lower():find("vanish") then standOn = false standBtn.Text = "Stand: OFF" disableStand() SendChatMessage("Yare Yare Daze,Kōun o..") end if otherPlayer.Name:lower():find(targetName:lower()) and message:lower():find("summon") then standOn = not standOn standBtn.Text = standOn and "Stand: ON" or "Stand: OFF" if standOn then enableStand() local t = findTargetByName(targetBox.Text) if t and t.Character and t.Character:FindFirstChild("HumanoidRootPart") then for _, id in ipairs(summonSoundIds) do local summon = Instance.new("Sound", humanoidRootPart) summon.SoundId = id summon.Volume = 1 summon:Play() Debris:AddItem(summon, 3) end end SendChatMessage("Sutāpurachina, osewaninarimasu.") else disableStand() end end end for _, p in pairs(Players:GetPlayers()) do if p ~= player then p.Chatted:Connect(function(msg) onPlayerChatted(p, msg) end) end end Players.PlayerAdded:Connect(function(p) if p ~= player then p.Chatted:Connect(function(msg) onPlayerChatted(p, msg) end) end end) player.CharacterAdded:Connect(function(char) character = char humanoidRootPart = character:WaitForChild("HumanoidRootPart") humanoid = character:FindFirstChildOfClass("Humanoid") or character:WaitForChild("Humanoid") disableStand() standOn = false standBtn.Text = "Stand: OFF" end) local levitateIdle = Instance.new("Animation") levitateIdle.AnimationId = "rbxassetid://122746752555782" local moveAnim = Instance.new("Animation") moveAnim.AnimationId = "rbxassetid://10921135644" local levitateTrack local moveTrack local function playLevitateIdle() if humanoid and not levitateTrack then levitateTrack = humanoid:LoadAnimation(levitateIdle) levitateTrack.Priority = Enum.AnimationPriority.Idle levitateTrack.Looped = true levitateTrack:Play() end end local function stopLevitateIdle() if levitateTrack then levitateTrack:Stop() levitateTrack:Destroy() levitateTrack = nil end end local function playMoveAnim() if humanoid and not moveTrack then moveTrack = humanoid:LoadAnimation(moveAnim) moveTrack.Priority = Enum.AnimationPriority.Movement moveTrack.Looped = true moveTrack:Play() end end local function stopMoveAnim() if moveTrack then moveTrack:Stop() moveTrack:Destroy() moveTrack = nil end end RunService.RenderStepped:Connect(function(dt) if standOn then local target = findTargetByName(targetBox.Text) if target and target.Character and target.Character:FindFirstChild("HumanoidRootPart") then local targetHumanoid = target.Character:FindFirstChildOfClass("Humanoid") if targetHumanoid then if targetHumanoid.MoveDirection.Magnitude > 0 then stopLevitateIdle() playMoveAnim() else stopMoveAnim() playLevitateIdle() end end else stopMoveAnim() playLevitateIdle() end else stopLevitateIdle() stopMoveAnim() end end)