Network Ownership doing more harm than good

Any way to just completely remove Network Ownership?
It’s doing more harm than good in my case.

Currently, exploiters can just walk into my game set the boss’ Humanoid Root Part to be anchored then all projectiles the boss shoots into spawn or other players.


As you can see, there are explosions in the lobby.

As you can see here, they anchored the Humanoid Root Part.
(The exploiter is not Lpoloppl, he just got the screenshots for me.)

I’ve already tried having a loop that sets network ownership to nil but It clearly didn’t work.
Most of the exploiters are due to some Roblox drama so they won’t stop. :disappointed:

My main issue is how do I set the networkownership FOR ALL parts/projectiles efficiently?

Update: Are no longer able to be anchored, but projectiles are.

4 Likes

The uhhh troll answer but at the same time potentially useful is just to anchor all parts since physics don’t act upon them.

You can also do part:SetNetworkOwner(nil) manually to set ownership back to the server.

3 Likes

I would do that but a lot of the projectiles are movement based/physics based like Ignis Meam’s bouncy fire ball.

Hello! There are two main questions I gathered from this post:

  • Do you have code to share (this is Scripting Support)?
  • Is the game FilteringEnabled?

Right off the bat, I can tell you a few things though.

FilteringEnabled being checked should definitely stop all/most of the issues you just given to us. This may require you to adjust your code according using remote functions/events to factor in this change with how projectiles and character damage is handled to prevent exploits like these from happening again.

Also, this is a good opportunity for you to reflect on your code since people in the lobby should not be able to take damage as I assume they are not suppose to.

I do have FE and projectiles, damage, etc is handled on the server. Here’s the code I use to make sure bosses don’t get client ownership.

_G.setOwner=function(model)
	for _, parts in pairs(model:GetChildren()) do
		if parts.ClassName=="Part" then
			if parts:CanSetNetworkOwnership()==true then
				parts:SetNetworkOwner(nil)
			end
		end
	end
end

I put this in the same loop as the enemy’s AI.

All games are FilteringEnabled, it isn’t an option and hasn’t been for well over a year. The property just determines whether or not to display the “The owner may need to update this game” text on the website.

8 Likes

I appreciate that, It’s been a minute since I’ve read that post, and seeing the FilteringEnabled button in Studio for so long had me forget. My bad.

@mohammed1336 Is there any code that happens to affect the boss’ movements in anyway?

Dashing, etc. But Bosses are fixed now. The only issue now is the projectiles being on the client by auto network ownership.

Cool.

Like I said earlier, if you keep players in the lobby from being damaged, exploiters would have no reason to direct attacks toward them. This could be fixed with a simple boolean, let’s call it playing, that prevents players from being attacked if the players are not playing (for which the bool value would be false).

There is no way to completely remove network ownership without having to rework replication yourself or having to deal with more lag. Best you can do is do some sanity checks on whatever the client tells the server or trust the server more than the client for things like hit detection. Aside from that, this is really the only other option…

Yeah I’ll code that in, I already got a “Alive” and “Dead” table for players to be sorted in. Just made it so if your dead you deal 0 damage.

Hit detection is entirely server sided, my issue is the player teleporting projectiles into the lobby/at other alive players and then it damages them.

You can try making copies of the projectile so that the server creates one that actually detects hits and the clients just make one so it can see the projectile visually. That way, regardless of who owns the projectile, the actual invisible one still belongs to the server, and users will not see laggy projectiles.

How would I make the invisible one not have its ownership transferred to the player/client nearest to it?

Fixed it by just looping through all projectiles/boss projectiles and setting server owned. I know it’ll lag but it’s the best thing I can do. (All VFX are on client anyway)

1 Like