Создаем текстовый файл с любым названием и расширением rpy

Обновлено: 06.07.2024

Создание файла, пожалуй, одна из самых тривиальных задач, которые вы выполняете на своем компьютере почти каждый день. Если вы пользователь Windows, вы, вероятно, делаете это через графический интерфейс.

Хотя на практике этот подход может показаться более простым, особенно если у вас нет опыта работы с CLI, у него есть свои недостатки. В отличие от способа CLI, который обеспечивает быстрый и эффективный способ создания файлов на вашем компьютере, подход GUI включает в себя несколько шагов, что делает его трудоемким и неэффективным.

Итак, вот руководство, которое проведет вас по различным методам, которые вы можете использовать для создания файла в Windows (будь то Windows 11, Windows 10, Windows 8 или Windows 7) с помощью командной строки.

Как создать файл в Windows с помощью командной строки

Создание файлов является одной из таких задач, которую вы можете выполнить быстрее и эффективнее с помощью командной строки CMD, чем с помощью проводника. Но прежде чем мы перейдем к делу и продемонстрируем, как создать файл в командной строке, вы должны знать, как перемещаться по структуре каталогов Windows на нем, чтобы вы могли создавать файлы в нужной папке.

Навигация по файловой системе Windows с помощью командной строки

Чтобы перемещаться по файловой системе Windows с помощью CMD, сначала откройте командную строку. Для этого нажмите кнопку Windows + X сочетание клавиш и выберите в меню Командная строка.

Затем введите команду dir, чтобы вывести список всех файлов и каталогов (или папок) внутри папки. После того, как вы определили папку, которую хотите открыть, введите следующую команду и нажмите Enter:

Например:
cd Documents

Чтобы вернуться в родительский каталог, запустите:
cd ..

Для доступа к корневому каталогу:
cd

Пока мы это делаем, вы также должны знать, что вы можете создавать каталоги (или папки) с помощью командной строки. Для этого используйте CD , чтобы перейти к папке, в которой вы хотите создать новую папку, и используйте следующий синтаксис:

Например, чтобы создать имя каталога Мои документы, запустить:
mkdir MyDocs

Наконец, когда вы находитесь в папке, в которой хотите создать файл, используйте любой из следующих методов для создания файлов с помощью CMD.

Основные команды командной строки Windows, которые вам нужно знать

Создание файла с помощью команды echo

Для создания файла с помощью эхо , откройте командную строку и введите команду, используя следующий синтаксис:
echo your_text_here > filename.extension

Например, если вы хотите создать текстовый файл с именем Мой файл с участием Это образец текста в качестве текста и .txt в качестве расширения файла, вы должны запустить:
echo This is sample text > MyFile.txt

После того, как вы создали файл, убедитесь, что он был успешно создан, запустив:

Например:
type MyFile.txt

Создание файла с помощью команды copy con

в отличие от эхо команда, которая принимает ваши входные данные для содержимого файла, который вы создаете в самом начале, копировать мошенничество команда использует совсем другой подход.

С его помощью вам нужно только изначально дать имя вашему файлу. Затем он открывает новый файл в текстовом редакторе, где вы можете заполнить его текстом.

Чтобы создать файл с помощью копировать мошенничествоиспользуйте следующий синтаксис:
copy con filename_with_extension

Например:
copy con MyFile.txt

Теперь он поместит вас в файл в самом окне командной строки, где вы можете добавить к нему желаемый текст. Как только вы это сделаете, нажмите Ctrl + Z сохранить файл и Ctrl + C для выхода из редактирования.

Создание файла в блокноте с помощью командной строки

Например, если вы хотите создать файл с именем SampleDoc, вы бы бежали:
notepad SampleDoc.txt

После этого CMD откроет файл в Блокноте. Вам будет предложено создать новый файл, поскольку введенный вами файл не существует. Нажмите да принять и создать файл.

Теперь, как и в случае с Блокнотом, введите текст в файл и нажмите Ctrl + S спасти и Ctrl + W чтобы закрыть файл.

Создание нескольких файлов с помощью командной строки

Если вы хотите создать сразу несколько файлов внутри папки и заполнить их позже, вы можете использовать для цикл, как показано в следующем синтаксисе:

for /l %a in (1 1 10) do type nul > "%a.txt"

…куда (1 1 10) указывает CMD выполнить задачу в последовательности от 1 с шагом 1 до 10. Чтобы создать 20 файлов, замените 10 на 20 в вашей команде.

Если вы хотите добавить общее имя в начало каждого файла и поставить за ним номер, вам нужно будет использовать следующий синтаксис:
for /l %a in (1 1 10) do type nul > "filename %a.txt"

… Где вам нужно заменить имя файла на имя, которое вы хотите дать своим файлам.

Например, выполнение приведенной ниже команды создаст 10 пустых файлов со следующим синтаксисом имени: MyDoc-1.
for /l %a in (1 1 10) do type nul > "MyDoc-%a.txt"

Кроме того, если вы хотите создать несколько файлов с одним и тем же текстом, вы можете настроить команду, чтобы включить одно и то же действие. Для этого вместо включения набери ноль, вам нужно использовать эхо your_desired_text.

Например, если вы хотите создать 10 файлов с именем MyDoc-1.txt, MyDoc-2.txt,… И так далее с Это образец текста в виде текста, вы бы бежали:
for /l %a in (1 1 10) do echo This is sample text> "MyDoc-%a.txt"

… И он создаст их в вашем текущем каталоге.

Эффективное создание файлов в Windows с помощью командной строки

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

Таким образом, в зависимости от требований вы можете выбрать соответствующий метод и быстро и эффективно создавать файлы в Windows.

Часто задаваемые вопросы о создании файлов с помощью командной строки

1. Как создать текстовый файл в командной строке Windows?

Создать текстовый файл в Windows довольно просто, и у вас есть несколько способов сделать это. Если вам нужен простой однострочный текстовый файл, вы можете использовать эхо команда, тогда как если вы хотите создать текстовый файл с несколькими строками текста, вы можете использовать либо копировать мошенничество команду или создайте файл в Блокнот. Наконец, если вы хотите создать несколько текстовых файлов, вы можете использовать для цикла.

2. Какая команда используется для создания файла?

Microsoft предлагает несколько разных команд CMD для создания файла, например эхо а также копировать мошенничество. Однако вы также можете использовать другие методы, в которых вы можете создать файл в Блокнот или запустить для цикла для создания нескольких файлов с желаемым именем и именем файла.

Думаю, многим программистам знакома рутина по переводу сценария из текстового формата в .rpy скрипт, расставлять метки персонажей, вставлять кавычки, писать бесконечные show / hide, play music и т.д.
В один прекрасный вечер меня эта рутина доконала и я решил написать простенькую программу, которая бы делала это все автоматически в один клик.
Представляю вашему вниманию мой генератор скриптов (вполне вероятно, такие программы уже существуют, но лично я не натыкался).

Пример работы программы - перевод из .txt в .rpy:


А теперь подробней о том, как это работает.
Вам нужно выполнить лишь 3 шага:
1. Заполнить скрипт со списком всех персонажей, спрайтов, фонов, CG, музыки и звуков.
2. Соблюдать правила разметки и тегов в .txt файле.
3. Зайти в программу и сгенерировать .rpy файл.

1. Заполнение списка тегов


Для начала нужно добавить все ресурсы, что у вас имеются, в список.
Для этого открываем файл 'game/scripts/generator_list.rpy'.
Пройдем все по порядку. В начале идут объявления и настройки эффектов, здесь можно ничего не менять.

Следующее в списке это теги персонажей (Character).
Здесь все просто, в левой части указываем имя персонажа, как он подписан в сценарии, с добавлением двоеточия, а в правой части его тег Character из кода.
P.S.: Можно добавлять сколько угодно новых персонажей, как и спрайтов, фонов и музыки/звуков, главное не забывайте ставить запятые после правой части.

Далее - спрайты.
Сначала метка вывода и сокрытия спрайта, далее по классике: слева название спрайта из сценария, а справа название инициализированного изображения из вашей игры (Image).
P.S.: Если хотите плавное появление изображения, можно добавить +gs_dissolve (переменная из начала скрипта) к правой части, как это сделано у меня. Вы так же можете добавлять и свои эффекты перехода.


Следующее по списку - фоны.
Здесь сначала указываем метку поиска фона в сценарии.
Дальше классическая схема: слева название фона в сценарии, справа как оно объявлено в игре.

У добавления CG абсолютно такой же принцип, за исключением лишь иной метки поиска, поэтому расписывать здесь смысла не вижу. Просто запомните следующее: левая часть - название из сценария, правая часть - название из кода.

Последнее в списке добавление музыки и звуков, принцип у них один, поэтому распишу лишь музыку.
В начале настройка значения эффектов плавного появления/затухания, если вам это не нужно, то просто установите music_fadeactive = False.
tag_ms - тег поиска музыки по сценарию.
Ну а далее как всегда: слева название из сценария, справа название объявленной музыки.

Имейте в виду, что все названия чувствительны к регистру, поэтому лишний раз убедитесь, что они идентично написаны как в сценарии, так и в этом скрипте.

Ну вот и все, с объявлением всех ресурсов покончено.
Все выглядит громоздко и страшно, но не волнуйтесь, на деле все очень просто.
Вам нужно лишь заменить мои названия на свои, и добавлять новые ресурсы сколь вам угодно через запятую.
Настроить все это можно лишь раз для игры и забыть как страшный сон.
Важно! Если ресурс не будет найден в словаре, тогда название будет подвержено транслитерации.

Создавайте .txt файл и вставляйте туда свой сценарий.

Сами правила разметки:
0 табов - тег для вставки спрайта, фона, CG, музыки или звука, а также для диалогов без тега персонажа (без имени). По принципу - ТЕГ: НАЗВАНИЕ
Например:

1 таб - имя персонажа, обязательно должно содержать двоеточие в конце, все последующие диалоги этого персонажа должны иметь 2 таба.
2 таба - диалог того персонажа, чье имя было указано выше с 1 табом.
P.S.: Второй таб для повышения читабельности .txt, программа будет адекватно определять диалог и с 1 табом.


Вот пример, как все должно выглядеть.

Важно! Текстовый файл обязательно должен быть в кодировке utf-8, принимаются физические табы (Tab в блокноте, (Ctrl + Tab) в MS Word) и 4 пробела вместо таба.



Тут все предельно просто.
Закидывайте свой подготовленный .txt файл в папку /game/generated.
Запускайте программу, выбирайте название вашего файла из списка и жмите "Ок".
Всё, можете забирать готовый .rpy файл из папки /game/generated.

Билд уже содержит текстовый файл hnm.txt, используйте его как шаблон.

Заключение
Особенно это удобно, если программист в начале разработки настраивает списки и показывает их сценаристу, а тот, в свою очередь, начинает использовать теги ресурсов, вставляя их сразу в сценарий. В таком случае сценарист способен и сам генерировать скрипт и проверять его на работоспособность, без участия программиста.
Можно поступить противоположным образом, сценарист изначально пишет свои теги, а по завершении работы программист вбивает эти теги в список ресурсов и генерирует скрипт.
Так или иначе, программа должна облегчить ввод огромного количества текста и вывода ресурсов.

Комментарии к записи: 12

Вау! Я как раз очень много времени потратила на этом джеме, тупо перегоняя текст в код о.о
Обязательно опробую на днях это чудо автоматизирования.
Спасибо большое!

Костыль ради костыля. С тем же успехом можно сразу писать текст в скрипт. Тем более в ренпае не так уж и много разных команд.

*Имеется ввиду ренпай без дополнений

Сужу по личному опыту: никто из знакомых сценаристов не пишет сценарии сразу в .rpy формате, особенно, если синтаксис не знаком.
А когда присылают огромный объем тысяч на 50 слов, это сокращение просто тонны времени. Да даже когда текст всего 4 тысячи слов - это весьма муторная и долгая работа.
Надо же не запутаться во всех персонажах, прописать их правильно и разбить текст на фразы, которые помещаются красиво в диалоговое окно.
Так что- большое спасибо за такой костыль. Буду обязательно пользоваться им)

> С тем же успехом можно сразу писать текст в скрипт.

Ни в коем случае! Вы хоть представляете, как муторно вычитывать и редактировать текст прямо в RenPy? Или же захотели вы переделать что-то, вырезать диалог, добавить в другом месте - куча сделанной впустую работы. Или вы пишете разветвленную историю или диалог. вбивать такое сразу в RenPy - сущая пытка. Я уже не говорю о том, что в редакторе RenPy нету автоматической проверки правописания из-за чего можно наделать массу тупых опечаток просто по невнимательности. Возможно какие-нибудь простенькие работы в духе: "-Привет, давай дружить! -Ого, давай дружить!" и можно сразу в код вбивать, но если делается что-то более серьезное, то сначала писать и вычитывать в ворде - единственный правильный путь.

Отлично! В этом месяце планирую попробовать и напишу что вышло (надеюсь не забуду)

Задумка приятно удивила. Казалось бы чем можно облегчить перевод скрипта в код далее чем добавить кавычки и 4 пробела в каждую строку? но разметка дигалогов отступами это гениально! Теперь тоже так буду писать :3. А в куче со всеми остальными командами это уже похоже не на программку помошник, а на зайчаток нового супер синтаксически сладенького языка. Эдакое "1С:Новеллостроение" К нему бы не конвертор прикрепить, а интерпретатор в реальном времени чтоб подсовывал движку его комманды, и после этого сам код ренпи забыть как страшный сон.

крч круто, спасибо!

Спасибо за предложения, я их реализовал (версия 1.1).

1. Теперь, если по метке ничего не находится в словаре, то название ресурса будет подвержено транслитерации (ГОСТ Р 52535.1-2006). Можно заменить на свои правила транслитерации, все находится в файле scripts/generator_translit.rpy

2. 4 пробела будут определяться так же, как и табуляция.

3. Теперь можно писать кавычки в тексте, пробелы и русские символы в названиях файлов, меток и персонажей.
Пробелы заменяются на нижний прочерк, а русские буквы будут подвержены той же транслитерации.


Прежде чем создавать PHP-файл, нужно понимать, что он собой представляет. На самом деле php-файл – это обычный текстовый документ, но этот текстовый документ имеет расширение php. Благодаря расширению компьютер, на котором установлен и настроен веб-сервер, может понять, какой программой этот файл нужно обрабатывать.

Исходя из этого, предлагаю два основных способа, благодаря которым вы можете этот php-файл создать.

Способ 1. Создание файла PHP, меняя расширение текстового файла.

Откройте любой текстовый редактор, например, редактор «Блокнот», который входит в состав операционной системы Windows. Найти эту программу можно через главное меню Пуск -> Все программы ->Стандартные -> Блокнот.

В главном меню программы выбираем «Файл-Сохранить как».


И сохраняем текстовый файл с расширением *.txt.

Теперь нужно поменять расширение этого файла с *.txt на *.php.

Если у вас расширение файлов не отображается, то советую почитать эту заметку.

После того, как вы выполните инструкции из этой заметки, рядом с названием файла будет отображаться его расширение.


Теперь, для создания файла php нужно просто переименовать файл, изменив его расширение на php.



Больше моих уроков по PHP для начинающих здесь.

Способ 2. Создание файла PHP с помощью универсальных редакторов кода (например, Dreamweaver)

Многие специализированные программы для редактирования кода, например Dreamweaver, имеют специальные функции для создания PHP - файлов.

Давайте посмотрим, как это можно сделать в редакторе Dreamweaver.

После открытия программы появляется главное меню, в котором можно выбрать создание файла PHP.



Кроме того, это меню можно вызвать через меню «Файл – Создать».

После того, как файл будет создан, его можно будет сохранить через главное меню «Файл-сохранить как…».

Данная статья была написана мной более года назад в качестве отчёта о практике для универа. В кои-то веки я решил её опубликовать. Надеюсь, ещё не совсем потеряла актуальности :/

В связи со спецификой появления, думаю, во избежание лишних вопросов мне стоит пояснить, что САФУ/NArFU — это название университета, а ИСМАРТ — конкретный институт в его составе, где я учусь. Стиль изложения также может несколько отличаться от моих обычных публикаций, так как подразумевалось, что читать текст будут люди совсем далёкие от игр и современной сетевой культуры.

Также для основной версии сайта я прикрутил подсветку синтаксиса (на lite- и pda-версиях не работает), но Ren'Py — довольно специфичный язык, поэтому используется подсветка от Python'а. В итоге подсвечены будут, по сути, только строки и некоторые совпадающие ключевые слова.

Если при чтении возникнут какие-то проблемы или вопросы по коду, то можно скачать архив с примерами. Он упакован в формат 7z, потому что, в отличие от zip'а, тот умеет упаковывать идентичные файлы так, чтобы они занимали место, как один.

Гайд по созданию визуальной новеллы

Здравствуй, дорогой читатель! Возможно, ты уже слышал о такой широко известной в узких кругах видеоигре от отечественных разработчиков, как «Бесконечное лето» (Everlasting Summer)? Впрочем, если нет, то ничего страшного: я расскажу о ней вкратце.

Как гласит официальный сайт, «„Бесконечное лето“ — это визуальная новелла от российских разработчиков, дарящая самые искренние и светлые переживания об ушедших днях и надеждах, которым ещё предстоит сбыться». Поясняю:

  • Визуальный роман (но чаще встречается вариант с англицизмом: визуальная новелла) — это жанр компьютерных игр, в котором упор делается на текстовый контент, сдобренный порциями аудиовизуального сопровождения. По сути, это скорее книги, чем игры, но обильно снабжённые иллюстрациями, анимацией, музыкой и звуками окружающего мира. Также, в отличие от книг, представители данного жанра обычно имеют нелинейный сюжет с несколькими концовками, и исход зависит от выборов игрока.
  • «Бесконечное лето» повествует историю об одном асоциальном человеке, волею судеб оказавшемся в загадочном пионерлагере. Многим игра нравится именно атмосферой, позволяющей почувствовать себя пионером либо поностальгировать о временах былой молодости.

Однако мы здесь собрались вовсе не для того, чтобы слушать рекламу и хвалебные оды, не так ли? Так что перейдём ближе к сути.

«Бесконечное лето» написано на бесплатном движке Ren'Py. Это специальный движок, предназначенный для создания визуальных романов сценаристами, далёкими от программирования. Он имеет предельно простой синтаксис и множество встроенных средств для реализации практически всех функций, которые могут понадобиться в подобных играх. Тем не менее, сам движок свободен (open source) и расширяем, предоставляя возможность пользоваться всей мощью языка Python, на котором он написан.

В этом небольшом гайде мы рассмотрим базовые возможности Ren'Py, а также слегка коснёмся темы создания модификаций к игре «Бесконечное лето».

Для того, чтобы начать создавать игры на Ren'Py, первым делом скачай и установи/распакуй набор для разработчиков с официального сайта. После запуска покажется такое окно:

Окно Ren'Py Launcher

Это Ren'Py Launcher — программа, из которой можно запустить любой из разрабатываемых проектов, открыть папку с ним или сразу перейти к редактированию скриптов. Все команды написаны на простом английском языке, не выходящем за рамки даже слабой школьной российской программы, так что не вижу смысла на них останавливаться. К тому же в настройках можно включить кривой перевод на русский язык.

Создай новый проект, укажи папку (желательно, без кириллицы, но это не обязательно), имя проекта (вот тут только латиница!) и выбери любую тему (это непринципиально).

Ren'Py уже при создании производит базовую настройку проекта, предоставляя интерфейс для меню, стили по умолчанию и т. д. Можешь посмотреть файлы скриптов, которые он создал:

  • В options.rpy находится большинство настроек: размеры окна, стили, переходы по умолчанию и т. д.
  • В screens.rpy описываются меню, диалоговое окно и прочие «экраны».
  • script.rpy предназначен, собственно, для самого скрипта-сценария романа.

Вообще, это всё условно. Все файлы проекта находятся в папке game и Ren'Py читает там все файлы с расширением *.rpy, так что можно разбивать скрипты на любое количество файлов.

Я бы мог рассказать ещё про основы языка Python, как сделано в документации, но всё, что нам понадобится для базового знакомства, интуитивно-понятно или будет пояснено в месте применения. Так что предлагаю просто нажать по ссылке на scripts.rpy в «лончере» (launcher), выбрать редактор (любой, я вообще пользуюсь Sublime Text 3 с плагином) и приступим к созданию твоего первого творения на Ren'Py!

Текст, картинки, переходы

Сотри всё, что уже есть в файле: мы начнём с нуля.

Для упорядочивания кода Ren'Py пользуется системой меток (привет, ассемблер и GOTO!). При выборе кнопки «Начать игру» в главном меню игры, которое отображается сразу после запуска, управление передаётся на метку start:

Что мы видим? После объявления метки start начинается принадлежащий ей блок кода, строки которого обладают отступом в 4 пробела. Внутри блока расположены речевые конструкции (say statements), с помощью которых выводится текст.

В первой и третьей строчках (блока) располагаются слова автора или рассказчика. Фраза просто заключается в двойные кавычки (если внутри фразы нужно вывести кавычки, то они предваряются обратным слешем: \").

Во второй и четвёртой строках находится фраза персонажа под именем Аня. Видно, что имя персонажа, так же заключённое в двойные кавычки, и его фраза отделяются пробелом.

Возникает первая проблема: постоянно приходится повторять имя персонажа (а в больших сценариях с более длинными именами это реально представляет проблему). Ну и сразу обращаю внимание на вторую: все персонажи отображаются абсолютно одинаково, без какой-либо толики индивидуальности. Решим обе эти проблемы:

В самое начало я добавил новую строку, которая определяет (define) нового персонажа (character) и задаёт ему имя и красноватый цвет имени (color). Новый персонаж присваивается короткой переменной a, которая теперь используется в речевых конструкциях вместо имени. Обратите внимание, что определения (что персонажей, что изображений, как мы увидим позже) пишутся вне любых меток, так как выполняются во время инициализации (немного про это будет сказано позже).

Что же у нас получилось?

Первый запуск нашего проекта

Хм, надо бы избавиться от этих шашечек и добавить собственный фон. Я использую, например, фотографию крыльца своего института, найденную в Интернете. Закинь любое изображение достаточного размера в папку images внутри папки game. Внутри этой папки Ren'Py сканирует все изображения и по определённым правилам создаёт для них имена, но для наглядности мы определим фон вручную. Самый простой способ:

image bg ismart = 'images/ismart.jpg'

Просто путь к файлу! Но если мы сделаем так, то получим странную картину:

Фон слишком большой

Виной всему слишком большой размер изображения. Поэтому придётся немного усложнить определение. Вот весь код:

Во! Теперь всё в порядке:

Теперь фон вписывается идеально

Теперь объясню, что делает добавленный код и как вообще происходит отображение. Всего появились две новые строчки: конструкция с image и конструкция с scene:

  • image, собственно, определяет изображение. Между ключевым словом и знаком равенства помещается имя отображаемого объекта. С ним не всё так просто. Как мы увидим дальше, в играх такого жанра, часто используются так называемые спрайты, то есть изображения персонажей с разными эмоциями и одеждой. Соответственно, частой операцией является смена спрайтов одного персонажа. По этой причине название изображения для Ren'Py состоит из, собственно, имени и атрибутов, разделённых пробелами. Всё это станет понятнее, когда будем рассматривать спрайты. А сейчас достаточно понять, что bg — название изображения, ismart — атрибут.
  • scene, как понятно из названия, предназначен для смены сцены. Выражение с этим словом очищает экран от любых других изображений и выводит указанное (обычно фон, хотя может и не выводить ничего).
  • im.Scale(d, width, height) — функция масштабирования, которая принимает отображаемый объект (displayable), в частности изображения, и изменяет его размеры к указанной ширине (width) и высоте (height). Сразу замечу, что существует аналогичная функция без префикса im.* (вне объекта im), которая отличается тем, что производит расчёты при каждом отображении и не сохраняет результат вычислений при определении.
  • config.screen_width и config.screen_height — две переменные в объекте конфигурации, хранящие заданные в настройках ширину и высоту экрана игры (их легко можно найти в options.rpy).

Надеюсь, я объяснил достаточно понятно. Давай теперь поиграем со стилями? Открой screens.rpy, найди в самом начале описание экрана диалогов (screen say) и удалим всё «лишнее», добавив немного своего (выделено полужирным):

Рассмотрение стилей, к сожалению, выходит за рамки данного гайда, так что я не стану ничего пояснять. Будем считать, что разобраться в работе стилей будет твоим домашним заданием ;)

Ну а своим вандализмом мы добились такого цветастого безобразия без меню и возможности переключения режима отображения имени персонажа (в том же окне или в отдельном) из сценария:

Зря мы трогали стили

Мы обязательно должны рассмотреть отображение спрайтов, изменение места их расположения и переходы, но искать спрайты в Интернете мне лень, так что рассмотрим этот материал внутри обещанного блока про создание модификаций для «Бесконечного лета».

Прежде всего скачай саму игру: либо через сервис цифровой дистрибуции Steam, либо через торрент-трекер Rutracker. Актуальные ссылки можно всегда найти на официальном сайте. Далее зайди в папку с игрой (для версии из Steam это \SteamApps\common\Everlasting Summer ). Там обычная структура файлов игры на движке Ren'Py. Заходим в game, как и прежде, а оттуда в папку mods. Скопируй туда scripts.rpy нашего проекта. Можешь даже его как-нибудь переименовать — не суть.

Теоретически можно создать наш файл со скриптом в любом месте внутри папки game, но давай будем придерживаться соглашений. К тому же, нам надо перекинуть и картинку. Создай папку narfu_images рядом с файлом скрипта и скопируй туда наш фон.

В последних сборках игры добавлен загрузчик модификаций, так что нам нужно лишь дать ему знать, что мы есть за скрипт. Открой файл в любимом текстовом редакторе. Пришло время познакомиться с блоками инициализации и запуском кода на Python!

Определение изображений и персонажей, как было сказано в примечании ранее, автоматически размещается в блоке инициализации, который выполняется до загрузки игры. Соответственно, это то самое место, где наш скрипт будет заявлять о себе. Добавь этот код в самое начало скрипта:

Блок инициализации объявляется ключевым словом init. Если дальше идут выражения на языке Python, а не на Ren'Py, то добавляется слово python. Вообще, в любом месте блоки кода на Python объявляются с помощью этого слова. Другой путь написать одиночную команду на Python — использовать знак доллара ($) в начале строки.

В примере выше я вместо слова python явно задал приоритет блока. Блоки выполняются от меньшего приоритета к большему. По умолчанию подразумевается блок с нулевым приоритетом. Порядок выполнения блоков с одинаковым приоритетом не гарантирован и может быть случайным.

Теперь объясняю саму команду. Переменная mods — это специальный список «ключ-значение», где перечисляются все модификации. Ключ должен быть уникальным значением на латинице без пробелов и в кавычках. Значение — название мода для отображения в загрузчике модификаций. Ключ играет роль названия метки при запуске мода, так что исправь label start на label narfu_practice. Также давай уберём определение персонажа a. Он нам больше не понадобится.

Теперь сделаем магию! Вставляй в редактор оставшийся код и запускай игру через меню модификаций в настройках!

Наш мод в загрузчике модификаций

С чего бы начать? «Бесконечное лето» предоставляет интерфейс, персонажей, спрайты к ним, фоны и музыку. Здесь мы пока использовали только первые три пункта.

dv — это персонаж и тег изображений для Алисы Двачевской. Соответственно, scared, raged и pioneer — это атрибуты. Вообще, названия всех спрайтов в игре строятся по следующему плану: короткое_имя_персонажа эмоция одежда . Полный список спрайтов можно найти в знаменитых уроках LolBot'а (один из программистов игры, создатель системы модификаций). Официальной ссылки, насколько мне известно, не существует, а прочие быстро станут не актуальны, так что Google в помощь!

При показе второго изображения с таким же тегом, первое исчезает. Это нужно как раз для удобной смены эмоций, как сделано в нашем примере. Чтобы отобразить два одинаковых изображения, можно воспользоваться конструкцией show..as <новая метка> (см. следующий параграф).

Для отображения спрайтов используется ключевое слово show, похожее на scene, но не очищающее экран. Для обеих конструкций могут быть указаны переходы с помощью конструкции with. Строго говоря, изображение вообще отображается только после этой конструкции. Таким образом можно планировать показ нескольких изображений, для которых потом задавать один переход. Если with не встречается до следующего диалога, то Ren'Py использует with None, просто выводящий изображения мгновенно. А ещё его полезно использовать, когда нужно одно изображение отобразить мгновенно, а лишь второе — с переходом.

Ren'Py имеет ряд встроенных переходов (мы использовали dissolve и fade), а также позволяет создавать свои с помощью специальных функций (например, with Dissolve(0.5) для «растворения» одного изображения в другом за полсекунды). Всё это очень интересно, но выходит за рамки данного гайда. Смотри документацию, если хочешь знать больше!

Обрати внимание, как отображаются диалоги с изображениями в обоих случаях речи Алисы: в первом сначала рисуется персонаж, а затем печатается текст, а во втором — и текст, и персонаж переключатся с «растворением» одновременно.

Для того, чтобы диалоговое окно не мерцало при показе изображений, я использовал window show, которое держит окно всегда на экране. По умолчанию же оно показывается при отображении диалогов и скрывается при показе изображений, что я обратно и включаю в конце скрипта (надо помнить, что мод заканчивается, но игра продолжает выполняться, и мы обязаны всё вернуть в исходное состояние!).

Разумеется, существуют конструкции hide для скрытия изображении и window hide для скрытия диалогового окна.

А теперь давайте добавим второго героя, музыки и украшательств!

Прочитал комментарии? Я не буду пояснять про особенности игры, так как статья не об этом. Здесь мы обратим внимание позиционирование изображений, стилизацию текста и музыку.

Для проигрывания музыки и звуков существуют play music и play sound соответственно. Они принимают либо путь к файлу, либо список путей к файлам (в данном случае все пути к музыке из игры расположены в специальном списке, из которого мы берём конкретный). Для остановки используются stop music и stop sound, соответственно.

Музыка и звуки воспроизводятся на разных каналах, громкость которых игрок может регулировать в меню по отдельности. Ну а ещё звуки выполняются один раз, а музыка зацикливается. Разработчик же может регулировать не только громкость, но и скорость воспроизведения, баланс в колонках и многое другое. В том числе, можно создавать свои собственные каналы и играть несколько звуков одновременно.

Расположение спрайтов задаётся при показе либо с помощью at, либо в виде отдельного блока. В первом случае указывается предопределённое расположение (left или right, например), а во втором используется специальный язык ATL. Подробнее о нём можно прочитать в документации, а я лишь опишу базовое позиционирование, о котором также можно посмотреть наглядно в туториале, прилагаемом к Ren'Py SDK.

Положение изображений по обеим координатам задаётся с помощью двух точек: одной на изображении, называемой якорем (anchor), и второй на экране (pos). Задаётся либо с помощью целого числа, обозначающего координаты относительно верхнего левого угла экрана, либо с помощью дробного числа от нуля до единицы, обозначающего долю экрана, как сделано в примере.

Стилизация текста. Текст может содержать специальные теги, показывающие, как он должен отображаться. Для знакомых с языком HTML тут будет совсем просто: чаще всего используются точно такие же теги: , , , (для ссылок). Хотя есть и различия: . Просто. Также в тексте в квадратных скобках могут использоваться подстановки из переменных, определённых в коде. Если же есть необходимость использовать в тексте сами символы фигурных и квадратных скобках, но их нужно продублировать: >, [[, ]].

Внизу на картинке приведён результат. Неплохо получилось, не так ли?

Вот что у нас получилось

За сим я, пожалуй, откланиваюсь. В Ren'Py есть ещё очень много всего интересного, но место в этой статье не резиновое. Дальше, дорогой читатель, можешь либо почитать документацию (если знаешь английский язык, конечно), либо искать обучающие видео и руководства от других людей.

Сегодня я дам краткие инструкции по созданию/изменению файлов любого формата.
Дело в том, что не все знают, как изменить расширение файла, например, того же .txt без всяких сторонних программ, просто методом переименовывания формата.


Всё дело в том, что хитрый Windows скрывает расширения известных (например exe, jpeg, txt ) типов файлов, чтобы Вы не могли их некоим образом случайно изменить.

Простая и быстрая настройка

  1. Открываем мой компьютер;
  2. Жмем правой кнопкой мыши на пустом месте: " Создать -> Текстовый документ ";
  3. Переименовываем Текстовый документ.txt в, скажем, Текстовый документ .ini
  4. Радуемся, что сумели создать новый файлик;
  5. Запоминаем урок и при необходимости применяем.

Сразу хочу предупредить, что переименовав bmp в jpg вы конечно меняете формат, но свойства рисунка не изменяться. Проще говоря - это не метод полного конвертирования, а всего лишь изменение формата. Зато запрятать какую-нибудь текстовую информацию от кого-нибудь получится легко. Берем и переименовываем дневник.txt в дневник.exe .

Послесловие

Вот такие дела. Где это может пригодится? Ну кому где.

А вообще, Вы увидите некоторые примеры того, где это нужно уже скоро, а именно в некоторых моих следующих статьях.

Белов Андрей (Sonikelf) Заметки Сис.Админа [Sonikelf's Project's] Космодамианская наб., 32-34 Россия, Москва (916) 174-8226

Прямо заинтриговал вконце :) интриган. Я уметь это делать я еще в школе научилась, сама, кстати, нашла, когда "изучала" свой первый компутер :) (похвасталась)

И вот еще! Виста в этом плане не такая "хитрущая" и дает переделывать расширения! Фишка в том, что в ХР надо еще глядеть при переименовывании файла на то, чтобы расширение не стереть (если функция отображения расширения включена в настройках), а Виста не дает сделать такой досадной ошибки (изменить расширение при переименовывании файла, если его менять не надо). Ой. аж сама запуталась! Одним словом - в Висте удобнее - вот что я хотела донести бредом из слов выше ;)

> Сразу хочу предупредить, что переименовав bmp в jpg вы конечно меняете формат, но свойства рисунка не изменяться. Проще говоря - это не метод полного конвертирования, а всего лишь изменение формата. Зато запрятать какую-нибудь текстовую информацию от кого-нибудь получится легко. Берем и переименовываем дневник.txt в дневник.exe.

Ты немного напутал в терминологии. ФОРМАТ означает правило, по которому байтовое представлени файла преобразуется в то, что нам нужно. Например, файл превращается в картинку на экране. BMP и JPG - это форматы кодирования картинок.

А вот хваостик в имени файла ".jpg" и ".bmp" - это РАСШИРЕНИЕ имени файла. Оно нужно только для удобства (грубо говоря, смотрим на имя файла и уже знаем, что это за файл: картинка, видео, текст и т.п.). Второе назначение расширения - это чтобы по дабл-клику на файле система знала, чем его открыть. Т.е. в системе прописано, что если у файла расширение ".jpg" или ".bmp", то его нужно открыть просмотрщиком картинок, если ".avi" - то проигрывателем видео и т.п. При этом большинство нормальных программ НЕ СМОТРЯТ на расширение файла. Т.е. можно переобозвать ".jpg" в ".exe", а потом мышкой перетянуть файл в просмотрщик картинок и он нормально тобразится.

Читайте также: