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



Poblema com OnPlayerText - Cifra Modder - 10/10/2023

Alguém me ajuda com isso:
Código:
    //SE ELE NAO FOR ADMIN E NAO FOR VIP↓
    if(InfoConta[playerid][Admin] == 0 || InfoConta[playerid][Vips] == 0)
    {
        new string[256];
        format(string, sizeof(string),"%s[%d]: %s", PlayerName(playerid), playerid, text);
        JogadoresProximo(6.0, playerid, string, -1, -1, -1, -1, -1);
        return 0;
    }
    //AGORA SE ELE NAO FOR ADMIN TBM E ELE FOR VIP↓
    else if(InfoConta[playerid][Admin] == 0 || InfoConta[playerid][Vips] > 0)
    {
        new string[256];
        format(string, sizeof(string),"[%s{FFFFFF}]%s[%d]: %s", NomeTagVip(InfoConta[playerid][Vips]), PlayerName(playerid), playerid, text);
        JogadoresProximo(6.0, playerid, string, -1, -1, -1, -1, -1);
        return 0;
    }
    //AGORA SE ELE FOR ADMIN E ELE NAO TIVER VIP↓
    else if(InfoConta[playerid][Admin] > 0 && InfoConta[playerid][Vips] == 0)
    {
        new string[256];
        format(string, sizeof(string),"[%s{FFFFFF}]%s[%d]: %s", NomeCargoAdmin(InfoConta[playerid][Admin]), PlayerName(playerid), playerid, text);
        JogadoresProximo(6.0, playerid, string, -1, -1, -1, -1, -1);
        return 0;
    }
    //AGORA SE ELE TIVER ADMIN E TIVER VIP↓
    else if(InfoConta[playerid][Admin] > 0 || InfoConta[playerid][Vips] > 0)
    {
        new string[256];
        format(string, sizeof(string),"[%s{FFFFFF}][%s{FFFFFF}]%s[%d]: %s", NomeCargoAdmin(InfoConta[playerid][Admin]), NomeTagVip(InfoConta[playerid][Vips]), PlayerName(playerid), playerid, text);
        JogadoresProximo(6.0, playerid, string, -1, -1, -1, -1, -1);
        return 0;
    }
    //AGORA SE ELE TIVER ADMIN E NAO TIVER TRABALHANDO E NAO TIVER VIP↓
    else if(InfoConta[playerid][Admin] > 0 || AdminTrabalhando[playerid] == 0 || InfoConta[playerid][Vips] == 0)
    {
        new string[256];
        format(string, sizeof(string),"[%s{FFFFFF}]%s[%d]: %s", NomeCargoAdmin(InfoConta[playerid][Admin]), PlayerName(playerid), playerid, text);
        JogadoresProximo(6.0, playerid, string, -1, -1, -1, -1, -1);
        return 0;
    }
    //AGORA SE ELE FOR ADMIN E NAO TIVER TRABALHANDO E TIVER VIP↓
    else if(InfoConta[playerid][Admin] > 0 || AdminTrabalhando[playerid] == 0 || InfoConta[playerid][Vips] > 0)
    {
        new string[256];
        format(string, sizeof(string),"[%s{FFFFFF}][%s{FFFFFF}]%s[%d]: %s", NomeCargoAdmin(InfoConta[playerid][Admin]), NomeTagVip(InfoConta[playerid][Vips]), PlayerName(playerid), playerid, text);
        JogadoresProximo(6.0, playerid, string, -1, -1, -1, -1, -1);
        return 0;
    }
    //AGORA SE ELE FOR ADMIN E SE ELE TIVER TRABALHANDO E ELE NAO TIVER VIP↓
    else if(InfoConta[playerid][Admin] > 0 && AdminTrabalhando[playerid] == 1 || InfoConta[playerid][Vips] == 0)
    {
        new string[256];
        format(string, sizeof(string),"{EE82EE}[%s{EE82EE}]%s[%d]:{FFFFFF} %s", NomeCargoAdmin(InfoConta[playerid][Admin]), PlayerName(playerid), playerid, text);
        JogadoresProximo(6.0, playerid, string, COR_ADMIN, COR_ADMIN, COR_ADMIN, COR_ADMIN, COR_ADMIN);
        return 0;
    }
    //AGORA SE ELE FOR ADMIN E TIVER TRABALHANDO E TIVER VIP↓
    else if(InfoConta[playerid][Admin] > 0 && AdminTrabalhando[playerid] == 1 || InfoConta[playerid][Vips] > 0)
    {
        new string[256];
        format(string, sizeof(string),"{EE82EE}[%s{EE82EE}][%s{EE82EE}]{EE82EE}%s[%d]:{FFFFFF} %s", NomeCargoAdmin(InfoConta[playerid][Admin]), NomeTagVip(InfoConta[playerid][Vips]), PlayerName(playerid), playerid, text);
        JogadoresProximo(6.0, playerid, string, COR_ADMIN, COR_ADMIN, COR_ADMIN, COR_ADMIN, COR_ADMIN);
    }

Mesmo eu sendo administrador do servidor minha TAG não aparece


RE: Poblema com OnPlayerText - leonardos08bt - 10/10/2023

Você pode fazer isso usando strcat fica muito mais simples do que ficar verificando condição por condição.

Código simplificado:
Código:
public OnPlayerText(playerid, text[])
{
    if(!IsPlayerConnected(playerid)) return 0; //Substitua a verificacao e verifique se o jogador acertou a senha da conta e logou.

    new string[256], fmat_str[64];

    //Admin Trabalhando + tem vip
    if(InfoConta[playerid][Admin] > 0 && AdminTrabalhando[playerid] == 1 && InfoConta[playerid][Vips] > 0)
    {
        format(string, sizeof(string),"[%s][%s] %s[%d]: %s", NomeCargoAdmin(InfoConta[playerid][Admin]), NomeTagVip(InfoConta[playerid][Vips]), PlayerName(playerid), playerid, text);
        JogadoresProximo(6.0, playerid, string, COR_ADMIN, COR_ADMIN, COR_ADMIN, COR_ADMIN, COR_ADMIN);
        return 0;
    }

//Admin Trabalhando + tem vip
    if(InfoConta[playerid][Admin] > 0 && AdminTrabalhando[playerid] == 1)
    {
        format(string, sizeof(string),"[%s] %s[%d]: %s", NomeCargoAdmin(InfoConta[playerid][Admin]), PlayerName(playerid), playerid, text);
        JogadoresProximo(6.0, playerid, string, COR_ADMIN, COR_ADMIN, COR_ADMIN, COR_ADMIN, COR_ADMIN);
        return 0;
    }

    //Conta ADMIN
    if(InfoConta[playerid][Admin] > 0) {
        format(fmat_str, sizeof(fmat_str),"[%s]", NomeCargoAdmin(InfoConta[playerid][Admin])); //Formata a TAG ADMIN
        strcat(string, fmat_str); //Coloca na 'string' o armazenado do 'fmat_str'
    }

    //Conta VIP
    if(InfoConta[playerid][Vips] > 0) {
        format(fmat_str, sizeof(fmat_str),"[%s]", NomeTagVip(InfoConta[playerid][Vips])); //Formata a TAG VIP
           strcat(string, fmat_str); //Coloca na 'string' o armazenado do 'fmat_str'
    }

    format(fmat_str, sizeof(fmat_str)," %s[%d]: %s", PlayerName(playerid), playerid, text); //Formata a mensagem.
    strcat(string, fmat_str); //Coloca na 'string' o armazenado do 'fmat_str'
    JogadoresProximo(6.0, playerid, string, -1, -1, -1, -1, -1);
    return 0;
}



RE: Poblema com OnPlayerText - pushline - 10/10/2023

Tenha em mente que o output máximo do OnPlayerText é 144 caracteres, então se você quiser quebrar as mensagens em linhas, use esta include: https://github.com/Open-GTO/zmessage
Inclua-a antes de qualquer include que mexa com texto (tal como y_va)