Portal SAMP
[Ajuda] DOF2 - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] DOF2 (/showthread.php?tid=3930)



DOF2 - sabio - 28/08/2023

Bom dia! Estou fazendo o sistema de salvamento do meu servidor utilizando DOF2, Fiz o salvamento através do OnPlayerDisconnect, tudo certo até então, porém quando a host é desligada manualmente ou não, os dados não são salvos.

Então fiz um loop na OnGameModeExit, percorrendo todos os players logados e salvando.

Código PHP:
for(new 0GetPlayerPoolSize(); <= ji++) {
    if(
IsPlayerConnected(i) && VerificarLogin[i])
    {
        
SalvarDados(i);
    }




Mas mesmo assim não salva. 

Se alguém puder me ajudar com a solução ou me dizendo onde eu errei.


RE: DOF2 - strelo - 28/08/2023

Bom dia! Parece que você está tentando resolver um problema de salvamento de dados em um servidor utilizando o DOF2. Seu código parece estar no caminho certo, mas pode haver algumas razões pelas quais os dados não estão sendo salvos corretamente. Vou tentar ajudar a identificar possíveis problemas e propor soluções:

VerificarLogin Array: Certifique-se de que o array VerificarLogin está sendo preenchido corretamente ao identificar um jogador conectado e autenticado. Se ele não estiver sendo preenchido corretamente, os jogadores não serão identificados para salvamento.

Indíces de Jogador: Lembre-se de que os índices de jogador em SA-MP começam em 0 e vão até o máximo de jogadores menos um. No seu loop, você está iterando até GetPlayerPoolSize(), que provavelmente retorna o número máximo de jogadores mais um. Certifique-se de ajustar seu loop para i < j em vez de i <= j.

Função SalvarDados: Verifique se a função SalvarDados está corretamente definida e executando o salvamento de maneira adequada. Certifique-se de que os dados relevantes estejam sendo passados corretamente para a função e que o salvamento esteja ocorrendo sem erros.

Debugging: Para identificar onde o problema pode estar ocorrendo, é recomendável adicionar mensagens de depuração ao seu código. Isso pode ajudar a verificar se o loop está sendo executado corretamente e se as condições estão sendo atendidas.

Erros no Salvamento: Verifique os logs do seu servidor para possíveis mensagens de erro relacionadas ao salvamento. Isso pode fornecer informações valiosas sobre o que está acontecendo de errado.

Timing: Lembre-se de que o tempo disponível na função OnGameModeExit pode ser limitado, dependendo da quantidade de jogadores conectados. Certifique-se de que o tempo de execução das operações de salvamento não exceda o tempo disponível.

Aqui está uma versão corrigida do seu loop:

Código:
for (new i = 0, j = GetMaxPlayers(); i < j; i++) {
    if (IsPlayerConnected(i) && VerificarLogin[i]) {
        SalvarDados(i);
    }
}


Certifique-se de verificar todos esses pontos e realizar testes cuidadosos. Caso o problema persista, você pode precisar revisar sua implementação da função SalvarDados.


RE: DOF2 - White_Blue - 29/08/2023

O DOF2 é bem chato para salvar na OnGameModeExit, pois o DOF2 é muito lento e quando você desliga o servidor, não dá tempo de salvar tudo, ainda mais se seu código de salvamento é mal feito.