I was making a script, but when I say to execute a function when a certain key is pressed, nothing happens. Also - don't say I should switch to RemoteEvents instead of KeyDown, because RemoteEvents are just awful... Here is the script:

wait(0.1)

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

local s1 = false
local s2 = false

ssj = false

function ssj()
	char.Torso.Anchored = true
	if ssj == false then ssj = true print("SSJ was false.") end
	delay(0, function()
		spawn(function()
			spawn(function()
				for i = 1, 25 do
					local dust = Instance.new("Part", char.Torso)
					dust.Anchored = true
					dust.CanCollide = false
					dust.Transparency = 0.5
					dust.BrickColor = BrickColor.Yellow()
					local dustmesh = Instance.new("SpecialMesh", dust)
					dustmesh.MeshType = "FileMesh"
					dustmesh.MeshId = "http://www.roblox.com/asset/?id=20329976"
					dustmesh.Scale = Vector3.new(1,1,1)
					dust.CFrame = char.Torso.CFrame - Vector3.new(0, 2.5, 0)
					game.Debris:AddItem(dust, 1)
					delay(0, function()
						for i = 1, 20 do
							dustmesh.Scale = dustmesh.Scale + Vector3.new(3.5, 1.75, 3.5)
							dust.Transparency = dust.Transparency + 0.05
							wait(0.1)
						end
					end)
					wait(0.25)
				end
			end)
			s1 = true
		end)
		delay(0, function()
			for i = 1, 25 do
				local ball = Instance.new("Part", char.Torso)
				ball.Anchored = true
				ball.CanCollide = false
				ball.Transparency = 0
				ball.BrickColor = BrickColor.Yellow()
				ball.Shape = "Ball"
				ball.CFrame = char.Torso.CFrame
				ball.TopSurface = "Smooth"
				ball.BottomSurface = "Smooth"
				game.Debris:AddItem(ball, 1)
				delay(0, function()
					for i = 1, 20 do
						ball.Size = ball.Size + Vector3.new(2.5, 2.5, 2.5)
						ball.Transparency = ball.Transparency + 0.05
						wait(0.1)
					end
				end)
				wait(0.25)
			end
		end)
		s2 = true
		delay(0, function()
			spawn(function()
				for i = 1, 5 do
					local spike = Instance.new("Part", char.Torso)
					spike.Anchored = true
					spike.CanCollide = false
					spike.Transparency = 0.5
					spike.BrickColor = BrickColor.new("Deep orange")
					spike.CFrame = char.Torso.CFrame
					local m = Instance.new("SpecialMesh", spike)
					m.MeshId = "rbxassetid://9982590"
					game.Debris:AddItem(spike, 1)
					delay(0,function()
						for i = 1, 20 do
							m.Scale = m.Scale + Vector3.new(2,2,2)
							spike.Transparency = spike.Transparency + 0.05
							spike.Orientation = spike.Orientation + Vector3.new(math.random(1, 10), math.random(1, 10), math.random(1, 10))
							wait(0.1)
						end
					end)
					wait(0.53)
				end
			end)
			delay(0,function()
				for i = 1, 12 do
					local ring = Instance.new("Part", char.Torso)
					ring.Anchored = true
					ring.CanCollide = false
					ring.Transparency = 0.5
					ring.BrickColor = BrickColor.new("Deep orange")
					ring.CFrame = char.Torso.CFrame
					local m = Instance.new("SpecialMesh", ring)
					m.MeshId = "http://www.roblox.com/asset/?id=3270017"
					game.Debris:AddItem(ring, 1)
					delay(0,function()
						for i = 1, 20 do
							m.Scale = m.Scale + Vector3.new(12,12,12)
							ring.Transparency = ring.Transparency + 0.05
							ring.Orientation = ring.Orientation + Vector3.new(math.random(-25, 25), math.random(-25, 25), math.random(-25, 25))
							wait(0.25)
						end
					end)
					wait(0.53)
				end
			end)
		end)
	end)
	wait(5)
	local acc = Instance.new("Accessory", char.Head)
	acc.Name = "SSJHair"
	local handle = Instance.new("Part", acc)
	handle.Name = "Handle"
	handle.CanCollide = false
	handle.BrickColor = BrickColor.new("Deep orange")
	handle.Material = "Neon"
	handle.Transparency = 1
	local m = Instance.new("SpecialMesh", handle)
	m.MeshId = "rbxassetid://430344159"
	m.Scale = Vector3.new(6, 6, 6)
	m.Offset = Vector3.new(0, 0.5, 0.5)
	local w = Instance.new("Weld", handle)
	w.Name = "AccessoryWeld"
	w.Part0 = handle
	w.Part1 = char.Head
	w.C0 = CFrame.new(0, -0.5, 0)
	char.Humanoid:AddAccessory(acc)
	for i = 1, 10 do
		handle.Transparency = handle.Transparency - 0.1
		wait(0.025)
	end
	for i, v in pairs(char:GetChildren()) do
		if v:IsA("Accessory") and v.Name ~= "SSJHair" then
			v.Handle.Transparency = 1
		end
	end
	local color1 = Color3.new(255, 255, 0)
	local p = game.ServerStorage.SSJAura:Clone()
	p.Parent = char.Torso
	p.Color = ColorSequence.new(color1)
	local l = Instance.new("ParticleEmitter", char.Torso)
	l.Size = NumberSequence.new({NumberSequenceKeypoint.new(0, 4, 0), NumberSequenceKeypoint.new(1, 4, 0)})
	l.Lifetime = NumberRange.new(0.1)
	l.Rate = 2
	l.Speed = NumberRange.new(2)
	l.VelocitySpread = NumberRange.new(400)
	l.Color = ColorSequence.new(Color3.new(171, 247, 255))
	l.LightEmission = 0.5
	l.Texture = "rbxassetid://281983189"
	local l2 = l:Clone()
	l2.Texture = "rbxassetid://278520320"
	local l3 = l:Clone()
	l3.Texture = "rbxassetid://281983280"
	local l4 = l:Clone()
	l4.Texture = "rbxassetid://281982895"
	local l5 = l:Clone()
	l5.Texture = "rbxassetid://281983242"
	l2.Parent = char.Torso
	l3.Parent = char.Torso
	l4.Parent = char.Torso
	l5.Parent = char.Torso
	s = Instance.new("Sound", char.Torso)
	s.Looped = true
	s.SoundId = "rbxassetid://828214895"
	s:Play()
	wait(4)
	s.TimePosition = 4
	spawn(function()
		while wait(116) and ssj == true do
			s.TimePosition = 4
		end
	end)
	char.Torso.Anchored = false
end

function nossj()
	s:Stop()
	for i, v in pairs(char:GetChildren()) do
		if v:IsA("Accessory") and v.Name ~= "SSJHair" then
			v.Handle.Transparency = 0
		end
	end
	char.SSJHair:Destroy()
	for i, v in pairs(char.Torso:GetChildren()) do
		if v:IsA("ParticleEmitter") then v:Destroy() end
	end
	if ssj == true then ssj = false print("SSJ was true.") end
end

mouse.KeyDown:connect(function(key)
	if string.lower(key) == "h" then
		wait(0.1)
		ssj()
	elseif string.lower(key) == "h" then
		wait(0.1)
		nossj()
	end
end)

3 comments

0

Firstly, can you be more specific with where your error is, and where you called the function? A 201-line script is quite large, so could you please make it easier for us to solve? Also, although you aren't in favour of it, RemoteEvents are mandatory if you are using a LocalScript to create instances, due to FilteringEnabled. Furthermore, KeyDown is deprecated, so avoid using it.

0

I think I know where the problem is. "ssj" is the name of both a function and a variable, so it would confuse the script, and it doesn't know whether you are talking about the boolean or the function, so it assumes one, preferably the one that you don't want. Change "ssj" (the true/false value) to something else.

0

The problem is lines 194 & 197: Whenever the player hits the 'h' key, it'll always go to the first conditional statement; you'll have to set up your script to detect whether SSJ is on or off.