SACAR REGISTRO DE CUENTAS PLUGIN
#1
Pregunta 
BUENAS MUCHACHOS QISIERA QUE ALGUIEN ME AYUDE ENCONTRE ESTE PLUGIN DE EL MAESTRO FEDERICOMB Y YO QISIERA SACARLE EL REGISTRO DE CUENTA VISTE ESO DE QUE ENTRAS AL SERVER Y TE PIDE CONTRASEÑA LO DEMAS ESTA PERFECTO PERO NO TENGO MUCHA NOCION DE ESE TEMA SI ME AYUDAN SE LOS AGRADECERIA..



Código PHP:
new const NOMBRE[] = "Sistema de estadisticas (ADV_VAULT)";
new const 
VERSION[] = "v1.50 BETA";
new const 
CREADOR[] = "FEDERICOMB";

new const 
Prefijo[] = "[AMXX]";
//new const Prefijo_BAN[] = "[AMXX - BAN]";
new const PREFIJO_SETINFO[] = "_password";
new const 
NOMBRE_MODO[] = "Bienvenido al servidor";

enum {
    
NO_REGISTRADO 0,
    
REGISTRADO,
    
BANEADO,
    
IDENTIFICADO_ESPEC,
    
IDENTIFICADO
};

enum {
    
CUENTA_NUMERO 0,
    
CUENTA,
    
CONTRASENIA,
    
FECHA_REGISTRO,
    
ULTIMA_SESION,
    
TIEMPO_JUGADO,
    
TIEMPO_JUGADO_TT,
    
TIEMPO_JUGADO_CT,
    
DANIO_HECHO_TT,
    
DANIO_RECIBIDO_TT,
    
DANIO_HECHO_CT,
    
DANIO_RECIBIDO_CT,
    
MATADOS,
    
MUERTES,
    
TT_MATADOS,
    
TT_MUERTES,
    
CT_MATADOS,
    
CT_MUERTES,
    
MATADOS_ESPECIAL,
    
MUERTES_ESPECIAL,
    
    
MAX_FIELDS
};

enum {
    
CUENTAS_CREADAS 0,
    
    
MAX_FIELDS2
};

enum {
    
PAG_TOP15 0,
    
PAG_ESTADISTICAS,
    
    
MAX_PAGS
};

enum {
    
HEADSHOTS_ATACANTE 0,
    
KNIFE_ATACANTE,
    
    
MAX_ESPECIAL
};

enum {
    
HEADSHOTS_VICTIMA 0,
    
KNIFE_VICTIMA,
    
    
MAX_ESPECIAL2
};

enum {
    
TERRORISTAS 0,
    
ANTI_TERRORISTAS,
    
    
MAX_TEAM
};

enum (+=100) {
    
TASK_DHUD 3000,
    
TASK_TIME
};

/************* ALGUNAS VARIABLES *************/

new g_ADV_Vault;
new 
g_ADV_Sort;
new 
g_Campos[MAX_FIELDS];

new 
g_ADV_Vault2;
new 
g_Campos2[MAX_FIELDS2];

new 
g_Cuenta_Numero[33];
new 
g_Nombre[33][32];
new 
g_Contrasenia[33][35];

new 
g_Fecha_Registro[33];
new 
g_Ultima_Sesion[33];
new 
g_Estado[33];

new 
g_Conectado[33];
new 
g_EstaVivo[33];
new 
g_ArmaActual[33];

new 
g_danio_hecho[33][MAX_TEAM], g_danio_recibido[33][MAX_TEAM];
new 
g_Matados_T[33], g_Muertes_T[33];
new 
g_Matados[33][MAX_TEAM], g_Muertes[33][MAX_TEAM];
new 
g_Matados_Especial[33][MAX_ESPECIAL], g_Muertes_Especial[33][MAX_ESPECIAL2];

new 
g_TiempoJugado[33][4];
new 
g_TiempoJugado_Team[33][2][4];

new 
g_Cuentas_Creadas;
new 
g_MaxPlayers;

new 
g_menu[512];

new 
g_Pagina_Menu[33][MAX_PAGS];
new 
g_Top15_Seleccionado[33];

/************* FIN ALGUNAS VARIABLES *************/


/************* ALGUNAS CONSTANTES :) *************/

// Minimo de caracteres para la contrasenia
const CARACTERES_CONTRASENIA 4;

const 
VGUI_JOIN_TEAM_NUM             2;
const 
OFFSET_LAST_HIT_GROUP         75;

const 
CSW_SHIELD                    2;

const 
OFFSET_PDATA                    2;
const 
OFFSET_LINUX_WEAPONS             4;
const 
OFFSET_WEAPON_OWNER            41;

const 
KEYSMENU MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0;

// Tiempo en segundos para el guardado automatico y la actualizacion del rank.
const TIEMPO_GUARDADO 300// 300 = 5 minutos.   60 x 5 = 300.

// Estraido de "Weapon_modifier" by KISKE
new const g_weapon_ent_names_all[][] = {"weapon_thighpack""weapon_p228""weapon_shield""weapon_scout""weapon_hegrenade""weapon_xm1014""weapon_c4",
"weapon_mac10""weapon_aug""weapon_smokegrenade""weapon_elite""weapon_fiveseven""weapon_ump45""weapon_sg550""weapon_galil""weapon_famas""weapon_usp",
"weapon_glock18""weapon_awp""weapon_mp5navy""weapon_m249""weapon_m3""weapon_m4a1""weapon_tmp""weapon_g3sg1""weapon_flashbang""weapon_deagle",
"weapon_sg552""weapon_ak47""weapon_knife""weapon_p90""w_backpack"};

/************* FIN ALGUNAS CONSTANTES :) *************/


public plugin_init() {
    
register_plugin(NOMBREVERSIONCREADOR);
    
    
register_logevent("logevent_round_end"2"1=Round_End");
    
    
RegisterHam(Ham_Spawn"player""fw_PlayerSpawn_Post"1);
    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage");
    
RegisterHam(Ham_Killed"player""fw_PlayerKilled");
    for (new 
0CSW_P90+2i++)
    {
        if (
!= && != && != 31)
            
RegisterHam(Ham_Item_Deployg_weapon_ent_names_all[i], "fw_Item_Deploy_Post"1);
    }
    
    
register_forward(FM_ClientUserInfoChanged"fw_ClientUserInfoChanged");
    
    
g_ADV_Vault                    adv_vault_open("Estadisticas"false);
    
g_Campos[CUENTA_NUMERO]        = adv_vault_register_field(g_ADV_Vault"Cuenta_Numero"DATATYPE_INT);
    
g_Campos[CUENTA]            = adv_vault_register_field(g_ADV_Vault"Cuenta"DATATYPE_STRINGsizeof(g_Nombre[]));
    
g_Campos[CONTRASENIA]        = adv_vault_register_field(g_ADV_Vault"Contrasenia"DATATYPE_STRINGsizeof(g_Contrasenia[]));
    
g_Campos[FECHA_REGISTRO]    = adv_vault_register_field(g_ADV_Vault"Fecha_Registro"DATATYPE_INT);
    
g_Campos[ULTIMA_SESION]        = adv_vault_register_field(g_ADV_Vault"Ultima_Sesion"DATATYPE_INT);
    
g_Campos[TIEMPO_JUGADO]        = adv_vault_register_field(g_ADV_Vault"Tiempo_Jugado"DATATYPE_ARRAYsizeof(g_TiempoJugado[]));
    
g_Campos[TIEMPO_JUGADO_TT]    = adv_vault_register_field(g_ADV_Vault"Tiempo_TT"DATATYPE_ARRAYsizeof(g_TiempoJugado_Team[][]));
    
g_Campos[TIEMPO_JUGADO_CT]    = adv_vault_register_field(g_ADV_Vault"Tiempo_CT"DATATYPE_ARRAYsizeof(g_TiempoJugado_Team[][]));
    
g_Campos[DANIO_HECHO_TT]    = adv_vault_register_field(g_ADV_Vault"Danio_TT"DATATYPE_INT);
    
g_Campos[DANIO_RECIBIDO_TT] = adv_vault_register_field(g_ADV_Vault"RDanio_TT"DATATYPE_INT);
    
g_Campos[DANIO_HECHO_CT]     = adv_vault_register_field(g_ADV_Vault"Danio_CT"DATATYPE_INT);
    
g_Campos[DANIO_RECIBIDO_CT] = adv_vault_register_field(g_ADV_Vault"RDanio_CT"DATATYPE_INT);
    
g_Campos[MATADOS]            = adv_vault_register_field(g_ADV_Vault"Matados"DATATYPE_INT);
    
g_Campos[MUERTES]            = adv_vault_register_field(g_ADV_Vault"Muertes"DATATYPE_INT);
    
g_Campos[TT_MUERTES]        = adv_vault_register_field(g_ADV_Vault"TT_Matados"DATATYPE_INT);
    
g_Campos[TT_MATADOS]        = adv_vault_register_field(g_ADV_Vault"TT_Muertes"DATATYPE_INT);
    
g_Campos[CT_MATADOS]        = adv_vault_register_field(g_ADV_Vault"CT_Matados"DATATYPE_INT);
    
g_Campos[CT_MUERTES]        = adv_vault_register_field(g_ADV_Vault"CT_Muertes"DATATYPE_INT);
    
g_Campos[MATADOS_ESPECIAL]    = adv_vault_register_field(g_ADV_Vault"Matados_Especial"DATATYPE_ARRAYsizeof(g_Matados_Especial[]));
    
g_Campos[MUERTES_ESPECIAL]    = adv_vault_register_field(g_ADV_Vault"Muertes_Especial"DATATYPE_ARRAYsizeof(g_Muertes_Especial[]));
    
adv_vault_init(g_ADV_Vault);
    
    
g_ADV_Sort                    adv_vault_sort_create(g_ADV_VaultORDER_DESCTIEMPO_GUARDADO0g_Campos[MATADOS]);
    
    
g_ADV_Vault2                adv_vault_open("Estadisticas_Servidor"false);
    
g_Campos2[CUENTAS_CREADAS]    = adv_vault_register_field(g_ADV_Vault2"Cuentas_Creadas"DATATYPE_INT);
    
adv_vault_init(g_ADV_Vault2);
    
    
Cargar_Datos_Generales();
    
    
register_clcmd("say /rank""Clcmd_Rank");
    
register_clcmd("say_team /rank""Clcmd_Rank");
    
register_clcmd("say /top15""Clcmd_tops15");
    
register_clcmd("say_team /top15""Clcmd_tops15");
    
register_clcmd("say /menu""Clcmd_Menu");
    
register_clcmd("say_team /menu""Clcmd_Menu");
    
    
register_clcmd("chooseteam""Clcmd_Changeteam");
    
register_clcmd("jointeam""Clcmd_Changeteam");
    
    
register_clcmd("CREAR_CONTRASENIA""Crear_Contrasenia");
    
register_clcmd("CONFIRMAR_CONTRASENIA""Confirmar_Contrasenia");
    
register_clcmd("INGRESAR_CONTRASENIA""Ingresar_Contrasenia");
        
    
register_menu("Intro Menu"KEYSMENU"menu_intro");
    
register_menu("Menu Estadisticas Personales"KEYSMENU"menu_estadisticas_personales");
    
    
register_message(get_user_msgid("ShowMenu"), "Message_Showmenu");
    
register_message(get_user_msgid("VGUIMenu"), "Message_Vguimenu");
    
    
g_MaxPlayers get_maxplayers();
    
    
set_task(float(TIEMPO_GUARDADO), "Guardado_Automatico"___"b");
}

Cargar_Datos_Generales() {
    if (!
adv_vault_get_prepare(g_ADV_Vault21)) {
        
adv_vault_set_start(g_ADV_Vault2);
        
        
g_Cuentas_Creadas 0;
        
adv_vault_set_field(g_ADV_Vault2g_Campos2[CUENTAS_CREADAS], g_Cuentas_Creadas);
        
        
adv_vault_set_end(g_ADV_Vault21);
        return;
    }
    
    
g_Cuentas_Creadas adv_vault_get_field(g_ADV_Vault2g_Campos2[CUENTAS_CREADAS]);
}

public 
Guardado_Automatico() {
    for (new 
id 1id <= g_MaxPlayers; ++id) {
        if (!
g_Conectado[id] || g_Estado[id] < IDENTIFICADO)
            continue;
        
        
Guardar_Datos(id);
        
ChatColor(id"!g%s !yTU DATOS HAN SIDO GUARDADOS CORRECTAMENTE."Prefijo);
    }
}

public 
logevent_round_end() {
    for (new 
id 1id <= g_MaxPlayersid++) {
        
Guardar_Datos(id);
    }
}

public 
client_putinserver(id) {
    
get_user_name(idg_Nombre[id], charsmax(g_Nombre[]));
    
    
g_Contrasenia[id][0] = '^0';
    
g_Conectado[id] = true;
    
g_EstaVivo[id] = false;
    
g_Estado[id] = NO_REGISTRADO;
}

public 
client_disconnect(id) {
    
Guardar_Datos(id);
    
g_Conectado[id] = false;
    
g_EstaVivo[id] = false;
    
g_Estado[id] = NO_REGISTRADO;
    
    
remove_task(id+TASK_DHUD);
    
remove_task(id+TASK_TIME);
}

/**********************************************/
/************* SISTEMA DE CUENTAS *************/
/**********************************************/
public Crear_Contrasenia(id) {
    if (
g_Estado[id] != NO_REGISTRADO)
        return;
        
    
read_args(g_Contrasenia[id], charsmax(g_Contrasenia[]));
    
remove_quotes(g_Contrasenia[id]);
    
trim(g_Contrasenia[id]);
    
    if (
count_characters(g_Contrasenia[id]) < CARACTERES_CONTRASENIA || !g_Contrasenia[id][0] || (g_Contrasenia[id][0] == ' ' && (!g_Contrasenia[id][1] || g_Contrasenia[id][1] == ' '))) {
        
client_print(idprint_center"La contraseña tiene que tener al menos %d carácteres"CARACTERES_CONTRASENIA);
        
show_menu_registracion(id);
        
g_Contrasenia[id][0] = '^0';
        
ShowHUD_Message(id_0.000.0000.000.000.00"");
        
client_cmd(id"spk buttons/button2.wav");
        return;
    }
    
    if (
contain_special_characters(g_Contrasenia[id])) {
        
client_print(idprint_center"La contraseña no tiene que tener carácteres especiales");
        
show_menu_registracion(id);
        
g_Contrasenia[id][0] = '^0';
        
ShowHUD_Message(id_0.000.0000.000.000.00"");
        
client_cmd(id"spk buttons/button2.wav");
        return;
    }
    
    if (
equal(g_Contrasenia[id], g_Nombre[id])) {
        
client_print(idprint_center"La contraseña no puede ser igual al nombre de cuenta");
        
show_menu_registracion(id);
        
g_Contrasenia[id][0] = '^0';
        
ShowHUD_Message(id_0.000.0000.000.000.00"");
        
client_cmd(id"spk buttons/button2.wav");
        return;
    }
    
    
client_cmd(id"messagemode ^"CONFIRMAR_CONTRASENIA^"");
    
client_cmd(id"spk buttons/button3.wav");
    
ShowHUD_Message(id, {2550255}, -1.00.200500.01.001.00"REPITA LA CONTRASEÑA^nPARA PODER CONTINUAR");
}

public 
Confirmar_Contrasenia(id) {
    if (
g_Estado[id] != NO_REGISTRADO)
        return;
    
    new 
szPassword[35];
    
read_args(szPasswordcharsmax(szPassword));
    
remove_quotes(szPassword);
    
trim(szPassword);
    
    if (!
equal(szPasswordg_Contrasenia[id])) {
        
client_print(idprint_center"La contraseña ingresada no coincide con la anterior");
        
show_menu_registracion(id);
        
g_Contrasenia[id][0] = '^0';
        
ShowHUD_Message(id_0.000.0000.000.000.00"");
        
client_cmd(id"spk buttons/button2.wav");
        return;
    }
    
    
show_menu_confirmacion(id);
}

public 
Ingresar_Contrasenia(id) {
    if (
g_Estado[id] >= IDENTIFICADO_ESPEC)
        return;
    
    
read_args(g_Contrasenia[id], charsmax(g_Contrasenia[]));
    
remove_quotes(g_Contrasenia[id]);
    
trim(g_Contrasenia[id]);
    
    new 
szPass[35], szBuffer[34];
    
adv_vault_get_prepare(g_ADV_Vault_g_Nombre[id]);
    
adv_vault_get_field(g_ADV_Vaultg_Campos[CONTRASENIA], szPasscharsmax(szPass));
    
md5(g_Contrasenia[id], szBuffer);
    
    if (
equal(szPassszBuffer)) {
        
client_cmd(id"setinfo ^"%s^" ^"%s^""PREFIJO_SETINFOg_Contrasenia[id]);
        
ShowHUD_Message(id_0.000.0000.000.000.00"");
        
Cargar_Datos(id);
    }
    else {
        
ShowHUD_Message(id, {25500}, -1.00.20010.01.001.00"LA CONTRASEÑA INGRESADA^n NO COINCIDE CON LA DE ESTA CUENTA");
        
client_cmd(id"spk buttons/button2.wav");
        
        
g_Contrasenia[id][0] = '^0';
        
show_menu_registracion(id);
    }
}

public 
Clcmd_Changeteam(id) {
    if (
g_Estado[id] < IDENTIFICADO_ESPEC) {
        
show_menu_registracion(id);
        
ShowHUD_Message(id_0.000.0000.000.000.00"");
        return 
PLUGIN_HANDLED;
    }
    if (
g_Estado[id] == IDENTIFICADO_ESPEC) {
        
show_menu_ingresar(id);
        return 
PLUGIN_HANDLED;
    }
    
    return 
PLUGIN_CONTINUE;
}

public 
show_menu_registracion(id) {
    if (!
g_Conectado[id]) return;
    
    
formatex(g_menucharsmax(g_menu), "\y%s \r%s^nBY \y%s"NOMBRE_MODOVERSIONCREADOR);
    new 
menu menu_create(g_menu"menu_registracion");
    
    
menu_additem(menug_Estado[id] == REGISTRADO "\wIDENTIFICARSE" "\dIDENTIFICARSE""1");
    
menu_additem(menu, (g_Estado[id] == REGISTRADO || g_Estado[id] == BANEADO) ? "\dREGISTRARSE" "\wREGISTRARSE""2");
    
    if (
g_Estado[id] == REGISTRADO || g_Estado[id] == BANEADO) {
        
formatex(g_menucharsmax(g_menu), "^n^n\yCUENTA #%s"add_point(g_Cuenta_Numero[id]));
        
menu_addtext(menug_menu0);
    }
    
    
/*if (g_Estado[id] == BANEADO) {
        formatex(g_menu, charsmax(g_menu), "^n^n\wTU CUENTA SE ENCUENTRA BANEADA^n^nEXPIRA\r: \y%s^n\wRAZÓN\r: \y%s", g_Baneado_Hasta[id], g_Razon_Ban[id]);
        menu_addtext(menu, g_menu, 0);
    }*/
    
    
menu_setprop(menuMPROP_EXITMEXIT_NEVER);
    
menu_display(idmenu);
}

public 
menu_registracion(idmenuitem) {
    if (!
g_Conectado[id]) {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    
    
menu_destroy(menu);
    
    if (
g_Estado[id] != BANEADO) {
        if (
g_Estado[id] == REGISTRADO) {
            switch (
item) {
                case 
0: {
                    
client_cmd(id"messagemode ^"INGRESAR_CONTRASENIA^"");
                    
client_cmd(id"spk buttons/button3.wav");
                    
g_Contrasenia[id][0] = '^0';
                    
ShowHUD_Message(id, {0255255}, -1.00.200500.01.001.00"INGRESE LA CONTRASEÑA^n QUE PROTEGE A ESTA CUENTA");
                }
                case 
1: {
                    
client_print(idprint_center"El usuario ya está registrado");
                    
client_cmd(id"spk buttons/button2.wav");
                    
show_menu_registracion(id);
                }
            }
        }
        else {
            switch (
item) {
                case 
0: {
                    
client_print(idprint_center"El usuario no está registrado");
                    
client_cmd(id"spk buttons/button2.wav");
                    
show_menu_registracion(id);
                }
                case 
1: {
                    
client_cmd(id"messagemode ^"CREAR_CONTRASENIA^"");
                    
client_cmd(id"spk buttons/button3.wav");
                    
g_Contrasenia[id][0] = '^0';
                    
ShowHUD_Message(id, {0255255}, -1.00.200500.01.001.00"INGRESE UNA CONTRASEÑA^n QUE PROTEGERÁ A ESTA CUENTA");
                }
            }
        }
    }
    else
        
show_menu_registracion(id);
    
    return 
PLUGIN_HANDLED;
}

show_menu_confirmacion(id) {
    
formatex(g_menucharsmax(g_menu), "CONFIRME LOS DATOS^nPARA PROCEDER A REGISTRARSE\r:^n^n\wCuenta: \y%s^n\wContraseña: \y%s"g_Nombre[id], g_Contrasenia[id]);
    new 
menu menu_create(g_menu"menu_confirmacion");
    
    
menu_additem(menu"Sí, quiero registrarme""1"0);
    
menu_additem(menu"No, deshacer los cambios""2"0);
    
    
menu_setprop(menuMPROP_EXITMEXIT_NEVER);
    
menu_display(idmenu);
    
    
ShowHUD_Message(id_0.000.0000.000.000.00"");
    
client_cmd(id"spk buttons/blip2.wav");
}

public 
menu_confirmacion(idmenuitem) {
    if (!
g_Conectado[id]) {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    
    
menu_destroy(menu);
    switch (
item) {
        case 
0crear_cuenta(id);
        case 
1: {
            
g_Contrasenia[id][0] = '^0';
            
show_menu_registracion(id);
            
ShowHUD_Message(id_0.000.0000.000.000.00"");
        }
    }
    
    return 
PLUGIN_HANDLED;
}

crear_cuenta(id) {
    new 
szBuffer[34];
    
md5(g_Contrasenia[id], szBuffer);
    
    
// Chau get_time()..
    //get_time("%d/%m/%Y - %H:%M:%S", szFechaRegistro, 24);
    
    // Hola get_systime()..
    
g_Fecha_Registro[id] = get_systime();

    
g_Cuentas_Creadas++;
    
g_Cuenta_Numero[id] = g_Cuentas_Creadas;
    
    
g_Ultima_Sesion[id] = 0;
    
arrayset(g_TiempoJugado[id], 0sizeof(g_TiempoJugado[]));
    
arrayset(g_TiempoJugado_Team[id][0], 0sizeof(g_TiempoJugado_Team[][]));
    
arrayset(g_TiempoJugado_Team[id][1], 0sizeof(g_TiempoJugado_Team[][]));
    
arrayset(g_danio_hecho[id], 0sizeof(g_danio_hecho[]));
    
arrayset(g_danio_recibido[id], 0sizeof(g_danio_recibido[]));
    
g_Matados_T[id] = 0;
    
g_Muertes_T[id] = 0;
    
arrayset(g_Matados[id], 0sizeof(g_Matados[]));
    
arrayset(g_Muertes[id], 0sizeof(g_Muertes[]));
    
arrayset(g_Matados_Especial[id], 0sizeof(g_Matados_Especial[]));
    
arrayset(g_Muertes_Especial[id], 0sizeof(g_Muertes_Especial[]));
    
    
// Guardo los datos del usuario nuevo.
    
adv_vault_set_start(g_ADV_Vault);    
    
adv_vault_set_field(g_ADV_Vaultg_Campos[CUENTA_NUMERO], g_Cuenta_Numero[id]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[CUENTA], g_Nombre[id]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[CONTRASENIA], szBuffer);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[FECHA_REGISTRO], g_Fecha_Registro[id]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[ULTIMA_SESION], g_Ultima_Sesion[id]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[TIEMPO_JUGADO], g_TiempoJugado[id]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[TIEMPO_JUGADO_TT], g_TiempoJugado[id][TERRORISTAS]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[TIEMPO_JUGADO_CT], g_TiempoJugado[id][ANTI_TERRORISTAS]);
    
    
adv_vault_set_field(g_ADV_Vaultg_Campos[DANIO_HECHO_TT], g_danio_hecho[id][TERRORISTAS]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[DANIO_RECIBIDO_TT], g_danio_recibido[id][TERRORISTAS]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[DANIO_HECHO_CT], g_danio_hecho[id][ANTI_TERRORISTAS]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[DANIO_RECIBIDO_CT], g_danio_recibido[id][ANTI_TERRORISTAS]);
    
    
adv_vault_set_field(g_ADV_Vaultg_Campos[MATADOS], g_Matados_T[id]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[MUERTES], g_Muertes_T[id]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[TT_MATADOS], g_Matados[id][TERRORISTAS]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[TT_MUERTES], g_Muertes[id][TERRORISTAS]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[CT_MATADOS], g_Matados[id][ANTI_TERRORISTAS]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[CT_MUERTES], g_Muertes[id][ANTI_TERRORISTAS]);
    
    
adv_vault_set_field(g_ADV_Vaultg_Campos[MATADOS_ESPECIAL], g_Matados_Especial[id]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[MUERTES_ESPECIAL], g_Muertes_Especial[id]);
    
adv_vault_set_end(g_ADV_Vault0g_Nombre[id]);
    
    
// Guardo un numero mas a la cantidad de cuentas creadas.
    
adv_vault_set_start(g_ADV_Vault2);    
    
adv_vault_set_field(g_ADV_Vault2g_Campos2[CUENTAS_CREADAS], g_Cuentas_Creadas);    
    
adv_vault_set_end(g_ADV_Vault21);
        
    
ShowHUD_Message(id, {02550}, -1.00.2007.001.001.00"¡ REGISTRO COMPLETADO EXITOSAMENTE !");
    
client_cmd(id"spk buttons/bell1.wav");
    
client_cmd(id"setinfo ^"%s^" ^"%s^""PREFIJO_SETINFOg_Contrasenia[id]);
    
    
Cargar_Datos(id);
    
ChatColor(0"!g%s !yBienvenido al servidor !g%s!y, eres la cuenta registrada !g#%s!y."Prefijog_Nombre[id], add_point(g_Cuenta_Numero[id]));
}

Guardar_Datos(id) {
    if (
g_Estado[id] < IDENTIFICADO)
        return;
    
    
g_Ultima_Sesion[id] = get_systime();
    
    
adv_vault_set_start(g_ADV_Vault);
    
    
adv_vault_set_field(g_ADV_Vaultg_Campos[CUENTA], g_Nombre[id]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[ULTIMA_SESION], g_Ultima_Sesion[id]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[TIEMPO_JUGADO], g_TiempoJugado[id]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[TIEMPO_JUGADO_TT], g_TiempoJugado_Team[id][TERRORISTAS]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[TIEMPO_JUGADO_CT], g_TiempoJugado_Team[id][ANTI_TERRORISTAS]);
    
    
adv_vault_set_field(g_ADV_Vaultg_Campos[DANIO_HECHO_TT], g_danio_hecho[id][TERRORISTAS]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[DANIO_RECIBIDO_TT], g_danio_recibido[id][TERRORISTAS]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[DANIO_HECHO_CT], g_danio_hecho[id][ANTI_TERRORISTAS]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[DANIO_RECIBIDO_CT], g_danio_recibido[id][ANTI_TERRORISTAS]);
    
    
adv_vault_set_field(g_ADV_Vaultg_Campos[MATADOS], g_Matados_T[id]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[MUERTES], g_Muertes_T[id]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[TT_MATADOS], g_Matados[id][TERRORISTAS]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[TT_MUERTES], g_Muertes[id][TERRORISTAS]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[CT_MATADOS], g_Matados[id][ANTI_TERRORISTAS]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[CT_MUERTES], g_Muertes[id][ANTI_TERRORISTAS]);
    
    
adv_vault_set_field(g_ADV_Vaultg_Campos[MATADOS_ESPECIAL], g_Matados_Especial[id]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[MUERTES_ESPECIAL], g_Muertes_Especial[id]);
    
    
adv_vault_set_end(g_ADV_Vault0g_Nombre[id]);
}

Cargar_Datos(id) {
    if (!
adv_vault_get_prepare(g_ADV_Vault_g_Nombre[id]))
        return;

    
g_Fecha_Registro[id]                    = adv_vault_get_field(g_ADV_Vaultg_Campos[FECHA_REGISTRO]);
    
g_Ultima_Sesion[id]                        = adv_vault_get_field(g_ADV_Vaultg_Campos[ULTIMA_SESION]);
    
adv_vault_get_field(g_ADV_Vaultg_Campos[TIEMPO_JUGADO], g_TiempoJugado[id], sizeof(g_TiempoJugado[]));
    
adv_vault_get_field(g_ADV_Vaultg_Campos[TIEMPO_JUGADO_TT], g_TiempoJugado_Team[id][TERRORISTAS], sizeof(g_TiempoJugado_Team[][]));
    
adv_vault_get_field(g_ADV_Vaultg_Campos[TIEMPO_JUGADO_CT], g_TiempoJugado_Team[id][ANTI_TERRORISTAS], sizeof(g_TiempoJugado_Team[][]));
    
    
g_danio_hecho[id][TERRORISTAS]             = adv_vault_get_field(g_ADV_Vaultg_Campos[DANIO_HECHO_TT]);
    
g_danio_recibido[id][TERRORISTAS]         = adv_vault_get_field(g_ADV_Vaultg_Campos[DANIO_RECIBIDO_TT]);
    
g_danio_hecho[id][ANTI_TERRORISTAS]        = adv_vault_get_field(g_ADV_Vaultg_Campos[DANIO_HECHO_CT]);
    
g_danio_recibido[id][ANTI_TERRORISTAS]     = adv_vault_get_field(g_ADV_Vaultg_Campos[DANIO_RECIBIDO_CT]);
    
    
g_Matados_T[id]                         = adv_vault_get_field(g_ADV_Vaultg_Campos[MATADOS]);
    
g_Muertes_T[id]                         = adv_vault_get_field(g_ADV_Vaultg_Campos[MUERTES]);
    
g_Matados[id][TERRORISTAS]                 = adv_vault_get_field(g_ADV_Vaultg_Campos[TT_MATADOS]);
    
g_Muertes[id][TERRORISTAS]                 = adv_vault_get_field(g_ADV_Vaultg_Campos[TT_MUERTES]);
    
g_Matados[id][ANTI_TERRORISTAS]            = adv_vault_get_field(g_ADV_Vaultg_Campos[CT_MATADOS]);
    
g_Muertes[id][ANTI_TERRORISTAS]         = adv_vault_get_field(g_ADV_Vaultg_Campos[CT_MUERTES]);
    
    
adv_vault_get_field(g_ADV_Vaultg_Campos[MATADOS_ESPECIAL], g_Matados_Especial[id], sizeof(g_Matados_Especial[]));
    
adv_vault_get_field(g_ADV_Vaultg_Campos[MUERTES_ESPECIAL], g_Muertes_Especial[id], sizeof(g_Muertes_Especial[]));
    
    
g_Estado[id] = IDENTIFICADO_ESPEC;
    
show_menu_ingresar(id);
}

public 
Bienvenida(id) {
    
id -= TASK_DHUD;
    
    if (!
g_Conectado[id])
        return;
        
    if (
g_Ultima_Sesion[id]) {
        new 
g_Posiciong_Posicion adv_vault_sort_key(g_ADV_Vaultg_ADV_Sort0g_Nombre[id]);
        
        
set_dhudmessage(2551270, -1.00.3700.08.01.01.0);
        
        if (
g_Posicion)
            
show_dhudmessage(id"¡BIENVENIDO NUEVAMENTE %s!^nRANK %d / %d"g_Nombre[id], g_Posiciong_Cuentas_Creadas);
        else
            
show_dhudmessage(id"¡BIENVENIDO NUEVAMENTE %s!"g_Nombre[id]);
    }
}
    
show_menu_ingresar(id) {
    static 
lenlen 0;
    new 
szBuffer[30], szBuffer2[30];
    
    
// Gracias Neeeeeeeeeel.-
    
new const szUnidad[][] = {"año""mes""día""hora""minuto"};
    new const 
szDividir[] = {60*60*24*36560*60*24*3060*60*2460*6060};

    new 
FechaActual get_systime();

    new 
DiasRegistrado FechaActual g_Fecha_Registro[id];    
    for (new 
0sizeof(szDividir); ++i) {
        if (
DiasRegistrado >= szDividir[i]) {
            new 
num = (DiasRegistrado szDividir[i]);
            
            if (!
num) {
                
szBuffer[0] = '^0';
            }
            else {
                if (
== 1) {
                    
formatex(szBuffercharsmax(szBuffer), " (Hace %d %s%s)"numszUnidad[i], num == "" "es");
                }
                else {
                    
formatex(szBuffercharsmax(szBuffer), " (Hace %d %s%s)"numszUnidad[i], num == "" "s");
                }
            }
            
            break;
        }
    }
    
    new 
AnioMesDiaHoraMinutoSegundo;
    
UnixToTime(g_Fecha_Registro[id], AnioMesDiaHoraMinutoSegundoUT_TIMEZONE_SERVER);
    
    new 
szUltimaSesion[64];    
    if (!
g_Ultima_Sesion[id])
        
formatex(szUltimaSesioncharsmax(szUltimaSesion), "\yNUNCA");
    else {
        new 
Anio2Mes2Dia2Hora2Minuto2Segundo2;
        
UnixToTime(g_Ultima_Sesion[id], Anio2Mes2Dia2Hora2Minuto2Segundo2UT_TIMEZONE_SERVER);
        
        new 
iUltimaSesion FechaActual g_Ultima_Sesion[id];    
        for (new 
0sizeof(szDividir); ++i) {
            if (
iUltimaSesion >= szDividir[i]) {
                new 
num = (iUltimaSesion szDividir[i]);
                
                if (!
num) {
                    
szBuffer[0] = '^0';
                }
                else {
                    if (
== 1) {
                        
formatex(szBuffer2charsmax(szBuffer2), " (Hace %d %s%s)"numszUnidad[i], num == "" "es");
                    }
                    else {
                        
formatex(szBuffer2charsmax(szBuffer2), " (Hace %d %s%s)"numszUnidad[i], num == "" "s");
                    }
                }
                
                break;
            }
        }
        
        
formatex(szUltimaSesioncharsmax(szUltimaSesion), "\y%02d/%02d/%d \r- \y%02d:%02d:%02d%s"Dia2Mes2Anio2Hora2Minuto2Segundo2szBuffer2);
    }
    
    
len formatex(g_menu[len], charsmax(g_menu), "\y%s - CUENTA #%s^n^n"g_Nombre[id], add_point(g_Cuenta_Numero[id]));
    
    
len += formatex(g_menu[len], charsmax(g_menu) - len"\wREGISTRO\r: \y%02d/%02d/%d \r- \y%02d:%02d:%02d%s^n\wÚLTIMA CONEXIÓN\r: %s^n^n"DiaMesAnioHoraMinutoSegundoszBufferszUltimaSesion);
    
len += formatex(g_menu[len], charsmax(g_menu) - len"\yTIEMPO JUGADO\r: \y%d días, %d horas, %d minutos^n^n"g_TiempoJugado[id][0], g_TiempoJugado[id][1], g_TiempoJugado[id][2]);
    
    
len += formatex(g_menu[len], charsmax(g_menu) - len"\r1. \w¡ENTRAR A JUGAR!");
    
    
show_menu(idKEYSMENUg_menu, -1"Intro Menu");
}

public 
menu_intro(iditem) {
    if (
item == 0) {
        
entrar_a_jugar(id);
        return 
PLUGIN_HANDLED;
    }
    
    
show_menu_ingresar(id);
    return 
PLUGIN_HANDLED;
}

entrar_a_jugar(id) {
    
g_Estado[id] = IDENTIFICADO;
    
engclient_cmd(id"chooseteam");
    
    
set_task(5.0"Bienvenida"id+TASK_DHUD);
    
set_task(1.0"Tiempo_jugado_id"id+TASK_TIME__"b");
    
    
// Aun no terminado, en construccion.
}

show_menu_auto_loggin(id) {
    if (
adv_vault_get_prepare(g_ADV_Vault_g_Nombre[id])) {
        
g_Cuenta_Numero[id] = adv_vault_get_field(g_ADV_Vaultg_Campos[CUENTA_NUMERO]);
        
        new 
szAutoPassBuffer[35], szAutoPass[35], szBuffer[34];
        
get_user_info(idPREFIJO_SETINFOszAutoPasscharsmax(szAutoPass));
        
md5(szAutoPassszBuffer);
        
adv_vault_get_field(g_ADV_Vaultg_Campos[CONTRASENIA], szAutoPassBuffercharsmax(szAutoPassBuffer));
        
        if (
equal(szAutoPassBufferszBuffer)) {
            
g_Estado[id] = REGISTRADO;
            
            
Cargar_Datos(id);
        }
        else {
            
g_Estado[id] = REGISTRADO;
            
show_menu_registracion(id);
        }
    }
    else if (!
adv_vault_get_prepare(g_ADV_Vault_g_Nombre[id])) {
        
g_Estado[id] = NO_REGISTRADO;
        
show_menu_registracion(id);
    }
}


/**********************************************/
/************* SISTEMA DE CUENTAS *************/
/**********************************************/

public Message_Vguimenu(msg_idmsg_destmsg_entity) {
    if (
get_msg_arg_int(1) != VGUI_JOIN_TEAM_NUM)
        return 
PLUGIN_CONTINUE;
        
    if (
g_Estado[msg_entity] == NO_REGISTRADO) {
        
show_menu_auto_loggin(msg_entity);
        return 
PLUGIN_HANDLED;
    }
    
    if (
g_Estado[msg_entity] == BANEADO)
        return 
PLUGIN_HANDLED;
    
    return 
PLUGIN_CONTINUE;
}
public 
Message_Showmenu(msg_idmsg_destmsg_entity) {
    static 
Menu_Codigo[32];
    
get_msg_arg_string(4Menu_Codigocharsmax(Menu_Codigo));
    
    if (
equal(Menu_Codigo"#Team_Select") || equal(Menu_Codigo"#Team_Select_Spect") || equal(Menu_Codigo"#IG_Team_Select") || equal(Menu_Codigo"#IG_Team_Select_Spect")) {
        if (
g_Estado[msg_entity] == NO_REGISTRADO) {
            
show_menu_auto_loggin(msg_entity);
            return 
PLUGIN_HANDLED;
        }
        
        if (
g_Estado[msg_entity] == BANEADO)
            return 
PLUGIN_HANDLED;
    }
    return 
PLUGIN_CONTINUE;
}

public 
Tiempo_jugado_id(id) {
    
id -= TASK_TIME;
    
    
/************ TIEMPO JUGADO ************/
    
if (g_TiempoJugado[id][3] > 58) { // Segundos
        
g_TiempoJugado[id][3] = 0;
        
g_TiempoJugado[id][2]++;
    }
    else
        
g_TiempoJugado[id][3]++;
    
    if (
g_TiempoJugado[id][2] > 59) { // Minutos
        
g_TiempoJugado[id][2] = 0;
        
g_TiempoJugado[id][1]++; // Horas
    
}
    
    if (
g_TiempoJugado[id][1] > 23) {
        
g_TiempoJugado[id][1] = 0;
        
g_TiempoJugado[id][0]++; // Dias
    
}
    
/************ TIEMPO JUGADO ************/
    
    
    /************ TIEMPO JUGADO COMO.. (SIEMPRE Y CUANDO ESTE VIVO) ************/
    
if (g_EstaVivo[id]) {
        static 
User_TeamUser_Team = (_:cs_get_user_team(id) - 1);
        
        if (
g_TiempoJugado_Team[id][User_Team][3] > 58) { // Segundos
            
g_TiempoJugado_Team[id][User_Team][3] = 0;
            
g_TiempoJugado_Team[id][User_Team][2]++;
        }
        else
            
g_TiempoJugado_Team[id][User_Team][3]++;
        
        if (
g_TiempoJugado_Team[id][User_Team][2] > 59) { // Minutos
            
g_TiempoJugado_Team[id][User_Team][2] = 0;
            
g_TiempoJugado_Team[id][User_Team][1]++; // Horas
        
}
        
        if (
g_TiempoJugado_Team[id][User_Team][1] > 23) {
            
g_TiempoJugado_Team[id][User_Team][1] = 0;
            
g_TiempoJugado_Team[id][User_Team][0]++; // Dias
        
}
    }
    
/************ TIEMPO JUGADO COMO.. ************/
}


public 
fw_PlayerSpawn_Post(id) {
    if (!
is_user_alive(id))
        return;
    
    
g_EstaVivo[id] = true;
}

public 
fw_TakeDamage(victiminflictorattackerFloat:damagedamage_type) {
    if (
victim == attacker || !g_Conectado[attacker])
        return 
HAM_IGNORED;
    
    if (
get_cvar_num("mp_friendlyfire") == && cs_get_user_team(victim) == cs_get_user_team(attacker))
        return 
HAM_SUPERCEDE;
    
    static 
iDamageiDamage floatround(damage);
        
    switch (
cs_get_user_team(victim)) {
        case 
CS_TEAM_Tg_danio_recibido[victim][TERRORISTAS] += iDamage;
        case 
CS_TEAM_CTg_danio_recibido[victim][ANTI_TERRORISTAS] += iDamage;
    }
    
    switch (
cs_get_user_team(attacker)) {
        case 
CS_TEAM_Tg_danio_hecho[attacker][TERRORISTAS] += iDamage;
        case 
CS_TEAM_CTg_danio_hecho[attacker][ANTI_TERRORISTAS] += iDamage;
    }
    
    return 
HAM_IGNORED;
}

public 
fw_PlayerKilled(victimattackershouldgib) {
    static 
selfkill;
    
selfkill = (victim == attacker || !is_user_connected(attacker)) ? true false;
    
    
g_EstaVivo[victim] = false;
    
    if (
selfkill) return;
    
    if (
get_pdata_int(victimOFFSET_LAST_HIT_GROUP) == HIT_HEAD) {
        
g_Matados_Especial[attacker][HEADSHOTS_ATACANTE]++;
        
g_Muertes_Especial[victim][HEADSHOTS_VICTIMA]++;
    }
    
    if (
g_ArmaActual[attacker] == CSW_KNIFE) {
        
g_Matados_Especial[attacker][KNIFE_ATACANTE]++;
        
g_Muertes_Especial[victim][KNIFE_VICTIMA]++;
    }
    
    switch (
cs_get_user_team(victim)) {
        case 
CS_TEAM_T: {
            
g_Matados[attacker][TERRORISTAS]++;
            
g_Muertes[victim][TERRORISTAS]++;
        }
        case 
CS_TEAM_CT: {
            
g_Matados[attacker][ANTI_TERRORISTAS]++;
            
g_Muertes[victim][ANTI_TERRORISTAS]++;
        }
    }
    
    
g_Matados_T[attacker]++;
    
g_Muertes_T[victim]++;
}

public 
fw_Item_Deploy_Post(__weaponEnt) {
    if (!
pev_valid(__weaponEnt))
        return 
HAM_IGNORED;
        
    static 
id
    
id fm_get_weapon_ent_owner(__weaponEnt);
    
    if (!
pev_valid(id))
        return 
HAM_IGNORED;
    
    static 
weaponid;
    
weaponid cs_get_weapon_id(__weaponEnt);
    
    if (
weaponid == CSW_C4 || 
    
weaponid == CSW_SHIELD ||
    
weaponid == CSW_HEGRENADE ||
    
weaponid == CSW_FLASHBANG ||
    
weaponid == CSW_SMOKEGRENADE)
        
g_ArmaActual[id] = 0;
    else
        
g_ArmaActual[id] = weaponid;
        
    return 
HAM_IGNORED;
}

public 
fw_ClientUserInfoChanged(id) {
    if (!
g_Conectado[id])
        return 
FMRES_IGNORED;
    
    static 
NombreNuevo[32], NombreViejo[32];
    
get_user_name(idNombreViejocharsmax(NombreViejo));
    
get_user_info(id"name"NombreNuevocharsmax(NombreNuevo));
    
    if (
equal(NombreNuevoNombreViejo))
        return 
FMRES_IGNORED;
    
    if (
g_Estado[id] > REGISTRADO) {
        
set_user_info(id"name"NombreViejo);
        
ChatColor(id"!g%s !yNo podes cambiar el nombre estando dentro del servidor."Prefijo);
        
console_print(id"%s No podes cambiar el nombre estando dentro del servidor."Prefijo);
        return 
FMRES_IGNORED;
    }
    
    
copy(g_Nombre[id], charsmax(g_Nombre[]), NombreNuevo);
    
show_menu_auto_loggin(id);
    
    return 
FMRES_SUPERCEDE;
}


/***********************************************/
/************ COMANDOS SAY/SAY_TEAM ************/
/***********************************************/
public Clcmd_Rank(id) {
    if (
g_Estado[id] < IDENTIFICADO_ESPEC)
        return 
PLUGIN_HANDLED;
    
    new 
g_Posicion;
    
g_Posicion adv_vault_sort_key(g_ADV_Vaultg_ADV_Sort0g_Nombre[id]);
    
    if (!
g_Posicion) {
        
ChatColor(id"!g%s !yAún no estás en el rank del servidor."Prefijo);
        
ChatColor(id"!g%s !yLas estadisticas se actualizan cada !g%d minutos!y, a más tardar en un cambio de mapa."Prefijo, (TIEMPO_GUARDADO 60));
    }
    else
        
ChatColor(id"!g%s !yRanking !g%d !y/ !g%d!y."Prefijog_Posiciong_Cuentas_Creadas);
    
    return 
PLUGIN_HANDLED;
}

public 
Clcmd_tops15(id) {
    if (
g_Estado[id] < IDENTIFICADO_ESPEC)
        return 
PLUGIN_HANDLED;
        
    new 
menu menu_create("TOPS 15""menu_tops");
    
    
menu_additem(menu"GENERAL^n""1");
    
menu_additem(menu"CTs MATADOS""2");
    
menu_additem(menu"TTs MATADOS""3");
    
menu_additem(menu"DAÑO HECHO SIENDO CT""4");
    
menu_additem(menu"DAÑO HECHO SIENDO TT""5");
    
    
menu_setprop(menuMPROP_BACKNAME"Atrás");
    
menu_setprop(menuMPROP_NEXTNAME"Siguiente");
    
menu_setprop(menuMPROP_EXITNAME"Volver");
    
menu_display(idmenu0);
    return 
PLUGIN_HANDLED;
}

public 
menu_tops(idmenuitem) {
    if (!
g_Conectado[id]) {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    
    if (
item == MENU_EXIT) {
        
menu_destroy(menu);
        
Clcmd_Menu(id);
        return 
PLUGIN_HANDLED;
    }
    
    
menu_destroy(menu);
    
g_Top15_Seleccionado[id] = item;
    
Show_Top_Seleccionado(id);
    return 
PLUGIN_HANDLED;
}

Show_Top_Seleccionado(id) {
    new 
menug_Sort_MenuNombre[32], Top15LoopKeyIDPosision_ID[2];
    
    switch (
g_Top15_Seleccionado[id]) {
        case 
0: {
            
menu menu_create("GENERAL""top15_seleccionado");
            
            new 
MatadosMuertes;
            
            
g_Sort_Menu    adv_vault_sort_create(g_ADV_VaultORDER_DESCTIEMPO_GUARDADO0g_Campos[MATADOS], g_Campos[MUERTES]);
            
            
Top15Loop min(adv_vault_sort_numresult(g_ADV_Vaultg_Sort_Menu), 15);
            
            for (new 
Pos 1Pos <= Top15Loop; ++Pos) {
                
KeyID adv_vault_sort_position(g_ADV_Vaultg_Sort_MenuPos);
                
                if (!
adv_vault_get_prepare(g_ADV_VaultKeyID))
                    continue;
                
                
Matados adv_vault_get_field(g_ADV_Vaultg_Campos[MATADOS]);
                
Muertes adv_vault_get_field(g_ADV_Vaultg_Campos[MUERTES]);
                
                
adv_vault_get_keyname(g_ADV_VaultKeyIDNombrecharsmax(Nombre));
                
                
formatex(g_menucharsmax(g_menu), "%s\r: \y%s \w/ \y%s"Nombreadd_point(Matados), add_point(Muertes));
                
num_to_str(PosPosision_IDcharsmax(Posision_ID));
                
menu_additem(menug_menuPosision_ID);
            }
        }
        case 
1: {
            
menu menu_create("CTs MATADOS""top15_seleccionado");
            
            new 
CTMatados;
            
            
g_Sort_Menu    adv_vault_sort_create(g_ADV_VaultORDER_DESCTIEMPO_GUARDADO0g_Campos[CT_MATADOS]);
            
            
Top15Loop min(adv_vault_sort_numresult(g_ADV_Vaultg_Sort_Menu), 15);
            
            for (new 
Pos 1Pos <= Top15Loop; ++Pos) {
                
KeyID adv_vault_sort_position(g_ADV_Vaultg_Sort_MenuPos);
                
                if (!
adv_vault_get_prepare(g_ADV_VaultKeyID))
                    continue;
                
                
CTMatados adv_vault_get_field(g_ADV_Vaultg_Campos[CT_MATADOS]);
                
                
adv_vault_get_keyname(g_ADV_VaultKeyIDNombrecharsmax(Nombre));
                
                
formatex(g_menucharsmax(g_menu), "%s\r: \y%s"Nombreadd_point(CTMatados));
                
num_to_str(PosPosision_IDcharsmax(Posision_ID));
                
menu_additem(menug_menuPosision_ID);
            }
        }
        case 
2: {
            
menu menu_create("TTs MATADOS""top15_seleccionado");
            
            new 
TTMatados;
            
            
g_Sort_Menu    adv_vault_sort_create(g_ADV_VaultORDER_DESCTIEMPO_GUARDADO0g_Campos[TT_MATADOS]);
            
            
Top15Loop min(adv_vault_sort_numresult(g_ADV_Vaultg_Sort_Menu), 15);
            
            for (new 
Pos 1Pos <= Top15Loop; ++Pos) {
                
KeyID adv_vault_sort_position(g_ADV_Vaultg_Sort_MenuPos);
                
                if (!
adv_vault_get_prepare(g_ADV_VaultKeyID))
                    continue;
                
                
TTMatados adv_vault_get_field(g_ADV_Vaultg_Campos[TT_MATADOS]);
                
                
adv_vault_get_keyname(g_ADV_VaultKeyIDNombrecharsmax(Nombre));
                
                
formatex(g_menucharsmax(g_menu), "%s\r: \y%s"Nombreadd_point(TTMatados));
                
num_to_str(PosPosision_IDcharsmax(Posision_ID));
                
menu_additem(menug_menuPosision_ID);
            }
        }
        case 
3: {
            
menu menu_create("DAÑO HECHO SIENDO CT""top15_seleccionado");
            
            new 
CTDanio;
            
            
g_Sort_Menu    adv_vault_sort_create(g_ADV_VaultORDER_DESCTIEMPO_GUARDADO0g_Campos[DANIO_HECHO_CT]);
            
            
Top15Loop min(adv_vault_sort_numresult(g_ADV_Vaultg_Sort_Menu), 15);
            
            for (new 
Pos 1Pos <= Top15Loop; ++Pos) {
                
KeyID adv_vault_sort_position(g_ADV_Vaultg_Sort_MenuPos);
                
                if (!
adv_vault_get_prepare(g_ADV_VaultKeyID))
                    continue;
                
                
CTDanio adv_vault_get_field(g_ADV_Vaultg_Campos[DANIO_HECHO_CT]);
                
                
adv_vault_get_keyname(g_ADV_VaultKeyIDNombrecharsmax(Nombre));
                
                
formatex(g_menucharsmax(g_menu), "%s\r: \y%s"Nombreadd_point(CTDanio));
                
num_to_str(PosPosision_IDcharsmax(Posision_ID));
                
menu_additem(menug_menuPosision_ID);
            }
        }
        case 
4: {
            
menu menu_create("DAÑO HECHO SIENDO TT""top15_seleccionado");
            
            new 
TTDanio;
            
            
g_Sort_Menu    adv_vault_sort_create(g_ADV_VaultORDER_DESCTIEMPO_GUARDADO0g_Campos[DANIO_HECHO_TT]);
            
            
Top15Loop min(adv_vault_sort_numresult(g_ADV_Vaultg_Sort_Menu), 15);
            
            for (new 
Pos 1Pos <= Top15Loop; ++Pos) {
                
KeyID adv_vault_sort_position(g_ADV_Vaultg_Sort_MenuPos);
                
                if (!
adv_vault_get_prepare(g_ADV_VaultKeyID))
                    continue;
                
                
TTDanio adv_vault_get_field(g_ADV_Vaultg_Campos[DANIO_HECHO_TT]);
                
                
adv_vault_get_keyname(g_ADV_VaultKeyIDNombrecharsmax(Nombre));
                
                
formatex(g_menucharsmax(g_menu), "%s\r: \y%s"Nombreadd_point(TTDanio));
                
num_to_str(PosPosision_IDcharsmax(Posision_ID));
                
menu_additem(menug_menuPosision_ID);
            }
        }
    }
    
    
adv_vault_sort_destroy(g_ADV_Vaultg_Sort_Menu);
    
    
menu_setprop(menuMPROP_BACKNAME"Atrás");
    
menu_setprop(menuMPROP_NEXTNAME"Siguiente");
    
menu_setprop(menuMPROP_EXITNAME"Volver");
    
menu_display(idmenu0);
}

public 
top15_seleccionado(idmenuitem) {
    if (!
g_Conectado[id]) {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    
    if (
item == MENU_EXIT) {
        
menu_destroy(menu);
        
Clcmd_tops15(id);
        return 
PLUGIN_HANDLED;
    }
    
    
Show_Top_Seleccionado(id);
    return 
PLUGIN_HANDLED;
}
    

public 
Clcmd_Menu(id) {
    if (
g_Estado[id] < IDENTIFICADO_ESPEC)
        return 
PLUGIN_HANDLED;
        
    new 
menu menu_create("\yMENÚ DEL USUARIO""menu_estadisticas");
    
    
menu_additem(menu"ESTADÍSTICAS PERSONALES""1");
    
menu_additem(menu"ESTADÍSTICAS DE TUS ARMAS^n""2");
    
menu_additem(menu"RANK""3");
    
menu_additem(menu"TOPS 15^n""4");
    
    
formatex(g_menucharsmax(g_menu), "\yTIEMPO JUGADO\r: \y %d días, %d horas, %d minutos^n^nCUENTA #%s"g_TiempoJugado[id][0], g_TiempoJugado[id][1], g_TiempoJugado[id][2], add_point(g_Cuenta_Numero[id]));
    
menu_addtext(menug_menu);
    
    
menu_setprop(menuMPROP_EXITNAME"SALIR");
    
menu_display(idmenu0);
    return 
PLUGIN_HANDLED;
}
    
public 
menu_estadisticas(idmenuitem) {
    if (!
g_Conectado[id] || item == MENU_EXIT) {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    
    
menu_destroy(menu);
    switch (
item) {
        case 
0show_menu_estadisticas(id);
        case 
1ChatColor(id"!g%s !yEN CONSTRUCCIÓN :)"Prefijo);
        case 
2Clcmd_Rank(id);
        case 
3Clcmd_tops15(id);
    }
    
    return 
PLUGIN_HANDLED;
}
/***********************************************/
/************ COMANDOS SAY/SAY_TEAM ************/
/***********************************************/


show_menu_estadisticas(id) {
    static 
lenlen 0;
    
    
len formatex(g_menu[len], charsmax(g_menu), "\yMÍS ESTADÍSTICAS \r[%d / 3]^n^n"g_Pagina_Menu[id][PAG_ESTADISTICAS] + 1);
    
    switch (
g_Pagina_Menu[id][PAG_ESTADISTICAS]) {
        case 
0: {
            
len += formatex(g_menu[len], charsmax(g_menu) - len"\wTotal de enemigos matados\r: \y%s^n\wTotal de veces muerto\r: \y%s^n^n",
            
add_point(g_Matados_T[id]), add_point(g_Muertes_T[id]));
            
            
len += formatex(g_menu[len], charsmax(g_menu) - len"\wAnti-Terroristas matados\r: \y%s^n\wVeces muerto como Anti-Terrorista\r: \y%s^n",
            
add_point(g_Matados[id][ANTI_TERRORISTAS]), add_point(g_Muertes[id][ANTI_TERRORISTAS]));
            
            
len += formatex(g_menu[len], charsmax(g_menu) - len"\wTerroristas matados\r: \y%s^n\wVeces muerto como Terrorista\r: \y%s^n",
            
add_point(g_Matados[id][TERRORISTAS]), add_point(g_Muertes[id][TERRORISTAS]));
            
            
len += formatex(g_menu[len], charsmax(g_menu) - len"\wEnemigos matados por HS\r: \y%s^n\wVeces muerto por HS\r: \y%s^n^n",
            
add_point(g_Matados_Especial[id][HEADSHOTS_ATACANTE]), add_point(g_Muertes_Especial[id][HEADSHOTS_VICTIMA]));
        }
        case 
1: {
            
len += formatex(g_menu[len], charsmax(g_menu) - len"\wEnemigos matados por KNIFE\r: \y%s^n\wVeces muerto por KNIFE\r: \y%s^n^n",
            
add_point(g_Matados_Especial[id][KNIFE_ATACANTE]), add_point(g_Muertes_Especial[id][KNIFE_VICTIMA]));
            
            
len += formatex(g_menu[len], charsmax(g_menu) - len"\yTIEMPO JUGADO COMO TERRORISTA\r:^n\y%d días, %d horas, %d minutos^n^n",
            
g_TiempoJugado_Team[id][0][0], g_TiempoJugado_Team[id][0][1], g_TiempoJugado_Team[id][0][2]);
            
            
len += formatex(g_menu[len], charsmax(g_menu) - len"\yTIEMPO JUGADO COMO ANTI-TERRORISTA\r:^n\y%d días, %d horas, %d minutos^n^n",
            
g_TiempoJugado_Team[id][1][0], g_TiempoJugado_Team[id][1][1], g_TiempoJugado_Team[id][1][2]);
        }
        case 
2: {
            
len += formatex(g_menu[len], charsmax(g_menu) - len"\wDaño hecho como Terrorista\r: \y%s^n\wDaño recibido como Terrorista\r: \y%s^n",
            
add_point(g_danio_hecho[id][TERRORISTAS]), add_point(g_danio_recibido[id][TERRORISTAS]));
            
            
len += formatex(g_menu[len], charsmax(g_menu) - len"\wDaño hecho como Anti-Terrorista\r: \y%s^n\wDaño recibido como Anti-Terrorista\r: \y%s^n^n",
            
add_point(g_danio_hecho[id][ANTI_TERRORISTAS]), add_point(g_danio_recibido[id][ANTI_TERRORISTAS]));
        }
    }
    
    
len += formatex(g_menu[len], charsmax(g_menu) - len"\r9.\w Atrás / Siguiente^n\r0.\w Volver");
    
    
show_menu(idKEYSMENUg_menu, -1"Menu Estadisticas Personales");
}

public 
menu_estadisticas_personales(iditem) {
    switch (
item) {
        case 
8: {
            switch (
g_Pagina_Menu[id][PAG_ESTADISTICAS]) {
                case 
0: {
                    
g_Pagina_Menu[id][PAG_ESTADISTICAS] = 1;
                    
show_menu_estadisticas(id);
                }
                case 
1: {
                    
g_Pagina_Menu[id][PAG_ESTADISTICAS] = 2;
                    
show_menu_estadisticas(id);
                }
                case 
2: {
                    
g_Pagina_Menu[id][PAG_ESTADISTICAS] = 0;
                    
show_menu_estadisticas(id);
                }
                
                
/*********** SOMEDAY :) ***********/
                
                /*case 3: {
                    g_Pagina_Menu[id][PAG_ESTADISTICAS] = 0;
                    show_menu_estadisticas(id);
                }*/
            
}
        }
        case 
9: {
            
Clcmd_Menu(id);
            return 
PLUGIN_HANDLED;
        }
    }
    
    
show_menu_estadisticas(id);
    return 
PLUGIN_HANDLED;
}


/************************************************/
/******************** STOCKS ********************/
/************************************************/
stock ChatColor(Index, const Entrada[], any:...) {
    static 
Mensaje[192], Jugadores[32], g_msgSayTextCounti;
    
vformat(Mensajecharsmax(Mensaje), Entrada3);
    
    if (!
g_msgSayTextg_msgSayText get_user_msgid("SayText");
    
    
replace_all(Mensajecharsmax(Mensaje), "!g""^4");
    
replace_all(Mensajecharsmax(Mensaje), "!y""^1");
    
replace_all(Mensajecharsmax(Mensaje), "!t""^3");
    
    if (
Index) {
        
Jugadores[0] = Index;
        
Count 1;
    } else 
get_players(JugadoresCount"c");
    
    for (
0Count; ++i) {
        
message_begin(MSG_ONE_UNRELIABLEg_msgSayText_Jugadores[i]);
        
write_byte(Jugadores[i]);
        
write_string(Mensaje);
        
message_end();
    }
}

stock ShowHUD_Message(idiColors[3] = { 255255255 }, Float:fPosX = -1.0Float:fPosY = -1.0iEffect 0Float:fTime 0.0Float:fInTime 0.5Float:fOutTime 0.5szMessage[]) {
    
set_dhudmessage(000, -1.00, -1.0000.000.000.000.00false);
    for (new 
08i++) show_dhudmessage(id"");
    
    
set_dhudmessage(iColors[0], iColors[1], iColors[2], fPosXfPosYiEffect0.0fTimefInTimefOutTimefalse);
    
show_dhudmessage(idszMessage);
}

stock fm_get_weapon_ent_owner(ent) {
    if (
pev_valid(ent) != OFFSET_PDATA)
        return -
1;
    
    return 
get_pdata_cbase(entOFFSET_WEAPON_OWNEROFFSET_LINUX_WEAPONS);
}

// Stock by Kiske -counts number of characters in a string-
stock count_characters(const szString[], const len sizeof(szString)) {
    new 
counti;

    for (
leni++)
    {
        if (
isalnum(szString[i]))
            
count++;
    }
    
    
return count;
}

// Stock by Neeeeeeeeeel.- -check special characters in a string-
stock contain_special_characters(const str[]) {
    static 
len;
    
len strlen(str);
    
    for (new 
0leni++)
    {
        if (!
isalpha(str[i]) && !isdigit(str[i]))
            return 
1;
    }
    
    return 
0;
}

// Stock by Asdito´^ -add point to numbers-
stock add_point(number) {
    new 
countistr[29], str2[35], len;
    
num_to_str(numberstrcharsmax(str));
    
len strlen(str);
    
    for (
0leni++)
    {
        if (
!= && ((len i) %== 0))
        {
            
add(str2charsmax(str2), "."1);
            
count++;
            
add(str2[i+count], 1str[i], 1);
        }
        else
            
add(str2[i+count], 1str[i], 1);
    }

    return 
str2;

Responder
#2
Fijate si te anda, lo edite en algunas partes. El codigó esta mal hecho en alguans partes asi que te recomiendo arreglarlas o te va a andar muy mal..

Código PHP:
#include <amxmodx>
#include <adv_vault>
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta>
#include <unixtime>
#include <cstrike>

new const NOMBRE[] = "Sistema de estadisticas (ADV_VAULT)";
new const 
VERSION[] = "v1.50 BETA";
new const 
CREADOR[] = "FEDERICOMB";

new const 
Prefijo[] = "[AMXX]";
//new const Prefijo_BAN[] = "[AMXX - BAN]";
new const PREFIJO_SETINFO[] = "_password";
new const 
NOMBRE_MODO[] = "Bienvenido al servidor";

enum {
    
NO_REGISTRADO 0,
    
REGISTRADO,
    
BANEADO,
    
IDENTIFICADO_ESPEC,
    
IDENTIFICADO
};

enum {
    
CUENTA_NUMERO 0,
    
CUENTA,
    
CONTRASENIA,
    
FECHA_REGISTRO,
    
ULTIMA_SESION,
    
TIEMPO_JUGADO,
    
TIEMPO_JUGADO_TT,
    
TIEMPO_JUGADO_CT,
    
DANIO_HECHO_TT,
    
DANIO_RECIBIDO_TT,
    
DANIO_HECHO_CT,
    
DANIO_RECIBIDO_CT,
    
MATADOS,
    
MUERTES,
    
TT_MATADOS,
    
TT_MUERTES,
    
CT_MATADOS,
    
CT_MUERTES,
    
MATADOS_ESPECIAL,
    
MUERTES_ESPECIAL,
    
    
MAX_FIELDS
};

enum {
    
CUENTAS_CREADAS 0,
    
    
MAX_FIELDS2
};

enum {
    
PAG_TOP15 0,
    
PAG_ESTADISTICAS,
    
    
MAX_PAGS
};

enum {
    
HEADSHOTS_ATACANTE 0,
    
KNIFE_ATACANTE,
    
    
MAX_ESPECIAL
};

enum {
    
HEADSHOTS_VICTIMA 0,
    
KNIFE_VICTIMA,
    
    
MAX_ESPECIAL2
};

enum {
    
TERRORISTAS 0,
    
ANTI_TERRORISTAS,
    
    
MAX_TEAM
};

enum (+=100) {
    
TASK_DHUD 3000,
    
TASK_TIME
};

/************* ALGUNAS VARIABLES *************/

new g_ADV_Vault;
new 
g_ADV_Sort;
new 
g_Campos[MAX_FIELDS];

new 
g_ADV_Vault2;
new 
g_Campos2[MAX_FIELDS2];

new 
g_Cuenta_Numero[33];
new 
g_Nombre[33][32];
new 
g_Contrasenia[33][35];

new 
g_Fecha_Registro[33];
new 
g_Ultima_Sesion[33];
new 
g_Estado[33];

new 
g_Conectado[33];
new 
g_EstaVivo[33];
new 
g_ArmaActual[33];

new 
g_danio_hecho[33][MAX_TEAM], g_danio_recibido[33][MAX_TEAM];
new 
g_Matados_T[33], g_Muertes_T[33];
new 
g_Matados[33][MAX_TEAM], g_Muertes[33][MAX_TEAM];
new 
g_Matados_Especial[33][MAX_ESPECIAL], g_Muertes_Especial[33][MAX_ESPECIAL2];

new 
g_TiempoJugado[33][4];
new 
g_TiempoJugado_Team[33][2][4];

new 
g_Cuentas_Creadas;
new 
g_MaxPlayers;

new 
g_menu[512];

new 
g_Pagina_Menu[33][MAX_PAGS];
new 
g_Top15_Seleccionado[33];

/************* FIN ALGUNAS VARIABLES *************/


/************* ALGUNAS CONSTANTES :) *************/

// Minimo de caracteres para la contrasenia
const CARACTERES_CONTRASENIA 4;

const 
VGUI_JOIN_TEAM_NUM             2;
const 
OFFSET_LAST_HIT_GROUP         75;

const 
CSW_SHIELD                    2;

const 
OFFSET_PDATA                    2;
const 
OFFSET_LINUX_WEAPONS             4;
const 
OFFSET_WEAPON_OWNER            41;

const 
KEYSMENU MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0;

// Tiempo en segundos para el guardado automatico y la actualizacion del rank.
const TIEMPO_GUARDADO 300// 300 = 5 minutos.   60 x 5 = 300.

// Estraido de "Weapon_modifier" by KISKE
new const g_weapon_ent_names_all[][] = {"weapon_thighpack""weapon_p228""weapon_shield""weapon_scout""weapon_hegrenade""weapon_xm1014""weapon_c4",
"weapon_mac10""weapon_aug""weapon_smokegrenade""weapon_elite""weapon_fiveseven""weapon_ump45""weapon_sg550""weapon_galil""weapon_famas""weapon_usp",
"weapon_glock18""weapon_awp""weapon_mp5navy""weapon_m249""weapon_m3""weapon_m4a1""weapon_tmp""weapon_g3sg1""weapon_flashbang""weapon_deagle",
"weapon_sg552""weapon_ak47""weapon_knife""weapon_p90""w_backpack"};

/************* FIN ALGUNAS CONSTANTES :) *************/


public plugin_init() {
    
register_plugin(NOMBREVERSIONCREADOR);
    
    
register_logevent("logevent_round_end"2"1=Round_End");
    
    
RegisterHam(Ham_Spawn"player""fw_PlayerSpawn_Post"1);
    
RegisterHam(Ham_TakeDamage"player""fw_TakeDamage");
    
RegisterHam(Ham_Killed"player""fw_PlayerKilled");
    for (new 
0CSW_P90+2i++)
    {
        if (
!= && != && != 31)
            
RegisterHam(Ham_Item_Deployg_weapon_ent_names_all[i], "fw_Item_Deploy_Post"1);
    }
    
    
register_forward(FM_ClientUserInfoChanged"fw_ClientUserInfoChanged");
    
    
g_ADV_Vault                    adv_vault_open("Estadisticas"false);
    
g_Campos[CUENTA_NUMERO]        = adv_vault_register_field(g_ADV_Vault"Cuenta_Numero"DATATYPE_INT);
    
g_Campos[CUENTA]            = adv_vault_register_field(g_ADV_Vault"Cuenta"DATATYPE_STRINGsizeof(g_Nombre[]));
    
g_Campos[CONTRASENIA]        = adv_vault_register_field(g_ADV_Vault"Contrasenia"DATATYPE_STRINGsizeof(g_Contrasenia[]));
    
g_Campos[FECHA_REGISTRO]    = adv_vault_register_field(g_ADV_Vault"Fecha_Registro"DATATYPE_INT);
    
g_Campos[ULTIMA_SESION]        = adv_vault_register_field(g_ADV_Vault"Ultima_Sesion"DATATYPE_INT);
    
g_Campos[TIEMPO_JUGADO]        = adv_vault_register_field(g_ADV_Vault"Tiempo_Jugado"DATATYPE_ARRAYsizeof(g_TiempoJugado[]));
    
g_Campos[TIEMPO_JUGADO_TT]    = adv_vault_register_field(g_ADV_Vault"Tiempo_TT"DATATYPE_ARRAYsizeof(g_TiempoJugado_Team[][]));
    
g_Campos[TIEMPO_JUGADO_CT]    = adv_vault_register_field(g_ADV_Vault"Tiempo_CT"DATATYPE_ARRAYsizeof(g_TiempoJugado_Team[][]));
    
g_Campos[DANIO_HECHO_TT]    = adv_vault_register_field(g_ADV_Vault"Danio_TT"DATATYPE_INT);
    
g_Campos[DANIO_RECIBIDO_TT] = adv_vault_register_field(g_ADV_Vault"RDanio_TT"DATATYPE_INT);
    
g_Campos[DANIO_HECHO_CT]     = adv_vault_register_field(g_ADV_Vault"Danio_CT"DATATYPE_INT);
    
g_Campos[DANIO_RECIBIDO_CT] = adv_vault_register_field(g_ADV_Vault"RDanio_CT"DATATYPE_INT);
    
g_Campos[MATADOS]            = adv_vault_register_field(g_ADV_Vault"Matados"DATATYPE_INT);
    
g_Campos[MUERTES]            = adv_vault_register_field(g_ADV_Vault"Muertes"DATATYPE_INT);
    
g_Campos[TT_MUERTES]        = adv_vault_register_field(g_ADV_Vault"TT_Matados"DATATYPE_INT);
    
g_Campos[TT_MATADOS]        = adv_vault_register_field(g_ADV_Vault"TT_Muertes"DATATYPE_INT);
    
g_Campos[CT_MATADOS]        = adv_vault_register_field(g_ADV_Vault"CT_Matados"DATATYPE_INT);
    
g_Campos[CT_MUERTES]        = adv_vault_register_field(g_ADV_Vault"CT_Muertes"DATATYPE_INT);
    
g_Campos[MATADOS_ESPECIAL]    = adv_vault_register_field(g_ADV_Vault"Matados_Especial"DATATYPE_ARRAYsizeof(g_Matados_Especial[]));
    
g_Campos[MUERTES_ESPECIAL]    = adv_vault_register_field(g_ADV_Vault"Muertes_Especial"DATATYPE_ARRAYsizeof(g_Muertes_Especial[]));
    
adv_vault_init(g_ADV_Vault);
    
    
g_ADV_Sort                    adv_vault_sort_create(g_ADV_VaultORDER_DESCTIEMPO_GUARDADO0g_Campos[MATADOS]);
    
    
g_ADV_Vault2                adv_vault_open("Estadisticas_Servidor"false);
    
g_Campos2[CUENTAS_CREADAS]    = adv_vault_register_field(g_ADV_Vault2"Cuentas_Creadas"DATATYPE_INT);
    
adv_vault_init(g_ADV_Vault2);
    
    
Cargar_Datos_Generales();
    
    
register_clcmd("say /rank""Clcmd_Rank");
    
register_clcmd("say_team /rank""Clcmd_Rank");
    
register_clcmd("say /top15""Clcmd_tops15");
    
register_clcmd("say_team /top15""Clcmd_tops15");
    
register_clcmd("say /menu""Clcmd_Menu");
    
register_clcmd("say_team /menu""Clcmd_Menu");
    
    
register_clcmd("chooseteam""Clcmd_Changeteam");
    
register_clcmd("jointeam""Clcmd_Changeteam");
    
    
register_clcmd("CREAR_CONTRASENIA""Crear_Contrasenia");
    
register_clcmd("CONFIRMAR_CONTRASENIA""Confirmar_Contrasenia");
    
register_clcmd("INGRESAR_CONTRASENIA""Ingresar_Contrasenia");
        
    
register_menu("Intro Menu"KEYSMENU"menu_intro");
    
register_menu("Menu Estadisticas Personales"KEYSMENU"menu_estadisticas_personales");
    
    
register_message(get_user_msgid("ShowMenu"), "Message_Showmenu");
    
register_message(get_user_msgid("VGUIMenu"), "Message_Vguimenu");
    
    
g_MaxPlayers get_maxplayers();
    
    
set_task(float(TIEMPO_GUARDADO), "Guardado_Automatico"___"b");
}

Cargar_Datos_Generales() {
    if (!
adv_vault_get_prepare(g_ADV_Vault21)) {
        
adv_vault_set_start(g_ADV_Vault2);
        
        
g_Cuentas_Creadas 0;
        
adv_vault_set_field(g_ADV_Vault2g_Campos2[CUENTAS_CREADAS], g_Cuentas_Creadas);
        
        
adv_vault_set_end(g_ADV_Vault21);
        return;
    }
    
    
g_Cuentas_Creadas adv_vault_get_field(g_ADV_Vault2g_Campos2[CUENTAS_CREADAS]);
}

public 
Guardado_Automatico() {
    for (new 
id 1id <= g_MaxPlayers; ++id) {
        if (!
g_Conectado[id] || g_Estado[id] < IDENTIFICADO)
            continue;
        
        
Guardar_Datos(id);
        
ChatColor(id"!g%s !yTU DATOS HAN SIDO GUARDADOS CORRECTAMENTE."Prefijo);
    }
}

public 
logevent_round_end() {
    for (new 
id 1id <= g_MaxPlayersid++) {
        
Guardar_Datos(id);
    }
}

public 
client_putinserver(id) {
    
get_user_name(idg_Nombre[id], charsmax(g_Nombre[]));
    
    
g_Contrasenia[id][0] = '^0';
    
g_Conectado[id] = true;
    
g_EstaVivo[id] = false;
    
g_Estado[id] = REGISTRADO;
            
    
Cargar_Datos(id);
}

public 
client_disconnected(id) {
    
Guardar_Datos(id);
    
g_Conectado[id] = false;
    
g_EstaVivo[id] = false;
    
g_Estado[id] = NO_REGISTRADO;
    
    
remove_task(id+TASK_DHUD);
    
remove_task(id+TASK_TIME);
}

/**********************************************/
/************* SISTEMA DE CUENTAS *************/
/**********************************************/
public Crear_Contrasenia(id) {
    if (
g_Estado[id] != NO_REGISTRADO)
        return;
        
    
read_args(g_Contrasenia[id], charsmax(g_Contrasenia[]));
    
remove_quotes(g_Contrasenia[id]);
    
trim(g_Contrasenia[id]);
    
    if (
count_characters(g_Contrasenia[id]) < CARACTERES_CONTRASENIA || !g_Contrasenia[id][0] || (g_Contrasenia[id][0] == ' ' && (!g_Contrasenia[id][1] || g_Contrasenia[id][1] == ' '))) {
        
client_print(idprint_center"La contraseña tiene que tener al menos %d carácteres"CARACTERES_CONTRASENIA);
        
show_menu_registracion(id);
        
g_Contrasenia[id][0] = '^0';
        
ShowHUD_Message(id_0.000.0000.000.000.00"");
        
client_cmd(id"spk buttons/button2.wav");
        return;
    }
    
    if (
contain_special_characters(g_Contrasenia[id])) {
        
client_print(idprint_center"La contraseña no tiene que tener carácteres especiales");
        
show_menu_registracion(id);
        
g_Contrasenia[id][0] = '^0';
        
ShowHUD_Message(id_0.000.0000.000.000.00"");
        
client_cmd(id"spk buttons/button2.wav");
        return;
    }
    
    if (
equal(g_Contrasenia[id], g_Nombre[id])) {
        
client_print(idprint_center"La contraseña no puede ser igual al nombre de cuenta");
        
show_menu_registracion(id);
        
g_Contrasenia[id][0] = '^0';
        
ShowHUD_Message(id_0.000.0000.000.000.00"");
        
client_cmd(id"spk buttons/button2.wav");
        return;
    }
    
    
client_cmd(id"messagemode ^"CONFIRMAR_CONTRASENIA^"");
    
client_cmd(id"spk buttons/button3.wav");
    
ShowHUD_Message(id, {2550255}, -1.00.200500.01.001.00"REPITA LA CONTRASEÑA^nPARA PODER CONTINUAR");
}

public 
Confirmar_Contrasenia(id) {
    if (
g_Estado[id] != NO_REGISTRADO)
        return;
    
    new 
szPassword[35];
    
read_args(szPasswordcharsmax(szPassword));
    
remove_quotes(szPassword);
    
trim(szPassword);
    
    if (!
equal(szPasswordg_Contrasenia[id])) {
        
client_print(idprint_center"La contraseña ingresada no coincide con la anterior");
        
show_menu_registracion(id);
        
g_Contrasenia[id][0] = '^0';
        
ShowHUD_Message(id_0.000.0000.000.000.00"");
        
client_cmd(id"spk buttons/button2.wav");
        return;
    }
    
    
show_menu_confirmacion(id);
}

public 
Ingresar_Contrasenia(id) {
    if (
g_Estado[id] >= IDENTIFICADO_ESPEC)
        return;
    
    
read_args(g_Contrasenia[id], charsmax(g_Contrasenia[]));
    
remove_quotes(g_Contrasenia[id]);
    
trim(g_Contrasenia[id]);
    
    new 
szPass[35], szBuffer[34];
    
adv_vault_get_prepare(g_ADV_Vault_g_Nombre[id]);
    
adv_vault_get_field(g_ADV_Vaultg_Campos[CONTRASENIA], szPasscharsmax(szPass));
    
md5(g_Contrasenia[id], szBuffer);
    
    if (
equal(szPassszBuffer)) {
        
client_cmd(id"setinfo ^"%s^" ^"%s^""PREFIJO_SETINFOg_Contrasenia[id]);
        
ShowHUD_Message(id_0.000.0000.000.000.00"");
        
Cargar_Datos(id);
    }
    else {
        
ShowHUD_Message(id, {25500}, -1.00.20010.01.001.00"LA CONTRASEÑA INGRESADA^n NO COINCIDE CON LA DE ESTA CUENTA");
        
client_cmd(id"spk buttons/button2.wav");
        
        
g_Contrasenia[id][0] = '^0';
        
show_menu_registracion(id);
    }
}

public 
Clcmd_Changeteam(id) {
    if (
g_Estado[id] < IDENTIFICADO_ESPEC)
    {
        
show_menu_ingresar(id);
        return 
PLUGIN_HANDLED;
    }
    
    return 
PLUGIN_CONTINUE;
}

public 
show_menu_registracion(id) {
    if (!
g_Conectado[id]) return;
    
    
formatex(g_menucharsmax(g_menu), "\y%s \r%s^nBY \y%s"NOMBRE_MODOVERSIONCREADOR);
    new 
menu menu_create(g_menu"menu_registracion");
    
    
menu_additem(menug_Estado[id] == REGISTRADO "\wIDENTIFICARSE" "\dIDENTIFICARSE""1");
    
menu_additem(menu, (g_Estado[id] == REGISTRADO || g_Estado[id] == BANEADO) ? "\dREGISTRARSE" "\wREGISTRARSE""2");
    
    if (
g_Estado[id] == REGISTRADO || g_Estado[id] == BANEADO) {
        
formatex(g_menucharsmax(g_menu), "^n^n\yCUENTA #%s"add_point(g_Cuenta_Numero[id]));
        
menu_addtext(menug_menu0);
    }
    
    
/*if (g_Estado[id] == BANEADO) {
        formatex(g_menu, charsmax(g_menu), "^n^n\wTU CUENTA SE ENCUENTRA BANEADA^n^nEXPIRA\r: \y%s^n\wRAZÓN\r: \y%s", g_Baneado_Hasta[id], g_Razon_Ban[id]);
        menu_addtext(menu, g_menu, 0);
    }*/
    
    
menu_setprop(menuMPROP_EXITMEXIT_NEVER);
    
menu_display(idmenu);
}

public 
menu_registracion(idmenuitem) {
    if (!
g_Conectado[id]) {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    
    
menu_destroy(menu);
    
    if (
g_Estado[id] != BANEADO) {
        if (
g_Estado[id] == REGISTRADO) {
            switch (
item) {
                case 
0: {
                    
client_cmd(id"messagemode ^"INGRESAR_CONTRASENIA^"");
                    
client_cmd(id"spk buttons/button3.wav");
                    
g_Contrasenia[id][0] = '^0';
                    
ShowHUD_Message(id, {0255255}, -1.00.200500.01.001.00"INGRESE LA CONTRASEÑA^n QUE PROTEGE A ESTA CUENTA");
                }
                case 
1: {
                    
client_print(idprint_center"El usuario ya está registrado");
                    
client_cmd(id"spk buttons/button2.wav");
                    
show_menu_registracion(id);
                }
            }
        }
        else {
            switch (
item) {
                case 
0: {
                    
client_print(idprint_center"El usuario no está registrado");
                    
client_cmd(id"spk buttons/button2.wav");
                    
show_menu_registracion(id);
                }
                case 
1: {
                    
client_cmd(id"messagemode ^"CREAR_CONTRASENIA^"");
                    
client_cmd(id"spk buttons/button3.wav");
                    
g_Contrasenia[id][0] = '^0';
                    
ShowHUD_Message(id, {0255255}, -1.00.200500.01.001.00"INGRESE UNA CONTRASEÑA^n QUE PROTEGERÁ A ESTA CUENTA");
                }
            }
        }
    }
    else
        
show_menu_registracion(id);
    
    return 
PLUGIN_HANDLED;
}

show_menu_confirmacion(id) {
    
formatex(g_menucharsmax(g_menu), "CONFIRME LOS DATOS^nPARA PROCEDER A REGISTRARSE\r:^n^n\wCuenta: \y%s^n\wContraseña: \y%s"g_Nombre[id], g_Contrasenia[id]);
    new 
menu menu_create(g_menu"menu_confirmacion");
    
    
menu_additem(menu"Sí, quiero registrarme""1"0);
    
menu_additem(menu"No, deshacer los cambios""2"0);
    
    
menu_setprop(menuMPROP_EXITMEXIT_NEVER);
    
menu_display(idmenu);
    
    
ShowHUD_Message(id_0.000.0000.000.000.00"");
    
client_cmd(id"spk buttons/blip2.wav");
}

public 
menu_confirmacion(idmenuitem) {
    if (!
g_Conectado[id]) {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    
    
menu_destroy(menu);
    switch (
item) {
        case 
0crear_cuenta(id);
        case 
1: {
            
g_Contrasenia[id][0] = '^0';
            
show_menu_registracion(id);
            
ShowHUD_Message(id_0.000.0000.000.000.00"");
        }
    }
    
    return 
PLUGIN_HANDLED;
}

crear_cuenta(id) {
    new 
szBuffer[34];
    
md5(g_Contrasenia[id], szBuffer);
    
    
// Chau get_time()..
    //get_time("%d/%m/%Y - %H:%M:%S", szFechaRegistro, 24);
    
    // Hola get_systime()..
    
g_Fecha_Registro[id] = get_systime();

    
g_Cuentas_Creadas++;
    
g_Cuenta_Numero[id] = g_Cuentas_Creadas;
    
    
g_Ultima_Sesion[id] = 0;
    
arrayset(g_TiempoJugado[id], 0sizeof(g_TiempoJugado[]));
    
arrayset(g_TiempoJugado_Team[id][0], 0sizeof(g_TiempoJugado_Team[][]));
    
arrayset(g_TiempoJugado_Team[id][1], 0sizeof(g_TiempoJugado_Team[][]));
    
arrayset(g_danio_hecho[id], 0sizeof(g_danio_hecho[]));
    
arrayset(g_danio_recibido[id], 0sizeof(g_danio_recibido[]));
    
g_Matados_T[id] = 0;
    
g_Muertes_T[id] = 0;
    
arrayset(g_Matados[id], 0sizeof(g_Matados[]));
    
arrayset(g_Muertes[id], 0sizeof(g_Muertes[]));
    
arrayset(g_Matados_Especial[id], 0sizeof(g_Matados_Especial[]));
    
arrayset(g_Muertes_Especial[id], 0sizeof(g_Muertes_Especial[]));
    
    
// Guardo los datos del usuario nuevo.
    
adv_vault_set_start(g_ADV_Vault);    
    
adv_vault_set_field(g_ADV_Vaultg_Campos[CUENTA_NUMERO], g_Cuenta_Numero[id]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[CUENTA], g_Nombre[id]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[CONTRASENIA], szBuffer);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[FECHA_REGISTRO], g_Fecha_Registro[id]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[ULTIMA_SESION], g_Ultima_Sesion[id]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[TIEMPO_JUGADO], g_TiempoJugado[id]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[TIEMPO_JUGADO_TT], g_TiempoJugado[id][TERRORISTAS]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[TIEMPO_JUGADO_CT], g_TiempoJugado[id][ANTI_TERRORISTAS]);
    
    
adv_vault_set_field(g_ADV_Vaultg_Campos[DANIO_HECHO_TT], g_danio_hecho[id][TERRORISTAS]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[DANIO_RECIBIDO_TT], g_danio_recibido[id][TERRORISTAS]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[DANIO_HECHO_CT], g_danio_hecho[id][ANTI_TERRORISTAS]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[DANIO_RECIBIDO_CT], g_danio_recibido[id][ANTI_TERRORISTAS]);
    
    
adv_vault_set_field(g_ADV_Vaultg_Campos[MATADOS], g_Matados_T[id]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[MUERTES], g_Muertes_T[id]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[TT_MATADOS], g_Matados[id][TERRORISTAS]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[TT_MUERTES], g_Muertes[id][TERRORISTAS]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[CT_MATADOS], g_Matados[id][ANTI_TERRORISTAS]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[CT_MUERTES], g_Muertes[id][ANTI_TERRORISTAS]);
    
    
adv_vault_set_field(g_ADV_Vaultg_Campos[MATADOS_ESPECIAL], g_Matados_Especial[id]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[MUERTES_ESPECIAL], g_Muertes_Especial[id]);
    
adv_vault_set_end(g_ADV_Vault0g_Nombre[id]);
    
    
// Guardo un numero mas a la cantidad de cuentas creadas.
    
adv_vault_set_start(g_ADV_Vault2);    
    
adv_vault_set_field(g_ADV_Vault2g_Campos2[CUENTAS_CREADAS], g_Cuentas_Creadas);    
    
adv_vault_set_end(g_ADV_Vault21);
        
    
ShowHUD_Message(id, {02550}, -1.00.2007.001.001.00"¡ REGISTRO COMPLETADO EXITOSAMENTE !");
    
client_cmd(id"spk buttons/bell1.wav");
    
client_cmd(id"setinfo ^"%s^" ^"%s^""PREFIJO_SETINFOg_Contrasenia[id]);
    
    
Cargar_Datos(id);
    
ChatColor(0"!g%s !yBienvenido al servidor !g%s!y, eres la cuenta registrada !g#%s!y."Prefijog_Nombre[id], add_point(g_Cuenta_Numero[id]));
}

Guardar_Datos(id) {
    if (
g_Estado[id] < IDENTIFICADO)
        return;
    
    
g_Ultima_Sesion[id] = get_systime();
    
    
adv_vault_set_start(g_ADV_Vault);
    
    
adv_vault_set_field(g_ADV_Vaultg_Campos[CUENTA], g_Nombre[id]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[ULTIMA_SESION], g_Ultima_Sesion[id]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[TIEMPO_JUGADO], g_TiempoJugado[id]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[TIEMPO_JUGADO_TT], g_TiempoJugado_Team[id][TERRORISTAS]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[TIEMPO_JUGADO_CT], g_TiempoJugado_Team[id][ANTI_TERRORISTAS]);
    
    
adv_vault_set_field(g_ADV_Vaultg_Campos[DANIO_HECHO_TT], g_danio_hecho[id][TERRORISTAS]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[DANIO_RECIBIDO_TT], g_danio_recibido[id][TERRORISTAS]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[DANIO_HECHO_CT], g_danio_hecho[id][ANTI_TERRORISTAS]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[DANIO_RECIBIDO_CT], g_danio_recibido[id][ANTI_TERRORISTAS]);
    
    
adv_vault_set_field(g_ADV_Vaultg_Campos[MATADOS], g_Matados_T[id]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[MUERTES], g_Muertes_T[id]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[TT_MATADOS], g_Matados[id][TERRORISTAS]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[TT_MUERTES], g_Muertes[id][TERRORISTAS]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[CT_MATADOS], g_Matados[id][ANTI_TERRORISTAS]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[CT_MUERTES], g_Muertes[id][ANTI_TERRORISTAS]);
    
    
adv_vault_set_field(g_ADV_Vaultg_Campos[MATADOS_ESPECIAL], g_Matados_Especial[id]);
    
adv_vault_set_field(g_ADV_Vaultg_Campos[MUERTES_ESPECIAL], g_Muertes_Especial[id]);
    
    
adv_vault_set_end(g_ADV_Vault0g_Nombre[id]);
}

Cargar_Datos(id) {
    if (!
adv_vault_get_prepare(g_ADV_Vault_g_Nombre[id]))
        return;

    
g_Fecha_Registro[id]                    = adv_vault_get_field(g_ADV_Vaultg_Campos[FECHA_REGISTRO]);
    
g_Ultima_Sesion[id]                        = adv_vault_get_field(g_ADV_Vaultg_Campos[ULTIMA_SESION]);
    
adv_vault_get_field(g_ADV_Vaultg_Campos[TIEMPO_JUGADO], g_TiempoJugado[id], sizeof(g_TiempoJugado[]));
    
adv_vault_get_field(g_ADV_Vaultg_Campos[TIEMPO_JUGADO_TT], g_TiempoJugado_Team[id][TERRORISTAS], sizeof(g_TiempoJugado_Team[][]));
    
adv_vault_get_field(g_ADV_Vaultg_Campos[TIEMPO_JUGADO_CT], g_TiempoJugado_Team[id][ANTI_TERRORISTAS], sizeof(g_TiempoJugado_Team[][]));
    
    
g_danio_hecho[id][TERRORISTAS]             = adv_vault_get_field(g_ADV_Vaultg_Campos[DANIO_HECHO_TT]);
    
g_danio_recibido[id][TERRORISTAS]         = adv_vault_get_field(g_ADV_Vaultg_Campos[DANIO_RECIBIDO_TT]);
    
g_danio_hecho[id][ANTI_TERRORISTAS]        = adv_vault_get_field(g_ADV_Vaultg_Campos[DANIO_HECHO_CT]);
    
g_danio_recibido[id][ANTI_TERRORISTAS]     = adv_vault_get_field(g_ADV_Vaultg_Campos[DANIO_RECIBIDO_CT]);
    
    
g_Matados_T[id]                         = adv_vault_get_field(g_ADV_Vaultg_Campos[MATADOS]);
    
g_Muertes_T[id]                         = adv_vault_get_field(g_ADV_Vaultg_Campos[MUERTES]);
    
g_Matados[id][TERRORISTAS]                 = adv_vault_get_field(g_ADV_Vaultg_Campos[TT_MATADOS]);
    
g_Muertes[id][TERRORISTAS]                 = adv_vault_get_field(g_ADV_Vaultg_Campos[TT_MUERTES]);
    
g_Matados[id][ANTI_TERRORISTAS]            = adv_vault_get_field(g_ADV_Vaultg_Campos[CT_MATADOS]);
    
g_Muertes[id][ANTI_TERRORISTAS]         = adv_vault_get_field(g_ADV_Vaultg_Campos[CT_MUERTES]);
    
    
adv_vault_get_field(g_ADV_Vaultg_Campos[MATADOS_ESPECIAL], g_Matados_Especial[id], sizeof(g_Matados_Especial[]));
    
adv_vault_get_field(g_ADV_Vaultg_Campos[MUERTES_ESPECIAL], g_Muertes_Especial[id], sizeof(g_Muertes_Especial[]));
    
    
g_Estado[id] = IDENTIFICADO_ESPEC;
    
show_menu_ingresar(id);
}

public 
Bienvenida(id) {
    
id -= TASK_DHUD;
    
    if (!
g_Conectado[id])
        return;
        
    if (
g_Ultima_Sesion[id]) {
        new 
g_Posiciong_Posicion adv_vault_sort_key(g_ADV_Vaultg_ADV_Sort0g_Nombre[id]);
        
        
set_dhudmessage(2551270, -1.00.3700.08.01.01.0);
        
        if (
g_Posicion)
            
show_dhudmessage(id"¡BIENVENIDO NUEVAMENTE %s!^nRANK %d / %d"g_Nombre[id], g_Posiciong_Cuentas_Creadas);
        else
            
show_dhudmessage(id"¡BIENVENIDO NUEVAMENTE %s!"g_Nombre[id]);
    }
}
    
show_menu_ingresar(id) {
    static 
lenlen 0;
    new 
szBuffer[30], szBuffer2[30];
    
    
// Gracias Neeeeeeeeeel.-
    
new const szUnidad[][] = {"año""mes""día""hora""minuto"};
    new const 
szDividir[] = {60*60*24*36560*60*24*3060*60*2460*6060};

    new 
FechaActual get_systime();

    new 
DiasRegistrado FechaActual g_Fecha_Registro[id];    
    for (new 
0sizeof(szDividir); ++i) {
        if (
DiasRegistrado >= szDividir[i]) {
            new 
num = (DiasRegistrado szDividir[i]);
            
            if (!
num) {
                
szBuffer[0] = '^0';
            }
            else {
                if (
== 1) {
                    
formatex(szBuffercharsmax(szBuffer), " (Hace %d %s%s)"numszUnidad[i], num == "" "es");
                }
                else {
                    
formatex(szBuffercharsmax(szBuffer), " (Hace %d %s%s)"numszUnidad[i], num == "" "s");
                }
            }
            
            break;
        }
    }
    
    new 
AnioMesDiaHoraMinutoSegundo;
    
UnixToTime(g_Fecha_Registro[id], AnioMesDiaHoraMinutoSegundoUT_TIMEZONE_SERVER);
    
    new 
szUltimaSesion[64];    
    if (!
g_Ultima_Sesion[id])
        
formatex(szUltimaSesioncharsmax(szUltimaSesion), "\yNUNCA");
    else {
        new 
Anio2Mes2Dia2Hora2Minuto2Segundo2;
        
UnixToTime(g_Ultima_Sesion[id], Anio2Mes2Dia2Hora2Minuto2Segundo2UT_TIMEZONE_SERVER);
        
        new 
iUltimaSesion FechaActual g_Ultima_Sesion[id];    
        for (new 
0sizeof(szDividir); ++i) {
            if (
iUltimaSesion >= szDividir[i]) {
                new 
num = (iUltimaSesion szDividir[i]);
                
                if (!
num) {
                    
szBuffer[0] = '^0';
                }
                else {
                    if (
== 1) {
                        
formatex(szBuffer2charsmax(szBuffer2), " (Hace %d %s%s)"numszUnidad[i], num == "" "es");
                    }
                    else {
                        
formatex(szBuffer2charsmax(szBuffer2), " (Hace %d %s%s)"numszUnidad[i], num == "" "s");
                    }
                }
                
                break;
            }
        }
        
        
formatex(szUltimaSesioncharsmax(szUltimaSesion), "\y%02d/%02d/%d \r- \y%02d:%02d:%02d%s"Dia2Mes2Anio2Hora2Minuto2Segundo2szBuffer2);
    }
    
    
len formatex(g_menu[len], charsmax(g_menu), "\y%s - CUENTA #%s^n^n"g_Nombre[id], add_point(g_Cuenta_Numero[id]));
    
    
len += formatex(g_menu[len], charsmax(g_menu) - len"\wREGISTRO\r: \y%02d/%02d/%d \r- \y%02d:%02d:%02d%s^n\wÚLTIMA CONEXIÓN\r: %s^n^n"DiaMesAnioHoraMinutoSegundoszBufferszUltimaSesion);
    
len += formatex(g_menu[len], charsmax(g_menu) - len"\yTIEMPO JUGADO\r: \y%d días, %d horas, %d minutos^n^n"g_TiempoJugado[id][0], g_TiempoJugado[id][1], g_TiempoJugado[id][2]);
    
    
len += formatex(g_menu[len], charsmax(g_menu) - len"\r1. \w¡ENTRAR A JUGAR!");
    
    
show_menu(idKEYSMENUg_menu, -1"Intro Menu");
}

public 
menu_intro(iditem) {
    if (
item == 0) {
        
entrar_a_jugar(id);
        return 
PLUGIN_HANDLED;
    }
    
    
show_menu_ingresar(id);
    return 
PLUGIN_HANDLED;
}

entrar_a_jugar(id) {
    
g_Estado[id] = IDENTIFICADO;
    
engclient_cmd(id"chooseteam");
    
    
set_task(5.0"Bienvenida"id+TASK_DHUD);
    
set_task(1.0"Tiempo_jugado_id"id+TASK_TIME__"b");
    
    
// Aun no terminado, en construccion.
}

show_menu_auto_loggin(id) {
    if (
adv_vault_get_prepare(g_ADV_Vault_g_Nombre[id])) {
        
g_Cuenta_Numero[id] = adv_vault_get_field(g_ADV_Vaultg_Campos[CUENTA_NUMERO]);
        
        new 
szAutoPassBuffer[35], szAutoPass[35], szBuffer[34];
        
get_user_info(idPREFIJO_SETINFOszAutoPasscharsmax(szAutoPass));
        
md5(szAutoPassszBuffer);
        
adv_vault_get_field(g_ADV_Vaultg_Campos[CONTRASENIA], szAutoPassBuffercharsmax(szAutoPassBuffer));
        
        if (
equal(szAutoPassBufferszBuffer)) {
            
g_Estado[id] = REGISTRADO;
            
            
Cargar_Datos(id);
        }
        else {
            
g_Estado[id] = REGISTRADO;
            
show_menu_registracion(id);
        }
    }
    else if (!
adv_vault_get_prepare(g_ADV_Vault_g_Nombre[id])) {
        
g_Estado[id] = NO_REGISTRADO;
        
show_menu_registracion(id);
    }
}


/**********************************************/
/************* SISTEMA DE CUENTAS *************/
/**********************************************/

public Message_Vguimenu(msg_idmsg_destmsg_entity) {
    if (
get_msg_arg_int(1) != VGUI_JOIN_TEAM_NUM)
        return 
PLUGIN_CONTINUE;
        
    if (
g_Estado[msg_entity] == NO_REGISTRADO) {
        
show_menu_auto_loggin(msg_entity);
        return 
PLUGIN_HANDLED;
    }
    
    if (
g_Estado[msg_entity] == BANEADO)
        return 
PLUGIN_HANDLED;
    
    return 
PLUGIN_CONTINUE;
}
public 
Message_Showmenu(msg_idmsg_destmsg_entity) {
    static 
Menu_Codigo[32];
    
get_msg_arg_string(4Menu_Codigocharsmax(Menu_Codigo));
    
    if (
equal(Menu_Codigo"#Team_Select") || equal(Menu_Codigo"#Team_Select_Spect") || equal(Menu_Codigo"#IG_Team_Select") || equal(Menu_Codigo"#IG_Team_Select_Spect")) {
        if (
g_Estado[msg_entity] == NO_REGISTRADO) {
            
show_menu_auto_loggin(msg_entity);
            return 
PLUGIN_HANDLED;
        }
        
        if (
g_Estado[msg_entity] == BANEADO)
            return 
PLUGIN_HANDLED;
    }
    return 
PLUGIN_CONTINUE;
}

public 
Tiempo_jugado_id(id) {
    
id -= TASK_TIME;
    
    
/************ TIEMPO JUGADO ************/
    
if (g_TiempoJugado[id][3] > 58) { // Segundos
        
g_TiempoJugado[id][3] = 0;
        
g_TiempoJugado[id][2]++;
    }
    else
        
g_TiempoJugado[id][3]++;
    
    if (
g_TiempoJugado[id][2] > 59) { // Minutos
        
g_TiempoJugado[id][2] = 0;
        
g_TiempoJugado[id][1]++; // Horas
    
}
    
    if (
g_TiempoJugado[id][1] > 23) {
        
g_TiempoJugado[id][1] = 0;
        
g_TiempoJugado[id][0]++; // Dias
    
}
    
/************ TIEMPO JUGADO ************/
    
    
    /************ TIEMPO JUGADO COMO.. (SIEMPRE Y CUANDO ESTE VIVO) ************/
    
if (g_EstaVivo[id]) {
        static 
User_TeamUser_Team = (_:cs_get_user_team(id) - 1);
        
        if (
g_TiempoJugado_Team[id][User_Team][3] > 58) { // Segundos
            
g_TiempoJugado_Team[id][User_Team][3] = 0;
            
g_TiempoJugado_Team[id][User_Team][2]++;
        }
        else
            
g_TiempoJugado_Team[id][User_Team][3]++;
        
        if (
g_TiempoJugado_Team[id][User_Team][2] > 59) { // Minutos
            
g_TiempoJugado_Team[id][User_Team][2] = 0;
            
g_TiempoJugado_Team[id][User_Team][1]++; // Horas
        
}
        
        if (
g_TiempoJugado_Team[id][User_Team][1] > 23) {
            
g_TiempoJugado_Team[id][User_Team][1] = 0;
            
g_TiempoJugado_Team[id][User_Team][0]++; // Dias
        
}
    }
    
/************ TIEMPO JUGADO COMO.. ************/
}


public 
fw_PlayerSpawn_Post(id) {
    if (!
is_user_alive(id))
        return;
    
    
g_EstaVivo[id] = true;
}

public 
fw_TakeDamage(victiminflictorattackerFloat:damagedamage_type) {
    if (
victim == attacker || !g_Conectado[attacker])
        return 
HAM_IGNORED;
    
    if (
get_cvar_num("mp_friendlyfire") == && cs_get_user_team(victim) == cs_get_user_team(attacker))
        return 
HAM_SUPERCEDE;
    
    static 
iDamageiDamage floatround(damage);
        
    switch (
cs_get_user_team(victim)) {
        case 
CS_TEAM_Tg_danio_recibido[victim][TERRORISTAS] += iDamage;
        case 
CS_TEAM_CTg_danio_recibido[victim][ANTI_TERRORISTAS] += iDamage;
    }
    
    switch (
cs_get_user_team(attacker)) {
        case 
CS_TEAM_Tg_danio_hecho[attacker][TERRORISTAS] += iDamage;
        case 
CS_TEAM_CTg_danio_hecho[attacker][ANTI_TERRORISTAS] += iDamage;
    }
    
    return 
HAM_IGNORED;
}

public 
fw_PlayerKilled(victimattackershouldgib) {
    static 
selfkill;
    
selfkill = (victim == attacker || !is_user_connected(attacker)) ? true false;
    
    
g_EstaVivo[victim] = false;
    
    if (
selfkill) return;
    
    if (
get_pdata_int(victimOFFSET_LAST_HIT_GROUP) == HIT_HEAD) {
        
g_Matados_Especial[attacker][HEADSHOTS_ATACANTE]++;
        
g_Muertes_Especial[victim][HEADSHOTS_VICTIMA]++;
    }
    
    if (
g_ArmaActual[attacker] == CSW_KNIFE) {
        
g_Matados_Especial[attacker][KNIFE_ATACANTE]++;
        
g_Muertes_Especial[victim][KNIFE_VICTIMA]++;
    }
    
    switch (
cs_get_user_team(victim)) {
        case 
CS_TEAM_T: {
            
g_Matados[attacker][TERRORISTAS]++;
            
g_Muertes[victim][TERRORISTAS]++;
        }
        case 
CS_TEAM_CT: {
            
g_Matados[attacker][ANTI_TERRORISTAS]++;
            
g_Muertes[victim][ANTI_TERRORISTAS]++;
        }
    }
    
    
g_Matados_T[attacker]++;
    
g_Muertes_T[victim]++;
}

public 
fw_Item_Deploy_Post(__weaponEnt) {
    if (!
pev_valid(__weaponEnt))
        return 
HAM_IGNORED;
        
    static 
id
    
id fm_get_weapon_ent_owner(__weaponEnt);
    
    if (!
pev_valid(id))
        return 
HAM_IGNORED;
    
    static 
weaponid;
    
weaponid cs_get_weapon_id(__weaponEnt);
    
    if (
weaponid == CSW_C4 || 
    
weaponid == CSW_SHIELD ||
    
weaponid == CSW_HEGRENADE ||
    
weaponid == CSW_FLASHBANG ||
    
weaponid == CSW_SMOKEGRENADE)
        
g_ArmaActual[id] = 0;
    else
        
g_ArmaActual[id] = weaponid;
        
    return 
HAM_IGNORED;
}

public 
fw_ClientUserInfoChanged(id) {
    if (!
g_Conectado[id])
        return 
FMRES_IGNORED;
    
    static 
NombreNuevo[32], NombreViejo[32];
    
get_user_name(idNombreViejocharsmax(NombreViejo));
    
get_user_info(id"name"NombreNuevocharsmax(NombreNuevo));
    
    if (
equal(NombreNuevoNombreViejo))
        return 
FMRES_IGNORED;
    
    if (
g_Estado[id] > REGISTRADO) {
        
set_user_info(id"name"NombreViejo);
        
ChatColor(id"!g%s !yNo podes cambiar el nombre estando dentro del servidor."Prefijo);
        
console_print(id"%s No podes cambiar el nombre estando dentro del servidor."Prefijo);
        return 
FMRES_IGNORED;
    }
    
    
copy(g_Nombre[id], charsmax(g_Nombre[]), NombreNuevo);
    
show_menu_auto_loggin(id);
    
    return 
FMRES_SUPERCEDE;
}


/***********************************************/
/************ COMANDOS SAY/SAY_TEAM ************/
/***********************************************/
public Clcmd_Rank(id) {
    if (
g_Estado[id] < IDENTIFICADO_ESPEC)
        return 
PLUGIN_HANDLED;
    
    new 
g_Posicion;
    
g_Posicion adv_vault_sort_key(g_ADV_Vaultg_ADV_Sort0g_Nombre[id]);
    
    if (!
g_Posicion) {
        
ChatColor(id"!g%s !yAún no estás en el rank del servidor."Prefijo);
        
ChatColor(id"!g%s !yLas estadisticas se actualizan cada !g%d minutos!y, a más tardar en un cambio de mapa."Prefijo, (TIEMPO_GUARDADO 60));
    }
    else
        
ChatColor(id"!g%s !yRanking !g%d !y/ !g%d!y."Prefijog_Posiciong_Cuentas_Creadas);
    
    return 
PLUGIN_HANDLED;
}

public 
Clcmd_tops15(id) {
    if (
g_Estado[id] < IDENTIFICADO_ESPEC)
        return 
PLUGIN_HANDLED;
        
    new 
menu menu_create("TOPS 15""menu_tops");
    
    
menu_additem(menu"GENERAL^n""1");
    
menu_additem(menu"CTs MATADOS""2");
    
menu_additem(menu"TTs MATADOS""3");
    
menu_additem(menu"DAÑO HECHO SIENDO CT""4");
    
menu_additem(menu"DAÑO HECHO SIENDO TT""5");
    
    
menu_setprop(menuMPROP_BACKNAME"Atrás");
    
menu_setprop(menuMPROP_NEXTNAME"Siguiente");
    
menu_setprop(menuMPROP_EXITNAME"Volver");
    
menu_display(idmenu0);
    return 
PLUGIN_HANDLED;
}

public 
menu_tops(idmenuitem) {
    if (!
g_Conectado[id]) {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    
    if (
item == MENU_EXIT) {
        
menu_destroy(menu);
        
Clcmd_Menu(id);
        return 
PLUGIN_HANDLED;
    }
    
    
menu_destroy(menu);
    
g_Top15_Seleccionado[id] = item;
    
Show_Top_Seleccionado(id);
    return 
PLUGIN_HANDLED;
}

Show_Top_Seleccionado(id) {
    new 
menug_Sort_MenuNombre[32], Top15LoopKeyIDPosision_ID[2];
    
    switch (
g_Top15_Seleccionado[id]) {
        case 
0: {
            
menu menu_create("GENERAL""top15_seleccionado");
            
            new 
MatadosMuertes;
            
            
g_Sort_Menu    adv_vault_sort_create(g_ADV_VaultORDER_DESCTIEMPO_GUARDADO0g_Campos[MATADOS], g_Campos[MUERTES]);
            
            
Top15Loop min(adv_vault_sort_numresult(g_ADV_Vaultg_Sort_Menu), 15);
            
            for (new 
Pos 1Pos <= Top15Loop; ++Pos) {
                
KeyID adv_vault_sort_position(g_ADV_Vaultg_Sort_MenuPos);
                
                if (!
adv_vault_get_prepare(g_ADV_VaultKeyID))
                    continue;
                
                
Matados adv_vault_get_field(g_ADV_Vaultg_Campos[MATADOS]);
                
Muertes adv_vault_get_field(g_ADV_Vaultg_Campos[MUERTES]);
                
                
adv_vault_get_keyname(g_ADV_VaultKeyIDNombrecharsmax(Nombre));
                
                
formatex(g_menucharsmax(g_menu), "%s\r: \y%s \w/ \y%s"Nombreadd_point(Matados), add_point(Muertes));
                
num_to_str(PosPosision_IDcharsmax(Posision_ID));
                
menu_additem(menug_menuPosision_ID);
            }
        }
        case 
1: {
            
menu menu_create("CTs MATADOS""top15_seleccionado");
            
            new 
CTMatados;
            
            
g_Sort_Menu    adv_vault_sort_create(g_ADV_VaultORDER_DESCTIEMPO_GUARDADO0g_Campos[CT_MATADOS]);
            
            
Top15Loop min(adv_vault_sort_numresult(g_ADV_Vaultg_Sort_Menu), 15);
            
            for (new 
Pos 1Pos <= Top15Loop; ++Pos) {
                
KeyID adv_vault_sort_position(g_ADV_Vaultg_Sort_MenuPos);
                
                if (!
adv_vault_get_prepare(g_ADV_VaultKeyID))
                    continue;
                
                
CTMatados adv_vault_get_field(g_ADV_Vaultg_Campos[CT_MATADOS]);
                
                
adv_vault_get_keyname(g_ADV_VaultKeyIDNombrecharsmax(Nombre));
                
                
formatex(g_menucharsmax(g_menu), "%s\r: \y%s"Nombreadd_point(CTMatados));
                
num_to_str(PosPosision_IDcharsmax(Posision_ID));
                
menu_additem(menug_menuPosision_ID);
            }
        }
        case 
2: {
            
menu menu_create("TTs MATADOS""top15_seleccionado");
            
            new 
TTMatados;
            
            
g_Sort_Menu    adv_vault_sort_create(g_ADV_VaultORDER_DESCTIEMPO_GUARDADO0g_Campos[TT_MATADOS]);
            
            
Top15Loop min(adv_vault_sort_numresult(g_ADV_Vaultg_Sort_Menu), 15);
            
            for (new 
Pos 1Pos <= Top15Loop; ++Pos) {
                
KeyID adv_vault_sort_position(g_ADV_Vaultg_Sort_MenuPos);
                
                if (!
adv_vault_get_prepare(g_ADV_VaultKeyID))
                    continue;
                
                
TTMatados adv_vault_get_field(g_ADV_Vaultg_Campos[TT_MATADOS]);
                
                
adv_vault_get_keyname(g_ADV_VaultKeyIDNombrecharsmax(Nombre));
                
                
formatex(g_menucharsmax(g_menu), "%s\r: \y%s"Nombreadd_point(TTMatados));
                
num_to_str(PosPosision_IDcharsmax(Posision_ID));
                
menu_additem(menug_menuPosision_ID);
            }
        }
        case 
3: {
            
menu menu_create("DAÑO HECHO SIENDO CT""top15_seleccionado");
            
            new 
CTDanio;
            
            
g_Sort_Menu    adv_vault_sort_create(g_ADV_VaultORDER_DESCTIEMPO_GUARDADO0g_Campos[DANIO_HECHO_CT]);
            
            
Top15Loop min(adv_vault_sort_numresult(g_ADV_Vaultg_Sort_Menu), 15);
            
            for (new 
Pos 1Pos <= Top15Loop; ++Pos) {
                
KeyID adv_vault_sort_position(g_ADV_Vaultg_Sort_MenuPos);
                
                if (!
adv_vault_get_prepare(g_ADV_VaultKeyID))
                    continue;
                
                
CTDanio adv_vault_get_field(g_ADV_Vaultg_Campos[DANIO_HECHO_CT]);
                
                
adv_vault_get_keyname(g_ADV_VaultKeyIDNombrecharsmax(Nombre));
                
                
formatex(g_menucharsmax(g_menu), "%s\r: \y%s"Nombreadd_point(CTDanio));
                
num_to_str(PosPosision_IDcharsmax(Posision_ID));
                
menu_additem(menug_menuPosision_ID);
            }
        }
        case 
4: {
            
menu menu_create("DAÑO HECHO SIENDO TT""top15_seleccionado");
            
            new 
TTDanio;
            
            
g_Sort_Menu    adv_vault_sort_create(g_ADV_VaultORDER_DESCTIEMPO_GUARDADO0g_Campos[DANIO_HECHO_TT]);
            
            
Top15Loop min(adv_vault_sort_numresult(g_ADV_Vaultg_Sort_Menu), 15);
            
            for (new 
Pos 1Pos <= Top15Loop; ++Pos) {
                
KeyID adv_vault_sort_position(g_ADV_Vaultg_Sort_MenuPos);
                
                if (!
adv_vault_get_prepare(g_ADV_VaultKeyID))
                    continue;
                
                
TTDanio adv_vault_get_field(g_ADV_Vaultg_Campos[DANIO_HECHO_TT]);
                
                
adv_vault_get_keyname(g_ADV_VaultKeyIDNombrecharsmax(Nombre));
                
                
formatex(g_menucharsmax(g_menu), "%s\r: \y%s"Nombreadd_point(TTDanio));
                
num_to_str(PosPosision_IDcharsmax(Posision_ID));
                
menu_additem(menug_menuPosision_ID);
            }
        }
    }
    
    
adv_vault_sort_destroy(g_ADV_Vaultg_Sort_Menu);
    
    
menu_setprop(menuMPROP_BACKNAME"Atrás");
    
menu_setprop(menuMPROP_NEXTNAME"Siguiente");
    
menu_setprop(menuMPROP_EXITNAME"Volver");
    
menu_display(idmenu0);
}

public 
top15_seleccionado(idmenuitem) {
    if (!
g_Conectado[id]) {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    
    if (
item == MENU_EXIT) {
        
menu_destroy(menu);
        
Clcmd_tops15(id);
        return 
PLUGIN_HANDLED;
    }
    
    
Show_Top_Seleccionado(id);
    return 
PLUGIN_HANDLED;
}
    

public 
Clcmd_Menu(id) {
    if (
g_Estado[id] < IDENTIFICADO_ESPEC)
        return 
PLUGIN_HANDLED;
        
    new 
menu menu_create("\yMENÚ DEL USUARIO""menu_estadisticas");
    
    
menu_additem(menu"ESTADÍSTICAS PERSONALES""1");
    
menu_additem(menu"ESTADÍSTICAS DE TUS ARMAS^n""2");
    
menu_additem(menu"RANK""3");
    
menu_additem(menu"TOPS 15^n""4");
    
    
formatex(g_menucharsmax(g_menu), "\yTIEMPO JUGADO\r: \y %d días, %d horas, %d minutos^n^nCUENTA #%s"g_TiempoJugado[id][0], g_TiempoJugado[id][1], g_TiempoJugado[id][2], add_point(g_Cuenta_Numero[id]));
    
menu_addtext(menug_menu);
    
    
menu_setprop(menuMPROP_EXITNAME"SALIR");
    
menu_display(idmenu0);
    return 
PLUGIN_HANDLED;
}
    
public 
menu_estadisticas(idmenuitem) {
    if (!
g_Conectado[id] || item == MENU_EXIT) {
        
menu_destroy(menu);
        return 
PLUGIN_HANDLED;
    }
    
    
menu_destroy(menu);
    switch (
item) {
        case 
0show_menu_estadisticas(id);
        case 
1ChatColor(id"!g%s !yEN CONSTRUCCIÓN :)"Prefijo);
        case 
2Clcmd_Rank(id);
        case 
3Clcmd_tops15(id);
    }
    
    return 
PLUGIN_HANDLED;
}
/***********************************************/
/************ COMANDOS SAY/SAY_TEAM ************/
/***********************************************/


show_menu_estadisticas(id) {
    static 
lenlen 0;
    
    
len formatex(g_menu[len], charsmax(g_menu), "\yMÍS ESTADÍSTICAS \r[%d / 3]^n^n"g_Pagina_Menu[id][PAG_ESTADISTICAS] + 1);
    
    switch (
g_Pagina_Menu[id][PAG_ESTADISTICAS]) {
        case 
0: {
            
len += formatex(g_menu[len], charsmax(g_menu) - len"\wTotal de enemigos matados\r: \y%s^n\wTotal de veces muerto\r: \y%s^n^n",
            
add_point(g_Matados_T[id]), add_point(g_Muertes_T[id]));
            
            
len += formatex(g_menu[len], charsmax(g_menu) - len"\wAnti-Terroristas matados\r: \y%s^n\wVeces muerto como Anti-Terrorista\r: \y%s^n",
            
add_point(g_Matados[id][ANTI_TERRORISTAS]), add_point(g_Muertes[id][ANTI_TERRORISTAS]));
            
            
len += formatex(g_menu[len], charsmax(g_menu) - len"\wTerroristas matados\r: \y%s^n\wVeces muerto como Terrorista\r: \y%s^n",
            
add_point(g_Matados[id][TERRORISTAS]), add_point(g_Muertes[id][TERRORISTAS]));
            
            
len += formatex(g_menu[len], charsmax(g_menu) - len"\wEnemigos matados por HS\r: \y%s^n\wVeces muerto por HS\r: \y%s^n^n",
            
add_point(g_Matados_Especial[id][HEADSHOTS_ATACANTE]), add_point(g_Muertes_Especial[id][HEADSHOTS_VICTIMA]));
        }
        case 
1: {
            
len += formatex(g_menu[len], charsmax(g_menu) - len"\wEnemigos matados por KNIFE\r: \y%s^n\wVeces muerto por KNIFE\r: \y%s^n^n",
            
add_point(g_Matados_Especial[id][KNIFE_ATACANTE]), add_point(g_Muertes_Especial[id][KNIFE_VICTIMA]));
            
            
len += formatex(g_menu[len], charsmax(g_menu) - len"\yTIEMPO JUGADO COMO TERRORISTA\r:^n\y%d días, %d horas, %d minutos^n^n",
            
g_TiempoJugado_Team[id][0][0], g_TiempoJugado_Team[id][0][1], g_TiempoJugado_Team[id][0][2]);
            
            
len += formatex(g_menu[len], charsmax(g_menu) - len"\yTIEMPO JUGADO COMO ANTI-TERRORISTA\r:^n\y%d días, %d horas, %d minutos^n^n",
            
g_TiempoJugado_Team[id][1][0], g_TiempoJugado_Team[id][1][1], g_TiempoJugado_Team[id][1][2]);
        }
        case 
2: {
            
len += formatex(g_menu[len], charsmax(g_menu) - len"\wDaño hecho como Terrorista\r: \y%s^n\wDaño recibido como Terrorista\r: \y%s^n",
            
add_point(g_danio_hecho[id][TERRORISTAS]), add_point(g_danio_recibido[id][TERRORISTAS]));
            
            
len += formatex(g_menu[len], charsmax(g_menu) - len"\wDaño hecho como Anti-Terrorista\r: \y%s^n\wDaño recibido como Anti-Terrorista\r: \y%s^n^n",
            
add_point(g_danio_hecho[id][ANTI_TERRORISTAS]), add_point(g_danio_recibido[id][ANTI_TERRORISTAS]));
        }
    }
    
    
len += formatex(g_menu[len], charsmax(g_menu) - len"\r9.\w Atrás / Siguiente^n\r0.\w Volver");
    
    
show_menu(idKEYSMENUg_menu, -1"Menu Estadisticas Personales");
}

public 
menu_estadisticas_personales(iditem) {
    switch (
item) {
        case 
8: {
            switch (
g_Pagina_Menu[id][PAG_ESTADISTICAS]) {
                case 
0: {
                    
g_Pagina_Menu[id][PAG_ESTADISTICAS] = 1;
                    
show_menu_estadisticas(id);
                }
                case 
1: {
                    
g_Pagina_Menu[id][PAG_ESTADISTICAS] = 2;
                    
show_menu_estadisticas(id);
                }
                case 
2: {
                    
g_Pagina_Menu[id][PAG_ESTADISTICAS] = 0;
                    
show_menu_estadisticas(id);
                }
                
                
/*********** SOMEDAY :) ***********/
                
                /*case 3: {
                    g_Pagina_Menu[id][PAG_ESTADISTICAS] = 0;
                    show_menu_estadisticas(id);
                }*/
            
}
        }
        case 
9: {
            
Clcmd_Menu(id);
            return 
PLUGIN_HANDLED;
        }
    }
    
    
show_menu_estadisticas(id);
    return 
PLUGIN_HANDLED;
}


/************************************************/
/******************** STOCKS ********************/
/************************************************/
stock ChatColor(Index, const Entrada[], any:...) {
    static 
Mensaje[192], Jugadores[32], g_msgSayTextCounti;
    
vformat(Mensajecharsmax(Mensaje), Entrada3);
    
    if (!
g_msgSayTextg_msgSayText get_user_msgid("SayText");
    
    
replace_all(Mensajecharsmax(Mensaje), "!g""^4");
    
replace_all(Mensajecharsmax(Mensaje), "!y""^1");
    
replace_all(Mensajecharsmax(Mensaje), "!t""^3");
    
    if (
Index) {
        
Jugadores[0] = Index;
        
Count 1;
    } else 
get_players(JugadoresCount"c");
    
    for (
0Count; ++i) {
        
message_begin(MSG_ONE_UNRELIABLEg_msgSayText_Jugadores[i]);
        
write_byte(Jugadores[i]);
        
write_string(Mensaje);
        
message_end();
    }
}

stock ShowHUD_Message(idiColors[3] = { 255255255 }, Float:fPosX = -1.0Float:fPosY = -1.0iEffect 0Float:fTime 0.0Float:fInTime 0.5Float:fOutTime 0.5szMessage[])
{
    
set_dhudmessage(iColors[0], iColors[1], iColors[2], fPosXfPosYiEffect0.0fTimefInTimefOutTime);
    
show_dhudmessage(idszMessage);
}

stock fm_get_weapon_ent_owner(ent) {
    if (
pev_valid(ent) != OFFSET_PDATA)
        return -
1;
    
    return 
get_pdata_cbase(entOFFSET_WEAPON_OWNEROFFSET_LINUX_WEAPONS);
}

// Stock by Kiske -counts number of characters in a string-
stock count_characters(const szString[], const len sizeof(szString)) {
    new 
counti;

    for (
leni++)
    {
        if (
isalnum(szString[i]))
            
count++;
    }
    
    return 
count;
}

// Stock by Neeeeeeeeeel.- -check special characters in a string-
stock contain_special_characters(const str[]) {
    static 
len;
    
len strlen(str);
    
    for (new 
0leni++)
    {
        if (!
isalpha(str[i]) && !isdigit(str[i]))
            return 
1;
    }
    
    return 
0;
}

// Stock by Asdito´^ -add point to numbers-
stock add_point(number) {
    new 
countistr[29], str2[35], len;
    
num_to_str(numberstrcharsmax(str));
    
len strlen(str);
    
    for (
0leni++)
    {
        if (
!= && ((len i) %== 0))
        {
            
add(str2charsmax(str2), "."1);
            
count++;
            
add(str2[i+count], 1str[i], 1);
        }
        else
            
add(str2[i+count], 1str[i], 1);
    }

    return 
str2;


Cuando vas a postear un codigo, no te olvides de dejar los includes....
___________________________________
SI NECESITAS UN PLUGIN TE LO HAGO $$$
COMUNICATE A MI DISCORD: emanuelitop15
Responder
#3
(28/06/2021, 07:06 AM)[E]manuelitop15 escribió: Fijate si te anda, lo edite en algunas partes. El codigó esta mal hecho en alguans partes asi que te recomiendo arreglarlas o te va a andar muy mal..

Código PHP:
#include <amxmodx>
#include <adv_vault>
#include <amxmisc>
#include <hamsandwich>
#include <fakemeta>
#include <unixtime>
#include <cstrike>

new const NOMBRE[] = "Sistema de estadisticas (ADV_VAULT)";
new const 
VERSION[] = "v1.50 BETA";
new const 
CREADOR[] = "FEDERICOMB";

new const 
Prefijo[] = "[AMXX]";
//new const Prefijo_BAN[] = "[AMXX - BAN]";
new const PREFIJO_SETINFO[] = "_password";
new const 
NOMBRE_MODO[] = "Bienvenido al servidor";

enum {
    NO_REGISTRADO 0,
    REGISTRADO,
    BANEADO,
    IDENTIFICADO_ESPEC,
    IDENTIFICADO
};

enum {
    CUENTA_NUMERO 0,
    CUENTA,
    CONTRASENIA,
    FECHA_REGISTRO,
    ULTIMA_SESION,
    TIEMPO_JUGADO,
    TIEMPO_JUGADO_TT,
    TIEMPO_JUGADO_CT,
    DANIO_HECHO_TT,
    DANIO_RECIBIDO_TT,
    DANIO_HECHO_CT,
    DANIO_RECIBIDO_CT,
    MATADOS,
    MUERTES,
    TT_MATADOS,
    TT_MUERTES,
    CT_MATADOS,
    CT_MUERTES,
    MATADOS_ESPECIAL,
    MUERTES_ESPECIAL,
    
    MAX_FIELDS
};

enum {
    CUENTAS_CREADAS 0,
    
    MAX_FIELDS2
};

enum {
    PAG_TOP15 0,
    PAG_ESTADISTICAS,
    
    MAX_PAGS
};

enum {
    HEADSHOTS_ATACANTE 0,
    KNIFE_ATACANTE,
    
    MAX_ESPECIAL
};

enum {
    HEADSHOTS_VICTIMA 0,
    KNIFE_VICTIMA,
    
    MAX_ESPECIAL2
};

enum {
    TERRORISTAS 0,
    ANTI_TERRORISTAS,
    
    MAX_TEAM
};

enum (+=100) {
    TASK_DHUD 3000,
    TASK_TIME
};

/************* ALGUNAS VARIABLES *************/

new g_ADV_Vault;
new 
g_ADV_Sort;
new 
g_Campos[MAX_FIELDS];

new 
g_ADV_Vault2;
new 
g_Campos2[MAX_FIELDS2];

new 
g_Cuenta_Numero[33];
new 
g_Nombre[33][32];
new 
g_Contrasenia[33][35];

new 
g_Fecha_Registro[33];
new 
g_Ultima_Sesion[33];
new 
g_Estado[33];

new 
g_Conectado[33];
new 
g_EstaVivo[33];
new 
g_ArmaActual[33];

new 
g_danio_hecho[33][MAX_TEAM], g_danio_recibido[33][MAX_TEAM];
new 
g_Matados_T[33], g_Muertes_T[33];
new 
g_Matados[33][MAX_TEAM], g_Muertes[33][MAX_TEAM];
new 
g_Matados_Especial[33][MAX_ESPECIAL], g_Muertes_Especial[33][MAX_ESPECIAL2];

new 
g_TiempoJugado[33][4];
new 
g_TiempoJugado_Team[33][2][4];

new 
g_Cuentas_Creadas;
new 
g_MaxPlayers;

new 
g_menu[512];

new 
g_Pagina_Menu[33][MAX_PAGS];
new 
g_Top15_Seleccionado[33];

/************* FIN ALGUNAS VARIABLES *************/


/************* ALGUNAS CONSTANTES :) *************/

// Minimo de caracteres para la contrasenia
const CARACTERES_CONTRASENIA 4;

const 
VGUI_JOIN_TEAM_NUM            2;
const 
OFFSET_LAST_HIT_GROUP        75;

const 
CSW_SHIELD                    2;

const 
OFFSET_PDATA                    2;
const 
OFFSET_LINUX_WEAPONS            4;
const 
OFFSET_WEAPON_OWNER            41;

const 
KEYSMENU MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0;

// Tiempo en segundos para el guardado automatico y la actualizacion del rank.
const TIEMPO_GUARDADO 300// 300 = 5 minutos.  60 x 5 = 300.

// Estraido de "Weapon_modifier" by KISKE
new const g_weapon_ent_names_all[][] = {"weapon_thighpack""weapon_p228""weapon_shield""weapon_scout""weapon_hegrenade""weapon_xm1014""weapon_c4",
"weapon_mac10""weapon_aug""weapon_smokegrenade""weapon_elite""weapon_fiveseven""weapon_ump45""weapon_sg550""weapon_galil""weapon_famas""weapon_usp",
"weapon_glock18""weapon_awp""weapon_mp5navy""weapon_m249""weapon_m3""weapon_m4a1""weapon_tmp""weapon_g3sg1""weapon_flashbang""weapon_deagle",
"weapon_sg552""weapon_ak47""weapon_knife""weapon_p90""w_backpack"};

/************* FIN ALGUNAS CONSTANTES :) *************/


public plugin_init() {
    register_plugin(NOMBREVERSIONCREADOR);
    
    register_logevent
("logevent_round_end"2"1=Round_End");
    
    RegisterHam
(Ham_Spawn"player""fw_PlayerSpawn_Post"1);
    RegisterHam(Ham_TakeDamage"player""fw_TakeDamage");
    RegisterHam(Ham_Killed"player""fw_PlayerKilled");
    for (new 0CSW_P90+2i++)
    {
        if (!= && != && != 31)
            RegisterHam(Ham_Item_Deployg_weapon_ent_names_all[i], "fw_Item_Deploy_Post"1);
    }
    
    register_forward
(FM_ClientUserInfoChanged"fw_ClientUserInfoChanged");
    
    g_ADV_Vault                    
adv_vault_open("Estadisticas"false);
    g_Campos[CUENTA_NUMERO]        adv_vault_register_field(g_ADV_Vault"Cuenta_Numero"DATATYPE_INT);
    g_Campos[CUENTA]            adv_vault_register_field(g_ADV_Vault"Cuenta"DATATYPE_STRINGsizeof(g_Nombre[]));
    g_Campos[CONTRASENIA]        adv_vault_register_field(g_ADV_Vault"Contrasenia"DATATYPE_STRINGsizeof(g_Contrasenia[]));
    g_Campos[FECHA_REGISTRO]    adv_vault_register_field(g_ADV_Vault"Fecha_Registro"DATATYPE_INT);
    g_Campos[ULTIMA_SESION]        adv_vault_register_field(g_ADV_Vault"Ultima_Sesion"DATATYPE_INT);
    g_Campos[TIEMPO_JUGADO]        adv_vault_register_field(g_ADV_Vault"Tiempo_Jugado"DATATYPE_ARRAYsizeof(g_TiempoJugado[]));
    g_Campos[TIEMPO_JUGADO_TT]    adv_vault_register_field(g_ADV_Vault"Tiempo_TT"DATATYPE_ARRAYsizeof(g_TiempoJugado_Team[][]));
    g_Campos[TIEMPO_JUGADO_CT]    adv_vault_register_field(g_ADV_Vault"Tiempo_CT"DATATYPE_ARRAYsizeof(g_TiempoJugado_Team[][]));
    g_Campos[DANIO_HECHO_TT]    adv_vault_register_field(g_ADV_Vault"Danio_TT"DATATYPE_INT);
    g_Campos[DANIO_RECIBIDO_TT] = adv_vault_register_field(g_ADV_Vault"RDanio_TT"DATATYPE_INT);
    g_Campos[DANIO_HECHO_CT]    adv_vault_register_field(g_ADV_Vault"Danio_CT"DATATYPE_INT);
    g_Campos[DANIO_RECIBIDO_CT] = adv_vault_register_field(g_ADV_Vault"RDanio_CT"DATATYPE_INT);
    g_Campos[MATADOS]            adv_vault_register_field(g_ADV_Vault"Matados"DATATYPE_INT);
    g_Campos[MUERTES]            adv_vault_register_field(g_ADV_Vault"Muertes"DATATYPE_INT);
    g_Campos[TT_MUERTES]        adv_vault_register_field(g_ADV_Vault"TT_Matados"DATATYPE_INT);
    g_Campos[TT_MATADOS]        adv_vault_register_field(g_ADV_Vault"TT_Muertes"DATATYPE_INT);
    g_Campos[CT_MATADOS]        adv_vault_register_field(g_ADV_Vault"CT_Matados"DATATYPE_INT);
    g_Campos[CT_MUERTES]        adv_vault_register_field(g_ADV_Vault"CT_Muertes"DATATYPE_INT);
    g_Campos[MATADOS_ESPECIAL]    adv_vault_register_field(g_ADV_Vault"Matados_Especial"DATATYPE_ARRAYsizeof(g_Matados_Especial[]));
    g_Campos[MUERTES_ESPECIAL]    adv_vault_register_field(g_ADV_Vault"Muertes_Especial"DATATYPE_ARRAYsizeof(g_Muertes_Especial[]));
    adv_vault_init(g_ADV_Vault);
    
    g_ADV_Sort                    
adv_vault_sort_create(g_ADV_VaultORDER_DESCTIEMPO_GUARDADO0g_Campos[MATADOS]);
    
    g_ADV_Vault2                
adv_vault_open("Estadisticas_Servidor"false);
    g_Campos2[CUENTAS_CREADAS]    adv_vault_register_field(g_ADV_Vault2"Cuentas_Creadas"DATATYPE_INT);
    adv_vault_init(g_ADV_Vault2);
    
    Cargar_Datos_Generales
();
    
    register_clcmd
("say /rank""Clcmd_Rank");
    register_clcmd("say_team /rank""Clcmd_Rank");
    register_clcmd("say /top15""Clcmd_tops15");
    register_clcmd("say_team /top15""Clcmd_tops15");
    register_clcmd("say /menu""Clcmd_Menu");
    register_clcmd("say_team /menu""Clcmd_Menu");
    
    register_clcmd
("chooseteam""Clcmd_Changeteam");
    register_clcmd("jointeam""Clcmd_Changeteam");
    
    register_clcmd
("CREAR_CONTRASENIA""Crear_Contrasenia");
    register_clcmd("CONFIRMAR_CONTRASENIA""Confirmar_Contrasenia");
    register_clcmd("INGRESAR_CONTRASENIA""Ingresar_Contrasenia");
        
    register_menu
("Intro Menu"KEYSMENU"menu_intro");
    register_menu("Menu Estadisticas Personales"KEYSMENU"menu_estadisticas_personales");
    
    register_message
(get_user_msgid("ShowMenu"), "Message_Showmenu");
    register_message(get_user_msgid("VGUIMenu"), "Message_Vguimenu");
    
    g_MaxPlayers 
get_maxplayers();
    
    set_task
(float(TIEMPO_GUARDADO), "Guardado_Automatico"___"b");
}

Cargar_Datos_Generales() {
    if (!adv_vault_get_prepare(g_ADV_Vault21)) {
        adv_vault_set_start(g_ADV_Vault2);
        
        g_Cuentas_Creadas 
0;
        adv_vault_set_field(g_ADV_Vault2g_Campos2[CUENTAS_CREADAS], g_Cuentas_Creadas);
        
        adv_vault_set_end
(g_ADV_Vault21);
        return;
    }
    
    g_Cuentas_Creadas 
adv_vault_get_field(g_ADV_Vault2g_Campos2[CUENTAS_CREADAS]);
}

public 
Guardado_Automatico() {
    for (new id 1id <= g_MaxPlayers; ++id) {
        if (!g_Conectado[id] || g_Estado[id] < IDENTIFICADO)
            continue;
        
        Guardar_Datos
(id);
        ChatColor(id"!g%s !yTU DATOS HAN SIDO GUARDADOS CORRECTAMENTE."Prefijo);
    }
}

public 
logevent_round_end() {
    for (new id 1id <= g_MaxPlayersid++) {
        Guardar_Datos(id);
    }
}

public 
client_putinserver(id) {
    get_user_name(idg_Nombre[id], charsmax(g_Nombre[]));
    
    g_Contrasenia
[id][0] = '^0';
    g_Conectado[id] = true;
    g_EstaVivo[id] = false;
    g_Estado[id] = REGISTRADO;
            
    Cargar_Datos
(id);
}

public 
client_disconnected(id) {
    Guardar_Datos(id);
    g_Conectado[id] = false;
    g_EstaVivo[id] = false;
    g_Estado[id] = NO_REGISTRADO;
    
    remove_task
(id+TASK_DHUD);
    remove_task(id+TASK_TIME);
}

/**********************************************/
/************* SISTEMA DE CUENTAS *************/
/**********************************************/
public Crear_Contrasenia(id) {
    if (g_Estado[id] != NO_REGISTRADO)
        return;
        
    read_args
(g_Contrasenia[id], charsmax(g_Contrasenia[]));
    remove_quotes(g_Contrasenia[id]);
    trim(g_Contrasenia[id]);
    
    
if (count_characters(g_Contrasenia[id]) < CARACTERES_CONTRASENIA || !g_Contrasenia[id][0] || (g_Contrasenia[id][0] == ' ' && (!g_Contrasenia[id][1] || g_Contrasenia[id][1] == ' '))) {
        client_print(idprint_center"La contraseña tiene que tener al menos %d carácteres"CARACTERES_CONTRASENIA);
        show_menu_registracion(id);
        g_Contrasenia[id][0] = '^0';
        ShowHUD_Message(id_0.000.0000.000.000.00"");
        client_cmd(id"spk buttons/button2.wav");
        return;
    }
    
    
if (contain_special_characters(g_Contrasenia[id])) {
        client_print(idprint_center"La contraseña no tiene que tener carácteres especiales");
        show_menu_registracion(id);
        g_Contrasenia[id][0] = '^0';
        ShowHUD_Message(id_0.000.0000.000.000.00"");
        client_cmd(id"spk buttons/button2.wav");
        return;
    }
    
    
if (equal(g_Contrasenia[id], g_Nombre[id])) {
        client_print(idprint_center"La contraseña no puede ser igual al nombre de cuenta");
        show_menu_registracion(id);
        g_Contrasenia[id][0] = '^0';
        ShowHUD_Message(id_0.000.0000.000.000.00"");
        client_cmd(id"spk buttons/button2.wav");
        return;
    }
    
    client_cmd
(id"messagemode ^"CONFIRMAR_CONTRASENIA^"");
    client_cmd(id"spk buttons/button3.wav");
    ShowHUD_Message(id, {2550255}, -1.00.200500.01.001.00"REPITA LA CONTRASEÑA^nPARA PODER CONTINUAR");
}

public 
Confirmar_Contrasenia(id) {
    if (g_Estado[id] != NO_REGISTRADO)
        return;
    
    
new szPassword[35];
    read_args(szPasswordcharsmax(szPassword));
    remove_quotes(szPassword);
    trim(szPassword);
    
    
if (!equal(szPasswordg_Contrasenia[id])) {
        client_print(idprint_center"La contraseña ingresada no coincide con la anterior");
        show_menu_registracion(id);
        g_Contrasenia[id][0] = '^0';
        ShowHUD_Message(id_0.000.0000.000.000.00"");
        client_cmd(id"spk buttons/button2.wav");
        return;
    }
    
    show_menu_confirmacion
(id);
}

public 
Ingresar_Contrasenia(id) {
    if (g_Estado[id] >= IDENTIFICADO_ESPEC)
        return;
    
    read_args
(g_Contrasenia[id], charsmax(g_Contrasenia[]));
    remove_quotes(g_Contrasenia[id]);
    trim(g_Contrasenia[id]);
    
    
new szPass[35], szBuffer[34];
    adv_vault_get_prepare(g_ADV_Vault_g_Nombre[id]);
    adv_vault_get_field(g_ADV_Vaultg_Campos[CONTRASENIA], szPasscharsmax(szPass));
    md5(g_Contrasenia[id], szBuffer);
    
    
if (equal(szPassszBuffer)) {
        client_cmd(id"setinfo ^"%s^" ^"%s^""PREFIJO_SETINFOg_Contrasenia[id]);
        ShowHUD_Message(id_0.000.0000.000.000.00"");
        Cargar_Datos(id);
    }
    else {
        ShowHUD_Message(id, {25500}, -1.00.20010.01.001.00"LA CONTRASEÑA INGRESADA^n NO COINCIDE CON LA DE ESTA CUENTA");
        client_cmd(id"spk buttons/button2.wav");
        
        g_Contrasenia
[id][0] = '^0';
        show_menu_registracion(id);
    }
}

public 
Clcmd_Changeteam(id) {
    if (g_Estado[id] < IDENTIFICADO_ESPEC)
    {
        show_menu_ingresar(id);
        return PLUGIN_HANDLED;
    }
    
    
return PLUGIN_CONTINUE;
}

public 
show_menu_registracion(id) {
    if (!g_Conectado[id]) return;
    
    formatex
(g_menucharsmax(g_menu), "\y%s \r%s^nBY \y%s"NOMBRE_MODOVERSIONCREADOR);
    new menu menu_create(g_menu"menu_registracion");
    
    menu_additem
(menug_Estado[id] == REGISTRADO "\wIDENTIFICARSE" "\dIDENTIFICARSE""1");
    menu_additem(menu, (g_Estado[id] == REGISTRADO || g_Estado[id] == BANEADO) ? "\dREGISTRARSE" "\wREGISTRARSE""2");
    
    
if (g_Estado[id] == REGISTRADO || g_Estado[id] == BANEADO) {
        formatex(g_menucharsmax(g_menu), "^n^n\yCUENTA #%s"add_point(g_Cuenta_Numero[id]));
        menu_addtext(menug_menu0);
    }
    
    
/*if (g_Estado[id] == BANEADO) {
        formatex(g_menu, charsmax(g_menu), "^n^n\wTU CUENTA SE ENCUENTRA BANEADA^n^nEXPIRA\r: \y%s^n\wRAZÓN\r: \y%s", g_Baneado_Hasta[id], g_Razon_Ban[id]);
        menu_addtext(menu, g_menu, 0);
    }*/
    
    menu_setprop
(menuMPROP_EXITMEXIT_NEVER);
    menu_display(idmenu);
}

public 
menu_registracion(idmenuitem) {
    if (!g_Conectado[id]) {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }
    
    menu_destroy
(menu);
    
    
if (g_Estado[id] != BANEADO) {
        if (g_Estado[id] == REGISTRADO) {
            switch (item) {
                case 0: {
                    client_cmd(id"messagemode ^"INGRESAR_CONTRASENIA^"");
                    client_cmd(id"spk buttons/button3.wav");
                    g_Contrasenia[id][0] = '^0';
                    ShowHUD_Message(id, {0255255}, -1.00.200500.01.001.00"INGRESE LA CONTRASEÑA^n QUE PROTEGE A ESTA CUENTA");
                }
                case 1: {
                    client_print(idprint_center"El usuario ya está registrado");
                    client_cmd(id"spk buttons/button2.wav");
                    show_menu_registracion(id);
                }
            }
        }
        else {
            switch (item) {
                case 0: {
                    client_print(idprint_center"El usuario no está registrado");
                    client_cmd(id"spk buttons/button2.wav");
                    show_menu_registracion(id);
                }
                case 1: {
                    client_cmd(id"messagemode ^"CREAR_CONTRASENIA^"");
                    client_cmd(id"spk buttons/button3.wav");
                    g_Contrasenia[id][0] = '^0';
                    ShowHUD_Message(id, {0255255}, -1.00.200500.01.001.00"INGRESE UNA CONTRASEÑA^n QUE PROTEGERÁ A ESTA CUENTA");
                }
            }
        }
    }
    else
        show_menu_registracion(id);
    
    
return PLUGIN_HANDLED;
}

show_menu_confirmacion(id) {
    formatex(g_menucharsmax(g_menu), "CONFIRME LOS DATOS^nPARA PROCEDER A REGISTRARSE\r:^n^n\wCuenta: \y%s^n\wContraseña: \y%s"g_Nombre[id], g_Contrasenia[id]);
    new menu menu_create(g_menu"menu_confirmacion");
    
    menu_additem
(menu"Sí, quiero registrarme""1"0);
    menu_additem(menu"No, deshacer los cambios""2"0);
    
    menu_setprop
(menuMPROP_EXITMEXIT_NEVER);
    menu_display(idmenu);
    
    ShowHUD_Message
(id_0.000.0000.000.000.00"");
    client_cmd(id"spk buttons/blip2.wav");
}

public 
menu_confirmacion(idmenuitem) {
    if (!g_Conectado[id]) {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }
    
    menu_destroy
(menu);
    switch (item) {
        case 0crear_cuenta(id);
        case 1: {
            g_Contrasenia[id][0] = '^0';
            show_menu_registracion(id);
            ShowHUD_Message(id_0.000.0000.000.000.00"");
        }
    }
    
    
return PLUGIN_HANDLED;
}

crear_cuenta(id) {
    new szBuffer[34];
    md5(g_Contrasenia[id], szBuffer);
    
    
// Chau get_time()..
    //get_time("%d/%m/%Y - %H:%M:%S", szFechaRegistro, 24);
    
    
// Hola get_systime()..
    g_Fecha_Registro[id] = get_systime();

    g_Cuentas_Creadas++;
    g_Cuenta_Numero[id] = g_Cuentas_Creadas;
    
    g_Ultima_Sesion
[id] = 0;
    arrayset(g_TiempoJugado[id], 0sizeof(g_TiempoJugado[]));
    arrayset(g_TiempoJugado_Team[id][0], 0sizeof(g_TiempoJugado_Team[][]));
    arrayset(g_TiempoJugado_Team[id][1], 0sizeof(g_TiempoJugado_Team[][]));
    arrayset(g_danio_hecho[id], 0sizeof(g_danio_hecho[]));
    arrayset(g_danio_recibido[id], 0sizeof(g_danio_recibido[]));
    g_Matados_T[id] = 0;
    g_Muertes_T[id] = 0;
    arrayset(g_Matados[id], 0sizeof(g_Matados[]));
    arrayset(g_Muertes[id], 0sizeof(g_Muertes[]));
    arrayset(g_Matados_Especial[id], 0sizeof(g_Matados_Especial[]));
    arrayset(g_Muertes_Especial[id], 0sizeof(g_Muertes_Especial[]));
    
    
// Guardo los datos del usuario nuevo.
    adv_vault_set_start(g_ADV_Vault);    
    adv_vault_set_field
(g_ADV_Vaultg_Campos[CUENTA_NUMERO], g_Cuenta_Numero[id]);
    adv_vault_set_field(g_ADV_Vaultg_Campos[CUENTA], g_Nombre[id]);
    adv_vault_set_field(g_ADV_Vaultg_Campos[CONTRASENIA], szBuffer);
    adv_vault_set_field(g_ADV_Vaultg_Campos[FECHA_REGISTRO], g_Fecha_Registro[id]);
    adv_vault_set_field(g_ADV_Vaultg_Campos[ULTIMA_SESION], g_Ultima_Sesion[id]);
    adv_vault_set_field(g_ADV_Vaultg_Campos[TIEMPO_JUGADO], g_TiempoJugado[id]);
    adv_vault_set_field(g_ADV_Vaultg_Campos[TIEMPO_JUGADO_TT], g_TiempoJugado[id][TERRORISTAS]);
    adv_vault_set_field(g_ADV_Vaultg_Campos[TIEMPO_JUGADO_CT], g_TiempoJugado[id][ANTI_TERRORISTAS]);
    
    adv_vault_set_field
(g_ADV_Vaultg_Campos[DANIO_HECHO_TT], g_danio_hecho[id][TERRORISTAS]);
    adv_vault_set_field(g_ADV_Vaultg_Campos[DANIO_RECIBIDO_TT], g_danio_recibido[id][TERRORISTAS]);
    adv_vault_set_field(g_ADV_Vaultg_Campos[DANIO_HECHO_CT], g_danio_hecho[id][ANTI_TERRORISTAS]);
    adv_vault_set_field(g_ADV_Vaultg_Campos[DANIO_RECIBIDO_CT], g_danio_recibido[id][ANTI_TERRORISTAS]);
    
    adv_vault_set_field
(g_ADV_Vaultg_Campos[MATADOS], g_Matados_T[id]);
    adv_vault_set_field(g_ADV_Vaultg_Campos[MUERTES], g_Muertes_T[id]);
    adv_vault_set_field(g_ADV_Vaultg_Campos[TT_MATADOS], g_Matados[id][TERRORISTAS]);
    adv_vault_set_field(g_ADV_Vaultg_Campos[TT_MUERTES], g_Muertes[id][TERRORISTAS]);
    adv_vault_set_field(g_ADV_Vaultg_Campos[CT_MATADOS], g_Matados[id][ANTI_TERRORISTAS]);
    adv_vault_set_field(g_ADV_Vaultg_Campos[CT_MUERTES], g_Muertes[id][ANTI_TERRORISTAS]);
    
    adv_vault_set_field
(g_ADV_Vaultg_Campos[MATADOS_ESPECIAL], g_Matados_Especial[id]);
    adv_vault_set_field(g_ADV_Vaultg_Campos[MUERTES_ESPECIAL], g_Muertes_Especial[id]);
    adv_vault_set_end(g_ADV_Vault0g_Nombre[id]);
    
    
// Guardo un numero mas a la cantidad de cuentas creadas.
    adv_vault_set_start(g_ADV_Vault2);    
    adv_vault_set_field
(g_ADV_Vault2g_Campos2[CUENTAS_CREADAS], g_Cuentas_Creadas);    
    adv_vault_set_end
(g_ADV_Vault21);
        
    ShowHUD_Message
(id, {02550}, -1.00.2007.001.001.00"¡ REGISTRO COMPLETADO EXITOSAMENTE !");
    client_cmd(id"spk buttons/bell1.wav");
    client_cmd(id"setinfo ^"%s^" ^"%s^""PREFIJO_SETINFOg_Contrasenia[id]);
    
    Cargar_Datos
(id);
    ChatColor(0"!g%s !yBienvenido al servidor !g%s!y, eres la cuenta registrada !g#%s!y."Prefijog_Nombre[id], add_point(g_Cuenta_Numero[id]));
}

Guardar_Datos(id) {
    if (g_Estado[id] < IDENTIFICADO)
        return;
    
    g_Ultima_Sesion
[id] = get_systime();
    
    adv_vault_set_start
(g_ADV_Vault);
    
    adv_vault_set_field
(g_ADV_Vaultg_Campos[CUENTA], g_Nombre[id]);
    adv_vault_set_field(g_ADV_Vaultg_Campos[ULTIMA_SESION], g_Ultima_Sesion[id]);
    adv_vault_set_field(g_ADV_Vaultg_Campos[TIEMPO_JUGADO], g_TiempoJugado[id]);
    adv_vault_set_field(g_ADV_Vaultg_Campos[TIEMPO_JUGADO_TT], g_TiempoJugado_Team[id][TERRORISTAS]);
    adv_vault_set_field(g_ADV_Vaultg_Campos[TIEMPO_JUGADO_CT], g_TiempoJugado_Team[id][ANTI_TERRORISTAS]);
    
    adv_vault_set_field
(g_ADV_Vaultg_Campos[DANIO_HECHO_TT], g_danio_hecho[id][TERRORISTAS]);
    adv_vault_set_field(g_ADV_Vaultg_Campos[DANIO_RECIBIDO_TT], g_danio_recibido[id][TERRORISTAS]);
    adv_vault_set_field(g_ADV_Vaultg_Campos[DANIO_HECHO_CT], g_danio_hecho[id][ANTI_TERRORISTAS]);
    adv_vault_set_field(g_ADV_Vaultg_Campos[DANIO_RECIBIDO_CT], g_danio_recibido[id][ANTI_TERRORISTAS]);
    
    adv_vault_set_field
(g_ADV_Vaultg_Campos[MATADOS], g_Matados_T[id]);
    adv_vault_set_field(g_ADV_Vaultg_Campos[MUERTES], g_Muertes_T[id]);
    adv_vault_set_field(g_ADV_Vaultg_Campos[TT_MATADOS], g_Matados[id][TERRORISTAS]);
    adv_vault_set_field(g_ADV_Vaultg_Campos[TT_MUERTES], g_Muertes[id][TERRORISTAS]);
    adv_vault_set_field(g_ADV_Vaultg_Campos[CT_MATADOS], g_Matados[id][ANTI_TERRORISTAS]);
    adv_vault_set_field(g_ADV_Vaultg_Campos[CT_MUERTES], g_Muertes[id][ANTI_TERRORISTAS]);
    
    adv_vault_set_field
(g_ADV_Vaultg_Campos[MATADOS_ESPECIAL], g_Matados_Especial[id]);
    adv_vault_set_field(g_ADV_Vaultg_Campos[MUERTES_ESPECIAL], g_Muertes_Especial[id]);
    
    adv_vault_set_end
(g_ADV_Vault0g_Nombre[id]);
}

Cargar_Datos(id) {
    if (!adv_vault_get_prepare(g_ADV_Vault_g_Nombre[id]))
        return;

    g_Fecha_Registro[id]                    adv_vault_get_field(g_ADV_Vaultg_Campos[FECHA_REGISTRO]);
    g_Ultima_Sesion[id]                        adv_vault_get_field(g_ADV_Vaultg_Campos[ULTIMA_SESION]);
    adv_vault_get_field(g_ADV_Vaultg_Campos[TIEMPO_JUGADO], g_TiempoJugado[id], sizeof(g_TiempoJugado[]));
    adv_vault_get_field(g_ADV_Vaultg_Campos[TIEMPO_JUGADO_TT], g_TiempoJugado_Team[id][TERRORISTAS], sizeof(g_TiempoJugado_Team[][]));
    adv_vault_get_field(g_ADV_Vaultg_Campos[TIEMPO_JUGADO_CT], g_TiempoJugado_Team[id][ANTI_TERRORISTAS], sizeof(g_TiempoJugado_Team[][]));
    
    g_danio_hecho
[id][TERRORISTAS]            adv_vault_get_field(g_ADV_Vaultg_Campos[DANIO_HECHO_TT]);
    g_danio_recibido[id][TERRORISTAS]        adv_vault_get_field(g_ADV_Vaultg_Campos[DANIO_RECIBIDO_TT]);
    g_danio_hecho[id][ANTI_TERRORISTAS]        adv_vault_get_field(g_ADV_Vaultg_Campos[DANIO_HECHO_CT]);
    g_danio_recibido[id][ANTI_TERRORISTAS]    adv_vault_get_field(g_ADV_Vaultg_Campos[DANIO_RECIBIDO_CT]);
    
    g_Matados_T
[id]                        adv_vault_get_field(g_ADV_Vaultg_Campos[MATADOS]);
    g_Muertes_T[id]                        adv_vault_get_field(g_ADV_Vaultg_Campos[MUERTES]);
    g_Matados[id][TERRORISTAS]                adv_vault_get_field(g_ADV_Vaultg_Campos[TT_MATADOS]);
    g_Muertes[id][TERRORISTAS]                adv_vault_get_field(g_ADV_Vaultg_Campos[TT_MUERTES]);
    g_Matados[id][ANTI_TERRORISTAS]            adv_vault_get_field(g_ADV_Vaultg_Campos[CT_MATADOS]);
    g_Muertes[id][ANTI_TERRORISTAS]        adv_vault_get_field(g_ADV_Vaultg_Campos[CT_MUERTES]);
    
    adv_vault_get_field
(g_ADV_Vaultg_Campos[MATADOS_ESPECIAL], g_Matados_Especial[id], sizeof(g_Matados_Especial[]));
    adv_vault_get_field(g_ADV_Vaultg_Campos[MUERTES_ESPECIAL], g_Muertes_Especial[id], sizeof(g_Muertes_Especial[]));
    
    g_Estado
[id] = IDENTIFICADO_ESPEC;
    show_menu_ingresar(id);
}

public 
Bienvenida(id) {
    id -= TASK_DHUD;
    
    
if (!g_Conectado[id])
        return;
        
    
if (g_Ultima_Sesion[id]) {
        new g_Posiciong_Posicion adv_vault_sort_key(g_ADV_Vaultg_ADV_Sort0g_Nombre[id]);
        
        set_dhudmessage
(2551270, -1.00.3700.08.01.01.0);
        
        
if (g_Posicion)
            show_dhudmessage(id"¡BIENVENIDO NUEVAMENTE %s!^nRANK %d / %d"g_Nombre[id], g_Posiciong_Cuentas_Creadas);
        else
            show_dhudmessage(id"¡BIENVENIDO NUEVAMENTE %s!"g_Nombre[id]);
    }
}
    
show_menu_ingresar
(id) {
    static lenlen 0;
    new szBuffer[30], szBuffer2[30];
    
    
// Gracias Neeeeeeeeeel.-
    new const szUnidad[][] = {"año""mes""día""hora""minuto"};
    new const szDividir[] = {60*60*24*36560*60*24*3060*60*2460*6060};

    new FechaActual get_systime();

    new DiasRegistrado FechaActual g_Fecha_Registro[id];    
    
for (new 0sizeof(szDividir); ++i) {
        if (DiasRegistrado >= szDividir[i]) {
            new num = (DiasRegistrado szDividir[i]);
            
            
if (!num) {
                szBuffer[0] = '^0';
            }
            else {
                if (== 1) {
                    formatex(szBuffercharsmax(szBuffer), " (Hace %d %s%s)"numszUnidad[i], num == "" "es");
                }
                else {
                    formatex(szBuffercharsmax(szBuffer), " (Hace %d %s%s)"numszUnidad[i], num == "" "s");
                }
            }
            
            
break;
        }
    }
    
    
new AnioMesDiaHoraMinutoSegundo;
    UnixToTime(g_Fecha_Registro[id], AnioMesDiaHoraMinutoSegundoUT_TIMEZONE_SERVER);
    
    
new szUltimaSesion[64];    
    
if (!g_Ultima_Sesion[id])
        formatex(szUltimaSesioncharsmax(szUltimaSesion), "\yNUNCA");
    else {
        new Anio2Mes2Dia2Hora2Minuto2Segundo2;
        UnixToTime(g_Ultima_Sesion[id], Anio2Mes2Dia2Hora2Minuto2Segundo2UT_TIMEZONE_SERVER);
        
        
new iUltimaSesion FechaActual g_Ultima_Sesion[id];    
        
for (new 0sizeof(szDividir); ++i) {
            if (iUltimaSesion >= szDividir[i]) {
                new num = (iUltimaSesion szDividir[i]);
                
                
if (!num) {
                    szBuffer[0] = '^0';
                }
                else {
                    if (== 1) {
                        formatex(szBuffer2charsmax(szBuffer2), " (Hace %d %s%s)"numszUnidad[i], num == "" "es");
                    }
                    else {
                        formatex(szBuffer2charsmax(szBuffer2), " (Hace %d %s%s)"numszUnidad[i], num == "" "s");
                    }
                }
                
                
break;
            }
        }
        
        formatex
(szUltimaSesioncharsmax(szUltimaSesion), "\y%02d/%02d/%d \r- \y%02d:%02d:%02d%s"Dia2Mes2Anio2Hora2Minuto2Segundo2szBuffer2);
    }
    
    len 
formatex(g_menu[len], charsmax(g_menu), "\y%s - CUENTA #%s^n^n"g_Nombre[id], add_point(g_Cuenta_Numero[id]));
    
    len 
+= formatex(g_menu[len], charsmax(g_menu) - len"\wREGISTRO\r: \y%02d/%02d/%d \r- \y%02d:%02d:%02d%s^n\wÚLTIMA CONEXIÓN\r: %s^n^n"DiaMesAnioHoraMinutoSegundoszBufferszUltimaSesion);
    len += formatex(g_menu[len], charsmax(g_menu) - len"\yTIEMPO JUGADO\r: \y%d días, %d horas, %d minutos^n^n"g_TiempoJugado[id][0], g_TiempoJugado[id][1], g_TiempoJugado[id][2]);
    
    len 
+= formatex(g_menu[len], charsmax(g_menu) - len"\r1. \w¡ENTRAR A JUGAR!");
    
    show_menu
(idKEYSMENUg_menu, -1"Intro Menu");
}

public 
menu_intro(iditem) {
    if (item == 0) {
        entrar_a_jugar(id);
        return PLUGIN_HANDLED;
    }
    
    show_menu_ingresar
(id);
    return PLUGIN_HANDLED;
}

entrar_a_jugar(id) {
    g_Estado[id] = IDENTIFICADO;
    engclient_cmd(id"chooseteam");
    
    set_task
(5.0"Bienvenida"id+TASK_DHUD);
    set_task(1.0"Tiempo_jugado_id"id+TASK_TIME__"b");
    
    
// Aun no terminado, en construccion.
}

show_menu_auto_loggin(id) {
    if (adv_vault_get_prepare(g_ADV_Vault_g_Nombre[id])) {
        g_Cuenta_Numero[id] = adv_vault_get_field(g_ADV_Vaultg_Campos[CUENTA_NUMERO]);
        
        
new szAutoPassBuffer[35], szAutoPass[35], szBuffer[34];
        get_user_info(idPREFIJO_SETINFOszAutoPasscharsmax(szAutoPass));
        md5(szAutoPassszBuffer);
        adv_vault_get_field(g_ADV_Vaultg_Campos[CONTRASENIA], szAutoPassBuffercharsmax(szAutoPassBuffer));
        
        
if (equal(szAutoPassBufferszBuffer)) {
            g_Estado[id] = REGISTRADO;
            
            Cargar_Datos
(id);
        }
        else {
            g_Estado[id] = REGISTRADO;
            show_menu_registracion(id);
        }
    }
    else if (!adv_vault_get_prepare(g_ADV_Vault_g_Nombre[id])) {
        g_Estado[id] = NO_REGISTRADO;
        show_menu_registracion(id);
    }
}


/**********************************************/
/************* SISTEMA DE CUENTAS *************/
/**********************************************/

public Message_Vguimenu(msg_idmsg_destmsg_entity) {
    if (get_msg_arg_int(1) != VGUI_JOIN_TEAM_NUM)
        return PLUGIN_CONTINUE;
        
    
if (g_Estado[msg_entity] == NO_REGISTRADO) {
        show_menu_auto_loggin(msg_entity);
        return PLUGIN_HANDLED;
    }
    
    
if (g_Estado[msg_entity] == BANEADO)
        return PLUGIN_HANDLED;
    
    
return PLUGIN_CONTINUE;
}
public 
Message_Showmenu(msg_idmsg_destmsg_entity) {
    static Menu_Codigo[32];
    get_msg_arg_string(4Menu_Codigocharsmax(Menu_Codigo));
    
    
if (equal(Menu_Codigo"#Team_Select") || equal(Menu_Codigo"#Team_Select_Spect") || equal(Menu_Codigo"#IG_Team_Select") || equal(Menu_Codigo"#IG_Team_Select_Spect")) {
        if (g_Estado[msg_entity] == NO_REGISTRADO) {
            show_menu_auto_loggin(msg_entity);
            return PLUGIN_HANDLED;
        }
        
        
if (g_Estado[msg_entity] == BANEADO)
            return PLUGIN_HANDLED;
    }
    return PLUGIN_CONTINUE;
}

public 
Tiempo_jugado_id(id) {
    id -= TASK_TIME;
    
    
/************ TIEMPO JUGADO ************/
    if (g_TiempoJugado[id][3] > 58) { // Segundos
        g_TiempoJugado[id][3] = 0;
        g_TiempoJugado[id][2]++;
    }
    else
        g_TiempoJugado[id][3]++;
    
    
if (g_TiempoJugado[id][2] > 59) { // Minutos
        g_TiempoJugado[id][2] = 0;
        g_TiempoJugado[id][1]++; // Horas
    }
    
    
if (g_TiempoJugado[id][1] > 23) {
        g_TiempoJugado[id][1] = 0;
        g_TiempoJugado[id][0]++; // Dias
    }
    /************ TIEMPO JUGADO ************/
    
    
    
/************ TIEMPO JUGADO COMO.. (SIEMPRE Y CUANDO ESTE VIVO) ************/
    if (g_EstaVivo[id]) {
        static User_TeamUser_Team = (_:cs_get_user_team(id) - 1);
        
        
if (g_TiempoJugado_Team[id][User_Team][3] > 58) { // Segundos
            g_TiempoJugado_Team[id][User_Team][3] = 0;
            g_TiempoJugado_Team[id][User_Team][2]++;
        }
        else
            g_TiempoJugado_Team[id][User_Team][3]++;
        
        
if (g_TiempoJugado_Team[id][User_Team][2] > 59) { // Minutos
            g_TiempoJugado_Team[id][User_Team][2] = 0;
            g_TiempoJugado_Team[id][User_Team][1]++; // Horas
        }
        
        
if (g_TiempoJugado_Team[id][User_Team][1] > 23) {
            g_TiempoJugado_Team[id][User_Team][1] = 0;
            g_TiempoJugado_Team[id][User_Team][0]++; // Dias
        }
    }
    /************ TIEMPO JUGADO COMO.. ************/
}


public 
fw_PlayerSpawn_Post(id) {
    if (!is_user_alive(id))
        return;
    
    g_EstaVivo
[id] = true;
}

public 
fw_TakeDamage(victiminflictorattackerFloat:damagedamage_type) {
    if (victim == attacker || !g_Conectado[attacker])
        return HAM_IGNORED;
    
    
if (get_cvar_num("mp_friendlyfire") == && cs_get_user_team(victim) == cs_get_user_team(attacker))
        return HAM_SUPERCEDE;
    
    
static iDamageiDamage floatround(damage);
        
    
switch (cs_get_user_team(victim)) {
        case CS_TEAM_Tg_danio_recibido[victim][TERRORISTAS] += iDamage;
        case CS_TEAM_CTg_danio_recibido[victim][ANTI_TERRORISTAS] += iDamage;
    }
    
    
switch (cs_get_user_team(attacker)) {
        case CS_TEAM_Tg_danio_hecho[attacker][TERRORISTAS] += iDamage;
        case CS_TEAM_CTg_danio_hecho[attacker][ANTI_TERRORISTAS] += iDamage;
    }
    
    
return HAM_IGNORED;
}

public 
fw_PlayerKilled(victimattackershouldgib) {
    static selfkill;
    selfkill = (victim == attacker || !is_user_connected(attacker)) ? true false;
    
    g_EstaVivo
[victim] = false;
    
    
if (selfkill) return;
    
    
if (get_pdata_int(victimOFFSET_LAST_HIT_GROUP) == HIT_HEAD) {
        g_Matados_Especial[attacker][HEADSHOTS_ATACANTE]++;
        g_Muertes_Especial[victim][HEADSHOTS_VICTIMA]++;
    }
    
    
if (g_ArmaActual[attacker] == CSW_KNIFE) {
        g_Matados_Especial[attacker][KNIFE_ATACANTE]++;
        g_Muertes_Especial[victim][KNIFE_VICTIMA]++;
    }
    
    
switch (cs_get_user_team(victim)) {
        case CS_TEAM_T: {
            g_Matados[attacker][TERRORISTAS]++;
            g_Muertes[victim][TERRORISTAS]++;
        }
        case CS_TEAM_CT: {
            g_Matados[attacker][ANTI_TERRORISTAS]++;
            g_Muertes[victim][ANTI_TERRORISTAS]++;
        }
    }
    
    g_Matados_T
[attacker]++;
    g_Muertes_T[victim]++;
}

public 
fw_Item_Deploy_Post(__weaponEnt) {
    if (!pev_valid(__weaponEnt))
        return HAM_IGNORED;
        
    
static id
    id fm_get_weapon_ent_owner(__weaponEnt);
    
    
if (!pev_valid(id))
        return HAM_IGNORED;
    
    
static weaponid;
    weaponid cs_get_weapon_id(__weaponEnt);
    
    
if (weaponid == CSW_C4 || 
    weaponid == CSW_SHIELD ||
    weaponid == CSW_HEGRENADE ||
    weaponid == CSW_FLASHBANG ||
    weaponid == CSW_SMOKEGRENADE)
        g_ArmaActual[id] = 0;
    else
        g_ArmaActual[id] = weaponid;
        
    
return HAM_IGNORED;
}

public 
fw_ClientUserInfoChanged(id) {
    if (!g_Conectado[id])
        return FMRES_IGNORED;
    
    
static NombreNuevo[32], NombreViejo[32];
    get_user_name(idNombreViejocharsmax(NombreViejo));
    get_user_info(id"name"NombreNuevocharsmax(NombreNuevo));
    
    
if (equal(NombreNuevoNombreViejo))
        return FMRES_IGNORED;
    
    
if (g_Estado[id] > REGISTRADO) {
        set_user_info(id"name"NombreViejo);
        ChatColor(id"!g%s !yNo podes cambiar el nombre estando dentro del servidor."Prefijo);
        console_print(id"%s No podes cambiar el nombre estando dentro del servidor."Prefijo);
        return FMRES_IGNORED;
    }
    
    copy
(g_Nombre[id], charsmax(g_Nombre[]), NombreNuevo);
    show_menu_auto_loggin(id);
    
    
return FMRES_SUPERCEDE;
}


/***********************************************/
/************ COMANDOS SAY/SAY_TEAM ************/
/***********************************************/
public Clcmd_Rank(id) {
    if (g_Estado[id] < IDENTIFICADO_ESPEC)
        return PLUGIN_HANDLED;
    
    
new g_Posicion;
    g_Posicion adv_vault_sort_key(g_ADV_Vaultg_ADV_Sort0g_Nombre[id]);
    
    
if (!g_Posicion) {
        ChatColor(id"!g%s !yAún no estás en el rank del servidor."Prefijo);
        ChatColor(id"!g%s !yLas estadisticas se actualizan cada !g%d minutos!y, a más tardar en un cambio de mapa."Prefijo, (TIEMPO_GUARDADO 60));
    }
    else
        ChatColor(id"!g%s !yRanking !g%d !y/ !g%d!y."Prefijog_Posiciong_Cuentas_Creadas);
    
    
return PLUGIN_HANDLED;
}

public 
Clcmd_tops15(id) {
    if (g_Estado[id] < IDENTIFICADO_ESPEC)
        return PLUGIN_HANDLED;
        
    
new menu menu_create("TOPS 15""menu_tops");
    
    menu_additem
(menu"GENERAL^n""1");
    menu_additem(menu"CTs MATADOS""2");
    menu_additem(menu"TTs MATADOS""3");
    menu_additem(menu"DAÑO HECHO SIENDO CT""4");
    menu_additem(menu"DAÑO HECHO SIENDO TT""5");
    
    menu_setprop
(menuMPROP_BACKNAME"Atrás");
    menu_setprop(menuMPROP_NEXTNAME"Siguiente");
    menu_setprop(menuMPROP_EXITNAME"Volver");
    menu_display(idmenu0);
    return PLUGIN_HANDLED;
}

public 
menu_tops(idmenuitem) {
    if (!g_Conectado[id]) {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }
    
    
if (item == MENU_EXIT) {
        menu_destroy(menu);
        Clcmd_Menu(id);
        return PLUGIN_HANDLED;
    }
    
    menu_destroy
(menu);
    g_Top15_Seleccionado[id] = item;
    Show_Top_Seleccionado(id);
    return PLUGIN_HANDLED;
}

Show_Top_Seleccionado(id) {
    new menug_Sort_MenuNombre[32], Top15LoopKeyIDPosision_ID[2];
    
    
switch (g_Top15_Seleccionado[id]) {
        case 0: {
            menu menu_create("GENERAL""top15_seleccionado");
            
            
new MatadosMuertes;
            
            g_Sort_Menu    
adv_vault_sort_create(g_ADV_VaultORDER_DESCTIEMPO_GUARDADO0g_Campos[MATADOS], g_Campos[MUERTES]);
            
            Top15Loop 
min(adv_vault_sort_numresult(g_ADV_Vaultg_Sort_Menu), 15);
            
            
for (new Pos 1Pos <= Top15Loop; ++Pos) {
                KeyID adv_vault_sort_position(g_ADV_Vaultg_Sort_MenuPos);
                
                
if (!adv_vault_get_prepare(g_ADV_VaultKeyID))
                    continue;
                
                Matados 
adv_vault_get_field(g_ADV_Vaultg_Campos[MATADOS]);
                Muertes adv_vault_get_field(g_ADV_Vaultg_Campos[MUERTES]);
                
                adv_vault_get_keyname
(g_ADV_VaultKeyIDNombrecharsmax(Nombre));
                
                formatex
(g_menucharsmax(g_menu), "%s\r: \y%s \w/ \y%s"Nombreadd_point(Matados), add_point(Muertes));
                num_to_str(PosPosision_IDcharsmax(Posision_ID));
                menu_additem(menug_menuPosision_ID);
            }
        }
        case 1: {
            menu menu_create("CTs MATADOS""top15_seleccionado");
            
            
new CTMatados;
            
            g_Sort_Menu    
adv_vault_sort_create(g_ADV_VaultORDER_DESCTIEMPO_GUARDADO0g_Campos[CT_MATADOS]);
            
            Top15Loop 
min(adv_vault_sort_numresult(g_ADV_Vaultg_Sort_Menu), 15);
            
            
for (new Pos 1Pos <= Top15Loop; ++Pos) {
                KeyID adv_vault_sort_position(g_ADV_Vaultg_Sort_MenuPos);
                
                
if (!adv_vault_get_prepare(g_ADV_VaultKeyID))
                    continue;
                
                CTMatados 
adv_vault_get_field(g_ADV_Vaultg_Campos[CT_MATADOS]);
                
                adv_vault_get_keyname
(g_ADV_VaultKeyIDNombrecharsmax(Nombre));
                
                formatex
(g_menucharsmax(g_menu), "%s\r: \y%s"Nombreadd_point(CTMatados));
                num_to_str(PosPosision_IDcharsmax(Posision_ID));
                menu_additem(menug_menuPosision_ID);
            }
        }
        case 2: {
            menu menu_create("TTs MATADOS""top15_seleccionado");
            
            
new TTMatados;
            
            g_Sort_Menu    
adv_vault_sort_create(g_ADV_VaultORDER_DESCTIEMPO_GUARDADO0g_Campos[TT_MATADOS]);
            
            Top15Loop 
min(adv_vault_sort_numresult(g_ADV_Vaultg_Sort_Menu), 15);
            
            
for (new Pos 1Pos <= Top15Loop; ++Pos) {
                KeyID adv_vault_sort_position(g_ADV_Vaultg_Sort_MenuPos);
                
                
if (!adv_vault_get_prepare(g_ADV_VaultKeyID))
                    continue;
                
                TTMatados 
adv_vault_get_field(g_ADV_Vaultg_Campos[TT_MATADOS]);
                
                adv_vault_get_keyname
(g_ADV_VaultKeyIDNombrecharsmax(Nombre));
                
                formatex
(g_menucharsmax(g_menu), "%s\r: \y%s"Nombreadd_point(TTMatados));
                num_to_str(PosPosision_IDcharsmax(Posision_ID));
                menu_additem(menug_menuPosision_ID);
            }
        }
        case 3: {
            menu menu_create("DAÑO HECHO SIENDO CT""top15_seleccionado");
            
            
new CTDanio;
            
            g_Sort_Menu    
adv_vault_sort_create(g_ADV_VaultORDER_DESCTIEMPO_GUARDADO0g_Campos[DANIO_HECHO_CT]);
            
            Top15Loop 
min(adv_vault_sort_numresult(g_ADV_Vaultg_Sort_Menu), 15);
            
            
for (new Pos 1Pos <= Top15Loop; ++Pos) {
                KeyID adv_vault_sort_position(g_ADV_Vaultg_Sort_MenuPos);
                
                
if (!adv_vault_get_prepare(g_ADV_VaultKeyID))
                    continue;
                
                CTDanio 
adv_vault_get_field(g_ADV_Vaultg_Campos[DANIO_HECHO_CT]);
                
                adv_vault_get_keyname
(g_ADV_VaultKeyIDNombrecharsmax(Nombre));
                
                formatex
(g_menucharsmax(g_menu), "%s\r: \y%s"Nombreadd_point(CTDanio));
                num_to_str(PosPosision_IDcharsmax(Posision_ID));
                menu_additem(menug_menuPosision_ID);
            }
        }
        case 4: {
            menu menu_create("DAÑO HECHO SIENDO TT""top15_seleccionado");
            
            
new TTDanio;
            
            g_Sort_Menu    
adv_vault_sort_create(g_ADV_VaultORDER_DESCTIEMPO_GUARDADO0g_Campos[DANIO_HECHO_TT]);
            
            Top15Loop 
min(adv_vault_sort_numresult(g_ADV_Vaultg_Sort_Menu), 15);
            
            
for (new Pos 1Pos <= Top15Loop; ++Pos) {
                KeyID adv_vault_sort_position(g_ADV_Vaultg_Sort_MenuPos);
                
                
if (!adv_vault_get_prepare(g_ADV_VaultKeyID))
                    continue;
                
                TTDanio 
adv_vault_get_field(g_ADV_Vaultg_Campos[DANIO_HECHO_TT]);
                
                adv_vault_get_keyname
(g_ADV_VaultKeyIDNombrecharsmax(Nombre));
                
                formatex
(g_menucharsmax(g_menu), "%s\r: \y%s"Nombreadd_point(TTDanio));
                num_to_str(PosPosision_IDcharsmax(Posision_ID));
                menu_additem(menug_menuPosision_ID);
            }
        }
    }
    
    adv_vault_sort_destroy
(g_ADV_Vaultg_Sort_Menu);
    
    menu_setprop
(menuMPROP_BACKNAME"Atrás");
    menu_setprop(menuMPROP_NEXTNAME"Siguiente");
    menu_setprop(menuMPROP_EXITNAME"Volver");
    menu_display(idmenu0);
}

public 
top15_seleccionado(idmenuitem) {
    if (!g_Conectado[id]) {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }
    
    
if (item == MENU_EXIT) {
        menu_destroy(menu);
        Clcmd_tops15(id);
        return PLUGIN_HANDLED;
    }
    
    Show_Top_Seleccionado
(id);
    return PLUGIN_HANDLED;
}
    

public Clcmd_Menu(id) {
    if (g_Estado[id] < IDENTIFICADO_ESPEC)
        return PLUGIN_HANDLED;
        
    
new menu menu_create("\yMENÚ DEL USUARIO""menu_estadisticas");
    
    menu_additem
(menu"ESTADÍSTICAS PERSONALES""1");
    menu_additem(menu"ESTADÍSTICAS DE TUS ARMAS^n""2");
    menu_additem(menu"RANK""3");
    menu_additem(menu"TOPS 15^n""4");
    
    formatex
(g_menucharsmax(g_menu), "\yTIEMPO JUGADO\r: \y %d días, %d horas, %d minutos^n^nCUENTA #%s"g_TiempoJugado[id][0], g_TiempoJugado[id][1], g_TiempoJugado[id][2], add_point(g_Cuenta_Numero[id]));
    menu_addtext(menug_menu);
    
    menu_setprop
(menuMPROP_EXITNAME"SALIR");
    menu_display(idmenu0);
    return PLUGIN_HANDLED;
}
    
public menu_estadisticas(idmenuitem) {
    if (!g_Conectado[id] || item == MENU_EXIT) {
        menu_destroy(menu);
        return PLUGIN_HANDLED;
    }
    
    menu_destroy
(menu);
    switch (item) {
        case 0show_menu_estadisticas(id);
        case 1ChatColor(id"!g%s !yEN CONSTRUCCIÓN :)"Prefijo);
        case 2Clcmd_Rank(id);
        case 3Clcmd_tops15(id);
    }
    
    
return PLUGIN_HANDLED;
}
/***********************************************/
/************ COMANDOS SAY/SAY_TEAM ************/
/***********************************************/


show_menu_estadisticas(id) {
    static lenlen 0;
    
    len 
formatex(g_menu[len], charsmax(g_menu), "\yMÍS ESTADÍSTICAS \r[%d / 3]^n^n"g_Pagina_Menu[id][PAG_ESTADISTICAS] + 1);
    
    
switch (g_Pagina_Menu[id][PAG_ESTADISTICAS]) {
        case 0: {
            len += formatex(g_menu[len], charsmax(g_menu) - len"\wTotal de enemigos matados\r: \y%s^n\wTotal de veces muerto\r: \y%s^n^n",
            add_point(g_Matados_T[id]), add_point(g_Muertes_T[id]));
            
            len 
+= formatex(g_menu[len], charsmax(g_menu) - len"\wAnti-Terroristas matados\r: \y%s^n\wVeces muerto como Anti-Terrorista\r: \y%s^n",
            add_point(g_Matados[id][ANTI_TERRORISTAS]), add_point(g_Muertes[id][ANTI_TERRORISTAS]));
            
            len 
+= formatex(g_menu[len], charsmax(g_menu) - len"\wTerroristas matados\r: \y%s^n\wVeces muerto como Terrorista\r: \y%s^n",
            add_point(g_Matados[id][TERRORISTAS]), add_point(g_Muertes[id][TERRORISTAS]));
            
            len 
+= formatex(g_menu[len], charsmax(g_menu) - len"\wEnemigos matados por HS\r: \y%s^n\wVeces muerto por HS\r: \y%s^n^n",
            add_point(g_Matados_Especial[id][HEADSHOTS_ATACANTE]), add_point(g_Muertes_Especial[id][HEADSHOTS_VICTIMA]));
        }
        case 1: {
            len += formatex(g_menu[len], charsmax(g_menu) - len"\wEnemigos matados por KNIFE\r: \y%s^n\wVeces muerto por KNIFE\r: \y%s^n^n",
            add_point(g_Matados_Especial[id][KNIFE_ATACANTE]), add_point(g_Muertes_Especial[id][KNIFE_VICTIMA]));
            
            len 
+= formatex(g_menu[len], charsmax(g_menu) - len"\yTIEMPO JUGADO COMO TERRORISTA\r:^n\y%d días, %d horas, %d minutos^n^n",
            g_TiempoJugado_Team[id][0][0], g_TiempoJugado_Team[id][0][1], g_TiempoJugado_Team[id][0][2]);
            
            len 
+= formatex(g_menu[len], charsmax(g_menu) - len"\yTIEMPO JUGADO COMO ANTI-TERRORISTA\r:^n\y%d días, %d horas, %d minutos^n^n",
            g_TiempoJugado_Team[id][1][0], g_TiempoJugado_Team[id][1][1], g_TiempoJugado_Team[id][1][2]);
        }
        case 2: {
            len += formatex(g_menu[len], charsmax(g_menu) - len"\wDaño hecho como Terrorista\r: \y%s^n\wDaño recibido como Terrorista\r: \y%s^n",
            add_point(g_danio_hecho[id][TERRORISTAS]), add_point(g_danio_recibido[id][TERRORISTAS]));
            
            len 
+= formatex(g_menu[len], charsmax(g_menu) - len"\wDaño hecho como Anti-Terrorista\r: \y%s^n\wDaño recibido como Anti-Terrorista\r: \y%s^n^n",
            add_point(g_danio_hecho[id][ANTI_TERRORISTAS]), add_point(g_danio_recibido[id][ANTI_TERRORISTAS]));
        }
    }
    
    len 
+= formatex(g_menu[len], charsmax(g_menu) - len"\r9.\w Atrás / Siguiente^n\r0.\w Volver");
    
    show_menu
(idKEYSMENUg_menu, -1"Menu Estadisticas Personales");
}

public 
menu_estadisticas_personales(iditem) {
    switch (item) {
        case 8: {
            switch (g_Pagina_Menu[id][PAG_ESTADISTICAS]) {
                case 0: {
                    g_Pagina_Menu[id][PAG_ESTADISTICAS] = 1;
                    show_menu_estadisticas(id);
                }
                case 1: {
                    g_Pagina_Menu[id][PAG_ESTADISTICAS] = 2;
                    show_menu_estadisticas(id);
                }
                case 2: {
                    g_Pagina_Menu[id][PAG_ESTADISTICAS] = 0;
                    show_menu_estadisticas(id);
                }
                
                
/*********** SOMEDAY :) ***********/
                
                
/*case 3: {
                    g_Pagina_Menu[id][PAG_ESTADISTICAS] = 0;
                    show_menu_estadisticas(id);
                }*/
            }
        }
        case 9: {
            Clcmd_Menu(id);
            return PLUGIN_HANDLED;
        }
    }
    
    show_menu_estadisticas
(id);
    return PLUGIN_HANDLED;
}


/************************************************/
/******************** STOCKS ********************/
/************************************************/
stock ChatColor(Index, const Entrada[], any:...) {
    static Mensaje[192], Jugadores[32], g_msgSayTextCounti;
    vformat(Mensajecharsmax(Mensaje), Entrada3);
    
    
if (!g_msgSayTextg_msgSayText get_user_msgid("SayText");
    
    replace_all
(Mensajecharsmax(Mensaje), "!g""^4");
    replace_all(Mensajecharsmax(Mensaje), "!y""^1");
    replace_all(Mensajecharsmax(Mensaje), "!t""^3");
    
    
if (Index) {
        Jugadores[0] = Index;
        Count 1;
    } else get_players(JugadoresCount"c");
    
    
for (0Count; ++i) {
        message_begin(MSG_ONE_UNRELIABLEg_msgSayText_Jugadores[i]);
        write_byte(Jugadores[i]);
        write_string(Mensaje);
        message_end();
    }
}

stock ShowHUD_Message(idiColors[3] = { 255255255 }, Float:fPosX = -1.0Float:fPosY = -1.0iEffect 0Float:fTime 0.0Float:fInTime 0.5Float:fOutTime 0.5szMessage[])
{
    set_dhudmessage(iColors[0], iColors[1], iColors[2], fPosXfPosYiEffect0.0fTimefInTimefOutTime);
    show_dhudmessage(idszMessage);
}

stock fm_get_weapon_ent_owner(ent) {
    if (pev_valid(ent) != OFFSET_PDATA)
        return -1;
    
    
return get_pdata_cbase(entOFFSET_WEAPON_OWNEROFFSET_LINUX_WEAPONS);
}

// Stock by Kiske -counts number of characters in a string-
stock count_characters(const szString[], const len sizeof(szString)) {
    new counti;

    for (leni++)
    {
        if (isalnum(szString[i]))
            count++;
    }
    
    
return count;
}

// Stock by Neeeeeeeeeel.- -check special characters in a string-
stock contain_special_characters(const str[]) {
    static len;
    len strlen(str);
    
    
for (new 0leni++)
    {
        if (!isalpha(str[i]) && !isdigit(str[i]))
            return 1;
    }
    
    
return 0;
}

// Stock by Asdito´^ -add point to numbers-
stock add_point(number) {
    new countistr[29], str2[35], len;
    num_to_str(numberstrcharsmax(str));
    len strlen(str);
    
    
for (0leni++)
    {
        if (!= && ((len i) %== 0))
        {
            add(str2charsmax(str2), "."1);
            count++;
            add(str2[i+count], 1str[i], 1);
        }
        else
            add(str2[i+count], 1str[i], 1);
    }

    return str2;


Cuando vas a postear un codigo, no te olvides de dejar los includes....

Buenas noches. ¿Podrías por favor indicar qué no funciona del código original? Me imagino que sabrás con exactitud los problemas que tiene, no creo que tires palabras al azar jaja. Me interesa saber, conozco gente que lo usa y quisiera advertirles sobre el problema.
No hago trabajos privados. Si necesitás ayuda, abrí un nuevo tema.
¿Buscás un ejemplo o algún modo de juego? Podés echarle un vistazo a mis aportes
.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)