Portal SAMP
[Ajuda] Como enviar mensagens apenas pra admins - 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] Como enviar mensagens apenas pra admins (/showthread.php?tid=2979)



Como enviar mensagens apenas pra admins - Moltres - 11/11/2022

Como eu faço pra enviar uma mensagen apenas pros administradores do servidor quando algum deles executar um comando?
tipo "admin aviso: administrador fulano usou o comando tal"


RE: Como enviar mensagens apenas pra admins - White_Blue - 11/11/2022

Basta fazer uma verificação para quando o player digitar um comando.

Teste e veja se funciona assim:
Código PHP:
public OnPlayerCommandReceived(playeridcmd[], params[], flags) { // Em Pawn.CMD
  
new str[128];
  for(new 
0MAX_PLAYERSi++) {
  if(
admin[i] >= 1) { // Use a variável do seu sistema de admin.
   
format(strsizeof(str), "O(A) Jogador(a) %s[%d] digitou o comando %s!"GetPlayerNameEx(playerid), playeridcmd);
   
SendClientMessage(i, -1str);
  }
}
  return 
1;
}

stock GetPlayerNameEx(playerid) {
   static 
PlayerName[MAX_PLAYER_NAME];
   
GetPlayerName(playeridPlayerNameMAX_PLAYER_NAME);
   return 
PlayerName;




RE: Como enviar mensagens apenas pra admins - Moltres - 11/11/2022

(11/11/2022 21:39)White_Blue Escreveu: Basta fazer uma verificação para quando o player digitar um comando.

Teste e veja se funciona assim:
Código PHP:
public OnPlayerCommandReceived(playeridcmd[], params[], flags) { // Em Pawn.CMD
  new str[128];
  for(new 0MAX_PLAYERSi++) {
  if(admin[i] >= 1) { // Use a variável do seu sistema de admin.
   format(strsizeof(str), "O(A) Jogador(a) %s[%d] digitou o comando %s!"GetPlayerNameEx(playerid), playeridcmd);
   SendClientMessage(i, -1str);
  }
}
  return 1;
}

stock GetPlayerNameEx(playerid) {
   static PlayerName[MAX_PLAYER_NAME];
   GetPlayerName(playeridPlayerNameMAX_PLAYER_NAME);
   return PlayerName;

deu esses erros:

error 028: invalid subscript (not an array or too many subscripts): "admin"
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


RE: Como enviar mensagens apenas pra admins - xbruno1000x - 11/11/2022

(11/11/2022 22:19)Moltres Escreveu:
(11/11/2022 21:39)White_Blue Escreveu: Basta fazer uma verificação para quando o player digitar um comando.

Teste e veja se funciona assim:
Código PHP:
public OnPlayerCommandReceived(playeridcmd[], params[], flags) { // Em Pawn.CMD
  new str[128];
  for(new 0MAX_PLAYERSi++) {
  if(admin[i] >= 1) { // Use a variável do seu sistema de admin.
   format(strsizeof(str), "O(A) Jogador(a) %s[%d] digitou o comando %s!"GetPlayerNameEx(playerid), playeridcmd);
   SendClientMessage(i, -1str);
  }
}
  return 1;
}

stock GetPlayerNameEx(playerid) {
   static PlayerName[MAX_PLAYER_NAME];
   GetPlayerName(playeridPlayerNameMAX_PLAYER_NAME);
   return PlayerName;

deu esses erros:

error 028: invalid subscript (not an array or too many subscripts): "admin"
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

Você precisa adaptar suas variáveis ao comando. Provavelmente essa variável de admin do White Blue não é igual a do seu gamemode.


RE: Como enviar mensagens apenas pra admins - Carlos Victor - 12/11/2022

Altera a variável usada `suaVar` para variável administrativa da sua gamemode.

Código:
CMD:teste(playerid)
{
    new
        string[128], name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof(name));

    format(string, sizeof(string), "[ADMIN]: %s executou o comando /teste.", name);
    SendAdminMessage(0xFF6347FF, string);
    return 1;
}

stock SendAdminMessage(color, const string[])
{
    for(new i = 0, j = GetPlayerPoolSize(); i <= j; i++) if(IsPlayerConnected(i) && suaVar[i] > 0) {
        SendClientMessage(i, color, string)
    }
    return 1;
}

Existem outros meios mais otimizados do que esse, porém acredito que atualmente pra você é uma boa base pra mergulhar nos loopings.

Basicamente a função SendAdminMessage faz um looping em todos os jogadores conectados e caso a variável suaVar for acima de 0, ou seja 1, 2, 3, 4, 5... Irá mandar mensagem para estes jogadores.


RE: Como enviar mensagens apenas pra admins - Mateus Lima - 13/11/2022

(11/11/2022 21:10)Moltres Escreveu: Como eu faço pra enviar uma mensagen apenas pros administradores do servidor quando algum deles executar um comando?
tipo "admin aviso: administrador fulano usou o comando tal"

bem amigo você deveria ler um pouco mais ou tentar procurar, porém vamos lá.

playerid -> ID do jogador a enviar a mensagem, Portanto é o ID de um Jogador, usando essa logica basta pegar todos os ID's dos administradores online, não faço ideia como está as variáveis de sua gamemode, mas basta pegar a variável de um jogador que demonstra que ele é adminstrador e use com um LOOP para checar cada player que não está ausente. por exemplo:

for(new i; i < MAX_PLAYERS; ++i)
{
           if(fulano_admin[i]) //bool
           {
                  // é admin..
           }
}


RE: Como enviar mensagens apenas pra admins - Moltres - 15/11/2022

Funcionou, vlw gente