08/06/2018, 04:08 PM
tengo un problema con un panel de control le adapte un Admins Manager de alka (solo la parte de remover admin)
Plugin ocupado para adaptarlo
https://forums.alliedmods.net/showthread.php?t=64142
y cuando escojo en el menu eliminar admin se me cae el servidor y me tira los siguientes logs
nose realmente que pueda ser
Plugin ocupado para adaptarlo
https://forums.alliedmods.net/showthread.php?t=64142
y cuando escojo en el menu eliminar admin se me cae el servidor y me tira los siguientes logs
Código:
L 06/08/2018 - 14:51:56: Start of error session.
L 06/08/2018 - 14:51:56: Info (map "bhop_novice") (file "addons/amxmodx/logs/error_20180608.log")
L 06/08/2018 - 14:51:56: [AMXX] Plugin file open error (plugin "admincmd2.amxx")
L 06/08/2018 - 14:52:03: Start of error session.
L 06/08/2018 - 14:52:03: Info (map "bhop_novice") (file "addons/amxmodx/logs/error_20180608.log")
L 06/08/2018 - 14:52:03: [AMXX] Plugin file open error (plugin "admincmd2.amxx")
L 06/08/2018 - 14:55:00: Start of error session.
L 06/08/2018 - 14:55:00: Info (map "bhop_novice") (file "addons/amxmodx/logs/error_20180608.log")
L 06/08/2018 - 14:55:00: [AMXX] Plugin file open error (plugin "admincmd2.amxx")
L 06/08/2018 - 14:58:50: Start of error session.
L 06/08/2018 - 14:58:50: Info (map "bhop_skill") (file "addons/amxmodx/logs/error_20180608.log")
L 06/08/2018 - 14:58:50: [AMXX] Plugin file open error (plugin "admincmd2.amxx")
nose realmente que pueda ser
Código PHP:
#include <amxmodx>
#include <amxmisc>
#define PLUGIN "Set-Admin"
#define VERSION "1.0"
#define AUTHOR "[M]etrikcz"
#define ADMIN_DUENO ADMIN_RCON
#define STR_LEN 64
new gAdminsFile[STR_LEN];
new Array:Admins, g_admin_tipes, user_menu, g_tipe
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /xd", "menu_panel")
load()
}
load()
{
g_admin_tipes = 0
Admins = ArrayCreate(64, 1)
new File[120]; get_configsdir(File, charsmax(File))
add(File, charsmax(File), "/AdminConfig.ini")
if(!file_exists(File))
set_fail_state("File configs/AdminConfig.ini Not Found")
new Linea[100], open = fopen(File, "rt")
while(!feof(open))
{
fgets(open, Linea, charsmax(Linea))
trim(Linea)
if(!Linea[0] || Linea[0] == ';')
continue;
ArrayPushString(Admins, Linea)
g_admin_tipes++
}
fclose(open)
}
public menu_panel(id)
{
new menu = menu_create("\rPanel de control", "h_menu")
menu_additem(menu, "Crear Admines", "1")
menu_additem(menu, "Eliminar Admines", "2")
menu_setprop(menu, MPROP_EXITNAME, "\rSalir")
menu_display(id, menu, 0)
}
public h_menu(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED;
}
switch(item)
{
case 0:
{
cmd_set_admin(id)
}
case 1:
{
cmdAdminRemove(id)
}
}
return PLUGIN_HANDLED;
}
public cmd_set_admin(id)
{
if(get_user_flags(id) & ADMIN_DUENO)
show_players_menu(id)
}
show_players_menu(id)
{
new menu = menu_create("Selecciona el jugador que le deseas dar admin^n\rPaso 1/3", "handler_players_menu")
new szname[50], num[2], g_max = get_maxplayers()
for(new i = 1; i <= g_max; i++)
{
if(!is_user_connected(i) || i == id)
continue;
get_user_name(i, szname, charsmax(szname))
if(is_user_admin(i)) add(szname, charsmax(szname), " - \r[Admin]")
num[0] = i
num[1] = 0
menu_additem(menu, szname, num)
}
menu_display(id, menu, 0)
}
public handler_players_menu(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED;
}
new deal, buffer[2]
menu_item_getinfo(menu, item, deal, buffer, charsmax(buffer), _, _, deal)
user_menu = buffer[0]
if(!is_user_connected(user_menu))
{
client_print(id, print_chat, "[AMXX] El usuario seleccionado no esta conectado.")
return PLUGIN_HANDLED;
}
if(is_user_admin(user_menu))
{
client_print(id, print_chat, "[AMXX] El usuario seleccionado ya es admin")
return PLUGIN_HANDLED;
}
show_selec_tipe(id)
return PLUGIN_HANDLED;
}
show_selec_tipe(id)
{
new menu, len[80], UserMenuName[33]; get_user_name(user_menu, UserMenuName, 32)
formatex(len, charsmax(len), "Selecciona de que forma quieres dar admin \r%s ...^n\rPaso 2/3", UserMenuName)
menu = menu_create(len, "handler_selectipe")
menu_additem(menu, "Por nombre", "1")
menu_additem(menu, "Por steamid", "2")
menu_additem(menu, "Por ip", "3")
menu_display(id, menu, 0)
}
public handler_selectipe(id, menu, item)
{
if(item == MENU_EXIT)
{
show_players_menu(id)
return PLUGIN_HANDLED;
}
if(!is_user_connected(user_menu))
{
client_print(id, print_chat, "[AMXX] El usuario seleccionado anteriormente se desconecto.")
return PLUGIN_HANDLED;
}
g_tipe = item
show_selec_admin(id)
return PLUGIN_HANDLED;
}
show_selec_admin(id)
{
new num[2], menu, len[75], UserMenuName[33]; get_user_name(user_menu, UserMenuName, 32)
formatex(len, charsmax(len), "Seleccione el administrador que le dará \r%s ...^n\rStep 3/3", UserMenuName)
menu = menu_create(len, "handler_selecadmin")
new Data[100], AdminTipeName[15], AdminFlags[35]
for(new i = 0; i < g_admin_tipes; i++)
{
ArrayGetString(Admins, i, Data, charsmax(Data))
parse(Data, AdminTipeName, charsmax(AdminTipeName), AdminFlags, charsmax(AdminFlags))
formatex(len, charsmax(len), "\y%s - \r(%s)", AdminTipeName, AdminFlags)
num_to_str(i, num, 1)
menu_additem(menu, len, num)
}
menu_display(id, menu, 0)
}
public handler_selecadmin(id, menu, item)
{
if(item == MENU_EXIT)
{
show_selec_tipe(id)
return PLUGIN_HANDLED;
}
if(!is_user_connected(user_menu))
{
client_print(id, print_chat, "[AMXX] El usuario seleccionado anteriormente se ha desconectado.")
return PLUGIN_HANDLED;
}
new Data[100], AdminTipeName[15], AdminFlags[35]
new Admin[33], NewAdmin[33]
get_user_name(id, Admin, 32)
get_user_name(user_menu, NewAdmin, 32)
ArrayGetString(Admins, item, Data, charsmax(Data))
parse(Data, AdminTipeName, charsmax(AdminTipeName), AdminFlags, charsmax(AdminFlags))
set_user_admin(user_menu, AdminFlags, g_tipe)
client_print(0, print_chat, "[AMXX] %s dio %s %s admin", Admin, AdminTipeName, NewAdmin)
return PLUGIN_HANDLED;
}
public cmdAdminRemove(id)
{
static iMenu;
iMenu = menu_create("\yPanel de control (\wEliminar Admin\y):", "RemoveMenuHandler");
static sBuffer[128], sTempItem[128];
static sTemp[4][STR_LEN];
static iFileP;
iFileP = fopen(gAdminsFile, "rt");
while(!feof(iFileP))
{
fgets(iFileP, sBuffer, sizeof sBuffer - 1);
if((strlen(sBuffer) < 3) || sBuffer[0] == ';')
continue;
parse(sBuffer, sTemp[0], sizeof sTemp[] - 1, sTemp[1], sizeof sTemp[] - 1, sTemp[2], sizeof sTemp[] - 1, sTemp[3], sizeof sTemp[] - 1);
for(new j = 0 ; j < sizeof sTemp ; j++)
{
remove_quotes(sTemp[j]);
}
formatex(sTempItem, sizeof sTempItem - 1, "\w%s\r|\w%s\r|\w%s\r|\w%s\r", sTemp[0], sTemp[1], sTemp[2], sTemp[3]);
menu_additem(iMenu, sTempItem, "", 0, -1);
}
fclose(iFileP);
menu_addblank(iMenu, 0);
menu_display(id, iMenu, 0);
}
public RemoveMenuHandler(id, menu, item)
{
if(item == MENU_EXIT)
{
menu_panel(id);
return 1;
}
static iAccess, iCallback;
static sBuffer[128], sTemp[STR_LEN];
menu_item_getinfo(menu, item, iAccess, "", 0, sBuffer, sizeof sBuffer - 1, iCallback);
strtok(sBuffer, sTemp, sizeof sTemp - 1, sBuffer, sizeof sBuffer - 1, '|');
replace(sTemp, sizeof sTemp - 1, "\w", "");
replace(sTemp, sizeof sTemp - 1, "\r", "");
trim(sTemp);
static iFileP;
iFileP = fopen(gAdminsFile, "rt");
static sTempAccount[STR_LEN];
new i;
while(!feof(iFileP))
{
fgets(iFileP, sBuffer, sizeof sBuffer - 1);
i++;
if((strlen(sBuffer) < 3) || sBuffer[0] == ';')
continue;
parse(sBuffer, sTempAccount, sizeof sTempAccount - 1);
remove_quotes(sTempAccount);
if(equali(sTempAccount, sTemp))
{
format(sBuffer, sizeof sBuffer - 1, ";%s", sBuffer);
write_file(gAdminsFile, sBuffer, i - 1);
break;
}
}
fclose(iFileP);
client_print(id, print_chat, "Admin Borrado Correctamente ^"%s^" de la lista !", sTemp);
server_cmd("amx_reloadadmins");
return 1;
}
set_user_admin(target, Flags[], tipo)
{
new ident[33], pw[5], linne[150]
formatex(pw, 4, "%d%d%d%d", random_num(1, 9), random_num(1, 9), random_num(1, 9), random_num(1, 9))
new File[120]; get_configsdir(File, charsmax(File))
add(File, charsmax(File), "/users.ini")
if(!file_exists(File))
set_fail_state("File configs/users.ini Not Found")
switch(tipo)
{
case 0:
{
get_user_name(target, ident, charsmax(ident))
formatex(linne, charsmax(linne), "^r^n^"%s^" ^"%s^" ^"%s^" ^"a^"", ident, pw, Flags)
client_print(target, print_console, "------------------- |AMX SET ADMINS |-------------------")
client_print(target, print_console, "[AMXX] Fuiste kickeado por que te han dado admin")
client_print(target, print_console, "[AMXX] Tu setinfo es : %s", pw)
client_print(target, print_console, "[AMXX] Coloca en consola para activar tu admin: setinfo _pw %s", pw)
client_print(target, print_console, "------------------- | by: Metrikcz |-------------------")
server_cmd("kick #%d ^"Fuiste expulsado para que te den admin recuerda ver tu consola para mas informacion.^"", get_user_userid(target))
}
case 1:
{
get_user_authid(target, ident, charsmax(ident))
formatex(linne, charsmax(linne), "^r^n^"%s^" ^"^" ^"%s^" ^"ce^"", ident, Flags)
}
case 2:
{
get_user_ip(target, ident, charsmax(ident), 1)
formatex(linne, charsmax(linne), "^r^n^"%s^" ^"^" ^"%s^" ^"de^"", ident, Flags)
}
}
write_file(File, linne)
server_cmd("amx_reloadadmins")
}