I finally pushed our test implementation of the new command system to SVN. It's not modifying anything currently, it's just sitting there adding a few things the devs can test with for now. This new command system is being powered by the changes to UCL, specifically the new "access tag" system. userallow and groupallow already support access tags.
What does this mean for you in the future?It means that you're going to be able to have an insane amount of configuration on user permissions in the future. Here's a quick list of things off the top of my head:
- Limit users to who they can target on a per-command basis. Admin "Bob" should only be able to target non-admins? No problem. Admin "Stickly Man!" should only be allowed to target the player "fastcall"? Also no problem. Should admin "fastcall" only be allowed to slap himself? Sure thing.
- Limit users to ranges on commands. Group "trusted" should only be allowed to ban people for a maximum of 60 minutes, "JamminR" should only be allowed to make people up to half-invisible, and "Jay" isn't allowed to jail anyone for less than 10 seconds. All possible with this new system.
- Limit users on STRINGS in commands! Admin "Mod Podge" is only allowed to specify certain reasons for banning someone, all users in "trusted" group are only allowed to change group permissions within the "trusted" group. Again, all possible.
What does this mean for devs?This is basically a user-to-lua
translation system. You tell it what you expect from the user, it calls a function with all the correctly typed and constrained information, obeying permissions too. Now you go from writing an admin mod or entity command suite to writing a garry's mod
library because you no longer care about the details of the user!
Thoughts?