22.08.2013, 11:15
Bom pessoal, eu tenho um sistema de registro usando #include Dini
Quando um usuбrio se registra no meu server . O Correto й comeзar com 0 de Score e 0 de Dinheiro. Mas й diferente. Dependendo da senha que o cara coloca, ele estб automaticamente ganhando score diferente, e nivel de admin diferente. Se o score dele aumentar ou diminuir, a senha muda, o nivel do admin muda, e etc...
Queria saber como fazer pra nгo sofrer essas modificaзхes no arquivo, como por exemplo, se eu setar score em um player, eu nгo quero que o resto do conteъdo do arquivo se modifique
O Arquivo do player й bem simples, consiste nisso:
Key=(Senha) Dinheiro=0 Score=160 Admin=103
As callbacks que mexe no arquivo do usuбrio sгo essas:
Quando um usuбrio se registra no meu server . O Correto й comeзar com 0 de Score e 0 de Dinheiro. Mas й diferente. Dependendo da senha que o cara coloca, ele estб automaticamente ganhando score diferente, e nivel de admin diferente. Se o score dele aumentar ou diminuir, a senha muda, o nivel do admin muda, e etc...
Queria saber como fazer pra nгo sofrer essas modificaзхes no arquivo, como por exemplo, se eu setar score em um player, eu nгo quero que o resto do conteъdo do arquivo se modifique
O Arquivo do player й bem simples, consiste nisso:
Key=(Senha) Dinheiro=0 Score=160 Admin=103
As callbacks que mexe no arquivo do usuбrio sгo essas:
pawn Код:
public OnPlayerRegister(playerid, password[])
{
if(IsPlayerConnected(playerid))
{
new string3[64];
new playername3[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername3, sizeof(playername3));
format(string3, sizeof(string3), "Contas/%s.ini", playername3);
new File: hFile = fopen(string3, io_write);
if (hFile)
{
strmid(PlayerInfo[playerid][pSenha], password, 0, strlen(password), 255);
new var[32];
format(var, 32, "Senha=%s\n", PlayerInfo[playerid][pSenha]);fwrite(hFile, var);
PlayerInfo[playerid][pDinheiro] = GetPlayerMoney(playerid);
format(var, 32, "Dinheiro=%d\n",PlayerInfo[playerid][pDinheiro]);fwrite(hFile, var);
format(var, 32, "Score=%d\n",PlayerInfo[playerid][pScore]);fwrite(hFile, var);
format(var, 32, "Admin=%d\n",PlayerInfo[playerid][pAdmin]);fwrite(hFile, var);
fclose(hFile);
}
SendClientMessage(playerid, 0x33FF00FF, "Vocк agora pode digitar /logar <senha>");
ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_PASSWORD,""BRANCO"Logar",""BRANCO"Digite sua senha abaixo para efetuar login.","Logar","Quit");
}
return 1;
}
pawn Код:
public OnPlayerLogin(playerid,password[])
{
new string2[64];
format(string2, sizeof(string2), "Contas/%s.ini", PlayerName(playerid));
strmid(PlayerInfo[playerid][pSenha], dini_Get(string2, "Senha"), 0, strlen(dini_Get(string2, "Senha")), 255);
new File: UserFile = fopen(string2, io_read);
if (UserFile)
{
if(strcmp(PlayerInfo[playerid][pSenha],password, true ) == 0)
{
new key[ 256 ] , val[ 256 ];
new Data[ 256 ];
while (fread(UserFile, Data, sizeof(Data)))
{
key = ini_GetKey( Data );
if( strcmp( key , "Dinheiro" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pDinheiro] = strval( val ); }
if( strcmp( key , "Score" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pScore] = strval( val ); }
if( strcmp( key , "Admin" , true ) == 0 ) { val = ini_GetValue( Data ); PlayerInfo[playerid][pAdmin] = strval( val ); }
gPlayerLogged[playerid] = 1;
SetPlayerScore(playerid, PlayerInfo[playerid][pScore]);
}//end while
fclose(UserFile);//close the file after everything has been read in the while
}
else
{
SendClientMessage(playerid, 0xFFFF00FF, "Senha errada!");
ShowPlayerDialog(playerid, DIALOG_LOGAR, DIALOG_STYLE_INPUT, ""BRANCO"Logar",""VERMELHO"Vocк digitou uma senha incorreta.\n"BRANCO"Digite sua senha abaixo para acessar.","Logar","Quit");
fclose(UserFile);
ClearChatbox(playerid, 100);
ResetPlayerMoney(playerid);
GivePlayerMoney(playerid,PlayerInfo[playerid][pDinheiro]);
CurrentMoney[playerid] = PlayerInfo[playerid][pDinheiro];
if(PlayerInfo[playerid][pAdmin] >= 1)
{
new AdminName[MAX_PLAYER_NAME];
GetPlayerName(playerid, AdminName, sizeof(AdminName));
format(string2, sizeof(string2), "~r~%s: ~g~ON", AdminName);
for(new i=0; i<MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i)) GameTextForPlayer(i, string2 , 5000, 1);
}
}
}
}
return 1;
}
pawn Код:
public OnPlayerSave(playerid)
{
if(IsPlayerConnected(playerid))
{
if(gPlayerLogged[playerid])
{
new string3[64];
new playername3[MAX_PLAYER_NAME];
GetPlayerName(playerid, playername3, sizeof(playername3));
format(string3, sizeof(string3), "Contas/%s.ini", playername3);
new File: hFile = fopen(string3, io_write);
if (hFile)
{
new var[32];
format(var, 32, "Senha=%s\n", PlayerInfo[playerid][pSenha]);fwrite(hFile, var);
PlayerInfo[playerid][pDinheiro] = GetPlayerMoney(playerid);
format(var, 32, "Dinheiro=%d\n",PlayerInfo[playerid][pDinheiro]);fwrite(hFile, var);
format(var, 32, "Score=%d\n",PlayerInfo[playerid][pScore]);fwrite(hFile, var);
format(var, 32, "Admin=%d\n",PlayerInfo[playerid][pAdmin]);fwrite(hFile, var);
fclose(hFile);
}
}
}
return 1;
}