2

# If you press t, it will make the player sit, but it doesn't work?

local player = game.Players.LocalPlayer
local mouse = player:GetMouse()

mouse.KeyDown:connect(function(key)
if key:lower() == "t" or key:upper() == "T" then
Character.Humanoid.Sit = true
end)
end)
end
end)


1

I tested out your script and it also did not work for me. I don't know exactly how your code did not work but I can help you out a bit.

First of all instead of putting 'game.Players.PlayerAdded:Connect(function(Player))' Its better to wait in your script until the player loads. Something like this would work

local player = game.Players.LocalPlayer
repeat wait() until player.Character



Also, I do not suggest using mouse.KeyDown. I would use UserInputService like this

local UserInputService = game:GetService("UserInputService")

UserInputService.InputBegan:Connect(function(input) -- Checking if user presses a key
if input.KeyCode == Enum.KeyCode.T then -- Checking if the key that the user pressed was T (lowercase or uppercase)
-- do stuff
end
end)


Now if you combine those two things you could make a script that works like this!

local UserInputService = game:GetService("UserInputService")
local player = game.Players.LocalPlayer
repeat wait() until player.Character

UserInputService.InputBegan:Connect(function(input) -- Checking if user presses a key
if input.KeyCode == Enum.KeyCode.T then -- Checking if the key that the user pressed was T (lowercase or uppercase)
player.Character.Humanoid.Sit = true -- Make the player sit
end
end)

0
that repeat is incredibly useless in this case where you use an event. this script will work and the reason that the original posters code didnt work is because he had characteradded in it greatneil80 2465 — 3d
0
This is a very bad practice because when your character falls into the void, it doesn't work since player character is removed, it's directly indexed and will send an error because it does not exist Xapelize 1835 — 3d
0
by the way this is a localscript, but if you make yourself sit in localscript only you can see Xapelize 1835 — 3d
0
also theres no way to make a localscript run before player spawning, but incase, you should use playeradded event, it's still not wrong (edit: im unsure of this one) Xapelize 1835 — 3d
0
i upvoted your post, keep on scripting, i believe in you Xapelize 1835 — 3d
0
i saw that he was using a local script so i just followed the same. if they REALLY wanted it to show for everyone they are free to reply to the post. I just wanted to improve thier script. Didnt want to spoon feed the poster with a whole new advanced script, thats not a good way to learn. Also localscripts run automatically at the start of the game. if you are really bothered i will fix it MarTieMak 39 — 3d
0
amanda 1028
3 days ago

Firstly, the logic is wrong. You do not need to wait for players nor characters to load, you just need to check if the character exists at the time you are pressing T, and otherwise do nothing.

local player = game.Players.LocalPlayer
local mouse = player:GetMouse()

mouse.KeyDown:Connect(function(key)
if key:lower() == "t" and player.Character then
player.Character.Humanoid.Sit = true
end
end)


Secondly, KeyDown is a deprecated method. While the code above may work for the time being, it can potentially be removed in a future update. For this reason, it is best that you learn it's replacement: InputBegan.

local player = game.Players.LocalPlayer
local UIS = game:GetService("UserInputService")

UIS.InputBegan:Connect(function(input)
if input.KeyCode.Name == "T" and player.Character then
player.Character.Humanoid.Sit = true
end
end)