Awesome | Дата: Среда, 22.02.2012, 21:18 | Сообщение # 1 |
 Генерал-майор
Группа: Проверенные
Сообщений: 70
Награды: 14
Репутация: 25
Статус: Offline
| Итак, по сути, этот урок повторение и закрепление 11 урока. Сейчас я покажу, как выдавать в чат всем игрокам сообщение о входе или выходе игрока на сервере. Для начала создадим две константы. Code #define COLOR_GREEN 0x33AA33AA //ЗЕЛЕНЫЙ #define COLOR_RED 0xAA3333AA //КРАСНЫЙ
Создаем их, чтобы не писать HEX-код цвета, которым будет выделено сообщение мы будем писать имя константы вместо кода. Теперь пишем скрипт сообщения, когда игрок подключился к серверу, скрипт приведен ниже: Code public OnPlayerConnect(playerid) { new plname[MAX_PLAYER_NAME]; new string[40]; GetPlayerName(playerid,plname,24); format(string,sizeof(string),"***К нам присоединился %s [ID:%d]",plname,playerid); SendClientMessageToAll(COLOR_GREEN,string); return 1; }
Для вас сделать сообщение о входе игрока на сервер, думаю, не составит труда, потому что тут все понятно. Переходим к другой части скрипта – «Сообщение о выходе игрока из сервера» (по причинам). Рассмотрим автовызываемую функцию OnPlayerDisconnect. Code public OnPlayerDisconnect(playerid, reason) { return 1; }
Reason – это причина отключения от сервера. Данный параметр может принимать 3 значения: 0 – принудительно отключился по причине ошибки клиента или иной другой ошибки. 1 – покинул игру самостоятельно, 2 – был кикнут администратором. Для того чтобы правильно выдать сообщение, тут нам нужен оператор switch, а проверять значение мы будем у параметра reason. Если вы хорошо поняли 9 урок, думаю, вам тут все будет понятно. В зависимости от значения параметра reason, в чат будет выдаваться всем игрокам определенное сообщение с указанием причины отключения игрока. Скрипт будет выглядеть следующим образом:
Code public OnPlayerDisconnect(playerid, reason) { new string[64], plname[25]; switch(reason) { case 0: { GetPlayerName(playerid,plname,24); format(string,sizeof(string), "*** %s [ID:%d] Покинул(а) сервер(Вылет)",plname,playerid); SendClientMessageToAll(COLOR_RED,string); } case 1: { GetPlayerName(playerid,plname,24); format(string,sizeof(string), "*** %s [ID:%d] Покинул(а) Сервер(Выход)",plname,playerid); SendClientMessageToAll(COLOR_RED,string); } case 2: { GetPlayerName(playerid,plname,24); format(string,sizeof(string), " %s [ID:%d] Покинул(а) Сервер(кик/бан)",plname,playerid); SendClientMessageToAll(COLOR_RED,string); } } return 1; }
Итак, я думаю тут у вас не возникнет сложностей.
я вернулся
|
|
| |