Уроки моддинга
Основной раздел
Search
K
Links

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#.
Рассмотрим простой пример:
C#
Аналог в Sanny Builder
```
cs using System; using GTA;
namespace TestScript {
public class Thread : Script {
public Thread() {
Label1: goto Label2;
Label2: goto Label1;
}
}
}
</td><td>
{$CLEO} 0000: thread 'Thread'
:Label1 jump @Label2
:Label2 jump @Label1
0A93: end_custom_thread
</td></tr>
</tbody></table>
Согласитесь, похож ведь SannyBuilder на C#! С метками и прыжками кодить в C# намного привычнее.
Мы помним, что в SannyBuilder, наш вариант кода приведёт к ошибке, так как отсутствует "wait 0" после меток. В c# таже ситуация. Я тестировал этот код и игра у меня постоянно загружалась, но загрузится так и не смогла. На помощь мне пришел именно этот **wait**! В C# так же есть требования относительно задержки. И, вот наша первая команда с библиотеки **ScriptHookDotNet**:
cs Wait(0);
Теперь наш код должен иметь такой вид:
<table class="table table-bordered"><tbody>
<tr><th>C#</th><th>Аналог в Sanny Builder</th></tr>
<tr><td>
cs using System; using GTA;
namespace TestScript {
public class Thread : Script {
public Thread() {
Label1: Wait(0); goto Label2;
Label2: goto Label1;
}
}
}
</td><td>
{$CLEO} 0000: thread 'Thread'
:Label1 wait 0 jump @Label2
:Label2 jump @Label1
0A93: end_custom_thread
</td></tr>
</tbody></table>
Следует помнить, что нельзя делать прыжки на метки другого потока, так как они находятся не в области видимости оператора "goto". Да и в c# метками не особо часто пользуются, но вы должны о них знать. На этом урок окончен. Всем спасибо за уделённое время на урок :)|745|1|0||metki_i_pryzhki|1511734080