LuxurY forum (scripting SA-MP)

Объявление

с 29 марта 2007 года
LuxurY forum - крупнейший российский форум скриптинга в PAWNO
Новый форум
Задавайте свои вопросы

Архив скриптов


Наша кнопка:
LuxurY forum :: Scripting SA-MP
Код:

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » LuxurY forum (scripting SA-MP) » Обучающие статьи » Конструкции if/else if/else,case Циклы: for и while


Конструкции if/else if/else,case Циклы: for и while

Сообщений 1 страница 2 из 2

1

Конструкции if/else if/else

У нас в скрипте есть глобальная переменная:

Код:
new onlineplayers;

В OnPlayerConnect и в OnPlayerDisconnect происходит увеличение/уменьшение значений нашей глобальной переменной:

Код:
public OnPlayerConnect(playerid) {
onlineplayers++;
return 1;
}
public OnPlayerDisconnect(playerid,reason) {
onlineplayers--;
return 1;
}

Теперь используем конструкции.

Код:
public OnPlayerConnect(playerid) {
onlineplayers++;
if (onlineplayers == 0) { //1
print("Na servere net igrokov!");
}
else if (onlineplayers > 10 && onlineplayers < 20) { //2
print("Na servere bolshe 10, no men'she 20 igrokov!");
}
else { //3
printf("Na servere %d igrokov!",onlineplayers);
}
return 1;
}

1. if проверяет если значение переменной onlineplayers равно 0 то пишет в консоли сервера что игроков нет
2. else if проверяет если значение переменной onlineplayers больше 10 и меньше 20 то пишет в консоле сервера соответствующую надпись.
3. В остальных случаях просто пишется количество игроков.

Конструкция case

Допусти в гейммоде есть массив, в котором хранится статус каждого игрока:

Код:
new massiv[MAX_PLAYERS];

Администратор сервера сам назначает статусы игрокам.
Также статусы записываются в файл и при вхоже игрока загружаются.

Употребим конструкцию case в вызываемой функции OnPlayerConnect:

Код:
public OnPlayerConnect(playerid) {
switch(massiv[playerid]) { 1//
case 0: {
SendClientMessage(playerid,COLOR_GREEN,"* Вы обычный игрок!");
}
case 1: {//2
SendClientMessage(playerid,COLOR_GREEN,"* Вы элитный игрок!");
}
case 2: {
SendClientMessage(playerid,COLOR_GREEN,"* Вы модератор!");
}
case 3: {
SendClientMessage(playerid,COLOR_GREEN,"* Вы администратор!");
}}
return 1;
}

1. Здесь мы выбираем что будет проверять. В данном случает это значение массива massiv в ячейке playerid
2. Если значение ячейки равно 0, то шлется сообщение игроку, что он обычный игрок.
3. Аналогично и в остальных ситуациях.

Цикл while

Цикл while довольно редко используется, но все равно знать необходимо.
Цикл переводится как пока что-то, то что-то (прим. автора)

Рассмотрим на примере:

Код:
new a=50,b; //две глобальные переменные. Первая равна 50, а вторая 0

while (a > b) {//пока a больше b, то
b++; //увеличиваем b на единицу
printf("a > b  b=%d",b); //пишем в консоли значение b
}

Когда b будет равно a, то цикл прекратится.

Цикл for

Цикл for предназначен для перебирания значений.
Также его еще называют лупингом (loop,looping)

Рассмотрим на примере:

Код:
new onlineplayers; //глобальная переменная
for (new i=0;i<MAX_PLAYERS;i++) { //1
if (IsPlayerConnected(i) == 1) {//2
onlineplayers++;//3
}}

1. Назначение перебирания. То есть значение и будет в диапазоне от 0 до MAX_PLAYERS (200)
2. Если какой-либо игрок со значением ид в диапазоне от 0 до MAX_PLAYERS (200) находится в игре, то
3. Значение переменной onlineplayers увеличивается на единицу.

0

2

Еще есть такая штука:

do
{
}
while()

Пример:

new i;
do
{
   printf("d",i);
}
while (i++<10);

0


Вы здесь » LuxurY forum (scripting SA-MP) » Обучающие статьи » Конструкции if/else if/else,case Циклы: for и while