PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fvault>
#include <fakemeta>
#define PLUGIN "Sistema de Cuentas"
#define VERSION "1.0"
#define AUTHOR "Manu"
new const NombreVaul[] = "DataBase"
new Pass[192]
new LogPass[192]
new PassNueva[192]
new MalaPass[33]
new Reg[33]
new Intentos[33]
new CambiarPass[33]
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_clcmd("chooseteam", "clcmd_changeteam");
register_clcmd("jointeam", "clcmd_changeteam");
register_clcmd("Entrar", "Logueo");
register_clcmd("Registrarse", "Registro");
register_clcmd("Cambiar Nick", "NuevoNick");
register_clcmd("Cambiar Password", "NuevaPass");
register_forward(FM_ClientUserInfoChanged, "FWClientUserInfoChanged");
register_event("HLTV", "event_round_start", "a", "1=0", "2=0");
}
public FWClientUserInfoChanged( Index, Buffer )
{
if( !is_user_connected( Index ) )
return FMRES_IGNORED;
static NickName[32], NickOld[32]; get_user_name( Index, NickOld, 31 )
engfunc( EngFunc_InfoKeyValue, Buffer, "name", NickName, 31 )
if( equal( NickName, NickOld ) )
return FMRES_IGNORED;
engfunc( EngFunc_SetClientKeyValue, Index, Buffer, "name", NickOld )
client_cmd( Index, "name ^"%s^"; setinfo name ^"%s^"", NickOld, NickOld )
return FMRES_SUPERCEDE;
}
public client_putinserver(id)
{
MalaPass[id] = 0
Reg[id] = 0
Intentos[id] = 0
set_task(0.1, "clcmd_changeteam", id)
}
public clcmd_changeteam(id)
{
static Team; Team = get_user_team(id)
if( ( Team == 0 || Team == 3 ) && MalaPass[id] == 0 && Reg[id] == 1 )
return PLUGIN_CONTINUE;
else if( !Reg[id] || MalaPass[id] )
{
new Menu = menu_create("\ySistema de Cuentas:", "Mostrar")
menu_addtext(Menu, "\w^n^nVersion^n1.0", 0)
menu_addtext(Menu, "\w^n^nAutor:^nManu", 0)
menu_additem(Menu, "\wEntrar", "1", 0)
menu_additem(Menu, "\wRegistrarse", "2", 0)
menu_additem(Menu, "\wCambiar Nick", "3", 0)
menu_additem(Menu, "\wCambiar Password", "4", 0)
menu_setprop(Menu,MPROP_EXITNAME,"Salir")
menu_display(id, Menu, 0)
}
return PLUGIN_HANDLED ;
}
public Menu(id)
{
new Menu = menu_create("\ySistema de Cuentas:", "Mostrar")
menu_addtext(Menu, "\w^n^nVersion^n1.0", 0)
menu_addtext(Menu, "\w^n^nAutor:^nManu", 0)
menu_additem(Menu, "\wEntrar", "1", 0)
menu_additem(Menu, "\wRegistrarse", "2", 0)
menu_additem(Menu, "\wCambiar Nick", "3", 0)
menu_additem(Menu, "\wCambiar Password", "4", 0)
menu_setprop(Menu,MPROP_EXITNAME,"Salir")
menu_display(id, Menu, 0)
}
public Mostrar(id, Menu, item)
{
if (item == MENU_EXIT)
{
ChatColor(id, "!g[ AMXX ] !ySi estas de espectador, no te servira salir del menu!")
}
new iData[6];
new iAccess;
new iCallback;
new iName[64];
menu_item_getinfo(Menu, item, iAccess, iData, 5, iName, 63, iCallback)
switch (str_to_num(iData))
{
case 1:
{
PreCuenta(id)
}
case 2:
{
if( Intentos[id] == 3 )
{
client_cmd(id, "disconnect;echo INTENTOS MAXIMOS ALCANZADOS;toggleconsole")
}
PreLogueo(id)
}
}
return PLUGIN_HANDLED
}
public PreLogueo(id)
{
new szData[512], szNombre[32]
get_user_name(id, szNombre, 31)
if( !fvault_get_data(NombreVaul, szNombre, szData, charsmax(szData)) )
{
ChatColor(id, "!g[ AMXX ] !yNo estas Registrado!")
Menu(id)
return PLUGIN_HANDLED
}
else
{
client_cmd(id, "messagemode Logueo_Pass")
set_hudmessage(170, 255, 127, 0.0, 0.07, 0, 6.0, 12.0)
show_hudmessage(id, "Ingresa tu Password para Entrar!")
}
return PLUGIN_HANDLED
}
public Logueo(id)
{
new szData[512], szNombre[32], szPass[192]
get_user_name(id, szNombre, 31)
read_args( LogPass, charsmax(LogPass) )
remove_quotes( LogPass )
trim( LogPass )
if( !fvault_get_data(NombreVaul, szNombre, szData, charsmax(szData) ) )
return 0
parse(szData, szPass, 191)
if( equal(szPass,LogPass) )
{
Reg[id] = 1
MalaPass[id] = 0
set_hudmessage(255, 0, 0, -1.0, -1.0, 0, 6.0, 12.0)
show_hudmessage(id, "Has entrado con Exito.")
}
else
{
MalaPass[id] = 1
Menu(id)
Intentos[id]++
set_hudmessage(255, 0, 0, -1.0, -1.0, 0, 6.0, 12.0)
show_hudmessage(id, "Password Incorrecta!^n Intentalo de nuevo.")
return PLUGIN_HANDLED
}
return 1
}
public PreCuenta(id)
{
new szData[512], szNombre[32]
get_user_name(id, szNombre, 31)
if( fvault_get_data(NombreVaul, szNombre, szData, charsmax(szData)) )
{
ChatColor(id, "!g[ AMXX ] !yYa estas Registrado! Entra!")
Menu(id)
return PLUGIN_HANDLED
}
else
{
client_cmd(id, "messagemode Registro_Pass")
set_hudmessage(170, 255, 127, 0.0, 0.07, 0, 6.0, 12.0)
show_hudmessage(id, "Ingresa una Password para Registrarte!")
}
return PLUGIN_HANDLED
}
public Cuenta(id)
{
read_args( Pass, charsmax(Pass) )
remove_quotes( Pass )
trim( Pass )
if( equal(Pass,"") || contain(Pass," ") != -1 )
{
ChatColor(id, "!g[ AMXX ] !yLa password debe tener por lo menos una palabra y sin Espacios!")
Menu(id)
return PLUGIN_HANDLED
}
else
{
new szData[512], szNombre[32]
get_user_name(id, szNombre, 31)
Reg[id] = 1
set_hudmessage(255, 0, 0, -1.0, -1.0, 0, 6.0, 12.0)
show_hudmessage(id, "Te has Registrado con Exito!")
formatex(szData, charsmax(szData), "%s", Pass)
fvault_set_data(NombreVaul, szNombre, szData)
}
return PLUGIN_HANDLED
}
public NuevaPass(id)
{
read_args( PassNueva, charsmax(PassNueva) )
remove_quotes( PassNueva )
trim( PassNueva )
if( equal(PassNueva,"") || contain(PassNueva," ") != -1 )
{
ChatColor(id, "!g[ AMXX ] !yLa password debe tener por lo menos una palabra y sin Espacios!")
Menu(id)
return PLUGIN_HANDLED
}
else
{
new szData[512], szNombre[32]
get_user_name(id, szNombre, 31)
Reg[id] = 1
set_hudmessage(255, 0, 0, -1.0, -1.0, 0, 6.0, 12.0)
show_hudmessage(id, "Has cambiado tu password!")
formatex(szData, charsmax(szData), "%s", PassNueva)
fvault_set_data(NombreVaul, szNombre, szData)
}
return PLUGIN_HANDLED
}
public Opciones(id)
{
new Texto[192]
new Menu = menu_create("\ySistema de Cuentas:", "MostrarOpc")
menu_addtext(Menu, "\w^n^nVersion^n1.0", 0)
menu_addtext(Menu, "\w^n^nAutor:^nManu", 0)
menu_additem(Menu, Texto, "1", 0)
menu_additem(Menu, "\wCambiar Nick", "2", 0)
menu_additem(Menu, "\wCambiar Password", "3", 0)
menu_setprop(Menu,MPROP_EXITNAME,"Salir")
menu_display(id, Menu, 0)
}
public MostrarOpc(id, Menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(Menu)
return PLUGIN_HANDLED
}
new iData[6];
new iAccess;
new iCallback;
new iName[64];
menu_item_getinfo(Menu, item, iAccess, iData, 5, iName, 63, iCallback)
switch (str_to_num(iData))
{
case 1:
{
if( CambiarPass[id] == 0 )
{
client_cmd(id, "messagemode Nueva_Pass")
CambiarPass[id] = 1
}
else
{
ChatColor(id, "!g[ AMXX ] !ySolo puedes cambiar tu password 1 (una) vez por mapa!")
return PLUGIN_HANDLED
}
}
}
return PLUGIN_HANDLED
}
stock ChatColor(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!team", "^3") // Team Color
replace_all(msg, 190, "!team2", "^0") // Team2 Color
if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}