Script Stopping cause unknown Error

I wanted to make a bounce Script and wanted to make it more advanced with different outcomes of how he touches the wall and if he Presses anything but now he stops after 1 Wall Jump:

Problem:
https://gyazo.com/bd3ca0ff2add80cf1c6f13806e1730ab

Script Serverside:

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local InputDirEvent = ReplicatedStorage:WaitForChild("InputDir")

local TS = game:GetService('TweenService')
local Players = game:GetService("Players") -- Players Service
local Tinfo = TweenInfo.new(0.5,
	Enum.EasingStyle.Quad, 
	Enum.EasingDirection.Out, 
	0, 
	true, 
	0)

game.Players.PlayerAdded:Connect(function(player)
	local InputDir = Instance.new("StringValue")
	InputDir.Parent = player
	InputDir.Name = "InputDir"
	InputDir.Value = "None"
	
	local Direct = Instance.new("StringValue")
	Direct.Parent = player
	Direct.Name = "Direction"
	Direct.Value = "Neutral"
	
	player.CharacterAdded:Connect(function(char)
		function SpeedUp()
			local myValue = char.Humanoid.WalkSpeed
			local tween = TS:Create(char.Humanoid,Tinfo,{WalkSpeed = 32})
			tween:Play()
		end
	end)
end)

local part = game.Workspace.Ground
local WallL = game.Workspace.WallLeft
local WallR = game.Workspace.WallRight
local touching = false
game.Workspace.Gravity = 50


part.Touched:Connect(function(hit)
	if touching == false then
		local player = game:GetService("Players"):GetPlayerFromCharacter(hit.Parent)
		
		if player then
		
			Direct = player.Direction
			InputDir = player.InputDir
		
		
			
			if Direct.Value == "Neutral" then
			touching = true
			game.Workspace.Gravity = 196.2 --Changes to normal Gravity while Flying Up
			local bv = Instance.new("BodyVelocity")
			bv.Name = "bounce"
			bv.Velocity = Vector3.new(0,40,0) --change the y value
			bv.MaxForce = bv.MaxForce * 50 --change this
			bv.Parent = player.Character.HumanoidRootPart
			task.wait(0.1)
			bv:Destroy()
			touching = false
			Direct.Value = "Neutral"
			game.Workspace.Gravity = 50 --Chnages Back to low gravity since Falling
			
		
			elseif Direct.Value == "Left" then
				if InputDir == "Left" then
					touching = true
					game.Workspace.Gravity = 196.2 --Changes to normal Gravity while Flying Up
					local bv = Instance.new("BodyVelocity")
					bv.Name = "bounce"
					bv.Velocity = Vector3.new(-40,40,0) --change the y value + Left
					bv.MaxForce = bv.MaxForce * 50 --change this
				bv.Parent = player.Character.HumanoidRootPart
				Direct.Value = "Neutral"
					task.wait(0.1)
					bv:Destroy()
				touching = false
				game.Workspace.Gravity = 50 --Chnages Back to low gravity since Falling
			
			
			elseif Direct.Value == "Right"then	
					if InputDir == "Right" then			
			touching = true
			game.Workspace.Gravity = 196.2 --Changes to normal Gravity while Flying Up
			local bv = Instance.new("BodyVelocity")
			bv.Name = "bounce"
			bv.Velocity = Vector3.new(40,40,0) --change the y value + Right
			bv.MaxForce = bv.MaxForce * 50 --change this
				bv.Parent = player.Character.HumanoidRootPart
				Direct.Value = "Neutral"
			task.wait(0.1)
			bv:Destroy()
				touching = false
			game.Workspace.Gravity = 50 --Chnages Back to low gravity since Falling
			
			
			elseif InputDir.Value == "None" then
					touching = true
					game.Workspace.Gravity = 196.2 --Changes to normal Gravity while Flying Up
					local bv = Instance.new("BodyVelocity")
					bv.Name = "bounce"
					bv.Velocity = Vector3.new(0,40,0) --change the y value
					bv.MaxForce = bv.MaxForce * 50 --change this
					bv.Parent = player.Character.HumanoidRootPart
					task.wait(0.1)
					bv:Destroy()
					touching = false
					Direct.Value = "Neutral"
						game.Workspace.Gravity = 50 --Chnages Back to low gravity since Falling

					else 
					end
				end
			end
		end
	end
end)

WallL.Touched:Connect(function(hit) -- Left Wall
	if touching == false then
		local player = game:GetService("Players"):GetPlayerFromCharacter(hit.Parent)
		
		if player then
			
			local Direct = player:FindFirstChild("Direction")
			local InputDir = player:FindFirstChild("InputDir")
			
			touching = true
			Direct.Value = "Right"
			game.Workspace.Gravity = 196.2 --Changes to normal Gravity while Flying Up
			local bv = Instance.new("BodyVelocity")
			bv.Name = "bounce"
			bv.Velocity = Vector3.new(40,0,0) --change the y value
			bv.MaxForce = bv.MaxForce * 50 --change this
			bv.Parent = player.Character.HumanoidRootPart
			task.wait(0.1)
			bv:Destroy()
			touching = false
			game.Workspace.Gravity = 50 --Chnages Back to low gravity since Falling
			SpeedUp()
		end
	end
end)

WallR.Touched:Connect(function(hit) --Right Wall
	if touching == false then
		local player = game:GetService("Players"):GetPlayerFromCharacter(hit.Parent)
		
		
		if player then
			
			local Direct = player:FindFirstChild("Direction")
			local InputDir = player:FindFirstChild("InputDir")
			
			touching = true
			Direct.Value = "Left"
			game.Workspace.Gravity = 196.2 --Changes to normal Gravity while Flying Up
			local bv = Instance.new("BodyVelocity")
			bv.Name = "bounce"
			bv.Velocity = Vector3.new(-40,0,0) --change the y value
			bv.MaxForce = bv.MaxForce * 50 --change this
			bv.Parent = player.Character.HumanoidRootPart
			task.wait(0.1)
			bv:Destroy()
			touching = false
			game.Workspace.Gravity = 50 --Chnages Back to low gravity since Falling
			SpeedUp()
		end
	end
end)





InputDirEvent.OnServerEvent:Connect(function(plr, Direction)
	plr.InputDir.Value = Direction
end)

I also have a Local Script for the Value Chnaage to notice the Direction hes Pressing for Controller Support and co. but i dont think its that relevant only if you think the problems there
Script Local: (Basically Control Script)

local player = game.Players.LocalPlayer
local RunService = game:GetService("RunService")
local ContextActionService = game:GetService("ContextActionService")

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local InputDir = ReplicatedStorage:WaitForChild("InputDir")


local jumping = false
local leftValue, rightValue = 0, 0

local function onLeft(actionName, inputState)
	if inputState == Enum.UserInputState.Begin then 
		leftValue = 1
		InputDir:FireServer("Left")
	elseif inputState == Enum.UserInputState.End then
		leftValue = 0
		InputDir:FireServer("None")
	end
end

local function onRight(actionName, inputState)
	if inputState == Enum.UserInputState.Begin then
		rightValue = 1
		InputDir:FireServer("Right")
	elseif inputState == Enum.UserInputState.End then
		rightValue = 0
		InputDir:FireServer("None")
	end
end

local function onJump(actionName, inputState)
	if inputState == Enum.UserInputState.Begin then
		jumping = true
	elseif inputState == Enum.UserInputState.End then
		jumping = false
	end
end

local function onDown(actionName, inputState)
	local falling = false
	if inputState == Enum.UserInputState.Begin then
		if falling == false then
		falling = true
		game.Workspace.Gravity = 196.2 --Changes to normal Gravity while Flying Up
		local bv = Instance.new("BodyVelocity")
		bv.Name = "bounce"
		bv.Velocity = Vector3.new(0,-100,0) --change the y value
		bv.MaxForce = bv.MaxForce * 500 --change this
		bv.Parent = player.Character.HumanoidRootPart
		task.wait(0.1)
		bv:Destroy()
		game.Workspace.Gravity = 50
		InputDir:FireServer("None")
	elseif inputState == Enum.UserInputState.End then
			falling = false
		else
			
		end
	end
end

local function onUpdate()
	if player.Character and player.Character:FindFirstChild("Humanoid") then
		if jumping then
			player.Character.Humanoid.Jump = true
		end
		local moveDirection = rightValue - leftValue
		player.Character.Humanoid:Move(Vector3.new(moveDirection,0,0), false)
	end
end

RunService:BindToRenderStep("Control", Enum.RenderPriority.Input.Value, onUpdate)

ContextActionService:BindAction("Left", onLeft, true, "a", Enum.KeyCode.Left, Enum.KeyCode.DPadLeft)
ContextActionService:BindAction("Right", onRight, true, "d", Enum.KeyCode.Right, Enum.KeyCode.DPadRight)
ContextActionService:BindAction("Down", onDown, true, "s", Enum.KeyCode.Down, Enum.KeyCode.DPadDown)

I’m not sure about the rest of your code, but you cannot use UserInputService on the server. That is client side only. Also, don’t use BodyVelocity because it’s been depreciated. Use VectorForce instead.

You can tween on the server. Just not user input service

I updated my post to reflect that.

1 Like

Never used VectorForce and i dont think thats the Solution since the BodyVelocity itself Works