Admin Manager 1.7
#1
Admin Manager 1.7
Versión Final

Importante: El plugin debe ir activado primero en la lista, si es arriba de 'admin.amxx' mucho mejor.

Contenido:
  • Tipos de administradores + accesos del mismo
  • Sistema de vencimiento automático de administradores
  • Sistema de sanción/castigo de administradores + razón del mismo
  • Ingreso con password vía setinfo(comando en consola: setinfo _pw "password")

Pueden agregar los tipos de admin que ustedes quieran.

Archivo .ini - para que vean como funciona:
Código:
; Admin Manager
; 1.7
; Sky^^

[ Tipos de administradores ] - Agregar tipos de administradores
; Agregar tipo de admin + los accesos del mismo
; Ejemplo:
; SCRIPTER = abcdimnopqrsu
; Nota: No es necesario que el tipo de admin esté en mayúsculas.

DUEÑO = abcdefghijklmnopqrsu
VIP = abcdimnopqrsu
BASICO = bcdinopqrsu

[ Lista de administradores ] - Agregar administradores
; Uso: "Nombre/SteamID" "Password" "Tipo de admin" "Fecha de vencimiento" "Fecha de suspensión" "Razón de la suspensión"
; Ejemplo de admin sin vencimiento: "Skylar" "12345" "DUEÑO" "PERMANENTE" "" ""
; Ejemplo de admin con vencimiento: "Skylar" "12345" "DUEÑO" "16/12/2019" "" ""
; Ejemplo de como ponerle castigo: "Skylar" "12345" "DUEÑO" "31/12/2021" "05/01/2021" "ABUSAR DEL ADMIN"
; Ejemplo de admin a SteamID sin password: "STEAM_:0:12345" "" "DUEÑO" "PERMANENTE" "" ""
; Ejemplo de admin a SteamID con password: "STEAM_:0:12345" "12345" "DUEÑO" "PERMANENTE" "" ""
; Nota: Si el admin es vía SteamID es opcional agregarle password.

"Skylar" "12345" "DUEÑO" "PERMANENTE" "" ""

Aclaración: Lo que está entre corchetes no deben borrarlos ni modificarlos.

Requerimientos:
Cvars:
  • am_password_field - Setinfo para ingresar la password del administrador

Créditos:
Ejemplo de uso del include:
Código PHP:
#include <amxmodx>
#include <AdminManager_Natives>

#define PLUGIN  "Test Admin Manager"
#define VERSION "1.7"
#define AUTHOR  "Skylar"

public plugin_init( ) {
    register_pluginPLUGINVERSIONAUTHOR );
    register_clcmd"say /soy""soy" );
    register_clcmd"say /punish""punish" );
    register_clcmd"say /tipo""tipo" );
}

public 
soyid ) {
    if( am_is_adminid ) ) client_print_coloridprint_team_default"Admin:^4 Si^1." );
    else client_print_coloridprint_team_default"Admin:^3 No^1." );
}
public 
punishid ) {
    if( am_is_punishedid ) ) client_print_coloridprint_team_default"Suspendido:^4 Si^1." );
    else client_print_coloridprint_team_default"Suspendido:^3 No^1." );
}
public 
tipoid ) {
    new szType32 ];
    am_get_typeidszTypecharsmaxszType ) );
    client_print_coloridprint_team_default"Tipo:^4 %s^1."szType );


Imágenes:
[Imagen: p6c7ES0.png]
[Imagen: FAtBX7j.png]
[Imagen: fGJPKOv.png]
[Imagen: Wu8QpPu.png]
[Imagen: 76W2GMI.png]

Comandos:
  • say /mi_admin: Muestra la información de tu administrador.
  • say /admins: Muestra la lista de administradores conectados.

Descarga:

.sma   Descargar AMXX / AdminManager17.sma (Tamaño: 13.32 KB / Descargas: 354)

.ini   admin_manager.ini (Tamaño: 1.07 KB / Descargas: 261)

.inc   AdminManager_Natives.inc (Tamaño: 359 bytes / Descargas: 236)

.inc   AdminManager_DefinesEnums.inc (Tamaño: 1.65 KB / Descargas: 411)

Testeé todo y funciona sin problemas, así que considero que está en su versión final, pero si llega a surgir algún problema o bug y si tengo ganas lo voy a arreglar.

¡Gracias!

1
Responder
#2
Buen Aporte! Mario
Corazón I dream of someday being able to have your near. Corazón
[Imagen: 76561199006140497.png]
Responder
#3
Se ve bueno, cuando tenga tiempo lo pruebo
Responder
#4
dense cuenta que yo lo ejecuto, buen plugin pedazo de puto.
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder
#5
Esta bien, pero que pasaría si yo entro con otro tag al del admin? O sea, te falta usar fn_LoadAdmins en client_infochanged.
Además g_AdminCount no le das ningún uso, sólo sumas pero no hace nada en sí, diria que le metas algún print o lo que quieras..
Después, en fn_LoadAdmins diria que uses remove_user_flags(id); para cada player que entre y si es admin, ahí haga el set_user_flags. Sólo es recomendación..
Después, usas equal en data user_name, o sea que el admin name es "pepe" si yo tengo "pepe5" no sería admin, entonces tranquilamente puedo hacerme pasar por admin cuando no lo soy. Deberias usar containi.
También, en vez de usar 2 ifs de "sections" es mejor un switch con "case 1" "case 2" y listo.
Para el sistema de suspensión yo tengo esto: (g_AdminType[id][SUSPENDIDO]) donde en "amxmodmenu" estaría bueno detectar si esta suspendido, entonces sí lo esta, bloquearle todas las opciones de amxmodmenu, pero, que el admin lo tenga, no sé si me explico.. O sea que los flags de su admin premium, dueño, etc, los tenga pero hacer un "if(g_AdminType[id][SUSPENDIDO])" y de ahí bloquearles, ejemplo..
Código PHP:
//Menú additem del "amxmodmenu"
menu_additem(menug_AdminType[id][SUSPENDIDO] ? "\dExpulsar jugadores" "Expulsar jugadores""1");
//En el handler lo lleva a "amx_kickmenu(id)" Y dentro de "amx_kickmenu" haces la condición, así de esta el admin lo tiene pero no puede hacer nada
public amx_kickmenu(id
{
    if(!(
get_user_flags(id) & ADMIN_KICK)) {
        
console_print(id"%s No tienes acceso a este comando.."PREFIX_CONSOLE);
        return 
PLUGIN_HANDLED;
    }

    if(
g_AdminType[id][SUSPENDIDO]) {
        
console_print(id"%s Tu admin esta suspendido"PREFIX_CONSOLE);
        
ColorChat(idGREEN"%s Tu admin esta suspendido"PREFIX_SAY);
        return 
PLUGIN_HANDLED;
    }

Mi función es así:
Código PHP:
//Función
LoadAdmins(id, const Name[] = ""
//Luego de parsear los datos "nombre" "password" etc, haces:
if(containi(NameNombre) != -1)
public 
client_infochanged(idLoadAdmins(idNuevoNombre);
public 
client_putinserver(idLoadAdmins(idGetName(id));
//GetName seria tu función donde detectarias el tag o steamid o lo que sea. 
Responder
#6
y mis creditos canalla pacman ?..............
Responder
#7
(17/11/2019, 07:01 PM)Niper.-. escribió: Esta bien, pero que pasaría si yo entro con otro tag al del admin? O sea, te falta usar fn_LoadAdmins en client_infochanged.
Además g_AdminCount no le das ningún uso, sólo sumas pero no hace nada en sí, diria que le metas algún print o lo que quieras..
Después, en fn_LoadAdmins diria que uses remove_user_flags(id); para cada player que entre y si es admin, ahí haga el set_user_flags. Sólo es recomendación..
Después, usas equal en data user_name, o sea que el admin name es "pepe" si yo tengo "pepe5" no sería admin, entonces tranquilamente puedo hacerme pasar por admin cuando no lo soy. Deberias usar containi.
También, en vez de usar 2 ifs de "sections" es mejor un switch con "case 1" "case 2" y listo.
Para el sistema de suspensión yo tengo esto: (g_AdminType[id][SUSPENDIDO]) donde en "amxmodmenu" estaría bueno detectar si esta suspendido, entonces sí lo esta, bloquearle todas las opciones de amxmodmenu, pero, que el admin lo tenga, no sé si me explico.. O sea que los flags de su admin premium, dueño, etc, los tenga pero hacer un "if(g_AdminType[id][SUSPENDIDO])" y de ahí bloquearles, ejemplo..
Código PHP:
//Menú additem del "amxmodmenu"
menu_additem(menug_AdminType[id][SUSPENDIDO] ? "\dExpulsar jugadores" "Expulsar jugadores""1");
//En el handler lo lleva a "amx_kickmenu(id)" Y dentro de "amx_kickmenu" haces la condición, así de esta el admin lo tiene pero no puede hacer nada
public amx_kickmenu(id
{
    if(!(
get_user_flags(id) & ADMIN_KICK)) {
        
console_print(id"%s No tienes acceso a este comando.."PREFIX_CONSOLE);
        return 
PLUGIN_HANDLED;
    }

    if(
g_AdminType[id][SUSPENDIDO]) {
        
console_print(id"%s Tu admin esta suspendido"PREFIX_CONSOLE);
        
ColorChat(idGREEN"%s Tu admin esta suspendido"PREFIX_SAY);
        return 
PLUGIN_HANDLED;
    }

Mi función es así:
Código PHP:
//Función
LoadAdmins(id, const Name[] = ""
//Luego de parsear los datos "nombre" "password" etc, haces:
if(containi(NameNombre) != -1)
public 
client_infochanged(idLoadAdmins(idNuevoNombre);
public 
client_putinserver(idLoadAdmins(idGetName(id));
//GetName seria tu función donde detectarias el tag o steamid o lo que sea. 

Cita:Esta bien, pero que pasaría si yo entro con otro tag al del admin? O sea, te falta usar fn_LoadAdmins en client_infochanged.

Me olvidé de agregar client_infochanged, iba a bloquear el cambio de nombres dentro del server

Cita:Además g_AdminCount no le das ningún uso, sólo sumas pero no hace nada en sí, diria que le metas algún print o lo que quieras..

Tenía un log_amx para saber cuantos admin cargaban, pero los saqué y me olvidé de borrar esa variable jaja

Cita:Después, usas equal en data user_name, o sea que el admin name es "pepe" si yo tengo "pepe5" no sería admin, entonces tranquilamente puedo hacerme pasar por admin cuando no lo soy. Deberias usar containi.

No se si viste el sistema completo, pero si tenes el nombre igual al del archivo .ini te pide que ingreses la password del admin, si no ingresas la password, no te da los flags del mismo, así que está bien como está

Sobre lo demás yo creo que está bien así, si alguien quiere modificarlo de esa forma, es libre de hacerlo
Ahora actualizo sobre lo de infochanged

EDIT: Listo, ya actualicé

Responder
#8
Agregué una versión con HookSay Nothingdohere
Le agregué 2 cvars a esta version:
  • am_hook_say - Activa/Desactiva el hooksay (Valor por defecto: 1)
  • am_time_kick - Tiempo que tiene para ingresar el administrador (Valor por defecto: 25)

Responder
#9
Bien ahí crack, cuando tenga tiempo le doy una leída a fondo Guiño
[Imagen: bvpq9q-6.png]

NO DOY AYUDA VIA MENSAJE PRIVADO

* Si requieres algún servicio de pago puedes contactarme vía MP o en mi facebook
Responder
#10
(18/11/2019, 05:13 PM)Skylar escribió: Agregué una versión con HookSay Nothingdohere
Le agregué 2 cvars a esta version:
  • am_hook_say - Activa/Desactiva el hooksay (Valor por defecto: 1)
  • am_time_kick - Tiempo que tiene para ingresar el administrador (Valor por defecto: 25)

Y el say team? Jajaj
Responder
#11
Actualizado a su versión 1.2:
  • 1.0 [16/11/2019] - Creación de plugin.
  • 1.1 [18/11/2019] - Se agregaron cvars para establecer limite de tiempo de para expulsar al administrador y des/activar hooksay
  • 1.2 [05/12/2019] - Se modificaron algunas cosas, se agregaron natives y se agregó hook say team + una cvar del mismo.

Del post se removió la versión sin hook say y se agregó solamente la versión con ambos hook say.

Ejemplo de uso del include:
Código PHP:
#include <amxmodx>
#include <Admin_Manager>

#define PLUGIN  "Test Admin Manager"
#define VERSION "1.2"
#define AUTHOR  "Skylar"

public plugin_init( ) {
    
register_pluginPLUGINVERSIONAUTHOR );
    
register_clcmd"say /soy""soy" );
    
register_clcmd"say /log""log" );
    
register_clcmd"say /punish""punish" );
    
register_clcmd"say /tipo""tipo" );
}

public 
soyid ) {
    if( 
am_is_adminid ) ) client_print_coloridprint_team_default"Admin:^4 Si^1." );
    else 
client_print_coloridprint_team_default"Admin:^3 No^1." );
}
public 
logid ) {
    if( 
am_is_loggedid ) ) client_print_coloridprint_team_default"Logueado:^4 Si^1." );
    else 
client_print_coloridprint_team_default"Logueado:^3 No^1." );
}
public 
punishid ) {
    if( 
am_is_punishedid ) ) client_print_coloridprint_team_default"Castigado:^4 Si^1." );
    else 
client_print_coloridprint_team_default"Castigado:^3 No^1." );
}
public 
tipoid ) {
    new 
szType32 ];
    
am_get_typeidszTypecharsmaxszType ) );
    
client_print_coloridprint_team_default"Tipo:^4 %s^1."szType );


Responder
#12
DancingLmlDancing
Responder
#13
Hola una pregunta cuando yo pongo /admins me aparece el menu pero les aparece en el chats /admins a todos porqeu pasa eso?

osea ejemplo
>__<:/admins
me aparece el menu pero tambine aparece en el chats esto
>__<:/admins
Responder
#14
No compila en 1.8.3 pacman

pero si en 1.9.0 :V
Responder
#15
(29/12/2019, 11:55 PM)Tomlex12 escribió: Hola una pregunta cuando yo pongo /admins me aparece el menu pero les aparece en el chats /admins a todos porqeu pasa eso?

osea ejemplo
>__<:/admins
me aparece el menu pero tambine aparece en el chats esto
>__<:/admins

Tienes otro plugin que posiblemente también hookee el say y por eso aparece
[Imagen: b_350_20_323957_202743_f19a15_111111.png]

Estudia siempre; el tiempo es oro, lo material se puede recuperar pero el tiempo no se puede recuperar.
(02/10/2016, 05:05 PM)meTaLiCroSS escribió: Siempre me gusta ayudar cuando alguien esta interesado realmente en ver que esta programando.
(08/08/2019, 05:32 PM)meTaLiCroSS escribió: grax x el dato cr4ck


Mis aportes

PLUGINS
MAPAS
Menú LANG [SF] Sistema de Frags
Say System (Admin Prefix)
Responder
#16
(30/12/2019, 05:17 PM)Cristian88 escribió: No compila en 1.8.3 pacman

pero si en 1.9.0 :V

Y que error te da?

Responder
#17
no no me da ningun error yo uso este plugin pero por ejemplo con el comando del amx que es para hablar a todos por la pantalla amx_psay o csay
yo escribo en el say los @@ pero cuando escribo los arrobas y mando el mensaje me aparece en el chat ejemplo
>__<: @@r hola
la cual no deberia aparecer en el chat
Responder
#18
(31/12/2019, 03:37 PM)Skylar escribió:
(30/12/2019, 05:17 PM)Cristian88 escribió: No compila en 1.8.3 pacman

pero si en 1.9.0 :V

Y que error te da?

emm

AMX Mod X Compiler 1.8.3-dev+5201
Copyright © 1997-2006 ITB CompuPhase
Copyright © 2004-2013 AMX Mod X Team

Error: Undefined symbol "MAX_AUTHID_LENGTH" on line 49
Error: Undefined symbol "MAX_AUTHID_LENGTH" on line 60
Error: Undefined symbol "MAX_AUTHID_LENGTH" on line 176
Error: Invalid expression, assumed zero on line 176
Error: Undefined symbol "szPw" on line 176
Error: Too many error messages on one line on line 176

Compilation aborted.
6 Errors.
Could not locate output file C:\Users\One Punch Man\Desktop\Compilados amxx\aoa_admins-ze.amx (compile failed).
Responder
#19
Lo acabo de compilar sin modificar nada y no me tira ningún error...

Lo más probable es que no tengas la versión que requiere el plugin o que hayas modificado algo..


c0mpiL3R¿ escribió:AMX Mod X Compiler 1.10.0.5388
Copyright © 1997-2006 ITB CompuPhase
Copyright © 2004-2013 AMX Mod X Team

Header size: 2104 bytes
Code size: 19344 bytes
Data size: 67960 bytes
Stack/heap size: 16384 bytes
Total requirements: 105792 bytes
Done.
[Finished in 0.6s]
Responder
#20
(30/12/2019, 06:02 PM)totopizza escribió:
(29/12/2019, 11:55 PM)Tomlex12 escribió: Hola una pregunta cuando yo pongo /admins me aparece el menu pero les aparece en el chats /admins a todos porqeu pasa eso?

osea ejemplo
>__<:/admins
me aparece el menu pero tambine aparece en el chats esto
>__<:/admins

Tienes otro plugin que posiblemente también hookee el say y por eso aparece

no tengo ninguno que hooksee el say
Responder
#21
(01/01/2020, 10:04 PM)Chema escribió: Lo acabo de compilar sin modificar nada y no me tira ningún error...

Lo más probable es que no tengas la versión que requiere el plugin o que hayas modificado algo..


c0mpiL3R¿ escribió:AMX Mod X Compiler 1.10.0.5388 // es 1.10.0 + no es 1.8.3 pacman
Copyright © 1997-2006 ITB CompuPhase
Copyright © 2004-2013 AMX Mod X Team

Header size: 2104 bytes
Code size: 19344 bytes
Data size: 67960 bytes
Stack/heap size: 16384 bytes
Total requirements: 105792 bytes
Done.
[Finished in 0.6s]

no entendistes la pregunta compila en 1.9.0 + no en 1.8.3..
Responder
#22
No hiciste ninguna pregunta... y si compila en AMXX 1.8.2.

c0MpiL3R¿ escribió:Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright © 1997-2013 ITB CompuPhase, AMX Mod X Team

Header size: 2020 bytes
Code size: 19616 bytes
Data size: 59888 bytes
Stack/heap size: 16384 bytes; max. usage is unknown, due to recursion
Total requirements: 97908 bytes
Done.
[Finished in 0.4s]
Responder
#23
(02/01/2020, 06:26 AM)Chema escribió: No hiciste ninguna pregunta... y si compila en AMXX 1.8.2.

c0MpiL3R¿ escribió:Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright © 1997-2013 ITB CompuPhase, AMX Mod X Team

Header size: 2020 bytes
Code size: 19616 bytes
Data size: 59888 bytes
Stack/heap size: 16384 bytes; max. usage is unknown, due to recursion
Total requirements: 97908 bytes
Done.
[Finished in 0.4s]

ok, si tienes razón no hice ninguna, pero no entiendes la diferencia entre el 2 y el 3?
estoy diciendo que no compila en 1.8.3 no en 1.8.2 pacman en 1.8.2 compila perfecto pero en 1.8.3 no..
Responder
#24
(02/01/2020, 11:46 PM)Cristian88 escribió:
(02/01/2020, 06:26 AM)Chema escribió: No hiciste ninguna pregunta... y si compila en AMXX 1.8.2.

c0MpiL3R¿ escribió:Welcome to the AMX Mod X 1.8.1-300 Compiler.
Copyright © 1997-2013 ITB CompuPhase, AMX Mod X Team

Header size: 2020 bytes
Code size: 19616 bytes
Data size: 59888 bytes
Stack/heap size: 16384 bytes; max. usage is unknown, due to recursion
Total requirements: 97908 bytes
Done.
[Finished in 0.4s]

ok, si tienes razón no hice ninguna, pero no entiendes la diferencia entre el 2 y el 3?
estoy diciendo que no compila en 1.8.3 no en 1.8.2 pacman en 1.8.2 compila perfecto pero en 1.8.3 no..

Parece que 1.8.3 no trae el límite del authid implementado, solo agrega '#define MAX_AUTHID_LENGTH 32' y ya debería compilar

Responder
#25
Buenas yo soy encargado de una comunidad y puse el plugin todo bien . pero por que al entrar con el admin y pongo la pw 2 veces y entro en medio una de una partida por que me da slay ? pd: es un pregamer xd
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)