01.04.2014, 00:56
Bom no GM que to criando fiz o sistema de login porйm so salva a senha e skin, eu criei a enum com dinheiro mas nao ta salvando vou dexar abaixo algumas coisas...
A Enum
OnPlayerConnected
OnPlayerDisconnected
OnPlayerSpawn
OnDialogResponse
Obs: Se vcs verem alguns bugs que nao esta relacionado ao topico tbn por favor me falem
Espero ajudas, vlw xD
A Enum
pawn Код:
enum pInfo
{
pSkin,
pSenha[MAX_SENHA+1],
pDinheiro
};
new PlayerInfo[MAX_PLAYERS][pInfo];
new Erro[MAX_PLAYERS]
pawn Код:
PlayerPlaySound(playerid, 1097, 0.0, 0.0, 10.0);
new str[128];
new name[MAX_PLAYER_NAME];
new file[40];
GetPlayerName(playerid, name, 32);
format(str,sizeof(str), "»{FFFFFF} Olб %s, seja bem vindo ao GTA Brasil Vida Virtual, aguarde enquanto o servidor estб sendo carregado...", name);
SendClientMessage(playerid, Vermelho, str);
format(file, 40, PASTA_CONTAS, name);
if(DOF2_FileExists(file))
{
ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Login", "\n» Informe sua senha para logar:", "Logar", "Cancelar");
}
else
{
ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Registro", "\n» Informe uma senha para se registrar:", "Registrar", "Cancelar");
}
StuntSuperSpeed[playerid] = false;
return 1;
}
pawn Код:
new file[40], name[MAX_PLAYER_NAME]; // cria a variavel name com 40 celulas e a variavel Name
GetPlayerName(playerid, name, 32); // Pega o nome do player
format(file, 40, PASTA_CONTAS, name); // Formata o file que existe na pasta Jogadores
if(DOF2_FileExists(file)) // se o file existir
{
DOF2_SetInt(file, "Senha", PlayerInfo[playerid][pSenha]); // seta a senha do player para o que ele digitou
DOF2_SetInt(file, "Skin", PlayerInfo[playerid][pSkin]); // seta a skin para o id da skin atual
DOF2_SetInt(file,"Dinheiro",PlayerInfo[playerid][pDinheiro]);
DOF2_SaveFile(); // finalmente salvando o file
}
pawn Код:
SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); // Seta a skin do player quando ele spawnar para a skin salva
GivePlayerMoney(playerid, PlayerInfo[playerid][pDinheiro]);
pawn Код:
new file[40], name[MAX_PLAYER_NAME], str[128]; // criando a string file com 40 celulas e criando a variavel name
GetPlayerName(playerid, name, 32); // pegando o nome do player
format(file, 40, PASTA_CONTAS, name); // formatando o file para a pasta Jogadores
if(dialogid == DIALOG_REGISTRO) // Dialog registro
{
if(strlen(inputtext) < MIN_SENHA || strlen(inputtext) > MAX_SENHA)
{
format(str, sizeof(str), "| ERRO | A senha deve ter entre %d e %d caracteres!", MIN_SENHA, MAX_SENHA);
SendClientMessage(playerid, Vermelho, str);
ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Registro", "/n» Informe uma senha para se registrar:", "Registrar", "Cancelar");
return 1;
}
if(!strval(inputtext)) // se ele nao digitar numeros da erro e volta no dialog de registro
{
ShowPlayerDialog(playerid, DIALOG_REGISTRO, DIALOG_STYLE_PASSWORD, "Registro", "/n» Informe uma senha para se registrar:", "Registrar", "Cancelar");
SendClientMessage(playerid, -1, "{FF7F24}| ERRO | Digite apenas nъmeros para se registrar");
return 1;
}
if(!response) //se ele apertar o botao Cancelar, kicka ele !
{
Kick(playerid);
return 1;
}
else // se ele colocar a senha certa cria os files
{
PlayerInfo[playerid][pSenha] = strval(inputtext); // pega a senha que ele digitou no campo do dialog
DOF2_CreateFile(file); // cria o file na pasta Jogadores
DOF2_SetInt(file, "Senha", PlayerInfo[playerid][pSenha]); // seta a senha para a que ele digitou no dialog
DOF2_SetInt(file, "Skin",38); // seta a skin dele para 38, podendo mudar para qualquer numero.
DOF2_SetInt(file, "Dinheiro",PlayerInfo[playerid][pDinheiro]);
DOF2_SaveFile(); // salva o file
SendClientMessage(playerid, -1, " ");
SendClientMessage(playerid, -1, " ");
SendClientMessage(playerid, -1, " ");
SendClientMessage(playerid, -1, " ");
SendClientMessage(playerid, -1, " ");
SendClientMessage(playerid, -1, " ");
SendClientMessage(playerid, -1, " ");
SendClientMessage(playerid, -1, " ");
SendClientMessage(playerid, -1, " ");
SendClientMessage(playerid, -1, " ");
SendClientMessage(playerid, -1, " ");
SendClientMessage(playerid, -1, " ");
SendClientMessage(playerid, -1, " ");
SendClientMessage(playerid, -1, " ");
SendClientMessage(playerid, -1, " ");
SendClientMessage(playerid, -1, " ");
SendClientMessage(playerid, -1, "{B9D3EE}| INFO | Conta registrada com sucesso");
ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Login", "\n» Informe sua senha para logar:", "Logar", "Cancelar");
}
}
if(dialogid == DIALOG_LOGAR)
{
if(!strval(inputtext)) // se ele nao digitar apenas numeros volta o dialog de login
{
SendClientMessage(playerid, -1, "{FF7F24}| ERRO | Digite apenas nъmeros para se logar.");
ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Login", "\n» Informe sua senha para logar:", "Logar", "Cancelar");
return 1;
}
if(!response) // se ele clickar em Cancelar kicka ele !
{
Kick(playerid);
return 1;
}
else // Se ele colocar a senha certa
{
PlayerInfo[playerid][pSenha] = DOF2_GetInt(file, "Senha"); // pega a senha salva dele
if(strval(inputtext) == PlayerInfo[playerid][pSenha]) // pega a senha que ele digitou
{
PlayerInfo[playerid][pSkin] = DOF2_GetInt(file, "Skin"); // pega a skin do player
SetPlayerSkin(playerid, PlayerInfo[playerid][pSkin]); // seta a skin do player para a skin salva
PlayerInfo[playerid][pDinheiro] = DOF2_GetInt(file,"Dinheiro");
GivePlayerMoney(playerid, PlayerInfo[playerid][pDinheiro]);
SpawnPlayer(playerid); // em seguida, spawna o player
SendClientMessage(playerid, -1, " ");
SendClientMessage(playerid, -1, " ");
SendClientMessage(playerid, -1, " ");
SendClientMessage(playerid, -1, " ");
SendClientMessage(playerid, -1, " ");
SendClientMessage(playerid, -1, " ");
SendClientMessage(playerid, -1, " ");
SendClientMessage(playerid, -1, " ");
SendClientMessage(playerid, -1, " ");
SendClientMessage(playerid, -1, " ");
SendClientMessage(playerid, -1, " ");
SendClientMessage(playerid, -1, " ");
SendClientMessage(playerid, -1, " ");
SendClientMessage(playerid, -1, " ");
SendClientMessage(playerid, -1, " ");
SendClientMessage(playerid, -1, " ");
SendClientMessage(playerid, closed, "| INFO | Logado com sucesso");
}
else // se ele errar a senha mostra o dialog denovo
{
SendClientMessage(playerid, Vermelho, "| ERRO | Vocк errou a senha, tente novamente. ( Se errar 3 vezes й kickado )");
ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD, "Login", "\n» Informe sua senha para logar:", "Logar", "Cancelar");
Erro[playerid]++;
if(Erro[playerid] == 3) // se ele errar 3 vezes ele serб kickado !
{
SendClientMessage(playerid, Vermelho, "| INFO | Vocк foi kickado por errar a senha 3 vezes");
Kick(playerid);
return 1;
}
}
}
}
Obs: Se vcs verem alguns bugs que nao esta relacionado ao topico tbn por favor me falem
Espero ajudas, vlw xD