[ AMXX ] Reputacion de admin
#1
Arcoiris 
REPUTACIÓN DE ADMINISTRADORES


Changelog:

Código:
AMXX - Reputación de admin 1.0: Versión de lanzamiento, sera actualizado...

Créditos:

Código:
Hypnotize: Dio parte de la idea.

Información:

Comando:
  • admintop. (top de los administradores con mejor reputación)
  • reputacion. (Para ver los administradores que se pueden dar reputación)

Cuenta con:
  • Top de administradores.
  • Solo 1 reputación por jugador, los administradores no se pueden dar reputación entre ellos.
  • Reputación negativa y positiva.
  • Perfil de administrador.
  • Razón de reputación.
  • Perfil de administrador.
  • Guardado de datos adv_vault.
  • Localidad de administrador.
  • Fecha de vencimiento de administrador.
  • Lista de reputaciones con su razones y nombre del que dio la reputación.
  • Requiere amx-mod-1.8.3 o superior.
  • Desactivación automática de administrador al llegar a una reputación bastante mala.
  • amx_cvar RDA_SUSPENSION "Para activar y desactivar la suspensión de administrador por reputación mala"
  • amx_cvar RDA_SUSPENSION_REP "Reputación negativa que se requiere para desactivar un administrador"


Imagenes:
[Imagen: QHK65oM.png]
[Imagen: 0RvxQyT.png]
[Imagen: gIW3wqc.png]
[Imagen: ApXTlhs.png]
[Imagen: 58POuAH.png]


Razones para dar (y/o) quitar reputación:
  • Puedes dar un +rep, si te cae bien el admin o por lo menos si vez que esta haciendo el trabajo
    correcto y se lo ah ganado.
  • Puedes quitar reputación si un admin, esta haciendo su trabajo incorrectamente, osea esta
    usando para mal sus beneficios. Si tiene muchos +Rep ya los dueños se encargarían de ver que
    hacer con ese administrador, en próxima actualizaciones, haré que dependiendo de una cantidad
    de -rep el admin sea suspendido automáticamente, ya eso sera en otra ocasion.

Codigo:
Código PHP:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <adv_vault>
#include <geoip>

#define MAX_ADMINS 100
#define MAX_REP 21
#define AdminRep(%1) (g_data_admin[%1][ReputacionPositiva] + g_data_admin[%1][ReputacionNegativa])

enum _:DataAdminTypes {ReputacionReputacionPositivaReputacionNegativaType_Data[5], Prim_Data[32], Flags_Data[60], Vencimiento_Data[15], Admin_Name[32], Local_Admin[25] };
enum _:DataReps {Razon[15], RepName[32], Rep};
enum _:TypeRep {Positiva 0Negativa};
enum _:TypeSave {RegistrarGuardarCargarEliminar};

new 
gzFile[60];
new 
g_vaultg_vault_rep_adming_vault_reppositiva_adming_vault_repnegativa_adming_vault_name_adming_vault_rep[MAX_REP][DataReps];
new 
g_vault_local_adming_sort;
new 
g_data_admin[MAX_ADMINS][DataAdminTypes];
new 
g_data_rep[MAX_ADMINS][MAX_REP][DataReps];
new 
g_list[33];
new 
pcvar_suspensionpcvar_suspension_rep;

new 
g_Tag[]="^4[TAG]^1";
new 
g_Web[]="www.amxmodx-es.com";
new 
g_base_de_datos[]="db_adminrep";
new 
RazonSuspencion[]="ADMIN SUSPENDIDO - REPUTACION MALISIMA.";

new 
g_item[2][MAX_PLAYERS+1];

public 
plugin_init()
{
    
register_plugin
    
(
        .
plugin_name "AMXX - Reputacion de admin",
        .
version "1.0"
        .
author "Alejandro-."
        
);

    
pcvar_suspension register_cvar("RDA_SUSPENSION""1"); // 0 Apagado - 1 Encendido //
    
pcvar_suspension_rep register_cvar("RDA_SUSPENSION_REP""-10"); 

    
register_say("rep""MenuReputacion");
    
register_say("reputacion""MenuReputacion");
    
register_say("admintop""TopAdmins");
    
register_say("reptop""TopAdmins");
    
register_say("toprep""TopAdmins");

    
register_clcmd("Razon""RazonText");

    
adv_vault_admin(Registrar);
    
Reset_Datas();
    
Load_Admins();
}

/*-----------------------------/ TOP ADMINISTRADORES /---------------------------------*/
public TopAdmins(iId)
{
    new 
iLen 0;
    new 
motd[3500];
    new 
N[32], RPRNkeyindexpj[32], count 0;

    new 
toploop min(adv_vault_sort_numresult(g_vaultg_sort), 10);

    
iLen += formatex(motd[iLen], sizeof motd-iLen,
        
"<body><style>body{color:white;background:#282725;font-family:'Arial',sans-serif;text-align:center}\
        table{border-collapse:collapse;width:70%%}\
        th,td{padding:1%%;}\
        th{font-size:12px;background:#0C285C;border:1px solid #1D1E1E}\
        td{font-size:9px;border-bottom:1px solid #0C285C;background:rgba(0,0,0,0.5)}\
        </style>\
        <h1>TOP 10 ADMINISTRADORES</h1>\
        <table align=center>\
        <tr align=center>\
        <th width=10%%>#\
        <th width=40%%>Nombre\
        <th width=50%%>Reputacion"
);

    for(new 
position 1position <= toploopposition++)
    {
        
keyindex adv_vault_sort_position(g_vaultg_sortposition)

        if(!
adv_vault_get_prepare(g_vaultkeyindex)) 
        continue;

        
RP adv_vault_get_field(g_vaultg_vault_reppositiva_admin);
        
RN adv_vault_get_field(g_vaultg_vault_repnegativa_admin);
        
adv_vault_get_field(g_vaultg_vault_name_adminN31);

        
adv_vault_get_keyname(g_vaultkeyindexpj31);

        if(
RP RN <= 0)
        continue;

        
iLen += formatex(motd[iLen], sizeof motd-iLen"<tr align=center>");
        
iLen += formatex(motd[iLen], sizeof motd-iLen"<td>%d"position);
        if(
N[0])
        
iLen += formatex(motd[iLen], sizeof motd-iLen"<td>%s"N);
        else 
        
iLen += formatex(motd[iLen], sizeof motd-iLen"<td>%s"pj);
        
iLen += formatex(motd[iLen], sizeof motd-iLen"<td>%d"RP RN);
        
count++;
    }
    
iLen += formatex(motd[iLen], sizeof motd-iLen"</table></body>");

    if(!
countclient_print_color(iIdprint_team_default"%s No hay jugadores en el ^4top^1 de administradores."g_Tag);
    else 
show_motdiIdmotd"TOP ADMINISTRADORES");
}

/*-----------------------------/ MENSAJE MODE /---------------------------------*/
public RazonText(iId)
{
    new 
Text[15];
    
read_args(Text14);
    
remove_quotes(Text);
    
trim(Text);

    
set_dhudmessage(2552550, -1.00.3506.03.0);

    if(
strlen(Text) < 5)
    {
        
show_dhudmessage(iId"[ AMXX ] RAZON MUY CORTA.");
        
client_cmd(iId"messagemode ^"Razon^"");
        return 
PLUGIN_HANDLED
    }

    if(
strlen(Text) > 14)
    {
        
show_dhudmessage(iId"[ AMXX ] RAZON MUY LARGA.");
        
client_cmd(iId"messagemode ^"Razon^"");
        return 
PLUGIN_HANDLED;
    }

    
g_data_admin[g_item[0][iId]][Reputacion]++;
    
g_data_admin[g_item[0][iId]][g_item[1][iId] == ReputacionPositiva ReputacionNegativa] = (g_item[1][iId] == g_data_admin[g_item[0][iId]][ReputacionPositiva] + g_data_admin[g_item[0][iId]][ReputacionNegativa] - )

    if(
g_data_admin[g_item[0][iId]][Admin_Name])
    
client_print_color(iIdprint_team_default"%s Diste reputacion ^4%s^1 para el administrador:^3 %s^1 (Razon: %s)"g_Tag, (g_item[1][iId] == "positiva" "negativa" ), g_data_admin[g_item[0][iId]][Admin_Name], Text);
    else 
    
client_print_color(iIdprint_team_default"%s Diste reputacion ^4%s^1 para el administrador:^3 %s^1 (Razon: %s)"g_Tag, (g_item[1][iId] == "positiva" "negativa" ), g_data_admin[g_item[0][iId]][Prim_Data], Text);

    
format(g_data_rep[g_item[0][iId]][g_data_admin[g_item[0][iId]][Reputacion]][Razon], 59Text);
    
get_user_name(iIdg_data_rep[g_item[0][iId]][g_data_admin[g_item[0][iId]][Reputacion]][RepName], 31);
    
g_data_rep[g_item[0][iId]][g_data_admin[g_item[0][iId]][Reputacion]][Rep] = g_item[1][iId];     
    
adv_vault_admin(Guardarg_item[0][iId], g_data_admin[g_item[0][iId]][Prim_Data]);

    if(
get_pcvar_num(pcvar_suspension) == 1)
    {
        if(
AdminRep(g_item[0][iId]) <= get_pcvar_num(pcvar_suspension_rep))
        {
            
Supencion(g_item[0][iId]);

            if(
g_data_admin[g_item[0][iId]][Admin_Name][0])
            
client_print_color(0print_team_default"%s El^4 ADMINISTRADOR^3 %s^1: fue suspendido por reputacion mala."g_Tagg_data_admin[g_item[0][iId]][Admin_Name]);
            else 
            
client_print_color(0print_team_default"%s El^4 ADMINISTRADOR^3 %s^1: fue suspendido por reputacion mala."g_Tagg_data_admin[g_item[0][iId]][Prim_Data]);            
            
adv_vault_admin(Eliminarg_item[0][iId], g_data_admin[g_item[0][iId]][Prim_Data]);
        }    
    }

    
ViewProfile(iId);
    
g_item[0][iId] = 0;
    
g_item[1][iId] = 1;
    return 
PLUGIN_HANDLED;


/*-----------------------------/ CLIENT PUTINSERVER /---------------------------------*/
public client_putinserver(iId)
{
    
g_list[iId] = 0;
    
g_item[0][iId] = 0;
    
g_item[1][iId] = 0;
    new 
name[32];
    
get_user_name(iIdname31);
    new 
steamid[25];
    
get_user_authid(iIdsteamid31);
    new 
ip[18];
    
get_user_ip(iIdip311);

    for(new 
0<MAX_ADMINSi++)
    {
        if(!
g_data_admin[i][Prim_Data])
        continue;

        if(
g_data_admin[i][Admin_Name][0])
        continue;


        if(
equal(nameg_data_admin[i][Prim_Data]) || equal(steamidg_data_admin[i][Prim_Data]) ||  equal(ipg_data_admin[i][Prim_Data]))
        {
            
format(g_data_admin[i][Admin_Name], 31name);
            
get_localname(iIdg_data_admin[i][Local_Admin], charsmax(g_data_admin[][Local_Admin]));
            
adv_vault_admin(Guardarig_data_admin[i][Prim_Data]);
        }
    }
}

/*-----------------------------/ LISTA DE ADMINISTRADORES /---------------------------------*/
public MenuReputacion(iId)
{
    static 
menu;
    new 
count 0;
    new 
szTitle[100];
    new 
szBuffer[100];

    
format(szTitle99"\d%s^n\yADMIN REPUTACION.\w"g_Web);

    
menu menu_create(szTitle"HandlerRepMenu");

    for(new 
0<MAX_ADMINSi++)
    {
        if(!
g_data_admin[i][Prim_Data][0])
        continue;

        if(
g_data_admin[i][Admin_Name])
        
format(szBuffer99"\w%s\d   -              (%d)"g_data_admin[i][Admin_Name], AdminRep(i));
        else 
        
format(szBuffer99"\w%s\d   -              (%d)"g_data_admin[i][Prim_Data], AdminRep(i));
        
menu_additem(menuszBuffer);
        
count++;
    }

    
menu_setprop(menuMPROP_EXITNAME"Salir");
    
menu_setprop(menuMPROP_BACKNAME"Volver");
    
menu_setprop(menuMPROP_NEXTNAME"Siguiente");

    if(
count)
    
menu_display(iIdmenu);
    else 
    
client_print_color(iIdprint_team_default"%s No hay administradores en este servidor."g_Tag);
}

public 
HandlerRepMenu(iIdmenuitem)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    
    
g_item[0][iId] = item;
    
next_menu_admin_rep(iId);
    return 
PLUGIN_HANDLED;
}

/*-----------------------------/ MENU REPUTACION /---------------------------------*/
public next_menu_admin_rep(iId)
{
    static 
menu;
    new 
szTitle[100];

    if(
g_data_admin[g_item[0][iId]][Admin_Name])
    
format(szTitle99"\d%s^n\y%s: \wReputacion (%d)"g_Webg_data_admin[g_item[0][iId]][Admin_Name], AdminRep(g_item[0][iId]));
    else 
    
format(szTitle99"\d%s^n\y%s: \wReputacion (%d)"g_Webg_data_admin[g_item[0][iId]][Prim_Data], AdminRep(g_item[0][iId]));
    
    
menu menu_create(szTitle"Handler_NextRep");

    if(
g_data_admin[g_item[0][iId]][ReputacionPositiva] > 0)
    
menu_additem(menufmt("Positiva \y(+) [%d]"g_data_admin[g_item[0][iId]][ReputacionPositiva]), __menu_makecallback("CalllBackMenu"));
    else 
    
menu_additem(menu"Positiva \y(+)"__menu_makecallback("CalllBackMenu"));
    if(
g_data_admin[g_item[0][iId]][ReputacionNegativa] < 0)
    
menu_additem(menufmt("Negativa \r(-) [%d]^n"g_data_admin[g_item[0][iId]][ReputacionNegativa]), __menu_makecallback("CalllBackMenu"));
    else 
    
menu_additem(menu"Negativa \r(-)^n"__menu_makecallback("CalllBackMenu"));


    
menu_additem(menu"Ver Perfil");

    switch(
g_data_admin[g_item[0][iId]][Reputacion])
    {
        case 
1..10menu_additem(menu"Lista de Reputaciones^n");
        case 
11..20
        {
            
menu_additem(menufmt("Lista de Reputaciones \y(%d/2)^n"g_list[iId] + 1));
        }
    }

    
menu_setprop(menuMPROP_EXITNAME"Volver");
    
menu_display(iIdmenu);
}

public 
CalllBackMenu(iIdmenuitem)
{        
    
    new var = 
false;

    if(
is_user_admin(iId))
    var = 
true;

    new 
name[32];
    
get_user_name(iIdname31);

    new 
count 0;

    for(new 
0<MAX_REPi++)
    {
        if(!
g_data_rep[g_item[0][iId]][i][RepName][0])
        {
            continue;
        }

        
count++;

        if(
count >= MAX_REP)
        var = 
true;

        if(
equal(nameg_data_rep[g_item[0][iId]][i][RepName]))
        {
            var = 
true;
        }
    }

    return (var ? 
ITEM_DISABLED ITEM_ENABLED);
    
}

public 
Handler_NextRep(iIdmenuitem)
{
    if(
item == MENU_EXIT)
    {
        
MenuReputacion(iId);
        return 
PLUGIN_HANDLED;
    }
    
    switch(
item)
    {
        case 
01:
        {
            
g_item[1][iId] = item
            
client_cmd(iId"messagemode ^"Razon^"");
        }
        case 
2ViewProfile(iId);
        case 
3
        {
            
ListRep(iId);

            if(
g_data_admin[g_item[0][iId]][Reputacion] > 10)
            {
                if(!
g_list[iId])
                
g_list[iId]++;
                else 
                
g_list[iId] = 0;
            }
            
next_menu_admin_rep(iId);
        }
    }

    
menu_destroy(menu);
    return 
PLUGIN_HANDLED;
}

/*-----------------------------/ ADMIN PERFIL /---------------------------------*/
public ViewProfile(iId)
{
    new 
motd[1536];
    static 
len;
    
len 0;
    new 
count 0;

    
len += formatex(motd[len], sizeof motd-len,
        
"<body>\
        <style>\
        body{color:white;background:#282725;font-family:'Arial',sans-serif}\
        h1{font-size:15px;background:#0C285C;}\
        .left,.right{width:40%%;color:white;text-align:center;background:rgba(0,0,0,0.5);padding:3%%;}\
        .left a,.right a{color:#0C285C;font-size:15px;text-decoration:none}\
        .left{float:left;margin-left:3%%}\
        .right{float:right;margin-right:3%%}\
        table{font-size:9px}\
        th{background:#0C285C}\
        td{background:rgba(0,0,0,0.3)}\
        .left td{border-bottom:1px solid #0C285C}</style>"
);

    
len += formatex(motd[len], sizeof motd-len"\
        <div class=left>\
        <h1>REPUTACIONES FRECUENTES</h1>"
);

    
len += formatex(motd[len], sizeof motd-len"\
        <table width=100%%>\
        <tr align=center>\
        <th width=35%%>NOMBRE\
        <th width=65%%>RAZON"
);

    for(new 
MAX_REP 1>= 0i--)
    {
        if(!
g_data_rep[g_item[0][iId]][i][Razon][0] || count >= 5)
        continue;
        
        
len += formatex(motd[len], sizeof motd-len"\
            <tr align=center>\
            <td>%s %s\
            <td>%s"
g_data_rep[g_item[0][iId]][i][RepName], g_data_rep[g_item[0][iId]][i][Rep] == "<span style=color:#6FFF00>(+)</span>" "<span style=color:red>(-)</span>"g_data_rep[g_item[0][iId]][i][Razon]);
        
count++;    
    }

    
len += formatex(motd[len], sizeof motd-len"</table></div><div class=right>\
        <h1>ADMINISTRADOR</h1>\
        <table width=100%%>\
        <tr align=center>\
        <th width=25%%>NOMBRE\
        <th width=25%%>ID\
        <th width=50%%>VENCIMIENTO"
);

    new 
form[100];
    if(
g_data_admin[g_item[0][iId]][Admin_Name][0])
    
format(form99g_data_admin[g_item[0][iId]][Admin_Name]);
    else 
    
format(form99"No asignado.");

    
len += formatex(motd[len], sizeof motd-len"\
        <tr align=center>\
        <td>%s\
        <td>%s"
formg_data_admin[g_item[0][iId]][Prim_Data]);

    if(
g_data_admin[g_item[0][iId]][Vencimiento_Data][0])
    
format(form99g_data_admin[g_item[0][iId]][Vencimiento_Data]);
    else 
    
format(form99"Permanente");

    
len += formatex(motd[len], sizeof motd-len"<td>%s"form);
    
    if(
g_data_admin[g_item[0][iId]][Local_Admin][0])
    
format(form99g_data_admin[g_item[0][iId]][Local_Admin][0]);
    else 
    
format(form99"No asignado.");

    
len += formatex(motd[len], sizeof motd-len"</table><table width=100%%>\
        <tr align=center>\
        <th width=70%%>FLAGS\
        <th width=30%%>LOCALIDAD"
);
    
len += formatex(motd[len], sizeof motd-len"\
        <tr align=center>\
        <td>%s\
        <td>%s"
g_data_admin[g_item[0][iId]][Flags_Data], form);
    
len += formatex(motd[len], sizeof motd-len"</table><table width=100%%>\
        <tr align=center>\
        <th width=25%%>REPUTACION"
);
    
len += formatex(motd[len], sizeof motd-len"\
        <tr align=center>\
        <td>Positiva: %d | Negativa: %d | Total: %d</table>"
g_data_admin[g_item[0][iId]][ReputacionPositiva], g_data_admin[g_item[0][iId]][ReputacionNegativa], g_data_admin[g_item[0][iId]][ReputacionPositiva] + g_data_admin[g_item[0][iId]][ReputacionNegativa]);
    
len += formatex(motd[len], sizeof motd-len"");
    
len += formatex(motd[len], sizeof motd-len"</body>");

    if(
g_data_admin[g_item[0][iId]][Admin_Name][0])
    
format(form29"ADMINISTRADOR: %s"g_data_admin[g_item[0][iId]][Admin_Name]);
    else 
    
format(form29"ADMINISTRADOR: %s"g_data_admin[g_item[0][iId]][Prim_Data]);

    
show_motd(iIdmotdform);
}

/*-----------------------------/ LISTA DE REPUTACIONES /---------------------------------*/
public ListRep(iId)
{
    new 
iLen 0;
    new 
motd[3500];
    new 
count 0;
    new 
form[32];

    if(
g_data_admin[g_item[0][iId]][Admin_Name][0])
    
format(form31"%s"g_data_admin[g_item[0][iId]][Admin_Name]);
    else
    
format(form31"%s"g_data_admin[g_item[0][iId]][Prim_Data]);

    
iLen += formatex(motd[iLen], sizeof motd-iLen,
        
"<body><style>body{color:white;background:#282725;font-family:'Arial',sans-serif;text-align:center}\
        table{border-collapse:collapse;width:70%%}\
        th,td{padding:1%%;}\
        th{font-size:12px;background:#0C285C;border:1px solid #1D1E1E}\
        td{font-size:9px;border-bottom:1px solid #0C285C;background:rgba(0,0,0,0.5)}\
        </style>\
        <h1>%s</h1>\
        <table align=center>\
        <tr align=center>\
        <th width=10%%>#\
        <th width=40%%>Nombre\
        <th width=50%%>Razon"
form);

    for(new 
= (g_list[iId] == 11); <=(g_list[iId] == 10 20); i++)
    {
        if(!
g_data_rep[g_item[0][iId]][i][Razon][0])
        continue;

        
count++
        
iLen += formatex(motd[iLen], sizeof motd-iLen"<tr align=center>");
        
iLen += formatex(motd[iLen], sizeof motd-iLen"<td>%d", (g_list[iId] == count count 10));
        
iLen += formatex(motd[iLen], sizeof motd-iLen"<td>%s %s"g_data_rep[g_item[0][iId]][i][RepName], g_data_rep[g_item[0][iId]][i][Rep] == "<span style=color:#6FFF00>(+)</span>" "<span style=color:red>(-)</span>");
        
iLen += formatex(motd[iLen], sizeof motd-iLen"<td>%s"g_data_rep[g_item[0][iId]][i][Razon]);
    }
    
iLen += formatex(motd[iLen], sizeof motd-iLen"</table></body>");

    
show_motdiIdmotdfmt("REPUTACION: %s"form));
}

/*-----------------------------/ RESETEAR DATOS /---------------------------------*/
public Reset_Datas()
{
    for(new 
0<MAX_ADMINSi++)
    {
        
g_data_admin[i][Reputacion] = 0;
        
g_data_admin[i][Type_Data] = '^0';        
        
g_data_admin[i][Prim_Data] = '^0';        
        
g_data_admin[i][Flags_Data] = '^0';        
        
g_data_admin[i][Vencimiento_Data] = '^0';        
        
g_data_admin[i][Local_Admin] = '^0';        
    }
}
/*-----------------------------/ CARGAR ADMINISTRADORES /---------------------------------*/
Load_Admins()
{
    
get_configsdir(gzFilecharsmax(gzFile));
    
formatex(gzFilecharsmax(gzFile), "%s/users.ini"gzFile);

    new 
fsize file_size(gzFile1);
    new 
szDatas[5][60], txtlenreaddata[128];
    new 
admin 0;
    new var = 
false;

    for(new 
line=0;line <=fsize;line++)
    {
        
read_file(gzFilelinereaddata127txtlen);

        if(!
readdata[0] || readdata[0] == ';' || readdata[0] == '/' && readdata[1] == '/' || readdata[0] == '#' || admin == MAX_ADMINS)
        continue;

        
parse(readdataszDatas[0], 32szDatas[1], 10szDatas[2], 50szDatas[3], 59szDatas[4], 15);

        for(new 
0<MAX_ADMINSi++)
        {
            if(
equal(g_data_admin[i][Prim_Data], szDatas[0]))
            var = 
true;
        }

        if(var) continue;

        
formatex(g_data_admin[admin][Prim_Data], charsmax(g_data_admin[][Prim_Data]), szDatas[0]);
        
formatex(g_data_admin[admin][Flags_Data], charsmax(g_data_admin[][Flags_Data]), szDatas[2]);
        
formatex(g_data_admin[admin][Type_Data], charsmax(g_data_admin[][Type_Data]), szDatas[3]);
        
formatex(g_data_admin[admin][Vencimiento_Data], charsmax(g_data_admin[][Vencimiento_Data]), szDatas[4]);
        
adv_vault_admin(Cargaradming_data_admin[admin][Prim_Data]);    
        
admin++
    }      
}

/*-----------------------------/ SUSPENSION /---------------------------------*/
Supencion(const admin)
{
    
get_configsdir(gzFilecharsmax(gzFile));
    
formatex(gzFilecharsmax(gzFile), "%s/users.ini"gzFile);

    new 
writedata[128];

    new 
fopen(gzFile"rt");
    new 
line;
    new 
bool:delete;
    new 
szDatas[5][60];
    new 
data[120];

    while(!
feof(f))
    {
        
fgets(fdatasizeof(data) - 1);
        
parse(dataszDatas[0], 32szDatas[1], 10szDatas[2], 50szDatas[3], 59szDatas[4], 15);

        if(
equal(g_data_admin[admin][Prim_Data], szDatas[0]))
        {
            
delete true;
            break;
        }

        
line++;
    }

    
fclose(f);

    if(
delete
    {
        
write_file(gzFile""line);
        
formatex(writedata127";^"%s^" ^"%s^" ^"%s^" ^"%s^" ^"%s^" ;%s"szDatas[0], szDatas[1], szDatas[2], szDatas[3], szDatas[4], RazonSuspencion);
        
write_file(gzFilewritedataline);
        
server_cmd("amx_reloadadmins");
        
Reset_Datas();
        
Load_Admins();
    }
}

/*-----------------------------/ ADV_VAULT /---------------------------------*/
adv_vault_admin(const TYPE, const admin = -1admin_data[] = "^0")
{
    switch(
TYPE)
    {
        case 
Registrar:
        {
            new 
form[15];
            
g_vault adv_vault_open(g_base_de_datosfalse);
            
g_vault_rep_admin adv_vault_register_field(g_vault"Admin_Reputacion");
            
g_vault_reppositiva_admin adv_vault_register_field(g_vault"Admin_Reppos");
            
g_vault_repnegativa_admin adv_vault_register_field(g_vault"Admin_RepNeg");
            
g_vault_name_admin adv_vault_register_field(g_vault"Admin_nombre"DATATYPE_STRING31);
            
g_vault_local_admin adv_vault_register_field(g_vault"Admin_Local"DATATYPE_STRING24);

            for(new 
0<MAX_REPi++)
            {
                
format(form14"Razon-%d"i+1);
                
g_vault_rep[i][Razon] = adv_vault_register_field(g_vaultformDATATYPE_STRING14);
                
format(form14"Name-%d"i+1);
                
g_vault_rep[i][RepName] = adv_vault_register_field(g_vaultformDATATYPE_STRING32);
                
format(form14"Type-%d"i+1);
                
g_vault_rep[i][Rep] = adv_vault_register_field(g_vaultform);
            }

            
adv_vault_init(g_vault);    
            
g_sort adv_vault_sort_create(g_vaultORDER_DESC02000g_vault_reppositiva_adming_vault_repnegativa_admin);
        }
        case 
Guardar:
        {
            
adv_vault_set_start(g_vault)
            
adv_vault_set_field(g_vaultg_vault_rep_adming_data_admin[admin][Reputacion]);
            
adv_vault_set_field(g_vaultg_vault_reppositiva_adming_data_admin[admin][ReputacionPositiva]);
            
adv_vault_set_field(g_vaultg_vault_repnegativa_adming_data_admin[admin][ReputacionNegativa]);
            
adv_vault_set_field(g_vaultg_vault_name_adming_data_admin[admin][Admin_Name]);
            
adv_vault_set_field(g_vaultg_vault_local_adming_data_admin[admin][Local_Admin]);

            for(new 
0<MAX_REPi++)
            {
                
adv_vault_set_field(g_vaultg_vault_rep[i][Razon], g_data_rep[admin][i][Razon]);                
                
adv_vault_set_field(g_vaultg_vault_rep[i][RepName], g_data_rep[admin][i][RepName]);        
                
adv_vault_set_field(g_vaultg_vault_rep[i][Rep], g_data_rep[admin][i][Rep]);                        
            }
            
adv_vault_set_end(g_vault0admin_data)    
        }
        case 
Cargar:
        {
            if(!
adv_vault_get_prepare(g_vault_admin_data))    
            return;

            
g_data_admin[admin][Reputacion] = adv_vault_get_field(g_vaultg_vault_rep_admin);
            
g_data_admin[admin][ReputacionPositiva] = adv_vault_get_field(g_vaultg_vault_reppositiva_admin);
            
g_data_admin[admin][ReputacionNegativa] = adv_vault_get_field(g_vaultg_vault_repnegativa_admin);
            
adv_vault_get_field(g_vaultg_vault_name_adming_data_admin[admin][Admin_Name], 31);
            
adv_vault_get_field(g_vaultg_vault_local_adming_data_admin[admin][Local_Admin], 24);

            for(new 
0<MAX_REPi++)
            {
                
adv_vault_get_field(g_vaultg_vault_rep[i][Razon], g_data_rep[admin][i][Razon], 59);
                
adv_vault_get_field(g_vaultg_vault_rep[i][RepName], g_data_rep[admin][i][RepName], 31);
                
g_data_rep[admin][i][Rep] = adv_vault_get_field(g_vaultg_vault_rep[i][Rep]);
            }
        }
        case 
Eliminar:
        {
            if(!
adv_vault_get_prepare(g_vault_admin_data))    
                return;
            
            
adv_vault_removekey(g_vault_admin_data)
        }

    }
}

/*-----------------------------/ STOCK /---------------------------------*/
stock register_say(cmd[], fun[])
{
    if(!
cmd[0])
    {
        
log_amx("[AMXX] La funcion en say no fue registrada.");
        return;
    }

    if(!
fun[0])
    {
        
log_amx("[AMXX] La funcion no existe.");
        return;        
    }

    new 
comand[30];
    
format(comand29"say /%s"cmd);
    
register_clcmd(comandfun);
    
format(comand29"say_team /%s"cmd);
    
register_clcmd(comandfun);
    
format(comand29"say %s"cmd);
    
register_clcmd(comandfun);
    
format(comand29"say_team %s"cmd);
    
register_clcmd(comandfun);    


stock get_localname( const id = -1iCountry[ ] = "", const iLen 50)
{
    new 
ip[32];    
    new 
Pais[40];

    
get_user_ip(idip311);

    
geoip_country(ipPais);

    if(
equal(Pais"error"))
    {
        if(
containip"192.168." ) == || equalip"127.0.0.1" ) || containip,"10." ) == ||  containip,"172." ) == 0)
        {
            
Pais "LAN";
        }
        else if(
equal(ip"loopback" ) )
        {
            
Pais "Listen Server";
        }
        else
        {
            
Pais "País Desconocido";
        }
    }
    
formatex(iCountryiLenPais);



Archivos adjuntos
.sma   Descargar AMXX / AMXX-AdminRep.sma (Tamaño: 22.47 KB / Descargas: 47)
Responder
#2
Wow excelente trabajo Corazón
Gran aporte <3

PD: pusiste dos veces : "Localidad de administrador."
“Quien te quiere en su vida, volverá a buscarte”
Qué frase más estúpida
Porque quien te quiere en su vida, jamás se iría.
Responder
#3
en tu motd filtra los < > del nombre de los jugadores
[Imagen: b_350_20_323957_202743_f19a15_111111.png]

(18/11/2014, 05:47 PM)Neeeeeeeeeel.- escribió: Por qué necesitan una guía para todo? Meté mano y que salga lo que salga... es la mejor forma de aprender.

(16/05/2016, 11:08 PM)kikizon2 escribió: No cabe duda que tienen mierda en vez de cerebro, par de pendejos v:
Responder
#4
Gran aporte. Corazón
Corazón I dream of someday being able to have your near. Corazón
[Imagen: 76561199006140497.png]
Responder
#5
créditos.


porque razones puedo dar/quitar rep? agrega eso.
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder
#6
(23/03/2020, 11:38 AM)Hypnotize escribió: créditos.


porque razones puedo dar/quitar rep? agrega eso.

Listo crack.
Responder
#7
Código PHP:
stock get_localname( const id = -1iCountry[ ] = "", const iLen 50)
{
    new 
ip[32];    
    new 
Pais[40];

    
get_user_ip(idip311);

    
geoip_country(ipPais);

    if(
equal(Pais"error"))
    {
        if(
containip"192.168." ) == || equalip"127.0.0.1" ) || containip,"10." ) == ||  containip,"172." ) == 0)
        {
            
Pais "LAN";
        }
        if(
equal(ip"loopback" ) )
        {
            
Pais "Listen Server";
        }
        else
        {
            
Pais "País Desconocido";
        }
    }
    
formatex(iCountryiLenPais);

//País desconocido se debe a que no se encontro ni "LAN" ni "Listen Server", no si no es "loopback".
stock get_localname( const id = -1iCountry[ ] = "", const iLen 50)
{
    new 
ip[32];    
    new 
Pais[40];

    
get_user_ip(idip311);

    
geoip_country(ipPais);

    if(
equal(Pais"error"))
    {
        if(
containip"192.168." ) == || equalip"127.0.0.1" ) || containip,"10." ) == ||  containip,"172." ) == 0)
        {
            
Pais "LAN";
        }
        else if(
equal(ip"loopback" ) )
        {
            
Pais "Listen Server";
        }
        else
        {
            
Pais "País Desconocido";
        }
    }
    
formatex(iCountryiLenPais);

Responder
#8
(24/03/2020, 12:38 PM)Niper.-. escribió:
Código PHP:
stock get_localname( const id = -1iCountry[ ] = "", const iLen 50)
{
    new 
ip[32];    
    new 
Pais[40];

    
get_user_ip(idip311);

    
geoip_country(ipPais);

    if(
equal(Pais"error"))
    {
        if(
containip"192.168." ) == || equalip"127.0.0.1" ) || containip,"10." ) == ||  containip,"172." ) == 0)
        {
            
Pais "LAN";
        }
        if(
equal(ip"loopback" ) )
        {
            
Pais "Listen Server";
        }
        else
        {
            
Pais "País Desconocido";
        }
    }
    
formatex(iCountryiLenPais);

//País desconocido se debe a que no se encontro ni "LAN" ni "Listen Server", no si no es "loopback".
stock get_localname( const id = -1iCountry[ ] = "", const iLen 50)
{
    new 
ip[32];    
    new 
Pais[40];

    
get_user_ip(idip311);

    
geoip_country(ipPais);

    if(
equal(Pais"error"))
    {
        if(
containip"192.168." ) == || equalip"127.0.0.1" ) || containip,"10." ) == ||  containip,"172." ) == 0)
        {
            
Pais "LAN";
        }
        else if(
equal(ip"loopback" ) )
        {
            
Pais "Listen Server";
        }
        else
        {
            
Pais "País Desconocido";
        }
    }
    
formatex(iCountryiLenPais);


Gracias, Lo coloque en la version 2.0 que estoy actualizando ahora.
Responder
#9
Version 2.0 actualizada ahora cuenta con sistema de suspensión de administrador al tener reputación mala
Responder
#10
Excelente aporte. +rep y a favoritos jaja [Imagen: catface3.png]
"Cada golpe es una lección, y cada lección te hace mejor."

[Imagen: b_350_20_000000_8a7300_ffffff_eeff00.png]
[Imagen: 76561198371193937.png]
Responder
#11
+ REP <3
[Imagen: b_560_95_1.png]
Responder
#12
(26/03/2020, 03:39 AM)FoxServersHost escribió: + REP <3

+REP de que pendejo? ni tienes 100 posts.
Responder
#13
(26/03/2020, 04:23 AM)Chema escribió:
(26/03/2020, 03:39 AM)FoxServersHost escribió: + REP <3

+REP de que pendejo? ni tienes 100 posts.

Roflmao Quieto chema
Responder
#14
(26/03/2020, 04:23 AM)Chema escribió:
(26/03/2020, 03:39 AM)FoxServersHost escribió: + REP <3

+REP de que pendejo? ni tienes 100 posts.

amo los finales felices! jajaja
[Imagen: 76561198090851442.png]
Responder
#15
(26/03/2020, 10:19 AM)PredatorFlys escribió:
(26/03/2020, 04:23 AM)Chema escribió:
(26/03/2020, 03:39 AM)FoxServersHost escribió: + REP <3

+REP de que pendejo? ni tienes 100 posts.

amo los finales felices! jajaja
[Imagen: zcsztw-4.png] [Imagen: 6u5fj2-4.png]
[Imagen: linkedin_thumb_image.png][Imagen: 76561198283253977.png][Imagen: linkedin_thumb_image.png]
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)