function droneMovement(player,keypressed,direction)
	local dronecframe = drone.CFrame
	
	if keypressed == "w" then
		Bodypos.Position = dronecframe:PointToWorldSpace(Vector3.new(0,0,-3)) 
		
	
	elseif keypressed == "a" then
		Bodypos.Position = dronecframe:PointToWorldSpace(Vector3.new(-3,0,0))
		
	
	elseif keypressed == "s" then
		Bodypos.Position = dronecframe:PointToWorldSpace(Vector3.new(0,0,3))
					
	elseif  keypressed == "d" then
		Bodypos.Position = dronecframe:PointToWorldSpace(Vector3.new(3,0,0))
		
	end
	

	if direction == "Right" then
		BodyGyro.CFrame = BodyGyro.CFrame * CFrame.new(Bodypos.Position) * CFrame.Angles(0,math.rad(-2.5),0)
	end

	if direction == "Left" then
		BodyGyro.CFrame = BodyGyro.CFrame * CFrame.new(Bodypos.Position) * CFrame.Angles(0,math.rad(2.5),0)
	end
	

	
end



droneserver.OnServerEvent:Connect(droneMovement)

thats the ^ server script where everything moves in the server

function drone.dronemovement()
	local validKeys = {
		["W"] = function()
			droneserver:FireServer("w") 
		end,
		["A"] = function()
			droneserver:FireServer("a") 
		end,
		["S"] = function()
			droneserver:FireServer("s") 

		end,
		["D"] = function()
			droneserver:FireServer("d") 

		end,
	}
	
	
	while true do

		local arr = userinputservice:GetKeysPressed()

		for _,key in pairs(arr) do

			local check = validKeys[key.KeyCode.Name]
			if check then
				check() 
			end
		end
		wait()


	end
	



end	

This is the module script where i am trying to get the part to move when in a diagonal direction when when for example W+A is pressed at the same time on the keyboard.