samp.directory
← Скрипты и библиотеки

caysonrodrigues/samp-chat

На GitHub нет описания.

Библиотека★ 2обновлён авг. 2026 г.Без лицензииPawn
Открыть на GitHub

В этом репозитории нет файла лицензии. Код открыт для чтения, но само по себе это не даёт права использовать его.

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

Страница собрана из того, что GitHub публикует о репозитории. samp.directory не хранит этот код. Сообщить о проблеме с этой записью