View Single Post
PartialCloning
Senior Member
Join Date: Dec 2015
Old 02-11-2019 , 21:07   Re: Admins for each map
Reply With Quote #20

PHP Code:
/*    Notes and Usage

    This plugin should be placed anywhere under admin.amxx in the plugins.ini file to ensure it loads after admin.amxx 

    Usage in users.ini:
    "STEAM_0:0:1234" "" "abcdefghijklmnopqrstuv" "ce" "fun_"            = (Administrator in all fun_ prefixed maps).
    "STEAM_0:0:5678" "" "abcdefghijklmnopqrstuv" "ce" "de_dust2"        = (Administrator in de_dust2 map).
    "STEAM_0:0:9012" "" "abcdefghijklmnopqrstuv" "ce" ""                = (Administrator in all maps).
    "STEAM_0:0:3456" "" "abcdefghijklmnopqrstuv" "ce"                    = (Administrator in all maps).
*/

#include <amxmodx>
#include <amxmisc>

public plugin_init()
{
    
register_plugin("Map Specific Admins""1.0""Partial Cloning");
    
LoadAdmins();
}

LoadAdmins()
{
    
admins_flush();

    new 
szUsersIni[64];
    
get_configsdir(szUsersInicharsmax(szUsersIni));
    
add(szUsersInicharsmax(szUsersIni), "/users.ini");

    new 
File fopen(szUsersIni"r");
    if(!
File)
    {
        
log_amx("Unable to read from file ^"%s^"."szUsersIni);
        return;
    }

    new 
Text[512], Flags[32], Access[32], AuthData[44], Password[32], szUserMap[32], AdminCount;
    while(!
feof(File))
    {
        
fgets(FileTextcharsmax(Text));
        
trim(Text);

        if(
Text[0]==';')
            continue;

        
Flags[0] = Access[0] = AuthData[0] = Password[0] = szUserMap[0] = 0;

        if(
parse(TextAuthDatacharsmax(AuthData), Passwordcharsmax(Password), Accesscharsmax(Access), Flagscharsmax(Flags), szUserMapcharsmax(szUserMap)) < 2)
            continue;

        if(
szUserMap[0] && !IsMapAdmin(szUserMap))
            continue;

        
admins_push(AuthDataPasswordread_flags(Access), read_flags(Flags));
        
AdminCount++;
    }

    
fclose(File);

    if(
AdminCount == 1)
        
server_print("[AMXX] %L"LANG_SERVER"LOADED_ADMIN");
    else
        
server_print("[AMXX] %L"LANG_SERVER"LOADED_ADMINS"AdminCount);
}

bool:IsMapAdmin(szUserMap[])
{
    static 
szMapName[32];
    if(
szMapName[0] == 0)
        
get_mapname(szMapNamecharsmax(szMapName));

    return 
equali(szMapNameszUserMapszUserMap[strlen(szUserMap) - 1] == '_' strlen(szUserMap) : charsmax(szMapName)) ? true false;

PartialCloning is offline