Check a player's rank, and chain

I want to check if a player is for example a Donator, now if there is another group Donator 2. I want it to check the chain, so if donator 2 is higher than donator I want donator 2 to also have permission, for example:

Does ply:IsUserGroup do this?

if ply:IsUserGroup( "Donator" ) then
    --Donator + Higher rank like (Donator2, Admin, Superadmin etc.)

So I don’t have to do:

if ply:IsUserGroup( "Donator" ) or ply:IsUserGroup( "Donator2" ) then
    --Do stuff

I want donator and any other groups higher above the chain to also have access.

You could set up a system similar to assmod.

Assign levels for each rank.

admin - 3
donator - 2
user - 1

And then just do if ply:GetLevel() > 2 then etc.

I would make a meta function with it doing the if then statements on all the user groups you want and then just call that function whenever you need it.


–The meta function
local meta = FindMetaTable(“Player”)

function meta:IsDonorAndUp()
if self:IsUserGroup(“donator”) or self:IsUserGroup(“donator2”) or self:IsUserGroup(“admin”) then
return true
return false

–Example of it in use

function GM:PlayerSpawn(ply)
if ply:IsDonorAndUp()
then ply:SetHealth(125)

Thank you for your reply though I didn’t really want to do something like that. Reason being I want to let the user specify what groups they want to have access.

[editline]8th June 2013[/editline]

For the user that gave my reply a dumb “brandonj4”, I don’t want people having to go into the main lua file and change this themselves, that is hard code and very annoying.