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(szUsersIni, charsmax(szUsersIni));
add(szUsersIni, charsmax(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(File, Text, charsmax(Text));
trim(Text);
if(Text[0]==';')
continue;
Flags[0] = Access[0] = AuthData[0] = Password[0] = szUserMap[0] = 0;
if(parse(Text, AuthData, charsmax(AuthData), Password, charsmax(Password), Access, charsmax(Access), Flags, charsmax(Flags), szUserMap, charsmax(szUserMap)) < 2)
continue;
if(szUserMap[0] && !IsMapAdmin(szUserMap))
continue;
admins_push(AuthData, Password, read_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(szMapName, charsmax(szMapName));
return equali(szMapName, szUserMap, szUserMap[strlen(szUserMap) - 1] == '_' ? strlen(szUserMap) : charsmax(szMapName)) ? true : false;
}