20.04.2020, 15:29
Em DOF2 você deve usar a função DOF2_GetString para pegar um texto que esta salvo em um arquivo.
Mas tome cuidado! Funções como essas, tem todo um processo de: abrir o arquivo, mapear as chaves e valores e te retornar o resultado. Isso é muito mais lento se comparado a um valor que esteja na memoria (em variável). Então, sempre que possível (oq é a maioria das vezes), faça um "pre-load" dos dados para variáveis.
Um bom exemplo disso, é no sistema de contas. Quando o Player se conectar, use as funções de Load para carregar as variáveis do jogador.
Vai ter contextos que você deverá usar funções como DOF2_GetString diretamente em algum format ou algo assim; Mas, sempre que possível, evite isso. Dependendo, pode ter uma queda de desempenho muito grande. Um exemplo dessa queda de desempenho: https://sampforum.blast.hk/showthread.php?tid=294999. Apesar de ser dini, serve também.
Mas tome cuidado! Funções como essas, tem todo um processo de: abrir o arquivo, mapear as chaves e valores e te retornar o resultado. Isso é muito mais lento se comparado a um valor que esteja na memoria (em variável). Então, sempre que possível (oq é a maioria das vezes), faça um "pre-load" dos dados para variáveis.
Um bom exemplo disso, é no sistema de contas. Quando o Player se conectar, use as funções de Load para carregar as variáveis do jogador.
PHP Code:
// Crie uma estrutura que descreva o player:
enum E_PLAYER_DATA {
PlayerName[MAX_PLAYER_NAME],
PlayerPassword[20],
PlayerIp[16],
PlayerDinheiro,
PlayerLevel
}
new Player[MAX_PLAYERS][E_PLAYER_DATA];
// Quando ele logar, carregue os dados do arquivo dele para as variáveis:
public OnPlayerConnect(playerid) {
if(DOF2_FileExists(AccountFile(playerid))) {
format(Player[playerid][PlayerName], MAX_PLAYER_NAME, DOF2_GetString(AccountFile(playerid), "Usuario"));
format(Player[playerid][PlayerPassword], 20, DOF2_GetString(AccountFile(playerid), "Senha"));
format(Player[playerid][PlayerIp], 16, DOF2_GetString(AccountFile(playerid), "IP"));
Player[playerid][PlayerDinheiro] = DOF2_GetInt(AccountFile(playerid), "Dinheiro");
Player[playerid][PlayerLeve] = DOF2_GetInt(AccountFile(playerid), "Level");
}
return 1;
}
// Quando ele deslogar, salve os dados das variaveis nos arquivos do jogador:
public OnPlayerDisconnect(playerid, reason) {
SavePlayer(playerid);
return 1;
}
// Função para salvar os dados do jogador. Use quando ele
// desconectar e mais algumas vezes caso tenha alguma queda do servidor, não ter perda dos dados.
SavePlayer(playerid) {
DOF2_SetString(AccountFile(playerid), "Usuario"), Player[playerid][PlayerName]);
DOF2_SetString(AccountFile(playerid), "Senha"), Player[playerid][PlayerPassword]);
DOF2_SetString(AccountFile(playerid), "IP"), Player[playerid][PlayerIp]);
DOF2_SetInt(AccountFile(playerid), "Dinheiro", Player[playerid][PlayerDinheiro]);
DOF2_SetInt(AccountFile(playerid), "Level", Player[playerid][PlayerLeve]);
return 1;
}
AccountFile(playerid) {
new file[40];
format(file, sizeof(file), "Contas/%s.ini");
return file;
}