Доступ к архиву

Переход в группу "Пользователь"

300.00
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info
Статус
В этой теме нельзя размещать новые ответы.

Andrey_Kiryuhin

Изучающий
Пользователь
Регистрация
11 Ноя 2010
Сообщения
514
Лучшие ответы
0
Репутация
123
Урок по созданию красивого чата !
Итак. В этой теме я вам расскажу, как сделать красивый общий чат. В основном это касается ДМ серверов. Самый простой способ, не мучаясь, сделать чат - это просто убрать 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;
}
Что же выходит? Ник идет цветом игрока, а ид и текст - белым. Но форма текста получается следующая:
Splav: (5): Привет
Как видим два двоеточия. Да и ид лучше было бы, чтобы был цветом игрока. как же поступить? Думаю ответ очевиден - прилепить ID к нику на время отправки сообщения.
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
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу