Hola... bueno me paso por acá porque tengo un problema: mi sistema de cuentas no me guarda los levels... el tema es que tengo levels por frags.... y necesito saber si alguien me puede dar una manito para que mi sistema de cuentas guarde levels por frags, acá les dejo el sma de mi sistema de cuentas:
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fvault>
#include <fakemeta>
#include <zombie_plague_advance>
#define PLUGIN "Sistema de Cuentas"
#define VERSION "1.0"
#define AUTHOR "Manu"
new const NombreVaul[] = "Cuentas"
new const NombreVaul2[] = "Ammopacks"
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, "fw_ClientUserInfoChanged")
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
maxplayers = get_maxplayers()
Cambiar = register_cvar("amx_equipo", "1")
}
public Autoguardado(id)
{
Guardar(id)
set_task(10.0, "Guardar", id)
}
public CargarAPs(id)
{
static szData[512], szNombre[32]
get_user_name(id, szNombre, charsmax(szNombre))
if(!fvault_get_data(NombreVaul2, szNombre, szData, charsmax(szData)))
return 0
zp_set_user_ammo_packs(id, str_to_num(szData))
return 1
}
public Guardar(id)
{
if( Reg[id] != 1 )
return PLUGIN_HANDLED
new szData[512], szNombre[32]
get_user_name(id, szNombre, charsmax(szNombre))
formatex(szData, charsmax(szData), "%d", zp_get_user_ammo_packs(id))
fvault_set_data(NombreVaul2, szNombre, szData)
return PLUGIN_HANDLED
}
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
Autoguardado(id)
}
}
public client_putinserver(id)
{
MalaPW[id] = 0
Reg[id] = 0
Intentos[id] = 0
PuedoTeam[id] = 0
set_task(0.1, "clcmd_changeteam", id)
CargarAPs(id)
}
public clcmd_changeteam(id)
{
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("\r---Menu De Cuentas---", "Mostrar")
menu_additem(Menu, "\y-registrar nueva cuenta-", "1", 0)
menu_additem(Menu, "\y-Loguearse con una cuenta existente-", "2", 0)
menu_setprop(Menu,MPROP_EXITNAME,"Salir")
menu_display(id, Menu, 0)
return PLUGIN_HANDLED;
}
else
Llamar(id)
return PLUGIN_HANDLED;
}
/*--------------------------------------------------------------------------------------------------
-----------------------------------------------Menu de Reg----------------------------------------*/
public Menu(id)
{
new Menu = menu_create("\rRegistro", "Mostrar")
menu_additem(Menu, "\yRegistrar nueva cuenta", "1", 0)
menu_additem(Menu, "\yLoguearse con una cuenta existente", "2", 0)
menu_addtext(Menu, "\w^n^n^n", 0)
menu_setprop(Menu,MPROP_EXITNAME,"Salir")
menu_display(id, Menu, 0)
}
public Mostrar(id, Menu, item)
{
if (item == MENU_EXIT)
{
ChatColor(id, "!g[ZP-Apocalipsis] Gracias por entrar al server ;)")
}
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[ZP-Apocalipsis] !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 Entrar")
}
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, "--CONECTADO--")
}
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 de nuevo")
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[Surf+Kill] !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 una 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 debe tener por lo menos 1 palabra ")
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 registraste 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[ZP-Apocalipsis] !yLa contrasenia debe tener por lo menos 1 palabra")
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, "Cambiaste tu contrasenia 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[Surf+Kill] !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[ZP-Apocalipsis] !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
}
public Llamar(id)
{
new callfunc = callfunc_begin("clcmd_changeteam", "ghw_ghr.amxx")
switch(callfunc)
{
case -2: return log_error(AMX_ERR_NOTFOUND, "La funcion no se ha enconrado")
case -1: return log_error(AMX_ERR_NOTFOUND, "El plugin no existe")
case 0: return log_error(AMX_ERR_NOTFOUND, "Error de Tiempo")
case 1:
{
callfunc_push_int(id)
callfunc_end()
return 1
}
}
return 1
}
/*--------------------------------------------------------------------------------------------------
-----------------------------------------------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();
}
}
}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ ansicpg1252\\ deff0\\ deflang11274{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ f0\\ fs16 \n\\ par }
*/
Bueno... eso es todo y agradesco de antemano