SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Português/Portuguese

Reply
 
Thread Tools Display Modes
Old 16/04/2014, 09:04 PM   #1
williamgato
Huge Clucker
 
williamgato's Avatar
 
Join Date: Oct 2010
Posts: 224
Reputation: 2
Post Sistema de Registro

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 Code:
#define DIALOG_LOGIN                                                         200
#define DIALOG_REGISTRO                                                      201
new pAdmin[MAX_PLAYERS] = 0;
forward CarregarDados(playerid);
forward SalvarDados(playerid);

pawn Code:
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 Code:
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 Code:
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 youtube...
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
williamgato is offline   Reply With Quote
Old 16/04/2014, 10:59 PM   #2
Douglas_prt
Huge Clucker
 
Douglas_prt's Avatar
 
Join Date: Sep 2010
Location: Portugal
Posts: 421
Reputation: 12
Default Re: [AJUDA]Sistema de Registro

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 Code:
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!
Douglas_prt is offline   Reply With Quote
Old 16/04/2014, 11:20 PM   #3
williamgato
Huge Clucker
 
williamgato's Avatar
 
Join Date: Oct 2010
Posts: 224
Reputation: 2
Default Re: [AJUDA]Sistema de Registro

Quote:
Originally Posted by Douglas_prt View Post
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 : http://forum.sa-mp.com/showthread.php?t=350855

mas ai colokei tudo certinho e deu esse erro nas variaveis Deus sabe la como isso acontece, ve se pode me ajudar
pawn Code:
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 Code:
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 Code:
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:
Code:
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 (c) 1997-2006, ITB CompuPhase


2 Errors.

Last edited by williamgato; 16/04/2014 at 11:29 PM. Reason: mudei para o DOF2
williamgato is offline   Reply With Quote
Old 16/04/2014, 11:23 PM   #4
Douglas_prt
Huge Clucker
 
Douglas_prt's Avatar
 
Join Date: Sep 2010
Location: Portugal
Posts: 421
Reputation: 12
Default Re: [AJUDA]Sistema de Registro

Penso que o erro esteja aqui:

pawn Code:
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))
Douglas_prt is offline   Reply With Quote
Old 16/04/2014, 11:27 PM   #5
williamgato
Huge Clucker
 
williamgato's Avatar
 
Join Date: Oct 2010
Posts: 224
Reputation: 2
Default Re: [AJUDA]Sistema de Registro

Quote:
Originally Posted by Douglas_prt View Post
Penso que o erro esteja aqui:

pawn Code:
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
williamgato is offline   Reply With Quote
Old 16/04/2014, 11:32 PM   #6
Douglas_prt
Huge Clucker
 
Douglas_prt's Avatar
 
Join Date: Sep 2010
Location: Portugal
Posts: 421
Reputation: 12
Default Re: [AJUDA]Sistema de Registro

pawn Code:
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
Douglas_prt is offline   Reply With Quote
Old 16/04/2014, 11:35 PM   #7
williamgato
Huge Clucker
 
williamgato's Avatar
 
Join Date: Oct 2010
Posts: 224
Reputation: 2
Default Re: [AJUDA]Sistema de Registro

Quote:
Originally Posted by Douglas_prt View Post
pawn Code:
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
williamgato is offline   Reply With Quote
Old 16/04/2014, 11:36 PM   #8
Douglas_prt
Huge Clucker
 
Douglas_prt's Avatar
 
Join Date: Sep 2010
Location: Portugal
Posts: 421
Reputation: 12
Default Re: [AJUDA]Sistema de Registro

Quote:
Originally Posted by williamgato View Post
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: http://forum.sa-mp.com/showthread.php?t=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
Douglas_prt is offline   Reply With Quote
Old 16/04/2014, 11:44 PM   #9
williamgato
Huge Clucker
 
williamgato's Avatar
 
Join Date: Oct 2010
Posts: 224
Reputation: 2
Default Re: [AJUDA]Sistema de Registro

Quote:
Originally Posted by Douglas_prt View Post
Estranho... tenta aprender as funções por aqui: http://forum.sa-mp.com/showthread.php?t=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 Code:
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 Code:
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
williamgato is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[Ajuda] Bug No Sistema De Registro Alisson Silva Alves Português/Portuguese 1 02/03/2014 06:37 PM
[Ajuda] sistema de registro Caio_Freeze Português/Portuguese 1 20/03/2013 10:59 PM
[Pedido] Sistema de Registro Weslly Stronda Português/Portuguese 2 03/08/2012 07:14 AM
[Tutorial] Sistema de Registro + Profissão + Sistema de Administração Nake01 Lançamentos/Releases 19 02/03/2012 09:30 PM
[FilterScript] [KSR] Sistema de Registro Kasura Lançamentos/Releases 39 16/04/2011 11:20 AM


All times are GMT. The time now is 09:55 AM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.