I have the basics, create the administrator, but I need to remove the administrator.
How can remove administrator to the user.ini and based on this code.
Parts of the code was pulled from the plugin "admins manager" and adapt it to what I needed..
PHP Code:
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "Add Admin Menu"
#define AUTHOR ";SoNNy"
#define VERSION "1.0"
#define STR_LEN 64
new gConfigsDir[STR_LEN];
new gAdminsFile[STR_LEN];
new g_iMaxPlayers
new bool:g_Player[33]
new gAdminTargetId[33];
new gAdminTargetFlags;
new gAdminSaveMode;
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /addadmin", "MenuAddAdmin", ADMIN_IMMUNITY)
register_clcmd("say_team /addadmin", "MenuAddAdmin", ADMIN_IMMUNITY)
g_iMaxPlayers = get_maxplayers();
gAdminTargetFlags = register_cvar("amx_a_flag","L");
gAdminSaveMode = register_cvar("amx_a_savemode","0");
get_configsdir(gConfigsDir, sizeof gConfigsDir - 1);
formatex(gAdminsFile, sizeof gAdminsFile - 1, "%s/users.ini", gConfigsDir);
if(!file_exists(gAdminsFile))
set_fail_state("Non-existent file.");
}
public client_putinserver()
{
for(new i = 0; i <= g_iMaxPlayers; ++i)
g_Player[i] = false
}
public client_disconnect()
{
for(new i = 0; i <= g_iMaxPlayers; ++i)
g_Player[i] = false
}
public MenuAddAdmin(id,level,cid)
{
if(!cmd_access(id,level,cid,2))
return PLUGIN_HANDLED;
new temp1[32];
new temp2[2];
new iPlayer;
new nPlayer[50];
new Menu = menu_create("Selected Admin to Add:","AddMenuHandler")
static sPlayers[32], iNum;
get_players(sPlayers, iNum, "a");
for (new i = 0 ; i < iNum; i++)
{
if (is_user_connected(i))
{
get_user_name(i,temp1,32);
num_to_str(i,temp2,2);
iPlayer = str_to_num(temp2)
if(!g_Player[iPlayer])
{
menu_additem(Menu, temp1,temp2);
}
else
{
formatex(nPlayer, charsmax(nPlayer), "\y%s \r(ADMIN)", temp1)
menu_additem(Menu, nPlayer, temp2);
}
}
}
menu_display(id, Menu, 0);
return PLUGIN_HANDLED;
}
public AddMenuHandler(id, Menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(Menu)
return PLUGIN_HANDLED
}
new iData[6];
new iAccess;
new iCallback;
new iName[64];
new iKeys;
menu_item_getinfo(Menu, item, iAccess, iData, 5, iName, 63, iCallback)
iKeys = str_to_num(iData)
static iTarget;
iTarget = get_user_index(iData);
gAdminTargetId[id] = iTarget;
if(!g_Player[iKeys])
{
addAdmin(id);
g_Player[iKeys] = true
}
else
{
// removeAdmin(id);
g_Player[iKeys] = false
}
return PLUGIN_HANDLED
}
public addAdmin(id)
{
static iFile;
iFile = fopen(gAdminsFile, "at+");
new aAdminSaveMode
new aAdminTargetFlags
aAdminSaveMode = get_pcvar_num(gAdminSaveMode)
aAdminTargetFlags = get_pcvar_num(gAdminTargetFlags)
static UserInfo[32];
switch(aAdminSaveMode)
{
case 0: { get_user_ip(gAdminTargetId[id], UserInfo, sizeof UserInfo - 1, 1); }
case 1: { get_user_authid(gAdminTargetId[id], UserInfo, sizeof UserInfo - 1); }
}
static sTemp[128];
new iLine;
while(!feof(iFile))
{
fgets(iFile, sTemp, sizeof sTemp - 1);
iLine++;
if((containi(sTemp, UserInfo) != -1) && sTemp[0] != ';')
{
client_print(0, print_chat, "Sorry but an admin account with this account info already exists!");
g_Player[gAdminTargetId[id]] = false
return 1;
}
}
static sBuffer[128];
switch(aAdminSaveMode)
{
case 0: { formatex(sBuffer, sizeof sBuffer - 1, "^n^"%s^" ^"^" ^"%s^" ^"de^"", UserInfo, aAdminTargetFlags); }
case 1: { formatex(sBuffer, sizeof sBuffer - 1, "^n^"%s^" ^"^" ^"%s^" ^"ce^"", UserInfo, aAdminTargetFlags); }
}
fprintf(iFile, sBuffer);
fclose(iFile);
server_cmd("amx_reloadadmins");
gAdminTargetId[id] = 0;
return 1;
}
Thanks!
Sorry for my english! is bad!! xD