Как делать моды для бесконечного лета андроид

Как делать моды для бесконечного лета андроид

Предисловие:
Скрипт !всегда! находится в стадии тестирования и не обещает вам идеального(или хотя бы достойного) выполнения своей работы, так как это всего лишь инструмент для помощи в портировании.

Если вы не младше

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

Как мы знаем, чтобы портировать мод на андроид, нам нужно запихать все его содержимое в одну папку и поменять все размеры и позиции на 2/3 от данного.

ESTool попробует помочь вам заменить позиции(в почти всех их вариациях), размеры картинок(например спрайтов), координаты представленные 4-мя значениями и аргументы к функциям(достаточно спорно) и изменит размеры всех картинок.

Что (еще) не умеет:
Изменять размеры записанные в переменных
Кучу, но существенно поменьше

Если вы хотите помочь разработке, то можете писать в комментарии строчки где возникла ошибка или где скрипт сделал что-то не так.

. Внимание, вышла новая версия.
Скрипт сейчас на 19.01.19 находится на версии 1.001
За которую бесконечная благодарность Николаю Букрееву

Ссылка с билдами: https://yadi.sk/d/xfQBrr-_IVDZXQ
Скрипт представляет из себя:
estool-xx.py — Исполняемый скрипт питона.
PIL — библиотека для ресайза изображений.(без нее тоже работает, но только с текстовыми файлами)
config.ini — Конфиг файл, при отсутствии создается.
backups — Папку бэкапов(создается после запуска)

Патчнот:
0.006
Работа с юникодом
Поддержка отрицательных чисел
0.007
Откат юникода
Фиксы выбора чисел
Добавление конфига настроек
Добавление бэкапа (варианты работы в конфиге)
Добавлен выбор в конфиге изменения комментария измененной строки

1.000
• Работает под Windows, *nix, macOS и Android.
• Совместим с Python 2.7+ и 3.2+.
• На Android скрипт может лежать где угодно, а не только по фиксированному пути.
• В случае неожиданных значений в конфиге выдает ошибку вместо использования дефолтных значений.
• Все три способа бэкапа .rpy-скриптов (в отдельной папке, со сменой расширения на ._rpy и без бэкапа) теперь доступны на всех платформах.
• Реализован безопасный режим, в котором действия лишь описываются, но не выполняются. Цель — выявлять потенциальные ошибки на тестовом прогоне, ничего не портя. При этом работает он очень быстро (

2 секунды).
• В именах файлов заменяется не только кириллица, но и более экзотические символы.
• Появилась возможность перемещать файлы и сливать папки (в скриптах пути к ним тоже переписываются).
• А также удалять ненужные файлы (например, *.rpyc, Thumbs.db, .DS_Store — да любой мусор).
• Правятся числа в конструкциях size=%d, xanchor=%d, yanchor=%d, align (%d, %d), corner1 (%d, %d), corner2 (%d, %d), maxsize (%d, %d) и Move((%d, %d), (%d, %d), . ).
• Регулярные выражения для координат теперь допускают пробелы, где они возможны (например, перед запятой или вокруг скобок).
• Значительно повышена скорость работы (на моей машине отрабатывает в 4 раза быстрее, чем v0.009).
• При помещении портированного мода в отдельную папку уже скопированные файлы / обработанные изображения не переписываются повторно, что экономит время при инкрементальной работе.
• Вместо того, чтобы спамить в консоль тысячами строк, выводится аккуратный прогресс-бар (но эти тысячи строк по-прежнему пишутся в лог-файл).
• Исправлен баг, из-за которого неверно переписывались координаты в четырехэлементных кортежах ((%d, %d, %d, %d)). (Это полностью ломало Zoom.)
• Исправлен баг, из-за которого при config.replace_cyrilic == «no» директивы image с идентификатором, начинающимся с цифры, заменялись только при объявлении, но не при использовании.
• Исправлен баг, из-за которого скрипт вылетал при обработке ошибки (из-за вызова raw_input на Python 3).
• Исправлен баг, из-за которого терялся бэкап, если в папках мода было несколько .rpy-скриптов с одинаковыми именами.

Читайте также:  Отключить сертификаты безопасности андроид

1.001
• Исправлен баг, из-за которого не менялись координаты, если ключевое слово было написано после числа вплотную к нему, без пробела (например, «zoom 1.05anchor (100, 200)»).
• В лог теперь пишется версия скрипта.

• добавил вывод версии скрипта в лог и перенес объявления классов под константы.

Источник

Как делать моды для бесконечного лета андроид

Возможно кому-то пригодится:

Если кому-то нужно получить файл с папки воркшопа через open()/file() или же удалить его через os.remove(), добавить свои модули или же что либо ещё что требует ПОЛНОГО пути к папке С МОДОМ,, то можно использовать такую штуку в путях, как «..»
Все модификации хранятся в папке workshop, которая размещена в той же папке steamapps, где размещена папка common с игрой, даже если steamapps несколько.

То есть, чтобы получить пути к целевой папке steamapps можно использовать
C:\SteamLibrary\steamapps\common\Everlasting Summer\..\..

Ещё проще)
C:\SteamLibrary\steamapps\common\Everlasting Summer\..\..\workshop\content\331470\

Вот и попали в папку модов для БЛ (относительно моего пути к БЛ).

Если нужно получить папку какого-то конкретного мода, то просто дописываем его ID

Например, получим папку Саманта-мода:

Ну, а поскольку в питоне «\» означает кое-что другое, то меняем все «\» на «/»

Но, как я уже говорил, это мой путь к БЛ.
Поэтому, «спрашиваем» в Ren’Py (движок БЛ) какой же наш путь:

Это и будет наш путь к Саманта-моду.

Потом можно делать с ним всё, что вздумается.

Как задействовать клавиатуру в моде, например, для мини-игр.

Первым делом, нужно выбрать клавишу, которую мы будем использовать. Для начала возьмём пробел.

Чтобы человек мог нажать на клавишу в определённый момент времени, нужно её нарисовать и вставить в код ренпая с помощью самой обычной команды для внедрения своего бг или цг.

image space_button = «mods/mod/buttons/space_button.png» — загрузили картинку и дали название «space_button»

Мы загрузили изображение пробела. Теперь приступим к коду.
Возьмём самый простой для задействования всего одного пробела:
(Скриншот)

На данном скриншоте мы сделали один пробел, строчкой
key » » action. Пустое место в ковычках это кнопка, т.е просто отступ(пробел).
Строчка timer 2 action задаёт таймер, в течении которого вы должны успеть нажать на заданную в коде кнопку, т.е пробел. цифра после слова timer означает время в секундах, оно может быть любым, так же и десятичным.(0.3; 0.5; 0.8 — пример)

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

Кстати, вот вам кнопка пробела, делал для своего мода.

Источник

Как делать моды для бесконечного лета андроид

3,975 уникальных посетителей
603 добавили в избранное

Следом заходим в папку steamapps

После заходим в папку common

В папке common ищем папку Everlasting Summer

Внутри папки Everlasting Summer находим папку game

  • И наконец-то, заключительное действие. Заходим в папку mods внутри, которой создаём папку своего мода.
  • Также для создания мода понадобиться текстовой редактор. Для текстового редактора лучше всего подойдёт Notepad++ [notepad-plus-plus.org] .

    Текстовой редактор нужен для работы с командами которые мы будем прописывать в наш мод.

    Читайте также:  Что делать с rar файлом android

    Создаём внутри папки нашего файла текстовой документ и изменяем расширения на .rpy

    Открываем наш документ .rpy текстовым редактором, в моём случаи Notepad++, и начинаем творить.

    Суть создания модов БЛ в том, чтобы в ваш документ .rpy вписывались специальные команды.

    Есть два блока. init и init python(Питон).

    Можно писать через enter каждую строчку(он пропускает сразу 4 пробела), но после выделяем весь текст, заходим в: Правка -> Операция с Пробелами -> Табуляция в Пробел. Вот и всё это уменьшило затраты на пробелы.

    Все диалоги, 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, в котором находиться все названия бг, цг и т.п из оригинальной игры.

    Всё расшифровано. Ссылочка [oxy.cloud] .

    Неотъемлемая часть модов Бл, да и вообще новелл — это диалоги между персонажами и выборы. Начнём с диалогов.

    Для того чтобы персонажи вели диалог есть ID персонажей.

    play music название песни
    Остановка музыки — stop music

    play sound название звука
    Для остановки звука — stop sound

    play ambience название амбиенса
    Остановка амбиенса — stop ambience

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

    scene bg название_фона


    Также команда scene используется не только на bg, но и на cg.

    show имя спрайта

    show — это наша команда, sl — это Славя, тот персонаж которого мы хотим видеть, normal — это эмоция персонажа, pionner — это в то что будет одет персонаж, в данном случаи пионерская форма.

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

    Всего в игре 7 позиций у спрайтов:
    fleft, left, cleft, center, cright, right, fright

    Прописывается так:
    show dv smile pioneer2 at left

    Спрайт Алисы появиться слева.

    close — спрайт будет находиться близко

    far — спрайт будет находиться далеко

    если написать без команд far/close — спрайт будет находиться на нормальном расстояние

    hide — скрывает спрайт который показывается на экране

    Работает так:
    hide имя персонажа

    $ persistent.sprite_time = «время суток, которое нам нужно»
    $ время суток, которое нам нужно_time ()

    day — день
    sunset — вечер
    night — ночь

    Всего существует 6 видов плавности, отличие их в скорости
    dspr — 0,2 сек — самый быстрый
    dissolve — 1 сек — средняя скорость
    dissolve2 — 2 сек — плавная картинка
    dissolve_fast — 0.5 сек.
    hell_dissolve — 50 секунд.
    dissolve_long — 100 секунд.

    Прописывают их около bg, cg и спрайтов так:
    scene bg(cg) название бэграунда with один из видов плавности

    show blink — Закрыть глаза
    show unblink — Открыть глаза
    show blinking — Моргание

    Если вы будете добавлять что либо в больших количествах советую использовать # он разделяет определённый места в init-блоке:

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

    $ Аббревиатура имени = Character (u’Имя в игре’, color=»Цвет имени», what_color=»Цвет диалога»)

    Если что могу оставить цвет текста из оригинальной игры он выглядит так E2C778.
    Так же нужные вам цвета поищите здесь [colorscheme.ru] .

    image аббревиатура = «Путь к изображению»

    $ аббревиатура = «Путь к музыке»

    Читайте также:  First touch soccer для android

    Со звуками и амбиенсами работает так же.

    image аббревиатура = «Путь к спрайту», учтите время на него не влияет.

    уже с изменением времени, но не автоматическим
    image НАЗВАНИЕ СПРАЙТА, МОЖНО НЕСКОЛЬКО СЛОВ = im.MatrixColor( im.Composite((900,1080), (0,0), «ПУТЬ К ФАЙЛУ ТЕЛА»,(0,0), «ПУТЬ К ФАЙЛУ ОДЕЖДЫ»,(0,0), «ПУТЬ К ФАЙЛУ ЭМОЦИИ»), im.matrix.tint(Время суток) )
    0.83, 0.88, 0.92 — day/день
    0.94, 0.82, 1.0 — sunset/вечер
    0.63, 0.78, 0.82 — night/ночь

    Дело в том что автоматически при включении команды persistent.time они не будут менять цвет при смене суток, так что для каждых времени суток придётся прописывать спрайт.
    Если кто знает способ получше кидайте в комментарии.

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

    После выполнения данных команд переменная «choice» будет иметь значение «True», а переменная «Count» увеличит свое значение на единицу.

    Для того чтобы предоставить игроку выбор мы создаём блок menu.

    В данном примере Ульяна называет гг дураком, главный герой, может сказать, как джентельмэн просто сказать нет, не вестись на провокации Ульяны и увеличить «good» на 1, так и сказать ей что она дура и приблизиться к плохой концовке.

    Можно задать условии при котором выбор игрока будет влиять на последующие варианты.

    Этот отрезок показывает, если значение переменной «good» больше нуля, то игра продолжится на метке «good», если же нет, то мы переходим на метку «bad».

    Теперь отталкиваясь от прошлых выборов гг будут добавляться или убираться различные варианты ответов.

    В этой ситуации есть три варианта. Первый вариант, если мы ничего не совершили с Алисой. Второй вариант, если мы оказали Алисе помощь. Третий вариант, если мы с Алисой были грубы.

    $ disable_all_zones() — отключает все старые маркеры карты
    set_zone() — зоны по которым можно ходить
    $ show_map() — показывает карту в игре

    «me_mt_house» — «Мой домик»
    «estrade» — «Эстрада»
    «music_club» — «Музклуб»
    «square» — «Площадь»
    «dining_hall» — «Столовая»
    «sport_area» — «Спорткомплекс»
    «beach» — «Пляж»
    «boat_station» — «Лодочный причал»
    «clubs» — «Клубы»
    «library» — «Библиотека»
    «medic_house» — «Медпункт»
    «camp_entrance» — «Ворота в лагерь»
    «forest» — «о. Лес»

    С картой разобрались поехали дальше!

    $ backdrop = «days»
    $ new_chapter(1, u»Мой мод. День первый.»)

    backdrop — фон с монитором.
    1 — номер дня, который будет показан на мониторе,
    Текст — то, как будет называться сохранение.

    $ renpy.movie_cutscene(«Путь к видео»)

    Прописываем сразу в лэйбле

    Существует два вида пауз renpy.pause и просто pause

    $ renpy.pause()
    $ pause()
    () — внутри прописывается насколько секунд будет пауза

    $ set_mode_nvl() — включить
    $ set_mode_adv() — вернуться в обычный режим
    nvl clear — очистить экран

    show prologue_dream (показать)
    hide prologue_dream (скрыть)

    Если вы хотите запретить игроку перематывать игру назад, воспользуйтесь функцией:
    $ renpy.block_rollback()

    Тряска экрана бывает 2 видов вертикальной и горизонтальной:
    with vpunch — вертикальная «тряска»
    with hpunch — горизонтальная «тряска»

    Команда позволяющая читать имя пользователя:
    В Init блоке объявляем переменную
    $ user = os.environ.get(‘username’)
    (название переменной может быть любым, понятное вам, например $ name или $ namePC, всё что идёт после = оставить)
    Когда нужно объявить имя пользователя, прописываем [user]

    Я брал самые интересные команды для вашего мода, так что пользуйтесь, но если вам их не достаточно можете взять информацию с таких ссылок как:
    Уроки моддинга
    Как создать свой мод для игры Бесконечное Лето [vk.com]

    Если хотите изучить азы и не копаться в моём руководстве то вам подойдёт такая ссылка:
    Как сделать и выложить мод для игры «Бесконечное Лето»

    Источник

    Оцените статью