[Ajuda] Registro/Login
#1

Eu tenho um sistema de registro aqui que nгo ta salvando a senha, tipo se eu ir la na pasta e colocar a senha ele loga, e tambйm quando eu clico nos botхes cancelar nгo e kickado.

ai vai o cуdigo.

pawn Code:
#include    a_samp
#include    Dof2

#define     DIALOG_REGISTRAR    1
#define     DIALOG_LOGAR    2

enum Informacoes
{
    Senha,
    Matou,
    Morreu,
    Dinheiro
}

new Player[MAX_PLAYERS][Informacoes];
new Erro[MAX_PLAYERS];

public OnFilterScriptExit()
{
    DOF2_Exit();
    return 1;
}

public OnPlayerConnect(playerid)
{
    if(DOF2_FileExists(Contas(playerid))) ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк й Registrado, digite sua senha para logar!", "Login", "Sair");
    else ShowPlayerDialog(playerid, DIALOG_REGISTRAR, DIALOG_STYLE_INPUT, "Registro", "Vocк ainda nгo й Registrado, digite uma senha para se registrar!", "Registar", "Sair");
    return 1;
}

public OnPlayerDisconnect(playerid)
{
    SalvarContas(playerid);
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DIALOG_REGISTRAR)
    {
    if(!strval(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTRAR, DIALOG_STYLE_INPUT, "Registro", "Digite apenas nъmeros!\nDigite sua senha novamente para se registrar!", "Confirma", "Cancelar");
    if(response == 0) return Kick(playerid);
    else
    {
    Player[playerid][Senha] = strval(inputtext);
    SalvarContas(playerid);
    ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк se cadastrou, agora й sу logar com sua senha registrada!", "Login", "Sair");
    }
    }
    if(dialogid == DIALOG_LOGAR)
    {
    if(!strval(inputtext)) return 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");
    if(response == 0) return Kick(playerid);
    else
    {
    Player[playerid][Senha] = DOF2_GetInt(Contas(playerid), "Senha");
    if(strval(inputtext) == Player[playerid][Senha])
    {
    Player[playerid][Matou] = DOF2_GetInt(Contas(playerid), "Matou");
    Player[playerid][Morreu] = DOF2_GetInt(Contas(playerid), "Morreu");
    Player[playerid][Dinheiro] = DOF2_GetInt(Contas(playerid), "Dinheiro");
    GivePlayerMoney(playerid, Player[playerid][Dinheiro]);
    }
    else
    {
    ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк digitou sua senha errado, digite-a novamente para logar!\nSe errar 5 vezes serб Kickado!", "Confirma", "Cancelar");
    Erro[playerid]++;
    if(Erro[playerid] == 5)
    {
    SendClientMessage(playerid, -1, "Vocк foi Kickado por errar a senha 5 vezes!");
    Kick(playerid);
    return 1;
    }
    }
    }
    }
    return 1;
}

stock Contas(playerid)
{
    new arquivo[40], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, 32);
    format(arquivo, 40, "Contas/%s.ini", name);
    return arquivo;
}

stock SalvarContas(playerid)
{
    if(!DOF2_FileExists(Contas(playerid))) DOF2_CreateFile(Contas(playerid));
    else
    {
    Player[playerid][Dinheiro] = GetPlayerMoney(playerid);
    DOF2_SetInt(Contas(playerid), "Senha", Player[playerid][Senha]);
    DOF2_SetInt(Contas(playerid), "Matou", Player[playerid][Matou]);
    DOF2_SetInt(Contas(playerid), "Morreu", Player[playerid][Morreu]);
    DOF2_SetInt(Contas(playerid), "Dinheiro", Player[playerid][Dinheiro]);
    DOF2_SaveFile();
    }
    return 1;
}
Reply
#2

Senha й uma string.

Agora sobre o cancelar tente mudar:
pawn Code:
if(response == 0) return Kick(playerid);
para:
pawn Code:
if(!response) return Kick(playerid);
Reply
#3

Quote:
Originally Posted by @Riichard
View Post
Senha й uma string.

Agora sobre o cancelar tente mudar:
pawn Code:
if(response == 0) return Kick(playerid);
para:
pawn Code:
if(!response) return Kick(playerid);
A dele ele fez com nъmeros uй :P


Й bobeira usar variбvel pra guardar dinheiro e senha, irei arrumar aqui e posto jб.
Reply
#4

Quote:
Originally Posted by @Riichard
View Post
tente mudar:
pawn Code:
if(response == 0) return Kick(playerid);
para:
pawn Code:
if(!response) return Kick(playerid);
E qual a diferenзa?
Reply
#5

Tente:
pawn Code:
#include    a_samp
#include    Dof2

#define     DIALOG_REGISTRAR    1
#define     DIALOG_LOGAR    2

enum Informacoes
{
    Matou,
    Morreu
}

new Player[MAX_PLAYERS][Informacoes];
new Erro[MAX_PLAYERS];

public OnFilterScriptExit()
{
    DOF2_Exit();
    return 1;
}

public OnPlayerConnect(playerid)
{
    if(DOF2_FileExists(Contas(playerid))) ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк й Registrado, digite sua senha para logar!", "Login", "Sair");
    else ShowPlayerDialog(playerid, DIALOG_REGISTRAR, DIALOG_STYLE_INPUT, "Registro", "Vocк ainda nгo й Registrado, digite uma senha para se registrar!", "Registar", "Sair");
    return 1;
}

public OnPlayerDisconnect(playerid)
{
    SalvarContas(playerid);
    return 1;
}

public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
{
    if(dialogid == DIALOG_REGISTRAR)
    {
        if(!response) return Kick(playerid);
        if(!strval(inputtext)) return ShowPlayerDialog(playerid, DIALOG_REGISTRAR, DIALOG_STYLE_INPUT, "Registro", "Digite apenas nъmeros!\nDigite sua senha novamente para se registrar!", "Confirma", "Cancelar");
        DOF2_CreateFile(Contas(playerid));
        DOF2_SetInt(Contas(playerid),"Senha", inputtext);
        DOF2_SaveFile();
        SalvarContas(playerid);
        ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк se cadastrou, agora й sу logar com sua senha registrada!", "Login", "Sair");
        return 1;
    }
    if(dialogid == DIALOG_LOGAR)
    {
        if(!response) return Kick(playerid);
        if(!strval(inputtext)) return 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");
        if(strval(inputtext) == DOF2_GetInt(Contas(playerid),"Senha"))
        {
            Player[playerid][Matou] = DOF2_GetInt(Contas(playerid), "Matou");
            Player[playerid][Morreu] = DOF2_GetInt(Contas(playerid), "Morreu");
            GivePlayerMoney(playerid,DOF2_GetInt(Contas(playerid), "Dinheiro"));
        }
        else
        {
            ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Logar", "Vocк digitou sua senha errado, digite-a novamente para logar!\nSe errar 5 vezes serб Kickado!", "Confirma", "Cancelar");
            Erro[playerid]++;
            if(Erro[playerid] == 5)
            {
                SendClientMessage(playerid, -1, "Vocк foi Kickado por errar a senha 5 vezes!");
                Kick(playerid);
                return 1;
            }
        }
        return 1;
    }
    return 1;
}

Contas(playerid)
{
    new arquivo[40], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));
    format(arquivo, sizeof(arquivo), "Contas/%s.ini", name);
    return arquivo;
}

SalvarContas(playerid)
{
    if(!DOF2_FileExists(Contas(playerid))) { DOF2_CreateFile(Contas(playerid)); }
    DOF2_SetInt(Contas(playerid), "Matou", Player[playerid][Matou]);
    DOF2_SetInt(Contas(playerid), "Morreu", Player[playerid][Morreu]);
    DOF2_SetInt(Contas(playerid), "Dinheiro", GetPlayerMoney(playerid));
    DOF2_SaveFile();
    return 1;
}
Reply
#6

Quote:
Originally Posted by humildadeforever
View Post
Tente:
pawn Code:
DOF2_SetInt(Contas(playerid),"Senha", inputtext);
inputtext й uma string, teria de usar strval, ou entгo setstring.
Reply
#7

ta dando erro nessa linha :S


C:\Users\Leandro\Desktop\samp03e_svr_win32\filters cripts\ss.pwn(42) : error 035: argument type mismatch (argument 3)
Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase


1 Error.

pawn Code:
DOF2_SetInt(Contas(playerid),"Senha", inputtext);
Reply
#8

pawn Code:
DOF2_SetInt(Contas(playerid),"Senha", strval(inputtext));
@Pedro
eu sei, eu sei, desculpem-me pela falta de atenзгo.. nгo to bem hoje
Reply
#9

Quote:
Originally Posted by Adriano_MQD
View Post
ta dando erro nessa linha :S


C:\Users\Leandro\Desktop\samp03e_svr_win32\filters cripts\ss.pwn(42) : error 035: argument type mismatch (argument 3)
Pawn compiler 3.2.3664 Copyright © 1997-2006, ITB CompuPhase


1 Error.

pawn Code:
DOF2_SetInt(Contas(playerid),"Senha", inputtext);
@-Edit Nгo vi, Malz
Reply
#10

Malz eu tinha dado Reply e nem tinha terminado de escrever.
Reply
#11

@Pedro:

Pelo menos comigo "response == 0", nunca funcionou, jб "!response" funciona.
Reply
#12

Quote:
Originally Posted by humildadeforever
View Post
Tente:
pawn Code:
if(!strval(inputtext)) return 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");
e se outro player tentar invadir a conta?

acho melhor colocar

Kick(playerid);
Reply
#13

Quote:
Originally Posted by GhosT_[]
View Post
e se outro player tentar invadir a conta?

acho melhor colocar

Kick(playerid);
Tem certeza do que estб falando? Vai kickar o cara por nгo ter digitado os nъmeros? '-'
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)