03/12/2023 20:50
Não tenha vergonha em perguntar, essa aba do fórum serve justamente para isso, tirar dúvidas e dar suporte para dúvidas ou problemas.
Uma função não é uma public (ou melhor, callback) são coisas diferentes, publics são chamadas do próprio servidor, o Pawn funciona em chamados, ou seja, funciona lendo o código de cima para abaixo na ordem e chamando as funções de ordem em ordem.
Criar uma função é fácil, o básico é:
A função que eu dei a dica para criar, é uma função com parametro playerid(o jogador que iremos manipular) e só.
Sendo assim, o seu código deve ser semelhante a isto:
Para evitar um código extenso e sem necessidades, você pode utilizar os enumeradores e resetar ele todo.
A forma acima usando enumeradores, pode ser feito com qualquer enumerador, desde que siga o padrão do código.
Essa é a melhor forma de resetar os dados do jogador na minha opinião, evita aqueles códigos gigantescos e provavelmente é a forma mais rápida e limpa de se fazer.
Os valores padrões das variáveis são:
É isso, qualquer dúvida, fica a vontade de criar um tópico ou perguntar.
Uma função não é uma public (ou melhor, callback) são coisas diferentes, publics são chamadas do próprio servidor, o Pawn funciona em chamados, ou seja, funciona lendo o código de cima para abaixo na ordem e chamando as funções de ordem em ordem.
Criar uma função é fácil, o básico é:
Código PHP:
public OnGameModeInit()
{
MinhaFuncao();
return 1;
}
MinhaFuncao() {
printf("Você usou a funcao 'MinhaFuncao'");
return 1;
}
A função que eu dei a dica para criar, é uma função com parametro playerid(o jogador que iremos manipular) e só.
Código PHP:
Player_Reset(playerid)
{
/*
- Aqui você vai colocar todas as suas variáveis que sejam relacionadas aos jogadores e claro, variáveis globais.
Recomendo também zerar dados do próprio GTA, como dinheiro, score, estilo de luta, estrelas de procurado
*/
return 1;
}
Sendo assim, o seu código deve ser semelhante a isto:
Código PHP:
new player_Money[MAX_PLAYERS];
new player_Level[MAX_PLAYERS];
public OnPlayerDisconnect(playerid, reason)
{
// Toda vez que um jogador desconectar, chamará a função abaixo
Player_Reset(playerid);
return 1;
}
Player_Reset(playerid)
{
player_Money[playerid] = 0;
player_Level[playerid] = 0;
ResetPlayerMoney(playerid);
ResetPlayerWeapons(playerid);
SetPlayerScore(playerid, 0);
SetPlayerWantedLevel(playerid, 0);
SetPlayerFightingStyle(playerid, FIGHT_STYLE_NORMAL);
printf("O jogador %d teve seus dados resetados.", playerid);
return 1;
}
Para evitar um código extenso e sem necessidades, você pode utilizar os enumeradores e resetar ele todo.
Código PHP:
enum playerData {
pID,
pName[MAX_PLAYER_NAME],
pLevel,
pMoney,
pWantedLevel,
pFightStyle
};
new PlayerData[MAX_PLAYERS][playerData];
new dummy_PlayerData[playerData]; // Essa variável tem todos os valores do enumerador 'playerData' padrão.
public OnPlayerDisconnect(playerid, reason) {
Player_Reset(playerid);
return 1;
}
Player_Reset(playerid)
{
PlayerData[playerid] = dummy_PlayerData;
// Agora, aqui você pode resetar as variáveis para um valor padrão do seu GM, nem sempre os valores padrões são 0, ou false
PlayerData[playerid][pID] = -1;
return 1;
}
A forma acima usando enumeradores, pode ser feito com qualquer enumerador, desde que siga o padrão do código.
Essa é a melhor forma de resetar os dados do jogador na minha opinião, evita aqueles códigos gigantescos e provavelmente é a forma mais rápida e limpa de se fazer.
Os valores padrões das variáveis são:
Código PHP:
Inteiros (int) = 0
Texto (string) = '' (Nulo)
Boleano (boolean) = false
Flutuante (float) = 0.0
É isso, qualquer dúvida, fica a vontade de criar um tópico ou perguntar.