Делаем новые миссии. CLEO - скрипты, cutscene, статьи, программы. Игровые новости.
 
1.7.13 15:35 |

Циклы

Раздел: Основы скриптинга | Автор: yelmi | Рейтинг: 1.00 (1) | Хитов 2012
В SB используются следующие виды циклов:

FOR..END
WHILE..END
REPEAT..UNTIL


Циклы могут быть вложенными (т.е. один цикл внутри другого).

Внимание: не забывайте устанавливать задержку (0001: wait) в циклах, чтобы предотвратить зависание игры.
FOR..END

Этот оператор задает цикл со строго определенным числом итераций (повторений) Для него используется следующий синтаксис:

FOR <counter> = TO/DOWNTO <final value> [step = 1] ... END

Основные параметры: <counter> - переменная, которая используется в качестве счетчика итераций (повторений) цикла.

- стартовое значение счетчика: любое число (может быть имя модели).

TO/DOWNTO - при TO счетчик будет наращивать свое значение, при DOWNTO уменьшать.

<final value> - конечное значение цикла, при котором он завершит работу: любое число (может быть имя модели). Помните, что при DOWNTO конечное значение должно быть меньше стартового.

- (необязательный параметр) значение приращения или уменьшения счетчика при итерациях. По умолчанию его значение равно 1. При использовании дробных чисел в качестве значений счетчика, вы должны также указать параметр step с дробным значением.

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

Код:
var
$value: int = 0
$final: int = 100
end

FOR $MyCounter = 1 to $final step 2
$value += $mycounter
end


WHILE..END

Синтаксис:

WHILE <condition> ... END

Цикл WHILE работает до тех пор, пока выполняется условие. Условие проверяется перед итерациями, поэтому если оно будет сразу ложным, то цикл не выполнится никогда.

Код:
$var = 10

while $var > 11
inc($var)
end


так как условие в цикле ложно, скрипт никогда не придет на команду Inc($var)

Оператор While может принимать в качестве условий логические константы True и False: While True .. End - цикл будет выполняться бесконечно, пока вы не прервете его командой Break. While False .. End - цикл будет игнорироваться компилятором.

В текущей версии для цикла WHILE доступно только одно условие. Вы можете проверять большее кол-во условий внутри тела цикла и использовать команды Break и Continue.

REPEAT..UNTIL

Синтаксис:

REPEAT ... UNTIL <condition>

Цикл Repeat работает до тех пор пока не выполнится условие после команды Until. Условие проверяется после итераций, поэтому цикл всегда будет иметь минимум одну итерацию.

Оператор Repeat может принимать в качестве условий логические константы True и False: Repeat .. Until True - цикл будет иметь только одну итерацию Repeat .. Until False - цикл будет выполняться бесконечно, пока вы не прервете его командой Break.

В текущей версии для цикла REPEAT доступно только одно условие. Вы можете проверять большее кол-во условий внутри тела цикла и использовать команды Break и Continue.

Использование Continue и Break

Иногда вам может потребоваться пропустить текущую итерацию и перейти к следующей, например после проверки условия. Для этого существует ключевое слово Continue. Оно может использоваться в качестве параметра. Тогда оно обозначает метку, после которой происходит приращение счетчика и переход к следующей итерации.

Например:

Код:
if
$currentactor.dead
jf continue // 'continue' это внутренняя метка в начале цикла


В качестве отдельной команды оно обозначает опкод 0002 (jump), с переходом на следующую итерацию.

Код:
if
not $currentactor.dead
jf @next
Continue // jump continue
:next


Кроме этого существует команда Break, которая прерывает цикл. Она может использоваться как отдельная команда так и как параметр (jf break)

 

  1 2 3 4 5 6 7 8 9 10  

Родственные ссылки
» Другие статьи раздела Основы скриптинга
» Эта статья от пользователя yelmi

5 cамых читаемых статей из раздела Основы скриптинга:
» Работа со звуками в GTA San Andreas
» Директивы
» Контроль клавиатуры
» External Script – что это такое и как с ним работать?
» Панель, или список товаров. Часть II.

5 последних статей раздела Основы скриптинга:
» Директивы
» Дополнительные команды
» Ключевые слова
» Классы
» Циклы

¤ Перевести статью в страницу для печати
¤ Послать эту cтатью другу

MyArticles 0.6 beta for RUNCMS: by RunCms.ru


Реклама

Вверх     Вернуться на главную. Вход в Систему. Статьи. Скачать. Миссии. ФОРУМ Обратная связь.   
   
   
Яндекс.Метрика
   
   
- Генерация страницы: 0.03 секунд -