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'ы и делать с помощью них скрипты.