How do I get this local script to work and then reward a badge with remote events

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”)

local BadgeID = 2142714078

Event.OnServerEvent:Connect(function(Player)

BadgeService:AwardBadge(Player.UserId, BadgeID)

end)

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

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.