ZioHik | Дата: Суббота, 15.10.2011, 22:29 | Сообщение # 1 |
.::Offline::.
http://u.to/N46EAw
Сообщений: 831
[ 82 ]
Награды: 29
Статус
отсутствует
| Case - команда, которая проверяет переменную на то число, которое будет использоваться во время public'а, в котором есть эта команда.
Switch - команда, в которой указана переменная, в которой надо проверять число, которое указано в case'ах.
Code switch (<переменная>);
Что-ж, ради тренировки создадим в паблике OnPlayerDisconnect кейсы на различие между отключениями игроков от сервера. Сначала создадим переменные, в которые будут записываться имена игроков и текст для сообщения в чате:
Code new PlayerName[30], str[256];
Теперь укажем переменную, которую будет проверять кейсы (в данном случае команда будет проверять ID причины отключения игрока):
Теперь откроем новый поток с помощью { и начнем перебирать числа (вариантов отключения игрока всего три). Начнём с причины под ID 0 (Таймаут):
Затем еще раз открываем новый поток и пишем действия, которые будут выполняться, если именно это число будет записано в переменной. К примеру приведу такой вариант:
Code GetPlayerName(playerid, PlayerName, 30); format(str, 256, "%s покинул сервер (Timeout)", PlayerName); SendClientMessageToAll(0xAFAFAFAA, str);
Теперь закройте поток с помощью }. После всего этого паблик должен выглядить вот так:
Code public OnPlayerDisconnect(playerid, reason) { new PlayerName[30], str[256]; switch (reason) { case 0: { GetPlayerName(playerid, PlayerName, 30); format(str, 256, "%s покинул сервер (Timeout)", PlayerName); SendClientMessageToAll(0xAFAFAFAA, str); } return 1; }
После этого проделайте всё тоже самое с ID 1 (Leaving) и 2 (Kicked)...После этого закройте все 3 потока в один поток с помощью ещё одного } и после этого окончательный вид должен быть таким:
Code public OnPlayerDisconnect(playerid, reason) { new PlayerName[30], str[256]; switch (reason) { case 0: { GetPlayerName(playerid, PlayerName, 30); format(str, 256, "%s покинул сервер (Timeout)", PlayerName); SendClientMessageToAll(0xAFAFAFAA, str); } case 1: { GetPlayerName(playerid, PlayerName, 30); format(str, 256, "%s покинул сервер (Leaving)", PlayerName); SendClientMessageToAll(0xAFAFAFAA, str); } case 2: { GetPlayerName(playerid, PlayerName, 30); format(str, 256, "%s покинул сервер (Kicked)", PlayerName); SendClientMessageToAll(0xAFAFAFAA, str); } } return 1; }
Вот все и готово! Заходите в игру и проверяйте с помощью других игроков :). Сегодня вы научились использовать case'ы и делать с помощью них скрипты.
Автор: mweb.
|
|
| |
Seene | Дата: Пятница, 22.03.2013, 19:24 | Сообщение # 2 |
.::Offline::.
Бандит
Сообщений: 21
[ 0 ]
Награды: 0
Статус
отсутствует
| классно, збс. спс
|
|
| |
Smile_days | Дата: Понедельник, 27.05.2013, 16:48 | Сообщение # 3 |
.::Offline::.
Новичок
Сообщений: 10
[ 0 ]
Награды: 0
Статус
отсутствует
| Помогло
|
|
| |
gyff1978 | Дата: Воскресенье, 27.09.2015, 19:42 | Сообщение # 4 |
.::Offline::.
Новичок
Сообщений: 1
[ 0 ]
Награды: 0
Статус
отсутствует
| Помогло вроде нет ошибок
|
|
| |
мася2821 | Дата: Воскресенье, 11.10.2015, 09:26 | Сообщение # 5 |
.::Offline::.
Новичок
Сообщений: 5
[ 0 ]
Награды: 0
Статус
отсутствует
| чёт не получается =(
|
|
| |