Portal SAMP
[Ajuda] Problemas SetPlayerHealth - 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] Problemas SetPlayerHealth (/showthread.php?tid=2681)



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(Filesizeof(File), ContasGetPlayerNameEx(playerid));
     
PlayerInfo[playerid][Vida] = DOF2_GetFloat(File"Vida");
     
SetPlayerHealth(playeridPlayerInfo[playerid][Vida]);
     return 
1;
}

public 
OnPlayerConnect(playerid) {
      
CarregarDados(playerid);
      return 
1;
}

public 
OnPlayerDisconnect(playeridreason) {
      
SalvarDados(playerid);
      return 
1;
}

stock SalvarDados(playerid) {
               
format(Filesizeof(File), ContasGetPlayerNameEx(playerid));
               
DOF2_SetFloat(File"Vida"PlayerInfo[playerid][Vida]);
               return 
1;
}

stock GetPlayerNameEx(playerid) {
     static 
Name[MAX_PLAYER_NAME];
     
GetPlayerName(playeridNameMAX_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(Filesizeof(File), ContasGetPlayerNameEx(playerid));
     PlayerInfo[playerid][Vida] = DOF2_GetFloat(File"Vida");
     SetPlayerHealth(playeridPlayerInfo[playerid][Vida]);
     return 1;
}

public 
OnPlayerConnect(playerid) {
      CarregarDados(playerid);
      return 1;
}

public 
OnPlayerDisconnect(playeridreason) {
      SalvarDados(playerid);
      return 1;
}

stock SalvarDados(playerid) {
               format(Filesizeof(File), ContasGetPlayerNameEx(playerid));
               DOF2_SetFloat(File"Vida"PlayerInfo[playerid][Vida]);
               return 1;
}

stock GetPlayerNameEx(playerid) {
     static Name[MAX_PLAYER_NAME];
     GetPlayerName(playeridNameMAX_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(Filesizeof(File), ContasGetPlayerNameEx(playerid));
     PlayerInfo[playerid][Vida] = DOF2_GetFloat(File"Vida");
     SetPlayerHealth(playeridPlayerInfo[playerid][Vida]);
     return 1;
}

public 
OnPlayerConnect(playerid) {
      CarregarDados(playerid);
      return 1;
}

public 
OnPlayerDisconnect(playeridreason) {
      SalvarDados(playerid);
      return 1;
}

stock SalvarDados(playerid) {
               format(Filesizeof(File), ContasGetPlayerNameEx(playerid));
               DOF2_SetFloat(File"Vida"PlayerInfo[playerid][Vida]);
               return 1;
}

stock GetPlayerNameEx(playerid) {
     static Name[MAX_PLAYER_NAME];
     GetPlayerName(playeridNameMAX_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;