
KeylessUniversal

local lplr = game.Players.LocalPlayer
local chat = game:GetService("TextChatService").TextChannels.RBXGeneral
local runService = game:GetService("RunService")
local CAS = game:GetService("ContextActionService")
-- Configuration
local WATER_GUN_ID = "16972562122"
local PISS_OFFSET = CFrame.new(0,-0.25,1.5) * CFrame.Angles(math.rad(-90),math.rad(90),0) * CFrame.Angles(0,0,math.rad(-45))
local VOICELINES = {
"Ahhh, that's the stuff.",
"Now the flowers will grow.",
"I feel like a new man.",
"There, that's better.",
}
-- Setup Rig
chat:SendAsync("-r6")
repeat task.wait() until lplr.Character and lplr.Character:FindFirstChild("Humanoid") and lplr.Character.Humanoid.RigType == Enum.HumanoidRigType.R6
task.wait(1)
-- Request Hats
local ghCmd = "-gh " .. string.rep(WATER_GUN_ID .. " ", 15)
chat:SendAsync(ghCmd)
task.wait(1.5)
chat:SendAsync(ghCmd)
task.wait(2)
chat:SendAsync("-net")
local chr = lplr.Character
local hrp = chr:WaitForChild("HumanoidRootPart")
local torso = chr:WaitForChild("Torso")
-- Create the Target Part
local pissPart = Instance.new("Part")
pissPart.Transparency = 1
pissPart.CanCollide = false
pissPart.Anchored = true
pissPart.Size = Vector3.new(1, 1, 1)
pissPart.Parent = workspace
local accs = {}
for _, a in ipairs(chr:GetChildren()) do
if a:IsA("Accessory") and (a.Name:find("Hydro") or a.Name:find("Water")) then
local handle = a:FindFirstChild("Handle")
if handle then
handle:BreakJoints()
table.insert(accs, handle)
end
end
end
-- State Management
local isPissing = false
local useVoicelines = false
-- SPIN SYSTEMS
local spinHats = false -- Minigun
local FountainHats = false -- Fountain / orbit
local fastSpinHats = false -- internal helper
local spinAngle = 0
local spinSpeed = 4
-- Physics Loop
runService.PostSimulation:Connect(function(dt)
if isPissing then
spinAngle = spinAngle + spinSpeed * dt
for i, h in ipairs(accs) do
local angle = spinAngle + (i * (2 * math.pi / #accs))
if FountainHats then
-- Fountain/orbit mode (C)
local radius = 1.2
local center = hrp.Position
local orbitPos = center + Vector3.new(
math.cos(angle) * radius,
0.5,
math.sin(angle) * radius
)
h.CFrame = CFrame.new(orbitPos, center)
elseif spinHats then
-- Minigun spin (X)
local radius = 1.5
local spinOffset = CFrame.new(
math.cos(angle) * radius,
0,
math.sin(angle) * radius
)
h.CFrame = pissPart.CFrame * spinOffset
else
-- Default: just follow pissPart
h.CFrame = pissPart.CFrame
end
h.Velocity = Vector3.new(0, 8.141 * math.pi, 0)
end
else
for _, h in ipairs(accs) do
h.CFrame = CFrame.new(0, -50, 0)
end
end
end)
runService.PreSimulation:Connect(function()
if isPissing then
pissPart.CFrame = torso.CFrame * PISS_OFFSET
end
end)
-- Controls
-- F: Toggle stream
CAS:BindAction("PissAction", function(_, state)
if state == Enum.UserInputState.Begin then
isPissing = true
if useVoicelines then
chat:SendAsync(VOICELINES[math.random(1, #VOICELINES)])
end
elseif state == Enum.UserInputState.End then
isPissing = false
end
return Enum.ContextActionResult.Sink
end, true, Enum.KeyCode.F)
-- Z: Toggle voicelines
CAS:BindAction("ToggleVC", function(_, state)
if state == Enum.UserInputState.Begin then
useVoicelines = not useVoicelines
CAS:SetTitle("ToggleVC", useVoicelines and "VC: ON (Z)" or "VC: OFF (Z)")
end
return Enum.ContextActionResult.Sink
end, true, Enum.KeyCode.Z)
-- X: Minigun spin toggle
CAS:BindAction("MinigunHats", function(_, state)
if state == Enum.UserInputState.Begin then
spinHats = not spinHats
if spinHats then
FountainHats = false
fastSpinHats = false
end
CAS:SetTitle("MinigunHats", spinHats and "Minigun: ON (X)" or "Minigun: OFF (X)")
end
return Enum.ContextActionResult.Sink
end, true, Enum.KeyCode.X)
-- C: Fountain / orbit around player
CAS:BindAction("FountainHats", function(_, state)
if state == Enum.UserInputState.Begin then
FountainHats = not FountainHats
if FountainHats then
spinHats = false
fastSpinHats = true
else
fastSpinHats = false
end
CAS:SetTitle("FountainHats", FountainHats and "Fountain: ON (C)" or "Fountain: OFF (C)")
end
return Enum.ContextActionResult.Sink
end, true, Enum.KeyCode.C)
-- Initial button titles
CAS:SetTitle("PissAction", "Piss (F)")
CAS:SetTitle("ToggleVC", "VC: OFF (Z)")
CAS:SetTitle("MinigunHats", "Minigun: OFF (X)")
CAS:SetTitle("FountainHats", "Fountain: OFF (C)")
-- Optional positions (mobile)
CAS:SetPosition("ToggleVC", UDim2.fromScale(0, 0.1))
CAS:SetPosition("MinigunHats", UDim2.fromScale(0, 0.25))
CAS:SetPosition("FountainHats", UDim2.fromScale(0, 0.40))
print("Modded by: Quifdiver/theinfgod_224629")
chat:SendAsync("edited a bit by: quifdiver/theinfgod_224629")



plz useeee :((((((((((((((((((((((((((((((((((
my friend NOOB tried
why do the hats delete after the script ends?