SSGamers - 12 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

Participe do fórum, é rápido e fácil

SSGamers - 12 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

SSGamers - 12 Anos online por você.

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Chegou o novo tema 6.5.5 - SSGamers - Servidores online de qualidade - Aproveite e entre para nossa comunidade, inscreva-se já! - Ouça nossa web radio - Veja nossas novidades - Participe dos nossos setores de jogos online - Parcerias aberta fale já com um administrador.

    [TUTORIAL] Sistema de Login

    яafaєlѕcяιρт®
    яafaєlѕcяιρт®
    --> Postador Iniciante
    --> Postador Iniciante


    Mensagens : 156
    Moedas : 4606
    Data de inscrição : 16/03/2012

    [TUTORIAL] Sistema de Login Empty [TUTORIAL] Sistema de Login

    Mensagem por яafaєlѕcяιρт® Ter 8 maio 2012 - 19:00

    Tutorial Sistema de Login
    NO COMEÇO DO GM:
    pawn code:
    Código:
    #include <fini> //vai carregar a include fini

    #define DIALOG_LOGIN 1 //define nossa dialog de login e register
    enum pInfo{
        cKey[128],
        cLevel,
        cReg,
        cSkin,
        cLog,
        cGrana
    }
    new UserInfo[pInfo][MAX_PLAYERS];
    new pName[MAX_PLAYER_NAME];

    Fowards
    pawn code
    Código:
    forward OnPlayerLogin(playerid,password[]); //para login
    forward OnPlayerSave(playerid); //para salvar os dados
    forward OnPlayerRegister(playerid, password[]); //para registrar

    Publics
    pawn code
    Código:
    public OnPlayerConnect(playerid)
    {
    //public para quando o player conecta
    //vamos definir 2 string para nós usarmos no login
        new string[80];
        new string2[160];
        GetPlayerName(playerid, pName, sizeof(pName)); //pega o nome do player
        format(string, sizeof(string), "contas/%s.cfg",pName);//formata a string que verifica se existe o arquivo
        if(Fini_Exists(string))//verifica se existe o arquivo
        {
            //formata a string que aparecera no dialog para login
            format(string2, sizeof(string2), "{F5DEB3}Bem vindo ao Seu Servidor\n\n{B22222}Nome: {F5DEB3}%s\n{B22222}Status: {F5DEB3}Registrado\n\n Digite sua senha para logar:",pName);
            //mostra nossa dialog que formatamos a cima
            ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"{B22222}Logar",string2,"Logar","Cancelar");
        }
        else
        {
            //formata a string que aparecera no dialog para registro
            format(string2, sizeof(string2), "{F5DEB3}Bem vindo ao Seu Servido\n\n{B22222}Nome: {F5DEB3}%s\n{B22222}Status: {F5DEB3}Não registrado\n\n Digite sua senha para registrar:",pName);
            //mostra nossa dialog formatada a cima
            ShowPlayerDialog(playerid,DIALOG_LOGIN+1,DIALOG_STYLE_INPUT,"{B22222}Registro",string2,"Registrar","Cancelar");
            //preste atenção no id dessa diaog: "DIALOG_LOGIN+1"
            //como definimos o "DIALOG_LOGIN" como 1 aqui ele pegara 1+1 e dara um novo id para o registro
            //evitando muitas definições :D
        }
        return 1;
    }

    public OnPlayerDisconnect(playerid)
    {
    //public para quando o player sai do serv
        OnPlayerSave(playerid);//aki vai chamar a public q salva
        UserInfo[cLog][playerid] = 0;//desloga o player
        printf("Dados de ID: %d salvos com sucesso\n",playerid);//coloquei isso só para segurança pq mostra se salvou mesmo :P
        return 1;
    }
    public OnPlayerRequestSpawn(playerid)
    {
    //public nativa do samp para  quando o player clika em spawn
    //aqui embaixo ele vai verificar se o player estiver logado vai pode dar spawn, caso contrário não vai acontecer o spawn
        if(UserInfo[cLog][playerid] == 0)
        {
            SendClientMessage(playerid, COLOR_WHITE, "Impossível ter spawn sem antes de logar.");//avisa o player
            return 0;//retorna 0 assim naum da spawn
        }
        //setiver logado efetua o spawn
        return 1;
    }

    public OnPlayerSpawn(playerid)
    {
    //puclic quando da spawn
    //mais segurança
    //se não tiver logado congela o player
    //caso contrario descongela :D
        if(UserInfo[cLog][playerid] == 0)
        {
            TogglePlayerControllable(playerid, 0);//aki congela
            return 1;
        }
        else
        {
            TogglePlayerControllable(playerid, 1);//aki descongela
            return 1;
        }
    }
    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
    //public nativa do samp para resposta de dialog
    //vamos configurar os retornos do login e registro
    //aki embaixo vai verificar o login
        if(dialogid == DIALOG_LOGIN) //DIALOG_LOGIN é o ID da dialog de login
        {
            if(strlen(inputtext) == 0) //caso naum escreva nada retorna o login informando o erro da senha
            {
                ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"{B22222}Registro","\n{B22222}Senha incorreta!\n{F5DEB3}Insira sua senha novamente:","Logar","Cancelar");
            }else{
                OnPlayerLogin(playerid,inputtext); //se escrever algo chama a public de login e passa a senha e o id da player
            }
            return 1;
        }
    //aki embaixo vai verificar o registro
        if(dialogid == DIALOG_LOGIN+1) //DIALOG_LOGIN+1 é o ID da dialod de registro
        {
            if(strlen(inputtext) == 0) //caso naum escreva nada retorna o registro informando q precisa de senha
            {
                ShowPlayerDialog(playerid,DIALOG_LOGIN+1,DIALOG_STYLE_INPUT,"{B22222}Registro","\n{F5DEB3}Para registrar é necessário uma senha:","Registrar","Cancelar");
            }else{
                OnPlayerRegister(playerid,inputtext); //se escrever algo chama a public de registro e passa a senha e o id da player
            }
            return 1;
        }
       
        return 1;
    }
    Se as publics que eu citei a cima já existem no seu GM só coloque o que eu coloquei nelas aqui nas suas publics
    Agora finalizando vamos as publics de login, registro e salvamento Razz
    pawn code
    Código:
        Fini_OpenFile(string);//abre o arquivo
        if(strcmp(password,Fini_GetStr("Senha"), true) == 0) //verifica se a senha q foi passada
        {
        //se a senha for igual faz isso aki embaixo
            UserInfo[cLevel][playerid] = Fini_GetValue("Level"); //Pega o level
            UserInfo[cReg][playerid] = Fini_GetValue("Reg"); //Pega a variavel de registro
            UserInfo[cSkin][playerid] = Fini_GetValue("Skin"); //Pega a skin
            UserInfo[cGrana][playerid] = Fini_GetValue("Grana"); //Pega o grana do player
            GivePlayerMoney(playerid, UserInfo[cGrana][playerid]); //devolve a grana salva
            UserInfo[cLog][playerid] = 1; //deixa como logado
        }
        else
        {
            //caso a senha não seja igual ele manda pro login de novo
            ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"{B22222}Logar","{B22222}Senha incorreta!\n{F5DEB3}Insira sua senha novamente:","Logar","Cancelar");
        }
        Fini_CloseFile();//fecha o arquivo do player
    }
    public OnPlayerSave(playerid)
    {
    //public q efetua o salvamento
    //coisas que tem no login e aqui são iguais não vou repetir
        new string[80];
        GetPlayerName(playerid, pName, sizeof(pName));
        format(string, sizeof(string), "contas/%s.cfg",pName);
        Fini_OpenFile(string);//abre o arquivo formatado a cima
        Fini_SetVal("Level", UserInfo[cLevel][playerid]);//salva o level
        Fini_SetVal("Reg", UserInfo[cReg][playerid]);//salva se foi registrado
        Fini_SetVal("Skin", UserInfo[cSkin][playerid]);//salva a skin
        Fini_SetVal("Grana", GetPlayerMoney(playerid));//salva a grana
        Fini_SaveFile(string);//salva o arquivo para efetuar as mudanças
        Fini_CloseFile();//fecha o arquivo, 1º salva depois fecha :@
    }
    public OnPlayerRegister(playerid, password[])
    {
    //por ultimo o registro
        new string[80];
        GetPlayerName(playerid, pName, sizeof(pName));
        format(string, sizeof(string), "contas/%s.cfg",pName);
        Fini_Create(string);//cria o arquivo do player
        Fini_OpenFile(string);//abre o arquivo do player
        Fini_SetStr("Senha", password);//salva a senha
        Fini_SetVal("Level", UserInfo[cLevel][playerid]);//salva o level, coloquei assim, pois vc pode querer dar level automaticamente
                                                        //, mas como eu naum coloquei nehum valor no GM ele vai salvar como 0
        Fini_SetVal("Reg", 1);//salva se foi registrado
        Fini_SetVal("Skin", 178);//salva a skin, eu coloquei essa pq eu gosto, mas vc pode trocar
        Fini_SetVal("Grana", GetPlayerMoney(playerid)); //salva a gran do player
        Fini_SaveFile(string);//salva o arquivo
        Fini_CloseFile();// fecha o arquivo
        new string2[160];//string para definir o login, pq apos registrar temos q logar :D
        // \/ formata o q aparecera no login
        format(string2, sizeof(string2), "{F5DEB3}Bem vindo ao Seu Servidor\n\n{B22222}Nome: {F5DEB3}%s\n{B22222}Status: {F5DEB3}Registrado\n\n Digite sua senha para logar:",pName);
        //Dialog que efetua o login :D
        ShowPlayerDialog(playerid,DIALOG_LOGIN,DIALOG_STYLE_INPUT,"{B22222}Logar",string2,"Logar","Cancelar");
    }

    Espero Ajudar !




    [TUTORIAL] Sistema de Login 15zmw0n


    Convidado VOCÊ É MEU FAN? USE MINHA FANBAR Smile
    [TUTORIAL] Sistema de Login Neuuko

    SOU FAN:
    [TUTORIAL] Sistema de Login Lokoh
    [TUTORIAL] Sistema de Login 31971
    [TUTORIAL] Sistema de Login 44301451298382352u


    BRASIL MASTER GAMES, SUA AVENTURA COMEÇA AQUI, IP:199.115.230.156:7777

    FUI ÚTIL A SUA PESSOA? DA UM +, NÃO CUSTA NADA!

      Data/hora atual: Qui 28 Mar 2024 - 10:07