[Ajuda] Registro/Login DOF2
#1

Alguem me ajuda criei esse sistemade Registro/Login mas nгo estб funcionando

Primeiro BUG: ta dando pra logar sem se registrar
Segundo BUG: Quando se registra na pasta scriptfiles fica Senha = (null)
exemplo:

Eu me registro com a
Senha = 123abc
na pasta scriptfiles fica com a
Senha = (null)

atй agora eu acho sу й esses me ajudem me deem alguma soluзгo

@Edit
o cуdigo ta bem indentado nгo sei porquк ficou assim quando postei mas enfim ...

pawn Код:
#define DIALOG_INICIO                                                           1
#define DIALOG_REGISTRO                                                         2
#define DIALOG_LOGIN                                                            3

enum pInfo
{
    pSenha
};
new PlayerInfo[MAX_PLAYERS][pInfo];

public OnPlayerRequestClass(playerid, classid)
{
    ShowPlayerDialog(playerid,DIALOG_INICIO,DIALOG_STYLE_LIST,"Os Fбnaticos Login","Logar\nRegistrar\nSair","Ok","Cancelar");
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    new File[40],nome[MAX_PLAYER_NAME];
    GetPlayerName(playerid,nome,MAX_PLAYER_NAME);
    format(File,sizeof(File),"Contas/%s.ini",nome);
    if(dialogid == DIALOG_INICIO) // DIALOG INICIAL
    {
        if(response)
        {
            if(listitem == 0) // Lista para clicar a DIALOG de Login
            {
                ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Faзa seu Login","Digite Sua senha para logar","Ok","Cancelar");
            }
            if(listitem == 1) // Lista para abrir a Dialog de registro
            {
                ShowPlayerDialog(playerid,DIALOG_REGISTRO,DIALOG_STYLE_INPUT,"Faзa seu Registro","Digite Sua senha para registrar","Ok","Cancelar");
            }
            if(listitem == 2) // Lista para sair
            {
                Kick(playerid);
            }
        }
    }
    if(dialogid == DIALOG_REGISTRO) // DIALOG de registro
    {
        if(response)
        {
            if(!strlen(inputtext))
            {
                ShowPlayerDialog(playerid,DIALOG_REGISTRO,DIALOG_STYLE_INPUT,"Faзa seu Registro","Digite Sua senha para registrar","Ok","Cancelar");
                return 1;
            }
            DOF2_CreateFile(File);
            DOF2_SetInt(File,"Senha",PlayerInfo[playerid][pSenha]);
            DOF2_SaveFile();
            ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Faзa seu Login","Digite Sua senha para logar","Ok","Cancelar");
        }
    }
    if(dialogid == DIALOG_LOGIN) // DIALOG de Login
    {
        if(response)
        {
            if(!strlen(inputtext))
            {
                ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Faзa seu Login","Digite Sua senha para logar","Ok","Cancelar");
                return 1;
            }
            new name[MAX_PLAYER_NAME];
            GetPlayerName(playerid,name,MAX_PLAYER_NAME);
            format(File,sizeof(File),"Contas/%s.ini",name);
            if(!strcmp(inputtext,DOF2_GetString(File,"Senha"),false))
            {
                SpawnPlayer(playerid);
            }
        }
    }
    return 1;
}
Reply
#2

O erro da senha (null)

PHP код:
    if(dialogid == DIALOG_REGISTRO// DIALOG de registro
    
{
        if(
response)
        {
            if(!
strlen(inputtext))
            {
                
ShowPlayerDialog(playerid,DIALOG_REGISTRO,DIALOG_STYLE_INPUT,"Faзa seu Registro","Digite Sua senha para registrar","Ok","Cancelar");
                return 
1;
            }
            
DOF2_CreateFile(File);
            
format(PlayerInfo[playerid][pSenha],sizeof(PlayerInfo[playerid][pSenha]),inputtext);
              
DOF2_SetInt(File,"Senha",PlayerInfo[playerid][pSenha]);
             
DOF2_SaveFile();
             
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Faзa seu Login","Digite Sua senha para logar","Ok","Cancelar");
        }
    } 
Erro de poder logar sem registrar ou o contrario:
PHP код:
    if(dialogid == DIALOG_INICIO// DIALOG INICIAL
    
{
        if(
response)
        {
            if(
listitem == 0// Lista para clicar a DIALOG de Login
            
{
                if(
DOF2_FileExists(File))
                {
                    
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Faзa seu Login","Digite Sua senha para logar","Ok","Cancelar");
                }
                else 
ShowPlayerDialog(playerid,DIALOG_INICIO,DIALOG_STYLE_LIST,"Os Fбnaticos Login - NГO REGISTRADO","Logar\nRegistrar\nSair","Ok","Cancelar");
            }
            if(
listitem == 1// Lista para abrir a Dialog de registro
            
{
                if(!
DOF2_FileExists(File))
                {
                    
ShowPlayerDialog(playerid,DIALOG_REGISTRO,DIALOG_STYLE_INPUT,"Faзa seu Registro","Digite Sua senha para registrar","Ok","Cancelar");
                }
                else 
ShowPlayerDialog(playerid,DIALOG_INICIO,DIALOG_STYLE_LIST,"Os Fбnaticos Login - VOCК Й REGISTRADO","Logar\nRegistrar\nSair","Ok","Cancelar");
            }
            if(
listitem == 2// Lista para sair
            
{
                
Kick(playerid);
            }
        }
    } 
Reply
#3

Vк se resolve o Bug 1. (logar sem registrar). mudei apenas o as funзхes do dialog de login!
PHP код:
#define DIALOG_INICIO                                                            1
#define DIALOG_REGISTRO                                                            2
#define DIALOG_LOGIN                                                            3
enum pInfo
{
    
pSenha
};
new 
PlayerInfo[MAX_PLAYERS][pInfo];
public 
OnPlayerRequestClass(playeridclassid)
{
    
ShowPlayerDialog(playerid,DIALOG_INICIO,DIALOG_STYLE_LIST,"Os Fбnaticos Login","Logar\nRegistrar\nSair","Ok","Cancelar");
    return 
1;
}
public 
OnDialogResponse(playeriddialogidresponselistiteminputtext[])
{
    new 
File[40],nome[MAX_PLAYER_NAME];
    
GetPlayerName(playerid,nome,MAX_PLAYER_NAME);
    
format(File,sizeof(File),"Contas/%s.ini",nome);
    if(
dialogid == DIALOG_INICIO// DIALOG INICIAL
    
{
        if(
response)
        {
            if(
listitem == 0// Lista para clicar a DIALOG de Login
            
{
                
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Faзa seu Login","Digite Sua senha para logar","Ok","Cancelar");
            }
            if(
listitem == 1// Lista para abrir a Dialog de registro
            
{
                
ShowPlayerDialog(playerid,DIALOG_REGISTRO,DIALOG_STYLE_INPUT,"Faзa seu Registro","Digite Sua senha para registrar","Ok","Cancelar");
            }
            if(
listitem == 2// Lista para sair
            
{
                
Kick(playerid);
            }
        }
    }
    if(
dialogid == DIALOG_REGISTRO// DIALOG de registro
    
{
        if(
response)
        {
            if(!
strlen(inputtext))
            {
                
ShowPlayerDialog(playerid,DIALOG_REGISTRO,DIALOG_STYLE_INPUT,"Faзa seu Registro","Digite Sua senha para registrar","Ok","Cancelar");
                return 
1;
            }
            
DOF2_CreateFile(File);
              
DOF2_SetInt(File,"Senha",PlayerInfo[playerid][pSenha]);
             
DOF2_SaveFile();
             
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Faзa seu Login","Digite Sua senha para logar","Ok","Cancelar");
        }
    }
    if(
dialogid == DIALOG_LOGIN// DIALOG de Login
    
{
        if(
response)
        {
            if(
DOF2_Exists(File)))
            {
                if(!
strlen(inputtext))
                {
                    
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Faзa seu Login","Digite Sua senha para logar","Ok","Cancelar");
                    return 
1;
                }
                new 
name[MAX_PLAYER_NAME];
                
GetPlayerName(playerid,name,MAX_PLAYER_NAME);
                
format(File,sizeof(File),"Contas/%s.ini",name);
                if(!
strcmp(inputtext,DOF2_GetString(File,"Senha"),false))
                   {
                    
SpawnPlayer(playerid);
                }
            }
            else
            {
                
SendClientMessage(playerid0xFF0000FF"Vocк nгo tem contra registrada!");
        }
    }
    return 
1;

Reply
#4

Eu ainda recomendo usar o prуprio campo de senha da funзгo CreateFile.

Sobre o spawn sem login, nгo й um BUG. Nгo foi programado para isto acontecer.

Crie uma variбvel que determina se um player estб logado ou nгo

pawn Код:
new Logado[MAX_PLAYERS];
E faзa uma verificaзгo na OnPlayerRequestSpawn

pawn Код:
if(!Logado[playerid])
    return 0;
Reply
#5

o erro estб no enum.
PHP код:
#define MAX_PASSWORD_SIZE 40
enum pInfo
{
    
pSenha[MAX_PASSWORD_SIZE]
};
new 
PlayerInfo[MAX_PLAYERS][pInfo]; 
Pode alterar o tamanho maximo da senha, alterando o MAX_PASSWORD_SIZE.
Utilize DOF2_SetString, para salvar a mesma.
Reply
#6

Quote:
Originally Posted by DanDRT
Посмотреть сообщение
o erro estб no enum.
PHP код:
#define MAX_PASSWORD_SIZE 40
enum pInfo
{
    
pSenha[MAX_PASSWORD_SIZE]
};
new 
PlayerInfo[MAX_PLAYERS][pInfo]; 
Pode alterar o tamanho maximo da senha, alterando o MAX_PASSWORD_SIZE.
Utilize DOF2_SetString, para salvar a mesma.
fiz o BUG continua:
Senha = (null)

pawn Код:
DOF2_SetString(File,"Senha",PlayerInfo[playerid][pSenha]);
Dialog de Registro

pawn Код:
if(dialogid == DIALOG_REGISTRO)
    {
        if(response)
        {
            if(!strlen(inputtext))
            {
                //PlayerInfo[playerid][pSenha] = strlen(inputtext));
                ShowPlayerDialog(playerid,DIALOG_REGISTRO,DIALOG_STYLE_INPUT,"Faзa seu Registro","Digite Sua senha para registrar","Ok","Cancelar");
                return 1;
            }
            DOF2_CreateFile(File);
            DOF2_SetString(File,"Senha",PlayerInfo[playerid][pSenha]);
                DOF2_SaveFile();
                ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Faзa seu Login","Digite Sua senha para logar","Ok","Cancelar");
        }
    }
Reply
#7

PHP код:
    if(dialogid == DIALOG_REGISTRO)
    {
        if(
response)
        {
            if(!
strlen(inputtext))
            {
                
//PlayerInfo[playerid][pSenha] = strlen(inputtext));
                
ShowPlayerDialog(playerid,DIALOG_REGISTRO,DIALOG_STYLE_INPUT,"Faзa seu Registro","Digite Sua senha para registrar","Ok","Cancelar");
                  return 
1;
            }
                    
format(PlayerInfo[playerid][pSenha], MAX_PASSWORD_SIZE"%s"inputtext);
            
DOF2_CreateFile(File);
              
DOF2_SetString(File,"Senha",PlayerInfo[playerid][pSenha]);
                 
DOF2_SaveFile();
                 
ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_PASSWORD,"Faзa seu Login","Digite Sua senha para logar","Ok","Cancelar");
        }
    } 
Reply
#8

O cara ignorou minha resposta mais beleza...

Use os codigos que eu te passei e diga o resultado
Reply
#9

Quote:
Originally Posted by Hiuship
Посмотреть сообщение
O cara ignorou minha resposta mais beleza...

Use os codigos que eu te passei e diga o resultado
ignorei nгo manow a da senha dando (null) o dan me ajudou resolveu

e o seu cуdigo resolveu o do login vlw

mas sу um erro tipo ta conferindo normal mas... se eu errar a senha some a dialog de Login
e se eu apertar em (Spawn) o player spawna normal
Reply
#10

pawn Код:
if(!strcmp(inputtext,DOF2_GetString(File,"Senha"),false))
{
SpawnPlayer(playerid);
//Caso a senha estiver correta
}
else
{
// caso a senha estiver incorreta
}
Sу mostrar o dialogo de login novamente se a senha estiver incorreta.

Para que o jogador nгo de spawn sem logar vocк pode estar retornado a callback OnPlayerRequestClass a 0, assim o jogador sу vai poder dar spawn se forзar o spawn dele.

Caso retorne a callback OnPlayerRequestClass a 0 crie uma variбvel booleana para verificar se o jogador estб logado e faзa a verificaзгo OnPlayerRequestClass. Pois quando a callback й retornada a 0 e o jogador й forзado a dar spawn, quando ele morre ele vai voltar para a seleзгo de classes (entгo vai ser chamado a callback OnPlayerRequestClass novamente).

Exemplo:
pawn Код:
new bool:Logado[MAX_PLAYERS];

public OnPlayerRequestClass(playerid,classid)
{
    if(Logado[playerid] == false)
    {
         // abrir o dialogo para ver se o jogador que logar ou cadastrar
    }
    else SpawnPlayer(playerid);
    return 0;
}

// quando o jogador logar:

Logado[playerid] = true;

// quando o jogador deslogar:

Logado[playerid] = false;

Links uteis:

OnPlayerRequestClass
SpawnPlayer
Booleans
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)