[AJUDA]Registro
#1

Seguinte,abri um new.pwn e tentei implantar registro Fini nele.Fiz tudo lб mas deu loose indentation na linha 169

Aqui o cуdigo:

pawn Code:
#include <a_samp>
#include <fini> //vai carregar a include fini
#define DIALOG_LOGIN 1 //define nossa dialog de login e register
#define BRANCO 0xFFFFFF

enum pInfo{
    cKey[128],
    cLevel,
    cReg,
    cSkin,
    cLog,
    cGrana
}//define a variavel pInfo para diminiur nosso trabalho
new UserInfo[pInfo][MAX_PLAYERS];//acopla o pInfo a variavel UserInfo
new pName[MAX_PLAYER_NAME]; //define a variavel de nome, mas para todo o GM evitando repetiзхes


//toda public que criamos precisa de uma forward :D
forward OnPlayerLogin(playerid,password[]); //para login
forward OnPlayerSave(playerid); //para salvar os dados
forward OnPlayerRegister(playerid, password[]); //para registrar



public OnGameModeInit()
{
    // Don't use these lines if it's a filterscript
    SetGameModeText("Blank Script");
    AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
    return 1;
}

public OnGameModeExit()
{
    return 1;
}


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 OnPlayerLogin(playerid,password[])
{
//public que efetua o login
    new string[80]; //string para o nome do player
    GetPlayerName(playerid, pName, sizeof(pName)); //pega o noem do player pelo ID que foi passado
    format(string, sizeof(string), "contas/%s.cfg",pName); //formata a onde esta o arquivo de registro, se quiser mudar o local de salvamento antere o contas sу nгo apague o %s
    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");
}

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 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 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, BRANCO, "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; // Deu erro aqui
}
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;
}
Adicionei um comentбrio aonde deu erro.

Alguйm pode solucionar?
Reply
#2

pawn Code:
#include <a_samp>
#include <fini> //vai carregar a include fini
#define DIALOG_LOGIN 1 //define nossa dialog de login e register
#define BRANCO 0xFFFFFF

enum pInfo{
    cKey[128],
    cLevel,
    cReg,
    cSkin,
    cLog,
    cGrana
}//define a variavel pInfo para diminiur nosso trabalho
new UserInfo[pInfo][MAX_PLAYERS];//acopla o pInfo a variavel UserInfo
new pName[MAX_PLAYER_NAME]; //define a variavel de nome, mas para todo o GM evitando repetiзхes


//toda public que criamos precisa de uma forward :D
forward OnPlayerLogin(playerid,password[]); //para login
forward OnPlayerSave(playerid); //para salvar os dados
forward OnPlayerRegister(playerid, password[]); //para registrar



public OnGameModeInit()
{
    // Don't use these lines if it's a filterscript
    SetGameModeText("Blank Script");
    AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
    return 1;
}

public OnGameModeExit()
{
    return 1;
}


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 OnPlayerLogin(playerid,password[])
{
//public que efetua o login
    new string[80]; //string para o nome do player
    GetPlayerName(playerid, pName, sizeof(pName)); //pega o noem do player pelo ID que foi passado
    format(string, sizeof(string), "contas/%s.cfg",pName); //formata a onde esta o arquivo de registro, se quiser mudar o local de salvamento antere o contas sу nгo apague o %s
    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");
}

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 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 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, BRANCO, "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; // Deu erro aqui
}
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;
}
Reply
#3

pawn Code:
#include <a_samp>
#include <fini> //vai carregar a include fini
#define DIALOG_LOGIN 1 //define nossa dialog de login e register
#define BRANCO 0xFFFFFF

enum pInfo{
    cKey[128],
    cLevel,
    cReg,
    cSkin,
    cLog,
    cGrana
}//define a variavel pInfo para diminiur nosso trabalho
new UserInfo[pInfo][MAX_PLAYERS];//acopla o pInfo a variavel UserInfo
new pName[MAX_PLAYER_NAME]; //define a variavel de nome, mas para todo o GM evitando repetiзхes


//toda public que criamos precisa de uma forward :D
forward OnPlayerLogin(playerid,password[]); //para login
forward OnPlayerSave(playerid); //para salvar os dados
forward OnPlayerRegister(playerid, password[]); //para registrar



public OnGameModeInit()
{
    // Don't use these lines if it's a filterscript
    SetGameModeText("Blank Script");
    AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0);
    return 1;
}

public OnGameModeExit()
{
    return 1;
}


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 OnPlayerLogin(playerid,password[])
{
//public que efetua o login
    new string[80]; //string para o nome do player
    GetPlayerName(playerid, pName, sizeof(pName)); //pega o noem do player pelo ID que foi passado
    format(string, sizeof(string), "contas/%s.cfg",pName); //formata a onde esta o arquivo de registro, se quiser mudar o local de salvamento antere o contas sу nгo apague o %s
    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");
}

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 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 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, BRANCO, "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; // Deu erro aqui
}
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;
    }

@EDIT

Na hora de postar nгo percebi que o OwnPlay jб havia postado, mals
    return 1;
}
Reply
#4

OMG eu tava lendo voces ja postaro kk paciencia pra ler era melhor ter postado separado onde tava fuuu.
Reply
#5

Funcionou.Obrigado ae.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)