Armas - escobarzinhu - 22/03/2024
alguem sabe fazer stock de salvamento de armas vida e colete? e uma stock de carregamento
RE: Armas - Ryzen_ - 22/03/2024
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) { new Float:health, Float:armour;
PlayerInfo[playerid][pColete] = GetPlayerArmour(playerid, armour); PlayerInfo[playerid][pVida] = GetPlayerHealth(playerid, 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_SetFloat(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_GetFloat(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
RE: Armas - White_Blue - 22/03/2024
(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.
RE: Armas - escobarzinhu - 22/03/2024
error 001: expected token: ",", but found ";" nao achei onde ta faltando a ,
RE: Armas - Calasans - 22/03/2024
(22/03/2024 05:21)escobarzinhu Escreveu: error 001: expected token: ",", but found ";" nao achei onde ta faltando a ,
É na definição:
Código PHP: #define PASTA_CONTAS "/Contas/%s.ini";
Não tem lógica possuir ; no final. Use assim:
Código PHP: #define PASTA_CONTAS "/Contas/%s.ini"
RE: Armas - escobarzinhu - 22/03/2024
PlayerInfo[playerid][pColete] = GetPlayerArmour(playerid, &Float:armour);
PlayerInfo[playerid][pVida] = GetPlayerHealth(playerid, &Float:health); ta certo isso?
RE: Armas - Ryzen_ - 22/03/2024
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.
(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.
RE: Armas - escobarzinhu - 22/03/2024
eu adaptei pra minha gm, mas ta dando 4 erros,
error 028: invalid subscript (not an array or too many subscripts): "Info"
warning 215: expression has no effect
error 001: expected token: ";", but found "]"
error 029: invalid expression, assumed zero
fatal error 107: too many error messages on one line
consegue ajudar?
RE: Armas - Ryzen_ - 22/03/2024
(22/03/2024 15:01)escobarzinhu Escreveu: eu adaptei pra minha gm, mas ta dando 4 erros,
error 028: invalid subscript (not an array or too many subscripts): "Info"
warning 215: expression has no effect
error 001: expected token: ";", but found "]"
error 029: invalid expression, assumed zero
fatal error 107: too many error messages on one line
consegue ajudar?
Consegue enviar as respectivas linhas que estão causando o erro? (Não lembro se o pawno mostra quais são. Atualmente utilizo o VSCODE, o qual recomendo)
RE: Armas - escobarzinhu - 22/03/2024
(22/03/2024 15:06)Ryzen_ Escreveu: (22/03/2024 15:01)escobarzinhu Escreveu: eu adaptei pra minha gm, mas ta dando 4 erros,
error 028: invalid subscript (not an array or too many subscripts): "Info"
warning 215: expression has no effect
error 001: expected token: ";", but found "]"
error 029: invalid expression, assumed zero
fatal error 107: too many error messages on one line
consegue ajudar?
Consegue enviar as respectivas linhas que estão causando o erro? (Não lembro se o pawno mostra quais são. Atualmente utilizo o VSCODE, o qual recomendo)
ta tudo nessa linha
Info[playerid][pColete] = GetPlayerArmour(playerid, armour);
o codigo completo
new Float:health, Float:armour;
Info[playerid][pColete] = GetPlayerArmour(playerid, armour);
Info[playerid][pVida] = GetPlayerHealth(playerid, health);
SaveAccount(playerid);
|