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

Переходы

Раздел: Основы скриптинга | Автор: yelmi | Рейтинг: 4.00 (3) | Хитов 3657
Существует три варианта переходов:

Существует три варианта переходов:

1. условные - 004d: jump_if_false @label
2. безусловный - jump @label
3. переход с возвратом (вызов процедуры) - gosub @Label

Условные переходы применяются в проверках, например:

Код:
if
< -- условие -->
004d: jump_if_false @label
<-- код -->

:label


Принцип работы таков: если условие данной проверки не выполнено, то переходим на метку :label.
Код (<-- код -->), который находится ниже 004d: jump_if_false @label, не выполняется.

Безусловный переход - jump @label, в отличии от условного перехода он выполняется в любом случае.

Код:
<-- код -->
jump @label
<-- код1 --> // эта строка игнорируется


такая запись бессмысленна, поскольку <-- код1 --> никогда не будет выполнен.

К примеру, есть необходимость при выполнении условия игнорировать <--код провала-->:

Код:
if
< -- условие -->
004d: jump_if_false @label
<-- код -->
jump @label_1

:label
<-- код провала-->
jump @label_3 //выход

:label_1


В случае выполнения условия переходим на метку :label_1, то есть <-- код провала--> (метка :label) не выполняется.

Переход с возвратом (вызов процедуры) - gosub @Label.

gosub – это переход с возвратом на следующую после gosub @Метка строку.
gosub всегда работает в паре с return.

Код:
:Lable 
gosub @Label_1 // переход на метку Label_1
< -- код -->
// этот код будет выполнен только после того,
// как отработает пара gosub @Label_1 - return
jump @Label_2 // Безусловный переход на метку :Label_2

:Label_1
< -- код 1-->
return //– возврат на следующую после gosub @Label_1 строку

:Label_2


В San Andreas поддерживается до 8 вложенных gosub.

Принцип работы:

Код:
:Lable 
gosub @Label_1 // (1) – переход на метку Label_1
< -- код --> // последним будет выполнен этот код
jump @Label_4

:Label_1
gosub @Label_2 // (2) – переход на метку Label_2
< -- код -->
return // (1) – возврат на следующую после gosub (1) строку

:Label_2
gosub @Label_3 // (3) – переход на метку Label_3
< -- код -->
return // (2) - возврат на следующую после gosub (2) строку

:Label_3
< -- код -->
return // (3) - возврат на следующую после gosub (3) строку


В примере показана работа трех вложенных gosub. Команда return будет отрабатывать в обратном порятке, то есть сначала отработает пара gosub @Label_3 - return // (3), затем пара gosub @Label_2 - return // (2) и только после этого отработает пара gosub @Label_1 - return // (1)

Говоря проще каждому gosub соответствует свой return.

 

  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 секунд -