I'm currently working on an RPG with some skills and I want to make it so that players can bind skills to their preferred keys, however, I can't think of a way to make that happen. Here's what I have tried:

local enabled = true
local player = script.Parent.Parent
local character = player.Character
local uis = game:GetService("UserInputService")
local pkey = script.PressedKey.Value
local jutsulife = script.JutsuLife.Value
local cooldown = script.Cooldown.Value

uis.InputBegan:connect(function(input, gpe)
	if not gpe then
		if input.UserInputType == Enum.UserInputType.Keyboard then
			if input.KeyCode == pkey then
				if enabled then
		   			enabled = false
					local animTrack = character.Humanoid:LoadAnimation(script.HandSigns)
					animTrack:Play()
					local signsound = Instance.new("Sound", character.Head)
					signsound.PlayOnDestroy = true
					signsound.SoundId = "http://www.roblox.com/asset/?id=245030009"
					signsound.Volume = 1
					signsound.Pitch = 1.5
					signsound:Destroy()
					wait(1)
					local jutsusound = Instance.new("Sound", character.Head)
					jutsusound.PlayOnDestroy = true
					jutsusound.SoundId = "http://www.roblox.com/asset/?id=147722098"
					jutsusound.Volume = 1
					jutsusound:Destroy()
					wait(0.5)
					animTrack:Stop()
					local firesound = Instance.new("Sound", character.Head)
					firesound.PlayOnDestroy = true
					firesound.SoundId = "http://www.roblox.com/asset/?id=245029978"
					firesound.Volume = 1
					firesound:Destroy()
					game:GetService("Chat"):Chat(character.Head, "Katon: Gokakyu no Jutsu!", "Red")
					local x = Instance.new("Part")
					x.BrickColor = BrickColor.new("Really red")
					x.Size = Vector3.new(10, 10, 10)
					x.TopSurface = "Smooth"
					x.BottomSurface = "Smooth"
					x.Shape = "Ball"
					x.Name = player.Name
					x.CanCollide = false
					x.Transparency = 0.75
					local flame = Instance.new("ParticleEmitter", x)
					flame.EmissionDirection = "Back"
					flame.Speed = NumberRange.new(2.5)
					flame.Size = NumberSequence.new(2)
					flame.Rate = 1000
					flame.Lifetime = NumberRange.new(1)
					flame.LightEmission = 0.5
					flame.Texture = "http://www.roblox.com/asset/?id=288049555"
					flame.Color = ColorSequence.new(Color3.new(1, 0.6, 0), Color3.new(1, 0.7, 0))
					flame.LockedToPart = false
					flame.Name = "Flames"
					local damage = script.damage:clone()
					damage.Parent = x
					local y = Instance.new("BodyVelocity")
					y.maxForce = Vector3.new(math.huge, math.huge, math.huge)
					y.velocity = character.Torso.CFrame.lookVector*45
					x.Parent = workspace
					y.Parent = x
					x.CFrame = character.Head.CFrame*CFrame.new(0, 0, -1)
					damage.Disabled = false
					game.Debris:AddItem(x, jutsulife)
					wait(cooldown)
					enabled = true
				end
			end
		end
	end
end)

The script.PressedKey is a StringValue with the value "Enum.KeyCode.R", but when I press the 'R' button it doesn't work.

2 comments

0

Is this all inside of a local script? Remember that with FilteringEnabled, local script changes will not replicate to the server.

0

I am aware of that and no my game is not FilteringEnabled