samp.directory
← Scripts and libraries

caysonrodrigues/samp-chat

No description on GitHub.

Library★ 2updated Aug 2026No licencePawn
Open on GitHub

This repository has no licence file. It is public to read, but that alone does not give permission to reuse it.

README.md

Chat Include

Include focada no gerenciamento e personalização do chat do servidor.

A include fornece recursos para trabalhar com tags de jogadores. com prioridades, chat global/local, distância máxima, cores dinâmicas e sistema de mute.

📦 Instalação

Coloque o arquivo da include na pasta:

gamemode/pawno/include/

Depois, adicione no seu gamemode:

#include <chat>

⚙️ Configurações

A include possui algumas configurações padrão:

#define MAX_TAGS_PER_PLAYER     (8)          // Quantidade máxima de TAGs que um jogador pode possuir.
#define MAX_TAG_TEXT            (16)         // Tamanho máximo do texto de uma TAG.
#define MAX_TAG_COLOR           (9)          // Tamanho máximo da cor da TAG.
#define MAX_DISTANCE_RANGES     (5)          // Quantidade de faixas utilizadas para determinar a cor da mensagem de acordo com a distância.
#define DEFAULT_LOCAL_DISTANCE  (50.0)       // Distância padrão definida para o chat local. 
#define MAX_CHAT_OUTPUT         (256)        // Tamanho máximo definido para a saída do chat.

🏷️ TAGs

Adicionar TAG

Chat_AddPlayerTag(playerid, "ADMIN", "{FF0000}", 0);

O último parâmetro representa a prioridade da TAG. Quanto menor o número, maior a prioridade.

Por exemplo:

Chat_AddPlayerTag(playerid, "PLAYER", "{FFFFFF}", 10);
Chat_AddPlayerTag(playerid, "VIP", "{FFD700}", 5);
Chat_AddPlayerTag(playerid, "ADMIN", "{FF0000}", 0);

Nesse caso, ADMIN será a TAG prioritária.

Remover TAG

Chat_RemovePlayerTag(playerid, "VIP");

Remover todas as TAGs

Chat_ClearPlayerTags(playerid);

Verificar se possui alguma TAG

if(Chat_PlayerHasTag(playerid))
{
    // Possui uma TAG
}

Verificar uma TAG específica

if(Chat_PlayerHasTagNamed(playerid, "ADMIN"))
{
    // Possui a TAG ADMIN
}

Obter a TAG prioritária

new tag[16];
new color[9];

Chat_GetPriorityTag(playerid, tag, color);

🌎 Chat Global / Local

O modo do chat pode ser definido através de:

Chat_SetMode(true);

true ativa o modo global.

Chat_SetMode(false);

false utiliza o modo local.

Para verificar o modo atual:

if(Chat_GetMode())
{
    // Chat global
}

📏 Distância do Chat

É possível definir uma distância máxima individual para cada jogador:

Chat_SetMaxDistance(playerid, 50.0);

Para obter a distância configurada:

new Float:distance = Chat_GetMaxDistance(playerid);

🎨 Cor dinâmica

A include possui suporte para alteração da cor da mensagem de acordo com a distância.

Para ativar:

Chat_SetDynamicColor(playerid, true);

Para desativar:

Chat_SetDynamicColor(playerid, false);

Também é possível definir a cor de cada faixa de distância:

Chat_SetRangeColor(1, "{FFFFFF}");
Chat_SetRangeColor(2, "{C8C8C8}");
Chat_SetRangeColor(3, "{969696}");
Chat_SetRangeColor(4, "{646464}");
Chat_SetRangeColor(5, "{323232}");

Por padrão, existem 5 faixas de distância.

🔇 Sistema de Mute

Mute permanente

Chat_MutePlayer(playerid);

Mute temporário

O tempo deve ser informado em segundos:

Chat_MutePlayerEx(playerid, 60);

Nesse exemplo, o jogador ficará mutado por 60 segundos.

Remover mute

Chat_UnmutePlayer(playerid);

Verificar se está mutado

if(Chat_IsPlayerMuted(playerid))
{
    // Jogador está mutado
}

Obter tempo restante

new time = Chat_GetMuteTimeLeft(playerid);

O retorno será o número de segundos restantes.

Quando o mute for permanente, o retorno será 0.

📡 OnPlayerTextDynamic

A include intercepta OnPlayerText e encaminha as informações para uma nova callback:

forward OnPlayerTextDynamic(
    playerid,
    const name[],
    const tag[],
    const tag_colour[],
    const text[],
    muted,
    mute_timeleft,
    is_global
);

No gamemode, implemente:

public OnPlayerTextDynamic(
    playerid,
    const name[],
    const tag[],
    const tag_colour[],
    const text[],
    muted,
    mute_timeleft,
    is_global
)
{
    // Seu sistema de chat

    return 1;
}

Parâmetros

ParâmetroDescrição
playeridID do jogador que enviou a mensagem
name[]Nome do jogador
tag[]TAG prioritária
tag_colour[]Cor da TAG
text[]Mensagem enviada
muted1 se estiver mutado
mute_timeleftSegundos restantes do mute
is_global1 para global, 0 para local

A callback é responsável por entregar ao gamemode as informações necessárias para que ele faça a exibição/processamento da mensagem.

📐 Faixas de distância

A função interna:

Chat_GetRangeIndex(distance, max_distance);

divide a distância máxima em MAX_DISTANCE_RANGES partes iguais e retorna o índice correspondente à distância do jogador.

Com:

#define MAX_DISTANCE_RANGES (5)

e uma distância máxima de 100.0, por exemplo, as faixas serão aproximadamente:

0 → 0 até 20
1 → 20 até 40
2 → 40 até 60
3 → 60 até 80
4 → 80 até 100

Isso é utilizado para determinar a faixa de cor da mensagem.

📝 Exemplo

Um exemplo simples de utilização:

public OnPlayerConnect(playerid)
{
    Chat_SetMaxDistance(playerid, 50.0);
    Chat_SetDynamicColor(playerid, true);

    Chat_AddPlayerTag(
        playerid,
        "SOBREVIVENTE",
        "{FFFFFF}",
        10
    );

    return 1;
}

public OnPlayerTextDynamic(
    playerid,
    const name[],
    const tag[],
    const tag_colour[],
    const text[],
    muted,
    mute_timeleft,
    is_global
)
{
    if(muted)
        return 0;

    new message[256];

    if(is_global)
    {
        format(
            message,
            sizeof(message),
            "%s%s {FFFFFF}%s: %s",
            tag_colour,
            tag,
            name,
            text
        );
    }
    else
    {
        format(
            message,
            sizeof(message),
            "%s%s {FFFFFF}%s: %s",
            tag_colour,
            tag,
            name,
            text
        );
    }

    SendClientMessageToAll(-1, message);

    return 1;
}

📋 Funções

FunçãoDescrição
Chat_AddPlayerTagAdiciona uma TAG
Chat_RemovePlayerTagRemove uma TAG específica
Chat_ClearPlayerTagsRemove todas as TAGs
Chat_PlayerHasTagVerifica se possui TAG
Chat_PlayerHasTagNamedVerifica uma TAG específica
Chat_GetPriorityTagObtém a TAG prioritária
Chat_SetModeDefine o modo global/local
Chat_GetModeObtém o modo atual
Chat_SetMaxDistanceDefine a distância máxima
Chat_GetMaxDistanceObtém a distância máxima
Chat_SetDynamicColorAtiva/desativa cor dinâmica
Chat_GetDynamicColorObtém o estado da cor dinâmica
Chat_SetRangeColorDefine a cor de uma faixa
Chat_GetRangeIndexObtém a faixa de distância
Chat_MutePlayerMute permanente
Chat_MutePlayerExMute temporário
Chat_UnmutePlayerRemove o mute
Chat_IsPlayerMutedVerifica o mute
Chat_GetMuteTimeLeftObtém o tempo restante

📄 Licença

Sinta-se livre para utilizar, modificar e adaptar a include de acordo com as necessidades do seu projeto.

chatsa-mpsampsampchat

This page is built from what GitHub publishes about the repository. samp.directory does not host the code. Report a problem with this listing