Portal SAMP
[Ajuda] Reset Enum's - 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] Reset Enum's (/showthread.php?tid=1651)



Reset Enum's - k2bi_YT - 21/09/2021

Bom dia/tarde/noite, estou com uma duvida que possivelmente é muito simples de ser resolvida.
Existe um meio bem mais optimizado e eficaz, capaz de restar todos as entrelinhas que contem dentro de uma enum de uma vez só?

Exemplo:
Código PHP:
enum EnumReset
{
LinhaUm,
LinhaDois,
Float:LinhaTres,
Bool:LinhaQuatro
}
new 
EnumInfo[EnumReset

No caso, um meio de resetar todas esses dados contido nela de uma vez só, envés de fazer:
Código PHP:
.....
......
EnumInfo[LinhaUm] = 0
EnumInfo
[LinhaDois] = 
Agradeço a compreensão


RE: Reset Enum's - Vel - 21/09/2021

Código:
new reset[EnumReset];
EnumInfo = reset;



RE: Reset Enum's - Smyle - 21/09/2021

Vc pode usar o 'dummy reset'.

Código:
enum EnumReset {
  valorUm,
  valorDois,
  bool:valorTres,
  Float:valorQuatro
}
new EnumInfo[MAX_PLAYERS][EnumReset];

...

public OnPlayerDisconnect(playerid) {
  new resetEnum[EnumReset]
  EnumInfo[playerid] = resetEnum;
}

Também é legal saber que enumeradores são constantes em compile-time e, por isso, é uma convenção de boas práticas usar em caixa alta com o prefixo e_ ou E_ pra tags de impacto forte ou menor no seu código. Além disso os valores sempre são acompanhados com um prefixo do nome do enumerador:

Código:
enum e_ENUM_RESET {
  e_ENUM_RESET_FIRST_VALUE,
  e_ENUM_RESET_SECOND_VALUE,
  ...
}



RE: Reset Enum's - PT_Player - 04/10/2023

Boa noite,

So estou revivendo este topico porque me chamaram no privado do DS pedindo ajuda sobre o mesmo.

Deixo minha solucao para que se alguem mais tenha a mesma duvida n ter de ficar perguntando.

Deixo meu exemplo:
Código:
enum E_PLAYER_DATA
{
    LinhaUm,
    LinhaDois,
    Float:LinhaTres,
    Bool:LinhaQuatro
}
new EnumInfo[MAX_PLAYERS][E_PLAYER_DATA];

for(new i; E_PLAYER_DATA:i < E_PLAYER_DATA; i++)
{
    EnumInfo[playerid][E_PLAYER_DATA:i] = 0;
}

Esta é a melhor solucao que conheço, porem poderao existir mais otimizadas.

Cumprimentos


RE: Reset Enum's - leonardos08bt - 04/10/2023

Código:
enum PLAYER_DATA
{
    Nome[24],
    Dinheiro,
    bool:logado
}
new Enum[MAX_PLAYERS][PLAYER_DATA];

public OnPlayerDisconnect(playerid, reason)
{
    for(new PLAYER_DATA:i; i < PLAYER_DATA; i++) //Pega todo o tamanho da enum
        Enum[playerid][i] = 0; //"Reseta" todas as variáveis da enum independentemente do tipo (int, string, boll).
    return 1;
}