SendClientMessage, SendClientMessageToAll., SendPlayerMessageToPlayer, SendPlayerMessageToAll, GameTextForPlayer, GameTextForAll и SendDeathMessage
SendClientMessage отправляет сообщение одному из игроков в чат (например ввёл команду, и текст отправился только тебе) SendClientMessageToAll отправляет сообщение в чат так, что все его могут видеть.
Сейчас объясню, что где используется:
SClM (SendClientMessage), обзову его так – у меня эта функция стоит в OnPlayerConnect – расставляется большое количество пропуска (очищает чат) и пишется текст (какой – не важно), так же использую при командах, или в ПМках (личных сообщениях).
Вид:
SendClientMessage(playerid, color,"Текст");
Смысл данной функции прост:
playerid – узнаёт ID игрока. color – вписываем цвет (можно так же обратится к define’ам, в прошлом уроке я рассказывал про установку цвета, приводя пример COLOR_RED). “Текст” – думаю понятно, что в кавычки можно вставить текст.
SClMTA (SendClientMessageToAll) – отправление текстового сообщения в чат всем игрокам. Я использую эту функцию только для показа действия (например: «%s перешел в аэропорт Лос-Сантоса», где %s обычно обозначается как playername, или что-то вроде того) и ещё для отправки в чат автоматических сообщений (при этом привязываю таймер, и как говорили мне – таймер нагружает сервер).
Вид:
SendClientMessageToAll(color,"Текст");
Где как вы уже могли догадаться – color – цвет, а «Текст» - текст, выводимый в чат всем игрокам. Как можно заметить, playerid здесь нет, т.к. это сообщение выходит не одному конкретному игроку, а всем.
Playerid – указан выше – ID (идентификатор) игрока. Senderid – ID игрока-отправителя. «Текст» – думаю вам уже понятно, что здесь можно что-то написать.
SPMTA (SendPlayerMessageToAll) – отправление текстового сообщения в общий чат, отправив имя игрока и сообщение (тоже самое, что и sendclientmessagetoall, только при этом в чате присутствует ник игрока).
Вид:
SendPlayerMessageToAll(senderid, «текст»);
Здесь всё тоже самое, что и в SPTMP, только нет функции playerid
Пример использования:
в public OnPlayerText(playerid, text[]) записываю: { new output[128];
SendClientMessageToAll с отправлением действия игрока в чат всем игрокам:
Например, если игрок выбрал в меню телепортов «Аэропорт Лос-Сантоса», то в чат отправляется:
SendClientMessageToAll(COLOR_RED, "%s зашел в Аэропорт Лос-Сантоса.", PlayerName);
И переносит на специальную координату:
SetPlayerPos(playerid,pX,pY,pZ);
GameTextForPlayer
Простенькая функция – выводит на экран игроку определённый текст.
Как выглядит:
GameTextForPlayer(playerid, "test", 5000, 3);
Где playerid – ID игрока «Test» - текст вставляется сюда, всегда вставляется латинскими символами.
Некоторые русские переводы плохие, и я перечислю вам их символы:
Текст вводится капсом (кроме символа-исключения (u - ц)):
A - a 6 – б B - в F - г D - д E - e, э G - ж 3 - з N - и K - к L - л M - м H - н O - о Z - п P - р C - с T - т Y - у Q - ф X - х u - ц 4 - ч W - ш, щ J - ь, ъ S - ы U - ю R - я
Эти символы я взял из собственного опыта и знания.
5000 – это время 3 – тип
Всего я знаю 7 типов:
0 – Тёмно оранжевым цветом в середине экрана, шрифт – Pricedown (то, чем написано Grand Theft Auto на обложке игр серии GTA). 1 – Тоже самое, что и «0», только справа снизу (не в самом низу, а на 1/4 экрана). 2 – Белым цветом в середине экрана, шрифт – OldEnglishText (шрифт, которым написано слово San Andreas на обложке игры). 3 – Тоже самое что и «0», только шрифт – Tahoma (стандартный шрифт написания в MicroSoft Word). 4 – Тоже самое что и «3», только чуть-чуть выше. 5 – Тоже самое что и «3», только белым цветом. 6 – Голубоватым цветом чуть выше середины экрана, шрифт Pricedown.
Следующее – это тот же самый текст, только для всех игроков – GameTextForAll
Пример:
GameTextForAll("test", 5000, 3 );
Тоже самое что и GameTextForPlayer – справедливы все его функции, кроме PlayerID – его не будет, так как этот текст будет показан для всех. Следите за набором текста, указано выше – какие буквы русские будут показаны на экране.
if (strcmp("/moveback", cmdtext, true, 10) == 0) { MoveObject(obj,0, 0, 0, 4); GameTextForAll("O6JEKT BEPHYLCR HA CBOE MECTO", 5000, 3 ); //Написано: Объект вернулся на своё место return 1; }
Ну и в конце урока SendDeathMessage – отправляет сообщение о смерти игрока, отображенное под худом (HUD). Я обычно использую эту функцию в public OnPlayerDeath(playerid, killerid, reason).
Вид:
SendDeathMessage(killerid,playerid,reason);
Где:
killerid – ID убийцы (в случае суицида, killerid и playerid могут сравняться, а иногда killerid просто не высвечивается) playerid – ID убитого reason – причина смерти (обычно тут используются иконки оружия, но в код они не вписываются, а используется только reason), иногда можно использовать ICON_CONNECT и ICON_DISCONNECT (Иконки присоединения и выхода)
Пример использования:
в public OnPlayerDeath(playerid, killerid, reason) записываю: { SendDeathMessage(killerid, playerid, reason); return 1; }
Егор - Октябрь 2012, специально для LibertyCity.Ru