my script detects a msg from the player firing an event that tells a local script to make the part appear for the client. but when it does appear. it doesnt work when touched.
local script (rep storage)
script.Parent.OnClientEvent:Connect(function(plr)
local glob = game.ReplicatedStorage.Globs["Deep Sea Glob"]
glob.Parent = workspace.Globs["Main Island"]
script.Parent.Sound:Play()
--glob.Sound:Play()
end)
touch script (in the part)
CD = false
BS = game:GetService("BadgeService")
script.Parent.Touched:Connect(function(Hit)
print("yo1")
if Hit.Parent:IsA("Model") and Hit.Parent:FindFirstChildWhichIsA("Humanoid") ~= nil and not CD then
print("yo")
local plr = game.Players:GetPlayerFromCharacter(Hit.Parent)
if plr ~= nil then
task.wait(1)
BS:AwardBadge(plr.UserId, script.Parent.BadgeId.Value)
plr.PlayerGui.Dex.Main.Glob.Obtained = true
plr.PlayerGui.Dex.GlobMains.GlobMain.Description.Text =
script.Parent.Description.Text
CD = true
task.wait(1)
CD = false
end
end
end)
server script (sss)
local plrs = game:GetService("Players")
local canactivate = true
plrs.PlayerAdded:Connect(function(plr)
plr.Chatted:Connect(function(msg)
if msg == "/e INTHESAND" and canactivate then
game.ReplicatedStorage.Events.DeepSea:FireClient(plr)
canactivate = false
task.wait(3)
canactivate = true
end
end)
end)
If the script in the part is local, then convert it to a normal script and set the property RunContext to local. But I don’t think this is the issue.
Below, I’ll assume it’s a server script
As you know, normal scripts run on the server, and the touch part script won’t run because it’s a server script inserted by the client. So the server doesn’t know it exists and so will not run it.
Solution? Do what I said in the first paragraph or move the code in the touch script to the local script.
What RunContext means
RunContext basically sets where the script will run. If set to legacy (recommended) then it will run like a normal server script and run in a few places such as Workspace and ServerScriptService. If set on server, it runs as a server script almost anywhere in the game, including ServerStorage. If set to client, it runs almost anywhere in the game as a client script. LocalScripts are basically just a script with “Legacy” RunContext for the client (anywhere where it’s a descendant of the player or its character).
now i need to award the player the badge (which cant be done in local scripts,) how will i award the player the badge?
when i fire a server event, my server script that i made to give them the badge doesnt activate.