Não escobarzinhu, eu já realizei as correções no código lá em cima. Basta criar duas novas variáveis "new Float:health, Float:armour;", e remover o "&Float:" dentro das respectivas funções.
Isso mesmo White. acabei cometendo alguns erros ontem, tava quase caindo da cadeira de sono. Obrigado pelas correções, tanto a você quanto ao Calasans, e já fiz as alterações no código.
(22/03/2024 03:02)White_Blue Escreveu:(22/03/2024 02:00)Ryzen_ Escreveu: Basta criar variáveis globais para armazenar cada um dos valores, setar eles para o jogador após ele logar, e recuperar os mesmos quando ele deslogar, realizando o salvamento. Irei te passar um exemplo utilizando o DOF2, e levarei em conta que já possue a função responsável por criar o arquivo para cada conta criada.
Código PHP:// Macro para facilitar o desenvolvimento durante a manipulação dos dados
#define PASTA_CONTAS "/Contas/%s.ini";
// Variável criada para facilitar o "format()" ao manipular os dados
new File[128];
// Conjunto de variáveis responsáveis por armazenar informações do jogador
enum pInfo {
Float:pColete,
pVida
}
// Variável para armazenar diferentes valores referentes ao jogador
new PlayerInfo[MAX_PLAYERS][pInfo];
// Recarrega os dados do jogador após o mesmo se conectar
public OnPlayerConnect(playerid) {
LoadAccount(playerid);
return 1;
}
// Recupera a vida e colete atuais do jogador, e seta dentro de suas respectivas variáveis, e após realiza o salvamento.
public OnPlayerDisconnect(playerid) {
PlayerInfo[playerid][pColete] = GetPlayerArmour(playerid, &Float:armour);
PlayerInfo[playerid][pVida] = GetPlayerHealth(playerid, &Float:health);
SaveAccount(playerid);
return 1;
}
// Função responsável por salvar os dados do player
stock SaveAccount(playerid) {
format(File, sizeof(File), PASTA_CONTAS, GetPlayerNameEx(playerid));
DOF2_SetInt(File, "Vida", PlayerInfo[playerid][pVida]);
DOF2_SetFloat(File, "Colete", PlayerInfo[playerid][pColete]);
DOF2_SaveFile();
return 1;
}
// Função responsável por fazer o carregamento nos dados do player
stock LoadAccount(playerid) {
format(File, sizeof(File), PASTA_CONTAS, GetPlayerNameEx(playerid));
PlayerInfo[playerid][pVida] = DOF2_GetInt(File, "Vida");
PlayerInfo[playerid][pColete] = DOF2_GetFloat(File, "Colete");
return 1;
}
// Função para pegar o nome do player
stock GetPlayerNameEx(playerid) {
static Name[MAX_PLAYER_NAME+1];
GetPlayerName(playerid, Name, sizeof(Name));
return Name;
}
Quanto ao sistema de salvamento das armas, existe um tutorial bem completo a respeito do mesmo aqui no fórum: https://portalsamp.com/showthread.php?tid=2382
Apenas algumas correções:
O valor da vida do jogador é tratado como um valor float, e não como um valor inteiro.
Não é necessário utilizar a tag Float como parâmetro nas funções GetPlayerHealth e GetPlayerArmour, tampouco é necessário o uso do símbolo "&" já que este é utilizado apenas para indicar que os parâmetros das funções são opcionais.
Isso mesmo White. acabei cometendo alguns erros ontem, tava quase caindo da cadeira de sono. Obrigado pelas correções, tanto a você quanto ao Calasans, e já fiz as alterações no código.