Problemas SetPlayerHealth - TheGuilherme020 - 19/08/2022
Bom eu fiz um salvamento de vida do jogador mas esta com um pequeno bug. Sim esta salvando a vida do jogador, o problema esta na hora do login que a vida esta sendo setada pra 0 ao invés do que está no arquivo do jogador.
Função que esta na hora do spawn do jogador:
Código: SetPlayerHealth(playerid, DOF2_GetFloat(FormatarJogador(playerid), "pVida"));
Função que estou usando pra getar do arquivo do jogador:
Código: FormatarJogador(playerid)
{
new file[16 + MAX_PLAYER_NAME];
format(file, sizeof(file), "Dados/Players/%s.ini", pName(playerid));
return file;
}
Se alguém poder me ajudar a corrigir isso irei ficar grato.
[/i]
RE: Problemas SetPlayerHealth - White_Blue - 19/08/2022
É só fazer assim:
Código PHP: new File[128]; #define Contas "/Contas/%s"
enum pInfo { Vida }; new PlayerInfo[MAX_PLAYERS][pInfo];
stock CarregarDados(playerid) { format(File, sizeof(File), Contas, GetPlayerNameEx(playerid)); PlayerInfo[playerid][Vida] = DOF2_GetFloat(File, "Vida"); SetPlayerHealth(playerid, PlayerInfo[playerid][Vida]); return 1; }
public OnPlayerConnect(playerid) { CarregarDados(playerid); return 1; }
public OnPlayerDisconnect(playerid, reason) { SalvarDados(playerid); return 1; }
stock SalvarDados(playerid) { format(File, sizeof(File), Contas, GetPlayerNameEx(playerid)); DOF2_SetFloat(File, "Vida", PlayerInfo[playerid][Vida]); return 1; }
stock GetPlayerNameEx(playerid) { static Name[MAX_PLAYER_NAME]; GetPlayerName(playerid, Name, MAX_PLAYER_NAME); return Name; }
RE: Problemas SetPlayerHealth - Dr Editor - 19/08/2022
É provavel que a entrada "pVida" não exista ou a formatação (FormatarJogador) não está correta.
RE: Problemas SetPlayerHealth - TheGuilherme020 - 19/08/2022
(19/08/2022 15:49)White_Blue Escreveu: É só fazer assim:
Código PHP: new File[128]; #define Contas "/Contas/%s"
enum pInfo { Vida }; new PlayerInfo[MAX_PLAYERS][pInfo];
stock CarregarDados(playerid) { format(File, sizeof(File), Contas, GetPlayerNameEx(playerid)); PlayerInfo[playerid][Vida] = DOF2_GetFloat(File, "Vida"); SetPlayerHealth(playerid, PlayerInfo[playerid][Vida]); return 1; }
public OnPlayerConnect(playerid) { CarregarDados(playerid); return 1; }
public OnPlayerDisconnect(playerid, reason) { SalvarDados(playerid); return 1; }
stock SalvarDados(playerid) { format(File, sizeof(File), Contas, GetPlayerNameEx(playerid)); DOF2_SetFloat(File, "Vida", PlayerInfo[playerid][Vida]); return 1; }
stock GetPlayerNameEx(playerid) { static Name[MAX_PLAYER_NAME]; GetPlayerName(playerid, Name, MAX_PLAYER_NAME); return Name; }
Tentei fazer desta forma, mesmo assim o jogador esta morrendo após spawnar. Obrigado mesmo assim amigo.
RE: Problemas SetPlayerHealth - White_Blue - 19/08/2022
(19/08/2022 18:44)TheGuilherme020 Escreveu: (19/08/2022 15:49)White_Blue Escreveu: É só fazer assim:
Código PHP: new File[128]; #define Contas "/Contas/%s"
enum pInfo { Vida }; new PlayerInfo[MAX_PLAYERS][pInfo];
stock CarregarDados(playerid) { format(File, sizeof(File), Contas, GetPlayerNameEx(playerid)); PlayerInfo[playerid][Vida] = DOF2_GetFloat(File, "Vida"); SetPlayerHealth(playerid, PlayerInfo[playerid][Vida]); return 1; }
public OnPlayerConnect(playerid) { CarregarDados(playerid); return 1; }
public OnPlayerDisconnect(playerid, reason) { SalvarDados(playerid); return 1; }
stock SalvarDados(playerid) { format(File, sizeof(File), Contas, GetPlayerNameEx(playerid)); DOF2_SetFloat(File, "Vida", PlayerInfo[playerid][Vida]); return 1; }
stock GetPlayerNameEx(playerid) { static Name[MAX_PLAYER_NAME]; GetPlayerName(playerid, Name, MAX_PLAYER_NAME); return Name; }
Tentei fazer desta forma, mesmo assim o jogador esta morrendo após spawnar. Obrigado mesmo assim amigo. Tenta trocar o pVida por GetPlayerHealth(playerid) na stock que salva a vida do player.
Código PHP: stock SalvarDados(playerid) { DOF2_SetFloat(File, "Vida", GetPlayerHealth(playerid)); return 1; }
RE: Problemas SetPlayerHealth - CoelhaO_LokaO - 19/08/2022
Usa função stock geralmente retorna string;
|