Форум Pawn.Wiki - Воплоти мечту в реальность!: Делаем Красивый Чат - Форум Pawn.Wiki - Воплоти мечту в реальность!

Перейти к содержимому

  • (2 Страниц) +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

[ Урок ]
Делаем Красивый Чат
Оценка: ***** 1 Голосов

#1
Пользователь офлайн   Silver 

  • Местный
  • Вставить ник
  • Раскрыть информацию
Урок по созданию красивого чата !
Итак. В этой теме я вам расскажу, как сделать красивый общий чат. В основном это касается ДМ серверов. Самый простой способ, не мучаясь, сделать чат - это просто убрать 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

8

#2
Пользователь офлайн   OneLifeOneDream 

  • Знаток
  • Вставить ник
  • Раскрыть информацию
хах Нормас лови +
0

#3
Пользователь офлайн   Romzes 

  • ( ^_^ )
  • Вставить ник
  • Раскрыть информацию
Нормик. А скрин можно что?

ps: Сюда закидывай если что... https://pawn.wiki/index.php?/ihost
0

#4
Пользователь офлайн   Silver 

  • Местный
  • Вставить ник
  • Раскрыть информацию
Увы, скринов нет.
0

#5
Пользователь офлайн   Lwf 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
в последнем коде замени
    format(string, 128, "%s", caps);

на
    format(string, 128, "%s", text);

1

#6
Пользователь офлайн   LiMOH 

  • Профессионал
  • Вставить ник
  • Раскрыть информацию
Довольно интересно, поставил плюс :) Скиньте скриншот кто-нибудь, интересно посмотреть.
0

#7
Пользователь офлайн   Lwf 

  • Эксперт
  • Вставить ник
  • Раскрыть информацию
Я бы выложил но у меня почему-то сразу 2 сообщения в чат отправляет
0

#8
Пользователь офлайн   SwipoStyle 

  • Благодетель
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияSlaer (22 декабря 2011 - 16:59) писал:

Я бы выложил но у меня почему-то сразу 2 сообщения в чат отправляет

Используй
return 0;

Сообщение отредактировал Swipos: 23 декабря 2011 - 11:53

0

#9
Пользователь офлайн   Giovanni_Giordano 

  • Прохожий
  • Вставить ник
  • Раскрыть информацию

Просмотр сообщенияSwipoStyle (23 декабря 2011 - 11:53) писал:

Используй
return 0;


Не помогает , у меня все равно 2 сообщения в чат идет :(
Изображение

Сообщение отредактировал Giovanni_Giordano: 10 декабря 2012 - 18:51

0

#10
Пользователь офлайн   SaTiCH 

  • Местный
  • Вставить ник
  • Раскрыть информацию

Цитата

SwipoStyle (23 Декабрь 2011 - 12:53) писал:
Используй
return 0;


Не помогает , у меня все равно 2 сообщения в чат идет :(



Все что ты вставил вставь вверх паблика и закрой функцию return 0;
0

Поделиться темой:


  • (2 Страниц) +
  • 1
  • 2
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей


Яндекс.Метрика