Nadmod Prop Protection

NPP is a simple and efficient Prop Protection system.

I enjoyed Spacetech’s great Simple Prop Protection for years, but when I grew tired of maintaining my local copy of it I figured I’d try rewriting it from the ground up.
While it may not have quite as many bells and whistles as some, I believe NPP is a satisfactory Prop Protection system for most servers.

  • Admins can touch all props (configurable)
  • All player spawned entities are protected by default from:
    • All Tools
    • Properties menu (right clicking props while holding C)
    • Gravity gun punt/pickup
    • Physgun pickup/reload
  • Has a friends system with cpanel that saves friends to file
  • Quick and easy buttons to cleanup either Disconnected Player’s stuff or specific players, which also show the current # of entities that player owns
  • Autoclean Disconnected Player’s props timer
  • Simple overlay shown on all entities shows owner, class, model, and entID
  • Freshly written for Gmod13, it includes blocking the new CanProperty (right click menu)
  • CPPI Compliant

This was initially written to suit my server’s needs, so if theres anything missing feel free to suggest additions.

Workshop Release
Download v1.2.6 zip
Note: Initially Protection is disabled serverwide, just tick on the Main Power Switch in the Admin CPanel and hit Apply.

Media
Admin Panel:

User Panel:

Prop Overlay:

**Useful Concommands for rcon:
*** nadmod_totals - Prints out how many entities each player owns

  • nadmod_cdp - Cleans disconnected player’s props
  • nadmod_cleanclass [classname] - Cleans all entities of given class (npc_*)
  • nadmod_cleanname [part of name] - Cleans all props who’s owner’s name contains arg1. Works on offline players
  • nadmod_cleanplayer [part of name, exact name, or userid] - Finds an online player and removes all their props

Compatibility:
It should work with most admin mods rank system if they override ply:IsAdmin, just make sure you’re only running one PP at once.

  • ULX: Works, but disable UPS module.
  • Evolve: Works, but disable ev_plugins/sh_propprotection.lua
  • FPP: No, one PP at a time.
  • Vanilla (no admin mod): Works
  • Want your private admin system to work? Either override ply:IsAdmin() or NADMOD.IsPPAdmin(ply)

**Changelog:
**v1.2.6: Stopped returning true in PlayerUse hook
v1.2.5: Can now always use Wire tool on World entities (like door controllers)
v1.2.4: Added check for the new CanEditVariable hook (Edit Properties… on edit_sky, etc)
v1.2.3: Added nadmod_cleanplayer concmd, added warning on startup if other PP’s are detected
v1.2.2: Fixed E:CPPICanTool not returning true, stopped Autoclean from announcing cleanups of 0 props
v1.2.1: Fixed Autoclean timer not removing properly on reconnect
v1.2: Added Autoclean Disconnected Players timer
v1.1.1: Admins are no longer stored in peoples friends lists, so when people get demoted they don’t retain their friend status
v1.1: CPanels look better, twitch less. Physgun reload protection. CPPI compliance.

So it blocks people from abusing the right click menu?

Fucking awesome. Thank you for doing what Garry should have fucking done but can’t. The ability for anyone to stealthily delete any item without leaving any evidence as to who did it hemorrhaged fun from the game.

Hi Nebby :3 I’m going to give it a try right now. Are you able to make a loadout/restriction system for weapons, props, ragdolls, tools etc. similar to URS or FPP?

If I’m understanding you correctly, loadouts and restrictions aren’t really within the scope of Prop Protection, thats more of an admin mod sort of thing. This addon is primarily about establishing ownership of things.

It would be great alternative to FPP and SPP if there was also reload and use protection. Right now everybody can enter you vehicles and everybody can unfreeze your props with R key.

Please make sure this is CPPI compliant, as there are definitely tools that I make/use that make use of it. If everyone can stick to the same protocols, it’ll make things a lot easier for addon makers and it’ll improve your chances of making this popular.

@Frankness:
Use protection is already a checkbox in the Admin panel.
Forgot about reload protection, added!

@Wenli:
I didn’t notice Wiremod used CPPI before, thats a big enough addon for me, NPP should be compliant now. If theres any CPPI stuff not in the standard you’d like, let me know!

Does not work for me…

I setted my rank to guest (IsAdmin = false) but i can still do everything
and i cannot remove friends from the buddy list…

Are you positive your admin mod is properly setting IsAdmin to false? Perhaps try
lua_run for k,v in pairs(player.GetAll()) do print(tostring(v)…" admin: "…tostring(v:IsAdmin())) end
Just to be sure.

If you “can still do everything”, are you sure the props you’re testing on’s owner is not friends with you?

Are you hitting Apply Friends? Note that you cannot remove other admins from your friends list.

Lastly, any errors?

1.) i ran


for k,v in pairs(player.GetAll()) do print(v:Nick().." admin:"v:IsAdmin()) end

on Client, and with RCON on my Server.
Both was “gamerpaddy admin:false” when i setted my rank to guest, other players that have admin ranks, had “<name> admin:true”

i can click C on props of admins, i can grab them i can gravgun them i can use them with toolgun

All checkboxes are enabled on adminpanel:
Main PP Power Switch
Admins can Touch everything
and Use Protection

On Client panel, something is wrong… when i uncheck all players and hit apply, the checkboxes are checked again

No Errors! No on Client, no on Server.

I think all players are automaticaly friends, without the posibility to remove them.

My english language is not very well, sorry if you don’t understand what i try to explain.
i can show you what i mean, just add me in steam

If you are an admin, when other people hit “Apply Friends” it’ll save that you are their friend (since admins are automatically friends of everyone). When you then demoted yourself, you were still friends with everyone I’m guessing. If you are unable to uncheck other players, might they all be admins too?

I hadn’t really anticipated admins losing their status. I suppose I’ll change it so when you hit Apply Friends it doesn’t actually save admins to your list, though you’ll still be unable to decheck them clientside while they are admins, this’ll just make deadmining someone effectively remove all their friends.

To confirm this is all the issue is, are newcomers on your server unable to touch your stuff, and (assuming they haven’t been on while you were an admin) you unable to touch theirs (while not an admin)?

Edit: Ended up being addon confliction. Resolved.

Great addon!

Is it possible to get a feature to remove the ability to disable collisions/set fire etc entirely?

Sure, throw the following in autorun


AddCSLuaFile()

timer.Create("DisableSomeProperties",1,1,function()
    properties.List.collision_off.Filter	= function( self, ent, ply ) return false end
    properties.List.collision_on.Filter	= function( self, ent, ply ) return false end
    properties.List.ignite.Filter	= function( self, ent, ply ) return false end
end)

Thanks. You are literally the best. Man you should really apply at this company called FacePunch, I hear they have an opening for a job called “garry”

I just made an account to personally thank you for this gem.

Thank you.

Now for some feedback! :downs:

Please can you add the timer to automatically delete Disconnected peoples props after whatever you set the slider to? That was great.

Maybe an option to turn off the Prop id etc on the side of the screen?

Don’t take what I just said as criticism, as this is exactly what I have been looking for, a gmod 13 version of SPP.

im assuming you are going to be working on this for a while now? :stuck_out_tongue:

Again thank you.

one more time,

Thank you! :smile:

Also some anti spam function would be great.

Monkstick: Glad you like it! Sure I’ll add in autocleanup tomorrow. Only reason I don’t have it already is bad experiences with taking a bit too long to reconnect after a client crash and having SPP clean my stuff :stuck_out_tongue:
If you want to edit the ent overlay, just change the texts in lines 32-34 of cl_nadmodpp.lua

Frankess: I’ve heard mentions of other plugins antispam, and also complaints that it doesn’t work very well at all. I can’t really imagine how automatic antispam would be effective…
If you limit the spawning of particular models, minges’ll just spam other models.
If you limit the speed of spawning, minges’ll just spam slowly.
If you prevent spawning props inside eachother, minges’ll just easyweld them into a horrible colliding mess.
Only solution I see is human detection unfortunately. Still, considering options.

Nebual: my server is fairly popular so I get half the minge population lol. I can’t always be there so auto deletion is handy for me. Thank you for adding that feature just for me, I feel privileged! Thanks!

Yeah, you are mostly right Nebuala. I think I gonna write small AntiSpam for Evolve. At least I can set there that only guests are limited by AntiSpam.

This seems awesome. I was a fan of SPP but with the incompatiblity and other problems (like allowing dupe stealing of stuff not cleaned up yet if you’re the last one on server >_<), I’m glad to see this can take it’s place.

I do have one question though. The owner of the server I frequent threw this on today, and upon joining I noticed he was already on my friend’s list. What caused this? I just want to make sure this doesn’t enable friends by default and you have to remove every new player that joins lol.