I see no reason for GetNetworkOwner() to be inaccessible by the client and it can be very useful for checking on the client what parts the client has physical control over.
I agree. This is very annoying.
I agree. I can’t think of any direct use cases though, and usually for something to be changed you need an explicit reason for it
It may be more useful to know if the local player is the network owner compared to who exactly is the network owner if that makes sense.
Hi, my use case for this is to do some scripted physics modification to parts, and I would like to perform these from the network owner while leaving the ownership in auto mode. Each client and the server would be checking when to perform the physics tricks, and would only do this on parts they own.
Without this feature, the server needs to tell the client via a remoteevent to execute the physics modification, and by that point it may as well do the physics modification itself and save 4x the latency.
I agree, I can’t see a reason for any client to know the specific player that is the network owner. They only need to know if it’s themselves or the server.
I’d also like to highlight another topic similar to this that would help very much as well: Event Part.NetworkOwnerChanged
HI, I want to bump this and say the lack of this feature is critically preventing me from completing key features in my game.
I need this to determine if I can execute a no-latency operation on the client, or if I should route it back to the server, thus avoiding a 1 RTT time.
This is an extremely annoying issue which forced me to implement a custom ownership system in an old project, while now I just make everything owned by the server. It would save me a lot of work if I could find out whether the client owns a part.
I’d also like to bump this post.
I’ve run into a use case where I need this feature, similar to Quenty.
I have a boat that has to change network ownership suddenly; the boat forces are controlled locally while networked to the player. However when network ownership is taken away from the player I need to switch over to server control instantly so the boat doesn’t stop moving.
Would like to bump this post as well.
Similar to opplo and Quenty, I’m trying to see if I can apply a force from the client with no-latency instead of from the server. Right now, I’m able to get around this using attributes to expose the current network owner but I assume there is still at least 1 RTT to replicate changes to said attribute.
Bumping this post, adds latency to have to use a remote function to check GetNetworkOwner.
This is a feature that should be available.
This is a very great feature.
But it should never tell who owns it, just if the local player has controll of it
I mean it should be instead BasePart:IsNetworkOwner(part: BasePart)
and should only tell if the local player controlls it.
If it sent who controlls it then a lot more replication data would have to be sent and help exploiters.
5 years without reply, try creating a new post because bumping Posts is actually against the Forum TOS and no one of the responsible staff team will do anything.
ReadOnly property that should be accessible on the client. A client should instantly know when it owns (and thus needs to handle extended functionality of) physically simulated parts because physics sim cant be paused/delayed.
Applications:
Rocket/Hover/BodyMover/Constraint/Mechanism&Assembly/CustomCharacter/Companion/Integrated Physics Modifier or System
Extra
Firing to Server for request NetworkOwnership on Mechanisms is delayed by Network ping time. causing Instability/outright unusable. Temp Spam updating value on object is case specific, not flexible for fully simulated physical environment with unpredicted number of actors interacting with others arbitrarily
Please extend the functionality of :GetNetworkOwner() to the client.
This should be added. But it should be so that the client can only know if the local client owns said parts, not who the player who owns it is (so that exploits can’t know who it is).
Just wanted to bump that people still would like this feature, it require awkward complications to work around it
Just use this function as a workaround until Roblox adds this feature.
local function IsNetworkOwner(Part)
return Part.ReceiveAge == 0
end
I made some changes to the code to work with anchored parts or parts within an assembly.
local function IsNetworkOwner(Part)
return Part.AssemblyRootPart.Anchored == false and Part.AssemblyRootPart.ReceiveAge == 0
end
what does ReceiveAge
mean? what it returns when part is controlled by server and what if client?
If the LocalPlayer owns the part, ReceiveAge will be 0, if not, it will be 1.
Apologies, I forgot it did not work on anchored parts. Appreciate your fix, although, I recommend doing this instead:
local function IsNetworkOwner(Part)
return not Part:IsGrounded() and Part.ReceiveAge == 0
end
This is much easier and works the same, if not better.