StellarWAVE Gui
Key Required

StellarWAVE Gui

Ground Warlunartheshibalunartheshiba 9.1K views 630 executesUpdated Nov 25, 2024
1.7/ 5(3 votes)
1233% Positive
Lua Script•347 lines (12678 chars)
local Players = game:GetService("Players")
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Workspace = game:GetService("Workspace")
local RunService = game:GetService("RunService")

-- References
local ACS_Engine = ReplicatedStorage:WaitForChild("ACS_Engine", 9e9)
local DamageEvent = ACS_Engine:WaitForChild("Events", 9e9):WaitForChild("Damage", 9e9)

-- Constants
local ORIGIN = Vector3.new(-63.63491439819336, 91.27510070800781, 1086.3289794921875)
local WEAPON_NAME = "" -- Default weapon
local BULLET_ID_PREFIX = "unique_bullet_id_"

-- Template for args
local argsTemplate = {
    [1] = {
        origin = ORIGIN,
        weaponName = WEAPON_NAME,
        bulletID = nil, -- Set dynamically
        currentPenetrationCount = 3,
        shellSpeed = 1500,
        localShellName = "RpgShell",
        maxPenetrationCount = 3,
        registeredParts = {}, -- Set dynamically
        penetrationMultiplier = 0.8,
        shellType = "Explosive",
        shellMaxDist = 7000,
        filterDescendants = {},
    },
    [2] = nil, -- Humanoid
    [3] = 12.949637413024902, -- Distance
    [4] = 1, -- Additional parameter
    [5] = nil, -- Head
    [6] = 1 -- Additional parameter
}

-- Function to get target data
local function getTargetData(character)
    local humanoid = character:FindFirstChild("Humanoid")
    local upperTorso = character:FindFirstChild("UpperTorso")
    local head = character:FindFirstChild("Head")
    local rightUpperArm = character:FindFirstChild("RightUpperArm")

    if humanoid and upperTorso and head then
        return humanoid, head, {
            [upperTorso] = true,
            [head] = true,
            [rightUpperArm] = rightUpperArm or nil -- Optional body part
        }
    end
end

-- Function to handle targeting logic
local function handleTarget(character)
    local humanoid, head, registeredParts = getTargetData(character)
    if not humanoid then return end -- Skip if invalid character

    -- Set dynamic values for args
    argsTemplate[1].bulletID = BULLET_ID_PREFIX .. tostring(math.random()) -- Unique bullet ID
    argsTemplate[1].registeredParts = registeredParts
    argsTemplate[2] = humanoid
    argsTemplate[5] = head
    argsTemplate[1].filterDescendants = {
        Players.LocalPlayer.Character, -- Exclude local player
        Workspace.CurrentCamera.Viewmodel -- Exclude viewmodel
    }

    -- Invoke the damage event
    DamageEvent:InvokeServer(unpack(argsTemplate))
end

-- Function to process all players asynchronously
local function processAllPlayersAsync()
    -- Process Players Service
    local players = Players:GetPlayers()
    for i = 1, #players do
        local player = players[i]
        if player.Character then
            task.spawn(function()
                handleTarget(player.Character)
            end)
        end
    end

    -- Process Players Folder (FPlayers)
    local playersFolder = Workspace:FindFirstChild("FPlayers")
    if playersFolder then
        local playerModels = playersFolder:GetChildren()
        for i = 1, #playerModels do
            task.spawn(function()
                handleTarget(playerModels[i])
            end)
        end
    end
end

-- Function to explode all players at their position
local function explodeAllPlayers()
    local baseArgs = {
        [1] = Vector3.new(0, 0, 0),  -- Placeholder for player's position
        [2] = {
            ["shellName"] = "RpgShell",
            ["origin"] = Vector3.new(0, 0, 0),  -- Placeholder for explosion origin
            ["weaponName"] = "RPG-7",
            ["bulletID"] = "Blakneycurse73532812071732099069.311317553374",
            ["currentPenetrationCount"] = 0,
            ["shellSpeed"] = 400,
            ["localShellName"] = "RpgShell",
            ["maxPenetrationCount"] = 3,
            ["penetrationMultiplier"] = 0.8,
            ["shellType"] = "Explosive",
            ["shellMaxDist"] = 7000,
            ["filterDescendants"] = {
                Players.LocalPlayer.Character,
                Workspace.CurrentCamera.Viewmodel
            }
        }
    }

    local players = Players:GetPlayers()
    for _, player in pairs(players) do
        if player.Character and player.Character:FindFirstChild("HumanoidRootPart") then
            local rootPart = player.Character.HumanoidRootPart
            local playerPosition = rootPart.Position  -- Get the player's position

            -- Update args with the player's position for the explosion origin
            baseArgs[1] = playerPosition  -- Set the explosion origin to the player's position
            baseArgs[2].origin = playerPosition  -- Update the origin in the second argument as well

            -- Fire the ExplosionFX event with the updated args
            ACS_Engine.Events.ExplosionFX:FireServer(unpack(baseArgs))
        end
    end
end


-- Variable to control spam explosion
local isExploding = false
local spamDelay = 0  -- Time delay between each explosion in seconds
local explosionConnection

-- Function to spam explode the specific player
local function explodeSpecificPlayer(username)
    -- Find the player by username
    local targetPlayer = nil
    for _, player in pairs(Players:GetPlayers()) do
        if player.Name:lower() == username:lower() then
            targetPlayer = player
            break
        end
    end

    -- If the player is found
    if targetPlayer and targetPlayer.Character then
        local character = targetPlayer.Character
        local rootPart = character:FindFirstChild("HumanoidRootPart")
        
        -- Ensure we found the HumanoidRootPart
        if rootPart then
            -- Prepare the base arguments for the explosion event
            local baseArgs = {
                [1] = rootPart.Position,  -- The player's position as the explosion origin
                [2] = {
                    ["shellName"] = "RpgShell",
                    ["origin"] = rootPart.Position,  -- Use the player's position for the explosion
                    ["weaponName"] = "RPG-7",
                    ["bulletID"] = "Blakneycurse73532812071732099069.311317553374",
                    ["currentPenetrationCount"] = 0,
                    ["shellSpeed"] = 400,
                    ["localShellName"] = "RpgShell",
                    ["maxPenetrationCount"] = 3,
                    ["penetrationMultiplier"] = 0.8,
                    ["shellType"] = "Explosive",
                    ["shellMaxDist"] = 7000,
                    ["filterDescendants"] = {
                        Players.LocalPlayer.Character,
                        Workspace.CurrentCamera.Viewmodel
                    }
                }
            }

            -- Start rendering loop to spam the explosion
            if not isExploding then
                isExploding = true
                explosionConnection = RunService.RenderStepped:Connect(function()
                    -- Fire the explosion every spamDelay seconds
                    task.spawn(function()
                        ACS_Engine.Events.ExplosionFX:FireServer(unpack(baseArgs))
                    end)
                end)
                
                -- Stop the explosion after a certain time
                task.delay(5, function()
                    isExploding = false
                    if explosionConnection then
                        explosionConnection:Disconnect()
                    end
                end)
            end

            print("Explosion spam triggered for " .. targetPlayer.Name)
        else
            print("Could not find HumanoidRootPart for " .. targetPlayer.Name)
        end
    else
        -- Player not found or no character available
        print("Player with username " .. username .. " not found.")
    end
end

-- Stop explosion spam
local function stopExploding()
    isExploding = false
    if explosionConnection then
        explosionConnection:Disconnect()
    end
    print("Stopped explosion spam.")
end


-- GUI Setup
local screenGui = Instance.new("ScreenGui")
screenGui.Parent = Players.LocalPlayer:WaitForChild("PlayerGui")

-- Create a draggable frame
local frame = Instance.new("Frame")
frame.Size = UDim2.new(0, 250, 0, 210)  -- Adjusted to match button height
frame.Position = UDim2.new(0.5, -125, 0.5, -90)  -- Centered better
frame.BackgroundColor3 = Color3.fromRGB(40, 40, 40)
frame.BorderSizePixel = 0
frame.Parent = screenGui

-- Rounded corners for the frame
local corner = Instance.new("UICorner")
corner.CornerRadius = UDim.new(0, 12)
corner.Parent = frame

-- Weapon name input box
local weaponTextBox = Instance.new("TextBox")
weaponTextBox.Size = UDim2.new(1, -20, 0, 30)  -- Take up the full width minus some padding
weaponTextBox.Position = UDim2.new(0, 10, 0, 10)  -- Add padding from the top
weaponTextBox.PlaceholderText = "Enter Weapon Name"
weaponTextBox.Text = WEAPON_NAME
weaponTextBox.BackgroundColor3 = Color3.fromRGB(80, 80, 80)
weaponTextBox.TextColor3 = Color3.fromRGB(255, 255, 255)
weaponTextBox.Font = Enum.Font.GothamBold
weaponTextBox.TextSize = 14
weaponTextBox.Parent = frame

-- Kill all button
local killAllButton = Instance.new("TextButton")
killAllButton.Size = UDim2.new(1, -20, 0, 30)  -- Full width with padding
killAllButton.Position = UDim2.new(0, 10, 0, 50)  -- Adjust position below the textbox
killAllButton.Text = "Kill Lobby"
killAllButton.BackgroundColor3 = Color3.fromRGB(80, 80, 80)
killAllButton.TextColor3 = Color3.fromRGB(255, 255, 255)
killAllButton.Font = Enum.Font.GothamBold
killAllButton.TextSize = 14
killAllButton.Parent = frame

-- Explode all button
local explodeAllButton = Instance.new("TextButton")
explodeAllButton.Size = UDim2.new(1, -20, 0, 30)  -- Full width with padding
explodeAllButton.Position = UDim2.new(0, 10, 0, 90)  -- Adjust position below the kill button
explodeAllButton.Text = "Explode All"
explodeAllButton.BackgroundColor3 = Color3.fromRGB(255, 0, 0)
explodeAllButton.TextColor3 = Color3.fromRGB(255, 255, 255)
explodeAllButton.Font = Enum.Font.GothamBold
explodeAllButton.TextSize = 14
explodeAllButton.Parent = frame

local usernameTextBox = Instance.new("TextBox")
usernameTextBox.Size = UDim2.new(1, -20, 0, 30)
usernameTextBox.Position = UDim2.new(0, 10, 0, 130)
usernameTextBox.PlaceholderText = "Enter Username to Explode"
usernameTextBox.Text = ""
usernameTextBox.BackgroundColor3 = Color3.fromRGB(80, 80, 80)
usernameTextBox.TextColor3 = Color3.fromRGB(255, 255, 255)
usernameTextBox.Font = Enum.Font.GothamBold
usernameTextBox.TextSize = 14
usernameTextBox.Parent = frame

local explodeButton = Instance.new("TextButton")
explodeButton.Size = UDim2.new(1, -20, 0, 30)
explodeButton.Position = UDim2.new(0, 10, 0, 170)
explodeButton.Text = "Explode Specific Player"
explodeButton.BackgroundColor3 = Color3.fromRGB(100, 100, 100)
explodeButton.TextColor3 = Color3.fromRGB(255, 255, 255)
explodeButton.Font = Enum.Font.GothamBold
explodeButton.TextSize = 14
explodeButton.Parent = frame
explodeButton.MouseButton1Click:Connect(function()
    local username = usernameTextBox.Text
    if username ~= "" then
        explodeSpecificPlayer(username)
    end
end)

-- Connect button events



killAllButton.MouseButton1Click:Connect(processAllPlayersAsync)
explodeAllButton.MouseButton1Click:Connect(explodeAllPlayers)


-- Draggable functionality for both mouse and touch
local dragging = false
local dragInput, dragStart, startPos

local function updateDrag(input)
    local delta = input.Position - dragStart
    frame.Position = UDim2.new(startPos.X.Scale, startPos.X.Offset + delta.X, startPos.Y.Scale, startPos.Y.Offset + delta.Y)
end

local function onInputBegan(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
        dragging = true
        dragStart = input.Position
        startPos = frame.Position
        input.Consumed = true
    end
end

local function onInputChanged(input)
    if dragging and (input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch) then
        updateDrag(input)
    end
end

local function onInputEnded(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
        dragging = false
    end
end

-- Connect input events for both mouse and touch
frame.InputBegan:Connect(onInputBegan)
frame.InputChanged:Connect(onInputChanged)
frame.InputEnded:Connect(onInputEnded)

-- Update weapon name when the textbox value changes
weaponTextBox.FocusLost:Connect(function()
    WEAPON_NAME = weaponTextBox.Text
    argsTemplate[1].weaponName = WEAPON_NAME -- Update the weapon name in the args template
end)

Features & Information

Stellar includes: • Kill all with any specific weapon • Explode all • Explode all vehicles • Spam Explode • Lag lobby
#Ground War#Explode#Kill all

Community Comments (4)

halenkennicott304halenkennicott304Nov 25, 2024(edited)

doesnt work

lunartheshibalunartheshibaNov 25, 2024(edited)

You need to have an rpg in ur hotbar and then for the kill all u need to type Knife and hold it

zekethornbergzekethornbergNov 26, 2024(edited)

Got Insta Banned btw

tnovak1911tnovak1911Feb 14, 2026

got instabanned bte dang

More Scripts for Ground War