I’m making a planekit which has the system that is similar to Crazyman32’s planekit. The issue is the system sometimes doesn’t work when there are many players in the game or use any admin command like “:freefall”. The throttle worked okay, but I can’t turn the plane to the left or right. I tried to use FE (Filtering Enabled) to avoid this problem, but it’s worse because the control worked laggy. I know this is because the script is LocalScript that doesn’t work for server, it needs a FE to make it worked, but how did others solve this problem? Other planekits such as airplo or a planekit in Pilot Training Flight Simulator can use LocalScript for mouse control without having this problem.
You can see my video, I tried to hover my mouse around to make the plane turn, and I tried to use admin command to show the issue Problem
If I understood right, you want the mouse control to work on server? You can fire a remote event through a local script in your mouse control gui and pick it up in server script. Then do the turn in that script.
You could handle the speed changes and all that related stuff on the server but still keep the turning client side like the old CM32 v1 kit did. This would make the turning feel snappy like cm32 has always been but at the same time allowing the speed to be filtering enabled thus not causing the issues that were speed related in cm32
I would suggest implementing Network Ownership into your system. If a client controls a model, and the model has its Network Ownership set to the server, then the controls will rely on the players internet connection. But if you set the Network Ownership to the player flying the aircraft, they’ll be able to fly it smoothly, as the player is the Network host.
Let’s say pilotSeat is the seat to control the aircraft.
pilotSeat.Changed:Connect(function(change)
if change == "Occupant" then
if pilotSeat.Occupant then
local Player = game:GetService("Players"):GetPlayerFromCharacter(pilotSeat.Occupant)
if Player then
pilotSeat:SetNetworkOwner(Player)
end
else
pilotSeat:SetNetworkOwnershipAuto()
end
end
end)