# 000102. Метки и прыжки

Метки и прыжки|Всем хай! Этот короткий урок будет о метках и о том, как совершать прыжки на них.|wmysterio|wmysterio||||Как и в СанниБилдер, в C# так же есть подобная возможность. Начнём с меток. Синтаксис написания похож на 99% с SB, разница только в том, что символ **:** нужно ставить после названия метки:

```
cs
Label1:
```

Пример:

```
cs
using System;
using GTA;

namespace TestScript {

 public class Thread : Script {

 public Thread() {

 Label1:

 Label2:

 Label3: 
 
 Label4:

 }

 }
}
```

С метками скрипт уже во многом напоминает наш любимый SannyBuilder. Здесь также присутствуют правила написания меток ( и переменных в том числе ):

* Нужно использовать латинские символы в качестве имён;
* Первый символ не должен начинаться с цифры;
* Нельзя разделать название пробелами и использовать спец-символы;
* Название должно быть уникальным (не должно совпадать);

Прыжки! Наш любимый **jump** теперь есть в c#. Как и SannyBuilder, в c# есть инструкция **goto**, что равносильна команде **jump** в SB. Синтаксис в C# следующий:

```
cs
goto Label1;
```

Минусы в том, что метки не сохраняются в каком-то буфере обмена, поэтому нужно запоминать все метки. К тому-же метку нельзя писать, если на неё не переходит хоть один оператор goto, что не совсем удобно.

× \*\*Примечание:\*\* такие зависимости действуют не во всех версиях C#.

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

<table><thead><tr><th>C#</th><th>Аналог в Sanny Builder</th></tr></thead><tbody><tr><td><p>```</p><p>cs using System; using GTA;</p><p>namespace TestScript {</p><p>public class Thread : Script {</p><p>public Thread() {</p><p>Label1: goto Label2;</p><p>Label2: goto Label1;</p><p>}</p><p>}</p><p>}</p><pre><code>&#x3C;/td>&#x3C;td>
</code></pre><p>{$CLEO} 0000: thread 'Thread'</p><p>:Label1 jump @Label2</p><p>:Label2 jump @Label1</p><p>0A93: end_custom_thread</p><pre><code>&#x3C;/td>&#x3C;/tr>
&#x3C;/tbody>&#x3C;/table>

Согласитесь, похож ведь SannyBuilder на C#! С метками и прыжками кодить в C# намного привычнее.

Мы помним, что в SannyBuilder, наш вариант кода приведёт к ошибке, так как отсутствует "wait 0" после меток. В c# таже ситуация. Я тестировал этот код и игра у меня постоянно загружалась, но загрузится так и не смогла. На помощь мне пришел именно этот **wait**! В C# так же есть требования относительно задержки. И, вот наша первая команда с библиотеки **ScriptHookDotNet**:

</code></pre><p>cs Wait(0);</p><pre><code>

Теперь наш код должен иметь такой вид:

\<table class="table table-bordered">\<tbody>
\<tr>\<th>C#\</th>\<th>Аналог в Sanny Builder\</th>\</tr>
\<tr>\<td> </code></pre><p>cs using System; using GTA;</p><p>namespace TestScript {</p><p>public class Thread : Script {</p><p>public Thread() {</p><p>Label1: Wait(0); goto Label2;</p><p>Label2: goto Label1;</p><p>}</p><p>}</p><p>}</p><pre><code>\</td>\<td> </code></pre><p>{$CLEO} 0000: thread 'Thread'</p><p>:Label1 wait 0 jump @Label2</p><p>:Label2 jump @Label1</p><p>0A93: end\_custom\_thread</p><pre><code>\</td>\</tr>
\</tbody>\</table>

Следует помнить, что нельзя делать прыжки на метки другого потока, так как они находятся не в области видимости оператора "goto". Да и в c# метками не особо часто пользуются, но вы должны о них знать. На этом урок окончен. Всем спасибо за уделённое время на урок :)|745|1|0||metki\_i\_pryzhki|1511734080 </code></pre></td><td></td></tr></tbody></table>


---

# 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/00200/00100/000102.-metki-i-pryzhki.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.
