# 00049. Циклы ( Часть 3 - repeat ). Вложенные циклы

Циклы ( Часть 3 - repeat ). Вложенные циклы|Мы опять изучаем циклы, и на очереди в нас - repeat.|wmysterio|wmysterio||||С вами wmysterio, и циклы далеко от меня и вас не делись :) Сегодня поговорим об третьем типе циклов - **repeat**. Этот цикл очень похож на "while", но отличие в том, что "repeat" сначала выполняет действия, а потом проверяет условия. При этом, в отличии от"while", выход с цикла будет если условие истинно! Вот для примера небольшой скрипт:

```
repeat
wait 0
 // ...опкоды...
until 0@ == 0
```

Сначала будут выполняться опкоды в блоке "repeat-until". После этого идёт проверка условия "0@ == 0". Если это условие выполняется, то мы выходим с цикла. Если нет, то начинаем цикл заново. Давайте напишем самый простой скрипт с использованием этого цикла:

```
:UNTIL
thread 'UNTIL'
wait 0

repeat
wait 0
 player.Money($PLAYER_CHAR) += 100
until actor.Dead($PLAYER_ACTOR)

end_thread
```

Смысл скрипта в том, что пока СЖ будет жив, он будет постоянно получать +100 денег. Давайте рассмотрим графический вариант этого скрипта:

![](https://github.com/wmysterio/scm-scripting-lessons/raw/resources/_pu/0/15530028.png)

И так, уже по-традиции, цвета линий:

* Желтый - обычное движение шарика;
* Фиолетовый - условие;
* Красный - движение шарика, если условие НЕ выполняется;
* Зелёный - движение шарика, если условие выполняется;

Лично я практически не использую этот цикл, но уверен, что он существенно упрощает коддинг и делает скрипт более читабельным.

Естественно в таком цикле можно использовать операторы "break" и "continue". Ваша задача - сделать скрипт с использованием этих операторов. :)

Итак, циклы мы рассмотрели. Осталось только одна важная тема - вложенные циклы. Что значит "вложенные"? Это циклы, которые находятся внутри других циклов. Вот небольшой пример использования вложенных циклов:

```
:UNTIL
thread 'UNTIL'
wait 0

for $Attempt = 1 to 5 step 1

 repeat
 wait 0
 player.Money($PLAYER_CHAR) += 100
 until actor.Dead($PLAYER_ACTOR)

end

end_thread
```

Как видите, цикл "repeat" вложен в цикл "for". Как и предыдущем примере, СЖ-ю будет постоянно прибавляться денюжка. Если СЖ умрёт, то денюжка будет и дальше прибавляться, но пока он не умрёт больше 5 раз ( исходя из цикла "for" ). Новичкам довольно сложно понять принцип работы скрипта, так как им тяжело представлять сами движения, но сделав пару скриптов, большинство начинает понимать как работает такая система. Чем больше попыток, тем лучше будет осваиваться материал.

Ваша задача - сделать три вложенных цикла ( в любом порядке ), а свои примеры пишите на форум. Я специально даю задания, что бы вы учились работать с циклами, так как это переход на новый уровень скриптинга.|1180|1|0|15530028`png`403`210`400\`208\`\`||cikly\_chast\_3\_repeat\_vlozhennye\_cikly|1499000993


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://lessons.sannybuilder.com/00100/00100/00049.-cikly-chast-3-repeat-.-vlozhennye-cikly.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
