View Single Post
Shion
Senior Member
Join Date: Dec 2008
Old 11-13-2010 , 19:55   Re: [ES] Una pregunta sobre guardado de SHMod
#9

Lo postie ahi arriba,

Encontre un tremendo prolem XD!, Una ves que entras te registras, cuando salis y volves a entrar no te deja entrar mas te dice Kicked como si tubieras mal la pass, a todos le pasa lo mismo

EDIT:
Taria bueno ponerle un guardado a este registro + logeo

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[] = "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", "NuevaContrasenia")
    
    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 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();
            }
        }
    }
} 
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang11274\\ f0\\ fs16 \n\\ par }
*/
__________________

Last edited by Shion; 11-13-2010 at 23:18.
Shion is offline