Итак. В этой теме я вам расскажу, как сделать красивый общий чат. В основном это касается ДМ серверов. Самый простой способ, не мучаясь, сделать чат - это просто убрать public OnPlayerText, но тогда в чате не будет ID'а и администрации будет крайне неудобно смотерть TAB'ом ID матершинника или спамера.
Для того, чтобы сделать в чате ID, не обходимо использовать стандартную функцию SendClientMessageToAll.
public OnPlayerText(playerid, text[])
{
new sendername[32];
GetPlayerName(playerid, sendername, 32);
format(string, 128, "%s(%d): %s", sendername, playerid, text);
SendСlientMessageToAll(GetPlayercolor(playerid), string);
return 0;
}
Но в этом случае все сообщение будет одного цвета (цвета игрока), а это не есть хорошо, если у игрока стоит темный цвет.
Нам нужна функция, которая отправит ник игрока его цветом, а остальной текст белым. К сожалению, в самп 0.3б нет функции способной отправить одно сообщение разными цветами. Нам приходится использовать SendPlayerMessageToAll:
public OnPlayerText(playerid, text[])
{
format(string, 128, "(%d): %s", playerid, text);
SendPlayerMessageToAll(playerid, string);
return 0;
}
Что же выходит? Ник идет цветом игрока, а ид и текст - белым. Но форма текста получается следующая:
Цитата
Splav: (5): Привет
Как видим два двоеточия. Да и ид лучше было бы, чтобы был цветом игрока. как же поступить? Думаю ответ очевиден - прилепить ID к нику на время отправки сообщения.
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;
}
Вот и все. Теперь в чат выйдет красивое сообщение.
Автор: Splav
Сообщение отредактировал Mike: 19 января 2012 - 14:08
Вход
Регистрация
Помощь















