27/06/2021, 03:40 AM
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(NOMBRE, VERSION, CREADOR);
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 i = 0; i < CSW_P90+2; i++)
{
if (i != 0 && i != 2 && i != 31)
RegisterHam(Ham_Item_Deploy, g_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_STRING, sizeof(g_Nombre[]));
g_Campos[CONTRASENIA] = adv_vault_register_field(g_ADV_Vault, "Contrasenia", DATATYPE_STRING, sizeof(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_ARRAY, sizeof(g_TiempoJugado[]));
g_Campos[TIEMPO_JUGADO_TT] = adv_vault_register_field(g_ADV_Vault, "Tiempo_TT", DATATYPE_ARRAY, sizeof(g_TiempoJugado_Team[][]));
g_Campos[TIEMPO_JUGADO_CT] = adv_vault_register_field(g_ADV_Vault, "Tiempo_CT", DATATYPE_ARRAY, sizeof(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_ARRAY, sizeof(g_Matados_Especial[]));
g_Campos[MUERTES_ESPECIAL] = adv_vault_register_field(g_ADV_Vault, "Muertes_Especial", DATATYPE_ARRAY, sizeof(g_Muertes_Especial[]));
adv_vault_init(g_ADV_Vault);
g_ADV_Sort = adv_vault_sort_create(g_ADV_Vault, ORDER_DESC, TIEMPO_GUARDADO, 0, g_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_Vault2, 1)) {
adv_vault_set_start(g_ADV_Vault2);
g_Cuentas_Creadas = 0;
adv_vault_set_field(g_ADV_Vault2, g_Campos2[CUENTAS_CREADAS], g_Cuentas_Creadas);
adv_vault_set_end(g_ADV_Vault2, 1);
return;
}
g_Cuentas_Creadas = adv_vault_get_field(g_ADV_Vault2, g_Campos2[CUENTAS_CREADAS]);
}
public Guardado_Automatico() {
for (new id = 1; id <= 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 = 1; id <= g_MaxPlayers; id++) {
Guardar_Datos(id);
}
}
public client_putinserver(id) {
get_user_name(id, g_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(id, print_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.00, 0.00, 0, 0.00, 0.00, 0.00, "");
client_cmd(id, "spk buttons/button2.wav");
return;
}
if (contain_special_characters(g_Contrasenia[id])) {
client_print(id, print_center, "La contraseña no tiene que tener carácteres especiales");
show_menu_registracion(id);
g_Contrasenia[id][0] = '^0';
ShowHUD_Message(id, _, 0.00, 0.00, 0, 0.00, 0.00, 0.00, "");
client_cmd(id, "spk buttons/button2.wav");
return;
}
if (equal(g_Contrasenia[id], g_Nombre[id])) {
client_print(id, print_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.00, 0.00, 0, 0.00, 0.00, 0.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, {255, 0, 255}, -1.0, 0.20, 0, 500.0, 1.00, 1.00, "REPITA LA CONTRASEÑA^nPARA PODER CONTINUAR");
}
public Confirmar_Contrasenia(id) {
if (g_Estado[id] != NO_REGISTRADO)
return;
new szPassword[35];
read_args(szPassword, charsmax(szPassword));
remove_quotes(szPassword);
trim(szPassword);
if (!equal(szPassword, g_Contrasenia[id])) {
client_print(id, print_center, "La contraseña ingresada no coincide con la anterior");
show_menu_registracion(id);
g_Contrasenia[id][0] = '^0';
ShowHUD_Message(id, _, 0.00, 0.00, 0, 0.00, 0.00, 0.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_Vault, g_Campos[CONTRASENIA], szPass, charsmax(szPass));
md5(g_Contrasenia[id], szBuffer);
if (equal(szPass, szBuffer)) {
client_cmd(id, "setinfo ^"%s^" ^"%s^"", PREFIJO_SETINFO, g_Contrasenia[id]);
ShowHUD_Message(id, _, 0.00, 0.00, 0, 0.00, 0.00, 0.00, "");
Cargar_Datos(id);
}
else {
ShowHUD_Message(id, {255, 0, 0}, -1.0, 0.20, 0, 10.0, 1.00, 1.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.00, 0.00, 0, 0.00, 0.00, 0.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_menu, charsmax(g_menu), "\y%s \r%s^nBY \y%s", NOMBRE_MODO, VERSION, CREADOR);
new menu = menu_create(g_menu, "menu_registracion");
menu_additem(menu, g_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_menu, charsmax(g_menu), "^n^n\yCUENTA #%s", add_point(g_Cuenta_Numero[id]));
menu_addtext(menu, g_menu, 0);
}
/*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(menu, MPROP_EXIT, MEXIT_NEVER);
menu_display(id, menu);
}
public menu_registracion(id, menu, item) {
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, {0, 255, 255}, -1.0, 0.20, 0, 500.0, 1.00, 1.00, "INGRESE LA CONTRASEÑA^n QUE PROTEGE A ESTA CUENTA");
}
case 1: {
client_print(id, print_center, "El usuario ya está registrado");
client_cmd(id, "spk buttons/button2.wav");
show_menu_registracion(id);
}
}
}
else {
switch (item) {
case 0: {
client_print(id, print_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, {0, 255, 255}, -1.0, 0.20, 0, 500.0, 1.00, 1.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_menu, charsmax(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(menu, MPROP_EXIT, MEXIT_NEVER);
menu_display(id, menu);
ShowHUD_Message(id, _, 0.00, 0.00, 0, 0.00, 0.00, 0.00, "");
client_cmd(id, "spk buttons/blip2.wav");
}
public menu_confirmacion(id, menu, item) {
if (!g_Conectado[id]) {
menu_destroy(menu);
return PLUGIN_HANDLED;
}
menu_destroy(menu);
switch (item) {
case 0: crear_cuenta(id);
case 1: {
g_Contrasenia[id][0] = '^0';
show_menu_registracion(id);
ShowHUD_Message(id, _, 0.00, 0.00, 0, 0.00, 0.00, 0.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], 0, sizeof(g_TiempoJugado[]));
arrayset(g_TiempoJugado_Team[id][0], 0, sizeof(g_TiempoJugado_Team[][]));
arrayset(g_TiempoJugado_Team[id][1], 0, sizeof(g_TiempoJugado_Team[][]));
arrayset(g_danio_hecho[id], 0, sizeof(g_danio_hecho[]));
arrayset(g_danio_recibido[id], 0, sizeof(g_danio_recibido[]));
g_Matados_T[id] = 0;
g_Muertes_T[id] = 0;
arrayset(g_Matados[id], 0, sizeof(g_Matados[]));
arrayset(g_Muertes[id], 0, sizeof(g_Muertes[]));
arrayset(g_Matados_Especial[id], 0, sizeof(g_Matados_Especial[]));
arrayset(g_Muertes_Especial[id], 0, sizeof(g_Muertes_Especial[]));
// Guardo los datos del usuario nuevo.
adv_vault_set_start(g_ADV_Vault);
adv_vault_set_field(g_ADV_Vault, g_Campos[CUENTA_NUMERO], g_Cuenta_Numero[id]);
adv_vault_set_field(g_ADV_Vault, g_Campos[CUENTA], g_Nombre[id]);
adv_vault_set_field(g_ADV_Vault, g_Campos[CONTRASENIA], szBuffer);
adv_vault_set_field(g_ADV_Vault, g_Campos[FECHA_REGISTRO], g_Fecha_Registro[id]);
adv_vault_set_field(g_ADV_Vault, g_Campos[ULTIMA_SESION], g_Ultima_Sesion[id]);
adv_vault_set_field(g_ADV_Vault, g_Campos[TIEMPO_JUGADO], g_TiempoJugado[id]);
adv_vault_set_field(g_ADV_Vault, g_Campos[TIEMPO_JUGADO_TT], g_TiempoJugado[id][TERRORISTAS]);
adv_vault_set_field(g_ADV_Vault, g_Campos[TIEMPO_JUGADO_CT], g_TiempoJugado[id][ANTI_TERRORISTAS]);
adv_vault_set_field(g_ADV_Vault, g_Campos[DANIO_HECHO_TT], g_danio_hecho[id][TERRORISTAS]);
adv_vault_set_field(g_ADV_Vault, g_Campos[DANIO_RECIBIDO_TT], g_danio_recibido[id][TERRORISTAS]);
adv_vault_set_field(g_ADV_Vault, g_Campos[DANIO_HECHO_CT], g_danio_hecho[id][ANTI_TERRORISTAS]);
adv_vault_set_field(g_ADV_Vault, g_Campos[DANIO_RECIBIDO_CT], g_danio_recibido[id][ANTI_TERRORISTAS]);
adv_vault_set_field(g_ADV_Vault, g_Campos[MATADOS], g_Matados_T[id]);
adv_vault_set_field(g_ADV_Vault, g_Campos[MUERTES], g_Muertes_T[id]);
adv_vault_set_field(g_ADV_Vault, g_Campos[TT_MATADOS], g_Matados[id][TERRORISTAS]);
adv_vault_set_field(g_ADV_Vault, g_Campos[TT_MUERTES], g_Muertes[id][TERRORISTAS]);
adv_vault_set_field(g_ADV_Vault, g_Campos[CT_MATADOS], g_Matados[id][ANTI_TERRORISTAS]);
adv_vault_set_field(g_ADV_Vault, g_Campos[CT_MUERTES], g_Muertes[id][ANTI_TERRORISTAS]);
adv_vault_set_field(g_ADV_Vault, g_Campos[MATADOS_ESPECIAL], g_Matados_Especial[id]);
adv_vault_set_field(g_ADV_Vault, g_Campos[MUERTES_ESPECIAL], g_Muertes_Especial[id]);
adv_vault_set_end(g_ADV_Vault, 0, g_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_Vault2, g_Campos2[CUENTAS_CREADAS], g_Cuentas_Creadas);
adv_vault_set_end(g_ADV_Vault2, 1);
ShowHUD_Message(id, {0, 255, 0}, -1.0, 0.20, 0, 7.00, 1.00, 1.00, "¡ REGISTRO COMPLETADO EXITOSAMENTE !");
client_cmd(id, "spk buttons/bell1.wav");
client_cmd(id, "setinfo ^"%s^" ^"%s^"", PREFIJO_SETINFO, g_Contrasenia[id]);
Cargar_Datos(id);
ChatColor(0, "!g%s !yBienvenido al servidor !g%s!y, eres la cuenta registrada !g#%s!y.", Prefijo, g_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_Vault, g_Campos[CUENTA], g_Nombre[id]);
adv_vault_set_field(g_ADV_Vault, g_Campos[ULTIMA_SESION], g_Ultima_Sesion[id]);
adv_vault_set_field(g_ADV_Vault, g_Campos[TIEMPO_JUGADO], g_TiempoJugado[id]);
adv_vault_set_field(g_ADV_Vault, g_Campos[TIEMPO_JUGADO_TT], g_TiempoJugado_Team[id][TERRORISTAS]);
adv_vault_set_field(g_ADV_Vault, g_Campos[TIEMPO_JUGADO_CT], g_TiempoJugado_Team[id][ANTI_TERRORISTAS]);
adv_vault_set_field(g_ADV_Vault, g_Campos[DANIO_HECHO_TT], g_danio_hecho[id][TERRORISTAS]);
adv_vault_set_field(g_ADV_Vault, g_Campos[DANIO_RECIBIDO_TT], g_danio_recibido[id][TERRORISTAS]);
adv_vault_set_field(g_ADV_Vault, g_Campos[DANIO_HECHO_CT], g_danio_hecho[id][ANTI_TERRORISTAS]);
adv_vault_set_field(g_ADV_Vault, g_Campos[DANIO_RECIBIDO_CT], g_danio_recibido[id][ANTI_TERRORISTAS]);
adv_vault_set_field(g_ADV_Vault, g_Campos[MATADOS], g_Matados_T[id]);
adv_vault_set_field(g_ADV_Vault, g_Campos[MUERTES], g_Muertes_T[id]);
adv_vault_set_field(g_ADV_Vault, g_Campos[TT_MATADOS], g_Matados[id][TERRORISTAS]);
adv_vault_set_field(g_ADV_Vault, g_Campos[TT_MUERTES], g_Muertes[id][TERRORISTAS]);
adv_vault_set_field(g_ADV_Vault, g_Campos[CT_MATADOS], g_Matados[id][ANTI_TERRORISTAS]);
adv_vault_set_field(g_ADV_Vault, g_Campos[CT_MUERTES], g_Muertes[id][ANTI_TERRORISTAS]);
adv_vault_set_field(g_ADV_Vault, g_Campos[MATADOS_ESPECIAL], g_Matados_Especial[id]);
adv_vault_set_field(g_ADV_Vault, g_Campos[MUERTES_ESPECIAL], g_Muertes_Especial[id]);
adv_vault_set_end(g_ADV_Vault, 0, g_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_Vault, g_Campos[FECHA_REGISTRO]);
g_Ultima_Sesion[id] = adv_vault_get_field(g_ADV_Vault, g_Campos[ULTIMA_SESION]);
adv_vault_get_field(g_ADV_Vault, g_Campos[TIEMPO_JUGADO], g_TiempoJugado[id], sizeof(g_TiempoJugado[]));
adv_vault_get_field(g_ADV_Vault, g_Campos[TIEMPO_JUGADO_TT], g_TiempoJugado_Team[id][TERRORISTAS], sizeof(g_TiempoJugado_Team[][]));
adv_vault_get_field(g_ADV_Vault, g_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_Vault, g_Campos[DANIO_HECHO_TT]);
g_danio_recibido[id][TERRORISTAS] = adv_vault_get_field(g_ADV_Vault, g_Campos[DANIO_RECIBIDO_TT]);
g_danio_hecho[id][ANTI_TERRORISTAS] = adv_vault_get_field(g_ADV_Vault, g_Campos[DANIO_HECHO_CT]);
g_danio_recibido[id][ANTI_TERRORISTAS] = adv_vault_get_field(g_ADV_Vault, g_Campos[DANIO_RECIBIDO_CT]);
g_Matados_T[id] = adv_vault_get_field(g_ADV_Vault, g_Campos[MATADOS]);
g_Muertes_T[id] = adv_vault_get_field(g_ADV_Vault, g_Campos[MUERTES]);
g_Matados[id][TERRORISTAS] = adv_vault_get_field(g_ADV_Vault, g_Campos[TT_MATADOS]);
g_Muertes[id][TERRORISTAS] = adv_vault_get_field(g_ADV_Vault, g_Campos[TT_MUERTES]);
g_Matados[id][ANTI_TERRORISTAS] = adv_vault_get_field(g_ADV_Vault, g_Campos[CT_MATADOS]);
g_Muertes[id][ANTI_TERRORISTAS] = adv_vault_get_field(g_ADV_Vault, g_Campos[CT_MUERTES]);
adv_vault_get_field(g_ADV_Vault, g_Campos[MATADOS_ESPECIAL], g_Matados_Especial[id], sizeof(g_Matados_Especial[]));
adv_vault_get_field(g_ADV_Vault, g_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_Posicion; g_Posicion = adv_vault_sort_key(g_ADV_Vault, g_ADV_Sort, 0, g_Nombre[id]);
set_dhudmessage(255, 127, 0, -1.0, 0.37, 0, 0.0, 8.0, 1.0, 1.0);
if (g_Posicion)
show_dhudmessage(id, "¡BIENVENIDO NUEVAMENTE %s!^nRANK %d / %d", g_Nombre[id], g_Posicion, g_Cuentas_Creadas);
else
show_dhudmessage(id, "¡BIENVENIDO NUEVAMENTE %s!", g_Nombre[id]);
}
}
show_menu_ingresar(id) {
static len; len = 0;
new szBuffer[30], szBuffer2[30];
// Gracias Neeeeeeeeeel.-
new const szUnidad[][] = {"año", "mes", "dÃa", "hora", "minuto"};
new const szDividir[] = {60*60*24*365, 60*60*24*30, 60*60*24, 60*60, 60};
new FechaActual = get_systime();
new DiasRegistrado = FechaActual - g_Fecha_Registro[id];
for (new i = 0; i < sizeof(szDividir); ++i) {
if (DiasRegistrado >= szDividir[i]) {
new num = (DiasRegistrado / szDividir[i]);
if (!num) {
szBuffer[0] = '^0';
}
else {
if (i == 1) {
formatex(szBuffer, charsmax(szBuffer), " (Hace %d %s%s)", num, szUnidad[i], num == 1 ? "" : "es");
}
else {
formatex(szBuffer, charsmax(szBuffer), " (Hace %d %s%s)", num, szUnidad[i], num == 1 ? "" : "s");
}
}
break;
}
}
new Anio, Mes, Dia, Hora, Minuto, Segundo;
UnixToTime(g_Fecha_Registro[id], Anio, Mes, Dia, Hora, Minuto, Segundo, UT_TIMEZONE_SERVER);
new szUltimaSesion[64];
if (!g_Ultima_Sesion[id])
formatex(szUltimaSesion, charsmax(szUltimaSesion), "\yNUNCA");
else {
new Anio2, Mes2, Dia2, Hora2, Minuto2, Segundo2;
UnixToTime(g_Ultima_Sesion[id], Anio2, Mes2, Dia2, Hora2, Minuto2, Segundo2, UT_TIMEZONE_SERVER);
new iUltimaSesion = FechaActual - g_Ultima_Sesion[id];
for (new i = 0; i < sizeof(szDividir); ++i) {
if (iUltimaSesion >= szDividir[i]) {
new num = (iUltimaSesion / szDividir[i]);
if (!num) {
szBuffer[0] = '^0';
}
else {
if (i == 1) {
formatex(szBuffer2, charsmax(szBuffer2), " (Hace %d %s%s)", num, szUnidad[i], num == 1 ? "" : "es");
}
else {
formatex(szBuffer2, charsmax(szBuffer2), " (Hace %d %s%s)", num, szUnidad[i], num == 1 ? "" : "s");
}
}
break;
}
}
formatex(szUltimaSesion, charsmax(szUltimaSesion), "\y%02d/%02d/%d \r- \y%02d:%02d:%02d%s", Dia2, Mes2, Anio2, Hora2, Minuto2, Segundo2, szBuffer2);
}
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", Dia, Mes, Anio, Hora, Minuto, Segundo, szBuffer, szUltimaSesion);
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(id, KEYSMENU, g_menu, -1, "Intro Menu");
}
public menu_intro(id, item) {
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_Vault, g_Campos[CUENTA_NUMERO]);
new szAutoPassBuffer[35], szAutoPass[35], szBuffer[34];
get_user_info(id, PREFIJO_SETINFO, szAutoPass, charsmax(szAutoPass));
md5(szAutoPass, szBuffer);
adv_vault_get_field(g_ADV_Vault, g_Campos[CONTRASENIA], szAutoPassBuffer, charsmax(szAutoPassBuffer));
if (equal(szAutoPassBuffer, szBuffer)) {
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_id, msg_dest, msg_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_id, msg_dest, msg_entity) {
static Menu_Codigo[32];
get_msg_arg_string(4, Menu_Codigo, charsmax(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_Team; User_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(victim, inflictor, attacker, Float:damage, damage_type) {
if (victim == attacker || !g_Conectado[attacker])
return HAM_IGNORED;
if (get_cvar_num("mp_friendlyfire") == 0 && cs_get_user_team(victim) == cs_get_user_team(attacker))
return HAM_SUPERCEDE;
static iDamage; iDamage = floatround(damage);
switch (cs_get_user_team(victim)) {
case CS_TEAM_T: g_danio_recibido[victim][TERRORISTAS] += iDamage;
case CS_TEAM_CT: g_danio_recibido[victim][ANTI_TERRORISTAS] += iDamage;
}
switch (cs_get_user_team(attacker)) {
case CS_TEAM_T: g_danio_hecho[attacker][TERRORISTAS] += iDamage;
case CS_TEAM_CT: g_danio_hecho[attacker][ANTI_TERRORISTAS] += iDamage;
}
return HAM_IGNORED;
}
public fw_PlayerKilled(victim, attacker, shouldgib) {
static selfkill;
selfkill = (victim == attacker || !is_user_connected(attacker)) ? true : false;
g_EstaVivo[victim] = false;
if (selfkill) return;
if (get_pdata_int(victim, OFFSET_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(id, NombreViejo, charsmax(NombreViejo));
get_user_info(id, "name", NombreNuevo, charsmax(NombreNuevo));
if (equal(NombreNuevo, NombreViejo))
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_Vault, g_ADV_Sort, 0, g_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.", Prefijo, g_Posicion, g_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(menu, MPROP_BACKNAME, "Atrás");
menu_setprop(menu, MPROP_NEXTNAME, "Siguiente");
menu_setprop(menu, MPROP_EXITNAME, "Volver");
menu_display(id, menu, 0);
return PLUGIN_HANDLED;
}
public menu_tops(id, menu, item) {
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 menu, g_Sort_Menu, Nombre[32], Top15Loop, KeyID, Posision_ID[2];
switch (g_Top15_Seleccionado[id]) {
case 0: {
menu = menu_create("GENERAL", "top15_seleccionado");
new Matados, Muertes;
g_Sort_Menu = adv_vault_sort_create(g_ADV_Vault, ORDER_DESC, TIEMPO_GUARDADO, 0, g_Campos[MATADOS], g_Campos[MUERTES]);
Top15Loop = min(adv_vault_sort_numresult(g_ADV_Vault, g_Sort_Menu), 15);
for (new Pos = 1; Pos <= Top15Loop; ++Pos) {
KeyID = adv_vault_sort_position(g_ADV_Vault, g_Sort_Menu, Pos);
if (!adv_vault_get_prepare(g_ADV_Vault, KeyID))
continue;
Matados = adv_vault_get_field(g_ADV_Vault, g_Campos[MATADOS]);
Muertes = adv_vault_get_field(g_ADV_Vault, g_Campos[MUERTES]);
adv_vault_get_keyname(g_ADV_Vault, KeyID, Nombre, charsmax(Nombre));
formatex(g_menu, charsmax(g_menu), "%s\r: \y%s \w/ \y%s", Nombre, add_point(Matados), add_point(Muertes));
num_to_str(Pos, Posision_ID, charsmax(Posision_ID));
menu_additem(menu, g_menu, Posision_ID);
}
}
case 1: {
menu = menu_create("CTs MATADOS", "top15_seleccionado");
new CTMatados;
g_Sort_Menu = adv_vault_sort_create(g_ADV_Vault, ORDER_DESC, TIEMPO_GUARDADO, 0, g_Campos[CT_MATADOS]);
Top15Loop = min(adv_vault_sort_numresult(g_ADV_Vault, g_Sort_Menu), 15);
for (new Pos = 1; Pos <= Top15Loop; ++Pos) {
KeyID = adv_vault_sort_position(g_ADV_Vault, g_Sort_Menu, Pos);
if (!adv_vault_get_prepare(g_ADV_Vault, KeyID))
continue;
CTMatados = adv_vault_get_field(g_ADV_Vault, g_Campos[CT_MATADOS]);
adv_vault_get_keyname(g_ADV_Vault, KeyID, Nombre, charsmax(Nombre));
formatex(g_menu, charsmax(g_menu), "%s\r: \y%s", Nombre, add_point(CTMatados));
num_to_str(Pos, Posision_ID, charsmax(Posision_ID));
menu_additem(menu, g_menu, Posision_ID);
}
}
case 2: {
menu = menu_create("TTs MATADOS", "top15_seleccionado");
new TTMatados;
g_Sort_Menu = adv_vault_sort_create(g_ADV_Vault, ORDER_DESC, TIEMPO_GUARDADO, 0, g_Campos[TT_MATADOS]);
Top15Loop = min(adv_vault_sort_numresult(g_ADV_Vault, g_Sort_Menu), 15);
for (new Pos = 1; Pos <= Top15Loop; ++Pos) {
KeyID = adv_vault_sort_position(g_ADV_Vault, g_Sort_Menu, Pos);
if (!adv_vault_get_prepare(g_ADV_Vault, KeyID))
continue;
TTMatados = adv_vault_get_field(g_ADV_Vault, g_Campos[TT_MATADOS]);
adv_vault_get_keyname(g_ADV_Vault, KeyID, Nombre, charsmax(Nombre));
formatex(g_menu, charsmax(g_menu), "%s\r: \y%s", Nombre, add_point(TTMatados));
num_to_str(Pos, Posision_ID, charsmax(Posision_ID));
menu_additem(menu, g_menu, Posision_ID);
}
}
case 3: {
menu = menu_create("DAÑO HECHO SIENDO CT", "top15_seleccionado");
new CTDanio;
g_Sort_Menu = adv_vault_sort_create(g_ADV_Vault, ORDER_DESC, TIEMPO_GUARDADO, 0, g_Campos[DANIO_HECHO_CT]);
Top15Loop = min(adv_vault_sort_numresult(g_ADV_Vault, g_Sort_Menu), 15);
for (new Pos = 1; Pos <= Top15Loop; ++Pos) {
KeyID = adv_vault_sort_position(g_ADV_Vault, g_Sort_Menu, Pos);
if (!adv_vault_get_prepare(g_ADV_Vault, KeyID))
continue;
CTDanio = adv_vault_get_field(g_ADV_Vault, g_Campos[DANIO_HECHO_CT]);
adv_vault_get_keyname(g_ADV_Vault, KeyID, Nombre, charsmax(Nombre));
formatex(g_menu, charsmax(g_menu), "%s\r: \y%s", Nombre, add_point(CTDanio));
num_to_str(Pos, Posision_ID, charsmax(Posision_ID));
menu_additem(menu, g_menu, Posision_ID);
}
}
case 4: {
menu = menu_create("DAÑO HECHO SIENDO TT", "top15_seleccionado");
new TTDanio;
g_Sort_Menu = adv_vault_sort_create(g_ADV_Vault, ORDER_DESC, TIEMPO_GUARDADO, 0, g_Campos[DANIO_HECHO_TT]);
Top15Loop = min(adv_vault_sort_numresult(g_ADV_Vault, g_Sort_Menu), 15);
for (new Pos = 1; Pos <= Top15Loop; ++Pos) {
KeyID = adv_vault_sort_position(g_ADV_Vault, g_Sort_Menu, Pos);
if (!adv_vault_get_prepare(g_ADV_Vault, KeyID))
continue;
TTDanio = adv_vault_get_field(g_ADV_Vault, g_Campos[DANIO_HECHO_TT]);
adv_vault_get_keyname(g_ADV_Vault, KeyID, Nombre, charsmax(Nombre));
formatex(g_menu, charsmax(g_menu), "%s\r: \y%s", Nombre, add_point(TTDanio));
num_to_str(Pos, Posision_ID, charsmax(Posision_ID));
menu_additem(menu, g_menu, Posision_ID);
}
}
}
adv_vault_sort_destroy(g_ADV_Vault, g_Sort_Menu);
menu_setprop(menu, MPROP_BACKNAME, "Atrás");
menu_setprop(menu, MPROP_NEXTNAME, "Siguiente");
menu_setprop(menu, MPROP_EXITNAME, "Volver");
menu_display(id, menu, 0);
}
public top15_seleccionado(id, menu, item) {
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_menu, charsmax(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(menu, g_menu);
menu_setprop(menu, MPROP_EXITNAME, "SALIR");
menu_display(id, menu, 0);
return PLUGIN_HANDLED;
}
public menu_estadisticas(id, menu, item) {
if (!g_Conectado[id] || item == MENU_EXIT) {
menu_destroy(menu);
return PLUGIN_HANDLED;
}
menu_destroy(menu);
switch (item) {
case 0: show_menu_estadisticas(id);
case 1: ChatColor(id, "!g%s !yEN CONSTRUCCIÓN :)", Prefijo);
case 2: Clcmd_Rank(id);
case 3: Clcmd_tops15(id);
}
return PLUGIN_HANDLED;
}
/***********************************************/
/************ COMANDOS SAY/SAY_TEAM ************/
/***********************************************/
show_menu_estadisticas(id) {
static len; len = 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(id, KEYSMENU, g_menu, -1, "Menu Estadisticas Personales");
}
public menu_estadisticas_personales(id, item) {
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_msgSayText, Count, i;
vformat(Mensaje, charsmax(Mensaje), Entrada, 3);
if (!g_msgSayText) g_msgSayText = get_user_msgid("SayText");
replace_all(Mensaje, charsmax(Mensaje), "!g", "^4");
replace_all(Mensaje, charsmax(Mensaje), "!y", "^1");
replace_all(Mensaje, charsmax(Mensaje), "!t", "^3");
if (Index) {
Jugadores[0] = Index;
Count = 1;
} else get_players(Jugadores, Count, "c");
for (i = 0; i < Count; ++i) {
message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, Jugadores[i]);
write_byte(Jugadores[i]);
write_string(Mensaje);
message_end();
}
}
stock ShowHUD_Message(id, iColors[3] = { 255, 255, 255 }, Float:fPosX = -1.0, Float:fPosY = -1.0, iEffect = 0, Float:fTime = 0.0, Float:fInTime = 0.5, Float:fOutTime = 0.5, szMessage[]) {
set_dhudmessage(0, 0, 0, -1.00, -1.00, 0, 0.00, 0.00, 0.00, 0.00, false);
for (new i = 0; i < 8; i++) show_dhudmessage(id, "");
set_dhudmessage(iColors[0], iColors[1], iColors[2], fPosX, fPosY, iEffect, 0.0, fTime, fInTime, fOutTime, false);
show_dhudmessage(id, szMessage);
}
stock fm_get_weapon_ent_owner(ent) {
if (pev_valid(ent) != OFFSET_PDATA)
return -1;
return get_pdata_cbase(ent, OFFSET_WEAPON_OWNER, OFFSET_LINUX_WEAPONS);
}
// Stock by Kiske -counts number of characters in a string-
stock count_characters(const szString[], const len = sizeof(szString)) {
new count, i;
for (i = 0 ; i < len; i++)
{
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 i = 0; i < len; i++)
{
if (!isalpha(str[i]) && !isdigit(str[i]))
return 1;
}
return 0;
}
// Stock by Asdito´^ -add point to numbers-
stock add_point(number) {
new count, i, str[29], str2[35], len;
num_to_str(number, str, charsmax(str));
len = strlen(str);
for (i = 0; i < len; i++)
{
if (i != 0 && ((len - i) %3 == 0))
{
add(str2, charsmax(str2), ".", 1);
count++;
add(str2[i+count], 1, str[i], 1);
}
else
add(str2[i+count], 1, str[i], 1);
}
return str2;
}