0009. Редактирование main.scm. Потоки и опкоды (Часть 1)
Редактирование main.scm. Потоки и опкоды (Часть 1)|В этом уроке мы ознакомимся с базовыми понятиями скриптов: потоками, командами, метками, прыжками и задержкой. Будет введено понятие опкода.|wmysterio|wmysterio||||Для начала сделаем резервную копию игровых файлов. А именно main.scm и** script.img**. Найти их можно в папке с игрой: "Игра\data\script".
Теперь открываем Санни Билдер. И нажимаем "Файл->Открыть" и указываем "main.scm" ( не забывайте в скобках указать формат "SCM", иначе нужного файла не найти ). Открыли? Хорошо. Видите сколько строк? Дух захватывает правда? А представьте, что это всё напечатали вы! Если у Вас будет упорство и терпение, то всё вполне реально, хотя как правило обходится всё меньшим количеством кода. Но раз мы хотим что то сделать самим, то давайте выделим всё и нажмем кнопку DEL`. Чистый лист! Какое облегчение! Теперь можно делать что то своё! Но для минимальной работы скрипта, нужно указать некоторую необходимую информацию. Скопируйте эти строки:
Затем нажмите кнопку F7. Запустите игру ( <kbd>F8
), обязательно нажимаем "НОВАЯ ИГРА"! Посмотрите что изменилось. Думаю большинство заметило, что нету вступительного ролика и прочего. Такой мейн называется "Чистым".
× **ВАЖНО:** При редактировании потоков начинать новую игру обязательно.
Начнем с потоков думаю. Я не буду выражаться какими то сложными выражениями. Скажу только несколько слов о них. Я назову это отдельным блоком, в котором делаются некоторые действия. Каждый поток имеет свое имя, как и каждый человек. Нельзя создать два потоки с одинаковыми именами и длиной больше 15 символов. Рекомендую брать пример с оригинального "main.scm", где длина потока составляет не больше 7 символов. Лучше делать так, как это делали разработчики игры.
× **Примечание:** Названия потоков должно состоять только с латинких символов, чисел и символа **_**
Как же создать поток? Для начала изучим правила написания потока. Каждый поток начинается командой:
и заканчивается командой ( команда завершения или деактивации ):
Это очень легкие команды, думаю за небольшой промежуток времени вы запомните их.
Что такое метка? На этот вопрос я очень легко могу ответить, и этот ответ станет основой скриптинга, поэтому запоминайте.
- Как узнать метку и её создать? Создание метки очень просто. Нужно написать сначала символ **:** а затем ввести имя метки. Вот пример:
Узнать метку можно за правилами написания, о котором я написал выше. Принято писать метки с теми именами, что и поток, далее уже после имени потока добавляют несколько чисел или букв. С техничекой точки зрения метка - это смещение в файле "main.scm" и представляет собой обычное число. В прочем, для нас это не важно, так как Sanny Builder все эти смещения высчитывает самостоятельно, основываясь на наших метках.
Пример написания потока и и его меткок:
Весь скриптинг основан на построчном считывании информации. То есть одна команда - одна строка. В примере показано, что сначала будет выполняться команды от метки ":POTOK_1", затем ":POTOK_2" и вконце ":POTOK_3". Естественно можно изменить порядок выполнения меток, не изменяя их положения. Для этого служит команда jump. Если перевести дословно, то это значит прыжок. Далее мы будем использовать именно это выражение. Что же, давайте напишем пример, где используются прыжки:
Сложновато, правда? Далее будет ещё сложнее. Особенно если вы решили увидеть чужой скрипт. :) Но не будем о грустном! Разобраться не так уже и сложно. Давайте представим маленький шарик. Представили? Назовём его "Указатель". Нет, пусть будет просто "Шарик" :) Этому шарику предстоит пройти определенный путь. Начинает путь наш шарик с имени потока, то есть с команды "thread", и начинает идти вниз. Используя прыжки ( jump ) можно нарисовать путь прохождения шарика. Я уже нарисовал путь. Вот по примеру должно примерно так получится:
Итак, вы увидели шарика. Оранжевым указано куда именно я направлял шарика. Я специально загрузил этот рисунок, что бы вам легче было представить себе принцип работы скриптов. Если шарик достиг места финиша, то он автоматично отправляется на заслуженную пенсию и больше использоваться в потоке не будет, пока его не вызовут опять на службу. :)
Как запустить поток и что нужно для его правильной работы? Хороший вопрос. Особенно интересно слово "правильной"! Что же, думаю самое время познакомиться с опкодами! Это наши верные помощники! Так и будем называть их, потому что они помогают выполнить кое-какие действия. Для правильной работы нам нужно запомнить помощника по имени 0001:, то есть опкод:
Он обычно стоит после названия метки. Они там должны находится не всегда, а только в в случаи необходиомости, например в циклах ( будет рассматриваться в следующих уроках ). Но в целях обучения мы будем располагать опкод после каждой метки.
С новой версией СБ и Клео, в целях удобства, ему присвоили статус команды ( так званный кейворд ), и мы можем писать просто
Технически разницы между опкодами и командами нету - команда имеет упрощённый синтаксис, но в процессе преобразования заменяется на опкод. Опкод - это операционная код ( команда ).
Что бы запустить наш поток, то есть призвать нашего шарика на старт, используется такая команда:
Она, собственно, делает поток активным. Таким образом, пишем правильный запуск потока:
Конечно, толку от нашего примера никакого, но, думаю, вы приобрели необходимый опыт в написании потоков.
× **ВАЖНО:** Команду запуска потока нужно давать в **активном потоке**, иначе поток не запустится!
В нашем случае, поток вызывается с активного потока ( "MAIN" ), а когда поток запущен командой "thread", то вызванный поток сам стает активным, так сказать вызывается тогда, когда шарик при деле :) Первый поток называется ГЛАВНЫМ, или MAIN.
× **Примечание:** пустые строки игнорируется Sanny Builder и носит только косметический характер.|4763|1|0|06743791`png`480`510`400`425``\||redaktirovanie_main_scm_potoki_i_opkody_chast_1|1498200845
Last updated