Este repositorio no tiene archivo de licencia. Se puede leer, pero eso por sí solo no da permiso para reutilizarlo.
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.
Esta página se genera con lo que GitHub publica sobre el repositorio. samp.directory no aloja el código. Informar de un problema con esta ficha