[Ajuda] Salvamento
#1

Salve galera , entгo eu estou com esse problema jб faz um tempo, й o seguinte.

Quando eu logo e aparece lб aparece a tela de login e a dialog de registrar ou se jб tiver registro digitar a senha ( atй ai ok ) , porйm se eu fechar a dialog de login sou kikado por nгo fazer o login ( estб correto isso ) , porйm se meu gta fechar na tela de login ele desseta a conta , os leveis fica tudo 0.

Exemplo : sou admin e vou entrar no server , se eu fechar meu gta na tela de login minha conta й dessetada e volto sem estб setado de admin , ( sу basta fechar o gta quando tiver no login , nгo importa como , pode ser dando esc e fechando , pode ser fechando a dialog do login e sendo kikado , pode ser crashando , net caindo etc...

Resumindo : se o GTA fechar na tela do login ele tб dessetando ( pm / adm / etc... ) a conta , porйm o mais curioso й que ele salva a senha da conta , se eu fechar gta no login e for entrar de novo aparece lб

Tipo de conta : Registrada , a senha salva porйm os level que eu tinha seja de adm pm etc nгo.


Код:
SalvarPlayer(playerid)
{
AntiDeAMX();
new String[256];
format(String, sizeof(String), CONTAS, Nome(playerid));
DOF2_SetInt(String,"Administrador", PlayerInfo[playerid][pAdmin]);
DOF2_SetInt(String,"ADM", PlayerInfo[playerid][pADM]);
DOF2_SetInt(String,"CBF", PlayerInfo[playerid][pCBF]);
DOF2_SetInt(String,"PMLV", PlayerInfo[playerid][pPMLV]);
DOF2_SetInt(String,"PMLS", PlayerInfo[playerid][pPMLS]);
DOF2_SetInt(String,"PMSF", PlayerInfo[playerid][pPMSF]);
DOF2_SetInt(String,"RGT", PlayerInfo[playerid][pRGT]);
DOF2_SetInt(String,"Narrador", PlayerInfo[playerid][pNarrador]);
DOF2_SetInt(String,"Score", GetPlayerScore(playerid));
DOF2_SetInt(String,"Viptemp", PlayerInfo[playerid][pVip]);
new date[32];
new hour, minute, second, day, month, year;
gettime(hour, minute, second);
getdate(year, month, day);
format(date, 32,"%d/%d/%d/%d/%d/%d",day,month,year,hour, minute, second);
DOF2_SetString(String,"LastLogin", date);
DOF2_SetInt(String,"LastLoginTick", Now());
DOF2_SaveFile();
return 1;
}
SetarPlayer(playerid)
{
AntiDeAMX();
new String[256];
format(String, sizeof(String), CONTAS, Nome(playerid));
PlayerInfo[playerid][pAdmin] = DOF2_GetInt(String, "Administrador");
PlayerInfo[playerid][pADM] = DOF2_GetInt(String, "ADM");
PlayerInfo[playerid][pCBF] = DOF2_GetInt(String, "CBF");
PlayerInfo[playerid][pPMLV] = DOF2_GetInt(String, "PMLV");
PlayerInfo[playerid][pPMLS] = DOF2_GetInt(String, "PMLS");
PlayerInfo[playerid][pPMSF] = DOF2_GetInt(String, "PMSF");
PlayerInfo[playerid][pRGT] = DOF2_GetInt(String, "RGT");
PlayerInfo[playerid][pNarrador] = DOF2_GetInt(String, "Narrador");
SetPlayerScore(playerid, DOF2_GetInt(String,"Score"));
PlayerInfo[playerid][pVip] = DOF2_GetInt(String, "Viptemp");
return 1;
}
Em OnGameModeExit, OnPlayerDisconnect, nos settal(...).
Код:
 
SalvarPlayer(playerid) e/ou (i).
Login e registro
Код:
if(dialogid == REGISTRO)
{
if(response)
{
if(!strlen(inputtext))
{
new Nome[MAX_PLAYER_NAME];
GetPlayerName(playerid, Nome, sizeof(Nome));
new String[128];
format(String, sizeof(String), "{FFFFFF}Parece que й sua primeira vez aqui.\n\nNick: %s\nStatus: {FF0000}Nгo registrada\n\n{FFFFFF}Digite uma senha abaixo para se registrar.", Nome);
ShowPlayerDialog(playerid, REGISTRO, DIALOG_STYLE_PASSWORD, "Registro", String, "Registrar", "Cancelar");
SendClientMessage(playerid,VERMELHO,"ERRO: Senha invalida, digite uma senha vбlida");
return 1;
}
new Nome[MAX_PLAYER_NAME];
GetPlayerName(playerid, Nome, sizeof(Nome));
new String[128];
format(String, sizeof(String), CONTAS, Nome);
DOF2_CreateFile(String);
DOF2_SetString(String,"Senha",inputtext);
DOF2_SetInt(String,"Administrador", 0);
DOF2_SetInt(String,"ADM",0);
DOF2_SetInt(String,"CBF",0);
DOF2_SetInt(String,"PMLV",0);
DOF2_SetInt(String,"PMLS",0);
DOF2_SetInt(String,"PMSF",0);
DOF2_SetInt(String,"RGT",0);
DOF2_SetInt(String,"Narrador",0);
DOF2_SetInt(String,"Score",0);
DOF2_SetInt(String,"Viptemp",0);
new year,day,month;
getdate(year, month, day);
new str[32];
format(str, 32,"%02d/%02d/%d",day,month,year);
DOF2_SetString(String,"RegisterDate",str);
GivePlayerMoney(playerid, 1000);
PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
format(String, sizeof(String), "[INFO] Sua conta foi registrada com a senha '%s'", inputtext);
SendClientMessage(playerid, 0x51FF3EAA, String);
DOF2_SaveFile();
ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD, "Login", "Parabens! Conta criada com sucesso.\n\n Pra logar digite sua senha.", "Logar", "Cancelar");
return 1;
}
else
{
SendClientMessage(playerid, VERMELHO, "ERRO: Vocк nгo quis se registrar, por este motivo foi kickado.");
Kick(playerid);
return 1;
}
}
if(dialogid == LOGIN)
{
if(response)
{
if(!strlen(inputtext))
{
new String[128];
format(String, sizeof(String), "{FFFFFF}Olб {FFFF00}%s.\n{FFFFFF}Tipo de Conta: {00CC00}Registrada.\n{FFFFFF}Digite sua senha para continuar:",Nome(playerid));
ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD, "Login", String, "Logar", "Cancelar");
SendClientMessage(playerid,ERRO,"Senha incorreta digite-a novamente.");
return 1;
}
new String[128];
format(String, sizeof(String), CONTAS, Nome(playerid));
if(!strcmp(inputtext,DOF2_GetString(String,"Senha"),false))
{
ShowPlayerDialog(playerid,ESCOLHA_CIDADE,DIALOG_STYLE_LIST,"Sйrie A 2014","{FFFFFF}Norte/Nordeste {FFFF00}- {00CC00}[LV]\n{FFFFFF}Sudeste {FFFF00}- {00CC00}[LS]\n{FFFFFF}Sul {FFFF00}- {00CC00}[SF]","Escolher","");
GivePlayerMoney(playerid, 10000);
SetarPlayer(playerid);
SalvarPlayer(playerid);
new lastlogin[19];
format(lastlogin, 19, "%s.", DOF2_GetString(String, "LastLogin") );
if(strlen(lastlogin) == 17)
format(lastlogin, 9, "%s", DOF2_GetString(String, "LastLogin") );
else if(strlen(lastlogin) == 19)
format(lastlogin, 11, "%s", DOF2_GetString(String, "LastLogin") );
else if(strlen(lastlogin) == 18)
format(lastlogin, 10, "%s", DOF2_GetString(String, "LastLogin") );
SendClientMessage(playerid, -1, " ");
SendFormattedMessage(playerid, AZULCLARO, "** Bem vindo %s!", Nome(playerid));
SendFormattedMessage(playerid, AZULCLARO, "** Registrado em %s | Ъltimo Login: %s.", DOF2_GetString(String, "RegisterDate"), lastlogin);
PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
if(PlayerInfo[playerid][pVip] >= 1)
{
new var10[128];
format(var10, sizeof(var10), "** Seu VIP expira em %s.", SistemaVipSpeed(PlayerInfo[playerid][pVip]-Now()));
SendClientMessage(playerid, AZULCLARO, var10);
SetPlayerArmour(playerid,100);
}
if(PlayerInfo[playerid][pAdmin] >= 1)
{
ShowPlayerDialog(playerid, 901, DIALOG_STYLE_PASSWORD,"Anti-Fake","Administrador, coloque a senha Anti-Fake:", "Ok", "");
}
if(PlayerInfo[playerid][pADM] == 1)
{
SendClientMessage(playerid,AZULCLARO,"** Vocк й um Organizador.");
}
if(PlayerInfo[playerid][pCBF] == 1)
{
SendClientMessage(playerid,AZULCLARO,"** Vocк й um CBF.");
}
if(PlayerInfo[playerid][pNarrador] == 1)
{
SendClientMessage(playerid,AZULCLARO,"**: Vocк й um Narrador.");
}
if(PlayerInfo[playerid][pPMLS] >= 1)
{
SendClientMessage(playerid,AZULCLARO,"** Vocк й um Polнcial.");
}
if(PlayerInfo[playerid][pPMSF] >= 1)
{
SendClientMessage(playerid,AZULCLARO,"** Vocк й um Polнcial.");
}
if(PlayerInfo[playerid][pPMLV] >= 1)
{
SendClientMessage(playerid,AZULCLARO,"** Vocк й um Polнcial.");
}
return 1;
}
else
{
SendClientMessage(playerid,ERRO,"Senha incorreta digite-a novamente.");
format(String, sizeof(String), "{FFFFFF}Olб {FFFF00}%s.\n{FFFFFF}Tipo de Conta: {00CC00}Registrada.\n{FFFFFF}Digite sua senha para continuar:",Nome(playerid));
ShowPlayerDialog(playerid, LOGIN, DIALOG_STYLE_PASSWORD, "Login", String, "Logar", "Cancelar");
}
return 1;
}
else
{
SendClientMessage(playerid, ERRO, "Vocк nгo quis se logar, por este motivo foi kickado.");
Kick(playerid);
}
return 1;
}
Reply
#2

tem que fazer a verificaзгo para saber se ele estб logado algo tipo e sу salvar caso ele esteja logado
pawn Код:
if(!PlayerInfo[playerid][pLogado])
        return 0;
Reply
#3

Como o amigo DanDRT disse, vocк pode fazer uma verificaзгo se o player estб logado antes de salvar os dados.
O que ocorre й o seguinte, pelo que eu pude entender, por exemplo:
Vocк criou uma conta, setou admin e saiu do servidor, tudo certo.
Apуs se conectar, vocк fica na tela de login ( Dialog ), caso vocк nгo faзa login os dados nгo serгo setados, pois, pelo que parece sу й setado quando o Player digita sua senha.
Seguindo essa нdeia, quando o Player se desconecta sem digitar sua senha, a public OnPlayerDisconnect й chamada e assim salva os dados que o player tinha quando se conectou e nгo os que estгo salvos na pasta que й setado quando a senha й digitada.

Abraзs!
Reply
#4

Deu certo amigos , obrigado.
Reply
#5

Fico feliz meu amigo!

Abraзs!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)