[Ajuda] Sistema de Registro
#1

ola estou com um sistema de registro porem mesmo apos terminado quando eu inicio o game aparece Registrar ai eu registro aparece que fui registrado com sucesso, dai nao pede para logar :/
e ja loga direto, depois se eu abro e fecho o gta, na hr q entro denovo aparece para registrar novamente alguem pode me ajudar?

pawn Код:
#define DIALOG_LOGIN                                                         200
#define DIALOG_REGISTRO                                                      201
new pAdmin[MAX_PLAYERS] = 0;
forward CarregarDados(playerid);
forward SalvarDados(playerid);
pawn Код:
public OnPlayerConnect(playerid)
{
    PlayerPlaySound(playerid,1097, 0.0, 0.0, 0.0); //SOM LIGANDO
    GameTextForPlayer(playerid,"~n~~n~~n~~g~Bem Vindo",5000,5); // MENSAGEM AO ENTRAR QUE NEM TEXTDRAW
    SendClientMessage(playerid, 0x22DF0DFF, ">> Seja Bem Vindo ao Drift da Morte <<"); // MENSAGEM AO ENTRAR
    new string[40];
    new pName[25];
    new aname[MAX_PLAYER_NAME] , file[148] , string1 [148];
    GetPlayerName(playerid, pName, sizeof(pName));
    format(string, sizeof(string), "%s Entrou no Servidor!", pName); // mensagem se alguem entrar
    SendClientMessageToAll(0x22DF0DFF, string); // COR
    format(file,sizeof(file),"Contas/%s.ini", aname);
    if (dini_Exists(file))
    {
        format(string1,sizeof(string1),"Bem Vindo %s, digite sua senha para logar.", aname);
        ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Sistema de Login", string1 ,"Login","Cancelar");
    }
    else
    {
     format(string1,sizeof(string1),"Bem Vindo %s, para entrar no servidor deve-se digitar uma senha de registro.", aname);
        ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Sistema de Registro", string1 ,"Registrar","Cancelar");
        }
    return 1;
}
pawn Код:
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
if(dialogid == DIALOG_LOGIN)
{
if(response)
{
new aname[MAX_PLAYER_NAME] , string1[148], file[148];
GetPlayerName(playerid,aname,sizeof(aname));
format(file,sizeof(file),"Contas/%s.ini",aname);
if(!strlen(inputtext))
{
                format(string1,sizeof(string1),"Bem Vindo %s, digite sua senha para logar.", aname);
                SendClientMessage(playerid,Vermelho,"[ERRO]: Senha Invalida, Digite a senha correta");
                ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Sistema de Login", string1 ,"Login","Cancelar");
}
else
{
                if(strcmp(inputtext, dini_Get(file, "Senha"), false))
                {
                SendClientMessage(playerid, Verde, " Seu Login foi efetuado com Sucesso");
                CarregarDados(playerid);
                SpawnPlayer(playerid);
}
else
{
                format(string1,sizeof(string1),"Bem Vindo %s, digite sua senha para logar.", aname);
                SendClientMessage(playerid,Vermelho,"[ERRO]: Senha Invalida, Digite a senha correta");
                ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Sistema de Login", string1 ,"Login","Cancelar");
                }
            }
 }
    else
 {
 new stringz[148];
        format(stringz,sizeof(stringz),"O(a) Jogador(a) %s foi kickado(a), nao quis efetuar login.");
        SendClientMessageToAll(-1,stringz);
        Kick(playerid);
}
}
if(dialogid == DIALOG_REGISTRO)
{
if(response)
{
new aname[MAX_PLAYER_NAME] , string1[148], file[148];
GetPlayerName(playerid,aname,sizeof(aname));
format(file,sizeof(file),"Contas/%s.ini",aname);
if(!strlen(inputtext))
{
                format(string1,sizeof(string1),"Bem Vindo %s, digite sua senha para logar.", aname);
                SendClientMessage(playerid,Vermelho,"Digite uma senha para sua conta");
                ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Sistema de Login", string1 ,"Login","Cancelar");
}
else
{
                dini_Create(file);
                dini_Set(file, "Senha", inputtext);
                dini_Set(file, "Nick", inputtext);
                dini_IntSet(file , "Morreu" ,0);
                dini_IntSet(file , "Matou" ,0);
                dini_IntSet(file , "Dinheiro" ,5000);
                SendClientMessage(playerid, Verde, " Seu Registro foi efetuado com Sucesso");
                SalvarDados(playerid);
                SpawnPlayer(playerid);
            }
    }
    else
    {
        new stringz[148];
        format(stringz,sizeof(stringz),"O(a) Jogador(a) %s foi kickado(a), nao se registrar.");
        SendClientMessageToAll(-1,stringz);
        Kick(playerid);
}

}
pawn Код:
public CarregarDados(playerid)
{
new file[148] , aname[MAX_PLAYER_NAME];
GetPlayerName(playerid,aname,sizeof(aname));
format(file,sizeof(file), "/Contas/%s.ini",aname);
if(dini_Exists(file))
{
    pAdmin[playerid] = dini_Int(file, "pAdmin");
    GivePlayerMoney(playerid, dini_Int(file, "Dinheiro"));
}
return 1;
}
public SalvarDados(playerid)
{
new file[148] , aname[MAX_PLAYER_NAME];
GetPlayerName(playerid,aname,sizeof(aname));
format(file,sizeof(file), "/Contas/%s.ini",aname);
if(dini_Exists(file))
{
    pAdmin[playerid] = dini_Int(file, "pAdmin");
}
return 1;
}
esta ai todo o sistema de registro, nao baixei , mas nao "criei" tambem, so segui um tutorial do *******...
o server e de drift entao nao kero que tenha um skin fixa(caso alguem venha a postar isso)
se alguem quiser ajudar, tambem aceito criticas ,dicas e etc... obrigado
Reply
#2

Verificou se o ficheiro й criado quando faz o registo?

E й normal que apуs o registo ele nгo peзa para o jogador fazer login, visto que voce nao adicionou o ShowPlayerDialog do login depois do jogador se registar.

pawn Код:
SendClientMessage(playerid, Verde, " Seu Registro foi efetuado com Sucesso"); // Acabou o registo
// Adicionar o dialog \/
// ShowPlayerDialog(playerid, DIALOG_LOGIN, DIALOG_STYLE_PASSWORD, "Sistema de Login", string1 ,"Login","Cancelar");
// Remover o que estб em baixo
SalvarDados(playerid); // Remover
SpawnPlayer(playerid); // Remover
Obs: Nгo seria melhor usar DOF2 ou Y_ini, sгo muito mais intuitivos e simples de usar!
Reply
#3

Quote:
Originally Posted by Douglas_prt
Посмотреть сообщение
Verificou se o ficheiro й criado quando faz o registo?

E й normal que apуs o registo ele nгo peзa para o jogador fazer login, visto que voce nao adicionou o ShowPlayerDialog do login depois do jogador se registar.

Obs: Nгo seria melhor usar DOF2 ou Y_ini, sгo muito mais intuitivos e simples de usar!
sim concordo , vou tentar com o sistema DOF2 agora , mas tipo voltando a questao a pasta nao era criada , eu fui no server criei a pasta manualmente, e ai criou o arquivo .ini mas mesmo assim ,quando eu relogava o server me mandava registrar denovo

@EDIT: aqui eu coloquei o dof2 , como eu nao entendo quase nada dessa include achei melhor usar o Search no que resultou esse topico : https://sampforum.blast.hk/showthread.php?tid=350855

mas ai colokei tudo certinho e deu esse erro nas variaveis Deus sabe la como isso acontece, ve se pode me ajudar
pawn Код:
new arquivo[40], name[MAX_PLAYER_NAME]; //'arquivo' uma string para a format | 'name' para pegar o nome do playerid
    GetPlayerName(playerid, name, 32); //Para pegar o nome do playerid
    format(arquivo, 40, "Contas/%s.ini", name); //Formata o arquivo com o nome do playerid
    if(dialogid == DIALOG_REGISTRO)
    {
        if(!strval(inputtext)) //Verifica se o player digitou LETRAS, caso for true
        { //Retorna a dialog de registro novamente para ele digitar NЪMEROS
            ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_INPUT, "Registro", "Digite apenas nъmeros!\nDigite sua senha novamente para se registrar!", "Confirma", "Cancelar");
            return 1;
        }
        if(!response) //Verifica se ele clicar em 'Cancelar"
        { //Caso ele clicar em cancelar, irб retornar ao playerid KICK
            Kick(playerid);
            return 1;
        }
        else //Verifica se ele Confirma o Registro
        { //Caso for true, ira criar o arquivo na pasta CONTAS
            Player[playerid][Senha] = strval(inputtext); //Player[playerid][Senha] vai ser igual ao que ele digitar na dialog Registro
            DOF2_CreateFile(arquivo); //Vai criar o arquvivo na pasta Contas
            DOF2_SetInt(arquivo, "Senha", Player[playerid][Senha]); //Vai salvar a senha do playerid
            DOF2_SetInt(arquivo, "Matou", Player[playerid][Matou]); //Vai salvar quantas vezes ele matou
            DOF2_SetInt(arquivo, "Morreu", Player[playerid][Morreu]); //Vai salvar quantas vezes ele morreu
            DOF2_SetInt(arquivo, "Dinheiro", Player[playerid][Dinheiro]); //Vai salvar o dinheiro dele
            DOF2_SaveFile(); //E finalmente salvando o arquivo, sem essa funзгo o arquivo nгo serб salvo!
            //Retornando a dialog de Login ao player no final para ele logar no server
            ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк se cadastrou, agora й sу logar com sua senha registrada!", "Confirma", "Cancelar");
        }
    }
    if(dialogid == DIALOG_LOGAR)
    {
        if(!strval(inputtext)) //Verifica se o player digitou letras, caso for true
        { //Retorna a dialog de Login novamente para ele digitar NЪMEROS
            ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Digite apenas nъmeros!\nDigite sua senha cadastrada para logar!\nSe errar 5 vezes sua conta serб banida!", "Confirma", "Cancelar");
            return 1;
        }
        if(!response) //Verifica se ele clicar em 'Cancelar"
        { //Caso ele clicar em cancelar, irб retornar ao playerid KICK
            Kick(playerid);
            return 1;
        }
        else //Verifica se ele Confirma o Login
        { //Caso for true, ira verificar se o que ele digitar serб a mesma senha que ele se registrou anteriormente
            Player[playerid][Senha] = DOF2_GetInt(arquivo, "Senha"); //Pega a senha do jogador no arquivo da conta
            if(strval(inputtext) == Player[playerid][Senha]) //Se o que ele digitar for igual ao valor que carregou aqui em cima /\
            {
                Player[playerid][Matou] = DOF2_GetInt(arquivo, "Matou"); //Pega quantos ele matou no arquivo
                Player[playerid][Morreu] = DOF2_GetInt(arquivo, "Morreu"); //Pega quantos ele morreu no arquivo
                Player[playerid][Dinheiro] = DOF2_GetInt(arquivo, "Dinheiro"); //Pega o dinheiro e iguala ao Player[playerid][Dinheiro]
                GivePlayerMoney(playerid, Player[playerid][Dinheiro]); //Da o dinheiro carregado acima
                SpawnPlayer(playerid); //Spawna o player
            }
            else //Caso ele digitar a senha errada
            {
                ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк digitou sua senha errado, digite-a novamente para logar!\nSe errar 5 vezes sua conta serб banida!", "Confirma", "Cancelar");
                Erro[playerid]++; //O erro vai aumentar cada vez que ele errar
                if(Erro[playerid] == 5) //Quando chegar а 5 vezes, irб retornar a msg e o Ban
                {
                    SendClientMessage(playerid, -1, "Sua conta estб banida por errar 5 vezes a sua senha, contacte o Admin para retirar seu Ban!");
                    Ban(playerid);
                    return 1;
                }
            }
        }
    return 1;
}
    return 0;
 }
linha 1139
pawn Код:
if(strval(inputtext) == Player[playerid][Senha]) //Se o que ele digitar for igual ao valor que carregou aqui em cima /\
            {// aqui esta o erro de acordo com o compiler
                Player[playerid][Matou] = DOF2_GetInt(arquivo, "Matou"); //Pega quantos ele matou no arquivo
linha 1146
pawn Код:
SpawnPlayer(playerid); //Spawna o player
            }
            else //aqui esta o erro de acordo com o compiler
            {
                ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк digitou sua senha errado, digite-a novamente para logar!\nSe errar 5 vezes sua conta serб banida!", "Confirma", "Cancelar");
                Erro[playerid]++; //O erro vai aumentar cada vez que ele errar
erros:
Код:
C:\Users\William\Desktop\DeathDrift\gamemodes\DeathDrift.pwn(1139) : error 049: invalid line continuation
C:\Users\William\Desktop\DeathDrift\gamemodes\DeathDrift.pwn(1146) : error 029: invalid expression, assumed zero
Pawn compiler 3.2.3664	 	 	Copyright © 1997-2006, ITB CompuPhase


2 Errors.
Reply
#4

Penso que o erro esteja aqui:

pawn Код:
format(file,sizeof(file),"Contas/%s.ini", aname); // A variбvel aname nгo tem nenhum valor... deveria ser a pName para retornar o nome do jogador
if (dini_Exists(file))

// Seria entгo assim:

format(file,sizeof(file),"Contas/%s.ini", pName); // Como o aname nгo tinha valor, a verificaзгo dava sempre 0... xD
if (dini_Exists(file))
Reply
#5

Quote:
Originally Posted by Douglas_prt
Посмотреть сообщение
Penso que o erro esteja aqui:

pawn Код:
format(file,sizeof(file),"Contas/%s.ini", aname); // A variбvel aname nгo tem nenhum valor... deveria ser a pName para retornar o nome do jogador
if (dini_Exists(file))

// Seria entгo assim:

format(file,sizeof(file),"Contas/%s.ini", pName); // Como o aname nгo tinha valor, a verificaзгo dava sempre 0... xD
if (dini_Exists(file))
mudei agora ta edit la, mas colocarei o antigo sistema para ver se sua intuiзao esta certa
Reply
#6

pawn Код:
return 0;
 }
Acho que no cуdigo do DOF2 isso estб a causar os problemas... vocк nгo copiou bem o cуdigo do tutorial
Reply
#7

Quote:
Originally Posted by Douglas_prt
Посмотреть сообщение
pawn Код:
return 0;
 }
Acho que no cуdigo do DOF2 isso estб a causar os problemas... vocк nгo copiou bem o cуdigo do tutorial
nao o return 0 e para fechar o OnPlayerDialogResponse
ja que coloquei ele por ultimo , mas no caso eu coloquei ele copiadinho certinho sem mecher em nada e coloquei no inicio e ainda assim ficaram com os mesmos erros
Reply
#8

Quote:
Originally Posted by williamgato
Посмотреть сообщение
nao o return 0 e para fechar o OnPlayerDialogResponse
ja que coloquei ele por ultimo , mas no caso eu coloquei ele copiadinho certinho sem mecher em nada e coloquei no inicio e ainda assim ficaram com os mesmos erros
Estranho... tenta aprender as funзхes por aqui: https://sampforum.blast.hk/showthread.php?tid=422519 e criar o teu prуprio sistema, penso que seja melhor.

@EDIT

Eu compilei o cуdigo que й apresentado no fim do tutorial que voce mostrou, e nгo deu erros, tenta adaptar por ai, ou seguir o "tutorial" que te enviei neste post
Reply
#9

Quote:
Originally Posted by Douglas_prt
Посмотреть сообщение
Estranho... tenta aprender as funзхes por aqui: https://sampforum.blast.hk/showthread.php?tid=422519 e criar o teu prуprio sistema, penso que seja melhor.

@EDIT

Eu compilei o cуdigo que й apresentado no fim do tutorial que voce mostrou, e nгo deu erros, tenta adaptar por ai, ou seguir o "tutorial" que te enviei neste post
ok obrigado por isso, mas sabe akela sua correзao de antes...
pawn Код:
format(file,sizeof(file),"Contas/%s.ini", pName);
    if (dini_Exists(file))
bom estava correta porem , existe algum erro no dialog que se eu digito a senha certa vai a errada, e se digito a errada vai a certa, pensei que a correзao seria
pawn Код:
if(strcmp(inputtext, dini_Get(file, "Senha"), true))
                {
                SendClientMessage(playerid, Verde, " Seu Login foi efetuado com Sucesso");
                CarregarDados(playerid);
                SpawnPlayer(playerid);
ja que antes tava false e tava dando esse erro, mas mesmo agora ainda continua dando esse erro sem sentido O.o
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)