Portal SAMP
[Ajuda] Sistema de tag no Chat Para VIPs - 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 tag no Chat Para VIPs (/showthread.php?tid=1083)

Páginas: 1 2


RE: Sistema de tag no Chat Para VIPs - k2bi_YT - 14/04/2021

(14/04/2021 11:36)k2bi_YT Escreveu: Cara não testei esse code, mas vê se funciona.
Como eu só sei usar a include DOF2, então creio que a ZN deve ser o mesmo esquema, então fiz ela para pegar um valor hexadecimal.
ZN_GetHex (caso não for GetHex, consulte a lista da include para obter um valor hexadecimal).

Código PHP:
if(Vip[playerid] != 0)
{
    new string[256];
    new cor ZN_GetHex(string"CorVIP");
    printf("[CHAT] %s: [%d] %s"PlayerName(playerid), playeridtext);
    format(stringsizeof(string), "%s:[%02d {%06x}VIP{FFFFFF}] %s"PlayerName(playerid), playeridcor>>>8text);
    SendClientMessageToAll(-1string);


Relembrando, para que a cor funcione corretamente, ela deve ser salva no formato correto. Exemplo: 0xFFFFFFAA (Branco)

Aqui, você deve direcionar a variavel "string" para a pasta onde ele ira pegar a cor VIP, no code que eu fiz, ele não está direcionado onde pegar a CorVip.

Código PHP:
new string
new cor ZN_GetHex(string"CorVIP"); 
Você deve direcionar na pasta, nessa linha


RE: Sistema de tag no Chat Para VIPs - LeleziiN - 14/04/2021

(14/04/2021 13:23)k2bi_YT Escreveu:
(14/04/2021 11:36)k2bi_YT Escreveu: Cara não testei esse code, mas vê se funciona.
Como eu só sei usar a include DOF2, então creio que a ZN deve ser o mesmo esquema, então fiz ela para pegar um valor hexadecimal.
ZN_GetHex (caso não for GetHex, consulte a lista da include para obter um valor hexadecimal).

Código PHP:
if(Vip[playerid] != 0)
{
    new string[256];
    new cor ZN_GetHex(string"CorVIP");
    printf("[CHAT] %s: [%d] %s"PlayerName(playerid), playeridtext);
    format(stringsizeof(string), "%s:[%02d {%06x}VIP{FFFFFF}] %s"PlayerName(playerid), playeridcor>>>8text);
    SendClientMessageToAll(-1string);


Relembrando, para que a cor funcione corretamente, ela deve ser salva no formato correto. Exemplo: 0xFFFFFFAA (Branco)

Aqui, você deve direcionar a variavel "string" para a pasta onde ele ira pegar a cor VIP, no code que eu fiz, ele não está direcionado onde pegar a CorVip.

Código PHP:
new string
new cor ZN_GetHex(string"CorVIP"); 
Você deve direcionar na pasta, nessa linha

Eu não fiz essa parte para criar a pasta das cores, poderia da um exemp´lo pfvr

Mano mim chama no discord

Discord: LeleziiN#6392


RE: Sistema de tag no Chat Para VIPs - k2bi_YT - 14/04/2021

Não é preciso criar pasta de cores. Na sua primeira postagem estava o seguinte code:
Código PHP:
format(stringsizeof(string), "%s"PlayerName(playerid));
        new 
cor ZN_GetInt(string"CorVIP");
        if(
cor == 1

Então, crio que a "CorVIP", vai ser pega na 'string', que está direcionada no nick do jogador. creio que as contas dos jogadores estão sendo criada direto na scriptfile envés de uma subpasta.

Caso não tenha, Cria uma nova linha onde salva/carrega as informações do player, definindo a 'CorVip', feito isso basta carregar a variavel que ira armazenar o valor hexadecimal.


RE: Sistema de tag no Chat Para VIPs - LeleziiN - 15/04/2021

(14/04/2021 19:12)k2bi_YT Escreveu: Não é preciso criar pasta de cores. Na sua primeira postagem estava o seguinte code:
Código PHP:
format(stringsizeof(string), "%s"PlayerName(playerid));
        new cor ZN_GetInt(string"CorVIP");
        if(cor == 1

Então, crio que a "CorVIP", vai ser pega na 'string', que está direcionada no nick do jogador. creio que as contas dos jogadores estão sendo criada direto na scriptfile envés de uma subpasta.

Caso não tenha, Cria uma nova linha onde salva/carrega as informações do player, definindo a 'CorVip', feito isso basta carregar a variavel que ira armazenar o  valor hexadecimal.

Não mano as costas dos jogadores estão sendo criadas dentro de uma subpasta, e essa forma se eu não mim engano eu testei mais não funfou
Código PHP:
format(stringsizeof(string), "%s"PlayerName(playerid));
        new cor ZN_GetInt(string"CorVIP");
        if(cor == 1



RE: Sistema de tag no Chat Para VIPs - k2bi_YT - 15/04/2021

Se estão estão sendo criada dentro de uma subpasta, você deve redirecionar a ele então amigo

Exemplo:
Código PHP:
format(stringsizeof(string), "nome__subpasta/%s."PlayerName(playerid)); 

Use o mesmo redirecionamento que é usado para carregar/salvar a conta do jogador. E defina o formato do arquivo: .ini / .cfg (dependendo do tipo de salvamento)....

Exemplo de como deve ser:
Código PHP:
format(stringsizeof(string), "Contas/%s.ini"PlayerName(playerid)); 

Desse modo, o sistema ira entrar na seguintes pasta: scriptfile >> Contas >> LeleziiN.ini

Isso é, se a linha 'CorVip', for salva junto com as informações do player


RE: Sistema de tag no Chat Para VIPs - LeleziiN - 18/04/2021

Poderiam mim ajudar pfvr

Comando se setar e retirar o VIP
Código PHP:
if(!strcmp(cmd"/setarvip"true))
    {
        if(!VerificarADMaster(playerid)) return SendClientMessage(playeridCORX1"| ERRO | Você não é um administrador(a) master!");
         if(
VerificarADM(playerid) == 1)
    
    {
    
        if(VerificarADMaster(playerid) == 1)
    
        {
            
    new tmp[256], S[128], Nick[256], HorasTotal 0;
            
    tmp strtok(cmdtextidx);
            
    Nick tmp;
            
    tmp strtok(cmdtextidx);
            
    Horas strval(tmp);
            
    if(!strlen(tmp)) return SendClientMessage(playeridCOR_MARA7"/SetarVip [ Nick ] [ Horas ]");
        
           if(!udb_Exists(Nick))
                {
                
    format(Ssizeof(S), "| ERRO | A conta '%s' não existe!"Nick);
                    
SendClientMessage(playeridCORX1S);
                    return 
1;
                }
                if(
dUserINT(Nick).("HorasVIP") != 0)
                {
                    if(!
dini_Exists("RelatorioAdministrativo/Colocar_e_Retirar_VIPS.txt"))
                        
dini_Create("RelatorioAdministrativo/Colocar_e_Retirar_VIPS.txt");

                    new 
string[300], File:RelatorioHoraMinutoSegundoDiaMesAno;
                    
getdate(AnoMesDia);
                    
gettime(HoraMinutoSegundo);

                    
format(stringsizeof(string), "O Jogador %s já tinha %d horas de VIP, foram adicionadas mais %d horas pelo administrador %s - %02d/%02d/%02d | %02d:%02d:%02d"NickdUserINT(Nick).("HorasVIP"), HorasNJogador(playerid), DiaMesAnoHoraMinutoSegundo);

                    
Relatorio fopen("RelatorioAdministrativo/Colocar_e_Retirar_VIPS.txt"io_append);
                    
fwrite(Relatoriostring);
                    
fwrite(Relatorio"\r\n");
                    
fclose(Relatorio);

                    
Total dUserINT(Nick).("HorasVIP") + Horas;

                    
dUserSetINT(Nick).("HorasVIP"Total);

                    
format(Ssizeof(S), ""#TAG_ADMINFO" O Jogador %s já tinha %d horas de VIP, portanto, foram adicionadas mais %d horas (totalizando %d horas de uso)!", Nick, dUserINT(Nick).("HorasVIP"), Horas, Total);
                    
SendClientMessage(playeridAzulS);
                    for(new 
0MAX_PLAYERS++)
                    {
                
        if(strcmp(PlayerName(I), Nicktrue) == 0)
                
        {
                            
Vip[I] = Total;
                            
dUserSetINT(Nick).("HorasVIP"Vip[I]);
                
        }
                    }
                }
                else
                {
                    if(!
dini_Exists("RelatorioAdministrativo/Colocar_e_Retirar_VIPS.txt"))
                        
dini_Create("RelatorioAdministrativo/Colocar_e_Retirar_VIPS.txt");

                    new 
string[300], File:RelatorioHoraMinutoSegundoDiaMesAno;
                    
getdate(AnoMesDia);
                    
gettime(HoraMinutoSegundo);

                    
format(stringsizeof(string), "Foram setadas %d horas de VIP para o jogador %s pelo administrador %s - %02d/%02d/%02d | %02d:%02d:%02d"HorasNickNJogador(playerid), DiaMesAnoHoraMinutoSegundo);

                    
Relatorio fopen("RelatorioAdministrativo/Colocar_e_Retirar_VIPS.txt"io_append);
                    
fwrite(Relatoriostring);
                    
fwrite(Relatorio"\r\n");
                    
fclose(Relatorio);

                    
Total dUserINT(Nick).("HorasVIP") + Horas;

                    
dUserSetINT(Nick).("HorasVIP"Total);

                    
format(Ssizeof(S), ""#TAG_ADMINFO" Foram setadas %d horas de VIP para o jogador %s", Horas, Nick);
                    
SendClientMessage(playeridAzulS);

                    for(new 
0MAX_PLAYERS++)
                    {
                
        if(strcmp(PlayerName(I), Nicktrue) == 0)
                
        {
                            
Vip[I] = Total;
                            
dUserSetINT(Nick).("HorasVIP"Vip[I]);
                
        }
                    }
                }
             }
            else
            {
            
    SendClientMessage(playeridCORX1"| ERRO | Você não é administrador(a)");
               }
        }
        else
        {
        
    SendClientMessage(playeridCORX1"| ERRO | Você não é um administrador(a) master!");
          }
        return 
1;
    }

    if(!
strcmp(cmd"/retirarvip"true))
    {
        if(!VerificarADMaster(playerid)) return SendClientMessage(playeridCORX1"| ERRO | Você não é um administrador(a) master!");
    
    if(VerificarADM(playerid) == 1)
    
    {
    
        if(VerificarADMaster(playerid) == 1)
    
        {
            
    new tmp[256], S[128], Nick[256], HorasTotal 0;
            
    tmp strtok(cmdtextidx);
            
    Nick tmp;
            
    tmp strtok(cmdtextidx);
            
    Horas strval(tmp);
            
    if(!strlen(tmp)) return SendClientMessage(playeridCOR_MARA7"/RetirarVip [nick] [horas]");
        
           if(!udb_Exists(Nick))
                {
                
    format(Ssizeof(S), "| ERRO | A conta '%s' não existe!"Nick);
                    
SendClientMessage(playeridCORX1S);
                    return 
1;
                }
                if(
Horas 0Horas 0;
                if(
Horas == 0)
                {
                
    SendClientMessage(playeridCORX1"| ERRO | Valor não aceitável.");
                
    return 1;
        
          }
                if(
dUserINT(Nick).("HorasVIP") <= 0)
                {
                    
SendClientMessage(playeridCORX1"| ERRO | Esse jogador não tem VIP!");
                    return 
1;
                }
                
Total dUserINT(Nick).("HorasVIP") - Horas;
                if(
Total <= 0)
                {
                    
format(Ssizeof(S), ""#TAG_ADMINFO" Todas as horas de VIP do jogador %s retirado.", Nick);
                    
SendClientMessage(playeridAzulS);
                    
dUserSetINT(Nick).("HorasVIP"Vip[playerid]);
                    if(!
dini_Exists("RelatorioAdministrativo/Colocar_e_Retirar_VIPS.txt"))
                        
dini_Create("RelatorioAdministrativo/Colocar_e_Retirar_VIPS.txt");

                    new 
string[300], File:RelatorioHoraMinutoSegundoDiaMesAno;
                    
getdate(AnoMesDia);
                    
gettime(HoraMinutoSegundo);

                    
format(stringsizeof(string), "Todas as horas de VIP do jogador %s foram retiradas pelo administrador %s - %02d/%02d/%02d | %02d:%02d:%02d"NickNJogador(playerid), DiaMesAnoHoraMinutoSegundo);

                    
Relatorio fopen("RelatorioAdministrativo/Colocar_e_Retirar_VIPS.txt"io_append);
                    
fwrite(Relatoriostring);
                    
fwrite(Relatorio"\r\n");
                    
fclose(Relatorio);
                    for(new 
0MAX_PLAYERS++)
                    {
                
        if(strcmp(PlayerName(I), Nicktrue) == 0)
                
        {
                            
Vip[I] = 0;
                            
dUserSetINT(Nick).("HorasVIP"Vip[I]);
                
        }
                    }
                }
                else
                {
                    
format(Ssizeof(S), ""#TAG_ADMINFO" Foram retiradas %d horas de VIP do jogador %s", Horas, Nick);
                    
SendClientMessage(playeridAzulS);
                    
dUserSetINT(Nick).("HorasVIP"Vip[playerid]);
                    if(!
dini_Exists("RelatorioAdministrativo/Colocar_e_Retirar_VIPS.txt"))
                        
dini_Create("RelatorioAdministrativo/Colocar_e_Retirar_VIPS.txt");

                    new 
string[300], File:RelatorioHoraMinutoSegundoDiaMesAno;
                    
getdate(AnoMesDia);
                    
gettime(HoraMinutoSegundo);

                    
format(stringsizeof(string), "Foram retiradas %d horas do jogador %s administrador %s - %02d/%02d/%02d | %02d:%02d:%02d"HorasNickNJogador(playerid), DiaMesAnoHoraMinutoSegundo);

                    
Relatorio fopen("RelatorioAdministrativo/Colocar_e_Retirar_VIPS.txt"io_append);
                    
fwrite(Relatoriostring);
                    
fwrite(Relatorio"\r\n");
                    
fclose(Relatorio);
                    for(new 
0MAX_PLAYERS++)
                    {
                
        if(strcmp(PlayerName(I), Nicktrue) == 0)
                
        {
                            
Vip[I] = Total;
                            
dUserSetINT(Nick).("HorasVIP"Vip[I]);
                
        }
                    }
                }
            }
            else
            {
            
    SendClientMessage(playeridCORX1"| ERRO | Você não é administrador(a)");
               }
        }
        else
        {
        
    SendClientMessage(playeridCORX1"| ERRO | Você não é um administrador(a) master!");
          }
        return 
1;
    } 

No chat não muda a cor do tag VIP, mais na msg que informa que a cor do tag foi mudada funciona
[Imagem: sa-mp-006.png]


RE: Sistema de tag no Chat Para VIPs - LeleziiN - 19/04/2021

Poderia mim ajudar Pfvr


RE: Sistema de tag no Chat Para VIPs - LeleziiN - 19/04/2021

Conseguir resolver o problema fiz de outra forma e funfou normal


RE: Sistema de tag no Chat Para VIPs - LeleziiN - 20/04/2021

Sistema Atualizado agora contendo varias cores e sem nenhum bug