Portal SAMP
[Ajuda] Sistema de whitelist(por nick) - 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] Sistema de whitelist(por nick) (/showthread.php?tid=2659)



Sistema de whitelist(por nick) - fear - 13/08/2022

Boa noite. um tempo atrás eu postei pedindo um sistema de whitelist porém me mandaram por id que serviria mais para um rp e não outro servidor de outro modo como o meu...

porém eu queria mudar ele para nick e saber se dessa forma que ele me passou funciona certinho eu liberando dentro do jogo sem precisar reiniciar nem nada.. ou ter alguma pasta para armazenar os nicks liberados.

CODIGO:

Código PHP:
enum InfoPlayers
{

    
bool:Whitelist false

};
new 
SInfoPlayers[MAX_PLAYERS][InfoPlayers]; 

Código PHP:
if(SInfoPlayers[playerid][Whitelist] == false && !IsPlayerAdmin(playerid))
    {
        
SendClientMessage(playerid, -1"Voce nao fez whitelist, va em nosso discord e digite seu nick no canal whitelist!");
        
Kick(playerid);
    }
    else
    {
        
SendClientMessage(playerid, -1"Voce passou pela whitelist, bom jogo!");
    } 



Código PHP:
CMD:liberarwl(playeridparams[])
{
    if(
ChecarPermissoes(playerid)) return 1;
    if(
AdmServer(playerid2)) return 1;
    
    if(
sscanf(params"u"ID)) return SendClientMessage(playerid, -1"Você digitou o comando errado!");
    if(!
IsPlayerConnected(ID)) return SendClientMessage(playerid, -1"O ID digitado não está no servidor!");
    if(
ID == INVALID_PLAYER_ID) return SendClientMessage(playerid, -1"ID invalido!");

    if(
IsPlayerAdmin(playerid))
    {
        new 
Name[MAX_PLAYER_NAME];
        
GetPlayerName(IDNamesizeof(Name));
        
format(Stringsizeof(String), "Voce passou o player [%s] na whitelist!"Name);
        
SendClientMessage(playerid, -1String);
        
SInfoPlayers[ID][Whitelist] = true;
    }
    return 
1;


OBS: Não utilizei o mesmo post por fazer muito tempo e não quebrar alguma regra do portal.


RE: Sistema de whitelist(por nick) - xbruno1000x - 13/08/2022

Com essa stock abaixo você poderá obter o ID do player através do nome. Você pode adaptar o comando /liberarwl para ser com o nome através dessa stock. O restante do sistema continuaria funcionando da mesma forma como é atualmente.

Código:
GetPlayerIDByName(const name[]) {
  new playerid = INVALID_PLAYER_ID;
  return sscanf(name, "r", playerid), playerid;
}



RE: Sistema de whitelist(por nick) - fear - 14/08/2022

(13/08/2022 23:28)xbruno1000x Escreveu: Com essa stock abaixo você poderá obter o ID do player através do nome. Você pode adaptar o comando /liberarwl para ser com o nome através dessa stock. O restante do sistema continuaria funcionando da mesma forma como é atualmente.

Código:
GetPlayerIDByName(const name[]) {
  new playerid = INVALID_PLAYER_ID;
  return sscanf(name, "r", playerid), playerid;
}

Amigo não entendi como faço pra modificar o cmd para ele liberar somente pelo nick kkk so lerdo desculpa


RE: Sistema de whitelist(por nick) - ipsLuan - 14/08/2022

Vamos seguindo pela lógica de programação...

Para liberar por nome, você precisa primeiro obter a string do nome, após isso verificar com seu sistema de salvamento (seja DOF2 ou algum SQL) e verificar se tal conta existe.
Se existindo, altera as propriedades e ativa/desativa a white list.

Lembrando que deve fazer também uma verificação por ID, visto que se o jogador estiver online, o comportamento acima pode não funcionar direito.

Conseguiu entender?