function OnTouch(part)
if (part.Parent:FindFirstChild("Humanoid") ~= nil) then
local p = game.Players:GetPlayerFromCharacter(part.Parent)
i f (p ~= nil) then
print("Awarding BadgeID: " ..script.Parent.BadgeID.Value .. " to UserID: " .. p.userId)
local b = game:GetService("BadgeService")
b:AwardBadge(p.userId, script.Parent.BadgeID.Value)
end
end
end
script.Parent.Touched:connect(OnTouch)
How can i fix scripts like this?
1 Like
Oh dear
Here’s a fixed version, just simply check if the player has the badge or not using UserHasBadgeAsync()
local BadgeService = game:GetService("BadgeService")
local BadgeID = script.Parent.BadgeID
local function onTouched(Part)
local Player = game.Players:GetPlayerFromCharacter(Part.Parent)
if Player then
if not BadgeService:UserHasBadgeAsync(Player.UserId, BadgeID.Value) then
BadgeService:AwardBadge(Player.UserId, BadgeID.Value)
print("Awarding Badge to: "..Player.Name.."| Badge ID: ", BadgeID.Value)
end
end
end
script.Parent.Touched:Connect(onTouched)