I want my local script to destroy tools then to fire the remote event to reward a badge but when I click the button nothing happens and I’m not sure why
Local script (inside gui button):
local player = game.Players.LocalPlayer
local backpack = player.Backpack
local ReplicatedStorage = game:GetService(“ReplicatedStorage”)
script.Parent.MouseButton1Click:Connect(function(plr)
local Egg1 = backpack:FindFirstChild("Easter Egg - Town")
local Egg2 = backpack:FindFirstChild("Easter Egg - Train Station")
local Egg3 = backpack:FindFirstChild("Easter Egg - Studio")
local Egg4 = backpack:FindFirstChild("Easter Egg - Pond")
local Egg5 = backpack:FindFirstChild("Easter Egg - Antartic")
local Egg6 = backpack:FindFirstChild("Easter Egg - Nox Burger")
local Egg7 = backpack:FindFirstChild("Easter Egg - Abandoned Mine")
if Egg1 then
if Egg2 then
if Egg3 then
if Egg4 then
if Egg5 then
if Egg6 then
if Egg7 then
Egg1:Destroy()
Egg2:Destroy()
Egg3:Destroy()
Egg4:Destroy()
Egg5:Destroy()
Egg6:Destroy()
Egg7:Destroy()
ReplicatedStorage.EasterRemoteEvent:FireServer(player.userId, 2142714078)
end
end
end
end
end
end
end
end)
script (located in serverscriptservice)
local Event = game.ReplicatedStorage:WaitForChild(“EasterRemoteEvent”)
local BadgeService = game:GetService(“BadgeService”)
Try to format your code using Ctrl+E, by selecting whole code, so its easier to read.
You could try something like this:
Local Script in Client
local player = game.Players.LocalPlayer
local backpack = player.Backpack
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Event = ReplicatedStorage:WaitForChild("EasterRemoteEvent")
script.Parent.MouseButton1Click:Connect(function(plr)
local ToolsToDelete = {
"Easter Egg - Town",
"Easter Egg - Train Station",
"Easter Egg - Studio",
"Easter Egg - Pond",
"Easter Egg - Antartic",
"Easter Egg - Nox Burger",
"Easter Egg - Abandoned Mine"
}
for _, tool in pairs(backpack:GetChildren()) do
if table.find(ToolsToDelete, tool.Name) then
tool:Destroy()
end
end
Event:FireServer(2142714078)
end)
Server Script in ServerScriptService
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Event = ReplicatedStorage:WaitForChild("EasterRemoteEvent")
local BadgeService = game:GetService("BadgeService")
local BadgeIDServer = 2142714078
Event.OnServerEvent:Connect(function(Player, BadgeID)
warn("Server giving badge to", player)
--if BadgeID == BadgeIDServer then
BadgeService:AwardBadge(Player.UserId, BadgeIDServer)
--end
end)
But its just a very basic example, this will need handle failure from the service by using pcall() and retries, sanity check about what the client is sending as the ID, a debounce so client wont spam the button, etc.
Plus, idk if you want the client to trigger the badge server giving ONLY when all those tools were found in the backpack, or when any, or when none