24/05/2018, 02:02 PM
(Última modificación: 27/06/2019, 09:58 PM por Niper.-.. Edited 3 times in total.)
Bueno todos conocen el famoso Admin Check de OneEyed. En el cuál marca los admins conectados en el servidor a través de un print en el say.
La mayoria de los servidores (Al menos de ARG) Tienen este plugin , pero no vi ninguno que los tenga vía menú.
Así que bueno.. dejo el código.
Bueno, me tome el tiempo de hacer una versión 2.0. En el mismo plugin arreglo fallos de este y nuevas cosillas...
v1.0
v2.0 *ATENCIÓN, ANTE CUALQUIER FALLO & BUG, ME AVISAN*
La mayoria de los servidores (Al menos de ARG) Tienen este plugin , pero no vi ninguno que los tenga vía menú.
Así que bueno.. dejo el código.
Bueno, me tome el tiempo de hacer una versión 2.0. En el mismo plugin arreglo fallos de este y nuevas cosillas...
v1.0
Código PHP:
#include < amxmodx >
#include < amxmisc >
new const szPluginInfo [ ] [ ] = {
{ "[BG] Admin Check" },
{ "1.2" },
{ "heNK'" }
};
new const szPrefix [ ] = "!g[BREAKING GAMING]!y";
public plugin_init ( ) {
register_plugin ( szPluginInfo [ 0 ], szPluginInfo [ 1 ], szPluginInfo [ 2 ] );
RegisterSayCmdTeam ( "admin", "cmdAdminCheck", ADMIN_ALL, true );
RegisterSayCmdTeam ( "admins", "cmdAdminCheck", ADMIN_ALL, true );
}
public plugin_cfg ( ) {
if ( is_plugin_loaded ( "Pause Plugins" ) != -1 )
server_cmd ( "amx_pausecfg add ^"%s^"", szPluginInfo [ 0 ] );
}
public cmdAdminCheck ( iIndex ) {
static iMenu;
iMenu = menu_create ( "\r[BREAKING GAMING] \y- \wAdmins Online", "HandlerAdminOnline" );
//static i = 1;
new iName [ 33 ];
new bool:Connected = false;
for ( new i = 1; i <= get_maxplayers ( ); i++ ) {
if ( !is_user_connected ( i ) )
continue;
if ( is_user_admin ( i ) ) {
get_user_name ( i, iName, sizeof ( iName ) - 1 );
menu_additem ( iMenu, iName );
menu_setprop ( iMenu, MPROP_EXITNAME, "Salir" );
menu_setprop ( iMenu, MPROP_BACKNAME, "Atras" );
menu_setprop ( iMenu, MPROP_NEXTNAME, "Siguiente" );
Connected = true;
}
}
if ( Connected ) {
menu_display ( iIndex, iMenu );
}
else {
SayPrint ( iIndex, "%s No hay admins online", szPrefix );
menu_destroy ( iMenu );
}
return PLUGIN_HANDLED;
}
public HandlerAdminOnline ( iIndex, iMenu, iItem ) {
menu_destroy ( iMenu );
return PLUGIN_HANDLED;
}
stock SayPrint ( const iIndex, const Text [ ], any:... ) {
new Say [ 192 ];
vformat ( Say, sizeof ( Say ), Text, 3 );
replace_all ( Say, sizeof ( Say ), "!y", "^1" );
replace_all ( Say, sizeof ( Say ), "!g", "^4" );
replace_all ( Say, sizeof ( Say ), "!t", "^3" );
//Acentos
replace_all ( Say, sizeof ( Say ), "á", "á" );
replace_all ( Say, sizeof ( Say ), "é", "é" );
replace_all ( Say, sizeof ( Say ), "í", "Ã*" );
replace_all ( Say, sizeof ( Say ), "ó", "ó" );
replace_all ( Say, sizeof ( Say ), "ú", "ú" );
replace_all ( Say, sizeof ( Say ), "ñ", "ñ" );
replace_all ( Say, sizeof ( Say ), "Á", "Ã" );
replace_all ( Say, sizeof ( Say ), "É", "É" );
replace_all ( Say, sizeof ( Say ), "Í", "Ã" );
replace_all ( Say, sizeof ( Say ), "Ó", "Ó" );
replace_all ( Say, sizeof ( Say ), "Ú", "Ú" );
replace_all ( Say, sizeof ( Say ), "Ñ", "Ñ" );
message_begin ( iIndex ? MSG_ONE_UNRELIABLE : MSG_BROADCAST, get_user_msgid ( "SayText" ), .player = iIndex );
write_byte ( iIndex ? iIndex : 33 );
write_string ( Say );
message_end ( );
}
stock RegisterSayCmdTeam ( const szSayCommand [ ], const szFunction [ ], const szFlags, bool:ComandoTrue ) {
new LenSay [ 127 ];
new LenSayTeam [ 127 ];
if ( ComandoTrue ) {
formatex ( LenSay, sizeof ( LenSay ), "say /%s",szSayCommand );
formatex ( LenSayTeam, sizeof ( LenSayTeam ), "say_team /%s", szSayCommand );
}
else {
formatex ( LenSay, sizeof ( LenSay ), "say %s",szSayCommand );
formatex ( LenSayTeam, sizeof ( LenSayTeam ), "say_team %s", szSayCommand );
}
register_clcmd ( LenSay, szFunction, szFlags );
register_clcmd ( LenSayTeam, szFunction, szFlags );
}
v2.0 *ATENCIÓN, ANTE CUALQUIER FALLO & BUG, ME AVISAN*
Código PHP:
#include <amxmodx>
#include <amxmisc>
#include <colorchat>
/*
-v2.0
*Fix menu_setprop
*Mas entendible el código
*Nuevas datas
-Ahora si tienes el flag ADMIN_RCON podrás advertir al admin.
-Ahora sí tienes el flag ADMIN_RCON podrás ver los datos del admin
-Ahora sí tienes el flag ADMIN_RCON podrás chequear sus datos.
*Nuevo: Contador de Admins ONLINE
*Nuevo: Sist. de Advertencias
*Compatibilidad con AMXX >= 1.8.3
*/
#if defined AMXX_VERSION_NUM >= 183
#define ColorChat client_print_color
#define GREEN 0
#define client_disconnect client_disconnected
#endif
#define PREFIX_MENU "\r[BREAKING GAMING]\w"
#define PREFIX_SAY "^4[BREAKING GAMING]^1"
new g_AdminCount = 0;
new g_maxplayers;
new g_Advertir[33];
public plugin_cfg()
server_cmd("amx_pausecfg add ^"Admin Check^"");
public plugin_init() {
register_plugin("Admin Check", "v2.0", "heNK'");
register_clcmd("say /admins", "AdminsCheck");
register_clcmd("say /admin", "AdminsCheck");
register_clcmd("__ADVERTIR__", "__ADVERTIR__");
g_maxplayers = get_maxplayers();
}
public client_putinserver(id)
if(is_user_admin(id)) {
g_AdminCount++;
}
public client_disconnect(id)
if(is_user_admin(id)) {
g_AdminCount--;
}
public AdminsCheck(id)
{
new Titulo[256];
formatex(Titulo, charsmax(Titulo), "%s Admins Online: \y%d \wadmins conectados", PREFIX_MENU, g_AdminCount);
new bool:bAdmin = false;
new menu = menu_create(Titulo, "HandlerAdminsCheck");
for(new admin = 1; admin <= g_maxplayers; admin++) {
if(is_user_connected(admin) && is_user_admin(admin)) {
new szId[13];
format(szId, charsmax(szId), "%d %d", admin, get_user_userid(admin));
new szName[32]; get_user_name(admin, szName, charsmax(szName));
if(get_user_flags(id) & ADMIN_RCON)
formatex(Titulo, charsmax(Titulo), "%s \y(VER INFORMACION)", szName);
else formatex(Titulo, charsmax(Titulo), "%s", szName);
menu_additem(menu, Titulo, szId, 0);
bAdmin = true;
}
}
if(!bAdmin)
ColorChat(id, GREEN, "%s No hay admins online", PREFIX_SAY);
menu_setprop(menu, MPROP_NUMBER_COLOR, "\y"),
menu_setprop(menu, MPROP_NEXTNAME, "Siguiente"),
menu_setprop(menu, MPROP_EXITNAME, "Salir"),
menu_setprop(menu, MPROP_BACKNAME, "Atras");
menu_display(id, menu, 0);
}
public HandlerAdminsCheck(id, menu, item)
{
if(item == MENU_EXIT) {
menu_destroy(menu);
return PLUGIN_HANDLED;
}
new access, callback;
new info[64], name[64];
menu_item_getinfo(menu, item, access, info, charsmax(info), name, charsmax(name), callback);
new player[11], userid[11], id2, szId;
parse(info, player, charsmax(player), userid, charsmax(userid));
id2 = str_to_num(player),
szId = str_to_num(userid);
if((get_user_flags(id) & ADMIN_RCON) && is_user_connected(id2) && (szId != get_user_userid(id))) {
static Nombre[32]; get_user_name(id2, Nombre, charsmax(Nombre));
static szIp[20]; get_user_ip(id2, szIp, charsmax(szIp), true);
static szAuthid[64]; get_user_authid(id2, szAuthid, charsmax(szAuthid));
static szHid[15]; get_user_info(id2, "*HID", szHid, charsmax(szHid));
MenuInformacion(id, Nombre, szIp, szAuthid, szHid, id2);
}
return PLUGIN_HANDLED;
}
public MenuInformacion(id, Nombre[], szIp[], szAuthid[], szHid[], id2) {
new Titulo[256];
formatex(Titulo, charsmax(Titulo), "%s Datos de \y%s", PREFIX_MENU, Nombre);
new numero[3];
num_to_str(id2, numero, charsmax(numero)); //Pasamos el "id" del player..
new menu = menu_create(Titulo, "HandlerMenuInformacion");
formatex(Titulo, charsmax(Titulo), "Su ip: \y%s", szIp);
menu_additem(menu, Titulo, numero);
formatex(Titulo, charsmax(Titulo), "Su SteamID: \y%s", szAuthid);
menu_additem(menu, Titulo, numero);
formatex(Titulo, charsmax(Titulo), "ShortHID: \y%s", szHid);
menu_additem(menu, Titulo, numero);
menu_additem(menu, "Advertir al Admin", numero);
/* Si tienes el Admin Vencimiento
formatex(Titulo, charsmax(Titulo), "Su Vencimiento: \y%s", TuVariable);
menu_additem(menu, Titulo, "4");
*/
menu_setprop(menu, MPROP_EXITNAME, "Salir");
menu_display(id, menu, 0);
}
public HandlerMenuInformacion(id, menu, item) {
if(item == MENU_EXIT) {
menu_destroy(menu);
return PLUGIN_HANDLED;
}
static szData[100], nada;
menu_item_getinfo(menu, item, nada, szData, charsmax(szData), "", _, nada);
g_Advertir[id] = str_to_num(szData);
switch(item) {
case 3: client_cmd(id, "messagemode __ADVERTIR__");
}
return PLUGIN_HANDLED;
}
public __ADVERTIR__(id) {
if(get_user_flags(id) &ADMIN_RCON) {
new Razon[64];
read_args(Razon, charsmax(Razon));
remove_quotes(Razon);
trim(Razon);
if(strlen(Razon) <= 0) {
ColorChat(id, GREEN, "%s Tienes que agregar la razón", PREFIX_SAY);
return;
}
new AName[32]; get_user_name(id, AName, charsmax(AName));
new Nombre[32]; get_user_name(g_Advertir[id], Nombre, charsmax(Nombre));
ColorChat(id, GREEN, "%s Advertiste al admin ^3%s ^4| ^1Razón: ^4%s", PREFIX_SAY, Nombre, Razon);
ColorChat(g_Advertir[id], GREEN, "%s ^3%s ^1te advirtio!!! La razón: ^4%s", PREFIX_SAY, AName, Razon);
}
}