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

Im trying to make the bodyposition move when a certain person says a phrase. Why isnt this working?

This is my script, and nothing pops up about an error in output either

door = game.Workspace.LobbyDoor
local player = game.Players:FindFirstChild("Humanoid")
End = game.Workspace.EndLob


function test(name)
	if player.Name == "koolkid8099, Player" then
		player:connect(onChatted)
	end
end

function onChatted(msg, recipient, speaker) 



local source = string.lower(speaker.Name) 
msg = string.lower(msg) 

if (msg == "open/lobby") then
	door.CanCollide = false
	door.BodyPosition.position = End.Position 
wait(2)
	door.CanCollide = true

end 

end 

function onPlayerEntered(newPlayer) 
newPlayer.Chatted:connect(function(msg, recipient) onChatted(msg, recipient, newPlayer) end) 
end 

game.Players.ChildAdded:connect(onPlayerEntered) 


2 comments

1

Fix your code format, please.

1

ogm git gud nub1111

1 answer

✓ Accepted answer

Firstly, you shouldn't be defining your variables like that. Secondly, game.Workspace:FindFIrstChild("Humanoid") is not going to give you a player. If you gave it a second argument set to true, it'd look through everything within everything for a humanoid, but that's your player's character's humanoid - not the player.

You also don't check strings in that way. In addition, you should probably debounce so that you cant keep opening it when it's already opening.

What you want to do is have an event listener waiting for a player to join, and then waiting for that player to speak, then looping through a table of names to see if it returns true:

admins = {"FlyScript", "koolkid8099", "Player", "etc"}
door = game.Workspace.LobbyDoor
status = "closed"

function nameCheck(name)
	local valid
	for _, v in pairs(admins) do
		if v == name then
			valid = true
		end
	end
	return valid
end

game.Players.PlayerAdded:connect(function(player)
	player.Chatted:connect(function(m)
		if nameCheck(player.Name) and m == "open/lobby" and status == "closed" then
			status = "opening"
			door.BodyPosition.position = game.Workspace.EndLob.Position
			door.CanCollide = false
			wait(2)
			door.CanCollide = true
			status = "open"
		end
	end)
end)

You'd do a similar sort of thing for closing the door.

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