[Ayuda/Pedido] Modificacion de Sistema de Cuentas (Nivel: Basico)
#1
Hola a Todos, Necesito Que Me Ayuden con este Sistema de Cuentas:

1) Quisiera Que Cuando se Entre al Servidor Aparezca Automaticamente el Menu Del Sistema Para Logearse/Registrarse.

2) Tambien Necesito Cambiar la Key para Abrir el Menu, Por Default se Abre con la "m" Pero Molesta Mucho Ya que con la "m" se abre el menu de Zombie Plague (La Key Que Quiero Para que se abra el menu es la "j").

PD: En el Titulo Puse "Nivel: Basico" Para Que no dejaran el post sin verlo.
PD: Espero Que me Puedan Ayudar Con esto, Gracias.

Acá el Code:

Código PHP:
#include <amxmodx>
#include <fvault>
#include <fakemeta>

#define Hook_Chooseteam

/*==================================================================================================
  * GLOBAL VARS & ENUMS *
==================================================================================================*/
enum
{
    
PASSWORD 0,
    
NAME,
    
    
MAX_CHANGE
}

enum
{
    
UNREGISTERED 0,
    
REGISTERED,
    
LOGGED,
    
    
MAX_STATUS
}

new 
g_TempPassword[33][32],g_Password[33][32],g_Date[33][32],g_Status[33],gMsg,g_AlredyChanged[33][MAX_CHANGE],g_CanChange

new const g_MsgArgs[][] = { "#Team_Select","#Team_Select_Spect","#IG_Team_Select","#IG_Team_Select_Spect" }

new const 
g_Vault[] = "_cuentas_"

new const g_szStatus[MAX_STATUS][] = { "No registrado","Registrado","Logueado" }

new 
g_msgSayText

/*==================================================================================================
  * BEGINNING OF PLUGIN *
==================================================================================================*/
public plugin_init()
{
    
register_plugin("Sistema de Cuentas","2.0.1","Manu")
    
register_forward(FM_ClientUserInfoChanged"fw_ClientUserInfoChanged2")
    
    
register_message(get_user_msgid("ShowMenu"),"message_showmenu")
    
register_message(get_user_msgid("VGUIMenu"),"message_vguimenu")
    
    
register_clcmd("INGRESAR_PASSWORD","cmd_password")
    
register_clcmd("INGRESAR_NICK","cmd_nick")
    
    
#if defined Hook_Chooseteam
    
register_clcmd("chooseteam","cmd_block")
    
register_clcmd("jointeam","cmd_block")
    
#endif
    
    
g_msgSayText get_user_msgid("SayText")
    
gMsg CreateHudSyncObj()
}

/*==================================================================================================
  * CLIENT_ FUNCS *
==================================================================================================*/

public client_putinserver(id)
{
    
g_Password[id][0] = '^0';g_Status[id] = UNREGISTERED
    
    g_AlredyChanged
[id][NAME] = 0;g_AlredyChanged[id][PASSWORD] = 0
    
    fvault_load
(id)
}

public 
client_infochanged(id)
{
    static 
szName[32],szOldName[32]
    
    
get_user_name(id,szOldName,31);get_user_info(id,"name",szName,31)
    
    if(
equal(szOldName,szName) || g_CanChange)
        return 
PLUGIN_CONTINUE
        
    client_cmd
(id,"name %s",szName);set_user_info(id,"name",szName)
    
    return 
PLUGIN_HANDLED
}

/*==================================================================================================
  * CMDs *
==================================================================================================*/

public cmd_password(id)
{
    static 
szName[32],szArgs[64];read_args(szArgs,63)
    
remove_quotes(szArgs);trim(szArgs)
    
    
get_user_name(id,szName,31)
    
    if(
containi(szArgs," ") != -|| equal(szArgs,"")) {
        
show_msg(id,"Tu password contiene errores...")
        return 
PLUGIN_HANDLED
    
}
    switch(
g_Status[id])
    {
        case 
UNREGISTERED: {
            
show_msg(id,"Confirma tu password para proseguir...");copy(g_TempPassword[id],31,szArgs)
            
show_menu_confirm(id)
        }
        case 
REGISTERED: {
            if(!
equal(g_Password[id],szArgs)) {
                
show_msg(id,"La password ingresada no coincide con la de la cuenta...")
                return 
PLUGIN_HANDLED
            
}
            
            
g_Status[id] = LOGGED;fvault_save(id)// To save the date
            
show_msg(id,"Te logueaste satisfactoriamente en tu cuenta...");change_team(id)
        }
        case 
LOGGED: {
            if(
g_AlredyChanged[id][PASSWORD]) {
                
show_msg(id,"Ya cambiaste tu password en este mapa...")
                return 
PLUGIN_HANDLED
            
}
            
            
show_msg(id,"Confirma tu password para cambiarla...");copy(g_TempPassword[id],31,szArgs)
            
show_menu_confirm(id)
        }
    }
    
    return 
PLUGIN_HANDLED
}

public 
cmd_nick(id)
{
    if(
g_Status[id] != LOGGED || g_AlredyChanged[id][NAME])
        return 
PLUGIN_HANDLED
        
    
static args[32];read_args(args,31)
    
remove_quotes(args);trim(args)
    
    if(
containi(args," ") != -|| !args[1])
        return 
PLUGIN_HANDLED
    
    
if(change_name(id,args))
        
show_msg(id,"Tu nombre se ha cambiado con exito!")
    
    return 
PLUGIN_HANDLED
}

/*==================================================================================================
  * BLOCK CHANGE TEAM *
==================================================================================================*/

public message_showmenu(msgid,dest,id)
{
    static 
szMsg[16];get_msg_arg_string(4,szMsg,15)
    
    for(new 
i;sizeof g_MsgArgs;i++)
    {
        if(
equal(szMsg,g_MsgArgs[i]))
        {
            
show_menu_block(id)
            return 
PLUGIN_HANDLED
        
}
    }
    return 
PLUGIN_CONTINUE
}

public 
message_vguimenu(msgid,dest,id)
{
    if(
get_msg_arg_int(1) != 2)
        return 
PLUGIN_CONTINUE
        
    show_menu_block
(id)
    
    return 
PLUGIN_HANDLED
}

#if defined Hook_Chooseteam
public cmd_block(id) {
    
show_menu_block(id)
    return 
PLUGIN_HANDLED
}
#endif

/*==================================================================================================
  * MENUs *
==================================================================================================*/

public show_menu_block(id)
{
    static 
szMenu[128],szName[32]
    
get_user_name(id,szName,31);formatex(szMenu,127,"REGISTRO \r- \yZOMBIE LEFT 4 DEAD 2^n\wESTADO ACTUAL: \y[ \r%s \y]\w^n^n%s%s",g_szStatus[g_Status[id]],g_Status[id] == LOGGED "Ultima vez que entraste \r":(g_Status[id] == REGISTERED "\yEstas registrado como \r":""),g_Status[id] == LOGGED g_Date[id]:(g_Status[id] == REGISTERED szName:""))
    
    new 
Menu menu_create(szMenu,"handler_menu_block")
    
    
formatex(szMenu,63,"%sEntrar",g_Status[id] != REGISTERED "\d":"\w")
    
menu_additem(Menu,szMenu,"1",0)
    
    
formatex(szMenu,63,"%sRegistrar^n",g_Status[id] != UNREGISTERED "\d":"\w")
    
menu_additem(Menu,szMenu,"2",0)
    
    
formatex(szMenu,63,"%s%sCambiar PASSWORD",g_Status[id] != LOGGED "\d":"\w",g_AlredyChanged[id][PASSWORD] ? "\d":"")
    
menu_additem(Menu,szMenu,"3",0)
    
    
formatex(szMenu,63,"%s%sCambiar NICK^n",g_Status[id] != LOGGED "\d":"\w",g_AlredyChanged[id][NAME] ? "\d":"")
    
menu_additem(Menu,szMenu,"4",0)
    
    
menu_additem(Menu,"Informacion","5",0)
    
    
menu_setprop(Menu,MPROP_EXITNAME,"Salir")
    
    
menu_display(id,Menu,0)
}

public 
handler_menu_block(id,menu,item)
{
    if(
item == MENU_EXIT)
    {
        
menu_destroy(menu)
        return 
PLUGIN_HANDLED
    
}
    
    switch(
item)
    {
        case 
0: {
            if(
g_Status[id] != REGISTERED)
            {
                
show_msg(id,"No puedes elegir esta opcion...")
                return 
PLUGIN_HANDLED
            
}
            
            
show_msg(id,"Ingresa tu PASSWORD para entrar a tu cuenta...");client_cmd(id,"messagemode INGRESAR_PASSWORD")
        }
        case 
1: {
            if(
g_Status[id] != UNREGISTERED)
            {
                
show_msg(id,"No puedes elegir esta opcion...")
                return 
PLUGIN_HANDLED
            
}
            
            
show_msg(id,"Ingresa una PASSWORD para crear una cuenta...");client_cmd(id,"messagemode INGRESAR_PASSWORD")
        }
        case 
2: {
            if(
g_Status[id] != LOGGED || g_AlredyChanged[id][PASSWORD])
            {
                
show_msg(id,"No estas logueado o ya cambiaste tu password durante el mapa...")
                return 
PLUGIN_HANDLED
            
}
            
            
show_msg(id,"Ingresa tu nueva PASSWORD...");client_cmd(id,"messagemode INGRESAR_PASSWORD")
        }
        case 
3: {
            if(
g_Status[id] != LOGGED || g_AlredyChanged[id][NAME])
            {
                
show_msg(id,"No estas logueado o ya cambiaste tu nick durante el mapa...")
                return 
PLUGIN_HANDLED
            
}
            
            
show_msg(id,"Ingresa tu nuevo NICK...");client_cmd(id,"messagemode INGRESAR_NICK")
        }
        case 
4: {
            
set_hudmessage(02550, -1.0, -1.024.07.0)
            
ShowSyncHudMsg(id,gMsg,"Pide ayuda por FORO o  STEAM^n^n^nFORO^nwww.Clan-nK.es^n^nSTEAM^ngallo657")
        }
    }
    
    return 
PLUGIN_HANDLED
}

public 
show_menu_confirm(id)
{
    static 
szTitle[128];formatex(szTitle,127,"\w%sLa password sera \r%s^n^n\yConfirmar?",g_Status[id] == LOGGED "Estas cambiando tu password^n":"Estas seteando tu password^n",g_TempPassword[id])
    
    new 
Menu menu_create(szTitle,"handler_menu_confirm")
    
    
menu_additem(Menu,"\rSi\w, confirmar","1",0)
    
menu_additem(Menu,"\rNo\w, deseo reescribirla","2",0)
    
    
menu_setprop(Menu,MPROP_EXIT,MEXIT_NEVER)
    
    
menu_display(id,Menu,0)
}

public 
handler_menu_confirm(id,menu,item)
{
    switch(
item)
    {
        case 
0: {
            switch(
g_Status[id])
            {
                case 
LOGGED: {
                    
show_msg(id,"Tu password ha sido cambiada satisfactoiramente")
                    
                    
copy(g_Password[id],31,g_TempPassword[id]);fvault_save(id)
                    
                    
g_AlredyChanged[id][PASSWORD] = 1
                
}
                case 
UNREGISTERED: {    
                    
show_msg(id,"Tu cuenta ha sido creada satisfactoriamente")
                    
                    
copy(g_Password[id],31,g_TempPassword[id]);fvault_save(id)
                    
                    
g_Status[id] = LOGGED;change_team(id)
                }
            }
        }
        case 
1: {
            
menu_destroy(menu)
            
            
client_cmd(id,"messagemode INGRESAR_PASSWORD")
            
            
g_Status[id] == LOGGED show_msg(id,"Ingresa tu nueva PASSWORD..."):show_msg(id,"Ingresa la PASSWORD para tu nueva cuenta...")
        }
    }
    
    return 
PLUGIN_HANDLED
}

/*==================================================================================================
  * LOAD | SAVE *
==================================================================================================*/

public fvault_load(id)
{
    static 
szName[32],szData[64];get_user_name(id,szName,31)
    
    if(!
fvault_get_data(g_Vault,szName,szData,63))
        
g_Status[id] = UNREGISTERED
    
else {
        
strbreak(szData,g_Password[id],31,g_Date[id],31)
        
        
g_Status[id] = REGISTERED
    
}
}

public 
fvault_save(id)
{
    static 
szName[32],szData[64];get_user_name(id,szName,31)
    
    
get_time("%c",g_Date[id],31);formatex(szData,63,"%s %s",g_Password[id],g_Date[id])
    
    
fvault_set_data(g_Vault,szName,szData)
}

/*==================================================================================================
  * STOCKS *
==================================================================================================*/
stock change_name(const id, const string[])
{
    static 
szName[32],szData[64];get_user_name(id,szName,31)
    
    if(
equal(szName,string))
        return 
0
        
    
if(fvault_get_data(g_Vault,string,szData,63))
        return 
0
    
    g_CanChange 
1;set_user_info(id,"name",string)
    
g_CanChange 0
    
    fvault_remove_key
(g_Vault,szName)
    
    
set_task(1.0,"fvault_save",id)
    
    
g_AlredyChanged[id][NAME] = 1
    
    
return 1
}

stock change_team(const id)
{
    
engclient_cmd(id,"jointeam","5")
    
    
engclient_cmd(id,"joinclass","5")
}

stock show_msg(const id, const string[])
{
    
set_hudmessage(025500.150.1012.010.0)
    
ShowSyncHudMsg(id,gMsg,"%s",string)
}
public 
fw_ClientUserInfoChanged2(idBuffer

    if(!
is_user_connected(id)) 
        return 
FMRES_IGNORED
     
    static 
NickName[32], NickOld[32]; get_user_name(idNickOld31
    
engfunc(EngFunc_InfoKeyValueBuffer"name"NickName31
     
    if (
equal(NickNameNickOld)) 
        return 
FMRES_IGNORED
     
    
engfunc(EngFunc_SetClientKeyValueidBuffer"name"NickOld
     
    
client_cmd(id"name ^"%s^"; setinfo name ^"%s^""NickOldNickOld
    
client_printcolor(id"!g[Clan nK] !dPor seguridad no puedes cambiarte el !tnombre !ddentro del servidor"
     
    return 
FMRES_SUPERCEDE
}
stock client_printcolor(const id, const input[], any:...)
{
    new 
iCount 1iPlayers[32]
    
    static 
szMsg[191]
    
vformat(szMsgcharsmax(szMsg), input3)
    
    
replace_all(szMsg190"!g""^4"// verde
    
replace_all(szMsg190"!d""^1"// color default del cliente
    
replace_all(szMsg190"!t""^3"// color del team
    
    
if(idiPlayers[0] = id
    
else get_players(iPlayersiCount"ch")
        
    for (new 
0iCounti++)
    {
        if (
is_user_connected(iPlayers[i]))
        {
            
message_begin(MSG_ONE_UNRELIABLEg_msgSayText_iPlayers[i])
            
write_byte(iPlayers[i])
            
write_string(szMsg)
            
message_end()
        }
    }

— No lograran evitar que exprese todo lo que pienso.
— ¿Ah no?
[Imagen: kKLDAqA.png]
Okay
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)