1 hora atrás
Seu sistema de salvamento está quase certo, o problema é o momento em que está salvando. Não se salva usando OnPlayerUpdate, pois essa callback é chamada milhares de vezes por minuto e prejudica o desempenho do seu gamemode. Coloque o salvamento na OnPlayerDisconnect, você só precisa salvar quando o jogador sair do servidor.
Além disso, existem outros problemas no seu código.
Problema 1:
Você não verifica se o jogador está logado. O sistema irá salvar informações de quando o player está com tudo zerado por cima de infos corretas, pois ela salva em qualquer circunstancia.
Adicionando uma verifacação de logado como essa já deve resolver seu problema. Mas não recomendo manter o uso de OnPlayerUpdate.
Problema 2:
Inconsistencia no campo score.
Em alguns pontos você verifica por score com letras minusculas, em outros você usa Score.
No update(playerid) você está salvando assim:
Mas quando carrega, usa:
O ideal é normalizar e deixar tudo igual:
Além disso, existem outros problemas no seu código.
Problema 1:
Você não verifica se o jogador está logado. O sistema irá salvar informações de quando o player está com tudo zerado por cima de infos corretas, pois ela salva em qualquer circunstancia.
Código:
new bool:logado[MAX_PLAYERS];
//Quando efetuar login
logado[playerid] = true;
//Quando sair do servidor
logado[playerid] = false;
//Quando quiser verificar se esta logado
if(logado[playerid]){
}Adicionando uma verifacação de logado como essa já deve resolver seu problema. Mas não recomendo manter o uso de OnPlayerUpdate.
Problema 2:
Inconsistencia no campo score.
Em alguns pontos você verifica por score com letras minusculas, em outros você usa Score.
No update(playerid) você está salvando assim:
Código:
DOF2_SetInt(Arquivo(playerid), "score", GetPlayerScore(playerid));Código:
Player[playerid][Score] = DOF2_GetInt(Arquivo(playerid), "Score");O ideal é normalizar e deixar tudo igual:
Código:
stock update(playerid)
{
DOF2_SetInt(Arquivo(playerid), "Dinheiro", GetPlayerMoney(playerid));
DOF2_SetInt(Arquivo(playerid), "Skin", GetPlayerSkin(playerid));
DOF2_SetInt(Arquivo(playerid), "Score", GetPlayerScore(playerid)); // corrigido
DOF2_SaveFile();
return 1;
}Discente de Sistemas de Informação no Centro Federal de Ensino Tecnológico(CEFET/RJ)
Programador SA-MP desde 2012
Programador SA-MP desde 2012
Não envie dúvidas por inbox, crie um tópico. Sua dúvida pode ser a dúvida de outro alguém, e seu tópico ajudará outras pessoas no futuro.
