Portal SAMP
[Ajuda] LIMITE CHAT GLOBAL - 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] LIMITE CHAT GLOBAL (/showthread.php?tid=1977)



LIMITE CHAT GLOBAL - fear - 24/12/2021

Boa noite. eu coloquei pra quando ser staff mostrar no chat global porém... ele esta limitando a quantidade de caracteres tanto pra admin quanto pra player normal.. oque estou fazendo errado?

Código PHP:
CMD:cg(playeridparams[])
{
    if(
ChecarPermissoes(playerid)) return 1;
    new 
textomsg[256], stringcc[256], nomecc[MAX_PLAYER_NAME];
    
GetPlayerName(playeridnomeccMAX_PLAYER_NAME);
    if(
sscanf(params"s[256]"textomsg)) return Msg(playeridVermelho"<!> {FFFFFF}Use: {FF0000}/Cg [Menssagem]");
     if(
playerChatMuted[playerid])
    {
        if(
gettime() < playerChatTalkedTime[playerid])
            return 
SendClientMessage(playeridCOLOR_YELLOW"<!> {FFFFFF}Você foi mutado durante 30 segundos por flood no chat GLOBAL.");
        else
            
playerChatMuted[playerid] = falseplayerChatTalkedTime[playerid] = 0;
    }
    if(
gettime() < playerChatTalkedTime[playerid])
    {
        
playerChatTimesSpoken[playerid]++;

        if(
playerChatTimesSpoken[playerid] > 1)
        {
            
playerChatMuted[playerid] = true;
            
playerChatTimesSpoken[playerid] = 0;
            
playerChatTalkedTime[playerid] = gettime() + 30;

            return 
SendClientMessage(playeridCOLOR_YELLOW"<!> {FFFFFF}Você foi mutado durante 30 segundos por flood no chat GLOBAL.");
        }
    }
    else
    if(
GetPlayerAdminLevel(playerid) <= 0)
     {
        
playerChatTimesSpoken[playerid] = 0;
        
playerChatTalkedTime[playerid] = gettime() + 5;
        
format(stringccsizeof(stringcc), "[CHAT GLOBAL] ** /Cg ** {FFFFFF}%s[ID:%d] {FFFFFF}Diz: {0080C0}%s"nomeccplayeridtextomsg);
        
SendClientMessageToAll(0x0080C0AAstringcc);
    }
    else
    {
        
format(stringccsizeof(stringcc), "{FFFFFF}[{0080C0}CHAT GLOBAL{FFFFFF}] ** /Cg ** {FFFFFF}[{27AE60}%s{FFFFFF}] {FFFFFF}%s[ID:%d] {FFFFFF}Diz: {0080C0}%s",  admins(playerid1), nomeccplayeridtextomsg);
        
SendClientMessageToAll(0x0080C0AAstringcc);
    }
    return 
1;


Já aumentei as strings e nada.. continua limitando pra ambos..


RE: LIMITE CHAT GLOBAL - ipsLuan - 24/12/2021

É do próprio SA-MP. Você pode criar uma string com 1 bilhão de char, mas o SA-MP irá limitar na tela.
https://sampwiki.blast.hk/wiki/Limits

Mas, você pode fazer uma "gambiarra" e inserir uma nova linha com o restante da frase.

Código:
if(strlen(text) > 64) {
    SendVehicleMessage(vehicleid, COLOR_WHITE, "** [Janelas Fechadas][Celular] [ID: %d] diz: %.64s", playerid, text);
    SendVehicleMessage(vehicleid, COLOR_WHITE, "...%s **", text[64]);
}
else SendVehicleMessage(vehicleid, COLOR_WHITE, "** [Janelas Fechadas][Celular] [ID: %d] diz: %s **", playerid, text);

Explicação: se o texto for acima de 64 caracteres, irá inserir uma nova linha abaixo com o restante da frase a partir do caractere 64.


RE: LIMITE CHAT GLOBAL - fear - 24/12/2021

(24/12/2021 10:42)ipsLuan Escreveu: É do próprio SA-MP. Você pode criar uma string com 1 bilhão de char, mas o SA-MP irá limitar na tela.
https://sampwiki.blast.hk/wiki/Limits

Mas, você pode fazer uma "gambiarra" e inserir uma nova linha com o restante da frase.

Código:
if(strlen(text) > 64) {
    SendVehicleMessage(vehicleid, COLOR_WHITE, "** [Janelas Fechadas][Celular] [ID: %d] diz: %.64s", playerid, text);
    SendVehicleMessage(vehicleid, COLOR_WHITE, "...%s **", text[64]);
}
else SendVehicleMessage(vehicleid, COLOR_WHITE, "** [Janelas Fechadas][Celular] [ID: %d] diz: %s **", playerid, text);

Explicação: se o texto for acima de 64 caracteres, irá inserir uma nova linha abaixo com o restante da frase a partir do caractere 64.

Luan eu sei que tem um limitador no SAMP ... porém ele está limitando sem eu digitar os 64 caracteres.. veja no print abaixo..

Esse e o maximo que sai pra cada um deles... acho que tem algo errado no comando acima

STAFF ¹

PLAYER ²


RE: LIMITE CHAT GLOBAL - ipsLuan - 24/12/2021

Claro, cara.
Isso é questão de lógica: os caracteres contam a partir da primeira letra/número e não apenas a parte de fala.

Ou seja, a partir do [ que está em [CHAT GLOBAL] já começa a contar.


RE: LIMITE CHAT GLOBAL - fear - 24/12/2021

(24/12/2021 13:11)ipsLuan Escreveu: Claro, cara.
Isso é questão de lógica: os caracteres contam a partir da primeira letra/número e não apenas a parte de fala.

Ou seja, a partir do [ que está em [CHAT GLOBAL] já começa a contar.

Eu já removi a escrita antes e mesmo assim eu digito e não aparece tá limitando .. olhou o comando q eu fiz?


RE: LIMITE CHAT GLOBAL - ipsLuan - 24/12/2021

Envia aí o comando atual e a mensagem completa que aparece.


RE: LIMITE CHAT GLOBAL - Luiz - 24/12/2021

Só a própria string pra caso ele seja admin já conta com 110 caracteres aproximadamente. Isso dá um total de 18 caracteres que o jogador pode digitar.
Código PHP:
{FFFFFF}[{0080C0}CHAT GLOBAL{FFFFFF}] ** /Cg ** {FFFFFF}[{27AE60}%s{FFFFFF}] {FFFFFF}%s[ID:%d] {FFFFFF}Diz: {0080C0}%
A forma de corrigir isso é somente tirando esse monte de cores que são alteradas. Vai diminuir os caracteres e vai permitir que o jogador digite textos maiores.

Como exemplo:
Código PHP:
[CHAT GLOBAL] ** /Cg ** [%s] %s[ID:%dDiz: %



RE: LIMITE CHAT GLOBAL - fear - 24/12/2021

(24/12/2021 14:58)ipsLuan Escreveu: Envia aí o comando atual e a mensagem completa que aparece.

Vou explicar direito pois não expliquei corretamente... antes de eu adc a tag do staff o chat dava pra escrever normalmente.. como na print


Porém quando eu modifiquei adc a tag do staff ele ficou assim tanto pra player como pra staff..



COMANDO:

Código PHP:
CMD:cg(playeridparams[])
{
    if(
ChecarPermissoes(playerid)) return 1;
    new 
textomsg[256], stringcc[256], nomecc[MAX_PLAYER_NAME];
    
GetPlayerName(playeridnomeccMAX_PLAYER_NAME);
    if(
sscanf(params"s[256]"textomsg)) return Msg(playeridVermelho"<!> {FFFFFF}Use: {FF0000}/Cg [Menssagem]");
     if(
playerChatMuted[playerid])
    {
        if(
gettime() < playerChatTalkedTime[playerid])
            return 
SendClientMessage(playeridCOLOR_YELLOW"<!> {FFFFFF}Você foi mutado durante 30 segundos por flood no chat GLOBAL.");
        else
            
playerChatMuted[playerid] = falseplayerChatTalkedTime[playerid] = 0;
    }
    if(
gettime() < playerChatTalkedTime[playerid])
    {
        
playerChatTimesSpoken[playerid]++;

        if(
playerChatTimesSpoken[playerid] > 1)
        {
            
playerChatMuted[playerid] = true;
            
playerChatTimesSpoken[playerid] = 0;
            
playerChatTalkedTime[playerid] = gettime() + 30;

            return 
SendClientMessage(playeridCOLOR_YELLOW"<!> {FFFFFF}Você foi mutado durante 30 segundos por flood no chat GLOBAL.");
        }
    }
    else
    if(
GetPlayerAdminLevel(playerid) <= 0)
     {
        
playerChatTimesSpoken[playerid] = 0;
        
playerChatTalkedTime[playerid] = gettime() + 5;
        
format(stringccsizeof(stringcc), "[CHAT GLOBAL] ** /Cg ** {FFFFFF}%s[ID:%d] {FFFFFF}Diz: {0080C0}%s"nomeccplayeridtextomsg);
        
SendClientMessageToAll(0x0080C0AAstringcc);
    }
    else
    {
        
format(stringccsizeof(stringcc), "{FFFFFF}[{0080C0}CHAT GLOBAL{FFFFFF}] ** /Cg ** {FFFFFF}[{27AE60}%s{FFFFFF}] {FFFFFF}%s[ID:%d] {FFFFFF}Diz: {0080C0}%s",  admins(playerid1), nomeccplayeridtextomsg);
        
SendClientMessageToAll(0x0080C0AAstringcc);
    }
    return 
1;


Única coisa que fiz foi colocar o else e o if caso não seja admin chat normal e caso seja adc a tag na format. oque eu fiz de errado que eu não entendo pois o [CHAT GLOBAL] existia antes e dava pra digitar normalmente..


ANTES DE MODIFICAR - DEPOIS DE MODIFICAR PLAYER - DEPOIS DE MODIFICAR STAFF


RE: LIMITE CHAT GLOBAL - Luiz - 24/12/2021

Como já dito, "Só a própria string pra caso ele seja admin já conta com 110 caracteres aproximadamente. Isso dá um total de 18 caracteres que o jogador pode digitar."
Os códigos de cores consomem caractere, se ficar alterando toda hora a cor da mensagem, vai diminuir cada vez mais a quantidade de caracteres que o jogador pode digitar.
Anteriormente, como pode ver, não tinha mudanças de cores. Portanto, você podia digitar muito mais coisa.
Como você adicionou várias cores, a mensagem vai ser cortada.


RE: LIMITE CHAT GLOBAL - fear - 24/12/2021

(24/12/2021 19:55)Luiz Escreveu: Como já dito, "Só a própria string pra caso ele seja admin já conta com 110 caracteres aproximadamente. Isso dá um total de 18 caracteres que o jogador pode digitar."
Os códigos de cores consomem caractere, se ficar alterando toda hora a cor da mensagem, vai diminuir cada vez mais a quantidade de caracteres que o jogador pode digitar.
Anteriormente, como pode ver, não tinha mudanças de cores. Portanto, você podia digitar muito mais coisa.
Como você adicionou várias cores, a mensagem vai ser cortada.

blz.. achei que meu comando estava errado.