Well, the first problem I spotted is that you're not waiting for the Player's Character. The difference between In-game and Playsolo is that you have to wait for the player's character to load. It takes a while doesn't it?
So how would we do this, you ask? We'll repeat wait() until the character is found.
repeat wait() until game.Players.LocalPlayer.Character
Another thing I spotted is that you're defining Player as a bunch of Parents. There is a better alternative to this. LocalPlayer. LocalPlayer is basically something that can only be used in Local Scripts to define the Player which controls the client directly. We can get it through Players.
local Player = game.Players.LocalPlayer
local PlayersTorso = Player.Character
And the final fix, let me introduce you to something called UserInputService. We could also use ContextActionService, but UserInputService is a bit less advanced and understandable. Since Keydown is depricated (and not to mention it lags every time someone presses something that uses Keydown)
UserInputService on the wiki if you want to see it here
So with UserInputService in mind, let's write it using UserInputService instead of Keydown.
The first thing we have to do is get the Service UserInputService.
local Input = game:GetService("UserInputService")
Now we have to set up a script that does something every time the button is pressed. We could do this by connecting the event InputBegan
local Input = game:GetService("UserInputService")
Input.InputBegan(Enum.KeyCode.r):connect(function()
local x = game.ServerStorage.KnightArmor["Knight Left Arm"]:Clone()
local s = game.ServerStorage.KnightArmor["Knight Left Leg"]:Clone()
local e = game.ServerStorage.KnightArmor["Knight Right Arm"]:Clone()
local t = game.ServerStorage.KnightArmor["Knight Right Leg"]:Clone()
local p = game.ServerStorage.KnightArmor["Knight torso"]:Clone()
x.Parent = PlayersTorso
s.Parent = PlayersTorso
e.Parent = PlayersTorso
t.Parent = PlayersTorso
p.Parent = PlayersTorso
end)
#So with all of this, the final script.
repeat wait() until game.Players.LocalPlayer.Character
Player = game.Players.LocalPlayer
mouse = Player:GetMouse()
PlayersTorso = Player.Character
Input = game:GetService("UserInputService")
Input.InputBegan(Enum.KeyCode.r):connect(function()
local x = game.ServerStorage.KnightArmor["Knight Left Arm"]:Clone()
local s = game.ServerStorage.KnightArmor["Knight Left Leg"]:Clone()
local e = game.ServerStorage.KnightArmor["Knight Right Arm"]:Clone()
local t = game.ServerStorage.KnightArmor["Knight Right Leg"]:Clone()
local p = game.ServerStorage.KnightArmor["Knight torso"]:Clone()
x.Parent = PlayersTorso
s.Parent = PlayersTorso
e.Parent = PlayersTorso
t.Parent = PlayersTorso
p.Parent = PlayersTorso
end
2 comments
Is this a LocalScript?
Ya, its in the startergui.