#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[] = "Cuentas"
new Contra[192]
new LogPw[192]
new ContraNueva[192]
new MalaPW[33]
new Reg[33]
new Intentos[33]
new CambiarPW[33]
new PuedoTeam[33]
new Cambiar, maxplayers
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("chooseteam", "clcmd_changeteam")
register_clcmd("jointeam", "clcmd_changeteam")
register_clcmd("Logueo_Contrasenia", "Logueo")
register_clcmd("Registro_Contrasenia", "Cuenta")
register_clcmd("Nueva_Contrasenia", "NuevaContra")
register_forward(FM_ClientUserInfoChanged, "FWClientUserInfoChanged")
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
maxplayers = get_maxplayers()
Cambiar = register_cvar("amx_equipo", "1")
}
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 event_round_start()
{
for( new id = 1; id < maxplayers; id++ )
{
PuedoTeam[id] = 0
}
}
public client_putinserver(id)
{
MalaPW[id] = 0
Reg[id] = 0
Intentos[id] = 0
PuedoTeam[id] = 0
set_task(0.1, "clcmd_changeteam", id)
}
public clcmd_changeteam(id) // Kiske :$ no me salia esta parte :@ igual era un error que despues me di cuenta :P
{
static Team; Team = get_user_team(id)
if( ( Team == 0 || Team == 3 ) && MalaPW[id] == 0 && Reg[id] == 1 )
return PLUGIN_CONTINUE;
else if( !Reg[id] || MalaPW[id] )
{
new Menu = menu_create("\ySistema de Cuentas:", "Mostrar")
menu_additem(Menu, "\wRegistrarse", "1", 0)
menu_additem(Menu, "\wLoguearse", "2", 0)
menu_addtext(Menu, "\w^n^nCreado por Manu para Proteger^nTu nick con contrasenia!", 0)
menu_setprop(Menu,MPROP_EXITNAME,"Salir")
menu_display(id, Menu, 0)
return PLUGIN_HANDLED;
}
else
Opciones(id)
return PLUGIN_HANDLED;
}
/*--------------------------------------------------------------------------------------------------
-----------------------------------------------Menu de Reg----------------------------------------*/
public Menu(id)
{
new Menu = menu_create("\yRegistro", "Mostrar")
menu_additem(Menu, "\wRegistrarse", "1", 0)
menu_additem(Menu, "\wLoguearse", "2", 0)
menu_addtext(Menu, "\w^n^nCreado por Manu para Proteger^nTu nick con contrasenia!", 0)
menu_setprop(Menu,MPROP_EXITNAME,"Salir")
menu_display(id, Menu, 0)
}
public Mostrar(id, Menu, item)
{
if (item == MENU_EXIT)
{
ChatColor(id, "!g[Sistema de Cuentas] !ySi estas de spectador, No te servira que salgas 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 MAXIMO DE INTENTOS ALCANZADOS;toggleconsole")
}
PreLogueo(id)
}
}
return PLUGIN_HANDLED
}
/*--------------------------------------------------------------------------------------------------
-------------------------------------------SOLO LOGUEO--------------------------------------------*/
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[Sistema de Cuentas] !yNo estas Registrado!")
Menu(id)
return PLUGIN_HANDLED
}
else
{
client_cmd(id, "messagemode Logueo_Contrasenia")
set_hudmessage(170, 255, 127, 0.0, 0.07, 0, 6.0, 12.0)
show_hudmessage(id, "Ingresa tu Contrasenia para Loguearte!")
}
return PLUGIN_HANDLED
}
public Logueo(id)
{
new szData[512], szNombre[32], szContra[192]
get_user_name(id, szNombre, 31)
read_args( LogPw, charsmax(LogPw) )
remove_quotes( LogPw )
trim( LogPw )
if( !fvault_get_data(NombreVaul, szNombre, szData, charsmax(szData) ) )
return 0
parse(szData, szContra, 191)
if( equal(szContra,LogPw) )
{
Reg[id] = 1
MalaPW[id] = 0
set_hudmessage(255, 0, 0, -1.0, -1.0, 0, 6.0, 12.0)
show_hudmessage(id, "Te has Logueado con Exito")
}
else
{
MalaPW[id] = 1
Menu(id)
Intentos[id]++
set_hudmessage(255, 0, 0, -1.0, -1.0, 0, 6.0, 12.0)
show_hudmessage(id, "Contrasenia Incorrecta!^n Intentalo denuevo")
return PLUGIN_HANDLED
}
return 1
}
/*--------------------------------------------------------------------------------------------------
------------------------------------------SOLO REGISTRO-------------------------------------------*/
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[Sistema de Cuentas] !yYa estas Registrado! Logueate!")
Menu(id)
return PLUGIN_HANDLED
}
else
{
client_cmd(id, "messagemode Registro_Contrasenia")
set_hudmessage(170, 255, 127, 0.0, 0.07, 0, 6.0, 12.0)
show_hudmessage(id, "Ingresa tu Contrasenia para Registrarte!")
}
return PLUGIN_HANDLED
}
public Cuenta(id)
{
read_args( Contra, charsmax(Contra) )
remove_quotes( Contra )
trim( Contra )
if( equal(Contra,"") || contain(Contra," ") != -1 )
{
ChatColor(id, "!g[Sistema de Cuentas] !yLa contrasenia tener 1 palabra y no debe contener 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", Contra)
fvault_set_data(NombreVaul, szNombre, szData)
}
return PLUGIN_HANDLED
}
/*--------------------------------------------------------------------------------------------------
-----------------------------------------------Nueva PW-------------------------------------------*/
public NuevaContra(id)
{
read_args( ContraNueva, charsmax(ContraNueva) )
remove_quotes( ContraNueva )
trim( ContraNueva )
if( equal(ContraNueva,"") || contain(ContraNueva," ") != -1 )
{
ChatColor(id, "!g[Sistema de Cuentas] !yLa contrasenia debe tener 1 palabra y no debe contener 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, "Tu contrasenia se ha cambiado Exitosamente!")
formatex(szData, charsmax(szData), "%s", ContraNueva)
fvault_set_data(NombreVaul, szNombre, szData)
}
return PLUGIN_HANDLED
}
/*--------------------------------------------------------------------------------------------------
------------------------------------------Opciones de Cuenta--------------------------------------*/
public Opciones(id)
{
new Texto[192]
new Menu = menu_create("\yOpciones", "MostrarOpc")
if( get_pcvar_num(Cambiar) != 0 && PuedoTeam[id] == 0 )
formatex(Texto, charsmax(Texto), "\wCambiar de Team^n")
else
formatex(Texto, charsmax(Texto), "\dCambiar de Team^n")
menu_additem(Menu, Texto, "1", 0)
menu_additem(Menu, "\wCambiar Contrasenia", "2", 0)
menu_additem(Menu, "\wSalir de la Cuenta", "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( get_pcvar_num(Cambiar) != 0 && PuedoTeam[id] == 0)
{
if( cs_get_user_team(id) == CS_TEAM_CT )
{
user_silentkill(id)
cs_set_user_team(id, CS_TEAM_T)
}
else
{
user_silentkill(id)
cs_set_user_team(id, CS_TEAM_CT)
}
PuedoTeam[id] = 1
}
else
{
ChatColor(id, "!g[Sistema de Cuentas] !yNo esta permitido el cambio de team!")
return PLUGIN_HANDLED
}
}
case 2:
{
if( CambiarPW[id] == 0 )
{
client_cmd(id, "messagemode Nueva_Contrasenia")
CambiarPW[id] = 1
}
else
{
ChatColor(id, "!g[Sistema de Cuentas] !yNo puedes cambiar tu contrasenia mas de 1 vez por mapa!")
return PLUGIN_HANDLED
}
}
case 3:
{
client_cmd(id, "echo ********************************;echo **** Has decidido salir de tu cuenta! *****;echo ********************************;disconnect;toggleconsole")
}
}
return PLUGIN_HANDLED
}
/*--------------------------------------------------------------------------------------------------
-----------------------------------------------COLOR CHAT-----------------------------------------*/
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();
}
}
}
}