Итак. В этой теме я вам расскажу, как сделать красивый общий чат. В основном это касается ДМ серверов. Самый простой способ, не мучаясь, сделать чат - это просто убрать public OnPlayerText, но тогда в чате не будет ID'а и администрации будет крайне неудобно смотерть TAB'ом ID матершинника или спамера.
Для того, чтобы сделать в чате ID, не обходимо использовать стандартную функцию SendClientMessageToAll.
Но в этом случае все сообщение будет одного цвета (цвета игрока), а это не есть хорошо, если у игрока стоит темный цвет.
Нам нужна функция, которая отправит ник игрока его цветом, а остальной текст белым. К сожалению, в самп 0.3б нет функции способной отправить одно сообщение разными цветами. Нам приходится использовать SendPlayerMessageToAll:
Что же выходит? Ник идет цветом игрока, а ид и текст - белым. Но форма текста получается следующая:
Splav: (5): Привет Как видим два двоеточия. Да и ид лучше было бы, чтобы был цветом игрока. как же поступить? Думаю ответ очевиден - прилепить ID к нику на время отправки сообщения.
Code
public OnPlayerText(playerid, text[]) { new string[256], sendername[32]; GetPlayerName(playerid, sendername, 32); format(string, sizeof(string), "%s(%d)", sendername, playerid); // Прикрепляем ид к нику SetPlayerName(playerid, string); // Меняем ник format(string, 128, "%s", caps); // Делаем сообщение SendPlayerMessageToAll(playerid, string); // Отправляем сообщение SetPlayerName(playerid, sendername); // Возвращаем исходный ник return 0; }
Вот и все. Теперь в чат выйдет красивое сообщение. Источник