View Single Post
Bugsy
AMX Mod X Moderator
Join Date: Feb 2005
Location: NJ, USA
Old 01-11-2020 , 12:14   Re: Own custom admin flags
Reply With Quote #6

Can do something like this, or wait for OciXCrom's plugin.

set_permission <name> <- or +> <permission #>

Code:
set_permission bugsy + 2
set_permission bugsy + 5
set_permission bugsy - 2
You will need nVault Array
PHP Code:

#include <amxmodx>
#include <amxmisc>
#include <nvault_array>

new const Version[] = "0.1";

enum Permissions
{
    
Custom1 1,
    
Custom2,
    
Custom3,
    
Custom4,
    
Custom5
}

new 
g_szAuthIDMAX_PLAYERS ][ 34 ];
new 
bool:g_bUserPermissionsMAX_PLAYERS ][ Permissions ];
new 
g_Vault;

public 
plugin_init() 
{
    
register_plugin"Permissions" Version "bugsy" );
    
    
register_concmd"set_permission" "SetPermission" );
    
    
g_Vault nvault_open"permissions_vault" );
}

public 
plugin_end()
{
    
nvault_closeg_Vault );
}

public 
client_authorizedid )
{
    new 
iTS;
    
get_user_authidid g_szAuthIDid ] , charsmaxg_szAuthID[] ) );
    
nvault_get_arrayg_Vault g_szAuthIDid ] , g_bUserPermissionsid ][ Permissions:] , sizeofg_bUserPermissions[] ) , iTS );
}

#if AMXX_VERSION_NUM == 190
public client_disconnectedid )
#else
public client_disconnectid )
#endif
{
    
nvault_set_arrayg_Vault g_szAuthIDid ] , g_bUserPermissionsid ][ Permissions:] , sizeofg_bUserPermissions[] ) );
}

public 
SetPermissionid )
{
    new 
szArgName32 ] , szArgCommand] , szPermission] , iPlayer Permissions:pPermission;
    
    if ( !( 
get_user_flagsid ) & ADMIN_RCON ) )
    {
        
console_printid "* You do not have permission to use this command." );
        return 
PLUGIN_HANDLED;
    }

    if ( ( 
read_argvszArgName charsmaxszArgName ) ) ) && ( read_argvszArgCommand charsmaxszArgCommand ) ) ) && ( read_argvszPermission charsmaxszPermission ) ) ) )
    {
        if ( !( 
Custom1 <= ( pPermission Permissions:str_to_numszPermission ) ) < Permissions ) )
        {
            
console_printid "* Invalid permission entered, must be between %d and %d" Custom1 _:Permissions );
            return 
PLUGIN_HANDLED;
        }
        
        if ( !( 
szArgCommand] == '+' || szArgCommand] == '-' ) )
        {
            
console_printid "* Invalid command, must be - or +" );
            return 
PLUGIN_HANDLED;
        }
        
        if ( ( 
iPlayer cmd_targetid szArgName ) ) ) 
        {
            
get_user_nameiPlayer szArgName charsmaxszArgName ) );
            
            if ( 
szArgCommand] == '+' && g_bUserPermissionsiPlayer ][ pPermission ] )
            {
                
console_printid "* %s already has permission %d" szArgName pPermission );
                return 
PLUGIN_HANDLED;
            }
            
            if ( 
szArgCommand] == '-' && !g_bUserPermissionsiPlayer ][ pPermission ] )
            {
                
console_printid "* %s does not currently have permission %d" szArgName pPermission );
                return 
PLUGIN_HANDLED;
            }
            
            
g_bUserPermissionsiPlayer ][ pPermission ] = bool:( szArgCommand] == '+' );
            
            
console_printid "* Permission %d %s for %s" pPermission g_bUserPermissionsiPlayer ][ pPermission ] ? "added" "removed" szArgName );
        }
    }
    else
    {
        
console_printid "* Incorrect arguments: give_permission <player> <+ or -> <permission # %d to %d>" Custom1 _:Permissions );
    }
    
    return 
PLUGIN_HANDLED;

__________________

Last edited by Bugsy; 01-11-2020 at 14:30.
Bugsy is offline