Water menu v1
Key RequiredUniversal

Water menu v1

Universal Scriptmrusscher0mrusscher0 2K views 44 executesUpdated Jun 17, 2025
Unrated
00
Lua Scriptβ€’555 lines (17481 chars)
-- Water Menu GUI with 40 OP Water Mods

local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local RunService = game:GetService("RunService")

local player = Players.LocalPlayer

-- Table of all 40 water mod functions
local waterMods = {}

-- Helper function: get player's position or default
local function getPlayerPos(offset)
    offset = offset or Vector3.new(0, 5, 10)
    if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
        return player.Character.HumanoidRootPart.Position + offset
    else
        return workspace.Baseplate.Position + Vector3.new(0,5,0)
    end
end

-- 1 Tall Water Tower
waterMods["🏰 Tall Water Tower"] = function()
    local pos = getPlayerPos()
    workspace.Terrain:FillBlock(CFrame.new(pos), Vector3.new(4,30,4), Enum.Material.Water)
end

-- 2 Water Car
waterMods["πŸš— Water Car"] = function()
    local pos = getPlayerPos()
    local car = Instance.new("Part")
    car.Name = "WaterCar"
    car.Size = Vector3.new(8, 2, 4)
    car.CFrame = CFrame.new(pos) * CFrame.new(0, 1, 0)
    car.Anchored = false
    car.Material = Enum.Material.Water
    car.Color = Color3.fromRGB(50, 150, 255)
    car.CanCollide = true
    car.Parent = workspace

    local bodyVel = Instance.new("BodyVelocity")
    bodyVel.Velocity = player.Character and player.Character.HumanoidRootPart.CFrame.LookVector * 50 or Vector3.new(0,0,50)
    bodyVel.MaxForce = Vector3.new(1e5,1e5,1e5)
    bodyVel.Parent = car

    -- Auto destroy after 20 seconds
    delay(20, function() if car then car:Destroy() end end)
end

-- 3 Water Fountain (Fixed)
waterMods["β›² Water Fountain"] = function()
    local pos = getPlayerPos()
    local fountain = Instance.new("Part")
    fountain.Name = "WaterFountain"
    fountain.Size = Vector3.new(2, 4, 2)
    fountain.CFrame = CFrame.new(pos)
    fountain.Anchored = true
    fountain.Material = Enum.Material.Water
    fountain.Color = Color3.fromRGB(120,180,255)
    fountain.Transparency = 0.4
    fountain.Parent = workspace

    local emitter = Instance.new("ParticleEmitter")
    emitter.Texture = "rbxassetid://243660364" -- water splash texture
    emitter.Rate = 50
    emitter.Lifetime = NumberRange.new(1)
    emitter.Speed = NumberRange.new(5)
    emitter.Parent = fountain

    delay(15, function() if fountain then fountain:Destroy() end end)
end

-- 4 Water Pool
waterMods["🏊 Water Pool"] = function()
    local pos = getPlayerPos(Vector3.new(0,-1,0))
    workspace.Terrain:FillBlock(CFrame.new(pos), Vector3.new(20,3,20), Enum.Material.Water)
end

-- 5 Water Wave
waterMods["🌊 Water Wave"] = function()
    local pos = getPlayerPos()
    local wave = Instance.new("Part")
    wave.Size = Vector3.new(30, 1, 10)
    wave.CFrame = CFrame.new(pos) * CFrame.new(0, 0, 15)
    wave.Anchored = true
    wave.Material = Enum.Material.Water
    wave.Color = Color3.fromRGB(50, 100, 255)
    wave.Transparency = 0.3
    wave.Parent = workspace

    delay(10, function() if wave then wave:Destroy() end end)
end

-- 6 Waterfall
waterMods["πŸ’§ Waterfall"] = function()
    local pos = getPlayerPos()
    workspace.Terrain:FillBlock(CFrame.new(pos), Vector3.new(4, 15, 2), Enum.Material.Water)
end

-- 7 Water Tunnel
waterMods["πŸš‡ Water Tunnel"] = function()
    local pos = getPlayerPos()
    workspace.Terrain:FillBlock(CFrame.new(pos), Vector3.new(10, 5, 5), Enum.Material.Water)
end

-- 8 Water Dome
waterMods["πŸ›‘οΈ Water Dome"] = function()
    local pos = getPlayerPos()
    workspace.Terrain:FillBall(pos, 10, Enum.Material.Water)
end

-- 9 Water Cube
waterMods["🟦 Water Cube"] = function()
    local pos = getPlayerPos()
    workspace.Terrain:FillBlock(CFrame.new(pos), Vector3.new(10,10,10), Enum.Material.Water)
end

-- 10 Water Bridge
waterMods["πŸŒ‰ Water Bridge"] = function()
    local pos = getPlayerPos()
    workspace.Terrain:FillBlock(CFrame.new(pos), Vector3.new(25, 2, 5), Enum.Material.Water)
end

-- 11 Water Pillar
waterMods["πŸ›οΈ Water Pillar"] = function()
    local pos = getPlayerPos()
    workspace.Terrain:FillBlock(CFrame.new(pos), Vector3.new(2,20,2), Enum.Material.Water)
end

-- 12 Water Slide
waterMods["🎒 Water Slide"] = function()
    local pos = getPlayerPos()
    local slide = Instance.new("Part")
    slide.Size = Vector3.new(10, 1, 30)
    slide.CFrame = CFrame.new(pos) * CFrame.Angles(0,0,math.rad(-30))
    slide.Anchored = true
    slide.Material = Enum.Material.Water
    slide.Color = Color3.fromRGB(100,150,255)
    slide.Transparency = 0.4
    slide.Parent = workspace

    delay(20, function() if slide then slide:Destroy() end end)
end

-- 13 Water Maze
waterMods["πŸŒ€ Water Maze"] = function()
    local pos = getPlayerPos()
    workspace.Terrain:FillBlock(CFrame.new(pos), Vector3.new(40,5,40), Enum.Material.Water)
end

-- 14 Water Cannon
waterMods["🚿 Water Cannon"] = function()
    local pos = getPlayerPos()
    local cannon = Instance.new("Part")
    cannon.Size = Vector3.new(3,3,6)
    cannon.CFrame = CFrame.new(pos) * CFrame.Angles(0, math.rad(90), 0)
    cannon.Anchored = true
    cannon.Material = Enum.Material.Water
    cannon.Color = Color3.fromRGB(80, 160, 255)
    cannon.Transparency = 0.2
    cannon.Parent = workspace

    local particle = Instance.new("ParticleEmitter")
    particle.Texture = "rbxassetid://243660364"
    particle.Speed = NumberRange.new(30)
    particle.Lifetime = NumberRange.new(0.5)
    particle.Rate = 150
    particle.Parent = cannon

    delay(10, function() if cannon then cannon:Destroy() end end)
end

-- 15 Water Wave Wall
waterMods["🌊 Water Wave Wall"] = function()
    local pos = getPlayerPos()
    workspace.Terrain:FillBlock(CFrame.new(pos), Vector3.new(25, 10, 2), Enum.Material.Water)
end

-- 16 Water Tower Explosion
waterMods["πŸ’₯ Water Tower Explosion"] = function()
    local pos = getPlayerPos()
    workspace.Terrain:FillBall(pos, 12, Enum.Material.Water)
end

-- 17 Water Platform
waterMods["πŸ›– Water Platform"] = function()
    local pos = getPlayerPos()
    workspace.Terrain:FillBlock(CFrame.new(pos), Vector3.new(15,1,15), Enum.Material.Water)
end

-- 18 Water Balloon
waterMods["🎈 Water Balloon"] = function()
    local pos = getPlayerPos()
    workspace.Terrain:FillBall(pos + Vector3.new(0, 10, 0), 5, Enum.Material.Water)
end

-- 19 Water Rapids
waterMods["🏞️ Water Rapids"] = function()
    local pos = getPlayerPos()
    workspace.Terrain:FillBlock(CFrame.new(pos), Vector3.new(20,3,10), Enum.Material.Water)
end

-- 20 Water Pond
waterMods["πŸ¦† Water Pond"] = function()
    local pos = getPlayerPos()
    workspace.Terrain:FillBlock(CFrame.new(pos), Vector3.new(12,3,12), Enum.Material.Water)
end

-- 21 Water Geyser
waterMods["πŸŒ‹ Water Geyser"] = function()
    local pos = getPlayerPos()
    local geyser = Instance.new("Part")
    geyser.Size = Vector3.new(4,15,4)
    geyser.CFrame = CFrame.new(pos)
    geyser.Anchored = true
    geyser.Material = Enum.Material.Water
    geyser.Color = Color3.fromRGB(120,200,255)
    geyser.Transparency = 0.3
    geyser.Parent = workspace

    local emitter = Instance.new("ParticleEmitter")
    emitter.Texture = "rbxassetid://243660364"
    emitter.Rate = 80
    emitter.Lifetime = NumberRange.new(1)
    emitter.Speed = NumberRange.new(20)
    emitter.Parent = geyser

    delay(20, function() if geyser then geyser:Destroy() end end)
end

-- 22 Water River
waterMods["🏞️ Water River"] = function()
    local pos = getPlayerPos()
    workspace.Terrain:FillBlock(CFrame.new(pos), Vector3.new(40,5,10), Enum.Material.Water)
end

-- 23 Water Sphere
waterMods["βšͺ Water Sphere"] = function()
    local pos = getPlayerPos()
    workspace.Terrain:FillBall(pos, 15, Enum.Material.Water)
end

-- 24 Water Jetpack
waterMods["πŸš€ Water Jetpack"] = function()
    local hrp = player.Character and player.Character:FindFirstChild("HumanoidRootPart")
    if not hrp then return end

    local jetpack = Instance.new("BodyVelocity")
    jetpack.Velocity = Vector3.new(0, 100, 0)
    jetpack.MaxForce = Vector3.new(0, 1e5, 0)
    jetpack.Parent = hrp

    delay(3, function() jetpack:Destroy() end)
end

-- 25 Water Shield
waterMods["πŸ›‘οΈ Water Shield"] = function()
    local hrp = player.Character and player.Character:FindFirstChild("HumanoidRootPart")
    if not hrp then return end

    local shield = Instance.new("Part")
    shield.Name = "WaterShield"
    shield.Size = Vector3.new(8, 8, 1)
    shield.CFrame = hrp.CFrame * CFrame.new(0, 0, -5)
    shield.Anchored = true
    shield.Transparency = 0.6
    shield.Material = Enum.Material.Water
    shield.Color = Color3.fromRGB(60, 120, 255)
    shield.Parent = workspace

    delay(15, function() if shield then shield:Destroy() end end)
end

-- 26 Water Pillars Rain
waterMods["🌧️ Water Pillars Rain"] = function()
    local pos = getPlayerPos(Vector3.new(0, 50, 0))
    for i=1,15 do
        local pillarPos = pos + Vector3.new(math.random(-20,20), 0, math.random(-20,20))
        workspace.Terrain:FillBlock(CFrame.new(pillarPos), Vector3.new(2,15,2), Enum.Material.Water)
    end
end

-- 27 Water Wave Surge
waterMods["🌊 Water Wave Surge"] = function()
    local pos = getPlayerPos()
    workspace.Terrain:FillBlock(CFrame.new(pos), Vector3.new(30,8,8), Enum.Material.Water)
end

-- 28 Water Column
waterMods["πŸ›οΈ Water Column"] = function()
    local pos = getPlayerPos()
    workspace.Terrain:FillBlock(CFrame.new(pos), Vector3.new(3,20,3), Enum.Material.Water)
end

-- 29 Water Blob
waterMods["πŸ’§ Water Blob"] = function()
    local pos = getPlayerPos()
    workspace.Terrain:FillBall(pos + Vector3.new(0,5,0), 7, Enum.Material.Water)
end

-- 30 Water Bubble
waterMods["πŸ”΅ Water Bubble"] = function()
    local pos = getPlayerPos()
    workspace.Terrain:FillBall(pos + Vector3.new(0, 8, 0), 10, Enum.Material.Water)
end

-- 31 Water Spiral (New)
waterMods["πŸŒ€ Water Spiral"] = function()
    local basePos = getPlayerPos()
    for i=1,10 do
        local angle = i * math.rad(36)
        local offset = Vector3.new(math.cos(angle)*i*2, i*2, math.sin(angle)*i*2)
        workspace.Terrain:FillBall(basePos + offset, 2, Enum.Material.Water)
    end
end

-- 32 Water Wall
waterMods["🧱 Water Wall"] = function()
    local pos = getPlayerPos()
    workspace.Terrain:FillBlock(CFrame.new(pos), Vector3.new(20, 15, 2), Enum.Material.Water)
end

-- 33 Water Pillar Cluster
waterMods["🌳 Water Pillar Cluster"] = function()
    local basePos = getPlayerPos()
    for x = -5,5,5 do
        for z = -5,5,5 do
            workspace.Terrain:FillBlock(CFrame.new(basePos + Vector3.new(x,0,z)), Vector3.new(2,15,2), Enum.Material.Water)
        end
    end
end

-- 34 Water Sphere Cluster
waterMods["βšͺ Water Sphere Cluster"] = function()
    local basePos = getPlayerPos()
    for i=1,5 do
        local offset = Vector3.new(math.random(-10,10), math.random(0,10), math.random(-10,10))
        workspace.Terrain:FillBall(basePos + offset, 4, Enum.Material.Water)
    end
end

-- 35 Water Ring
waterMods["β­• Water Ring"] = function()
    local basePos = getPlayerPos()
    for i=1,20 do
        local angle = math.rad(i*18)
        local offset = Vector3.new(math.cos(angle)*15, 0, math.sin(angle)*15)
        workspace.Terrain:FillBall(basePos + offset, 2, Enum.Material.Water)
    end
end

-- 36 Water Slide Ramp
waterMods["πŸ›· Water Slide Ramp"] = function()
    local pos = getPlayerPos()
    local slide = Instance.new("Part")
    slide.Size = Vector3.new(12, 1, 35)
    slide.CFrame = CFrame.new(pos) * CFrame.Angles(0,0,math.rad(-40))
    slide.Anchored = true
    slide.Material = Enum.Material.Water
    slide.Color = Color3.fromRGB(90,160,255)
    slide.Transparency = 0.5
    slide.Parent = workspace

    delay(20, function() if slide then slide:Destroy() end end)
end

-- 37 Water Column Rain
waterMods["🌧️ Water Column Rain"] = function()
    local basePos = getPlayerPos(Vector3.new(0,50,0))
    for i=1,12 do
        local offset = Vector3.new(math.random(-15,15), 0, math.random(-15,15))
        workspace.Terrain:FillBlock(CFrame.new(basePos + offset), Vector3.new(2,20,2), Enum.Material.Water)
    end
end

-- 38 Water Wave Explosion
waterMods["πŸ’₯ Water Wave Explosion"] = function()
    local pos = getPlayerPos()
    workspace.Terrain:FillBall(pos, 20, Enum.Material.Water)
end

-- 39 Water Floor
waterMods["πŸ›€οΈ Water Floor"] = function()
    local pos = getPlayerPos()
    workspace.Terrain:FillBlock(CFrame.new(pos), Vector3.new(40, 1, 40), Enum.Material.Water)
end

-- 40 Water Bubble Cluster
waterMods["πŸ”΅ Water Bubble Cluster"] = function()
    local pos = getPlayerPos()
    for i=1,7 do
        local offset = Vector3.new(math.random(-10,10), math.random(5,15), math.random(-10,10))
        workspace.Terrain:FillBall(pos + offset, 5, Enum.Material.Water)
    end
end

-- Create ScreenGui
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "WaterMenuGui"
screenGui.ResetOnSpawn = false
screenGui.Parent = player:WaitForChild("PlayerGui")

-- Main frame
local mainFrame = Instance.new("Frame")
mainFrame.Name = "MainFrame"
mainFrame.Size = UDim2.new(0, 320, 0, 450)
mainFrame.Position = UDim2.new(0.5, -160, 0.5, -225)
mainFrame.BackgroundColor3 = Color3.fromRGB(20, 60, 180)
mainFrame.BackgroundTransparency = 0.15
mainFrame.BorderSizePixel = 0
mainFrame.AnchorPoint = Vector2.new(0.5, 0.5)
mainFrame.Parent = screenGui
mainFrame.ClipsDescendants = true
mainFrame.Visible = false

-- Rounded corners
local uicorner = Instance.new("UICorner")
uicorner.CornerRadius = UDim.new(0, 14)
uicorner.Parent = mainFrame

-- Title
local title = Instance.new("TextLabel")
title.Name = "Title"
title.Size = UDim2.new(1, 0, 0, 45)
title.BackgroundTransparency = 1
title.Text = "πŸ’§ Water Menu"
title.Font = Enum.Font.GothamBold
title.TextSize = 26
title.TextColor3 = Color3.fromRGB(220, 240, 255)
title.Parent = mainFrame

-- Close button
local closeBtn = Instance.new("TextButton")
closeBtn.Name = "CloseBtn"
closeBtn.Text = "βœ•"
closeBtn.Font = Enum.Font.GothamBold
closeBtn.TextSize = 24
closeBtn.TextColor3 = Color3.fromRGB(255, 100, 100)
closeBtn.BackgroundTransparency = 1
closeBtn.Size = UDim2.new(0, 40, 0, 40)
closeBtn.Position = UDim2.new(1, -45, 0, 5)
closeBtn.Parent = mainFrame

closeBtn.MouseButton1Click:Connect(function()
    mainFrame.Visible = false
end)

-- Scrolling frame for buttons
local scrollFrame = Instance.new("ScrollingFrame")
scrollFrame.Name = "ScrollFrame"
scrollFrame.Size = UDim2.new(1, -20, 1, -60)
scrollFrame.Position = UDim2.new(0, 10, 0, 50)
scrollFrame.CanvasSize = UDim2.new(0, 0, 0, 0)
scrollFrame.ScrollBarThickness = 6
scrollFrame.BackgroundTransparency = 1
scrollFrame.Parent = mainFrame

local layout = Instance.new("UIListLayout")
layout.Parent = scrollFrame
layout.SortOrder = Enum.SortOrder.LayoutOrder
layout.Padding = UDim.new(0, 6)

-- Function to create a mod button
local function createModButton(modName, modFunction)
    local btn = Instance.new("TextButton")
    btn.Name = modName:gsub("%s", "") .. "Btn"
    btn.Size = UDim2.new(1, 0, 0, 45)
    btn.BackgroundColor3 = Color3.fromRGB(40, 120, 220)
    btn.TextColor3 = Color3.fromRGB(230, 250, 255)
    btn.Font = Enum.Font.GothamSemibold
    btn.TextSize = 20
    btn.Text = modName
    btn.AutoButtonColor = true
    btn.ClipsDescendants = true

    local btnCorner = Instance.new("UICorner")
    btnCorner.CornerRadius = UDim.new(0, 8)
    btnCorner.Parent = btn

    -- Hover Tween
    btn.MouseEnter:Connect(function()
        TweenService:Create(btn, TweenInfo.new(0.15), {BackgroundColor3 = Color3.fromRGB(60,160,255)}):Play()
    end)
    btn.MouseLeave:Connect(function()
        TweenService:Create(btn, TweenInfo.new(0.25), {BackgroundColor3 = Color3.fromRGB(40,120,220)}):Play()
    end)

    btn.MouseButton1Click:Connect(function()
        spawn(function()
            modFunction()
        end)
    end)

    btn.Parent = scrollFrame
end

-- Add buttons for all water mods
for modName, modFunc in pairs(waterMods) do
    createModButton(modName, modFunc)
end

-- Adjust canvas size dynamically
layout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
    scrollFrame.CanvasSize = UDim2.new(0, 0, 0, layout.AbsoluteContentSize.Y + 10)
end)

-- Draggable mainFrame
local dragging
local dragInput
local dragStart
local startPos

mainFrame.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 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)

mainFrame.InputChanged:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseMovement then
        dragInput = input
    end
end)

RunService.RenderStepped:Connect(function()
    if dragging and dragInput then
        local delta = dragInput.Position - dragStart
        mainFrame.Position = UDim2.new(
            startPos.X.Scale,
            startPos.X.Offset + delta.X,
            startPos.Y.Scale,
            startPos.Y.Offset + delta.Y
        )
    end
end)

-- Toggle menu with keybind (Right control)
local UserInputService = game:GetService("UserInputService")

UserInputService.InputBegan:Connect(function(input, gameProcessed)
    if not gameProcessed and input.KeyCode == Enum.KeyCode.RightControl then
        mainFrame.Visible = not mainFrame.Visible
    end
end)

-- Auto show menu on start for demo
mainFrame.Visible = true

Features & Information

water stufffffffff

Community Comments (3)

expozexpozJun 17, 2025

half these are js blocks

zxcvzxcvJun 17, 2025

@0nyxx appreciate this bro work🌹

mrusscher0mrusscher0Jun 17, 2025

no there actual water liarrr

More Scripts for Universal Scripts