Работаем с циклами
Как мы все прекрасно видим, уроков реально по скриптингу мало, а также я заметил, что некоторые не умеют обращаться с циклами. О том, что многие здесь даже не ведают об операторах continue и break, я вообще промолчу. Думаю, данный урок будет им полезен. Постарался изложить все доступным языком.
Сперва узнаем - что же такое цикл?
Цикл - это конструкция, позволяющая выполнить определенное действие n-ное количество раз.
Циклы могут избавить программиста от очень муторной работы. Сравним коды, выполняющие одинаковую задачу:
PHP Code:

SendClientMessage(playerid, 0xFFFFFFFF, "");
SendClientMessage(playerid, 0xFFFFFFFF, "");
SendClientMessage(playerid, 0xFFFFFFFF, "");
SendClientMessage(playerid, 0xFFFFFFFF, "");
SendClientMessage(playerid, 0xFFFFFFFF, "");
SendClientMessage(playerid, 0xFFFFFFFF, "");
SendClientMessage(playerid, 0xFFFFFFFF, "");
SendClientMessage(playerid, 0xFFFFFFFF, "");
SendClientMessage(playerid, 0xFFFFFFFF, "");

PHP Code:

new a;
while(a++ < 10)
{
SendClientMessage(playerid, 0xFFFFFFFF, "");
}

Какой вариант лучше? Думаю, очевидно, что второй.
Циклы в Pawn бывают четырех видов:

while
for
do..while
switch..case

1. Цикл while.
Цикл while выполняет действие, пока указанное условие является истинным. Конструкция цикла:
PHP Code:

while(условие)
{
инструкции (говоря проще, операции)
}

То, что расположено внутри фигурных скобок, называется телом цикла.
Пример цикла:
PHP Code:

new a; //Объявляем переменную a
while(a < 10)
{
printf("%d", 10);
a ++;
}

В результате цикл выведет в консоль числа от 1 до 10.
Этот код еще можно сократить. В результате мы получим:
PHP Code:

new a; //Объявляем переменную a
while(a++ < 10)
{
printf("%d", a);
}

2. Цикл for.
Это, по сути, упрощенный цикл while. Его можно использовать, к примеру, для проверки данных всех игроков. Заменить пример цикла while, который я писал выше, циклом for, можно так:
PHP Code:

for(new a; a < 10; a++)
{
printf("%d", a);
}

Конструкция:
PHP Code:

for(переменные; условие; операция с переменной-счетчиком)
{
инструкции
}

3. Цикл do..while.
Цикл do..while похож на цикл while, но есть отличие. В чем же, спросите вы, оно заключается? А в том, что сначала выполняются инструкции, а потом проверяется условие. В цикле while все с точностью до наоборот. Конструкция цикла:
PHP Code:

do
{
инструкции
}
while(условие);

Опять же, пример скрипта, выводящего в консоль цифры:
PHP Code:

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

Первое число выведет вне зависимости от того, меньше ли оно десяти. То есть, если a будет равно, скажем, 17, в консоль это число все равно выведет, но остальные - нет.
4. Цикл switch..case.
Цикл switch..case перебирает значения указанной переменной. Конструкция цикла:
PHP Code:

switch(переменная)
{
case значение:
{
инструкции
}
case второе_значение:
{
инструкции
}
default: //Если значение переменной не равно ни одному (из тех, что в case)
{
инструкции

Пример цикла:

PHP Code:

new a = 12;
switch(a)
{
case 3:
{
print("a = 3");
}
case 7:
{
print("a = 7");
}
case 12:
{
print("a = 12");
}
default:
{
print("a не равняется ни одному из значений");
}
}

Также в цикле такого вида можно указывать диапазон значений. Диапазон указывается точками. К примеру:
PHP Code:

new a = 12;
switch(a)
{
case 3:
{
print("a = 3");
}
case 7:
{
print("a = 7");
}
case 9..15: //Если значение переменной a от 9 до 15
{
print("a = 12");
}
default:
{
print("a не равняется ни одному из значений");
}
}

То есть (в третьем кейсе), если значение a от 9 до 15, как и в первом примере, в консоль выведет: "a = 12". Также в одном кейсе можно указывать несколько значений. Пример:
PHP Code:

new a = 12;
switch(a)
{
case 7, 12, 18: //Если a равно 7, 12 или 18
{
print("a = 7 || a = 12 || a = 18");
}
case 5..10, 16..18: //Если значение a от 5 до 10, либо от 16 до 18
{
print("a = 5 || a = 6 || a = 7 || a = 8 || a = 9 || a = 10 || a = 16 || a = 17 || a = 18");
}
}

В кейсах может быть и проверка на символы. Они заключаются в одиночные скобки.
5. Операторы для работы с циклами.
Для работы с циклами есть два специальных оператора - continue и break. Сейчас разберемся, как они работают.
5.1. Оператор continue.
Допустим, у нас выполняются действия, и вдруг появляется необходимость переключить цикл на следующую итерацию. Что же в таком случае нужно делать? Использовать оператор continue. Этот оператор не выполняет оставшиеся действия текущей итерации, мгновенно переключая на следующую. Посмотрим, как его использовать, на примере. Предположим, у нас под таймером стоит цикл на всех игроков, где идут различные проверки, но тут (в одной из итераций) игрока нужно кикнуть. Цикл, вне зависимости от того, кикнут или не кикнут игрок, продолжит выполнение текущей итерации. Возьмем для этого цикл for:
PHP Code:

for(new a; a < 50; a++) //Проверяем первые 50 игроков
{
if(GetPlayerSpecialAction(a) == 2) Kick(a);
new b;
b ++;
}

В этом случае после кика переменная b все равно будет объявлена и увеличится на 1 (повторяю, это только пример. Инструкций может быть гораздо больше). А в этом примере экономится время, и сразу после кика выполняется переход к следующей итерации:
PHP Code:

for(new a; a < 50; a++) //Проверяем первые 50 игроков
{
if(GetPlayerSpecialAction(a) == 2)
{
Kick(a);
continue;
}
new b;
b ++;
}

То есть здесь после кика переменная b не объявится, и не выполнится инкрементация, а будет проверять уже следующего игрока.
5.2. Оператор break.
К примеру, у нас есть бесконечный цикл (немного о них можно почитать в п. 6), и нужно выйти из цикла до его "естественного" окончания. Для этого можно использовать оператор break.
Оператор break завершает цикл до окончания выполнения всех инструкций. Допустим, у нас, опять же, есть цикл на проверку пятидесяти игроков. Если значение денег десятого игрока равно $100, мы остальных игроков не проверяем (то есть завершаем цикл):
PHP Code:

for(new a; a < 50; a++)
{
if(a == 10 && GetPlayerMoney(a) == 100) //Если у игрока под ID 10 имеется ровно 100 долларов
{
break; //Завершаем действие цикла
}
}

6. Бесконечные циклы.
Циклы, конечно же, могут выполняться бесконечно. Проще всего делать бесконечные циклы, используя конструкцию for. Выглядеть это будет так:
PHP Code:

Код:
for(; ;) 
{ 
инструкции 
}

Думаю, для новичка этого вполне достаточно. Вопросы и отзывы можете писать ниже.