Как написать мод бесконечное лето
Текстовой редактор нужен для работы с командами которые мы будем прописывать в наш мод.
Есть два блока. init и init python(Питон).
Все диалоги, bg, cg, sprites и music, короче всё что связано с сюжетом, прописывается после команды label
По сути своей это команда используется для разделения мода на части.
$ mods [«это_лэйбл»] = u»ЗДЕСЬ ВПИСЫВАЕМ НАЗВАНИЕ МОДА»
$ style.инициал_txt = Style(style.default)
$ style.инициал_txt.font = «путь к шрифту»
$ style.инициал_txt.color = «цвет»
$ style.инициал_txt.size = размер
$ style.инициал_txt.drop_shadow = []
$ style.инициал_txt.drop_shadow_color = «#000»
$ style.инициал_txt.kerning = 1
jump label_название лэйбла
(jump через 4 пробела)
Он нужен для совершение так сказать прыжков между одним и другим днём, то есть.
Полезной вещью для вас будет файл lists, в котором находиться все названия бг, цг и т.п из оригинальной игры.
Для того чтобы персонажи вели диалог есть ID персонажей.
scene bg название_фона
Также команда scene используется не только на bg, но и на cg.
Также как и бг, спрайты из оригинальной игры находятся в том файлике, который я кинул в один из разделов.
Всего в игре 7 позиций у спрайтов:
fleft, left, cleft, center, cright, right, fright
Прописывается так:
show dv smile pioneer2 at left
Спрайт Алисы появиться слева.
Работает так:
hide имя персонажа
$ persistent.sprite_time = «время суток, которое нам нужно»
$ время суток, которое нам нужно_time ()
Прописывают их около bg, cg и спрайтов так:
scene bg(cg) название бэграунда with один из видов плавности
Если вы будете добавлять что либо в больших количествах советую использовать # он разделяет определённый места в init-блоке:
Также аббревиатура нужна для того чтобы сокращёно вписывать добавленные вами изображения, музыку, персонажей и спрайты.
$ Аббревиатура имени = Character (u’Имя в игре’, color=»Цвет имени», what_color=»Цвет диалога»)
image аббревиатура = «Путь к изображению»
$ аббревиатура = «Путь к музыке»
Со звуками и амбиенсами работает так же.
image аббревиатура = «Путь к спрайту», учтите время на него не влияет.
Дело в том что автоматически при включении команды persistent.time они не будут менять цвет при смене суток, так что для каждых времени суток придётся прописывать спрайт.
Если кто знает способ получше кидайте в комментарии.
Переменные нужны для того, чтобы игра запоминала каждый выбор игрока
Вызов переменных происходит во всем уже известном init-блоке. Имена и значения у переменных могут быть любые, лучше использовать короткие английские слова или цифры (цифры только в значении).
После выполнения данных команд переменная «choice» будет иметь значение «True», а переменная «Count» увеличит свое значение на единицу.
Для того чтобы предоставить игроку выбор мы создаём блок menu.
В данном примере Ульяна называет гг дураком, главный герой, может сказать, как джентельмэн просто сказать нет, не вестись на провокации Ульяны и увеличить «good» на 1, так и сказать ей что она дура и приблизиться к плохой концовке.
Можно задать условии при котором выбор игрока будет влиять на последующие варианты.
Этот отрезок показывает, если значение переменной «good» больше нуля, то игра продолжится на метке «good», если же нет, то мы переходим на метку «bad».
Теперь отталкиваясь от прошлых выборов гг будут добавляться или убираться различные варианты ответов.
В этой ситуации есть три варианта. Первый вариант, если мы ничего не совершили с Алисой. Второй вариант, если мы оказали Алисе помощь. Третий вариант, если мы с Алисой были грубы.
С картой разобрались поехали дальше!
$ backdrop = «days»
$ new_chapter(1, u»Мой мод. День первый.»)
$ renpy.movie_cutscene(«Путь к видео»)
Прописываем сразу в лэйбле
Существует два вида пауз renpy.pause и просто pause
show prologue_dream (показать)
hide prologue_dream (скрыть)
Если вы хотите запретить игроку перематывать игру назад, воспользуйтесь функцией:
$ renpy.block_rollback()
Я брал самые интересные команды для вашего мода, так что пользуйтесь, но если вам их не достаточно можете взять информацию с таких ссылок как:
Уроки моддинга
Как создать свой мод для игры Бесконечное Лето [vk.com]
Если хотите изучить азы и не копаться в моём руководстве то вам подойдёт такая ссылка:
Как сделать и выложить мод для игры «Бесконечное Лето»
Лето, Советы и (не)много кода
Блог по моддингу Бесконечного Лета Официальный новостной портал мода «Советские будни»
Страницы
Гайды по моддингу
Команда «init:» создаст наш блок.
Пришла пора назвать наш мод и сделать запуск из меню «Моды и пользовательские сценарии».
Чтобы наш мод шёл плавно и без проблем, необходимо, чтобы из каждого блока можно было попасть в следующий. Для кинетических модов (моды, которые не имеют выбора и движутся по одной сюжетной линии) вообще не обязательно иметь более одного блока, но можно использовать несколько для красоты.
После этого урока ты уже сможешь написать кинетический мод со встроенными материалами.
Создаём наш запускаемый блок:
Едем дальше. Теперь ты можешь писать любой текст, включать любую музыку и вставлять любые картинки. Как? Очень просто!
Выглядеть это будет так:
Комментарии в коде можно оставлять с помощью #. Движок игры пропускает всё, что написано после этого символа и сразу переходит на следующую.
Ты уже достаточно потренировался с линейным моддингом, но хочется чего-то большего?
Добро пожаловать во второй урок!
Но до этого надо исправить парочку недочётов: остановим музыку.
После указания персонажа, эмоции и типа одежды указываем, за кем должен стоять персонаж. В данном случае на экране у нас только Славя, поэтому пишем behind sl. Если ты используешь far или close, то команда behind должна стоять после. Но обязательно перед with-командой (или at, если она есть).
# Первые шаги
# Благодарности
# Предпосылки
# Создание мода
# Написание кода
Стиль и синтаксис Ren’Py похож на Python. Если знакомы с ним, то проблем возникнуть не должно.
Файлы состоят из блоков и команд в блоках, например:
Команды в блоках должны везде иметь одинаковый отступ. Будь то 2 или 4 пробела. В большинстве случаев рекомендуется использовать 4 пробела.
В большинстве случаев в редакторе кода будет по-умолчанию выставлено значение отступов, поэтому рекомендуется использовать TAB для отступов.
# Объявление мода
Шаги, приведенные ниже крайне важны. Без них мод не будет виден в списке модов в игре.
Для того чтобы игра поняла, что файл (в котором строчки будут написаны) является модом, нужно написать следующее:
Разберем более детально пример выше:
Теперь, для того, чтобы игра поняла, где начинается мод, нужно добавить начальный лейбл:
Если вы хотите поменять шрифт в списке, то конструкция будет следующей:
Можно использовать как TrueType (.ttf), так и OpenType (.otf) шрифта.
Также можно добавить цвет:
И изменить размер шрифта:
# Написание сценария
Далее, в метке my_mod можно начинать писать сценарий. В нем используется специальный синтаксис Ren’Py, который мы разберем далее.
# Метки
Использование меток позволяет облегчить процесс создания мода, путем разделения сценария на части.
Общий синтаксис метки выглядит так:
# Переходы между лейблами
Есть два вида переходов:
В данном случае команды после «прыжка» будут пропущены игрой, например, фраза «действия после прыжка» из примера ниже не будет выведена на экран игрока. Любые другие команды, которые были написаны после прыжка также не сработают.
Приведём ещё один пример для наглядности
В первом лейбле идут некие действия, а затем мы вызываем второй лейбл, в котором тоже идут некие действия. Из-за того, что мы вызвали второй лейбл, а не прыгнули на него, при команде return внутри вызванного лейбла мод не завершится — нас просто выкинет обратно на первый лейбл, потому что мы прекратили ‘вызов’ второго лейбла и вернулись обратно на первый. Но! Вернулись не в самое его начало, а продолжили работу после момента с вызовом второго лейбла.
# Реплики
В примере ниже представлен пример реплик Мику и Ульяны, имена которых ещё не известны:
В первом случае, имя пионера или пионерки будет сменено на «Пионер/Пионерка», сохраняя свой цвет. Во втором же случае имя персонажа будет сменено на «Девочка», сохраняя свой цвет.
Смена стиля интерфейса
Есть всего 4 варианта:
Смена окраски спрайтов согласно времени
Всего существует 3 варианта раскраски спрайтов. Все они происходят через переменную persistent.sprite_time
Пример использования смены окраски спрайтов вкупе со сменой стилей интерфейса выглядит так:
# ADV и NVL режимы повествования
Существует два основных стиля изложения материала, используемых в визуальных новеллах:
ADV : Визуальные новеллы, созданные в стиле ADV, представляют собой диалог и повествование, выводимые на экран по одной строке за раз, как правило, в окне, расположенном в нижней части экрана.
NVL : Визуальные новеллы, созданные в стиле NVL, представляют собой несколько строк на экране, выводимые одновременно в окне, которое занимает весь экран.
По умолчанию меню отображаются в ADV-режиме, занимая весь экран. Существует также альтернативное представление меню в NVL-режиме, в котором меню отображаются сразу после текущей страницы текста NVL-режима.
Примеры перехода в NVL и ADV режимы повествования:
Плавные переходы окон
Не забывайте про плавные переходы для окон, в которых ведётся повествование.
Пример использования плавных переходов окон выглядит так:
Появление персонажа в NVL-режиме
Если этого не сделать, то внутри nvl-режима повествования персонажи без параметра kind=nvl будут говорить в adv-режиме.
Обратите своё внимание, что можно сделать и по другому — сделать цикл, который будет менять объявление персонажей в зависимости от текущего режима повествования. Именно такой способ и используется в БЛ.
# Оформление текста
Примеры текстовых тегов:
Тег жирного шрифта выводит текст, расположенный между самим тегом и его закрывающим тегом, жирным шрифтом.
Текстовый тег color отображает текст, расположенный между самим тегом и его закрывающим тегом, в указанном цвете. Цвет должен быть в формате #rgb, #rgba, #rrggbb или #rrggbbaa.
Тег курсива отображает текст, расположенный между самим тегом и его закрывающим тегом, курсивом.
Тег зачеркивания проводит черту через текст, расположенный между тегом и его закрывающим тегом.
Тег подчеркивания подчеркивает текст, расположенный между самим тегом и его закрывающим тегом.
Тег ожидание – самозакрывающийся тег, который ждёт, пока читатель нажмёт на кнопку для продолжения. Если для тега задан аргумент в форме числа,то ожидание автоматически заканчивается, когда заданные секунды проходят.
Полный список текстовых тегов можно найти внутри соответствующей статьи в документации Ren’Py
# Бэкграунды [БГ]
Общий синтаксис для вывода фона: scene или show
Разница между scene и show
В первом случае, команда очищает все слои и показывает изображение, во втором — просто показывает изображение поверх других. Приведём пример:
Это был пример с использованием scene для показа изображения. Фона, в нашем случае.
# Иллюстрации [ЦГ]
Общий синтаксис для вывода иллюстраций: scene или show
# Спрайты
Вызывается спрайт с помощью: show
Обычно спрайты состоят из слов, разделённых пробелом:
В оригинальной игре имя персонажа совпадает с ID говорящего из предыдущего раздела этого руководства
Список всех спрайтов пока можно найти здесь
Если персонаж уже на экране, то повторное использование show будет менять эмоцию и/или одежду, если при повторном использовании у персонажа имеется «тэг». Скажем, в команде show un cry sport — un выступает в качестве «тэга» персонажа, поэтому при смене одежды/эмоции не нужно будет убирать предыдущую картинку. Точно также тэги работают и с изображениями по типу БГ, ЦГ, и прочих.
Для того, чтобы убрать персонажа, воспользуйтесь: hide
Если вы хотите вслед за этим сменить декорации, то прописывать hide для каждого персонажа не обязательно, команда scene сама их уберет
# Действия с изображениями
# Позиционирование
Всего в игре 7 позиций где может находиться спрайт:
На скриншоте выше были использованы следующие команды:
На скриншоте выше как раз были использованы эти атрибуты. Команды:
# Анимации появления
Мы можем показать спрайты, bg и cg с некоторым замедлением, плавно.
Атрибутов для плавности 6, они отличаются лишь своей скоростью:
Также можно группировать несколько объектов для одновременного начала эффекта:
В приведенном примере мы попадем в ночной автобус и перед нами предстанет улыбающаяся Славя, и все это с задержкой в 2 секунды.
Если все вышеприведённые примеры Вас не устраивают, можно добавить свой атрибут плавности. Для этого, пропишите его в блоке init.
Я более чем уверен, что вы видели эффект того, как иногда ГГ моргает или вовсе закрывает глаза. Мы можем реализовать подобную возможность!
blink и unblink это разные эффекты, они не могут отменить друг друга.
Так же к эффектам моргания можно применить атрибут плавности.
# Добавление своих изображений
Вполне может быть, что по сюжету Вашего мода, может не хватить имеющихся БГ, ЦГ и спрайтов. В таком случае, мы добавим свои.
И использовать его:
Тэги к изображениям
Настоятельно рекомендую использовать тэги. В приведённом ниже примере слово bg выступает в виде тэга к изображению. Если объявить несколько БГ с таким тегом, то при показе следующего он автоматически заменит предыдущий.
Более детальную информацию про ATL
(opens new window) смотрите в Продвинутом руководстве.
# Звуки
# Добавление звуков, музыки, эмбиенса
Добавление различных аудио файлов в ваш мод происходит посредством команды, приведённой выше. Приведём пример использования.
# Музыка
# Окружение
# Прочее
# Плавный вход/выход музыки
Команды fadein и fadeout являются необязательными. fadeout дает время затухания для текущей проигрываемой музыки в секундах, в то время как fadein дает время, необходимое для плавного «входа» новой музыки.
# Зацикливание и разцикливание музыки
Команды loop и noloop также являются необязательными. loop заставляет музыку зацикливаться, в то время как noloop заставляет ее играть только один раз. Если ни один из них не задан, используется значение по умолчанию канала.
# Поочерёдное воспроизведение
Оператор queue используется для создания очереди аудио файлов. Они будут воспроизведены, когда канал закончит воспроизведение текущего воспроизводимого файла, если таковой имеется.
# Видео
# Полноэкранные видеоролики
# Видео, как отображаемые объекты и спрайты
Movie принимает два параметра:
play — строка, содержащая имя воспроизводимого видеофайла. Параметр всегда должен быть задан.
Вот пример определения видео спрайта:
Видеоролик, прописанный через Movie также можно использовать как часть экрана, при условии, что он создан во время фазы инициализации (init-блок) (например, как часть оператора image).
Экраны можно прописывать и вне init-блока.
Как написать мод бесконечное лето
Подожди, писать заклинания еще рано, сначала нужно понять, как правильно расставлять слова для эффекта
Структура файла выглядит примерно так:
Команды в блоке ВСЕГДА имеют отступ в 4 пробела относительно команды говорящей нам о начале блока.
Есть несколько команд начинающих блок, пока стоит лишь запомнить то, что после команды, начинающей блок всегда ставится двоеточие (:)
На данном этапе создания мода нам понадобится лишь одна блоковая команда
Существует 2 варианта перейти от одного блока к другому
В этом варианте сначала выполняется первый блок, а затем второй. При этом используется команда
Вот уже знакомый нам пример:
В этом случае если написать в блоке vasya_mod_d1 что либо после jump’a, то игра просто пропустит это
В отличии от прыжка, при использовании этого варианта после полного выполнения блока на который переходит игра, она вернется в первоначальный и продолжит его выполнение после команды. Команда для этого:
Ну и как же без примера:
Окончание блоков, переход к которым осуществляется именно этим методом имеет некоторые особенности, о которых можно узнать дальше
Если к этому блоку ведут jump’ы, то конец блока можно ничем не выделять, если только это не последний блок в вашем моде (Последний блок 1/x концовки). В ином же случае последней командой блока должна быть команда return. Зачем? В случае если это последний блок, чтобы игра могла закончить обработку мода и вернуться в главное меню. Если же на блок привела команда call, то игре просто необходимо знать, когда вернуться в предыдущий блок.
Получается что наш пример call не будет работать и нам придется привести его к такому виду:
Благодаря движку игры, это было реализовано донельзя просто.
Просто в виде команды пишем следующий текст
Все просто, этот ID говорит нам о том, с кем же сейчас ГГ разговаривает
Для текста от автора ID не нужен
Остальных говорящих вы можете увидеть на прикрепленной картинке да, картинка копипаст
Для примера мы попросим поздороваться каждого из основных говорящих
В игре вы встречались с тем, что некоторые слова во фразах персонажей были как-то выделены или вовсе были в ковычках. Для этого используются специальные теги.
Как мы уже знаем, ковычки ограничивают реплики персонажей, так как же нам использовать их внутри этих реплик?
Чтобы ковычки не учитывались игрой, перед ними нужно поставить \
В самой игре при смене местоположения нашего ГГ меняется и картинка на фоне (bg)
Так как же нам показать где сейчас наш герой?
А делается это при помощи команды scene bg
Так же в архиве приложен текстовый файл из которого сразу можно скопировать нужную строку
Вызываются все спрайты командой show
Имя спрайта обычно состоит из нескольких слов, разделенных пробелами
В оригинальной игре имя персонажа совпадает с ID говорящего из предыдущего раздела этого руководства
Если персонаж уже на экране, то повторное использование show будет менять эмоцию и/или одежду
При простом использовании show он будет появляться просто по центру, это можно исправить добавив в конец at
Всего в игре 7 позиций где может находиться спрайт:
fleft, left, cleft, center, cright, right, fright
На приведенном скриншоте были использованы команды:
Так же можно показать персонажа ближе\дальше. Для этого можно воспользоваться атрибутом close/far
На втором скриншоте как раз были использованны эти атрибуты. Команды:
Для того, чтобы убрать персонажа воспользуйтесь
Если вы хотите вслед за этим сменить декорации, то прописывать hide для каждого персонажа не обязательно, команда scene сама их уберет
Тут принцип как и с bg, только надо использовать scene cg
Примеры думаю не нужны.
Мы можем показать спрайты, bg и cg с некоторым замедлением, плавно
Так же есть еще несколько эффектов, о которых речь пойдет далее, некоторые из эффектов можно применить не только к изображениям, но и даже друг к другу!
Чтобы показать наши картиночки более красиво для человеческого глаза, мы можем использовать специальный атрибут. Это будет выглядеть примерно так:
Так же можно группировать несколько обьектов для одновременного начала эффекта
В приведенном примере мы попадем в ночной автобус и перед нами предстанет улыбающаяся Славя, и все это с задержкой в 2 секунды.
Так же атрибут плавности может применяться к другим эффектам.
Если все вышеприведённые примеры Вас не устраивают, можно добавить свой атрибут плавности. Для этого, пропишите его в блоке init.
После этого мы можем использовать наш переход, так-же, как и все остальные.
Я более чем уверен, что вы видели эффект того, как иногда ГГ моргает или вовсе закрывает глаза. Мы можем реализовать подобную возможность!
Будьте осторожны: blink и unblink это разные эффекты, они не могут отменить друг друга
При назначении позиции координаты pos и align можно комбинировать.
Давайте, для примера выведем спрайт улыбающейся Мику слева экрана.
Очень и очень многое. Допустим, анимации.
Вот стоит у нас слева на экране Мику, объявленная в прошлом блоке, но вдруг появилась Ульяна, и Мику из вежливости решила подвинуться чуть правее. Как мы это сделаем? Можно просто задать координаты положения, и Мику «телепортируется» туда, но разве это красиво? Не. У нас другие методы.
Смена положения.
Для смены положния существует 4 метода: linear, ease, easein, easeout. Для начала нам понадобится только linear. Как он работает? Очень просто. После linear мы пишем время в секундах, а после новые координаты в системе ATL.
Пример. Созданим перемещение к правому краю экрана:
Теперь добавим это в наш код.
И импортируем её в код:
Наверное вы и сами слышали, что в «Совенке» никогда не бывает тихо, где-то играет приятная музыка, иногда мы слышим стуки в двери, три раза в день, звук горна собирает всех обитателей у столовой.
Послушать эту музыку можно прямо в игре, зайдя в раздел Галерея
Для проигрывания прочих звуков нам понадобится все та же команда play, только немного в другом виде
Увы, подобрать нужный звук вам поможет лишь базовое знание Английского языка и «метод научного тыка»
Все что мы узнали раньше позволяет нам писать лишь статичные моды, в которых от игрока ничего не зависит. Теперь же нам пора добавить игроку возможность выбора
Если вы хотите, чтобы игра запоминала каждый выбор игрока, то без переменных нам не обойтись.
Объявление переменных происходит в специальном блоке init. Имена и значения у переменных могут быть любые, но рекомендуется использовать короткие английские слова или цифры (цифры только в значении)
Изменение значения переменных будет выглядеть так:
После выполнения данных команд переменная «choice» будет иметь значение «True», а переменная «Count» увеличит свое значение на единицу.
Если вы хотите дать игроку выбор, то вам необходимо использовать специальный блок menu:
В приведенном примере Ольга Дмитриевна попросит нас взять мешок с сахаром, мы же можем как подчиниться и увеличить переменную «good» на 1, так и отказаться, причем в зависимости от нашего выбора события в игре могут измениться
Будьте осторожны: Варианты ответа тоже открывают блок, и если мы не поставим после каждого двоеточие, мод может не запуститься
Поясню данный отрезок. Если значение переменной «good» больше нуля, то игра продолжится на метке «good», если же нет, то мы переходим на метку «bad»
Теперь же мы постараемся реализовать выборы, в которых в зависимости от прошлых выборов персонажа будут добавляться или убираться различные варианты ответов
Иногда по нуждам сюжета необходимо дать игроку выбор куда ему пойти, использование для этого обычного меню выбора выглядит несколько не эстетично, так давайте же научимся ориентироваться в «Совенке» при помощи карты!
Чтобы дать игре понять. когда развернуть перед игроком карту необходимо всего несколько простых команд.
т.е. чтобы при нажатии на клубы мы прыгали на лейбл mymodlabel2 (название, примера ради) нужно реализовать такую конструкцию:
И в конце, выводим саму карту командой:
Показываю пример полностью. Допустим нам нужны три зоны. Сцена, Муз. клуб и Пляж, и каждая ведёт к совим лейблам label1, label2 и label3, для этого мы делаем всё то, что я уже описал выше:
Вполне возможно, что вашем моде вам понадобится персонаж, которого по какой-то причины разработчики не стали заселять в лагерь, что же делать в этом случае? Правильно создать его!
Далее мы присваиваем переменной свойство Character().
Для примера создадим Вашего покорного слугу:
define vladya = Character(u»Владя»)
(прим.: Символ u используется, для отображения русского текста у людей, у которых он не установлен в системе.)
Теперь мы можем использовать переменную vladya в своём моде. Давайте, я поздороваюсь с Вами:
vladya «Привет»
define vladya = Character(u»Владя», color=»#008000″, what_color=»#f1d076″)
И давайте я вновь поздороваюсь с Вами:
vladya «Привет»
Намного лучше, не правда ли?
Окей, окей. Без проблем.
Допустим наш персонаж пересмотрел Ваномаса и теперь после каждого предложения говорит «ёпты блин» (пардоньте, в Стиме цензура, оригинал не работает), можно конечно прописывать после каждой строчки это замечательное словосочетание, а можно использовать команду what_suffix. Давайте дополним переменную:
define vladya = Character(u»Владя», color=»#008000″, what_color=»#f1d076″, what_suffix=u», ёпты блин.»)
Для начала реализуем перед именем вот такую конструкцию:
И после начала нашего мода прописываем:
show screen scr123
Этой командой мы будем обновлять значение переменной vano, каждую 0.1 секунду.
И что-же будет теперь:
И вот уже весь лагерь, включая нашего подопечного уснул. Несомненно вы видели, как в оригинальной игре о начале нового дня нас оповещали даже. не будящие нашего протагониста лучи солнца, а простой монитор компьютера, показывающий нам сколько времени мы провели в этом дивном месте. Чем же мы хуже, давайте сделаем себе такой же монитор!
Для выведения на экран монитора, необходимо прописать две команды:
Вы 100% видели, как в оригинальной игре да и некоторых модах, при прохождении концовок появляется картинка а-ля «Achivement Complted» И хотели бы в свой мод такую же.
Для этого в нужном вам месте вставьте следующие команды
К слову, в БЛ вывод ачивок реализован именно так, но оригинальная функция нам не подойдёт, ибо она подогнана только под уже заложенные ачивки «Лета», так что нам нужно немного её переделать, под более универсальные нужды.
Для этого, реализуем следующую конструкцию в блоке питона.
Теперь, в месте вывода ачивки, надо прописать лишь обращение к функции, и в скобках прописать картинку с Вашей ачивкой в кавычках.
Старайтесь в своем моде задавать уникальные имена блоков и функций, иначе игра не будет знать куда же ей переходить и что выполнять, что зачастую черевато вылетом
Большинство модов, сценарий которых пишется одним человеком-разработчиком мода, да еще и в процессе написания самого мода, забрасываются на очень ранних этапах. Не советую вам начинать писать мод, не имея сценария, иначе это может ударить по вашей самооценке.
Если вам прямо не терпится создать мод, а сценария нет, загляните на «Книгу Фанфиков [ficbook.net] «, там вы вполне сможете найти себе сюжет по душе, только свяжитесь с автором фанфика и узнайте, согласен ли он на создание мода по его творчеству или нет
Вполне возможно, что во время написания мода вы могли что-то где-то не так сделать и теперь у вас выдает ошибку, давайте разберемся в самых частых ошибках.
Решение: Проверьте свой мод на то что везде у вас отступ не Tab, а 4 пробела
Решение: Обычно при этой ошибке еще и указан номер строки, проверьте, закрыли ли вы ковычки на этой строке
Решение: Проверьте, везде ли отступ по 4 пробела
Решение: Проверьте команду в указанной строке
Решение: Проверьте label и jump/call на наличие опечаток
Пишите возникающие у вас ошибки и решения будут добавлены сюда
Для того чтобы игра увидела ваш мод просто обьявите в init: блоке следующую переменную
Проверьте, что ваш мод начнется с метки с тем же названием, что и Mod ID
Раздел был написан Автором руководства, с использованием контента от Владя, с его личного разрешения.
Данное руководство еще не завершено, на данный момент в нем есть все необходимое для создания небольшого мода. Руководство будет дополняться.
Задавайте в комментариях свои вопросы, в процессе ответов на них, руководство будет дополняться