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 тут немає, оскільки це повідомлення виходить не одному конкретному гравцеві, а всім.
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("OB'IEKT POVERNUTYI NA SVOIE MISTO", 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