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_szAuthID[ MAX_PLAYERS + 1 ][ 34 ];
new bool:g_bUserPermissions[ MAX_PLAYERS + 1 ][ 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_close( g_Vault );
}
public client_authorized( id )
{
new iTS;
get_user_authid( id , g_szAuthID[ id ] , charsmax( g_szAuthID[] ) );
nvault_get_array( g_Vault , g_szAuthID[ id ] , g_bUserPermissions[ id ][ Permissions:0 ] , sizeof( g_bUserPermissions[] ) , iTS );
}
#if AMXX_VERSION_NUM == 190
public client_disconnected( id )
#else
public client_disconnect( id )
#endif
{
nvault_set_array( g_Vault , g_szAuthID[ id ] , g_bUserPermissions[ id ][ Permissions:0 ] , sizeof( g_bUserPermissions[] ) );
}
public SetPermission( id )
{
new szArgName[ 32 ] , szArgCommand[ 2 ] , szPermission[ 3 ] , iPlayer , Permissions:pPermission;
if ( !( get_user_flags( id ) & ADMIN_RCON ) )
{
console_print( id , "* You do not have permission to use this command." );
return PLUGIN_HANDLED;
}
if ( ( read_argv( 1 , szArgName , charsmax( szArgName ) ) ) && ( read_argv( 2 , szArgCommand , charsmax( szArgCommand ) ) ) && ( read_argv( 3 , szPermission , charsmax( szPermission ) ) ) )
{
if ( !( Custom1 <= ( pPermission = Permissions:str_to_num( szPermission ) ) < Permissions ) )
{
console_print( id , "* Invalid permission entered, must be between %d and %d" , Custom1 , _:Permissions - 1 );
return PLUGIN_HANDLED;
}
if ( !( szArgCommand[ 0 ] == '+' || szArgCommand[ 0 ] == '-' ) )
{
console_print( id , "* Invalid command, must be - or +" );
return PLUGIN_HANDLED;
}
if ( ( iPlayer = cmd_target( id , szArgName , 0 ) ) )
{
get_user_name( iPlayer , szArgName , charsmax( szArgName ) );
if ( szArgCommand[ 0 ] == '+' && g_bUserPermissions[ iPlayer ][ pPermission ] )
{
console_print( id , "* %s already has permission %d" , szArgName , pPermission );
return PLUGIN_HANDLED;
}
if ( szArgCommand[ 0 ] == '-' && !g_bUserPermissions[ iPlayer ][ pPermission ] )
{
console_print( id , "* %s does not currently have permission %d" , szArgName , pPermission );
return PLUGIN_HANDLED;
}
g_bUserPermissions[ iPlayer ][ pPermission ] = bool:( szArgCommand[ 0 ] == '+' );
console_print( id , "* Permission %d %s for %s" , pPermission , g_bUserPermissions[ iPlayer ][ pPermission ] ? "added" : "removed" , szArgName );
}
}
else
{
console_print( id , "* Incorrect arguments: give_permission <player> <+ or -> <permission # %d to %d>" , Custom1 , _:Permissions - 1 );
}
return PLUGIN_HANDLED;
}
__________________