- Регистрация
- 11 Ноя 2010
- Сообщения
- 514
- Лучшие ответы
- 0
- Репутация
- 123
Урок по созданию красивого чата !
Итак. В этой теме я вам расскажу, как сделать красивый общий чат. В основном это касается ДМ серверов. Самый простой способ, не мучаясь, сделать чат - это просто убрать public OnPlayerText, но тогда в чате не будет ID'а и администрации будет крайне неудобно смотерть TAB'ом ID матершинника или спамера.
Для того, чтобы сделать в чате ID, не обходимо использовать стандартную функцию SendClientMessageToAll.
Но в этом случае все сообщение будет одного цвета (цвета игрока), а это не есть хорошо, если у игрока стоит темный цвет.
Нам нужна функция, которая отправит ник игрока его цветом, а остальной текст белым. К сожалению, в самп 0.3б нет функции способной отправить одно сообщение разными цветами. Нам приходится использовать SendPlayerMessageToAll:
Что же выходит? Ник идет цветом игрока, а ид и текст - белым. Но форма текста получается следующая:
Вот и все. Теперь в чат выйдет красивое сообщение:
Автор: Splav
Итак. В этой теме я вам расскажу, как сделать красивый общий чат. В основном это касается ДМ серверов. Самый простой способ, не мучаясь, сделать чат - это просто убрать public OnPlayerText, но тогда в чате не будет ID'а и администрации будет крайне неудобно смотерть TAB'ом ID матершинника или спамера.
Для того, чтобы сделать в чате ID, не обходимо использовать стандартную функцию SendClientMessageToAll.
PHP:
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:
PHP:
public OnPlayerText(playerid, text[])
{
format(string, 128, "(%d): %s", playerid, text);
SendPlayerMessageToAll(playerid, string);
return 0;
}
Как видим два двоеточия. Да и ид лучше было бы, чтобы был цветом игрока. как же поступить? Думаю ответ очевиден - прилепить ID к нику на время отправки сообщения.Splav: (5): Привет
PHP:
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