Hello everyone, this is my first post! :D I am trying to code a door that when a player touches the door, they need to hit the 'E' key to open the door.
When a Player touches a part called 'Center', It should trigger a RemoteFunction that Invokes the Client to run a contextActionService to check for the 'E' key. If pressed, then the RemoteFunction returns true and runs code to open the door. Instead I get an error on the twelfth line saying "Unable to cast value to Object". I know it has something to do with the parameters being passed through the RemoteFunction:InvokeClient but I don't know what I'm doing wrong, can anyone help me?
- This is in a script
local Door = script.Parent
local doorTouched = false
local result = false
local RemoteFunction = game.ReplicatedStorage:WaitForChild("RemoteFunction")
Door.Center.Touched:connect(function(hit)
if not doorTouched then
doorTouched = true
print("You Touched It!")
local player = hit.Parent.Name
result = RemoteFunction:InvokeClient(player, doorTouched)
if result == true then
print("Door Open")
end
wait(1)
doorTouched = false
end
end)
- This is in a local script
local player = game.Players.LocalPlayer
local contextActionService = game:GetService("ContextActionService")
game.ReplicatedStorage.RemoteFunction.OnClientInvoke = function(doorTouched)
if doorTouched == true then
local function onKeyPress(actionName, userInputState, inputObject)
if userInputState == Enum.UserInputState.Begin then
print("E was Pressed")
return true
end
end
contextActionService:BindAction("keyPress", onKeyPress, false, Enum.KeyCode.E)
else return false
end
end
