[Ajuda] Foreach samp?
#8

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.
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_NAMEDOF2_GetString(AccountFile(playerid), "Usuario"));
        
format(Player[playerid][PlayerPassword], 20DOF2_GetString(AccountFile(playerid), "Senha"));
        
format(Player[playerid][PlayerIp], 16DOF2_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(playeridreason) {
    
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(filesizeof(file), "Contas/%s.ini");
    return 
file;

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.
Reply


Messages In This Thread
Foreach samp? - by FabioGTP - 12.04.2020, 00:50
Re: Foreach samp? - by Khivory - 12.04.2020, 01:05
Re: Foreach samp? - by FabioGTP - 12.04.2020, 01:09
Re: Foreach samp? - by Khivory - 12.04.2020, 04:18
Re: Foreach samp? - by PT - 12.04.2020, 05:38
Re: Foreach samp? - by RiqueP - 13.04.2020, 03:13
Re: Foreach samp? - by FabioGTP - 20.04.2020, 14:21
Re: Foreach samp? - by RiqueP - 20.04.2020, 15:29

Forum Jump:


Users browsing this thread: 1 Guest(s)