В этом репозитории нет файла лицензии. Код открыт для чтения, но само по себе это не даёт права использовать его.
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âmetro | Descrição |
|---|---|
playerid | ID do jogador que enviou a mensagem |
name[] | Nome do jogador |
tag[] | TAG prioritária |
tag_colour[] | Cor da TAG |
text[] | Mensagem enviada |
muted | 1 se estiver mutado |
mute_timeleft | Segundos restantes do mute |
is_global | 1 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ção | Descrição |
|---|---|
Chat_AddPlayerTag | Adiciona uma TAG |
Chat_RemovePlayerTag | Remove uma TAG específica |
Chat_ClearPlayerTags | Remove todas as TAGs |
Chat_PlayerHasTag | Verifica se possui TAG |
Chat_PlayerHasTagNamed | Verifica uma TAG específica |
Chat_GetPriorityTag | Obtém a TAG prioritária |
Chat_SetMode | Define o modo global/local |
Chat_GetMode | Obtém o modo atual |
Chat_SetMaxDistance | Define a distância máxima |
Chat_GetMaxDistance | Obtém a distância máxima |
Chat_SetDynamicColor | Ativa/desativa cor dinâmica |
Chat_GetDynamicColor | Obtém o estado da cor dinâmica |
Chat_SetRangeColor | Define a cor de uma faixa |
Chat_GetRangeIndex | Obtém a faixa de distância |
Chat_MutePlayer | Mute permanente |
Chat_MutePlayerEx | Mute temporário |
Chat_UnmutePlayer | Remove o mute |
Chat_IsPlayerMuted | Verifica o mute |
Chat_GetMuteTimeLeft | Obtém o tempo restante |
📄 Licença
Sinta-se livre para utilizar, modificar e adaptar a include de acordo com as necessidades do seu projeto.
Страница собрана из того, что GitHub публикует о репозитории. samp.directory не хранит этот код. Сообщить о проблеме с этой записью