-- Roblox GUI Script for Adding Cards -- Run this in an executor -- Made cooler with rounded corners and gradients -- Frame is draggable (custom implementation since Draggable is deprecated) -- GUI starts invisible, with a toggle button to show/hide -- Added ResetOnSpawn = false for persistence across respawns -- Added card selection dropdown with provided card types -- Added "Random" option which sends [3] = nil for random cards -- Uses Player object for target -- Added ScreenGui.DisplayOrder = 4 -- Uses table.unpack with explicit length to send three arguments, [3] = nil for random, specific number for others local Players = game:GetService("Players") local ReplicatedStorage = game:GetService("ReplicatedStorage") local LocalPlayer = Players.LocalPlayer -- Card types table, with Random first local cards = { {name = "Random", num = nil}, {name = "red 0 card", num = 11}, {name = "red 1 card", num = 12}, {name = "red 2 card", num = 13}, {name = "red 3 card", num = 14}, {name = "red 4 card", num = 15}, {name = "red 5 card", num = 16}, {name = "red 6 card", num = 17}, {name = "red 7 card", num = 18}, {name = "red 8 card", num = 19}, {name = "red 9 card", num = 110}, {name = "red reverse card", num = 10}, {name = "red skip card", num = 111}, {name = "red +2 card", num = 112}, {name = "yellow 0 card", num = 21}, {name = "yellow 1 card", num = 22}, {name = "yellow 2 card", num = 23}, {name = "yellow 3 card", num = 24}, {name = "yellow 4 card", num = 25}, {name = "yellow 5 card", num = 26}, {name = "yellow 6 card", num = 27}, {name = "yellow 7 card", num = 28}, {name = "yellow 8 card", num = 29}, {name = "yellow 9 card", num = 210}, {name = "yellow reverse card", num = 20}, {name = "yellow skip card", num = 211}, {name = "yellow +2 card", num = 212}, {name = "green 0 card", num = 31}, {name = "green 1 card", num = 32}, {name = "green 2 card", num = 33}, {name = "green 3 card", num = 34}, {name = "green 4 card", num = 35}, {name = "green 5 card", num = 36}, {name = "green 6 card", num = 37}, {name = "green 7 card", num = 38}, {name = "green 8 card", num = 39}, {name = "green 9 card", num = 310}, {name = "green reverse card", num = 30}, {name = "green skip card", num = 311}, {name = "green +2 card", num = 312}, {name = "blue 0 card", num = 41}, {name = "blue 1 card", num = 42}, {name = "blue 2 card", num = 43}, {name = "blue 3 card", num = 44}, {name = "blue 4 card", num = 45}, {name = "blue 5 card", num = 46}, {name = "blue 6 card", num = 47}, {name = "blue 7 card", num = 48}, {name = "blue 8 card", num = 49}, {name = "blue 9 card", num = 410}, {name = "blue reverse card", num = 40}, {name = "blue skip card", num = 411}, {name = "blue +2 card", num = 412}, {name = "Wild Card", num = 113}, {name = "Wild +4 Card", num = 114} } -- Create ScreenGui local ScreenGui = Instance.new("ScreenGui") ScreenGui.Name = "AddCardGUI" ScreenGui.ResetOnSpawn = false -- Persist across respawns ScreenGui.DisplayOrder = 4 -- Set display order ScreenGui.Parent = LocalPlayer:WaitForChild("PlayerGui") -- Toggle Button (always visible, to show/hide main frame) local ToggleButton = Instance.new("TextButton") ToggleButton.Text = "Toggle Add Card" ToggleButton.Size = UDim2.new(0, 120, 0, 30) ToggleButton.Position = UDim2.new(1, -130, 0, 10) ToggleButton.BackgroundColor3 = Color3.fromRGB(0, 120, 255) ToggleButton.TextColor3 = Color3.fromRGB(255, 255, 255) ToggleButton.TextSize = 14 ToggleButton.Parent = ScreenGui -- Add UICorner to ToggleButton local ToggleCorner = Instance.new("UICorner") ToggleCorner.CornerRadius = UDim.new(0, 8) ToggleCorner.Parent = ToggleButton -- Main Frame (initially invisible) local Frame = Instance.new("Frame") Frame.Size = UDim2.new(0, 200, 0, 180) -- Increased height for new elements Frame.Position = UDim2.new(0.5, -100, 0.5, -90) Frame.BackgroundColor3 = Color3.fromRGB(255, 255, 255) Frame.BorderSizePixel = 0 Frame.Visible = false Frame.Active = true -- For interaction Frame.Parent = ScreenGui -- Add UICorner to Frame local FrameCorner = Instance.new("UICorner") FrameCorner.CornerRadius = UDim.new(0, 8) FrameCorner.Parent = Frame -- Add UIGradient for cool background local Gradient = Instance.new("UIGradient") Gradient.Color = ColorSequence.new{ ColorSequenceKeypoint.new(0, Color3.fromRGB(200, 200, 255)), ColorSequenceKeypoint.new(1, Color3.fromRGB(150, 150, 255)) } Gradient.Parent = Frame -- Selected Player Label local SelectedPlayerLabel = Instance.new("TextLabel") SelectedPlayerLabel.Text = "Select Player" SelectedPlayerLabel.Size = UDim2.new(1, 0, 0, 30) SelectedPlayerLabel.Position = UDim2.new(0, 0, 0, 0) SelectedPlayerLabel.BackgroundColor3 = Color3.fromRGB(200, 200, 200) SelectedPlayerLabel.TextSize = 14 SelectedPlayerLabel.Parent = Frame -- Add UICorner to SelectedPlayerLabel local PlayerLabelCorner = Instance.new("UICorner") PlayerLabelCorner.CornerRadius = UDim.new(0, 4) PlayerLabelCorner.Parent = SelectedPlayerLabel -- Select Player Button local SelectPlayerButton = Instance.new("TextButton") SelectPlayerButton.Text = "Choose Player" SelectPlayerButton.Size = UDim2.new(1, 0, 0, 30) SelectPlayerButton.Position = UDim2.new(0, 0, 0, 30) SelectPlayerButton.BackgroundColor3 = Color3.fromRGB(150, 150, 150) SelectPlayerButton.TextSize = 14 SelectPlayerButton.Parent = Frame -- Add UICorner to SelectPlayerButton local SelectPlayerCorner = Instance.new("UICorner") SelectPlayerCorner.CornerRadius = UDim.new(0, 4) SelectPlayerCorner.Parent = SelectPlayerButton -- Number TextBox local NumberBox = Instance.new("TextBox") NumberBox.PlaceholderText = "Enter number" NumberBox.Size = UDim2.new(1, 0, 0, 30) NumberBox.Position = UDim2.new(0, 0, 0, 60) NumberBox.BackgroundColor3 = Color3.fromRGB(200, 200, 200) NumberBox.TextSize = 14 NumberBox.Parent = Frame -- Add UICorner to NumberBox local NumberCorner = Instance.new("UICorner") NumberCorner.CornerRadius = UDim.new(0, 4) NumberCorner.Parent = NumberBox -- Selected Card Label local SelectedCardLabel = Instance.new("TextLabel") SelectedCardLabel.Text = "Select Card" SelectedCardLabel.Size = UDim2.new(1, 0, 0, 30) SelectedCardLabel.Position = UDim2.new(0, 0, 0, 90) SelectedCardLabel.BackgroundColor3 = Color3.fromRGB(200, 200, 200) SelectedCardLabel.TextSize = 14 SelectedCardLabel.Parent = Frame -- Add UICorner to SelectedCardLabel local CardLabelCorner = Instance.new("UICorner") CardLabelCorner.CornerRadius = UDim.new(0, 4) CardLabelCorner.Parent = SelectedCardLabel -- Select Card Button local SelectCardButton = Instance.new("TextButton") SelectCardButton.Text = "Choose Card" SelectCardButton.Size = UDim2.new(1, 0, 0, 30) SelectCardButton.Position = UDim2.new(0, 0, 0, 120) SelectCardButton.BackgroundColor3 = Color3.fromRGB(150, 150, 150) SelectCardButton.TextSize = 14 SelectCardButton.Parent = Frame -- Add UICorner to SelectCardButton local SelectCardCorner = Instance.new("UICorner") SelectCardCorner.CornerRadius = UDim.new(0, 4) SelectCardCorner.Parent = SelectCardButton -- Add Card Button local AddButton = Instance.new("TextButton") AddButton.Text = "Add Card" AddButton.Size = UDim2.new(1, 0, 0, 30) AddButton.Position = UDim2.new(0, 0, 0, 150) AddButton.BackgroundColor3 = Color3.fromRGB(0, 255, 0) AddButton.TextSize = 14 AddButton.Parent = Frame -- Add UICorner to AddButton local AddCorner = Instance.new("UICorner") AddCorner.CornerRadius = UDim.new(0, 4) AddCorner.Parent = AddButton -- Player Dropdown List Frame (ScrollingFrame) local PlayerListFrame = Instance.new("ScrollingFrame") PlayerListFrame.Size = UDim2.new(0, 200, 0, 150) PlayerListFrame.BackgroundColor3 = Color3.fromRGB(255, 255, 255) PlayerListFrame.BorderSizePixel = 0 PlayerListFrame.Visible = false PlayerListFrame.CanvasSize = UDim2.new(0, 0, 0, 0) PlayerListFrame.Parent = ScreenGui -- Add UICorner to PlayerListFrame local PlayerListCorner = Instance.new("UICorner") PlayerListCorner.CornerRadius = UDim.new(0, 8) PlayerListCorner.Parent = PlayerListFrame -- Card Dropdown List Frame (ScrollingFrame) local CardListFrame = Instance.new("ScrollingFrame") CardListFrame.Size = UDim2.new(0, 200, 0, 200) -- Taller for more cards CardListFrame.BackgroundColor3 = Color3.fromRGB(255, 255, 255) CardListFrame.BorderSizePixel = 0 CardListFrame.Visible = false CardListFrame.CanvasSize = UDim2.new(0, 0, 0, 0) CardListFrame.Parent = ScreenGui -- Add UICorner to CardListFrame local CardListCorner = Instance.new("UICorner") CardListCorner.CornerRadius = UDim.new(0, 8) CardListCorner.Parent = CardListFrame -- Function to populate player list local function PopulatePlayerList() for _, child in ipairs(PlayerListFrame:GetChildren()) do if child:IsA("TextButton") or child:IsA("UIListLayout") then child:Destroy() end end local ListLayout = Instance.new("UIListLayout") ListLayout.SortOrder = Enum.SortOrder.LayoutOrder ListLayout.Parent = PlayerListFrame local players = Players:GetPlayers() for i, player in ipairs(players) do local btn = Instance.new("TextButton") btn.Text = player.Name btn.Size = UDim2.new(1, 0, 0, 30) btn.BackgroundColor3 = Color3.fromRGB(220, 220, 220) btn.TextSize = 14 btn.LayoutOrder = i btn.Parent = PlayerListFrame local BtnCorner = Instance.new("UICorner") BtnCorner.CornerRadius = UDim.new(0, 4) BtnCorner.Parent = btn btn.MouseButton1Click:Connect(function() SelectedPlayerLabel.Text = player.Name PlayerListFrame.Visible = false print("Selected player: " .. player.Name) -- Debug end) end PlayerListFrame.CanvasSize = UDim2.new(0, 0, 0, #players * 30) end -- Function to populate card list local function PopulateCardList() for _, child in ipairs(CardListFrame:GetChildren()) do if child:IsA("TextButton") or child:IsA("UIListLayout") then child:Destroy() end end local ListLayout = Instance.new("UIListLayout") ListLayout.SortOrder = Enum.SortOrder.LayoutOrder ListLayout.Parent = CardListFrame for i, card in ipairs(cards) do local btn = Instance.new("TextButton") btn.Text = card.name btn.Size = UDim2.new(1, 0, 0, 30) btn.BackgroundColor3 = Color3.fromRGB(220, 220, 220) btn.TextSize = 14 btn.LayoutOrder = i btn.Parent = CardListFrame local BtnCorner = Instance.new("UICorner") BtnCorner.CornerRadius = UDim.new(0, 4) BtnCorner.Parent = btn btn.MouseButton1Click:Connect(function() SelectedCardLabel.Text = card.name selectedCardNum = card.num CardListFrame.Visible = false print("Selected card: " .. card.name .. ", Number: " .. tostring(card.num)) -- Debug end) end CardListFrame.CanvasSize = UDim2.new(0, 0, 0, #cards * 30) end -- Selected card num variable local selectedCardNum = nil -- Toggle player dropdown on select button click SelectPlayerButton.MouseButton1Click:Connect(function() if PlayerListFrame.Visible then PlayerListFrame.Visible = false else PopulatePlayerList() PlayerListFrame.Position = Frame.Position + UDim2.new(0, 0, 0, 60) PlayerListFrame.Visible = true end end) -- Toggle card dropdown on select button click SelectCardButton.MouseButton1Click:Connect(function() if CardListFrame.Visible then CardListFrame.Visible = false else PopulateCardList() CardListFrame.Position = Frame.Position + UDim2.new(0, 0, 0, 150) CardListFrame.Visible = true end end) -- Add Card functionality AddButton.MouseButton1Click:Connect(function() local targetName = SelectedPlayerLabel.Text if targetName == "Select Player" then print("Please select a player first.") return end local targetPlayer = Players:FindFirstChild(targetName) if not targetPlayer then print("Player not found: " .. targetName) return end local amount = tonumber(NumberBox.Text) if not amount or amount <= 0 then print("Please enter a valid positive number.") return end if SelectedCardLabel.Text == "Select Card" then print("Please select a card first.") return end -- Create table with three arguments local args = { [1] = targetPlayer, [2] = amount, [3] = selectedCardNum -- nil for Random, number for specific card } -- Debug: Print the arguments being sent print("Firing AddEvent with args: Player=" .. targetName .. ", Amount=" .. amount .. ", CardNum=" .. tostring(selectedCardNum)) -- Fire the remote exactly as in the provided example game:GetService("ReplicatedStorage").AddEvent:FireServer(table.unpack(args, 1, 3)) if selectedCardNum then print("Added " .. amount .. " " .. SelectedCardLabel.Text .. " to " .. targetName) else print("Added " .. amount .. " random cards to " .. targetName) end end) -- Toggle GUI visibility ToggleButton.MouseButton1Click:Connect(function() Frame.Visible = not Frame.Visible if not Frame.Visible then PlayerListFrame.Visible = false CardListFrame.Visible = false end end) -- Custom Draggable functionality for Frame local dragging = false local dragInput local dragStart local startPos local function update(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 Frame.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then dragging = true dragStart = input.Position startPos = Frame.Position local conn conn = input.Changed:Connect(function() if input.UserInputState == Enum.UserInputState.End then dragging = false conn:Disconnect() end end) end end) Frame.InputChanged:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseMovement then dragInput = input end end) game:GetService("UserInputService").InputChanged:Connect(function(input) if input == dragInput and dragging then update(input) end end) -- Optional: Hide dropdowns if clicking outside ScreenGui.InputBegan:Connect(function(input) if input.UserInputType == Enum.UserInputType.MouseButton1 then if PlayerListFrame.Visible then local mousePos = input.Position local listPos = PlayerListFrame.AbsolutePosition local listSize = PlayerListFrame.AbsoluteSize if not (mousePos.X >= listPos.X and mousePos.X <= listPos.X + listSize.X and mousePos.Y >= listPos.Y and mousePos.Y <= listPos.Y + listSize.Y) then PlayerListFrame.Visible = false end end if CardListFrame.Visible then local mousePos = input.Position local listPos = CardListFrame.AbsolutePosition local listSize = CardListFrame.AbsoluteSize if not (mousePos.X >= listPos.X and mousePos.X <= listPos.X + listSize.X and mousePos.Y >= listPos.Y and mousePos.Y <= listPos.Y + listSize.Y) then CardListFrame.Visible = false end end end end)