Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

My on touch script do'sent work. Is there anything wrong?

Somehow this dosent work. And also theres no errors! Can somebody help me?

function onTouched(hit)

script.Parent.Parent.Parent.StarterGui.IceCream.Up_On_The_Chocolate.Visible = true
wait(6)
script.Parent.Parent.Parent.StarterGui.IceCream.Up_On_The_Chocolate.Visible = false
wait(0.1)
script.Parent:Destroy()
	





	
end

script.Parent.Touched:Connect(onTouched)

1 comment

0

ty

2 answers

✓ Accepted answer

try this

function onTouched(hit)
	if hit.Parent:FindFirstChild("Humanoid") then
		local Player = game.Players:GetPlayerFromCharacter(hit.Parent)
		Player.PlayerGui.IceCream.Up_On_The_Chocolate.Visible = true
		wait(6)
		Player.PlayerGui.IceCream.Up_On_The_Chocolate.Visible = false
		wait(0.1)
		script.Parent:Destroy()
	end
end

script.Parent.Touched:Connect(onTouched())

because you want to call a function you have to add () in the end of the function name like in the last line and also i edited it so it check if a player touch it.

if i was you i would use this script:

local IsTouched = false

script.Parent.Touched:Connect(function(hit)
	if hit.Parent:FindFirstChild("Humanoid") and IsTouched == false then
		local player = game.Players:GetPlayerFromCharacter(hit.Parent)
		player.PlayerGui.IceCream.Up_On_The_Chocolate.Visible = true
		wait(6)
		player.PlayerGui.IceCream.Up_On_The_Chocolate.Visible = true
		wait(0.1)
		script.Parent:Destroy()
	end
end)

Small mistake, you're trying to edit a gui from the StarterGui, which doesn't work. The StarterGui just places guis on the player's screen once they join. If you want to edit a player's gui you have to edit it from the PlayerGui, which would be located with game.Players["PlayerNameHere"].PlayerGui. A little bit of extra work is required to do that effectively though.

We're gonna have to dabble into RemoteEvents, which allow for communication between server and client sided scripts. Even if you can, avoid editing player's guis server sided. Assuming that the part your script is in is a server script, we're gonna have to 1: Create the remote event, 2: Get the player who touched the part and affect their gui.

local rs = game:GetService("ReplicatedStorage") -- Getting the ReplicatedStorage - basically a storage dump that both server scripts and local scripts can see
local event = Instance.new("RemoteEvent") -- Create the remote event
event.Name = "IceCreamGuiEvent"
event.Parent = rs

function onTouched(hit)

	if game.Players:GetPlayerFromCharacter(hit.Parent) then -- Check if the parent of the touching part is a player's character
		local player = game.Players:GetPlayerFromCharacter(hit.Parent) -- Make the player a variable
		event:FireClient(player) -- Activate the signal the localscript is waiting for
		wait(6.1)
		script.Parent:Destroy()
	end
end

script.Parent.Touched:Connect(onTouched)

Now this next part should be in a localscript in StarterPlayerScripts (which is below StarterPlayer).

local rs = game:GetService("ReplicatedStorage")
local event = rs:WaitForChild("IceCreamGuiEvent") -- Get that remote event we created earlier
local player = game.Players.LocalPlayer
local pgui = player.PlayerGui

event.OnClientEvent:Connect(function() -- This function will activate whenever the FireClient function is called server side
	pgui.IceCream.Up_On_The_Chocolate.Visible = true
	wait(6)
	pgui.IceCream.Up_On_The_Chocolate.Visible = false
end)

3 comments

0

you are right he was changing it inside the startergui and not the playergui, i didn't notice it

0

i edited my post so it should work now

0

i want rep :(

This discussion is preserved as it was. New answers, comments, and votes are closed.