Portal SAMP
[Ajuda] Ajuda com tag - 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] Ajuda com tag (/showthread.php?tid=2842)



Ajuda com tag - BatataDoce - 28/09/2022

Comecei a criar um sistema de admin, mas to enfrentando problema com as tags


Código PHP:
CMD:setadmin(playerid,params[])
{
    new 
id,valor,string[100],Text3D:text[MAX_PLAYERS];
    if(
IsPlayerAdmin(playerid))
    {
        if(
sscanf(params,"ii",id,valor)) return SendClientMessage(playerid,0xFF0000FF,"| Admin |Utilize /daradmin id level(0-5)");
        {
            if(
IsPlayerConnected(id))
            {
                
pinfo[id] [admin] = valor;

                if(
valor == 0)
                {
                    
format(string,100,"| Admin | Você foi removido da equipe admin");
                    
SendClientMessage(id,0x008080FF,string);
                    
Delete3DTextLabel(text[id]);
                }
                if(
valor == 1)
                {
                    
format(string,100,"| Admin | Você agora se tornou 'Estagiário' da equipe!");
                    
SendClientMessage(id,0x008080FF,string);
                    
Delete3DTextLabel(text[id]);
                    
text[id] = Create3DTextLabel("Estagiário"0x008080FF30.040.050.040.00);
                    Attach3DTextLabelToPlayer(text[id], id0.00.00.7);
                }
                if(
valor == 2)
                {
                    
format(string,100,"| Admin | Você agora se tornou 'Ajudante' da equipe!");
                    
SendClientMessage(id,0x008080FF,string);
                    
Delete3DTextLabel(text[id]);
                    
text[id] = Create3DTextLabel("Ajudante"0x008080FF30.040.050.040.00);
                    Attach3DTextLabelToPlayer(text[id], id0.00.00.7);
                }
                if(
valor == 3)
                {
                    
format(string,100,"| Admin | Você agora se tornou 'Moderador' da equipe!");
                    
SendClientMessage(id,0x008080FF,string);
                    
Delete3DTextLabel(text[id]);
                    
text[id] = Create3DTextLabel("Moderador"0x008080FF30.040.050.040.00);
                    Attach3DTextLabelToPlayer(text[id], id0.00.00.7);
                }
                if(
valor == 4)
                {
                    
format(string,100,"| Admin | Você agora se tornou 'Adminstrador' da equipe!");
                    
SendClientMessage(id,0x008080FF,string);
                    
Delete3DTextLabel(text[id]);
                    
text[id] = Create3DTextLabel("Adminstrador"0x008080FF30.040.050.040.00);
                    Attach3DTextLabelToPlayer(text[id], id0.00.00.7);
                }
                if(
valor == 5)
                {
                    
format(string,100,"| Admin | Você agora se tornou 'Gestor' da equipe!");
                    
SendClientMessage(id,0x008080FF,string);
                    
Delete3DTextLabel(text[id]);
                    
text[id] = Create3DTextLabel("Gestor"0x008080FF30.040.050.040.00);
                    Attach3DTextLabelToPlayer(text[id], id0.00.00.7);
                }

            }
        }
    }
    else 
SendClientMessage(playerid,0xFF0000FF,"[>>]Erro");
    return 
1;



O problema seria é que quando eu seto adm pra min, a tag vem pra min, mas quando eu seto tbm em outra pessoa, a minha tag é excluída


obs: to usando Delete3DTextLabel(text[id]) para caso eu queira setar outro cargo pra min,n fique 2 tag em cima da outra


RE: Ajuda com tag - Vel - 28/09/2022

Basta mover a variável "text" pra fora do comando.
E eu recomendaria mudar o nome também.


RE: Ajuda com tag - xbruno1000x - 28/09/2022

Por que deletar e criar uma tag nova? Já tentou usar o Update3DTextLabelText?
Essa função permite atualizar o texto do 3DTextLabel, acredito que seja melhor para o seu propósito.

Documentação:
https://open.mp/pt-br/docs/scripting/functions/Update3DTextLabelText


RE: Ajuda com tag - Device-Black - 28/09/2022

Voce pode usar chatbubble tambem


RE: Ajuda com tag - CoelhaO_LokaO - 28/09/2022

Código PHP:
new Text3D:text[MAX_PLAYERS];

enum admnivel{
    
id_admin,
    
nome_admin[13]
}
new 
chamaadm[][admnivel] = {
    {
0,"Nenhum"},
    {
1,"Estagiário"},
    {
2,"Ajudante"},
    {
3,"Moderador"},
    {
4,"Adminstrador"},
    {
5,"Gestor"}

}



CMD:setadmin(playerid,params[])
{
    new id,valor,string[100];
    if(IsPlayerAdmin(playerid))
    {
        if(sscanf(params,"ii",id,valor)) return SendClientMessage(playerid,0xFF0000FF,"| Admin |Utilize /daradmin id level(0-5)");
        {
            if(IsPlayerConnected(id))
            {
                pinfo[id] [admin] = valor;

                if(pinfo[id] [admin] > 0){
                    new teste[200];
                    format(testesizeof(teste), "%s" chamaadm[valor][nome_admin]);

                    text[id] = Create3DTextLabel(teste0x008080FF30.040.050.040.00);
                    Attach3DTextLabelToPlayer(text[id], id0.00.00.7);
                }

            }
        }
    }
    else SendClientMessage(playerid,0xFF0000FF,"[>>]Erro");
    return 1;




RE: Ajuda com tag - White_Blue - 28/09/2022

(28/09/2022 16:07)Device-Black Escreveu: Voce pode usar chatbubble tambem

SetPlayerChatBubble pelo que eu sei é para quando um player digitar aparecer a mensagem sob a cabeça do personagem.


RE: Ajuda com tag - Device-Black - 29/09/2022

(28/09/2022 20:19)White_Blue Escreveu:
(28/09/2022 16:07)Device-Black Escreveu: Voce pode usar chatbubble tambem

SetPlayerChatBubble pelo que eu sei é para quando um player digitar aparecer a mensagem sob a cabeça do personagem.

Sim... Mas não é exclusivo do OnPlayerText, funciona perfeitamente pro caso


RE: Ajuda com tag - BatataDoce - 30/09/2022

(28/09/2022 18:26)CoelhaO_LokaO Escreveu:
Código PHP:
new Text3D:text[MAX_PLAYERS];

enum admnivel{
    
id_admin,
    
nome_admin[13]
}
new 
chamaadm[][admnivel] = {
    {
0,"Nenhum"},
    {
1,"Estagiário"},
    {
2,"Ajudante"},
    {
3,"Moderador"},
    {
4,"Adminstrador"},
    {
5,"Gestor"}

}



CMD:setadmin(playerid,params[])
{
    new id,valor,string[100];
    if(IsPlayerAdmin(playerid))
    {
        if(sscanf(params,"ii",id,valor)) return SendClientMessage(playerid,0xFF0000FF,"| Admin |Utilize /daradmin id level(0-5)");
        {
            if(IsPlayerConnected(id))
            {
                pinfo[id] [admin] = valor;

                if(pinfo[id] [admin] > 0){
                    new teste[200];
                    format(testesizeof(teste), "%s" chamaadm[valor][nome_admin]);

                    text[id] = Create3DTextLabel(teste0x008080FF30.040.050.040.00);
                    Attach3DTextLabelToPlayer(text[id], id0.00.00.7);
                }

            }
        }
    }
    else SendClientMessage(playerid,0xFF0000FF,"[>>]Erro");
    return 1;



Eu fiz uma alteração tendo em mente isso oq vc mandou, mas mesmo assim, não funiona, eu coloco a tag em min, dps quando vou colocar em outra pessoa, a minha tag é excluída, só n entendo o pq já pq a variável já é diferente

Código PHP:
CMD:setadmin(playerid,params[])
{
    if(
IsPlayerAdmin(playerid))
    {
        new 
valor;
        if(
sscanf(params,"ii",idtag,valor)) return SendClientMessage(playerid,0xFF0000FF,"| Admin |Utilize /daradmin id level(0-5)");
        {
            if(
IsPlayerConnected(idtag))
            {
                
pinfo [idtag] [admin] = valor;

                if(
pinfo [idtag] [admin] == 0)
                {
                    
Delete3DTextLabel(tagadm[idtag]);
                    return 
1;
                }

                if(
pinfo[idtag] [admin] > 0  && pinfo[idtag] [admin] < 5)
                {

                    new teste[200];
                    format(testesizeof(teste), "%s",GetAdmin(idtag));
                    Delete3DTextLabel(tagadm[idtag]);

                    tagadm[idtag] = Create3DTextLabel(teste0x008080FF30.040.050.040.00);

        
            Attach3DTextLabelToPlayer(tagadm[idtag], idtag0.00.00.7);
                    return 1;
                }
                else SendClientMessage(playerid0xFF0000FF"| Admin |Escolha um level de 0 a 5");

            }
            else 
SendClientMessage(playerid0xFF0000FF"| Admin |Jogador não encontrado.");
        }
    }
    else 
SendClientMessage(playerid,0xFF0000FF,"[>>]Erro");
    return 
1;




RE: Ajuda com tag - White_Blue - 30/09/2022

Código PHP:
CMD:setadmin(playeridparams[]) { 
  new 
plidniveltag[128], Text3D:tagg[MAX_PLAYERS];
  if(
sscanf(params"ud"plidnivel)) return SendClientMessage(playerid, -1"Use: /setadmin [playerid] [nível]");
  if(!
IsPlayerConnected(plid)) return SendClientMessage(playerid, -1"| Admin |Jogador não encontrado");
  
  if(
nivel && nivel 6) {
  switch(
nivel) {
  case 
1tag "Helper";
  case 
2tag "Mod";
  case 
3tag "Adm";
 }
    } else 
pinfo[plid][admin] = 0Delete3DTextLabel(plidtagg[plid]);

  
  
pinfo[plid][admin] = nivel;
  
tagg[plid] = Create3DTextLabel(tag, -130.040.050.00);
  
Attach3DTextLabelToPlayer(tagg[plid], plid0.00.00.7);
  return 
1;



Refiz o comando, teste e veja se funciona.


RE: Ajuda com tag - Device-Black - 01/10/2022

Tambem tem esse modo
https://pastebin.com/3425ARHd