23/03/2020, 06:56 AM
(Última modificación: 24/03/2020, 02:03 PM por Alejandro. Edited 9 times in total.)
REPUTACIÓN DE ADMINISTRADORES
Changelog:
Créditos:
Información:
Comando:
Cuenta con:
Imagenes:
Razones para dar (y/o) quitar reputación:
Codigo:
Código:
AMXX - Reputación de admin 1.0: Versión de lanzamiento, sera actualizado...
Créditos:
Código:
Hypnotize: Dio parte de la idea.
Información:
Comando:
- admintop. (top de los administradores con mejor reputación)
- reputacion. (Para ver los administradores que se pueden dar reputación)
Cuenta con:
- Top de administradores.
- Solo 1 reputación por jugador, los administradores no se pueden dar reputación entre ellos.
- Reputación negativa y positiva.
- Perfil de administrador.
- Razón de reputación.
- Perfil de administrador.
- Guardado de datos adv_vault.
- Localidad de administrador.
- Fecha de vencimiento de administrador.
- Lista de reputaciones con su razones y nombre del que dio la reputación.
- Requiere amx-mod-1.8.3 o superior.
- Desactivación automática de administrador al llegar a una reputación bastante mala.
- amx_cvar RDA_SUSPENSION "Para activar y desactivar la suspensión de administrador por reputación mala"
- amx_cvar RDA_SUSPENSION_REP "Reputación negativa que se requiere para desactivar un administrador"
Imagenes:
Razones para dar (y/o) quitar reputación:
- Puedes dar un +rep, si te cae bien el admin o por lo menos si vez que esta haciendo el trabajo
correcto y se lo ah ganado.
- Puedes quitar reputación si un admin, esta haciendo su trabajo incorrectamente, osea esta
usando para mal sus beneficios. Si tiene muchos +Rep ya los dueños se encargarían de ver que
hacer con ese administrador, en próxima actualizaciones, haré que dependiendo de una cantidad
de -rep el admin sea suspendido automáticamente, ya eso sera en otra ocasion.
Codigo:
Código PHP:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <adv_vault>
#include <geoip>
#define MAX_ADMINS 100
#define MAX_REP 21
#define AdminRep(%1) (g_data_admin[%1][ReputacionPositiva] + g_data_admin[%1][ReputacionNegativa])
enum _:DataAdminTypes {Reputacion, ReputacionPositiva, ReputacionNegativa, Type_Data[5], Prim_Data[32], Flags_Data[60], Vencimiento_Data[15], Admin_Name[32], Local_Admin[25] };
enum _:DataReps {Razon[15], RepName[32], Rep};
enum _:TypeRep {Positiva = 0, Negativa};
enum _:TypeSave {Registrar, Guardar, Cargar, Eliminar};
new gzFile[60];
new g_vault, g_vault_rep_admin, g_vault_reppositiva_admin, g_vault_repnegativa_admin, g_vault_name_admin, g_vault_rep[MAX_REP][DataReps];
new g_vault_local_admin, g_sort;
new g_data_admin[MAX_ADMINS][DataAdminTypes];
new g_data_rep[MAX_ADMINS][MAX_REP][DataReps];
new g_list[33];
new pcvar_suspension, pcvar_suspension_rep;
new g_Tag[]="^4[TAG]^1";
new g_Web[]="www.amxmodx-es.com";
new g_base_de_datos[]="db_adminrep";
new RazonSuspencion[]="ADMIN SUSPENDIDO - REPUTACION MALISIMA.";
new g_item[2][MAX_PLAYERS+1];
public plugin_init()
{
register_plugin
(
.plugin_name = "AMXX - Reputacion de admin",
.version = "1.0",
.author = "Alejandro-."
);
pcvar_suspension = register_cvar("RDA_SUSPENSION", "1"); // 0 Apagado - 1 Encendido //
pcvar_suspension_rep = register_cvar("RDA_SUSPENSION_REP", "-10");
register_say("rep", "MenuReputacion");
register_say("reputacion", "MenuReputacion");
register_say("admintop", "TopAdmins");
register_say("reptop", "TopAdmins");
register_say("toprep", "TopAdmins");
register_clcmd("Razon", "RazonText");
adv_vault_admin(Registrar);
Reset_Datas();
Load_Admins();
}
/*-----------------------------/ TOP ADMINISTRADORES /---------------------------------*/
public TopAdmins(iId)
{
new iLen = 0;
new motd[3500];
new N[32], RP, RN, keyindex, pj[32], count = 0;
new toploop = min(adv_vault_sort_numresult(g_vault, g_sort), 10);
iLen += formatex(motd[iLen], sizeof motd-iLen,
"<body><style>body{color:white;background:#282725;font-family:'Arial',sans-serif;text-align:center}\
table{border-collapse:collapse;width:70%%}\
th,td{padding:1%%;}\
th{font-size:12px;background:#0C285C;border:1px solid #1D1E1E}\
td{font-size:9px;border-bottom:1px solid #0C285C;background:rgba(0,0,0,0.5)}\
</style>\
<h1>TOP 10 ADMINISTRADORES</h1>\
<table align=center>\
<tr align=center>\
<th width=10%%>#\
<th width=40%%>Nombre\
<th width=50%%>Reputacion");
for(new position = 1; position <= toploop; position++)
{
keyindex = adv_vault_sort_position(g_vault, g_sort, position)
if(!adv_vault_get_prepare(g_vault, keyindex))
continue;
RP = adv_vault_get_field(g_vault, g_vault_reppositiva_admin);
RN = adv_vault_get_field(g_vault, g_vault_repnegativa_admin);
adv_vault_get_field(g_vault, g_vault_name_admin, N, 31);
adv_vault_get_keyname(g_vault, keyindex, pj, 31);
if(RP + RN <= 0)
continue;
iLen += formatex(motd[iLen], sizeof motd-iLen, "<tr align=center>");
iLen += formatex(motd[iLen], sizeof motd-iLen, "<td>%d", position);
if(N[0])
iLen += formatex(motd[iLen], sizeof motd-iLen, "<td>%s", N);
else
iLen += formatex(motd[iLen], sizeof motd-iLen, "<td>%s", pj);
iLen += formatex(motd[iLen], sizeof motd-iLen, "<td>%d", RP + RN);
count++;
}
iLen += formatex(motd[iLen], sizeof motd-iLen, "</table></body>");
if(!count) client_print_color(iId, print_team_default, "%s No hay jugadores en el ^4top^1 de administradores.", g_Tag);
else show_motd( iId, motd, "TOP ADMINISTRADORES");
}
/*-----------------------------/ MENSAJE MODE /---------------------------------*/
public RazonText(iId)
{
new Text[15];
read_args(Text, 14);
remove_quotes(Text);
trim(Text);
set_dhudmessage(255, 255, 0, -1.0, 0.35, 0, 6.0, 3.0);
if(strlen(Text) < 5)
{
show_dhudmessage(iId, "[ AMXX ] RAZON MUY CORTA.");
client_cmd(iId, "messagemode ^"Razon^"");
return PLUGIN_HANDLED;
}
if(strlen(Text) > 14)
{
show_dhudmessage(iId, "[ AMXX ] RAZON MUY LARGA.");
client_cmd(iId, "messagemode ^"Razon^"");
return PLUGIN_HANDLED;
}
g_data_admin[g_item[0][iId]][Reputacion]++;
g_data_admin[g_item[0][iId]][g_item[1][iId] == 0 ? ReputacionPositiva : ReputacionNegativa] = (g_item[1][iId] == 0 ? g_data_admin[g_item[0][iId]][ReputacionPositiva] + 1 : g_data_admin[g_item[0][iId]][ReputacionNegativa] - 1 )
if(g_data_admin[g_item[0][iId]][Admin_Name])
client_print_color(iId, print_team_default, "%s Diste reputacion ^4%s^1 para el administrador:^3 %s^1 (Razon: %s)", g_Tag, (g_item[1][iId] == 0 ? "positiva" : "negativa" ), g_data_admin[g_item[0][iId]][Admin_Name], Text);
else
client_print_color(iId, print_team_default, "%s Diste reputacion ^4%s^1 para el administrador:^3 %s^1 (Razon: %s)", g_Tag, (g_item[1][iId] == 0 ? "positiva" : "negativa" ), g_data_admin[g_item[0][iId]][Prim_Data], Text);
format(g_data_rep[g_item[0][iId]][g_data_admin[g_item[0][iId]][Reputacion]][Razon], 59, Text);
get_user_name(iId, g_data_rep[g_item[0][iId]][g_data_admin[g_item[0][iId]][Reputacion]][RepName], 31);
g_data_rep[g_item[0][iId]][g_data_admin[g_item[0][iId]][Reputacion]][Rep] = g_item[1][iId];
adv_vault_admin(Guardar, g_item[0][iId], g_data_admin[g_item[0][iId]][Prim_Data]);
if(get_pcvar_num(pcvar_suspension) == 1)
{
if(AdminRep(g_item[0][iId]) <= get_pcvar_num(pcvar_suspension_rep))
{
Supencion(g_item[0][iId]);
if(g_data_admin[g_item[0][iId]][Admin_Name][0])
client_print_color(0, print_team_default, "%s El^4 ADMINISTRADOR^3 %s^1: fue suspendido por reputacion mala.", g_Tag, g_data_admin[g_item[0][iId]][Admin_Name]);
else
client_print_color(0, print_team_default, "%s El^4 ADMINISTRADOR^3 %s^1: fue suspendido por reputacion mala.", g_Tag, g_data_admin[g_item[0][iId]][Prim_Data]);
adv_vault_admin(Eliminar, g_item[0][iId], g_data_admin[g_item[0][iId]][Prim_Data]);
}
}
ViewProfile(iId);
g_item[0][iId] = 0;
g_item[1][iId] = 1;
return PLUGIN_HANDLED;
}
/*-----------------------------/ CLIENT PUTINSERVER /---------------------------------*/
public client_putinserver(iId)
{
g_list[iId] = 0;
g_item[0][iId] = 0;
g_item[1][iId] = 0;
new name[32];
get_user_name(iId, name, 31);
new steamid[25];
get_user_authid(iId, steamid, 31);
new ip[18];
get_user_ip(iId, ip, 31, 1);
for(new i = 0; i <MAX_ADMINS; i++)
{
if(!g_data_admin[i][Prim_Data])
continue;
if(g_data_admin[i][Admin_Name][0])
continue;
if(equal(name, g_data_admin[i][Prim_Data]) || equal(steamid, g_data_admin[i][Prim_Data]) || equal(ip, g_data_admin[i][Prim_Data]))
{
format(g_data_admin[i][Admin_Name], 31, name);
get_localname(iId, g_data_admin[i][Local_Admin], charsmax(g_data_admin[][Local_Admin]));
adv_vault_admin(Guardar, i, g_data_admin[i][Prim_Data]);
}
}
}
/*-----------------------------/ LISTA DE ADMINISTRADORES /---------------------------------*/
public MenuReputacion(iId)
{
static menu;
new count = 0;
new szTitle[100];
new szBuffer[100];
format(szTitle, 99, "\d%s^n\yADMIN REPUTACION.\w", g_Web);
menu = menu_create(szTitle, "HandlerRepMenu");
for(new i = 0; i <MAX_ADMINS; i++)
{
if(!g_data_admin[i][Prim_Data][0])
continue;
if(g_data_admin[i][Admin_Name])
format(szBuffer, 99, "\w%s\d - (%d)", g_data_admin[i][Admin_Name], AdminRep(i));
else
format(szBuffer, 99, "\w%s\d - (%d)", g_data_admin[i][Prim_Data], AdminRep(i));
menu_additem(menu, szBuffer);
count++;
}
menu_setprop(menu, MPROP_EXITNAME, "Salir");
menu_setprop(menu, MPROP_BACKNAME, "Volver");
menu_setprop(menu, MPROP_NEXTNAME, "Siguiente");
if(count)
menu_display(iId, menu);
else
client_print_color(iId, print_team_default, "%s No hay administradores en este servidor.", g_Tag);
}
public HandlerRepMenu(iId, menu, item)
{
if(item == MENU_EXIT)
{
menu_destroy(menu);
return PLUGIN_HANDLED;
}
g_item[0][iId] = item;
next_menu_admin_rep(iId);
return PLUGIN_HANDLED;
}
/*-----------------------------/ MENU REPUTACION /---------------------------------*/
public next_menu_admin_rep(iId)
{
static menu;
new szTitle[100];
if(g_data_admin[g_item[0][iId]][Admin_Name])
format(szTitle, 99, "\d%s^n\y%s: \wReputacion (%d)", g_Web, g_data_admin[g_item[0][iId]][Admin_Name], AdminRep(g_item[0][iId]));
else
format(szTitle, 99, "\d%s^n\y%s: \wReputacion (%d)", g_Web, g_data_admin[g_item[0][iId]][Prim_Data], AdminRep(g_item[0][iId]));
menu = menu_create(szTitle, "Handler_NextRep");
if(g_data_admin[g_item[0][iId]][ReputacionPositiva] > 0)
menu_additem(menu, fmt("Positiva \y(+) [%d]", g_data_admin[g_item[0][iId]][ReputacionPositiva]), _, _, menu_makecallback("CalllBackMenu"));
else
menu_additem(menu, "Positiva \y(+)", _, _, menu_makecallback("CalllBackMenu"));
if(g_data_admin[g_item[0][iId]][ReputacionNegativa] < 0)
menu_additem(menu, fmt("Negativa \r(-) [%d]^n", g_data_admin[g_item[0][iId]][ReputacionNegativa]), _, _, menu_makecallback("CalllBackMenu"));
else
menu_additem(menu, "Negativa \r(-)^n", _, _, menu_makecallback("CalllBackMenu"));
menu_additem(menu, "Ver Perfil");
switch(g_data_admin[g_item[0][iId]][Reputacion])
{
case 1..10: menu_additem(menu, "Lista de Reputaciones^n");
case 11..20:
{
menu_additem(menu, fmt("Lista de Reputaciones \y(%d/2)^n", g_list[iId] + 1));
}
}
menu_setprop(menu, MPROP_EXITNAME, "Volver");
menu_display(iId, menu);
}
public CalllBackMenu(iId, menu, item)
{
new var = false;
if(is_user_admin(iId))
var = true;
new name[32];
get_user_name(iId, name, 31);
new count = 0;
for(new i = 0; i <MAX_REP; i++)
{
if(!g_data_rep[g_item[0][iId]][i][RepName][0])
{
continue;
}
count++;
if(count >= MAX_REP)
var = true;
if(equal(name, g_data_rep[g_item[0][iId]][i][RepName]))
{
var = true;
}
}
return (var ? ITEM_DISABLED : ITEM_ENABLED);
}
public Handler_NextRep(iId, menu, item)
{
if(item == MENU_EXIT)
{
MenuReputacion(iId);
return PLUGIN_HANDLED;
}
switch(item)
{
case 0, 1:
{
g_item[1][iId] = item;
client_cmd(iId, "messagemode ^"Razon^"");
}
case 2: ViewProfile(iId);
case 3:
{
ListRep(iId);
if(g_data_admin[g_item[0][iId]][Reputacion] > 10)
{
if(!g_list[iId])
g_list[iId]++;
else
g_list[iId] = 0;
}
next_menu_admin_rep(iId);
}
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
/*-----------------------------/ ADMIN PERFIL /---------------------------------*/
public ViewProfile(iId)
{
new motd[1536];
static len;
len = 0;
new count = 0;
len += formatex(motd[len], sizeof motd-len,
"<body>\
<style>\
body{color:white;background:#282725;font-family:'Arial',sans-serif}\
h1{font-size:15px;background:#0C285C;}\
.left,.right{width:40%%;color:white;text-align:center;background:rgba(0,0,0,0.5);padding:3%%;}\
.left a,.right a{color:#0C285C;font-size:15px;text-decoration:none}\
.left{float:left;margin-left:3%%}\
.right{float:right;margin-right:3%%}\
table{font-size:9px}\
th{background:#0C285C}\
td{background:rgba(0,0,0,0.3)}\
.left td{border-bottom:1px solid #0C285C}</style>");
len += formatex(motd[len], sizeof motd-len, "\
<div class=left>\
<h1>REPUTACIONES FRECUENTES</h1>");
len += formatex(motd[len], sizeof motd-len, "\
<table width=100%%>\
<tr align=center>\
<th width=35%%>NOMBRE\
<th width=65%%>RAZON");
for(new i = MAX_REP - 1; i >= 0; i--)
{
if(!g_data_rep[g_item[0][iId]][i][Razon][0] || count >= 5)
continue;
len += formatex(motd[len], sizeof motd-len, "\
<tr align=center>\
<td>%s %s\
<td>%s", g_data_rep[g_item[0][iId]][i][RepName], g_data_rep[g_item[0][iId]][i][Rep] == 0 ? "<span style=color:#6FFF00>(+)</span>" : "<span style=color:red>(-)</span>", g_data_rep[g_item[0][iId]][i][Razon]);
count++;
}
len += formatex(motd[len], sizeof motd-len, "</table></div><div class=right>\
<h1>ADMINISTRADOR</h1>\
<table width=100%%>\
<tr align=center>\
<th width=25%%>NOMBRE\
<th width=25%%>ID\
<th width=50%%>VENCIMIENTO");
new form[100];
if(g_data_admin[g_item[0][iId]][Admin_Name][0])
format(form, 99, g_data_admin[g_item[0][iId]][Admin_Name]);
else
format(form, 99, "No asignado.");
len += formatex(motd[len], sizeof motd-len, "\
<tr align=center>\
<td>%s\
<td>%s", form, g_data_admin[g_item[0][iId]][Prim_Data]);
if(g_data_admin[g_item[0][iId]][Vencimiento_Data][0])
format(form, 99, g_data_admin[g_item[0][iId]][Vencimiento_Data]);
else
format(form, 99, "Permanente");
len += formatex(motd[len], sizeof motd-len, "<td>%s", form);
if(g_data_admin[g_item[0][iId]][Local_Admin][0])
format(form, 99, g_data_admin[g_item[0][iId]][Local_Admin][0]);
else
format(form, 99, "No asignado.");
len += formatex(motd[len], sizeof motd-len, "</table><table width=100%%>\
<tr align=center>\
<th width=70%%>FLAGS\
<th width=30%%>LOCALIDAD");
len += formatex(motd[len], sizeof motd-len, "\
<tr align=center>\
<td>%s\
<td>%s", g_data_admin[g_item[0][iId]][Flags_Data], form);
len += formatex(motd[len], sizeof motd-len, "</table><table width=100%%>\
<tr align=center>\
<th width=25%%>REPUTACION");
len += formatex(motd[len], sizeof motd-len, "\
<tr align=center>\
<td>Positiva: %d | Negativa: %d | Total: %d</table>", g_data_admin[g_item[0][iId]][ReputacionPositiva], g_data_admin[g_item[0][iId]][ReputacionNegativa], g_data_admin[g_item[0][iId]][ReputacionPositiva] + g_data_admin[g_item[0][iId]][ReputacionNegativa]);
len += formatex(motd[len], sizeof motd-len, "");
len += formatex(motd[len], sizeof motd-len, "</body>");
if(g_data_admin[g_item[0][iId]][Admin_Name][0])
format(form, 29, "ADMINISTRADOR: %s", g_data_admin[g_item[0][iId]][Admin_Name]);
else
format(form, 29, "ADMINISTRADOR: %s", g_data_admin[g_item[0][iId]][Prim_Data]);
show_motd(iId, motd, form);
}
/*-----------------------------/ LISTA DE REPUTACIONES /---------------------------------*/
public ListRep(iId)
{
new iLen = 0;
new motd[3500];
new count = 0;
new form[32];
if(g_data_admin[g_item[0][iId]][Admin_Name][0])
format(form, 31, "%s", g_data_admin[g_item[0][iId]][Admin_Name]);
else
format(form, 31, "%s", g_data_admin[g_item[0][iId]][Prim_Data]);
iLen += formatex(motd[iLen], sizeof motd-iLen,
"<body><style>body{color:white;background:#282725;font-family:'Arial',sans-serif;text-align:center}\
table{border-collapse:collapse;width:70%%}\
th,td{padding:1%%;}\
th{font-size:12px;background:#0C285C;border:1px solid #1D1E1E}\
td{font-size:9px;border-bottom:1px solid #0C285C;background:rgba(0,0,0,0.5)}\
</style>\
<h1>%s</h1>\
<table align=center>\
<tr align=center>\
<th width=10%%>#\
<th width=40%%>Nombre\
<th width=50%%>Razon", form);
for(new i = (g_list[iId] == 0 ? 0 : 11); i <=(g_list[iId] == 0 ? 10 : 20); i++)
{
if(!g_data_rep[g_item[0][iId]][i][Razon][0])
continue;
count++
iLen += formatex(motd[iLen], sizeof motd-iLen, "<tr align=center>");
iLen += formatex(motd[iLen], sizeof motd-iLen, "<td>%d", (g_list[iId] == 0 ? count : count + 10));
iLen += formatex(motd[iLen], sizeof motd-iLen, "<td>%s %s", g_data_rep[g_item[0][iId]][i][RepName], g_data_rep[g_item[0][iId]][i][Rep] == 0 ? "<span style=color:#6FFF00>(+)</span>" : "<span style=color:red>(-)</span>");
iLen += formatex(motd[iLen], sizeof motd-iLen, "<td>%s", g_data_rep[g_item[0][iId]][i][Razon]);
}
iLen += formatex(motd[iLen], sizeof motd-iLen, "</table></body>");
show_motd( iId, motd, fmt("REPUTACION: %s", form));
}
/*-----------------------------/ RESETEAR DATOS /---------------------------------*/
public Reset_Datas()
{
for(new i = 0; i <MAX_ADMINS; i++)
{
g_data_admin[i][Reputacion] = 0;
g_data_admin[i][Type_Data] = '^0';
g_data_admin[i][Prim_Data] = '^0';
g_data_admin[i][Flags_Data] = '^0';
g_data_admin[i][Vencimiento_Data] = '^0';
g_data_admin[i][Local_Admin] = '^0';
}
}
/*-----------------------------/ CARGAR ADMINISTRADORES /---------------------------------*/
Load_Admins()
{
get_configsdir(gzFile, charsmax(gzFile));
formatex(gzFile, charsmax(gzFile), "%s/users.ini", gzFile);
new fsize = file_size(gzFile, 1);
new szDatas[5][60], txtlen, readdata[128];
new admin = 0;
new var = false;
for(new line=0;line <=fsize;line++)
{
read_file(gzFile, line, readdata, 127, txtlen);
if(!readdata[0] || readdata[0] == ';' || readdata[0] == '/' && readdata[1] == '/' || readdata[0] == '#' || admin == MAX_ADMINS)
continue;
parse(readdata, szDatas[0], 32, szDatas[1], 10, szDatas[2], 50, szDatas[3], 59, szDatas[4], 15);
for(new i = 0; i <MAX_ADMINS; i++)
{
if(equal(g_data_admin[i][Prim_Data], szDatas[0]))
var = true;
}
if(var) continue;
formatex(g_data_admin[admin][Prim_Data], charsmax(g_data_admin[][Prim_Data]), szDatas[0]);
formatex(g_data_admin[admin][Flags_Data], charsmax(g_data_admin[][Flags_Data]), szDatas[2]);
formatex(g_data_admin[admin][Type_Data], charsmax(g_data_admin[][Type_Data]), szDatas[3]);
formatex(g_data_admin[admin][Vencimiento_Data], charsmax(g_data_admin[][Vencimiento_Data]), szDatas[4]);
adv_vault_admin(Cargar, admin, g_data_admin[admin][Prim_Data]);
admin++
}
}
/*-----------------------------/ SUSPENSION /---------------------------------*/
Supencion(const admin)
{
get_configsdir(gzFile, charsmax(gzFile));
formatex(gzFile, charsmax(gzFile), "%s/users.ini", gzFile);
new writedata[128];
new f = fopen(gzFile, "rt");
new line;
new bool:delete;
new szDatas[5][60];
new data[120];
while(!feof(f))
{
fgets(f, data, sizeof(data) - 1);
parse(data, szDatas[0], 32, szDatas[1], 10, szDatas[2], 50, szDatas[3], 59, szDatas[4], 15);
if(equal(g_data_admin[admin][Prim_Data], szDatas[0]))
{
delete = true;
break;
}
line++;
}
fclose(f);
if(delete)
{
write_file(gzFile, "", line);
formatex(writedata, 127, ";^"%s^" ^"%s^" ^"%s^" ^"%s^" ^"%s^" ;%s", szDatas[0], szDatas[1], szDatas[2], szDatas[3], szDatas[4], RazonSuspencion);
write_file(gzFile, writedata, line);
server_cmd("amx_reloadadmins");
Reset_Datas();
Load_Admins();
}
}
/*-----------------------------/ ADV_VAULT /---------------------------------*/
adv_vault_admin(const TYPE, const admin = -1, admin_data[] = "^0")
{
switch(TYPE)
{
case Registrar:
{
new form[15];
g_vault = adv_vault_open(g_base_de_datos, false);
g_vault_rep_admin = adv_vault_register_field(g_vault, "Admin_Reputacion");
g_vault_reppositiva_admin = adv_vault_register_field(g_vault, "Admin_Reppos");
g_vault_repnegativa_admin = adv_vault_register_field(g_vault, "Admin_RepNeg");
g_vault_name_admin = adv_vault_register_field(g_vault, "Admin_nombre", DATATYPE_STRING, 31);
g_vault_local_admin = adv_vault_register_field(g_vault, "Admin_Local", DATATYPE_STRING, 24);
for(new i = 0; i <MAX_REP; i++)
{
format(form, 14, "Razon-%d", i+1);
g_vault_rep[i][Razon] = adv_vault_register_field(g_vault, form, DATATYPE_STRING, 14);
format(form, 14, "Name-%d", i+1);
g_vault_rep[i][RepName] = adv_vault_register_field(g_vault, form, DATATYPE_STRING, 32);
format(form, 14, "Type-%d", i+1);
g_vault_rep[i][Rep] = adv_vault_register_field(g_vault, form);
}
adv_vault_init(g_vault);
g_sort = adv_vault_sort_create(g_vault, ORDER_DESC, 0, 2000, g_vault_reppositiva_admin, g_vault_repnegativa_admin);
}
case Guardar:
{
adv_vault_set_start(g_vault)
adv_vault_set_field(g_vault, g_vault_rep_admin, g_data_admin[admin][Reputacion]);
adv_vault_set_field(g_vault, g_vault_reppositiva_admin, g_data_admin[admin][ReputacionPositiva]);
adv_vault_set_field(g_vault, g_vault_repnegativa_admin, g_data_admin[admin][ReputacionNegativa]);
adv_vault_set_field(g_vault, g_vault_name_admin, g_data_admin[admin][Admin_Name]);
adv_vault_set_field(g_vault, g_vault_local_admin, g_data_admin[admin][Local_Admin]);
for(new i = 0; i <MAX_REP; i++)
{
adv_vault_set_field(g_vault, g_vault_rep[i][Razon], g_data_rep[admin][i][Razon]);
adv_vault_set_field(g_vault, g_vault_rep[i][RepName], g_data_rep[admin][i][RepName]);
adv_vault_set_field(g_vault, g_vault_rep[i][Rep], g_data_rep[admin][i][Rep]);
}
adv_vault_set_end(g_vault, 0, admin_data)
}
case Cargar:
{
if(!adv_vault_get_prepare(g_vault, _, admin_data))
return;
g_data_admin[admin][Reputacion] = adv_vault_get_field(g_vault, g_vault_rep_admin);
g_data_admin[admin][ReputacionPositiva] = adv_vault_get_field(g_vault, g_vault_reppositiva_admin);
g_data_admin[admin][ReputacionNegativa] = adv_vault_get_field(g_vault, g_vault_repnegativa_admin);
adv_vault_get_field(g_vault, g_vault_name_admin, g_data_admin[admin][Admin_Name], 31);
adv_vault_get_field(g_vault, g_vault_local_admin, g_data_admin[admin][Local_Admin], 24);
for(new i = 0; i <MAX_REP; i++)
{
adv_vault_get_field(g_vault, g_vault_rep[i][Razon], g_data_rep[admin][i][Razon], 59);
adv_vault_get_field(g_vault, g_vault_rep[i][RepName], g_data_rep[admin][i][RepName], 31);
g_data_rep[admin][i][Rep] = adv_vault_get_field(g_vault, g_vault_rep[i][Rep]);
}
}
case Eliminar:
{
if(!adv_vault_get_prepare(g_vault, _, admin_data))
return;
adv_vault_removekey(g_vault, _, admin_data)
}
}
}
/*-----------------------------/ STOCK /---------------------------------*/
stock register_say(cmd[], fun[])
{
if(!cmd[0])
{
log_amx("[AMXX] La funcion en say no fue registrada.");
return;
}
if(!fun[0])
{
log_amx("[AMXX] La funcion no existe.");
return;
}
new comand[30];
format(comand, 29, "say /%s", cmd);
register_clcmd(comand, fun);
format(comand, 29, "say_team /%s", cmd);
register_clcmd(comand, fun);
format(comand, 29, "say %s", cmd);
register_clcmd(comand, fun);
format(comand, 29, "say_team %s", cmd);
register_clcmd(comand, fun);
}
stock get_localname( const id = -1, iCountry[ ] = "", const iLen = 50)
{
new ip[32];
new Pais[40];
get_user_ip(id, ip, 31, 1);
geoip_country(ip, Pais);
if(equal(Pais, "error"))
{
if(contain( ip, "192.168." ) == 0 || equal( ip, "127.0.0.1" ) || contain( ip,"10." ) == 0 || contain( ip,"172." ) == 0)
{
Pais = "LAN";
}
else if(equal(ip, "loopback" ) )
{
Pais = "Listen Server";
}
else
{
Pais = "País Desconocido";
}
}
formatex(iCountry, iLen, Pais);
}