[d | an-b-bro-fr-gf-hr-l-m-maid-med-mi-mu-ne-o-old_o-p-ph-r-s-sci-sp-t-tran-tv-w-x | bg-vg | au-mo-tr | a-aa-abe-azu-c-dn-fi-hau-jp-ls-ma-me-rm-sos-tan-to-vn | misc-tenma-vndev | dev-stat]
[Burichan] [Futaba] [Gurochan] [Tomorrow] - [Архив - Каталог - К доске] [Главная]

[Назад]
Ответ
Файл: 1401598987966.jpg -(78 KB, 960x720, 1391034844601.jpg)
78 No.47651  

Прошлый тред >>41227 в бамплимите. Возможно, в будущем он будет доступен по ссылке http://iichan.hk/vn/arch/res/41227.html

http://cf.ichan.ru/lections/lesson1.zip - Урок 1. Базовые команды
http://cf.ichan.ru/lections/lesson2.zip - Урок 2. Наводим красоту
http://cf.ichan.ru/lections/lesson3.zip - Урок 3. Ветвления и переменные
http://cf.ichan.ru/lections/lesson4.zip - Урок 4. im-функции и введение в ATL
Пак от 2014.04.19: http://yadi.sk/d/vQBVxoztMnmm3

>> No.47652  
Файл: 1401599118950.png -(9 KB, 384x384, 1149376787946.png)
9

>>47629
Мы работаем над этим.

>>47266
Баг: pi переобъявлен как pi full в полноростовых спрайтах.%% Можно сделать вывод, что поставившие модпак оригинал уже не проходят.%

Предфинальная версия фичреквестов и исправления фильтра "Мне повезёт!" там: http://rghost.ru/56052488
Мне почему-то кажется, что хранить все приближения в одном классе удобнее, чем множество разбросанных по файлам transform'ов.

>>47637
Нет.

>> No.47655  
>Мы работаем над этим.

А можно было просто не торопиться пересоздавать тред, тем более что прошлый не так далеко.

>> No.47677  

Как сделать плывучие титры?

>> No.47679  

>>47677
Прокручивающиеся снизу вверх?

# Объявляние текста
$ new_credits_text = "<text goes here>"
# Показ титров
show credits new_credits_text:
#выравнивание и перемещение за пределы экрана
xalign 0.5
ypos 1.1
# Объявление движения
linear 70.0 ypos -1.2
# Пауза, чтобы титры прокрутились до конца
$ renpy.pause(70, hard = True)

Параметры желательно настроить под себя.

>> No.47684  

>>47679
undefined images
credits new_credits_text

Сами титры должны быть в одном файле или прямо в коде?

>> No.47685  

>>47684
Что значит "в одном файле"? Работают ли титры в модификации "Совёнок" в тумане?

>> No.47686  

>>47684 Попробуй вынести объявление new_credits_text в init-секцию.

>> No.47687  

>>47685
Не знаю никаких модификаций - я пилю заново код.
>>47686
Тоже самое. Что надо писать там? new_credits_text = <?>
Имя файла с титрами?

>> No.47688  

>>47687
Как бы этот тред в основном для модификаций «Бесконечного лета», поэтому, ежели вы пишете что самостоятельно, об этом следует объявлять заранее.
В строке пишется текст титров. Сами титры в «Бесконечном лете» реализованы так:

init:
$ style.credits = Style(style.default)
$ style.credits.color = "#fff"
$ style.credits.drop_shadow = [ (1, 1), (1, 1), (1, 1), (1, 1) ]
$ style.credits.drop_shadow_color = "#000"
$ style.credits.italic = False
$ style.credits.bold = False
$ style.credits.text_align = 0.5
    image credits = ParameterizedText(style = "credits", size = 50)

Стиль, в свою очередь, невозбранно перепиливается под собственные нужды.

>>47686
У меня работает и без этого. Хотя править удобнее, согласен.

>> No.47689  

>>47688
А как сделать на фоне определенного изображения?

>> No.47690  

>>47689
Перед вызовом титров вывести это изображение.

>> No.47726  

>>47690
Спасибо.

Новый вопрос: можно ли сжать скомпилированную вн? А то 500 мб как-то многовато.

>> No.47727  

>>47726 95+% объёма ВН - это музыка + графика. Так что если что и можно заметно сжать, то только их.

Для сжатия музыки нужно:

  • убедиться, не слишком ли длинные треки используются, закольцевать можно 30 секунд, а можно 90 секунд или ВНЕЗАПНО полную 5минутную композицию
  • убедиться, что используется переменный битрейт
  • убедиться, что битрейт не избыточен (320 для mp3 - это уже перебор)
  • по моей практике, ogg звучат лучше при том же битрейте, попробуй использовать ogg вместо mp3 и поиграйся с битрейтом

Для сжатия картинок:

  • фоны для экономии места придётся держать в JPEG, при этом с качеством можно поиграть, не обязательно использовать JPEG75, можно и 90 и даже 100 для сложных картинок.
  • если у тебя есть пачка картинок, на 50% и более совпадающих (фон одинаковый, поза одинаковая, а разница только в выражениях лиц, например), то можно выделить общую часть в отдельную картинку, оставив россыпь накладок на прозрачном фоне, тогда если склеивать базу с накладками уже в рантайме с помощью im.Composite, можно серьёзно сэкономить, если накладки небольшие по весу (глаза, эмоции, повернувшаяся голова)
>> No.47728  

>>47727
Вопрос: почему в Эроге используется три типа спрайтов, хотя можно было использовать один, а остальные получать с помощью im.Crop?

>> No.47733  

>>47727
Ещё один ньюфаговопрос: можно ли запилить заставку перед главным меню? Просто картинка на фоне, ничего анимированного.

>> No.47734  

>>47733
Насколько я понимаю, label splashscreen из коробки вызывается перед главным меню. Можно, конечно, покопаться в 00start.rpy, но это излишне.

>> No.47735  

>>47734 Так и есть. Если в игре объявлена label splashscreen, она будет показана перед меню.
>>47728 2 лишних набора спрайтов довольно немного весят на фоне музыки, цг и фонов, зато позволяют отказаться от im.Scale в реальном времени. Году эдак в 2009 у меня (как и у многих) был eeePC, на котором скейлинг fullhd-спрайтов в ренпи мягко говоря подтормаживал. Но раздувать объём игры тоже не хотелось, в итоге политика партии в разные годы менялась несколько раз, то туда, то обратно. Вышло бы эроге ещё на годик-другой попозже, мог бы быть и снова один набор в полный рост.

>> No.47743  

>>47735>>47734
С label splashscreen идет интро и затем сразу игра, без меню.

>> No.47744  

>>47743 А ты return из метки сделал? Если нет, то сделай. Если да, то покажи код.

>> No.47968  

Я тут начал пилить альтернативный сценарий, суть токова: главный герой — тот самый Гамельнский Крысолов, увёл детей из города и привёл их в «Совёнок». Он там вожатый. Ему надо за эту неделю выбрать себе ученицу, которой он передаст мастерство Его когда-то учила ОД, которую я обозвал Хельгой. Мне нужна музыка, конкретно — мелодия, которую играет главный герой, уводя детей. Анон-флейтист, помоги.

>> No.47969  

Да, пока готов нулевой день (день приезда).

>> No.47970  

>>47968 Такое лучше реквестировать либо в /mu/, либо в Звукозпись-треде в бэ ( http://iichan.hk/b/res/2626424.html )

Либо сверстать в Guitar Pro (он умеет любым музыкальным инструментом играть, пусть название тебя не смущает)

>> No.47971  

>>47970
Хорошо, попробую реквестнуть там. Насчёт Guitar Pro — абсолютно лишён музыкального слуха, вряд ли что-нибудь путное выйдет.

>> No.48059  

Как достать скрипт из script.rpyc?

>> No.48061  

>>48059

  1. Открываешь renpy/script.py и удаляешь из него строку i.source = None
  2. Подкладываешь в папку game файлик https://raw.githubusercontent.com/lolbot-iichan/decompile.rpy/master/decompile.rpy
  3. Запускаешь игру, получаешь пачку *.rpy.txt-файлов
>> No.48062  

>>48061
У меня нет script.py, иначе я бы не спрашивал.

>> No.48064  

>>48062 Это не в папке /game/, а в папке /renpy/ же.

>> No.48065  

>>48064
Точно. Спасибо.

>> No.48066  

>>48065 Что вскрываешь-то хоть?

>> No.48067  

>>48066
Никакого криминала, свой собственный проект. Забыл сделать копию скрипта.

>> No.48068  

>>48067 ЛОЛ! Хотя спасение своих проектов формально и есть официальное предназначение данного инструмента, ни я как автор, ни кто-либо с форума RenPy разработчиков как свидетели выпуска не думали всерьёз, что эта тулза реально нужна для чего-то, кроме взлома. Были даже попытки придумать защиту от decompile.rpy. Да блин, он даже создавался, чтобы распотрошить Катаву, потому что злобные разработчики запретили её переводить несертифицированным командам. А тут ты с такой-то success story! Советую всё-таки использовать svn или git.

>> No.48070  
Файл: 1403030556527.jpg -(128 KB, 464x450, Desu.jpg)
128

>>48068

>> No.48073  

>>48070 Избранные отзывы про decompile.rpy:

> I can see only ONE possible use for this, and it's not really legal...it can only damage people and benefit nobody. If such script become public I'd have to stop using Ren'Py to make all future games for sure.
> I feel sudden decrease of will on my project at first when I found this post.
> Although that's a really high level of skill demonstrated there by iichan_lolbot -- whom I think is somewhat a commercial developer as well -- it's a shame there's a conflict of interest here.
> But YOU DON'T HAVE ANY RIGHT to touch my .rpyc, if I DON'T EXPLICITLY GRANT YOU THE RIGHTS.
>> No.48075  

>>48073
Они в чём-то правы, однако в скрипте вряд ли может быть что-то такое, что можно украсть/использовать в корыстных целях.

>> No.48080  

>>48075 Там может быть DRM-модуль как минимум. К тому же были примеры, когда удачные инди-игры быстренько портировала на iPhone другая команда и стригла бабло, пока горячо. Конечно, тру-творцов такое должно только радовать, но коммерческие renpy-разработчики - всё те же правоторговцы.

>> No.48084  

>>48073
Я вчера попробовал разобрать Save The Date, причем версия скрипта вроде бы была новой — очевидная ошибка. Ну там какая-то сложная хрень, я даже не разбирался.

>> No.48085  

>>48084
А, ясно, я просто думал что надо просто кинуть decompile.rpy в папку, без всяких махинаций

> Открываешь renpy/script.py и удаляешь из него строку i.source = None
>> No.48092  
Файл: 1403202436512.png -(45 KB, 384x384, 1149776029802.png)
45

Тестовая версия фильтров, заменяющих спрайты релиза на версию из демо-2009 или карикатурную paint-версию.

  • Фильтры затрагивают только релизные спрайты и тех персонажей, для которых они нарисованы. Остальные изображения показываются без изменений.
  • Отсутствующие эмоции/костюмы заменены имеющимися в наличии.
  • Фильтр "Демонстрационное лето" использует собственную копию ресайзов из демо-2009 и заменяет некоторые объявления extra_sprites_demo.rpy из модпака.
  • Из-за неполной замены extra_sprites_demo.rpy, спрайты в abcb-моде могут "прыгать". Новая версия спрайтов отличается по размеру от прошлой, и, возможно, именно эта версия будет использоваться в дальнейшем.
  • Расположение изображений в следующем модпаке может измениться. Система имён и объявлений может измениться. Часть изображений не используется фильтрами, но оставлена на будущее.
  • Помните, что это лишь тестовая версия. Вполне вероятны ошибки, вылеты, и просто несоответствия какой-либо замены вашему чувству прекрасного. Не устанавливайте эти фильтры, если у вас нет желания их удалять вручную.
  • Пожелания и претензии желательно оставлять в этом треде, ответная реакция на критику в других местах не гарантируется.

Ссылка: https://yadi.sk/d/Ckg3HO8NU7cqQ

>> No.48093  

>>48085 У скрипта есть 2 режима работы, либо я все $-строки восстанавливаю автомагически с некоторой погрешностью, исходя из байткода, либо пользуюсь той информацией, что в i.source. Второй режим сильно лучше для Python 2.7, поскольку оригинальный декомпилятор писался для байткода Python 2.5, который используется в Катаве. Когда RenPy ещё использовал 2.6, проблем было мало, но 2.7 поддерживается плохо, поэтому сейчас второй ружим включен в git-версии по умолчанию.

>> No.48095  
Файл: 1403212607067.png -(529 KB, 1632x1278, katawa_pack.png)
529

http://rghost.ru/56474875 - я случайно сделал для Катавы Мод-пакъ. В него вошли

  • новый лаунчер, без тэгов, зато встроенный прямо в меню Катавы
  • адаптированное "Бесконечное Лето"
  • адаптированный "Мини-Редактор"
  • адаптированная "Lolbot's Injection for Katawa"
  • улучшенные графические фильтры, поддерживающие и ATL
  • некоторые из старых фильтров, чисто для количества и демонстрации возможностей

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

>> No.48096  

>>48095 Ох вау!

>> No.48101  

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

>> No.48105  

>>48101 Этакая система checkpoint'ов, как в современных дебильных приставочных играх? Можно. Для этого нужно будет переопределить главное меню и внутриигровое меню, чтобы там не было кнопок save/load, а было вместо них нечто другое, что ты считаешь сохранением.

>> No.48193  

>>48101
Это конечно интересно, но зачем?
Нет, автосохранения на ключевых развилках могут здорово облегчить жизнь, но целиком и полностью отказываться от привычной системы явно не стоит.

>> No.48201  
Файл: 1403894335419.png -(660 KB, 900x808, 14038770294453.png)
660

Саманта-мод со спрайтами: http://rghost.ru/56611349
Без обновлений по сюжету. Но со спрайтами. Спрайты!

>> No.48202  

>>48201
Отлично же! А спрайты есть?

>> No.48203  

>>48201
Старая любительская версия мне понравилась больше, хоть она и для анимуфагов, а галстук красный. Крайняя левая на твоём пикрилейтеде уж больно кукольная на вид.

>> No.48205  
Файл: 1403910729646.jpg -(959 KB, 1738x978, screenshot0002.jpg)
959

>>48201 Раз так, то грех не обновить Мини-Редактор.
http://rghost.ru/56615160

А чтобы изменение не было совсем уж минорным, прикрутил кнопки +/- к выборам эмоций и шмоток. Таким образом, теперь можно подстраивать сцену, реже вызывая меню.

Каптча mi намекает на Мику.

>> No.48249  
Файл: 1404062363347.jpg -(139 KB, 850x850, FiD380.jpg)
139

Могу я тут задать глупый вопрос немного не по теме по ООП в целом, и по Питону в частности?
Я поставил себе задачу (с целью упорядочивания кода и вообще, типа все крутые сырны так делают) начать работать с объектами, а не просто массивами. Т.к. я ничего кроме умных слов не знаю, может быть это покажется глупым со стороны, но прошу ответить на вопрос, а не обсуждать используемые методы.
__
Задача: Проименовать множественные объекты/экземпляры таким образом, чтобы затем к ним и хранящимся в них данным можно было удобно обращаться из скрипта.

Дано: Список (расширяемый по ходу разработки), содержащий N записей. Каждая запись это потенциальный объект/экземпляр основанный на базовом классе, т.е. имеющий сходный с другими набор параметров и методов. РенПай для воплощения.

Вопрос 1. Как (Нужно ли) интерпретировать запись в Списке в название объекта.

Вопрос 2. Как потом из скрипта добраться до параметров (и методов) необходимого объекта?
__
Если даже укажете нужную страничку в документации - будет здорово, потому как найти её своими силами пока не получается. Все примеры основаны на жёстком именовании экземпляров, и потом вызове их же, непосредственно из кода.

>> No.48250  
Файл: 1404064893370.jpg -(90 KB, 600x600, 1165323653982.jpg)
90

>>48249
Во-первых, здесь всё-таки не /dev/.
Во-вторых, в Питоне everything is an object, так что задача несколько некорректна.

>прошу ответить на вопрос, а не обсуждать используемые методы.

Ладно.

>Как

dict, чтобы по строке (или любому другому объекту) выдавало объект; записывать имя переменной внутрь самой переменной, и циклом по любому контейнеру находить нужную; eval(), но это совсем крайний случай.
В случае, если требуется не имя переменной, а имя класса, пригодится функция type()

>Нужно ли

Скорее всего нет.

>> No.48253  

>>48250
из /dev меня погонят ссаными тряпками, я ж ни разу не кодер. Тамошнему высокоблагородному обществу проблемы простой глупой сырны смешны.

>eval()

exec
Но, да, всё скатывается в дичайший бред.

И что? Использовать шестимерные массивы и общие функции к ним? Я уже с трудом разбираюсь во всех этих переборах при поиске нужной информации. Обращаться напрямую к объекту и его методам обработки собственных данных казалось мне хорошим решением.
Но парсинг для создания нужного имени, а затем для обращения к нему же - это перебор.

>> No.48254  

>>48253
А, вот в чём проблема. Ну тогда просто:
Объект, если очень грубо, всего лишь запись с именованными полями и некоторыми особыми свойствами. Сначала где-то требуется обозначить объект, а потом можно доставать из него данные и методы.
Я, правда, всё ещё не пойму, зачем нужно название объекта, и нна всякий случай отсылаю к https://docs.python.org/3/tutorial/classes.html
Можно ещё Dive Into Python почитать.

>> No.48272  

>>48249 У меня что-то похожее есть в decompile.rpy и других скриптах:

for item in someWhere:
... # выясняем, чем именно является item
if **isinstance**(item, renpy.ast.Image):
... # раз угадали тип, трогаем поля класса
doSomething(item.filename)
... # не угадали
else:
... # вот как-то так я раздракониваю незнакомые объекты
renpy.error((item, [(k,**getattr**(item,k)) for k in **dir**(item)]))
>> No.48284  

>>48272
Ещё для порядка стоит назвать dir() и .__dict__, что выводят члены класса.

>> No.48286  

Как в ренпае сделать квик тайм евенты по типу: нажми А (ну или вывести кнопочку на экран) пока видишь сообщение (счётчик времени).
Если успел, то события идут по одному варианту, не успел, что-то произошло, например, ГГ не отбил удар и попал в больницу или разбилась крынка с молоком (неважно).

>> No.48287  
Файл: 1404318082012.jpg -(91 KB, 750x718, 02.07.jpg)
91

>>48286
мне помогли это ссылочкой http://lemmasoft.renai.us/forums/viewtopic.php?f=8&t=7691

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

Что у меня в скрипте не так?

>> No.48288  

>>48287
Раскладка английская у клавиатуры?

>> No.48289  

>>48095
У меня не работает модпак
Версия 1.1 + русификатор

>> No.48292  

>>48287
На анимефоуме мне подсказали в чём беда.
Может и вам пригодится.
http://www.animeforum.ru/index.php?app=forums&module=forums&section=findpost&pid=2936371

>> No.48293  

>>48289
Поподробнее, пожалуйста.

>>48292
Если ещё кому интересно, то есть версия с большей кастомизацией http://www.renpy.org/wiki/renpy/doc/cookbook/Timed_menus
Есть ещё ui.timer(), в чём-то может даже удобнее.

>> No.48294  

>>48289 Как именно не работает? Что пишет?
Там как минимум decompile.rpy лишний, можно его выкинуть (и удалить decompile.rpyc, если он создался) и попробовать без него ещё раз. А может что с русификатором не подружилось. Ночью попробую у себя тоже, но будет лучше, если ты сообщение об ошибке покажешь.

>> No.48296  

>>48293>>48294

'I'm sorry, but an exception occured while executing your Ren'Py
script.

Exception: Empty python source.

NOTE: Make sure, that you've really commented out "i.source = None" line in renpy/script.rpy

If it does not help, try setting "__LB_decompile_bytecode" flag to False

While executing init code:
- script at line 135 of C:\Katawa Shoujo/game/decompile.rpy
- python at line 1604 of C:\Katawa Shoujo/game/decompile.rpy.
- python at line 1573 of C:\Katawa Shoujo/game/decompile.rpy.
- python at line 1346 of C:\Katawa Shoujo/game/decompile.rpy.
- python at line 156 of C:\Katawa Shoujo/game/decompile.rpy.

-- Full Traceback ------------------------------------------------------------

File "C:\Users\������\Desktop\Katawa Shoujo\renpy\bootstrap.py", line 260, in bootstrap
File "C:\Users\������\Desktop\Katawa Shoujo\renpy\main.py", line 255, in main
File "C:\Users\������\Desktop\Katawa Shoujo\renpy\execution.py", line 234, in run
File "C:\Users\������\Desktop\Katawa Shoujo\renpy\ast.py", line 558, in execute
File "C:\Users\������\Desktop\Katawa Shoujo\renpy\python.py", line 938, in py_exec_bytecode
File "C:\Katawa Shoujo/game/decompile.rpy", line 1604, in <module>
File "C:\Katawa Shoujo/game/decompile.rpy", line 1573, in _m1_decompile__LB_decompile_all
File "C:\Katawa Shoujo/game/decompile.rpy", line 1346, in _m1_decompile__LB_decompile_item
File "C:\Katawa Shoujo/game/decompile.rpy", line 156, in _m1_decompile__LB_decompile_python
File "C:\Users\������\Desktop\Katawa Shoujo\renpy\exports.py", line 1186, in error
File "C:\Users\������\Desktop\Katawa Shoujo\renpy\exports.py", line 1175, in _error
Exception: Empty python source.

NOTE: Make sure, that you've really commented out "i.source = None" line in renpy/script.rpy

If it does not help, try setting "__LB_decompile_bytecode" flag to False

While executing init code:
- script at line 135 of C:\Katawa Shoujo/game/decompile.rpy
- python at line 1604 of C:\Katawa Shoujo/game/decompile.rpy.
- python at line 1573 of C:\Katawa Shoujo/game/decompile.rpy.
- python at line 1346 of C:\Katawa Shoujo/game/decompile.rpy.
- python at line 156 of C:\Katawa Shoujo/game/decompile.rpy.

Ren'Py Version: Ren'Py 6.10.2e'

>> No.48297  

>>48296 Всё верно, сноси нафиг декомпилятор, он попал в мод-пак случайно.

>> No.48298  

>>48297
Благодарствую

>> No.48304  

Версия 1.1. Ставил по инструкции. Уроки не запускаются через программу. Нигде нет выбора на туториал №1. Клацаю начать игру, там только основной сценарий.

>> No.48305  

>>48304
Модпак из оппоста поставил?
И ещё, там уроки же все приложены картинками, открываешь и читаешь текст лекции с изображений, лол.

>> No.48307  

>>48304 Первый урок ещё без селектора для 1.1 и без регистрации скриптов.
Установи сначала модпак или скрипт из 4 урока и посмотри на http://iichan.hk/vn/src/1391035023867.jpg

>> No.48311  

>>48307
Кое-как похимичил, чтобы запустить то, что я сделал в первом уроке. В итоге, кое-что вышло. В выборе модов появились названия заданий двух уроков, но при нажатии на любой из них появляется ошибка:

I'm sorry, but an uncaught exception occurred.

While running game code:
File "game/mod_selection.rpy", line 103, in script
ScriptError: could not find label 'anonimus__lesson1_task2'.

-- Full Traceback ------------------------------------------------------------

Full traceback:
File "C:\everlasting_summer-1.1-all\renpy\bootstrap.py", line 265, in bootstrap

renpy.main.main()

File "C:\everlasting_summer-1.1-all\renpy\main.py", line 327, in main

run(restart)

File "C:\everlasting_summer-1.1-all\renpy\main.py", line 78, in run

renpy.execution.run_context(True)

File "C:\everlasting_summer-1.1-all\renpy\execution.py", line 509, in run_context

context.run()

File "C:\everlasting_summer-1.1-all\renpy\execution.py", line 316, in run

node = renpy.game.script.lookup(e.args[0])

File "C:\everlasting_summer-1.1-all\renpy\script.py", line 547, in lookup

raise ScriptError("could not find label '%s'." % str(label))

ScriptError: could not find label 'anonimus__lesson1_task2'.

Как исправить это?

>> No.48319  
Файл: 1404483124519.jpg -(27 KB, 640x400, e3f314dfca46.jpg)
27

По началу впал в отчаяние, потому, что ни хрена не понял. Но, взяв себя в ноги, открыл один простенький мод. И озарение настигло меня! Задание из первого урока заработало. Правда без свистелок и перделок, но пошло! Дальше - дело техники и опыта.
Вот, что я хочу сказать анонам таким, как я: если вы ни хрена не понимаете в программировании, но очень уж хочется как-то допилить Бесконечное лето, то прочтите уроки из этого треда, откройте AkelPad'ом какой-нибудь несложный мод из модпака, изучите его и на этой основе сделайте что-нибудь своё. Такие дела.

>> No.48323  

>>48319 Не забудь поделиться результатами!

>> No.48325  

Где достать фиксы на "Мне повезет!"? Старый файл удален, более нового не обнаружил.

>> No.48326  

И еще, пока я здесь. В этих ваших модификациях присутствует бета-версия БЛ, помеченная как "Пять дней старого сценариста". В бете их, тем временем, только три. На третьем все ДЕЙСТВИТЕЛЬНО заканчивается. ЧЯДНТ again?

>> No.48327  

>>48326
Автор их не доделал, очевидно же!

>> No.48329  

>>48327
Нет, не очевидно. Зачем тогда писать "пять"? Если демку кто-то будет мааааловероятно, кто сейчас будет насиловать труп, пусть умерший и своей смертью? продолжать, то все равно писать о пяти рановато. Если же нет - зачем вообще дезинформировать? Я ее проходить полез еще раз только из-за злополучного "пять".

>> No.48331  

>>48329
Эти дни есть в открытом доступе, но не подогнанные под нынешний движок.
https://github.com/yakui-lover/eroge-dopil/blob/master/Sorc_ver/day4.rpy
https://github.com/yakui-lover/eroge-dopil/blob/master/Sorc_ver/day5.rpy

>> No.48332  

>>48331
Спасибо тебе, бро.

>> No.48384  

Ну Сэйбы, именем Армока заклинаю, скиньте кто-нибудь эти чертовы фиксы на "Мне повезет!".

>> No.48385  

>>48384
http://rghost.ru/56759961

>> No.48386  
Файл: 1404670684561.jpg -(8 KB, 320x240, kor_o002.jpg)
8

>>48385
7.9КБ (+4.4Кб)
182 строчки (+120 строк)
Я бы с трудом назвал это "фиксами".

>> No.48387  

>>48386
Значит, костыли.

>> No.48388  

>>48387
К сожалению, чтобы подменить обработку данных в функции, нужно подменить саму функцию. Зато подмена происходит только перед отображением меню, и весь остальной РенПи (включая систему логирования) считает, что вы оперируете исходными данными.

>> No.48422  

>>48329
А я между тем жив, вот только руки никак не доходят доделать начатое. И от редактора никаких новостей. С технической частью основные трудности () удалось превозмочь благодаря помощи Якуя. А кроме корректуры текста оставались лишь всякие мелочи. Попробую выйти на связь с редактором, может к середине месяца будут какие-то результаты.

>> No.48423  

>>48422
И да, чтобы вы чего лишнего не подумали - нет, никакого нового сюжета не будет, в основном это будут правки текста, адаптация под современный движок, а, ещё новая графика будет. Часть уже выложили, часть вам ещё предстоит увидеть. Там будет пара новых CG и спрайтов. Да, мы действительно пилим это уже пять месяцев, хотя по факту основная работа была сделана за первые две-три недели.

>> No.48431  

>>48423
Это будет просто прекрасно. Сделайте это, даже если я единственный, кто ждет и верит.

>> No.48449  

>>48431
В общем, пока две новости, хорошая и не очень. Хорошая - я взялся за работу, и довёл текущие два дня до совместимости с версией из модпака. Из нового по сравнению с имеющейся демкой там небольшая переделка карточной игры, и большая работа над текстом. Оставшиеся три дня изменились немного - в основном выполнены старые TODO по недостающим спрайтам и CG там, где это можно было впилить не изменяя количество строк в конечном файле (т.к. наиболее актуальный текст в данный момент находится у редактора, а проводить слияние двух версий (в одной только текст, в другой только код), которые отличаются числом строк - то ещё веселье в силу некоторой неоптимальности рабочего процесса и моей неопытности). Что касается второй новости - редактор пока не выходит на связь. Оно и понятно - лето же на дворе. Но если от него никаких новостей не будет, то придётся релизить мод с текстом как есть, либо же с моими минимальными правками (что куда как менее предпочтительно по сравнению с работой профессионального корректора), чтобы не затянуть разработку ещё на один-два месяца. Такие дела.

>> No.48461  

Товарищи мододелы, а поясните про window show/hide. Его нужно всегда делать при смене сцены или только если в данной конкретной сцене будут показываться спрайты и меняться их эмоции?

>> No.48463  

И в догонку вопрос про зум. Если прописывать в виде:
linear 2.0 xpos 0.5 ypos 0.5 zoom 2.0 то не получается плавное приближение центра экрана (или любой другой заданной точки), а камера сначала "уплывает" в левый верхний угол. Как это пофиксить?

>> No.48467  

>>48463 xpos/ypos у тебя по-середине, а xanchor/yanchor какой?

>> No.48468  

>>48461

> Его нужно всегда делать

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

>> No.48469  

>>48461

>Его нужно всегда делать при смене сцены или только если в данной конкретной сцене будут показываться спрайты и меняться их эмоции?

Сцены можно менять не пряча окно текста. Прятать окно текста - это исключительно решение для композиции, когда в паузу без текста или диалога надо плавно перейти к другой сцене без пустой рамки. Но обязательно если с ADV режима ты переходишь в NVL режим. Первый отвечает за повествование в нижнем окне, второй за повествование на весь экран.
Для корректной работы следи за порядком использования этих команд.
$ set_mode_adv()
window show
"Рандомный диалог."
window hide

$ set_mode_nvl()
window show
"Диалог или развёрнутые описания."
window hide

>> No.48473  

>>48467
Хм, а вот их я как раз и не прописывал. Давненько не писал ATL, поэтому все нюансы позабыл, трудно возвращаться к работе после длительного перерыва, да ещё и все свои тестовые сценарии посносил нафиг при обновлении модпака.

Пробовал два способа: задавать сразу xalign 0.5 yalign 0.4, но тут факап случился - камера наезжала на точку с координатами (0.5,0.4) пикселей, т.е. в самый верхний угол. Там была какая-то особенность, что нужно по-разному писать чтобы это воспринималось как относительная величина, а не абсолютная, но я уже и не помню, как правильно это делать.

Потом попробовал просто xpos/ypos задать, в результате камера так и наезжает через левый угол, но затем в нужную точку. Получается, что нужно прописать что-то вроде этого:

linear 3.0 xpos 0.5 ypos 0.4 xanchor 0.5 yanchor 0.4 zoom 2.0

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

>>48468
>>48469
Спасибо. Действительно, это в основном чисто композиционная вещь, а убирающееся окошко при смене сцены мне дико нравится, особенно если это делается через фейдин/фейдаут. Пойду удовлетворять свой перфекционизм и прописывать это в сценарии.
И да, ещё вопрос, если у меня было сделано window hide, а в следующей сцене я намеренно не прописываю window show, то будет ли отображаться там текст?

>> No.48478  

>>48423
Уберите ЦГ с рукой пожалуйста. Мне за него стыдно же. Очень.
автор

>> No.48481  

Как сделать, что бы в катава модпаке изменялся язык (названия) при его смене в настройках?

>> No.48484  

>>48473
Не, так тоже фигня какая-то получается.

>> No.48531  

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

scene bg <...>:
zoom 1.0 xalign 0.5 yalign 0.5
linear 3.0 xalign 0.5 yalign 0.4 zoom 2.0

Может кому пригодится.
>>48473 - кун

>> No.48533  

Два вопроса по свежему модпаку:

  1. Почему в этом треде до сих пор нет на него ссылки?
  2. Почему выбранные фильтры по тегам в модселекторе не сохраняются при перезапуске игры? Хотет чтобы были кнопки навроде "применить и запомнить фильтры сценариев" и "применить фильтрацию только на этот раз".
>> No.48534  

>>48533

  1. Потому что выкладывали в соседнем треде.
>Модпак: https://yadi.sk/d/aqscBXh_WACNS
>Обновление до новой версии: https://yadi.sk/d/Ynk17pSRWACiS

2. Значит, этого ещё никто не предлагал сделать. Ты первый.

>> No.48549  

>>48481 Работаю над этим. Ориентировочный срок выхода поставки - завтра-послезавтра. Заодно будут локализованы на en/fr/ru бесконечный бредогенератор, меню хаков extras и мини-редактор.

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

>>48533>>48534

  1. Главное, что теперь таки выложили.
  2. Ты - первый, кто просит. Сделаю. Хватит одного любимого набора тэгов? Если так, то добавится одна лишь кнопка сохранения.
>> No.48555  

>>48549
Да, хватит, тем более что большнинство скрывает студенческие сценарии после прохождения.

>> No.48559  

>>48549
По поводу текстовых фильтров есть такое предложение:
Если ты не хочешь (не можешь) переводить их, то можно сделать что бы они были доступны только при включенном языке на котором написан сам фильтр.
На пример, при включенном русском языке фильтры доступны, английском языке - этих фильтров просто не будет в списке.

>> No.48562  

>>48559 При текущей архитектуре это не поможет, выбранные русские фильтры уже применились при старте игры, дописав условное ", ня." в конец каждого предложения, включае те, что в файлах с английскими модами, например. Требовать от юзера рестарта на смене языка - плохо. Так что единственный выход - переписывать механизм наложения текстовых фильтров.

>> No.48564  

>>48562
Так в чем заключается проблема? В адаптации перевода текстовых фильтров или в файловой архитектуре игры?

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

Кстати, почему в акт1 заставка меню лучше чем в 1.1?

>> No.48567  

>>48533>>48555 Это для тебя: http://rghost.ru/56871780

>> No.48568  

>>48567
Благодарю.

>> No.48600  

>>48564 Проблема заключается в том, что в прошлых версиях фильтры текста коверкали тексты на init-фазе, то есть один раз и до запуска игры. Сегодня выложу версию, где тексты портятся уже в рантайме, с учётом persistent.current_language. Там же будет доработанная $регистрация для поддержки многоязычности.

>> No.48611  

Фиксы мод-селектора Ычан Эроге, пятый урок и обновление Катава-пака заняли внезапно значительно больше времени, чем я ожидал, но я начинаю выползать из-под завала. И вот что я вытаскиваю оттуда с собой: http://rghost.ru/56895925

Мод-пак для Катавы теперь поддерживает локализацию при $регистрации.

Старый способ по-прежнему работает:

$ mods[author_id__my_mod] = u"Wonderful Story"
$ filters[image__filter_nigga] = u"Nigga Filter, lol"

В таком случае за$регистрированный будет отображаться в списке модов на всех языках с одним и тем же названием. Оставлено для обратной совместимости.

Новый способ такой:

$ mods[author_id__my_mod_2] = {"ru":u"Такая-то история"}
$ filters["image__filter_sepia"] = {"en":u"Nostalgic Shoujo", "fr":u"Shoujo Nostalgique", "ru":u"Ностальгическая Shoujo"}

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

Фильтры доступны всегда, но, если у них нет названия на текущем языке, то вместо текущего используется язык "en", если и его нет - всё упадёт с ошибкой.

>> No.48612  
Файл: 1405370555289.jpg -(992 KB, 800x1800, screenshot0001.jpg)
992

Самое полезное из локализованных меню.

>> No.48614  

>>48611
Ура, Лолбот ожил!

>пятый урок

Это же про eroge-specific фичи? Хотет услышать подробнее про расстановку чибиков на карте, эмоции в карточной игре, и что там ещё планировалось, но так и не было реализовано в итоге.

>> No.48615  

Не знаю, можно ли найти здесь автора одного из модов, вошедших в пак, но багрепорт оставлю: в сценарии про Алису, который "Взвейтесь кострами. Алиса-мод" при окончании первого дня происходит резкий переход на середину второго дня минуя утренние события и настройку спрайтов/интерфейса. Так и задумано или в релиз пошла рабочая версия?

>> No.48618  

>>48611 Внутри квадратных скобок почти всюду утеряны кавычки.

>> No.48641  

По-прежнеу вылетает с трейсбеком про Konami.listener при попытке сохраниться, чаще при попытке перезаписать сейв, особенно если ты до этого долго не сохранялся. Начинает сильно раздражать.

>> No.48647  

>>48641 Так известно же в чём проблема. В неподдержке сериализации lambda при pickle/cpickle. Убрать из Конами лямбду нафиг. Или сам Конами убрать, а включать хентай редактированием конфига.

>> No.48650  

>>48647
Konami listener has no lambda. Можете проверить сами, media.rpy в открытом доступе. Я высказывал мысль, что проблема может быть в hide, но это маловероятно. На соседнем ресурсе обычно спрашивают, не стоит ли у папки "только для чтения".

>> No.48651  

>>48650 А без hide и после чистки всех persistent/save-файлов проблему воспроизвести удалось?

>> No.48652  

>>48651
У меня проблемы и так не было, насчёт остальных информации нет.

>> No.48662  

Но вообще-то с этим можно что-то сделать? А то, например, Алиса-мод вообще нереально играть, удачно сохраниться получается только в 50% случаев. Глянул код - там используется проверка persistent.henatai == true/false. В других модах, где этой проверки нет, вылетает реже, если вылетает вообще.

>> No.48666  
Файл: 1405518083239.jpg -(641 KB, 1366x768, abcb.jpg)
641

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

Для тех, кто не в курсе, вкратце поясню: где-то в январе появился ренпи-сценарий старого образца, примерно 2008-2009 года, и было решено портировать это дело на современный движок, попутно исправив ошибки в тексте и добавив новых спрайтов, бэкграундов, цг и прочих свистоперделок.

Собственно, на этом итерация разработки под названием "портирование", скорее всего, завершена. Чуть позже скорее всего выпущу патч, который исправит найденные ошибки и баги (наверняка где-то что-то всё равно пропустил), да всё-таки добавит некоторый нереализованный функционал в карточную игру. Однако дописывать сам сценарий я не планировал, и предоставляю эту возможность всем умеющим и желающим. Было бы вообще отлично, если бы сам abcb вдруг нашёлся и продолжил начатое, хе-хе. Буду очень рад любым попыткам дописать недостающий текст и руты.

Ссылка на скачивание: https://yadi.sk/d/4v7Ik3JyWikKT

Для корректной работы необходим свежий мод-пак от 8 июля.

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

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

>> No.48667  

>>48666
Забыл добавить, что буду рад, если мод включат в следующий модпак, заменив имеющуюся там демо-версию.

>> No.48670  

>>48662 Выпилить всё, связанное с Конами-кодом, нафиг. Заменить на строчки наподобие:

init 9999:
$ persistent.hentai = True

Если не редактировать media.rpy, то нужно будет отменить все его вредоносные действия. Попробую ночью накидать вариант.

>> No.48672  

>>48666
Спасибо тебе огромное, бро. Пжять лет жду такую игру. Сейчас буду качать и ностальгировать.
громче всего возмущавшийся насчет отсутствия двух дней-кун

>> No.48679  

>>48666
Если выбрать "проиграть Лене" на турнире, то возникает ошибка
http://pastebin.com/WhvBYV8q

>> No.48680  

>>48679
Проигрывать Лене - ошибка.

>> No.48681  
Файл: 1405524404507.jpg -(3 KB, 331x152, clear.jpg)
3

>>48680
Хейтерная шутка.

>> No.48682  

>>48679
А вот и баги повылезали. Всё-таки надо было закомментировать этот новый функционал (по задумке там эмоции аватарок персонажей в карточном турнире должны были меняться). Лечится этот баг простой автозаменой в day2.rpy:
надо "$ rival.mood" заменить на "#$ rival.mood". Везде.

Хотя ладно, вот исправленный второй день: http://rghost.ru/56927086

>> No.48683  

>>48681
Как раз наоборот.

>> No.48687  

>>48670
Чем плохо простое удаление из ренпаевских данных?

init 9999:
$ store.konami_listener = None
$ config.overlay_functions.remove(konami_overlay)
$ persistent.hentai = True
>> No.48693  

>>48687 Да, я что-то такое и предлагаю. Только оформить это как фильтр, например. И не забыть тот же konami_overlay тоже удалить из store, чтоб наверняка.

>> No.48702  

>>48693
В общем, если сделаете так, что новый модпак перестанет вылетать при сохранении - честь вам и хвала, ибо сия досадная ошибка порой вызывает сожаление о потерянном на чтение времени.

>> No.48706  

Сырны, посоветуйте.Пытался пройти сосачевский сценарий >>48576, но он standalone, и при простой замене mod_selection.rpy крашит все. Можно ли как-то слить оба mod_selection.rpy, не прибегая к помощи Word, где его потом еще и сохранять в utf-8 нужно?

>> No.48708  

>>48706
Попробуйте не заменять mod_selection.rpy.

>> No.48709  

>>48706

> крашит все

Ты бы хоть написал как именно крашит. Судя по всему, вместе с их модом поставляется древний селектор, который не умеет подгружать фильтры, а у тебя они есть и пытаются в filters[] прописаться. Просто возьми вот этот файл, он самый свежий: >>48567

>> No.48710  
Файл: 1405584761471.jpg -(86 KB, 926x656, large_z_b55cd758.jpg)
86

>>48708
И как я сам не додумался? Видимо, я все-таки гуманитарий.

>> No.48713  
Файл: 1405586537809.jpg -(67 KB, 350x507, kor40d.jpg)
67

Проблема русского рока оказалась в этот раз не в конами-коде и не в Алисе, а лично во мне. Приношу свои глубочайшие извинения.

Всем, скачавшим мод-селектор с сохранением тэгов, следует заменить его на этот:
http://rghost.ru/56937947

Note to self: не делать import за пределами init-блоков.

ЗЫ Падения из-за конами-кода этот фикс не закрывает, только те, которые Can't pickle <type 'module'>

>> No.48714  

>>48713
Во всем виновата Алиса.

>> No.48715  

>>48714 Виновато отсутствие автотестов. Вот если бы Эроге разрабатывалось согласно TDD, то оно вышло бы к 2030 году, зато абсолютно безглючным, и при добавлении любой подобной мелочи проверялось бы, не рассыпались ли при этом другие, на первый взгляд никак не связанные области.

>> No.48717  
Файл: 1405588153505.png -(1199 KB, 1500x3500, Mt_ms.png)
1199

>>48715
Тогда к 2020 году вам бы надоело, а в где-то к 2026 в терабайтном файле диздока появился бы искусственный интеллект - Риточка.
Лучше уж пусть во всем будет виновата Алиса

>> No.48729  

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

http://rghost.ru/56943205

>> No.48737  

>>48729 Ого, даже не одна, а две истории! Спасибо, очень хорошо сделал!

>> No.48740  

>>48687 Развил твою идею, оформил как фильтр для мод-пака: http://rghost.ru/56958150

init:
$ filters["control__disable_konami"] = u"Отключить Конами-код"
python early:
def control__disable_konami():
for f in config.overlay_functions:
if hasattr(f, "func_name") and f.func_name == "konami_overlay":
config.overlay_functions.remove(f)
del store.konami_listener
persistent.hentai = True
>> No.48741  

>>48740
Это работает как способ вообще вырубить хентай?

>> No.48746  

>>48741
Вообще включить. Допилить надо.

>> No.48747  

>>48746
Верю, жду, ненавижу плохой хентай

>> No.48748  

>>48747 Поменяй True на False же.

>> No.48749  

>>48748
Мне просто надоело так делать. Как новый репак выложат - можно смело все вообще сносить и на ваниль его ставить. Одиночный мод выйдет - вообще караул. После пятого раза я предпочитаю молча дождаться надстройки или же безуспешно (гуманитарий, йопт) копаюсь в коде в надежде просто найти и заменить черным квадратом хентайные ЦГ.
Быть гуманитарием - страдание.

>> No.48750  

>>48748
вдогонку Чем вскрывать файлы renpy? Не всем же гуманитариями умирать.
>>48749-кун.

>> No.48751  

>>48749
http://rghost.ru/56972558 - это для тебя. Надеюсь, в следующий мод-пак это включат и тебе достаточно будет поставить одну галочку и перезапустить игру.

>>48750

  1. Кладёшь https://raw.githubusercontent.com/lolbot-iichan/decompile.rpy/master/decompile.rpy в папку /game/
  2. Удаляешь строчку i.source = None в renpy/script.py
  3. Запускаешь игру

Работает со всеми известными RenPy-играми.

>> No.48752  

>>48751
Спасибо тебе, борода. Помяну тебя добрым словом как технаря-куна, и не одним, думаю.

>> No.48753  

>>48751
Черт, ты же навряд ли борода. Ладно, все остальное в силе.
>>48752-кун.

>> No.48754  

>>48753 Все мы в той или иной степени борода.

>> No.48755  

>>48754
Просто я привык обретаться на борде, где все называют друг друга "борода". От этого теперь трудно отвыкнуть.

>> No.48756  
Файл: 1405763419845.png -(237 KB, 960x720, lesson4_slide00.PNG)
237

Урок получился совершенно непохожим на то, что я планировал сначала. Тем не менее, давайте попробуем.

Итак, пятый урок.

>> No.48757  
Файл: 1405763569540.png -(414 KB, 960x720, lesson4_slide01.PNG)
414

До этого речь шла исключительно про моддинг Ычан Эроге, и как мне верно возразили, нифига не понятно, где встроенные фичи, а где - навороты лично эрогеев.

Чтобы острее почувствовать разницу/одинаковость, в этом уроке решено пописать под что-нибудь другое, в частности для Katawa Shoujo.

>> No.48758  
Файл: 1405764446973.png -(410 KB, 960x720, lesson5_slide02.PNG)
410

Итак, что встроено в ренпи по умолчанию из рассказанного ранее:

  • говорящий без имени, авторский текст, как добавлять говорящих я расскажу позже
  • чёрный фон вообще говоря тоже встроен и доступен без дополнительных объявлений, как добавлять фоны и спрайты рассказано в 4 уроке
  • из упомянутых звуковых каналов из коробки идут sound и music, как добавлять звуковые каналы рассказано в 4 уроке
  • transform-позиции left/right/center вам хорошо известны и являются встроенными, как добавлять новые transform рассказано в 4 уроке, обращу внимание на ещё несколько встроенных позиций:
    transform truecenter:

      xpos 0.5 xanchor 0.5 ypos 0.5 yanchor 0.5

    transform offscreenleft:

      xpos 0.0 xanchor 1.0 ypos 1.0 yanchor 1.0

    transform offscreenright:

      xpos 1.0 xanchor 0.0 ypos 1.0 yanchor 1.0

Первое полезно для центровки спрайта по центру экрана, полезно для чего-то летающего, не прижатого к нижнему краю экрана.
Другие два, например, для анимаций ухода за край экрана.

>> No.48759  
Файл: 1405765196608.png -(419 KB, 960x720, lesson5_slide03.PNG)
419

with-переходов встроено предостаточно. Пока что остановимся на тех, которые упоминались ранее в Ычан Эроге:

  • dissolve, fade, vpunch, hpunch встроены
  • похожие на них переходы с другими параметрами добавлены самостоятельно

Допустим, какой-то dissolve-переход мы хотим сделать 5 секундным. Это можно сделать как явно написав with Dissolve(5), так и определив какую-то переменную в init-блоке и воспользовавшись ею позже, как это сделано в Ычан Эроге с with dspr:

$ flash = Fade(1, 0, 1, color="#fff")
$ flash2 = Fade(2, 2, 2, color="#fff")
$ flash_red = Fade(1, 0, 1, color="#e11")
$ fade3 = Fade(1.5, 0, 1.5)
$ fade2 = Fade(1, 0, 1)
$ dissolve2 = Dissolve(2)
$ dspr = Dissolve(.2)

Других with-переходов в сценарии Ычан Эроге не использовано.

>> No.48760  
Файл: 1405765456313.png -(416 KB, 960x720, lesson5_slide04.PNG)
416

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

>> No.48761  
Файл: 1405765931261.png -(411 KB, 960x720, lesson5_slide05.PNG)
411

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

Вместо объяснения всего этого инфернального ужаса, я лучше остановлюсь на том, как добавить самого простого персонажа.

Самый простой способ добавления говорящего - объявление переменной в init-блоке с помощью функции Character(). Минимальные полезные аргументы этой функции - это имя и цвет имени.

Список всевозможных аргументов значительно шире этих двух и доступен в документации: http://www.renpy.org/wiki/renpy/doc/reference/functions/Character

>> No.48763  
Файл: 1405766287130.png -(411 KB, 960x720, lesson5_slide06.PNG)
411

Ещё одна вещь, про которую стоило давно рассказать - это команда call.

Если вы знакомы с понятием стека вызовов, то идея call покажется вам очевидной. Если jump похож на GOTO, то call - на вызов процедуры.

Если нет, но считайте call таким jump, который переопределяет поведение следующего return так, чтобы вернуться на следующую строчку.

Если после call был сделан ещё один call, то return сначала восстановит контекст второго, а следующий return - контекст первого, а последний - окончит сценарий.

>> No.48764  

>>48763 Тут стоит добавить, что это команда не добавляет какой-то особенной мощности или гибкости. Основное, от чего она спасает - это копипаста, от которой можно избавиться засчёт использования call одного блока в нескольких местах.

>> No.48765  
Файл: 1405767135782.png -(411 KB, 960x720, lesson5_slide07.PNG)
411

Иногда нужно применить jump/call / show не к конкретной заранее известной метке / картинке, но к результату python-вычислений.

Например, для перехода на случайную метку или для отображения картинки, имя которой основано на значении какой-то переменной.

show expression может отображать как код, описывающий само изображение (show expression "presplash.png"), так и описывающий имя изображения (show expression "bg ext_camp_entrance_day").

Посвящаю этот слайд шестому студенту, т.к. использование show expression здорово упростило бы код student6_lesson3_task3.rpy.

>> No.48766  
Файл: 1405767592040.png -(411 KB, 960x720, lesson5_slide08.PNG)
411

Вернёмся к ATL. Я уже говорил, что это Animation & Transformation Language. Пора обратить внимание на Animation-часть.

Оказывается, что ничего сильно нового тут в общем-то и нет.
Картинка объявляется в init-блоке как обычно через команду image, только вот знака равенства нет, вместо него - двоеточие и вложенный ATL-блок.

Помимо уже знакомых нам ATL-команд тут используется ещё одна - отрисовка картинки.

На слайде - код prologue_dream, рассказать про который меня просили рассказать.

>> No.48774  
Файл: 1405800974942.png -(414 KB, 960x720, lesson5_slide09.PNG)
414

Продолжим говорить про ATL.

До сих пор у нас transform и image задавались лишь как линейный блок последовательных команд, с возможным repeat в конце. Оказывается, можно делать и более крутые штуки, например использовать псевдослучайный выбор.

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

Обратите внимание, на то, что внутри ATL можно вызывать другие ATL, так я на слайде вызываю transform под названием center, после чего случайно выполняется один из двух ease.

>> No.48775  
Файл: 1405801546259.png -(406 KB, 960x720, lesson5_slide10.PNG)
406

Классический подход к созданию мигающих глаз в играх - использование математической модели, аналогичной распаду атомного ядра, при котором вероятность распада в следующую секунду не зависит от прошедшего времени. Я это смоделировал миганием каждую секунду с вероятностью 1/6, что соответствует half life приблизительно в 4 секунды.

>> No.48776  
Файл: 1405802088638.png -(423 KB, 960x720, lesson5_slide11.PNG)
423

Неочевидный способ создать image-объект в ренпи - это отложенный рендер текста в изображение.

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

Список опциональных параметров для подобных функций огромен и доступен тут: http://www.renpy.org/wiki/renpy/doc/reference/List_of_Properties

Самые полезные - font, color, size, drop_shadow

>> No.48777  
Файл: 1405803210181.png -(410 KB, 960x720, lesson5_slide12.PNG)
410

Указание нескольких изображений подряд в ATL приводит к их анимированному переключению. Этот слайд про то, как вывести несколько изображений одновременно, собрать бутерброд.

В данном примере я делаю спрайт-заглушку со строкой-именем сверху.

Можете использовать подобных подход у себя, можете нет, как вам нравится. В Katawa Shoujo используются заглушки без подписей, все ненарисованные спрайты заменяются на "sprites/others/generic_missing.png". В конвертере NXT-скриптов в RPY-новеллы, я объявлял заглушку, состоящую наоборот из одного лишь текста.

ЗЫ Неприятный побочный эффект contains - он разрешает дочернему блоку занять любой предоставленный объём площади. Во избежание неприятностей с центровкой я ограничил размеры бутерброда явно заданными числами.

>> No.48778  
Файл: 1405803374995.png -(409 KB, 960x720, lesson5_slide13.PNG)
409

Связав вместе всё сказанное выше, можно наконец разобраться как работает blink и аналогичные ему анимации в Ычан Эроге.

Оказывается, мигание это... всего лишь две картинки, одновременно движущиеся навстречу друг другу. That's it.

>> No.48779  
Файл: 1405803916787.png -(415 KB, 960x720, lesson5_slide14.PNG)
415

В этом уроку домашнее задание предлагается оформлять в виде модов для Katawa Shoujo.

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

И поgrepал исходники скриптов катавы и составил списки использованных scene и show команд. Эти списки были разделены:

  • katawa_sprites.lst - список персонажей
  • katawa_show_other.lst - список остальных show-команд
  • katawa_bgs.lst - список bg и одноцветных фонов
  • katawa_scene_other.lst - список остальных scene-команд
>> No.48780  
Файл: 1405804574932.png -(421 KB, 960x720, lesson5_slide15.PNG)
421

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

>> No.48781  
Файл: 1405804685492.png -(204 KB, 960x720, lesson5_slide16.PNG)
204

Обратите внимание, что имена говорящих не совпадают с тэгами спрайтов.

Оригинальное решение разработчиков - разные имена до того, как познакомились, и после, реализованы с помощью двух разных говорящих, например, mi и mi_.

>> No.48782  
Файл: 1405804757968.png -(408 KB, 960x720, lesson5_slide17.PNG)
408

Как и в Ычан Эроге, для зацикленных звуков создан отдельный канал, ambient.

Списос звуков и музык приложен в katawa_audio.lst

>> No.48783  
Файл: 1405805445123.png -(429 KB, 960x720, lesson5_slide18.PNG)
429

На первый взгляд все with-переходы в Katawa Shoujo какие-то другие, незнакомые. В TOP10 куча непонятных названий: shorttimeskip, charamove, locationskip, charaexit, charaenter, locationchange, charachange.

На самом деле подавляющая их часть - это синонимы для dissolve.

А как делать замороченные with-переходы - не в этот раз.

>> No.48784  
Файл: 1405805580529.png -(238 KB, 960x720, lesson5_slide19.PNG)
238

Вот и всё. Пока я делал этот урок, мне постоянно казалось, что в нём слишком мало новой информации. Пока я его постил сюда, начало казаться, что слишком много. Отпишитесь, что и как.

>> No.48785  
Файл: 1405805956303.png -(420 KB, 960x720, lesson5_slide20.PNG)
420

http://cf.ichan.ru/lections/lesson5.zip - в этом архиве все материалы данной лекции:

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

Обратите внимание, что для Katawa Shoujo несколько изменены правила $регистрации: если мод должен быть доступен только на определённых языках (только на русском), то его имя должно быть определено только для этих языков. Из-за небольшого количества существующих на данный момент модов, тэги пока не используются мод-селектором.

>> No.48786  
Файл: 1405806572907.png -(427 KB, 960x720, lesson5_slide21.PNG)
427

Мне не нравится, как в некоторых модах вы не расставляете в сценарии спрайты просто потому, что их нету или даже "пока ещё нету".

Команда show не работает с конкретным именем файла на диске, она работает с именем спрайта, которое разворачивается во что-то уже в игре. Прописав заглушку в сотне мест вы можете мгновенно заменить её на нужный спрайт, поменяв одну строку с image-определением спрайта в init-блоке.

Заглушка может быть пустотой (не рекомендуется), generic-силуэтом, спрайтом того же персонажа, но с другой эмоцией, mspaint-версией (лол), каким-либо спрайтом с текстовым комментарием, просто текстом, да чем угодно, лишь бы команды show были расставлены заранее, а не пришлось потом расставлять их по всему скрипту.

>> No.48787  
Файл: 1405806755676.png -(409 KB, 960x720, lesson5_slide22.PNG)
409

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

>> No.48788  
Файл: 1405806916979.png -(424 KB, 960x720, lesson5_slide23.PNG)
424

Последнее задание - творческое. Ради него всё и затевалось.

Сначала я надеялся опубликовать это ещё весной, потом хотя бы в июне, но судьба распорядилась иначе. Как-то так.

>> No.48790  

Урок в целом понравился, про Катаву было не лишним почитать для сравнения.

>>48776
Есть вопрос. Предусмотрена ли смена шрифта основного текста, который используется в adv и nvl? Как это сделать?

>> No.48792  

Ай молодца!
Это очень полезный урок, ибо он показывает, что можно делать на дефолтном RenPy, для начинающего ВНдела (а не БЛмододела) это очень полезно!

>> No.48795  

Модифицировал кое-какой спрайт - изменил дизайн пионерского костюма. Но никак не могу понять, как заменить основной файл в Бесконечном лете на свой собственный, чтобы вместо стандартного спрайта рубашки появлялся мой?

>> No.48796  

>>48795
Нужно в game/sprites.rpyc прописать нужным спрайтам пути к своей картинке, только файл нужно сначала декомпилировать, держи сразу вишмастер: http://rghost.ru/56996913
Но чем городить такое, лучше объявить новые спрайты.

>> No.48799  

>>48795
Не нужно заменять файлы оригинала, достаточно добавить свои.

Посмотри на всякие extra_resourses в мод-паке, там есть init-блоки с объявлениями всяких image.

Если имя image новое, добавится новый спрайт.
Если имя спрайта такое же, как в ресурсах игры, то будет отображён тот, у кого init-блок с большим номером.

То есть добавь новый файл с содержимым:

init 999:
image sl normal pioneer = "images/ololo.png"
>> No.48811  
Файл: 1405891256644.jpg -(78 KB, 500x344, Madoka-Arukawa-3.jpg)
78

Я сегодня выбирался в парк и довольно сильно перегрелся на солнце. Пока приходил в себя, написал это: http://rghost.ru/57005610

Подобие подсистемы юнит-тестов для Ычан Эроге. Включает в себя 2 теста:

  • test_if_images_are_declared – проверяет (в рантайме), что команды show/scene в скрипте обращаются к объявленным изображениям. Выявил 54 ошибки в мод-паке.
  • test_if_images_are_loadable – проверяет, что объявления изображений ссылаются на существующие (реально или в RPA-архиве) файлы. Выявил 51 ошибку в мод-паке.

out.txt с ошибками прилагается (см. строчки со словом ERR)

>> No.48812  

>>48811
Ты только давай, не умирай там. Кто будет делать пакиЪ? Кто будет учить всякую бестолочь говорю о себе, конечно renpy? У тебя еще есть причины жить.

>> No.48813  

>>48811
Эй, где моё любимое "никто не читает тэги"?

>> No.48814  

>>48811
Спасибо, пофиксил кое-что кое-где.

>> No.48816  

>>48788

>350 строк.

Вот именно по этому я дропнул.
За урок спасибо, как раз то, что я реквестировал.
student4

>> No.48817  
Файл: 1405894477988.jpg -(49 KB, 512x512, 1160872604372.jpg)
49

>>48811
Ахаха.
Первая половина тестов была ожидаемой, но запрятана в те моды, что никто почти и не переигрывал. Поправил у себя.
Со второй половиной хуже, особенно test_scenario_sm.rpy. Я даже не знаю, где успели потерять нужные объявления, не говоря о судьбе спрайта.

>> No.48818  

>>48796
>>48799
Благодарю за помощь. Заработало. Но столкнулся с новой проблемой: одежда "пионер" на средней дальности криво сидит на спрайте персонажа. Рубашка сидит немного косо и юбка не плотно прилегает к низу экрана, видны ноги. Каким образом можно подогнать одежду тютелька в тютельку на тело?
И ещё, как вытащить все ресурсы из игры (спрайты, музыка и прочее?)? Где-то скачал уже вытянутый вариант ресурсов, но они кажись не подходят и появились эти глюки со сдвигом одежды на миллиметр.

>> No.48820  

>>48818 Художник-кун рисовал спрайты так:

  • сначала рисовались версии в полный рост
  • потом на них натравливался скрипт для imagemagick, нарезающий close/far/среднюю дальность

Если хочется иметь на выходе несколько вариантов дальности, лучше идти тем же путём. Скачать порезанные спрайты в полный рост (или попросить нужные у Художника-куна), и обработать их тем же скриптом, он тут где-то в прошлом, кажется, треде выкладывался.

>> No.48821  

Бамп вопросу >>48790

>> No.48822  

>>48821 А тебе нужно сменить глобально шрифт для всего ATL или NVL? Или для одного/нескольких говорящих? Или для одной/нескольких реплик?

Решение во всех трёх случаях будет отличаться.

>> No.48823  

>>48822
Глобальное, по всей новелле. Хочется посмотреть, какие шрифты будут смотреться, читаться etc получше. То же касается цвета шрифта.

>> No.48824  
Файл: 1405930873180.jpg -(1113 KB, 1536x2048, 1404254344939.jpg)
1113

>>48818

>И ещё, как вытащить все ресурсы из игры (спрайты, музыка и прочее?)?

Я устал всем предлагать использовать unrpa и AnimED, то вам питон на винду поставить сложно, то не знаете, где это скачать, оххх.

В общем, вот свеженаписанный самодельный вариант, который распаковывает любые использованные RenPy архивы силами самого Рен-Пи. Скачай вот эти 934 байта и положи их в папку с игрой: http://rghost.ru/57010692

С тебя какой-нибудь рисунок с Аянами Рэй в оекаке.

>> No.48826  

>>48823 RenPy использует нечто, называемое стилями. Оно напоминает CSS в чём-то, по сути стиль - это именованный набор свойств, опционально унаследованный от другого стиля.

Вот кусок screens.rpy для Ычан Эроге:

style.normal_day = Style(style.base_font)
style.normal_day.color = "#ffdd7d"
style.normal_day.drop_shadow=(2, 2)
style.normal_day.drop_shadow_color = "#000"
style.narrator_day = Style(style.normal_day)
style.narrator_day.italic = False
style.thoughts_day = Style(style.normal_day)
style.thoughts_day.bold = False

Аналогичные блоки есть не только для _day, но и для _night, _sunset, _prolog.

Чтобы глобально поменять шрифт в Ычан Эроге (именно в ней), переопределим для нужных стилей нужные свойства:

init 1024 python:
fnt = "LinLibertineC.ttf"
style.normal_day.font = fnt
style.normal_night.font = fnt
style.normal_sunset.font = fnt
style.normal_prolog.font = fnt

Поскольку narrator_day и thoughts_day унаследованы от style.normal_day, они это автоматически подхватят. Аналогично для других времён суток.

http://www.renpy.org/wiki/renpy/doc/reference/List_of_Properties - вот все возможные свойства.

>> No.48827  
Файл: 1405932313611.jpg -(196 KB, 800x600, SonoHanabira.jpg)
196

>>48825
Спасибо, с меня девичьи няшканья.

>> No.48828  

>>48827 Тебе спасибо :3

>> No.48829  

>>48817 Началось всё с того, что я во время игры в "Совёнок в тумане" краем глаза заметил красенькое image not found вверху.

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

Тогда я решил, что раз этот тест показал всё настолько плохо, нужен хоть один зелёный тест. И написал тест проверки загружабельности картинок, который... Ну ты видел. Как-то так.

>> No.48833  

А вот как бы мне сделать, чтобы вместо одного спрайта опционально отображался другой? Допустим, у меня расставлено 1000 Алис, и 500 из них в разных местах должны стать Ленами. Попробовал переобъявлять условное image dv через фунцию call и потерпел неудачу.

>> No.48835  

>>48833

> А вот как бы мне сделать, чтобы вместо одного спрайта опционально отображался другой?

В смысле, опционально? В смысле, вместо?

> Допустим, у меня расставлено 1000 Алис, и 500 из них в разных местахдолжны стать Ленами.
Ну, тысячу ты не расставишь, скорее всего. В мини-редакторе есть пример с дюжиной Юльян и от них уже рябь в глазах и плохо видно детали.
Для нескольких проще всего сделать так:

show dv normal pioneer at left as sprite1
show dv normal pioneer at center as sprite2
show dv normal pioneer at right as sprite3
"На меня вышло 3 Алисы!"
show un normal pioneer at left as sprite1
show un normal pioneer at right as sprite3
with dissolve
"Внезапно, некоторые из них превратились в Лену."
> Попробовал переобъявлять условное image dv через фунцию call и потерпел неудачу.

Команда image используется только в init-блоках.
Команда call используется только в label-блоках.

Я не очень понимаю твою задачу. Возможно тебе пригодится ConditionSwitch из 4 урока.

>> No.48837  

>>48835
Тысяча-то Алис не сразу, да и это я для примера, на самом деле хочу добавить новые элементы к спрайтам, но не повсеместно. Что-то вроде

$ ulyana__silno_izmenilas_za_leto = 1
show us
us "Ну ты пялишься, Семён? Потрогай их!"

Вместо

show us_v_kostyme_milicionera
"Я потрогал звездочки на погонах."
>ConditionSwitch

Похоже, то, что нужно, правда меня пугает, что там один уже определяет время суток. Буду пробовать.

>> No.48839  

Желая получить хоть один непустой зелёный тест, я написал ещё один, проверяющий команды play/sound, предполагая, что там указываются объявленные в init-блоке звуки. Увы, и здесь нашлись ошибки, в частности 5 опечаток в скриптах.

ERR: (game/samantha/sam.rpy:6912) Wrong sound/music channel name: music_list
ERR: (game/scenario_abcb/day4.rpy:453) Can't eval music_everyday_theme
ERR: (game/scenario_abcb/day4.rpy:472) Can't eval music_everyday_theme
ERR: (game/scenario_abcb/day4.rpy:621) Can't eval music_everyday_theme
ERR: (game/scenario_sadf123/day2_sadf.rpy:3386) Can't eval sfx_lena_play_sadfs_tennis_fail

Ещё 8 "ошибок" - это стрёмные места, когда $объявление звука делается не на init-фазе, а внутри метки. Это в общем-то это и не ошибка, но код теста не знает, что будет выполнено перед play (это в общем случае неразрешимая задача).

ERR: (game/scenario_unknown/a bit of lenamod.rpy:53) Can't eval Soymilk 
ERR: (game/scenario_unknown/a bit of lenamod.rpy:96) Can't eval EWS
ERR: (game/scenario_unknown/a bit of lenamod.rpy:135) Can't eval LybS
ERR: (game/scenario_unknown/a bit of lenamod.rpy:141) Can't eval Seraph
ERR: (game/scenario_unknown/a bit of lenamod.rpy:151) Can't eval TimeToDie
ERR: (game/scenario_unknown/a bit of lenamod.rpy:204) Can't eval Seraph
ERR: (game/scenario_unknown/a bit of lenamod.rpy:256) Can't eval Shotgun
ERR: (game/scenario_unknown/a bit of lenamod.rpy:260) Can't eval Shotgun

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

http://rghost.ru/57023504 - код тестов и лог с ошибками

>> No.48840  
Файл: 1405979280653.jpg -(22 KB, 720x404, zFamily.Guy.S1z1E06.HDTV.x264-LOL[13-49-(...).JPG)
22

>>48839

>кто-то может его неглядя скопипастить к себе в другой мод и там он не заработает

Нужно везде так сделать.

>> No.48848  
Файл: 1406043845896.png -(16 KB, 274x263, 22.07.png)
16

Подскажите пожалуйста, как правильно работать с постоянной persistent - а то все никак не получается.

Ситуация, хочу использовать реплеи определённых моментов игры, но никак не получается сделать их меню открываемым (либо сразу открыто, либо ошибка), что я делаю не так?

>> No.48852  

>>48848

>что я делаю не так
  1. else-блок не должен содержать аргумента persistent.unlock_22. Правильно писать просто "else:". Выполнится блок тогда, когда провалится if-условие, написанное выше, его не надо дублировать.Это касается не только ренпи и питона, но и вообще почти всех языков программирования, кроме поделия под названием CMake, лол.
  2. У тебя нет инициализации persistent-переменной. Это само по себе не ошибка, они по умолчанию все существуют и все равны None, только вот None не равно False, из-за чего в твоём коде верен всегда else. Либо делать инициализацию (хотя, зачем?), либо заменять проверку.
>> No.48856  

>>48852
Спасибо добрый человек, а я всё пытался Pass вставить (выдавало ошибку).
Теперь всё работает!

>> No.48892  
Файл: 1406186230236.jpg -(222 KB, 1568x2338, Rei.jpg)
222

>>48824
Спс за код!

«>» С тебя какой-нибудь рисунок с Аянами Рэй в оекаке.
Ок. Лови.

>> No.48920  

После беспредела от автоматической искалки багов, я был вынужден немного обновить Самантамод, чтобы подкинуть новых: настройки спрайтов и чуток текста http://rghost.ru/57074926

>> No.48932  

Есть ли какая-нибудь пошаговая инструкция использования unrpyc для аутистов?

>> No.48933  

>>48932
Просто перетащи .rpyc на unrpyc.py и будет тебе щастье.

>> No.48937  

>>48932 Просто забудь про unrpy.py. Если тебе не очевидно как запускать питоновские скрипты, то ты уже безнадёжен. Используй >>48824>>48824>>48824. Скачать девять сотен байт с rghost, положитьь в папку /game/, запустить игру, продолжать наслаждаться синдромом аспарагуса или как вы там на вашем тирече себя называете....

>> No.48938  

>>48937
Мне, между прочим, было лень ставить специально под unrpa/unrpyc python2, так что пришлось пятнадцать минут курить маны и орудовать напильником. Не надо тут обзываться.

>> No.48941  

>>48938 Извини, не хотел тебя обидеть, просто наболело, видимо.

Кстати, если вдаваться в детали, то копию python2 ты получил вместе с RenPy, можно было заюзать его за те же 15 минут, но без граблей.

>> No.48942  

>>48938 Живой пользователь python3?! Можно взять у тебя автограф?

>> No.48943  

>>48942
Да ну тебя, я тоже например использую его для скриптов, так как меня бесит как python2 ведет себя с юникодовыми строками.

>> No.48946  

>>48943 import codecs и в путь, навстречу приключениям, в мир где правда становится вымыслом!

>> No.48948  

>>48946
Зачем, когда можно примкнуть к прогрессивной части человечества и считать юникодовские строки строками с самого начала?

>> No.48967  

Интересный факт: судя по всему RenPy при загрузке файлов ищет нужные НЕ case sensitive. Ну то есть на винде это очевидно, да, а вот отсутствие ошибок на линуксах при использовании всяких "filename.JPG" в файловой системе и "filename.jpg" в init-блоке - это маленькая победа рен-пи.

>> No.48970  

>>48967

Это не победа, а лишние CPU циклы.

>> No.48990  

>>48970 Которые выполняются пока ты читаешь строчку, предшествующую появлению нужного спрайта. RenPy использует механизм предсказаний картинок, которые скоро могут понадобиться и старается загрузить их до непосредственного появления. Очевидно, что с show expression такое не прокатит, а вот с обычными show/scene - вполне.

>> No.49007  

Уважаемые, а как сделать реплеи отдельных эпизодов (сцен) из игры?
Хочется чтобы они разблокировались и открывались по превьюшке.

Метод галереи для этого не годится (там только картинки запускаются).

>> No.49008  

>>49007
Пользоваться сохранениями?

>> No.49011  
Файл: 1406551061503.png -(118 KB, 751x873, 28.07.png)
118

>>49008
Делал всё по аналогии с этой статьёй:
http://www.renpy.org/wiki/renpy/rus/doc/tutorials/gallereja_izobrazhenij_i_muzikalnaja_komnata

Но этот метод не годится для реплеев, ибо кроме как картинки ничего не запускает.
А хочется так:

>Уважаемые, а как сделать реплеи отдельных эпизодов (сцен) из игры?
>Хочется чтобы они разблокировались и открывались по превьюшке.
>> No.49012  

>>49007 Используй call, люк.

Идея следующая:

  • выносишь ключевую интересную сцену в отдельный label, к примеру label cutscene42:..., заканчивающийся на return
  • в сценарии игры делаешь call-вызов этой сцены (см.урок 5): call cutscene42
  • питоновский код галереи придётся чуть-чуть переписать, чтобы она не картиночки показывала, а call нужной метки делала (судя по количеству комментариев для чайников, это не составит тебе труда)
>> No.49017  

>>49012
Вот именно это и составляет проблему, иначе бы не писал - картинки выводит реплеи нет (кусок текста как-раз так уже располагается).
Не получается у меня правильно написать чтобы - всё время ошибкой плюётся.

>> No.49018  

>>49017
!r ошибку и кусок кода штоле.

>> No.49021  

>>49017 Судя по всей имеющейся исчерпывающей технической информации, которую ты так щедро и обильно предоставил, тебе всего лишь надо поправить какой-то код так, чтобы он вместо каких-то ошибок выводил в каких-то случаях какие-то повторы чего-то.

>> No.49022  
Файл: 1406565174111.png -(138 KB, 751x873, 28.07 копия.png)
138

>>49018>>49021
Меню screen не позволяет использовать jump и call, а текстовые кнопки я использовать не хочу.

Уж не знаю, как ещё объяснить проблему?

>> No.49023  

>>49022 С меню screen всё в порядке, всё оно умеет вообще-то, и jump, и call делать. В данном же случае нужно просто отредактировать класс Gallery, заменить тот код, что отвечает за отрисовку большой картинки, на тот, что выполняет call по метке. Судя по тому, что ты без опасений втянул его к себе в проект, ты понимаешь, что он делает хотя бы высокоуровнево?

>> No.49024  

>>49023
Неа, я всё по аналогии делаю, 6.9.3rus обучалку прошёл и начал делать ВН. С самой игрой пробем нет, а вот менюшки вымораживают (для них уже нужны специальные знания Pyton).

>> No.49025  

>>49007>>49011
Спасибо за помощь, вопрос решён (на анимефоруме помогли)

>Просто сделайте экран с несколькими кнопками, а в качестве действия поставьте на них Replay("названиенужнойметки")

http://www.renpy.org/doc/html/rooms.html#replay

Может кому пригодится.

>> No.49026  

>>49025 Выглядит как решение для бедных. Ты ведь просил совсем другое, чтобы была галерея CG со скрытием тех, которые ты не видел, и запуском label по клику.

>> No.49027  
Файл: 1406582763614.png -(124 KB, 704x885, 29.07.png)
124

>>49026
Да. Но то что я делаю по аналогии, не значит, что я делаю точь в точь как написано. Я и голову применяю, и то, что уже ранее освоил (совмещаю).

Получилась неплохая таблица с кликабельными превьюшками.

>> No.49050  
>sliv006u4NDBDZ

Красивые у тебя имена меток. Вообще, ты натолкнул меня на мысль о том, что можно использовать в качестве имён меток какие-нибудь хэши вроде md5 и кодировать их в Base64 для большего угара.

Несколько мыслей:
0. Что же ты сразу не сказал, что у тебя в "Галерее" всего несколько кнопок?!?!

  1. Ты используешь маленькие копии картинок вместо масштабирования в рантайме. Твоё право, просто интересно, зачем, если можно скейлить?
  2. Ты используешь два vbox с двумя кнопками в каждом внутри grid 2 1, хотя можно достичь того же с grid 2 2, в котором 4 кнопки. Или это ради frame сделано? Скриншотов ты не делаешь, кода стилей тоже, так что результат не известен.
  3. Не надо прописывать у imagebutton'ов idle и hover, используй сразу auto. Нужно только файлы назвать по-человечески.
>> No.49051  
Файл: 1406626812677.png -(366 KB, 664x498, screenshot0001.png)
366

>>49050
Пара кнопок потому как это пример (чтобы скрипт выглядел проще).
По человечески не знаю как (покажи), авто тоже не знаю (покажи).
Я не программист. Я только обучалку в 6.9.3rus renpy прошёл и начал лепить ВН.
Акромя как с менюшками у меня проблем нет.

Почему в экране две менюшки видно на скриншоте.

>> No.49399  

>>49396
А Вы, сударь, похоже, извращенец. Чем это Вас наш любимый Ren не устроил? А если серьезно, то в смысле "похардкорнее"?

>> No.49400  

>>49399 Суровее. Много суровее и в плане программирования, и возможностей. Просто интересно.

>> No.49403  

>>49396
ASM. Всего за >9000 строк кода можно написать новеллу своей мечты.

>> No.49404  

>>49400 RenPy позволяет написать хоть всю игру целиком на питоне, куда уж хардкорнее в плане возможностей? RenBrainfuck?

>> No.49405  

>>49400
KiriKiri. Процентов десять-двадцать даже коммерческих японских эроге на нем написаны.

>> No.49471  

>>49470
Да, и?

>> No.49493  

>>49396
Вопрос непонятен. В интернетах сотни бесплатных движков 2D-графики валяются, бери любой желаемой хардкорности. Или бери SDL. Или пиши вообще свой движок с нуля на сях. Или на ассемблере. Пять минут гугла, и всё есть.
Что тебе нужно-то?

>> No.49495  

>>49493 По тому, что мне сказали, понял, что Ren- очень хороший выбор. Тогда последний вопрос. Ещё только начинаю его изучать, но хочу знать- есть ли у него какие- нибудь ограничения? Будет обидно доделать игру на 80%, а потом узнать, что не можешь воплотить некоторые свои идеи.

>> No.49496  

>>49495

  • На нём клепают как бесплатные, так и коммерческие игры
  • Низкий порог вхождения: научиться делать игры уровня The question можно за час
  • Поддерживает из коробки adv и nvl режимы повествования
  • Позволяет прикрутить озвучку и переводы
  • Средства языка для навороченных анимаций и интерфейсов
  • Широкие возможности кастомизации чего угодно, как в интерфейсе, так и в поведении
  • Возможность исполнения произвольного кода на Python 2.7
  • Запрещено грабить корованы (на самом деле нет, можно)
>> No.49507  

>>48920
Твоё DLC изрядно развеселило, молодец. Надеюсь, оставишь это какой-нибудь секретной концовкой или вроде того?
И да, в модпаке language_selector лежит не в /game, а в /game/tools_lb.rpy, могут быть ошибки из-за двойного присвоения меток, если будут валяться два одинаковых файла.

>> No.49522  

И да, кто там мод-пак свежий будет собирать, тут неизвестно кто и неизвестно откуда новый мод запилил: http://ru.everlasting-summer.wikia.com/wiki/7_Дней_Лета
http://rghost.ru/57433105

Мопеднемой

>> No.49535  
Файл: 1408023549376.png -(444 KB, 960x720, lesson1_slide18.PNG)
444

Аноны, поясните нубу за последний абзац.
Не понимаю, как к самому редактору перейти.
Версия 1.1 стоит, мод-пак есть.

>> No.49537  

>>49535
Первый урок несколько устарел в плане того, что сейчас система запуска модов изменилась. debug.rpy не нужен. Не понял, что ты подразумеваешь под редактором. Код можно (но не нужно) хоть в виндовом notepad.exe писать, главное чтобы кодировка была utf-8. Пишешь сценарий в текстовом редакторе, сохраняешь как имярек.rpy, прописываешь в заголовке теги (подробности в 3 и 4, кажется, уроках), запускаешь, выбираешь "новая игра", там в меню "пользовательские моды и сценарии", находишь свой сценарий и играешь.

>> No.49539  

Репост самизнаетеоткуда:

Летаны, анон виз э проблем хире.
При запуске установке модпака получаю следующее:

<U+FEFF>I'm sorry, but an uncaught exception occurred.

Before loading the script.
UnicodeDecodeError: 'ascii' codec can't decode byte 0xdf in position 0: ordinal not i
n range(128)

-- Full Traceback ------------------------------------------------------------

Full traceback:
File "/home/user/1st_level/Gamez/everlasting_summer-1.1-all/renpy/bootstrap.py", line 265, in bootstrap

renpy.main.main()

File "/home/user/1st_level/Gamez/everlasting_summer-1.1-all/renpy/main.py", line 200, in main

renpy.loader.index_archives()

File "/home/user/1st_level/Gamez/everlasting_summer-1.1-all/renpy/loader.py", line 80, in index_archives

for dir, fn in listdirfiles(): #@ReservedAssignment

File "/home/user/1st_level/Gamez/everlasting_summer-1.1-all/renpy/loader.py", line 193, in listdirfiles

for j in walkdir(i):

File "/home/user/1st_level/Gamez/everlasting_summer-1.1-all/renpy/loader.py", line 152, in walkdir

for fn in walkdir(dir + "/" + i):

File "/home/user/1st_level/Gamez/everlasting_summer-1.1-all/renpy/loader.py", line 151, in walkdir

if os.path.isdir(dir + "/" + i):

UnicodeDecodeError: 'ascii' codec can't decode byte 0xdf in position 0: ordinal not in range(128)

<U+FEFF>I'm sorry, but an uncaught exception occurred.

Before loading the script.
UnicodeDecodeError: 'ascii' codec can't decode byte 0xdf in position 0: ordinal not i
n range(128)

-- Full Traceback ------------------------------------------------------------

Full traceback:
File "/home/user/1st_level/Gamez/everlasting_summer-1.1-all/renpy/bootstrap.py", line 265, in bootstrap

renpy.main.main()

File "/home/user/1st_level/Gamez/everlasting_summer-1.1-all/renpy/main.py", line 200, in main

renpy.loader.index_archives()

File "/home/user/1st_level/Gamez/everlasting_summer-1.1-all/renpy/loader.py", line 80, in index_archives

for dir, fn in listdirfiles(): #@ReservedAssignment

File "/home/user/1st_level/Gamez/everlasting_summer-1.1-all/renpy/loader.py", line 193, in listdirfiles

for j in walkdir(i):

File "/home/user/1st_level/Gamez/everlasting_summer-1.1-all/renpy/loader.py", line 152, in walkdir

for fn in walkdir(dir + "/" + i):

File "/home/user/1st_level/Gamez/everlasting_summer-1.1-all/renpy/loader.py", line 151, in walkdir

if os.path.isdir(dir + "/" + i):

UnicodeDecodeError: 'ascii' codec can't decode byte 0xdf in position 0: ordinal not in range(128)

Linux-2.6.32-5-amd64-x86_64-with-debian-6.0.5
Ren'Py 6.16.3.502

Система debian sqeezy, python 2.6.6
Кто виноват и что делать?

>> No.49541  

>>48839
Лолбот, спасибо тебе за юнит-тесты, с ними куда веселее находить ошибки и опечатки. Заодно появился повод поправить абцб-мод и доделать всё задуманное в карточной игре. Пусть и все найденные ошибки находятся в том месте сценария, который ни при каких условиях при нормальной работе не должен выполняться, но всё равно исправил. Заодно помог выявить одну настоящую ошибку со спрайтами, пусть они так и не задействованы. Ближе к ночи залью исправленную версию.

>> No.49544  

А вот и обещанное обновление абцб-мода. Устанавливать с перезаписью.

Исправлены ошибки с объявлением спрайтов Слави в нижнем белье (как в demo так и в paint-версиях);
Исправлены ошибки в незадействованной части кода четвёртого дня, вызывавшие ругань утилиты для юнит-тестирования;
Добавлены эмоции аватарок персонажей во время игры. Теперь при обмене и перетасовке карт они случайным образом изменяются.

Скачать: http://rghost.ru/57472092

>> No.49545  

И да, просьба этот апдейт: >>49544 включить в следующий модпак, так как он исправляет ошибку с неправильным объявлением некоторых спрайтов Слави.

>> No.49547  
Файл: 1408048274565.jpg -(167 KB, 800x640, every18.jpg)
167

>>49539

>UnicodeDecodeError: 'ascii' codec can't decode byte 0xdf in position 0: ordinal not in range(128)
>Кто виноват и что делать?

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

Проблема возникает внутри if os.path.isdir(dir + "/" + i), так что дело в именах файлов. Проверь, нет ли русских имён где-либо внутри /home/user/1st_level/Gamez/everlasting_summer-1.1-all, может какие-нибудь идиоты так назвали ридми или какой-то кретин прохождение русскими буквами назвал или ещё чего.

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

>> No.49548  

>>49539 Если у тебя Саманта-мод, то попробуй удалить "сетапы и концовки (спойлеры).txt".

>> No.49549  

>>49547
>>49548

Спасибо анон.

->ls samantha                              [ 1,8G ]
итого 764K
drwxrwxr-x 4 user user 4,0K Авг 14 18:41 ./
drwxrwxr-x 26 user user 4,0K Авг 14 18:41 ../
drwxrwxr-x 2 user user 4,0K Авг 14 18:38 image/
drwxrwxr-x 2 user user 4,0K Авг 14 18:38 sound/
-rw-rw-r-- 1 user user 438K Авг 14 18:38 sam.rpy
-rw-rw-r-- 1 user user 302K Авг 14 18:41 sam.rpyc
-rw-rw-r-- 1 user user 2,1K Авг 14 18:38 ?????? ? ???????? (???????).txt

Вот за это я очень люблю имена файлов, состоящие из отличных от латиницы, символов. Совсем забыл, что внутри некоторых rar архивов кириллица имеет кодировку cp866.

Проблема решена: convmv -r -f cp866 -t UTF8 --notest *

Неюникод - зло. Кириллица в именах файлов - зло.

>> No.49568  

Гуру пайтона призываются в тред. Была задача определить, у какой из девочек максимальное количество лавпойнтов, и в завсимости от этого вызывать нужную метку сценария. В случае, если баллы максимальные совпадали у нескольких девочек, то должна вызывать также отдельная метка. В результате было написано сиё быдлокодерское поделие (да, знаю, руки мне оторвать за это мало): http://pastebin.com/J7vXuVsN
Выглядит отвартительно, но работает. А в тред призываются питон-самцы, которые пояснят по-хардкору, где и как можно сократить и улучшить код (знаю, что в пайтоне есть всякие няшки типа списков/кортежей, но задача была набросать хоть как-то работающий вариант на скорую руку для последующего доведения до ума).

>> No.49570  

>>49568
Я бы для такого использовал 'dict', чтобы потом просто отсортировать значения и не мучиться:

init 891 python:
# mods, tags, etc.
label test__max_lp:
python:
tmp = {}
for i in ('dv', 'us', 'un', 'mt', 'mz', 'mi'):
eval('tmp['+i+'] = lp_'+i)
# setting variables any way you like
    python:
girls = sorted(tmp, key = lambda name: tmp[name], reverse = True)
if tmp[girls[0]] == tmp[girls[1]]:
renpy.jump('no_winner')
renpy.jump(girls[0])

Если будет ругаться на лямбду, то её можно вынести в отдельную функцию. Печатал не сверяясь, так что могут быть ошибки.

>> No.49571  

>>49568
А теперь пояснение: чем проверять каждый возможный вариант событий, можно привязать к каждой переменной собственное имя, и сортировать по значению. Затем просто берётся наибольший элемент (первый в списке), и сравнивается с предыдущим: если они равны, то победителя нет, если есть, переходим на метку победителя. Как-то так.
Проблема может возникнуть, если нет прямого соотношения между именем победителя и меткой, но это решается ещё одним dict.

>> No.49572  

>>49568>>49570 Я бы сократил это всё до нескольких строчек:

label test__my_mod_select:
$ girls_list = ('dv', 'us', 'un', 'mt', 'mz', 'mi')
$ tmp = sorted([ (eval('lp_'+w), w) for w in girls_list ])
$ lbl = tmp[-1][1] if tmp[-1][0] != tmp[-2][0] else 'nobody'
jump expression 'test__my_mod_{}_win'.format(lbl)
>> No.49573  

>>49572
Красиво, однако.

>>49570 >>49571 >>49572
Спасибо вам, няши, ночью поэкспериментирую и отпишусь.

>> No.49574  

>>49573 Мне не нравится константа -2 в коде, а reverse=True делает строку слишком длинной. В плане читаемости, такой вариант мне бы понравился больше, тут меньше магии:

label test__my_mod_select:
$ girls_list = ('dv', 'us', 'un', 'mt', 'mz', 'mi')
$ lp_max = max( [eval('lp_'+w) for w in girls_list] )
$ max_who = [w for w in girls_list if eval('lp_'+w) == lp_max]
$ max_who_id = max_who[0] if len(max_who)==1 else 'nobody'
jump expression 'test__my_mod_{}_win'.format(max_who_id)
>> No.49575  

>>49574
Магии может и меньше, но на один проход по списку и eval больше.

>> No.49576  

>>49575 Считать число проходов по списку из 6 элементов бессмысленно. Но что плохо так это то, что строк стало больше.

>> No.49578  

>>49572
Твой способ сработал. А так как я ниразу не программист, а питон так вообще чуть ли не первый раз в жизни вижу, то хотелось бы прояснить суть работы. Как я понял, мы имеем массив (список) имён девочек, заводим их в двумерный массив tmp, где в строках у нас заносится название переменной лавпойнтов, получаемое склеиванием префикса lp_ и имени девочки из списка, а со вторым уровнем происходит какая-то магия (какие ещё, нафиг, [-1] и [-2]?), ну а затем всё очевидно, результат в виде префикса девочки из списка подставляется в jump <...>.

>> No.49579  

>>49576
Тогда:

jump expression 'test__my_mod_{}_win'.format(len(max_who)==1 and max_who[0] or 'nobody')

Если сократить имя метки и переменной, то строчка будет не слишком длинной.

>> No.49580  

>>49578
[-1] и [-2] — доступ к элементу с конца, а так всё вроде правильно.

>> No.49670  
Файл: 1408818887318.png -(6 KB, 384x384, 1149684946054.png)
6

>>48751
!r реаплоад ради благих целей.

>> No.49671  

>>49670 http://rghost.ru/57634105

>> No.49673  

>>49574
Спасибо, товарищ! Работает отлично!

>> No.49699  

Я хочу использовать окна нвл и адв режимов одновременно. Как это сделать?

>> No.49700  

>>49699
Для начала нарисуй это и объясни, на кой это надо. Вполне возможно, что такой костыль не требутся, и есть более изящные решения.

>> No.49702  

>>49700
Ок. Одно окно - текст на компе/записке/етк
Адв окно - текст персонажей
Так норм?

>> No.49705  

>>49702
А чем тебе функция screen не угодила?
Ведь тебе надо лишь для отдельных моментов второй режим, а не постоянно.
Тогда можно изобразить текст на экране, как в nvl вручную на экране.

>> No.49706  

>>49702
Проще отрендерить текст в виде изображения на ходу:
http://www.renpy.org/wiki/renpy/doc/reference/functions/ParameterizedText

>> No.49707  

>>49706
Норм. Добра тебе.
а вот эта байда как юзается?
**properties)
имеется ввиду, там можно по хуй-координатам двигать, а не только по у? а цветом можно запилить?

>> No.49708  

>>49707 Пятый урок, ты читал его? Вот же явный пример как параметризованным текстом пользоваться: >>48776

>> No.49713  

А есть же что-нибудь для автоматического построения графа "прохождения" со всеми ветвлениями и условиями?

>> No.49715  

Господа, хотелось бы задать идиотский вопрос
Только тапками сильно не закидывайте:
Как в код ввести хентай-режим?

>> No.49717  

>>49715
Как-то так:

if persistent.hentai == true:
show cg some_uncensored_hentai
else
show cg some_censored_hentai
>> No.49720  

>>49715
Угу, ясно, вот только как выделить сам хентай в коде?

>> No.49721  

>>49715
Блин, сглупил. Всё ясно

>> No.49723  

>>49713 Такой тулзы не просто нет, её написание для произвольной renpy-игры принципиально невозможно. Предлагаю подумать почему.

>> No.49724  

>>49723

> принципиально невозможно

Глупости пишешь. Предлагаю подумать, почему.

>> No.49725  

А как же кто-то граф генерил для БЛ 1.1 когда она только-только вышла? Явно не ручками же.

>> No.49726  

>>49724 Представь себе скрипт следующего вида:

label start:
$ run_brainfuck_program("+++[>+<]>.")
jump finish

Так вот, достижима ли метка finish?

>> No.49727  

>>49725 Есть некоторая разница между невозможно для произвольной игры и невозможно для конкретной игры.

>> No.49728  

>>49726
Как будто кто-то стал бы такое делать. Что мешает тулзе распарсить (ну или просто выполнить) эту функцию и посмотреть, как она повлияет на состояние?
Ренпаевский скрипт сам по себе является графом. Если его нельзя распарсить, то не удастся и выполнить.

>> No.49729  

>>49726
Переполнения — это плохо!!

>> No.49731  

>>49728

> Как будто кто-то стал бы такое делать

Ну я же про анализатор произвольного кода, а не кода, который кто-то будет делать.

> Что мешает тулзе распарсить (ну или просто выполнить) эту функцию и посмотреть, как она повлияет на состояние?

См. Задачу об Останове. Ты не можешь знать, завершится ли когда-либо произвольная функция.

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

Сколько состояний в следующем графе:

init python:
x = 0
label start:
if x == 2985:
jump finish
$ x += 2
"Ы"
jump start
>> No.49732  

>>49731
В этом коде ошибка. Не имеет значения, сколько в нем состояний.

>> No.49733  

>>49732
Ошибки нет, код прекрасно работает. У него есть состояния, так как значение переменной меняются.

>> No.49734  

>>49733
Переменная x переполняется. Ты, конечно же, скажешь, что x модифицируется откуда-то извне, и что это - не бесконечный цикл. Не сомневался, что ты начнешь предлагать недетерминируемые примеры вроде пользовательского ввода. Для подобных ситуаций тулза может иметь специальные инструменты, обобщающие информацию.

>> No.49741  

>>49734

> Переменная x переполняется.

Извини, мой первый язык Си, поэтому я не воспринимаю это как ошибку, для меня MAX_INT+1 действительно равно MIN_INT. Из уважения к тебе и другим читателям переделал пример так, чтобы не было переполнений (см. конец поста)

>Ты, конечно же, скажешь, что x модифицируется откуда-то извне

Нет, не модифицируется.

>, и что это - не бесконечный цикл.

Нет, это действительно бесконечный цикл.

>Не сомневался, что ты начнешь предлагать недетерминируемые примеры вроде пользовательского ввода.

Нет, всё предельно детерменированно, но от того задача не становится разрешимой в общем виде для произвольного rpy-файла.

Итак, сколько состояний у такого графа? Достижима ли finish?

init python:
x = 0
y = 0
label start:
if x+y == 2573:
jump finish
if x > 3826:
$ y += 1
$ x -= 4827
if y > 2973:
$ x += 1
$ y -= 2111
$ x += 2
"Ы"
label finish:
"You win!"
>> No.49742  

>>49741

>мой первый язык Си

Зачем же ты перешел на богомерзкий питон?

>Достижима ли finish?

Лол, ага. Ты забыл jump

В целом я понимаю, к чему ты клонишь, но, все-таки, никакая программа не может гарантировать 100% защиты от дурака и в общем случае тулза сработает. Давай на этом остановимся, а то спать пора уже.

>> No.49743  

>>49742
Тащемта, jump тут не нужен, емнип: метки выполняются друг за другом, если нет явных операторов выхода.

>> No.49744  
Файл: 1409081572413.jpg -(135 KB, 800x533, Wizard Battle.jpg)
135

>>49741 >>49742
Пикрелейтед - как ваш спор выглядит со стороны вшивого гуманитария

>> No.49745  

>>49743
В том и лол, что у этого графа всего одно состояние. Но это - ошибка по невнимательности, не будем этим пользоваться.
Другое дело, что приводить бесконечный цикл в качестве примера возможной вн тоже неправильно (это же бред, такой вн просто быть не может).

>> No.49746  

>>49745
Действительно Бесконечное лето

>> No.49747  
Файл: 1409083318514.png -(15 KB, 233x223, cropped-new_pet.png)
15

>>49742 Зря ты так, знакомство с Python - одно из самых прекрасных событий в моей жизни. Come join us! Programming is fun again! It's a whole new world up here!

>>49742

>В целом я понимаю, к чему ты клонишь
>Давай на этом остановимся, а то спать пора уже.

Быстро сдаёшься. А я-то уж собирался перейти от двух переменных к N и показать, что для rpy-файла, который реально прочитать глазами, количество состояний уже может превысить число атомов во вселенной, что ставит под сомнение возможность ответить, зациклится оно или нет.

>никакая программа не может гарантировать 100% защиты от дурака

Почему?

> и в общем случае тулза сработает.

Как раз в общем случае-то ничего и не работает. А в частных случаях - сколько угодно.

>> No.49748  

>>49745

> приводить бесконечный цикл в качестве примера возможной вн тоже неправильно

Но ведь это корректный renpy-код, почему бы и нет?

>это же бред, такой вн просто быть не может

Можно взять "Действительно Бесконечное Лето" и после каждой отображённой на экран строки пересчитывать random seed на основании x и y из примера >>49741. Тогда получится детерменированная, но бесконечная игра.

>> No.49749  

>>49747

>Programming is fun again!

Писать true с большой буквы?

>количество состояний уже может превысить число атомов во вселенной

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

>Быстро сдаёшься

Не люблю спорить - никакой выгоды, а работа стоит. Да, знаю что надо было промолчать.

>Почему?

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

>> No.49750  

>>49748

>детерменированная, но бесконечная игра

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

>> No.49751  

>>49749

>написать тулзу, которая будет готова к любому вводу, каким бы глупым и нелогичным он не был, не только невозможно

>>49723

>Такой тулзы не просто нет, её написание для произвольной renpy-игры принципиально невозможно.
>произвольной

И зачем было спорить?

>> No.49752  

>>49751

> >написать тулзу, которая будет готова к любому вводу, каким бы глупым и нелогичным он не был, не только невозможно

Но это не значит, что нельзя написать тулзу, которая будет работать в большинстве real world случаев.

>произвольной

Как-то не акцентировал внимание на этом слове. :3

>> No.49762  

С ужасом обнаружил, что домашнее задание, которое я написал ещё в декабре прошлого года, оказывается, содержит ошибку, и вызывает негодование лолботовской тулзы для юнит-тестирования. Fixed: http://rghost.net/57712434
Просьба включить в модпак, дабы не плодить там ошибки. В идеале вообще перед сборкой модпака гонять тесты и править ошибки. В том же sadf-моде, например, ошибки вызывает незадействованная часть кода, которую можно попросту закомментировать, а вместо jump fukken_shit сделать return в главное меню.

>> No.49770  

Таки я читнул тредца, но так и не понял, как открыть архив рпая(.rpa). Гуголь тоже не дал пояснений, кроме unrpa, к которому не прилагается никаких туторов. Всё-таки, чем его открыть, архив тот?

>> No.49771  

Таки я читнул тредца, но так и не понял, как открыть/распаковать ренпаевский архив(.rpa), а гуголь кинул мне в руки питон и unrpa, не дав при этом никаких туторов. Всё же, как открыть-то?

>> No.49772  

>>49771
unrpa. Ты плохо искал туторы.
Где-то выше выкладывали unrpa переделанный в exe-файл, поищи.

>> No.49773  
Файл: 1409234834350.png -(16 KB, 1095x231, 2014-08-28 22-06-30 Скриншот экрана.png)
16

>>49772
Реквест перезалива

>> No.49774  

>>49773
Оказалось что я его скачал, повезло тебе.
http://rghost.ru/57728867

>> No.49775  

>>49774
Всё, ждите зимний интерфейс в BTS, он же "вконтактный школомод". Пошел пилить.

>> No.49776  

>>49775
А чем тебе $ prologue_time () не зимний интерфейс?

>> No.49777  

>>49776
А я снежок на рамку хочу положить. Для эпилогов рутов. Как раз Жадеватер Алисорут доделывает к релизу

>> No.49778  

>>49774
Винтертейл тем же макаром не распаковать? У меня почему-то крашится.

>> No.49779  

>>49778 Отпишись сюда и/или в личку с текстом ошибки, починю сегодня ночью.

>> No.49784  

>>49778 А ты где винтертейл брал? С тем, что на cf.ichan.ru, всё работает отлично.

http://cf.ichan.ru/games/vn/WinterTale-multilang/WinterTale-multilang.renpy611.zip
http://cf.ichan.ru/games/renpy611-all.zip

>> No.49785  

>>49778 Вот версия с поддержкой RenPy младше 6.11:

https://raw.githubusercontent.com/lolbot-iichan/decompile.rpy/master/depack.rpy

Проверено на 6.10 (чуть старше Winter Tale) и 6.2 (2007 год).

>> No.49796  
Файл: 1409311220002.jpg -(1129 KB, 2560x1440, madskillz1.jpg)
1129

>>49785
Благодарствуй, Сэйбер. Ждите новую зимнюю рамку, новые ЦГ и спрайты. Перед вами мой мэдскиллз, как примерно в моде будет выглядеть сцена в парке.

>> No.49799  

>>49796
На первый план Семёна надо было. Его спрайт больше (разве не видно?)

>> No.49805  

>>49799
Я говорю, это мой кривой мэдскиллз, набросок, как будет примерно выглядеть сцена в парке. Это даже не ренпай, так, в паинтнете набросал. У спрайта Семёна на картинке еще нет руки и нижней части тела, нужно будет дорисовывать.

>> No.49819  

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

  1. Если даже я их найду а как их юзать, я должен все прописать в каком-то гипотетическом файле эффектов(говномод делаю к бл)?
  2. Может у кого все же дровишки есть?
>> No.49823  

>>49805

>У спрайта Семёна на картинке еще нет руки и нижней части тела

Ты всё-таки тайком пилишь мод про Чеченскую войну?

>> No.49824  

>>49819 Проще всего сделать так:

  • запускаешь Катаву (да-да, нет ничего зазорного в том, чтобы, блин, запускать игру, которую исследуешь)
  • перематываешь вперёд, пока не находишь в игре место, где имеет место этот чудесный эффект

    • если у тебя Катава с мод-паком и включен фильтр "[widget] текущая строчка кода", то смотришь имя файла и номер строчки, на котором происходит эффект
    • если у тебя Катава без мод-пака, то просто поиском по декомпилированным файлам ищешь тот текст, который в игре выводится перед и после эффекта
  • найдя нужные строки, читаешь их и для каждой строки прикидываешь с учётом уроков 1-5, что в них используется:

    • если это какой-нибудь window hide/window show, то ничего не делаешь
    • если эта какой-нибудь show ..., то переносишь картинку на тот же манер как это делают другие моды
    • если это какой-нибудь play sound ..., то переносишь звук на тот же манер как это делают другие моды
    • если это какой-нибудь with ..., то пробуешь ничего не делать, если не работает, ищешь определение нужного эффекта и копируешь его к себе в init-блок

Детально помочь сможем только при более предметном разговоре, а не о каком-то эффекте в какой-то части какой-то игры.

>> No.49825  

>>49824

> декомпилированным файлам

Сие как сделать?

>> No.49828  

>>49825
Реквестирую. Айсурс нонэ в дебаг.рпу не прописать в катаве.

>> No.49829  

>>49819
А просто использовать звук и show полупрозрачную картинку с эффектом dissolve не прокатит?
Зачем всё усложнять?

>> No.49830  

>>48824
Откуда текст с картинки?

>> No.49832  

>>49830 Гуглопоиск по картинкам ведёт обратно на Ычан, в тред http://iichan.hk/b/res/3198744.html , причём там оно как раз под именем 1404254344939.jpg

>> No.49835  

>>49828 Я устал рассказывать как прописать одну строчку, поэтому прикрутил автопатч этой несчастной строки в https://raw.githubusercontent.com/lolbot-iichan/decompile.rpy/master/decompile.rpy

>> No.49838  

То что мне нужно
show heartattack alpha
Значит я сосу хуи?

>> No.49839  

>>49838

>show heartattack alpha
>если эта какой-нибудь show ..., то переносишь картинку на тот же манер как это делают другие моды
>Значит я с@су ху&?

Если ты считаешь это необходимым.

Посмотрел по коду Катавы, там ничего сложного, целиком эффект записывается примерно так:

window hide
play sound sfx_heartslow
show heartattack alpha
with Dissolve (0.1)
hide heartattack
with Dissolve (0.4)
window show

Итого, добавь в начало своего мода init-блок вроде такого, подложив соответствующие файлы в игру:

init:
image heartattack alpha = im.Alpha("vfx/heart_attack.png", 0.3)
$ sfx_heartslow = "sfx/heart_single_slow.ogg"

Иногда ставятся другие звуки, можешь поискать соответствующие блоки самостоятельно:

>d:\GAMES\Katawa Shoujo 1.1 RU>grep "show heartattack alpha" *.txt -C 8 -h | grep sfx | sort | uniq -c | sort -nr
114 play sound sfx_heartslow
72 play sound sfx_heartfast
12 play sound sfx_heartstop
>> No.49840  
Файл: 1409393593346.png -(627 KB, 1024x768, планктон.png)
627

>>49839
Спасибо, прямо по полочкам разложил.
Жалко я не анимеблядь, зато можешь немножко попытать за меня офисный планктон.

>> No.49846  

>>49823
Ниет.

>> No.49859  
Файл: 1409430251103.png -(11 KB, 384x384, 1149375645226.png)
11

Модпак: https://yadi.sk/d/8aIISAR3ai3ZQ
Апдейт до нынешней версии: https://yadi.sk/d/mhDv9n66ai3Zk
Новые моды:
«7 дней лета» - другая версия событий, развернувшихся в «Совёнке»
bus test - говорящие автобусы раскрывают семейные тайны
Alisa_new - концовка «Алиса, the worst»
«Back to Sovenok» в модпак не входит до боле стабильной (а то и финальной) версии.
Новые фильтры:
Пристойное лето - включение/отключение цензуры
Фильтры модов теперь можно сохранить с помощью звёздочки.

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

>> No.49860  

>>49859
Разве что указывать, что желательно сносить старую версию перед установкой новой. Для профилактики простудных заболеваний.

>> No.49861  

>>49859 Я вообще начисто каждый раз эроге 1.1 переразвёртываю перед установкой мод-пака, но я наверное скорее исключение. Лучше у анонимов с соседнего форума спросить.

PS Спасибо за то, что ты делаешь.

>> No.49865  

depack.rpy с катавой не дружит
I'm sorry, but an exception occured while executing your Ren'Py
script.

AttributeError: 'module' object has no attribute 'list_files'

While executing init code:
- script at line 11 of E:\Program Files (x86)\Katawa Shoujo/game/depack.rpy
- python at line 18 of E:\Program Files (x86)\Katawa Shoujo/game/depack.rpy.

-- Full Traceback ------------------------------------------------------------

File "E:\Program Files (x86)\Katawa Shoujo\renpy\bootstrap.py", line 260, in bootstrap
File "E:\Program Files (x86)\Katawa Shoujo\renpy\main.py", line 255, in main
File "E:\Program Files (x86)\Katawa Shoujo\renpy\execution.py", line 234, in run
File "E:\Program Files (x86)\Katawa Shoujo\renpy\ast.py", line 558, in execute
File "E:\Program Files (x86)\Katawa Shoujo\renpy\python.py", line 938, in py_exec_bytecode
File "E:\Program Files (x86)\Katawa Shoujo/game/depack.rpy", line 18, in <module>
AttributeError: 'module' object has no attribute 'list_files'

While executing init code:
- script at line 11 of E:\Program Files (x86)\Katawa Shoujo/game/depack.rpy
- python at line 18 of E:\Program Files (x86)\Katawa Shoujo/game/depack.rpy.

Ren'Py Version: Ren'Py 6.10.2e

>> No.49866  

SAY SHTULLMAN-PERDO-GOD TO HELP ME
Вот это пердоцирк. Нужно на компе на работе запилить комфортную среду для редактирования, сраная утилита пи2экзе требует целого питона, когда нужно лишь выполнить простейшие команды склепанного на коленке кода.
Ну ок, welcome to пердомирок. Установил питон на ноуте коллеги ради прикола, и что бы вы думали! Оказывается версия нужна младше. Ладно, установил другую.Теперь путь не вводится, никак, вообще.
У пердоликов даже в винде инсталляторов 95 года нософт нодрайверс?

>> No.49868  

>>49865 Вроде для версий раньше 6.11 специально добавлялась поддержка. У тебя такая версия?

https://raw.githubusercontent.com/lolbot-iichan/decompile.rpy/master/depack.rpy

>> No.49869  

Как истый пердолик, на пердохабе посмотрел мануал:
Ожидания:
In simple terms you want 'python unrpa -m -p /path/to/extract/to /file/to/extract.rpa'
Реальность:

>>> python unrpa -m -p "E:\Program Files (x86)\Katawa Shoujo\unrpa-master\unrpa-

master" "E:\Program Files (x86)\Katawa Shoujo\game\data.rpa"
Результат:

           ^

SyntaxError: invalid syntax
Это какой-то прикол?

>> No.49870  

>>49868
Ren'Py Version: Ren'Py 6.10.2e же

>> No.49871  
Файл: 1409483659055.jpg -(30 KB, 853x480, 1406654779816.jpg)
30

>>49866 А теперь глубоко вздохни, успокойся, и расскажи нам без луркояза и агрессии, в чём именно заключается твоя так волнующая тебя проблема в рамках RenPy-разработки и чего ты хотел бы от нас как от кружка обладающих экспертизой людей в рамках её решения?

>> No.49872  

>>49870 Всё верно, 6.10 младше 6.11, а значит для неё должна сработать else-ветка, где для версий раньше 6.11 специально добавлялась поддержка.
>>49869 unrpa - не здешнее поделие. Здешнее поделие - https://raw.githubusercontent.com/lolbot-iichan/decompile.rpy/master/depack.rpy

>> No.49873  

>>49871
Хотелось бы на работе, где ничего нельзя ставить левого, с помощью екзешника распаковать рпа-файл.
Мне пофиг как, главное чтобы работало от одного сраного экзешника(а код уровня папки-убийцы по сложности) ПРОСТО запустить без плясок с бубном хотя бы тот самый py2exe. Воот.
Требуется все время какое-то говно, да еще какой-то другой версии, и даже если оно есть - путь не вводится с клавиатуры.

>> No.49874  

>>49872
Там походу нужны листинги ресурсов? Тогда откуда в пятом уроке названия всех ресурсов, кроме как не оттуда?

>> No.49876  

>>49872
Ну у кого есть архивы, может кто выложит...

>> No.49886  

>>49873

>Хотелось бы на работе, где ничего нельзя ставить левого, с помощью екзешника распаковать рпа-файл.

Очевидно, rpa-файл у тебя идёт в составе какой-то игры.

  1. Скачай и положи https://raw.githubusercontent.com/lolbot-iichan/decompile.rpy/master/depack.rpy в папку /game/ этой игры.
  2. Запусти эту игру.
  3. Всё, наслаждайся распакованными ресурсами.

Чем это тебе не запуск одного exe-файла без установки чего-то левого?

>> No.49887  

>>49886
Я бы не стал брать в руки бубен, если бы не
>>49865

>> No.49888  

>>49887 А ты пользуешься свяжей версией depack с гитхаба или старинной сборкой от Вована? Там же сейчас на 18ой строчке как раз проверка добавилась на то, что list_files существует. Да и тестилось оно как раз на 6.10 судя по >>49785.

>> No.49889  

>>49888
Мне выше кинули ссылку, я по ней и скачал. Хз, репак это или еще что.

>> No.49890  

>>49889 Как бы то ни было, попробуй пожалуйста именно https://raw.githubusercontent.com/lolbot-iichan/decompile.rpy/master/depack.rpy

>> No.49891  

>>49890
Одинаково.
I'm sorry, but an exception occured while executing your Ren'Py
script.

AttributeError: 'module' object has no attribute 'list_files'

While executing init code:
- script at line 11 of E:\Program Files (x86)\Katawa Shoujo/game/depack.rpy
- python at line 18 of E:\Program Files (x86)\Katawa Shoujo/game/depack.rpy.

-- Full Traceback ------------------------------------------------------------

File "E:\Program Files (x86)\Katawa Shoujo\renpy\bootstrap.py", line 260, in bootstrap
File "E:\Program Files (x86)\Katawa Shoujo\renpy\main.py", line 255, in main
File "E:\Program Files (x86)\Katawa Shoujo\renpy\execution.py", line 234, in run
File "E:\Program Files (x86)\Katawa Shoujo\renpy\ast.py", line 558, in execute
File "E:\Program Files (x86)\Katawa Shoujo\renpy\python.py", line 938, in py_exec_bytecode
File "E:\Program Files (x86)\Katawa Shoujo/game/depack.rpy", line 18, in <module>
AttributeError: 'module' object has no attribute 'list_files'

While executing init code:
- script at line 11 of E:\Program Files (x86)\Katawa Shoujo/game/depack.rpy
- python at line 18 of E:\Program Files (x86)\Katawa Shoujo/game/depack.rpy.

Ren'Py Version: Ren'Py 6.10.2e

>> No.49892  

>>49891 Но на 18ой строчке не делается насильного взятия этого аттрибута как в прошлой версии, только проверка его наличия.

>> No.49894  

I'm sorry, but an exception occured while executing your Ren'Py
script.

WindowsError: [Error 3] : 'E:\\Program Files (x86)\\Katawa Shoujo\\archived/.'

While executing init code:
- script at line 11 of E:\Program Files (x86)\Katawa Shoujo/game/depack.rpy
- python at line 30 of E:\Program Files (x86)\Katawa Shoujo/game/depack.rpy.
- python at line 22 of E:\Program Files (x86)\Katawa Shoujo/game/depack.rpy.

-- Full Traceback ------------------------------------------------------------

File "E:\Program Files (x86)\Katawa Shoujo\renpy\bootstrap.py", line 260, in bootstrap
File "E:\Program Files (x86)\Katawa Shoujo\renpy\main.py", line 255, in main
File "E:\Program Files (x86)\Katawa Shoujo\renpy\execution.py", line 234, in run
File "E:\Program Files (x86)\Katawa Shoujo\renpy\ast.py", line 558, in execute
File "E:\Program Files (x86)\Katawa Shoujo\renpy\python.py", line 938, in py_exec_bytecode
File "E:\Program Files (x86)\Katawa Shoujo/game/depack.rpy", line 30, in <module>
File "E:\Program Files (x86)\Katawa Shoujo/game/depack.rpy", line 22, in <lambda.0>
File "E:\Program Files (x86)\Katawa Shoujo\renpy\loader.py", line 129, in listdirfiles
File "E:\Program Files (x86)\Katawa Shoujo\renpy\loader.py", line 106, in walkdir
WindowsError: [Error 3] : 'E:\\Program Files (x86)\\Katawa Shoujo\\archived/.'

While executing init code:
- script at line 11 of E:\Program Files (x86)\Katawa Shoujo/game/depack.rpy
- python at line 30 of E:\Program Files (x86)\Katawa Shoujo/game/depack.rpy.
- python at line 22 of E:\Program Files (x86)\Katawa Shoujo/game/depack.rpy.

Ren'Py Version: Ren'Py 6.10.2e
Спермософт еррор, тут вообще может что-нибудь помочь?

>> No.49895  

>>49894
я скопировал это
>>49891
Из прошлого окна.

>> No.49897  

>>49894 Обновил https://raw.githubusercontent.com/lolbot-iichan/decompile.rpy/master/depack.rpy , попробуй ещё раз. Теперь долно работать даже со старьём вроде движка катавы.

>> No.49900  

Три чая тебе.
Лови охуенный кавер SoD
http://www.youtube.com/watch?v=eDJ7t-h7B8s

>> No.49903  
Файл: 1409520787903.png -(632 KB, 1754x1017, unit_tests.png)
632

49859 Кто офигительный? Ты офигительный!

Только вот сами everlasting_summer-unittests_140722 забыл, которые в >>48839 ( http://rghost.ru/57023504 ).

Кстати, вопрос к писателям модов, нет больше идей, какие ещё частые ошибки можно покрыть тестами?

>> No.49904  

>>49903
Но зачем они конечному пользователю? Это же средство-предохранитель для разработчиков.

>> No.49919  

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

>> No.49924  

>>49859
Тут разве что принудительно всех моддеров, кто складирует ресурсы в своей папке, нужно расстреливать убеждать больше так не делать. Думаю, стоит написать здесь, в тредах кружка кибернетики, как правильно делать, так как первые уроки уже устарели, например, и не отображают актуальную информацию. Как вариант - перезалить их с учётом современных реалий с $регистрацией и обязательно добавить слайд про ресурсы, что их надо складировать в общих ресурсах игры, а не в своей папке. Плюс всем текущим мододелам пояснить по-хардкору, что так делать нельзя, и пусть исправляют. Помимо этого надо исправить всё в мод-паке, чтобы мимокрокодилы не подхватывали дурную привычку глядя на то, как сделано у других.

>> No.49925  

>>49924
Приложить инструктаж в README к следующему апдейту, например.

>> No.49926  

>>49924
Мне нужно обязательно, когда я хочу удалить мод, лезть в папку с ресурсами и по отдельному экстраресоурсесрпу выуживать чтобы нидайбох конфликт какой не случился? Удобнее же один мод - одна папка, говномоды в новом паке даже не качал, так как такой подход вообще все запутает. Где удобство-то?

>> No.49929  

>>49924

>нужно убеждать больше так не делать

Начинайте убежать. Конечно,

>Мне, откровенно говоря, не нравится
  • весомая просьба, раз исходит от куратора модпака, без сарказма. Но смысл личных папок тоже кое-какой был, а переезд в общую папку создаст проблемы, как было сказано. Профсоюз личнопапочных мододелов должен убедиться, что интересы конечного нажимателя пробела не ущемлены.
>> No.49931  

>>49924>>49926 Идеальным решением удаления ресурсов, которые потенциально могут использоваться как одним модом, так и несколькими будет замена одного мод-пака будет россыпь deb-пакетов. И чтобы мод-селектор менеджил их установку и удаление, подтягивая и убирая нужные по зависимостям. Наброски чего-то такого были в IIchan Classic Fond, кстати.

>> No.49932  

>>49931
Слушай, может собирать ресурсы в рпа сразу? Удалил рпа и мод удален, в архиве так сказать все однимфайлом.

>> No.49933  

im.Scale не работает, опять квадрат в центре экрана, как лечить?
Такое наблюдается на всех стороннних изображениях.

>> No.49934  

>>49932
Nope. Вы забываете про перекрёстную зависимость. Пакетный менеджер — логичная эволюция модпака. Затем поднимается отдельный сервер, добавление мода становится делом одной кнопки, а проблемы сортировки, багфиксов и расположения файлов становятся проблемой конечных пользователей.

>> No.49935  

>>49933 Покажи, что конкретно ты делаешь (код) и что конкретно ты получаешь (результат).

>> No.49981  

>>49934
А давайте ещё репозиторий замутим тогда, раз уж пошла такая пьянка.

>> No.49992  
Файл: 1409741751825.png -(559 KB, 1600x900, апскейл.png)
559

>>49935
Код
scene bg unforest with fade3
Объявление
image bg unforest = im.Scale("anon/image/unforest.jpg", 1600, 900)(я даже и шоуцэгэ пробовал, бесполезно, сначала 1920х1080 пробовал делать, думал что это из за моего лоутир монитора 1600х900, но результат тот же.)
Ожидание
-фуллскрин
Реальность
-смотри пик

>> No.49994  

>>49992
Проблема обостряется еще и тем, что зум при таком квадрате юзать нельзя, т.к. на разных мониторах размер тупо будет разным.

>> No.49995  

>>49992
Забыл добавить - в оригинале картинка 1600х900

>> No.50011  

>>49992 Вообще, 1920 и 1080 должны были сработать, вроде бы это именно также и делается для зимних фонов из wintertale в extra_resourses.

Ночью посмотрю в чём дело и отпишусь.

>> No.50062  

>>49992 У меня вот такой код работает: http://rghost.ru/57839811

Попробуй заменить на

image bg unforest = im.Scale("images/768/bg/ext_square_winterday.png", 1920, 1080)

Если у тебя всё равно будет то же CG, да ещё и не в полный экран, значит у тебя в нескольких местах image bg unforest объявлен, и в силу вступает не тот, который ты редактируешь, а какой-то другой. Проверь все rpy и rpyc файлы, которые ты редактировал.

Реальный размер монитора не важен, scale работает с логическими пикселями, которых в Ычан Эроге 1920х1080.

И да, используй всё-таки префикс 'cg', а не 'bg', так правильнее для фонов, на которых есть крупные персонажи.

>> No.50067  

>>50062
Спасибо.
Когда думал про цг поплелся нудно через весь сценарий проверять show cg hide cg, и после часа пердольства таки я нашел нескрытое цг которое мне обламывало всю малину.
Какая между этим связь? Scene же всю сцену запиливает снова?

>> No.50075  

>>50067 Сложно сказать, не видя конкретного кода. Возможно, ты перепутал show и scene где-то.

>> No.50097  

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

Как это можно реализовать программными средствами?

Я пробовал следующим образом:
init python:

def alt_chapter(day_number, chapter_name):
global save_name
renpy.block_rollback()
renpy.scene()
renpy.show('bg ext_stand_2')
renpy.transition(moveinleft)
renpy.show(backdrop, at_list=[left])
renpy.transition(dissolve)

И, соответственно, задавал для каждой отдельно взятой ветки этот самый бэкдроп. Однако, в оригинале достаточно было просто указания на девочку (us, un, dv), а в моём случае мало того, что приходится дописывать, что они все нормал пионеры, так ещё и возможности сделать их движущимися нет.

Анон, подскажи, в какую сторону копать?

>> No.50111  

Анончик. Смотри.
Есть оригинальный сценарий.
Есть мой сценарий, который отличатся от первого только эпилогом.
Можно ли сделать так, чтобы в момент Х оригинальный сценарий переключался на мой?
Или нужно тупо брать оригинальный сценарий, делать из него свой, и заменять все лейблы и джампы?

>> No.50113  

>>50111 Я правильно понимаю, что ситуация примерно такая?

label some_old_scene_by_rita:
# старый код внутри существующей метки
"Ла-ла-ла."
"Жу-жу-жу."
# старый код внутри существующей метки прерывается

# твой новый код, небольшая локальная вставка
"И тут ты решил..."
menu:
"Искать ответы.":
pass
"Не искать ответы.":
jump some_new_awesome_scene_by_anon
# конец твоего нового кода
    # старый код внутри существующей метки продолжается
"Галактики! Легионеры!"
...
label some_new_awesome_scene_by_anon:
uv "Анон-кун, ты такая няка, мыр~мыр~мыр!"
".:Good end:."
>> No.50115  

>>50113
Да, примерно так.
Можно ли вставку или переход сделать, не трогая оригинальный файл сценария?

>> No.50116  

>>50115 Я бы это делал примерно так:

init:
$ filters["scenario_uvao_extra_ending"] = u"Хорошая концовка ЮВАО-тян"
init python:
def scenario_uvao_extra_ending():
rgsn = renpy.game.script.namemap
rgsn["some_old_scene_by_rita"] = rgsn["_some_old_scene_by_rita_new_"]
label _some_old_scene_by_rita_new_:
# старый код внутри существующей метки
"Ла-ла-ла."
"Жу-жу-жу."
# старый код внутри существующей метки прерывается

# твой новый код, небольшая локальная вставка
"И тут ты решил..."
menu:
"Искать ответы.":
pass
"Не искать ответы.":
jump some_new_awesome_scene_by_anon
# конец твоего нового кода
    # старый код внутри существующей метки продолжается
"Галактики! Легионеры!"
...
# увы, при таком подходе нужно скопировать все строки оригинального label some_old_scene_by_rita, надеюсь он не большой
label some_new_awesome_scene_by_anon:
uv "Анон-кун, ты такая няка, мыр~мыр~мыр!"
".:Good end:."

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

init:
$ mods["uvao_mod_author__uvao_extra_ending_start"] = u"Быстрый переход на концовку ЮВАО-тян"
$ mod_tags["uvao_mod_author__uvao_extra_ending_start"] = ["gameplay:vn","protagonist:male","character:Юля","length:day"]
label uvao_mod_author__uvao_extra_ending_start:
$ some_var = 42
$ hove_done_something = True
"Окружение подготовлено так, как будто вы только что вышли на такую-то метку, играя таким-то образом."
"Если у вас включен фильтр \"Хорошая концовка ЮВАО-тян\", то в отличие от оригинального Ычан Эроге, вы получие дополнительный выбор."
"Выбирайте сердцем!"
"Ну, или умом..."
jump some_old_scene_by_rita
>> No.50117  

>>50116
Ты опечатался в слове "получите".

В этом ЮВАО-моде начало копирует риточкино возврщение Семёна в свою квартиру по её руту? Просто начал читать и тут

>Последние часы в том мире слились в однообразное марево, словно пьяный Ренуар заканчивал свою картину малярным валиком вместо кисточки.

Бляяяяядь. Извините.

>> No.50118  

>>50117
Пардон, не её руте, а в руте Ульяны.

>возвращение

Ненужный фикс.

>> No.50120  
Файл: 1409859595602.jpg -(41 KB, 512x512, 1288349413360.jpg)
41

>>50116
Спасибо, сейчас попробую :3
>>50118
Верно, текст взят Ульянкин. Моему писательскому навыку до такого текста, как до пульсаров.

>> No.50121  

>>50120

>Моему писательскому навыку до такого текста, как до пульсаров.

Ещё скопипастил из Страха и отвращения, чтобы забить место, да? В общем-то, ничего, про гитару, например, интересно написал. Из ошибок: "куржку" и деепричастный оборот.

>Посмотрев ещё пяток серий меня начало заметно клонить в сон.

Не согласовано и запятой нет. Читаю дальше.

>> No.50122  

>>50121

>чтобы забить место, да?

Не, это целенаправленная отсылка и к нему, и панцуведьмам.
Спасибо, ошибки пофиксил.

>> No.50123  

>>50120

>Она — та, что дорога мне. И вот что действительно важно.

Она - та, кто дорог мне.

Дочитал, в целом, вышло очень симпатично, текст нормальный, арт удачный обработал, да?. Меня только решение со снежинками напрягло, они смотрелись чуть неестественно в таких-то размерах.
Ещё по тексту небольшое замечание - такое ощущение, что Семён и ЮВАО-тян весь год могли разговаривать только об орехах с грибами да прочих запасах на зиму :3

>> No.50124  
Файл: 1409861598842.png -(584 KB, 700x969, 1e44c14c6243b0c23a7f7b20691b7617.png)
584

>>50123

>обработал, да?

Да, исходник был на редкость подходящим.

>чуть неестественно в таких-то размерах

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

>весь год могли

Последняя сцена - спустя пару дней после "знакомства". Я специально много намеков на время и погоду дал, одногруппник на консультации, воспоминания о 410. До "знакомства" они не общались, Семен воспринимал ее как просто свой внутренний голос.

>да прочих запасах на зиму

Просто мне кажется это смешно :3
Да и вообще, разве кошки едят яблоки или грибы, раз уж на то пошло?
>>50123

>> No.50125  

>>50124

>Последняя сцена - спустя пару дней после "знакомства".

Ох щи, что-то я проглядел.

>Вспоминал, что было год назад.

А, я просто вот эту строчку неправильно понял.

>До "знакомства" они не общались, Семен воспринимал ее как просто свой внутренний голос

И в ус не дул! Хороший голос, приятный собеседник! :3

>Да и вообще, разве кошки едят яблоки или грибы, раз уж на то пошло?

Это выдумка исключительно для эроге, каноничная ЮВАО, насколько я помню, ела сырую рыбу и омлет.

>> No.50126  

>>50117

>Ты опечатался в слове "получите".

Я не гарантирую, что этот код даже компилируется, не то, Что не содержит ошибок. Это так, мысли вслух.

>> No.50127  

>>50097 Посмотри как это в Ычан Эроге сделано: https://github.com/yakui-lover/eroge-dopil/blob/master/script.rpy , строчки 100-125 - говнокод с отображением нормальных пионеров.

>> No.50128  

http://rghost.ru/57854534 добавил виджет для текущей музыки

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

>> No.50129  

Код выглядит так

init:

python:
filters["uvao__uvao_goodend"] = u"Другая концовка Юли"
mods["uvao__jumproute"] = u"Быстрый переход на рут Юли"

python early:

def uvao__uvao_goodend():
rgsn = renpy.game.script.namemap
rgsn["epilogue_uv_part2"],rgsn["epilogue_uv_part2_uvao_goodend"] = rgsn["epilogue_uv_part2_uvao_goodend"],rgsn["epilogue_uv_part2"]

label epilogue_uv_part2_uvao_goodend:

$ uvao_goodend = 0
"Я подбежал к Ольге Дмитриевне."

Ну и так далее. Не происходит подмены.
Мод для перехода на рут юли работает, а патч - нет.

>> No.50135  

>>50129 Выложи файл целиком хотя бы..

>> No.50136  

>>50129 http://rghost.ru/57857610 Вот тут подмена отлично работает. Если фильтр включен, переходит на ла-ла-ла, жу-жу-жу, если выключен, то переходит на оригинал.

>> No.50137  

>>50135
http://rghost.ru/private/57857657/88f874c53197c8fba7db9f63255bd330

>> No.50138  
Файл: 1409907328690.jpg -(163 KB, 674x600, 13078218420087.jpg)
163

>>50136
Тоже не работает.

>> No.50139  

>>50138 Так, а ты в меню фильтров то переходишь и ставишь галочку?

>> No.50140  

>>50139
Конечно. В меню фильтров у фильтра крестик стоит.
Но все равно не работает, ни один из вариантов.

rgsn["epilogue_uv_part2"] = rgsn["epilogue_uv_part2_uvao_goodend"]
rgsn["epilogue_uv_part2_uvao_goodend"] = rgsn["epilogue_uv_part2"]
rgsn["epilogue_uv_part2"],rgsn["epilogue_uv_part2_uvao_goodend"] = rgsn["epilogue_uv_part2_uvao_goodend"],rgsn["epilogue_uv_part2"]
rgsn["epilogue_uv_part2_uvao_goodend"],rgsn["epilogue_uv_part2"] = rgsn["epilogue_uv_part2"],rgsn["epilogue_uv_part2_uvao_goodend"]

Значит где-то в другом месте проблема.

>> No.50141  

>>50140 Так, а вот пример из >>50136 у тебя тоже не работает? Расскажи, как ты его проверяешь по пунктам. Я делал так:

  • подложил файл, запустил ычан эроге
  • включил галочку фильтра
  • перезапустил ычан эроге (это обязательно после выставления галочек)
  • запустил мод, убедился, что jump переходит на жужужу, вернулся в меню
  • снял галочку, перезапустил игру, убедился, что переходит на оригинал

Ты делаешь в точности то же самое или что-то другое? Если да, то что?

>> No.50145  

>>50141
подложил файл, запустил ычан эроге
включил галочку фильтра
перезапустил ычан эроге (это обязательно после выставления галочек)
проверил наличие галочки
запустил
никаких жужужу, снова оригинал

При этом, допустим, пэйнт фильтр работает.

>> No.50146  

>>50145 На свежеустановленной игре тоже не работает? Может у тебя несколько фильтров одновременно замену делают? Если дважды что-то поменять местами, получится то, что было.

>> No.50149  

>>50146
Сейчас попробую.
Вообще патч 1.1.6 надо ставить? Или он в мод-пак включен?
Какая сборка вообще считается каноничной?
Сомневаюсь насчет двойной перезаписи, у меня все в одной папке лежит \scenario_uvao, я бы заметил несколько скриптов.

>> No.50151  

>>50146
Сейчас попробовал на чистой игре+свежий модпак. То же самое.
У тебя >>50136 работает, ты пробовал?

>> No.50153  

>>50151 Да, я перед постингом попробовал на эроге 1.1 + свежий модпак.

Мистика какая-то. Давай подождём когда кто-то третий попробует и скажет что-нибудь...

>> No.50154  

>>50153
Странно.
Я вот тестовую сборку сделал, посмотри.
http://rghost.ru/private/57860905/22a6f4b818e9593175993a89d1461293
В сцене где появляется город в строчке "Я подбежал к Ольге Дмитриевне." будут надписи "ТЕСТ". Если все заработает.

>> No.50157  

>>50154
Там можно в модах найти скиппер на рут Юли, если что.

>> No.50164  

>>50154
Хм, если поставить

label uvao__jumproute:
jump epilogue_uv_part2

То через мод "Быстрый переход на рут Юли" действительно запустится новая ветка.
Но если начать играть с начала или более ранней сцены, то перехода не происходит.
С включенным фильтром, конечно.

>> No.50170  

Я понял в чём твоя проблема. Дело в том, что нигде, ни в едином месте script.rpy не делает "jump epilogue_uv_part2", можешь проверить.

Как же туда попадает скрипт? А дело в том, что если метка не кончается на jump или на return, то начинает выполняться следующая в этом файле и так далее. Такое поведение - источник ошибок в случае если в будущем метки разносятся в разные файлы или добавляется новая метка в середине файла, поэтому я про такое поведение решил даже не рассказывать, чтобы не искушать мододелов.

В Ычан Эроге же такое используется. Чтобы оценить масштаб ситуации, посмотрим на такую выжимку из скрипта:

>d:\iichan\everlasting_summer-1.1-all.original>grep "label\|jump\| if \|else\|menu" scenario.rpy.txt -n | grep "epilogue_uv" -C 3
13801:label fail_mine_exit:
14003: if day4_uv_mine == 1:
14033: if day4_uv_mine == 1:
14034: jump epilogue_uv
14036: jump day5_main1
14038:label day4_uv:
14131: jump fail_mine_exit
--
39651: if epilogue_sl_good == 1:
39829: if not persistent.endings["sl_good"]:
39833: jump postscriptum
39835:label epilogue_uv:
40938:label epilogue_uv_part2:
41640: menu:
41642: jump epilogue_uv_city
41645: jump epilogue_uv_ulya
41647:label epilogue_uv_city:
41948: if not persistent.endings["uv_city"]:
41952: jump final_credits
41954:label epilogue_uv_ulya:
42646: if persistent.hentai:
43804: if not persistent.endings["uv_unknown_fucken_shit"]:
43808: jump final_credits

Как видно, в метку epilogue_uv jump есть, причём ровно один.

Простое решение - подменять не epilogue_uv_part2, а epilogue_uv.
Увы, для этого придётся скопировать ещё 40938-39835=1103 строки.
Такие дела.

>> No.50171  

>>50170 Вообще, такие решения хоть и легко работают, но всё равно напоминают костыль. Надо будет на досуге поискать способ попроще, совместимый со 99.9%, а не 96% сохранений. Самое ужасное - такой способ не позволяет иметь несколько модов внутри одной метки.

Теоретически, можно попробовать написать фильтр в духе <после реплики с текстом "Было непонятно, обращаются ли они к Юле или ко мне." вставить call на метку "uvao__uvao_selector">. Тогда мод получится намного более легковесным, а главное, можно будет такие вставки навешивать хоть по всей игре...

>> No.50172  

>>50171
Я вот тоже думал, что должен же быть способ реализовать определение ключевой фразы, которая встречается в игре только один раз.

если текст "Нужен бинокль! Или подзорная труба."
джамп юля_гудэнд

Но так как питон вижу 4 день, пришлось искать хоть какие костыли.

Спасибо, сейчас попробую.

>> No.50176  
Файл: 1409950648984.jpg -(254 KB, 661x864, 08bbaa6faf8471c8fb61bca7985dfedf.jpg)
254

Вроде всё.

Goodend_UVAO1.1
http://rghost.ru/57869541

Титры в гудэнде не скипайте :3

>> No.50178  

А можно как-нибудь заменить рамку диалога? Т.е. поставить свою вместо стандартных prologue_time и т.д.?

>> No.50180  

>>50176
Не понимаю, откуда у тебя это навязчивое желание втиснуться в сценарий? Пойми, люди, которые знают, что такое фильтры, уж наверняка прочли всю новеллу, и один хрен просто проскипают до выбора. Так почему бы не сделать просто модом в селекторе? Как многочисленные олисоконцовки.

>> No.50183  

>>50180
В селекторе есть мод, позволяющий скипнуть на 4 день к встрече с юлей в шахте.
Сделал так затем, чтобы читающий освежил в памяти встречу с юлей и все последующие события. Даже при скипе мелькающего текста и картинок будет достаточно.
Ну еще и хотел чтобы мод выглядел как полноценный сюжетный, а не куцый огрызок коннцовки.

>> No.50191  

>>50176
Нет, не всё.
Вот теперь всё, надеюсь.
http://rghost.ru/57875750

>> No.50192  

>>50191
Лол, а историю изменений можно вкратце?

>> No.50193  

>>50192
При запуске через "быстрый переход на рут юли" имя "Юля" отображалось еще до знакомства, вместо "Странная девочка"
В эпилоге в одном из предложений пофикшена несогласованность слов. И немного изменен порядок слов в паре других.

>> No.50205  
Файл: 1410091823231.png -(0 KB, 95x28, 2014-09-07 20-09-54 Скриншот экрана.png)
0

>>50178
Повторю реквест

>> No.50212  

>>50205 Выполняю реквест: http://rghost.ru/57903021

>> No.50238  
>50212 Кто-нибудь пробовал, работает?
>> No.50241  

Такой вопрос у меня. Принялся я переводить одну renpy новеллу на один язык, а программа не показывает символы чисто этого языка: ү,ң,ә... просто квадратики. Поменял формат, язык для программ что-то-что-то с uni - не помогло. Вытаскивал и втаскивал текст с помощью утилиты от Vendor. Что делать?
П.С. Новелла эта Ripples, была переведена на турецкий, родственный этому языку.

>> No.50242  
Файл: 1410378245621.jpg -(61 KB, 300x438, kimagureorangeroad.jpg)
61

>>50241 Если вместо нужных символов отображаются квадратики и игра не падает с ошибкой юникода, значит проблема на 99.9% в том, что нужных символов просто нету в шрифте. Значит нужно подменять соответствующие стили.

Делается это примерно так:

init 999:
$ style.default.font = "Verdana.ttf"

При этом сам шрифтовый TTF-файл нужно положить в папку /game/.

Можно ещё попробовать скачать турецкую версию и покурить diff между ней и оригиналом. Как вариант можно и вовсе патчить сразу турецкую версию и не заморачиваться заумностями кодерскими.

>> No.50248  

>>50242
Спасибо, помог. Только я просто кинул шрифт и ввел перед каждым предложением {font=arial1356.ttf}.

>> No.50249  

>>50248 Ну, тоже вариант, конечно, хотя, какждую строчку так карёжить - это ад перфекциониста. К счастью, годы работы в разработке выбили из меня эту дурь и я просто скажу тебе: "работает? ок".

>> No.50282  

>>50249
Просто у меня никак не хотел распаковываться rpa архив. Мой компьютер не дружит с питонами. А та утилита, которая сделала все за меня, выводит только текст.
%%Full traceback:
File "D:\ripples-tr-win32\renpy\execution.py", line 261, in run
File "D:\ripples-tr-win32\renpy\ast.py", line 632, in execute File "D:\ripples-tr-win32\renpy\python.py", line 977, in py_exec_bytecode File "game/decompile.rpy", line 1565, in <module> File "game/decompile.rpy", line 1534, in _m1_decompile__LB_decompile_all File "game/decompile.rpy", line 1478, in _m1_decompile__LB_decompile_item File "game/decompile.rpy", line 1138, in _m1_decompile__LB_add_string
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 34: ordinal not in range(128)

Ren'Py 6.13.8.1675%%

>> No.50293  

>>47651
Есть фильтры изображений. У меня потребовалось выполнить такую штуку6
Нужны черно-белые фоны и спрайты.
Варианты реализации которые я пока вижу с дивана6

  1. Ручной пердолинг в редакторе + пункт 2
  2. Добавить имаг и объявить его через одну из функций. Почти аналогично ручному пердолингу.
  3. Использовать йоба-магию уже реализованных фильтров? Но как, когда мне не нужно на весь сценарий делать изображения и/или(что очень важно) спрайты черно-белыми.

Мои двощерские мозги пока кроме пердомагии ничего не придумали. Есть какие еще другие варианты7

>> No.50296  

Бесконечный Пердолинг ИТТ продолжается.

/код-из-моего-говна
scene bg ext_island_day
with GenericWhiteout(0.5,0.0,5.0)

/код из катавы
scene ev other_iwanako_start
with GenericWhiteout(0.5,0.0,5.0)

/объявление-из-моего-говна
def GenericWhiteout(rise,hold,fall):

    return transition_attach_sound(Fade(rise, hold, fall, color="#FFF"), "sfx/whiteout.ogg")

/объявление из ничем не примечательного катавного с адресами в стиле д/гамес/ файла который хер найдешь из пачки скриптов
def GenericWhiteout(rise,hold,fall):

    return transition_attach_sound(Fade(rise, hold, fall, color="#FFF"), "sfx/whiteout.ogg")

/ожидание
белый транзишен со звуком

/реальность
File "game/anon/line1.rpy", line 13: expected statement.

def GenericWhiteout(rise,hold,fall):

И че ему надо объявить - фиг его знает.

>> No.50323  

>>47651
Кажется я понял в чем проблема.
Во время прогонки сценария с новыми паинтмждскиллзцэгэ как оно вообще бы смотрелось с текстом, даже в своем довольно свободном и не перегруженном оформлении кода как всегда проебал hide cg.
/условия задачи
йобацг1 1920х1080
йобацг2 1920х(1358!)
все объявлены через порвавшийся imscale.

/код
сцене йобацг1

сцене йобацэгэ2

/реальность
ПЕРВОЕ цг отобразилось НОРМАЛЬНО, а второе, внимание, некорректно отобразилось по высоте. Если не скрыть предыдущее оно не обновляется.

Хз думаю что по этой причине imScale и порвался.

Теперь вопросик - как сделать так чтобы при команде scene оно регенерировалось со своей магией логических пикселов заново7 Это ж сделает пердолинг чуток но поменьше.

>> No.50324  

>>50323
>>49933
Перепутал.

>> No.50328  

>>50296

>File "game/anon/line1.rpy", line 13: expected statement.
>def GenericWhiteout(rise,hold,fall):
>И че ему надо объявить - фиг его знает.

Заведи, пожалуйста, привычку выкладывать неработающий код в виде файла на rghost или ещё куда-нибудь. Можно в виде минимального теста, если не хочешь спойлерить свой сценарий раньше времени.

Судя по тексту "expected statement", вероятно, def-выражение встретилось в label-блоке, а не в init-блоке.

>> No.50329  

>>50323 Пожалуйста, сделай микромод из двух cg-файлов и rpy-файла в десяток строчек, демонстрирующий проблему. По твоему описанию всё равно должно всё работать, т.к. scene автоматически вызывает hide для всех отрисованных слоёв. Скорее всего дело не в scene, а в чём-то ещё.

>> No.50347  
Файл: 1410986987557.jpg -(82 KB, 500x650, tumblr_m5j6xpZ3Tz1qmzis8o6_r1_500.jpg)
82

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

>> No.50348  

>>50347 Проще всего скачать частями:

>> No.50355  
Файл: 1411029211058.png -(529 KB, 560x800, witchs garden hinomiya ayari fumio.png)
529

>>50348 Спасибо тебе большое добрый человек! Держи няшку ^^

>> No.50366  

Анон, пособи, пожалуйста! Расскажи, как внутри выполняемого кода можно присобачить снятие скриншота, привязанное к определённому ивенту? Например, для работы фотоаппарата.

>> No.50367  

>>50366
А чем тебе обычные или persistent переменные не угодили?
в момент фотографирования происходит запоминание переменной.
И в нужном месте при статусе True будет открыто нужное изображение.

>> No.50368  

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

>> No.50369  

>>50368
Нет, я тебя не понял. Причём тут тогда игра?
Ты хочешь заставить игроков постоянно вычищать харды от ненужных им скриншотов после игры в твою поделку?

>> No.50370  

>>50366>>50368
Ладно, забудем сам смысл подобного для ВН.
Но все же очень просто, ренпай делает по дефолту скрины при сохранении и сохраняет их в виде превьющек в меню "Загрузка".
Почему не подсмотреть оттуда нужную команду?

                add FileScreenshot(i)
                $ file_name = FileSlotName(i, columns * rows)
$ file_time = FileTime(i, empty=_("Empty Slot."))
$ save_name = FileSaveName(i)
>> No.50371  

>>50366
http://www.renpy.org/doc/html/other.html#renpy.screenshot подойдёт?

>> No.50372  
Файл: 1411122722473.jpg -(52 KB, 793x533, this shit.jpg)
52

Отвлеченное обновление Саманта-мода: http://rghost.ru/58094002
Или даже самостоятельный мод. Искать в DLC. Последний день основного сюжета тоже когда-нибудь выложу, или хотя бы часть. Половина написана.
>>49507

>Надеюсь, оставишь это какой-нибудь секретной концовкой или вроде того?

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

>И да, в модпаке language_selector лежит не в /game, а в /game/tools_lb.rpy

В последнем модпаке он таки в game, так что пока там и оставил.

>> No.50421  
Файл: 1411304485493.gif -(1 KB, 63x18, загруженное (1).gif)
1

Нас некровайпнули.
Приём.

>> No.50505  

Кто сможет ответить новичку на пару технических вопросов ?
Хочу на примере БЛ понять как работает RenPy.

1) Сколько всего разрешений у окна в БЛ и какие они ?
(Я насчитал 2. Это 1360x768 - "режим окна" и 1920x1080 - "режим фуллскрина". Это для всех так или только для меня ? По моему должны быть ещё какие-то специальные разрешения для мобильников, наверное)

2) РенПи вообще не предполагает изменения размера окна игры путём "растягивания за край окошка" или нажатие кнопки "развернуть" и почему все визуальные новеллы, которые я видел этого не умеют ? Неужели так сложно или я чего-то не понимаю ?

3) К каждому разрешению окна игры нужны свои собственные обои и спрайты ?
(То есть если разрешение 1360x768, то нужны обои с тем же размером, а если 1080, то тогда - 1080. То есть правильно я понимаю что должны быть две папки, в одной обои и спрайты одного размера, а в другой другого ? И в зависимости от выставленного в настройках размера окна скрипт берёт те картинки которые ему нужны. Почему программисты движка не могли сделать так чтобы был только один вариант фона максимального разера и при необходимости он просто уменьшался или увеличивался, как в любой программе для просмотра изображений ?)

>> No.50506  

>>50505

Поправка.
Только что распаковал. Разрешение оказалось одно - 1080. ЯсноПонятно.

>> No.50514  

Помогите разобраться как сделана быстрая подстановка имен
$ meet('dv',"Алиса") например
Как реализуется $ meet ?

>> No.50519  

>>50514 Найди def meet где-нибудь в коде оригинальных скриптов эроге.

>> No.50523  

>>50519

>Найди def meet где-нибудь в коде оригинальных скриптов эроге.

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

>> No.50524  

>>50523

>Пробовал найти и раньше, не получается..

Это чем надо искать?

def meet(who, name):
set_name(who,name)
def set_name(who,name):
gl = globals()
gl[who+"_name"] = name

И вообще, вторая половина media.rpy.

>> No.50525  
Файл: 1411749493247.png -(58 KB, 800x800, nomeet.png)
58

>>50524
В media.rpy из everlasting_summer-1.1-all
Editra не находит meet

А на код из >>50524 Ренпай пишет:

File "game/script.rpy", line 9: expected statement.

def meet(who, name):
^

File "game/script.rpy", line 11: expected statement.

def set_name(who,name):

Что я делаю не так?

>> No.50526  

>>50525
Во-первых, зачем-то обрезаешь снимок экрана, и теперь не ясно, сколько у тебя вообще строчек в файле, и не коррапчен ли он.
Во-вторых, не последовал совету прочитать вторую половину этого файла.
В-третьих, за каким-то чортом вставляешь этот код в скрипт. Зачем?

>> No.50527  

>>50526
>>50526
Первое - 825 строк 19,1 кБ (19 146 байт) http://my-files.ru/Download/6b5y18/media.rpy.txt

Второе -

> вторая половина media.rpy.

Что именно? Я пионер в ренпае, вот и записался в Кружок кибернетики..

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

>> No.50528  

>>50527
Ты чем файл расковыривал? Там половины нужной информации улетела в #TODO!

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

Да, но... Ты игру с нуля пишешь, или мод на "Бесконечное лето"? Если второе, то реализация тебе не нужна. Если первое, то тебе нужен не только meet(), но ещё порядком строк кода в довесок. И то, часть из них может и не потребоваться, зависит от того, чего именно ты хочешь.

>> No.50529  

>>50528
# RenPy code decompiler 1.0
# Copyleft by lolbot, member of IIchan.ru eroge project.
Но наверное есть более правильный способ?
Да, моды на "Бесконечное лето" отлично пишутся и без этого.
Но, хочется написать отдельную новеллу, используя привычный уже функционал.
$ meet позволяет не запутаться в персонажах и развилках рута.

>> No.50530  

>>50529
У тебя о~чень старая версия, ныне в ходу 1.3. Переразбери игру, а затем читаешь строки с 498 по 622, там всё есть.

>> No.50565  

Допиленный мод по фанфику Восьмой день недели.

https://yadi.sk/d/nnc0wIMObgdcR
http://rghost.ru/58222164

>> No.50620  

Чуваки, запилен мод с графоном: https://yadi.sk/d/rCCAhINkbk6rF

>> No.50624  

>>50620 Название файла напомнило шутку про Циклы Судзумии Харухи.

>> No.50635  

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

Нечто подобное есть в моде lolbota с гитарой, но меня интересует возможность ткнуть на спрайт/место на экране для продвижения дальше.

Гуру ренпай, просветите, пожалуйста, как сие возможно проделать?

>> No.50636  

Кибернетики, нового студента возьмёте?

Задание к первому уроку: http://rghost.ru/58309651

>> No.50639  

>>50635
Если вкратце, то есть два способа, пацанский и для девочек тех, кто не любит возиться с низкоуровневым питоном.

  • первый вариант - это использование ui-функций напрямую (как в IIcharacter, гитарной и карточной миниигре или lolifoxing):

    • $ ui.imagebutton("notactive.png","mouseover.png",xpos=500,ypos=400,clicked=ui.returns(42)) # отрисовать кнопку из какой-то картинки, при наведении на её прямоугольную зону будет показываться другая картинка, при клике в прямоугольную зону произойдёт возврат значения из ui.interact(), xpos/ypos отвечают за смещение левого верхнего угла кнопки
    • несколько кнопок - несколько ui.imagebutton'ов
    • $ result = ui.interact() # последняя строчка после всех кнопок, запишет в переменную result то, что прописано в ui.returns(...), чтобы впоследствие можно было понять, которая из кнопок была нажата. Если кнопка ровно одна, то можно писать просто $ ui.interact(). Все кнопки при этом скрываются, и если нужно отрисовать их все или некоторые заново, нужно снова звать ui.imagebutton(...)
  • второй вариант - screen language. Про него рассказывать не буду, т.к. не люблю его, да и не нужен он, если цель - отрисовать всего лишь одну-две кнопки. К тому же, на низком уровне он всё равно распадается на набор ui-функций, так что дополнительной мощи он не даёт, только синтаксический сахар.

>>50636 Знал бы я, что будут ещё студенты, обновил бы первый урок...

>> No.50640  

>>50636 Молодец! Концовка творческого задания - лолЪ! Я уж было по атмосфере приготовился к ядерному реактору и клонам Аянами Рэй.

>> No.50641  

>>50639
А нельзя просто использовать готовый GUI point&click который есть на lemmasoft? Зачем свой велосипед изобретать...

>> No.50642  

>>50641 Тут всё уже от размера задачи зависит.

Если нужно показать в паре мест пару кликабельных элементов - то проще всего в две строчки $ui-вызовов накидать.

Если нужно показывать кнопки часто, то либо писать свою обвязку (мне так проще, да и полный контроль над происходящим есть), либо использовать готовые в виде того же screen language.

С point&click не знаком, но из названия следует, что он умеет несколько больше. Если задача - просто выводить кликабельные кнопки в паре мест - возможно это будет забиванием гвозде микроскопом, который надо ещё и скачать и изучить.

>> No.50643  

Спасибо :) Думаю, реактор если и есть, то где-нибудь в другом месте. <s>Под библиотекой</s>

>> No.50644  

Хм, что-то ссылка на отвечаемое сообщение не проставилась...

>> No.50656  

>>50639
Добра тебе, анон! Пашет как по нотам.

>> No.50689  

Студент девятый задание к уроку второму закончил!
http://rghost.ru/58354373

>> No.50690  

>>50689

Ай, только отправил - и несколько опечаток нашёл. Перезалил.
http://rghost.ru/58355120

>> No.50704  

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

>> No.50705  

>>50704
Можно, сейчас не вспомню правда, надо в мануалы лезть.

>> No.50779  
Файл: 1413272220118.jpg -(126 KB, 954x1077, sam_menusq.jpg)
126

Половинка шестого дня Саманта-мода: http://rghost.ru/58513528

>> No.50782  

Самое время собраться с духом и попробовать свои силы! Дерзайте!

http://anivisual.net/index/0-14

http://www.youtube.com/watch?v=zxHIw-orvqk

>> No.50783  

>>50782

>полностью своя графика

Фейл здесь

>> No.50784  

>>50782
Юмористы. За какой-то короткий срок делать новеллу, ради чего? Я еще понимаю NanoReno, там хоть короткие надо делать. А тут тебе целую новеллу, ага щас!

>> No.50786  

>>50784

>NanoReno

Словно здесь они будут особо длиннее.
Половина начавших так и не кончит, инфа 100% еще треть яно переборщит с размером и будет запиливать в спешке. Результат, я думаю, очевиден. Дерзай Сэйбер.

>> No.50787  

>>50786
Ты говоришь "Дерзай Сэйбер" так, словно /vn/ - доска по запилу собственной визуальной новеллы, а "Сейбер" - не обращение.

>> No.50788  

>>50787

>/vn/ - доска по запилу собственной визуальной новеллы

Ну этих товарищей здесь в наши дни хватает.

>а "Сейбер" - не обращение.

Да, запятую забыл, признаю. Я заметил сразу после того как запостил, но фиксить было лень. Думал никто не заметит.

>> No.50789  

>>50788

>Ну этих товарищей здесь в наши дни хватает.

Сомневаюсь, что здесь есть алчущие пилить на конкурсы. В основном исполняют собственные хотелки.

>Думал никто не заметит

Это не единственная ошибка в том посте. В этом их тоже порядком.

>> No.50790  
>Сомневаюсь, что здесь есть алчущие пилить на конкурсы.

Может и так. Хотя вдруг кто на 2к купится.

>Это не единственная ошибка в том посте. В этом их тоже порядком.

Да, да, конечно. Мне просто не нравится сочетание % и запятой. Все остальное проглядел, устал уже. %%А вообще зачем я оправдываюсь. Как хачю так и пешу. Нифшколи же лол. %%

>> No.50791  

>>50790
Совсем я уже. Даже в разметку не могу.

>> No.50793  
Файл: 1413401136474.jpg -(146 KB, 450x616, e960ac8d3bac9d0a41bf610522187d68.jpg)
146

>>50791
:3

>> No.50955  

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

label poorstudent_un_mi:

scene bg int_house_of_un_day
show un normal pioneer
if been_there <= 1:
un "Ты пришёл сюда в первый раз."
jump poorstudent_map
if been_there >= 2:
un "Ты пришёл сюда во второй раз."
jump poorstudent_map

Так вот когда бы я ни пришёл, всё равно срабатывает эвент для второго посещения. Сделал маленький тестовый сценарий с картой и всего двумя зонами - и в каком бы порядке я ни щёлкал, "ты пришёл во второй раз", и всё тут. Я как-то не так условие оформлляю?

http://rghost.ru/58651419

>> No.50956  

>>50955 ЛОЛ, зачётная ошибка. Дело в том, что been_there - это функция, а не переменная. При этом python в отличие от Паскаля, H и некоторых других языков всё-таки требует всегда писать () для вызова функции. При этом из CPython торчат некоторые уши от С, в частности то, что указатель на функцию можно превратить в число и оно будет указывать на смещение в памяти. При этом указатель явно будет больше 2, поэтому been_there всегда > 2.

А тебе нужно всего лишь писать been_there().

>> No.50957  

>>50956
Спасибо, поменяю.

> ЛОЛ, зачётная ошибка

Что ж поделать :) Сам не сообразил, а нагуглить пример смог только один, в каком-то старом треде
http://iichan.hk/vn/res/36338.html#36651
Каковой я честно и воспроизвёл.

>> No.50958  

>>50957
Тьхуй. Не та ссылка. Невнимательность - мой бич.
http://iichan.hk/vn/res/36338.html#36561

>> No.50959  

>>50958
Да чего ж такое. Короче, там тоже без скобочек было, а я и не сообразил, что это автор опечатался.

>> No.50960  

Кстати, у меня ещё странный какой-то глюк. Файла с сообщением об ошибке сейчас под рукой нет, но суть такова: делаю задание 3.1, и при первом переходе к метке с картой всё вылетает, ругаясь на строчку
$ set_zone("dv_us_house","student_lesson3_task1_dv_us")
...при этом такое происходит только на чистой сборке без модпака. Когда я запускаю это же на сборке с модпаком, всё работает. Это задание как-то использует его ресурсы, или скорее это я чего-то там нахимичил?

>> No.50961  

>>50957 Удивительно, что никто эту ошибку раньше не встретил, за столько-то времени. Надо будет проверить код остальных модов, раз такие дела.

>>50960 Не видя текста ошибки, наверняка о проблеме судить сложно. Предположу, что в порыве ололо-оптимизаций, проклятые мудаки выпилили некоторые зоны из эроге 1.1, а какой-то из файлов в extra_resources возвращает их обратно. Поищи по ним строку dv_us_house.

>> No.51136  

>>50779
Апдейт с новыми спрайтами http://rghost.ru/58821162
Картинки не желают прикрепляться http://a.pomf.se/tdekwb.png

>> No.51137  
Файл: 1414825757625.jpg -(142 KB, 700x990, 6341878.jpg)
142

>>50782
Смотрите, это очень похоже на автора Первого правила. Сейчас спросил в его треде в /б.
http://anivisual.net/forum/16-134-1

>> No.51138  

>>51137
Ага, конкурс на удивление активный четыре десятка участников (все кто вообще ВН пилит), в том числе и уже известные команды уже имеющие за плечами годные работы с высоким уровнем исполнения.
Только бордовские ВНделы проигнорили его: Львички, Кона, Инт - не участвуют.

>> No.51139  

>>51138
Формально, Пони тоже из этих. Странно, тред в бе удалили, пришлось лезть в нехорошие места.
http://rghost.ru/58117427
http://rghost.ru/58113519

>> No.51141  

>>51139 Лолботуэ ещё делал http://cf.ichan.ru/games/vn/SpeedAddict/www/ и http://cf.ichan.ru/games/vn/SpeedAddictEXTRA/www/

>> No.51143  

Они убили ссылку!
katawa_mods_20140715.zip
У кого-нибудь есть katawa_mod_selection ?

>> No.51377  

Доброй ночи, анон.
Я пилю свою вн. ©
И я прошу помощи вот с таким вопросом.
В Ren'Py есть такая вещь, как Move Transition, ядунно, как это перевести.
Есть почти пригодный для использования мной ease, но он полсекунды.
Как его растянуть?
Курение гайдов ничего не дало, я не понимаю.
Спасибо.

>> No.51378  

>>51377 А что и куда ты хочешь двигать. Покажи пример кода, который длится полсекунды.

Вообще, grep по исходникам renpy находит такое в 000definitions.rpy:

> define.move_transitions("ease", 0.5, _ease_time_warp, _ease_in_time_warp, _ease_out_time_warp)

Возможно, твою проблему можно решить, добавив куда-нибудь к себе в скрипт вот это:

>init python:
> define.move_transitions("my_awesome_custom_ease_for_my_cool_vn", 2.0, _ease_time_warp, _ease_in_time_warp, _ease_out_time_warp)
>> No.51379  

>>51377
А просто после ease поставить желаемое время в секундах не работает?

>> No.51395  

Помогите криворукому, хочется сделать мод к БЛ, а как не знаю. Наткнулся в гугле на эту ссылку, у вас вроде хорошие и понятные уроки. Но вот проблема - кинул debug.rpy в папку
(предварительно создав) game\debug все скомпилировалось (о чем, судя по всему, свидетельствует появившийся файл debug.rpyc) но при нажатии на логотип Soviet Games никакого меню нет и в помине!

P.S.
Я на iichan ни разу не был, так что если какие-то негласные правила нарушил гнев в свой адрес приму - главное помогите!

Кстати, у вас тут вроде неплохо. Я так понимаю, это какой-то анонимный форум?

>> No.51397  

>>51395 Блин, надо будет всё-таки переписать первые уроки... Дело в том, что первые 3 урока писались для Ычан Эроге 1.0, а у тебя Ычан Эроге 1.1 скорее всего.

Попробуй так:

  1. подложи в папку с игрой файлы мод-пака из >>50348 (кажется, это крайний на текущий момент мод-пак)
  2. запусти игру и начни новую
  3. если увидишь новое меню с десятками новых сценариев - всё работает
  4. чтобы зарегистрировать в этом списке свой сценарий, см. урок номер 4 (четыре), слайд 19 или просто делай по аналогии со всеми остальными файлами в мод-паке

Если что-то не получается, не стесняйся задавать вопросы.

>Я на iichan ни разу не был, так что если какие-то негласные правила нарушил гнев в свой адрес приму - главное помогите!

Всё в порядке, это ты нас извиняй, что уроки не были переписаны с выходом эроге 1.1.

>Я так понимаю, это какой-то анонимный форум?

Да. Даже каптча si со мной согласна.

>> No.51401  

>>51397 Ура, спасибо, заработало!

А куда свой код вписывать?

>> No.51405  

Подхватываются все файлы внутри папки game, оканчивающиеся на *.rpy (на самом деле процесс чуть сложнее, но пока это не важно). Если ты пишешь что-то большое или много-много маленького, то создай в папке game папку scenario_my_awesome_supermod или scenario_nickname_of_cool_author и складывай туда rpy-файлы. Если нет, можешь поселиться внутри scenario_students или ещё какой-нибудь папки. Просто создай там пустой файл, регистрируй в нём новую точку входа (label) и наполняй его чем пожелаешь.

>> No.51407  

>>51405
Спасибо, вы открыли для меня дорогу в моддинг)

>> No.51410  

>>51407 Пиши, если будут какие-то вопросы. И не забывай подглядывать в чужой код, если захочешь сделать что-то как в другом моде. Экспериментируй, пробуй, и да пребудет с тобой сила.

>> No.51412  

Уже экспериментирую)

Скину что накарябал: http://rghost.ru/59141306

На растерзание общественности.

>> No.51418  

Анонимус, просвети, пожалуйста, о механизме работы персистент.эндингов!

Пытался внедрить собственные переменные, но не преуспел. А задача следующая:

  1. К одной из концовок привязать персистент (sl_good_1, например)
  2. При последующем прохождениях кое-где будет проводиться проверка, и если sl_good_1 активен, тогда происходит какое-то событие.
>> No.51419  

>>51412
"hide dv smile pioneer at center" - всё, что после dv, писать необязательно. Просто пишешь hide dv, или кого угодно другого, и он убирает соответствующий спрайт, где бы и с какой эмоцией бы он ни был. Можно еще, если это зачем-нибудь понадобиться, скрыть фон, просто написав hide bg или hide cg, не выписывая полное имя.
Кстати, hide тоже может иметь смысл для красоты делать with dspr или dissolve

>> No.51423  

>>51418 Так и есть:

label good_sl_1:
"Ла-ла-ла"
$ persistent.sl_good_1 = True
return
label somewhere_else:
"Жу-жу-жу"
if persistent.sl_good_1:
"Какие-то новые события"

или

    if  persistent.sl_good_1:
jump some_other_label

или даже так

    menu:
"Вопрос"
"Ответ 1":
jump regular_scene1
"Ответ 2":
jump regular_scene2
"Ответ 3" if persistent.sl_good_1:
jump secret_root
>> No.51449  
Файл: 1416432199596.png -(60 KB, 892x348, Снимок экрана 2014-11-20 в 3.22.56.png)
60

Подскажите плиз почему на Маке не запускается Ren'Py и всё что на нём сделано (Бесконечное лето, Unteralterbach), пишет вот что.

>> No.51450  

>>51449 А мак у тебя на PowerPС или на x86? Если первое, то и не должно работать, потому что не портировали. Если второе, то хммм...... Ты точно запускаешь правильный файл? Может там sh-скрипт нужно запустить или что-то ещё?

У тебя как с sh-программированием, кстати?

Судя по тому, что я понял из скрипта, тебе нужно запустить:

"./lib/darwin-x86_64/Everlasting Summer" -E0 "./Everlasting Summer.py"

в папке "/Volumes/Downloads/Software/everlasting_summer-1.1-all"

>> No.51451  

>>51450 UPD: Под PowerPC есть старая версия рен-пи и если у тебя именно PowerPC, то напиши об этом с соответствующими пруфами и я подумаю, получится ли тебе помочь.

>> No.51452  

>>51451
У меня Intel. Не знаю sh, и не понял что значит строчка:

"./lib/darwin-x86_64/Everlasting Summer" -E0 "./Everlasting Summer.py"

>> No.51453  
Файл: 1416443291577.png -(109 KB, 890x394, Снимок экрана 2014-11-20 в 6.27.27.png)
109

>>51451
Вот вывод команды.

>> No.51454  

>>51453 Тьфу, там не -E0, а -EO (минус-большаялатинскаябукваЕ-большаялатинскаябукваО)

Извини.

>> No.51455  
Файл: 1416453848088.png -(45 KB, 889x158, Снимок экрана 2014-11-20 в 9.19.54.png)
45

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

>Извини.

Ты так эротично это написал.

>> No.51459  

>>51455 Сделай uname -a в терминале на всякий случай. И скажи версию MacOS. Что-то всё слишком странно.

На всякий случай попробуй скачать и запустить несколько версий рен-пи:
http://www.renpy.org/dl/6.7.1/renpy-6.7.1-sdk.zip (совсем старая)
http://www.renpy.org/dl/6.10.2/renpy-6.10.2-sdk.zip (от Катавы)
http://www.renpy.org/dl/6.14.1/renpy-6.14.1-sdk.zip
http://www.renpy.org/dl/6.18.3/renpy-6.18.3-sdk.zip (самая новая)
Сообщи, запустится ли хоть какая-то из них?

>> No.51464  
Файл: 1416491111064.png -(25 KB, 884x252, Снимок экрана 2014-11-20 в 19.43.39.png)
25

>>51459
6.14.1 запустилась! Как перенести сей успех на эроге?

>> No.51480  

>>51464 Я могу предложить такой алгоритм:

  1. Скачивай из папки /dl/ на сервере рен-пи разные сборки половинные делением, пока не найдёшь, на какой именно перестало работать. Если работает 6.14.1 и не работает 6.18.3 - проверь 6.16.0 Если она не работает - проверь 6.15.0, если работает - 6.17.0. Процесс сходится за несколько попыток. Пожалуйста, сделай это и отпишись, какая самая новая сборка работает, а какая самая ранняя сборка - нет.
  2. Временно переименуй папку libs/darwin-x86-64 от Ычан Эроге во что-нибудь другой.
  3. Возьми libs/darwin-... от самой новой сборки renpy, которая у тебя работает (кстати, она у крайней работающей сборки называется также, x86-64, может у тебя вообще 32-битный мак?!)
  4. Попробуй запустить. Может быть поможет.
>> No.51513  
Файл: 1416566147149.png -(253 KB, 640x480, 6bf7141f4628609199d73609ee9fe97f5308e4b5.png)
253

>>51464 Вообще, я смотрю, между 6.14ой и 6.16ой что-то как-то сильно всё переколбасилось в папке lib. Мне не очевидно, как из этого сделать жизнеспособного гибрида, тем более действуя удалённо, потому что у меня-то винда и там всё работает.

Боюсь, если не сработает описанный выше способ, то лучше всего отписаться на форуме http://lemmasoft.renai.us/forums/viewforum.php?f=32 с проложенной информацией о версии макоси, uname, версией рен-пи, которая работала, версией ренпи, начиная с которой не работает и симптомами ошибки.

>> No.51537  

А как добавить в БЛ свою концовку? Где там обьявляются переменные с кол-вом лавпоинтов?

>> No.51538  

>>51537 Оп, сам нашел, в screens.rpy
Остается вопрос: как добавить в список концовок свою? С возможностью переиграть концовку/рут.

>> No.51541  

>>51538 Грубо говоря никак, потому что 99% модов представляют из себя разрозненные сценарии, не модифицирующие основной игры (этим занимаются не моды, а фильтры).

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

>> No.51545  
Файл: 1416641779598.jpg -(149 KB, 840x968, 1251325947154.jpg)
149

Для тех, кто девочка-морская_свинка внутри.
https://yadi.sk/d/s3Nb6rzEcrtKp - модпак под 1.1. Была сделана попытка хоть какой-то организации, так что лучше ставить на чистую версию.
http://rghost.ru/59195853 - багфикс на новый модпак.
http://rghost.ru/59195868 - набор из 3 файлов для портирования модпака на 1.2. Адекватная работа с английским языком не гарантируется. Модпак идёт в /game/mods/. При первом запуске переносчик ругнётся, это нормально, перезапустите игру.
Что-нибудь более стабильное будет в ближайшее время.
По апдейтам, вкратце:
7 дней лета, Самантамод, новый 8 день, Дни с Леной, Двое в автобусе, To go beyond, Ульяномод. Орикофильтры (3 штуки, пока не умеют добавлять новые файлы в оригинальный сценарий), значок УМЛ у вожатой. Вроде всё.
Приятного дебага.

>> No.51555  

>>51545

Спасибо за труды!

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

>> No.51557  

>>51555
По-хорошему, все изображения должны быть в images. Я просто не трогаю тех, кто обновляется чаще, чем модпак.
Лучше, конечно, дублировать: весит не много, а вот модпак у кого может быть старый, или ещё что. С другой стороны, если поставлять ещё и файлы объявления ресурсов другого мода, то, теоретически, может возникнуть конфликт версий, но это маловероятно.

>> No.51558  

>>51545
На вики какой-то неправильный модпак, по-моему.

>> No.51559  

>>51558
Я к той викии не имею никакого отношения (по правде, я и на eroge-dopil уже и не хожу за ненадобностью). На соседнем ресурсе собрали модпак ещё вчера, вот его и повесили. Структура и наполнение разнится. Впрочем, не вижу ничего плохого в разнообразии. Только я продолжу, скорее всего, реорганизацию файлов, и модпаки между собой будут несовместимы.
Беда будет, если у нас в итоге окажутся разные версии под 1.2. В том смысле, что будут разнится пути и правки.
Конвертер, кстати, для той версии работать не будет, но это можно исправить.

>> No.51570  

>>51559
Собиратор неправославного модпака здесь. Готов помочь с переделкой под 1.2(и спасибо за включение "To go beyond" в модпак).

>> No.51575  

>>51570
Мне нужен тестинг, пока что. Я точно знаю, что всё запускается, но не уверен, что работает правильно. Самантамод говорил, например, что у него съехало двойное объявление позиции, например, и не объявлен pi. А, ну и ещё можно выкинуть для версии 1.2 из модпака ресурсы новой концовки Алисы, раз они уже есть. Составить новый листинг ресурсов, и вставить недостающее: сами файлы, вроде, на месте, но теперь все цг и бг у нас .jpg, например. Может спрайты ещё какие выкинули. И ext_lbrary_night вернули в стандартный набор.
Из более интересных проблем: надо поправить текстовые фильтры так, чтобы они работали с системой языков, но мы уже занимаемся над этим.
А, ещё было бы неплохо подключить систему языков в модах, как в катавоселектое. Ещё в модах имена должны выставляться в соответствии с выбранным языком.
Это примерный листинг того, что, по идее, должно пойти не так, и будет исправлено в ближайшее время. Что ещё может всплыть - я без понятия.

>> No.51578  

>>51575
С системой языков уже разобрался, как работает, а касательно всего остального - надо копаться и копаться. Вчера пытался поставить модпак от 22го числа со скриптом совместимости - все равно ругается на систему имен(в Ленамоде точно) и на config.session в Алисамоде(уже пофикшено).

>> No.51579  

>>51578
В версии из >>51545 нет config.session в Алисомоде. Вы точно его ставили на чистую сборку?
Ну и без лога ошибки мне сложно судить, потому что во всех трёх Ленамодах УМВР.

>> No.51583  

>>51579
Точно-точно. Я тут с одним человечком поговорил... Может, попробовать скопипастить систему имен из 1.1 в модпак? Только исправить конечно, чтоб не конфликтовало.
[spoiler]Кодер я не ахти, но по мере возможностей стараюсь что-то делать и подучивать.[/spoiler]

>> No.51584  

>>51583 Совсем скопировать не получится, потому что в 1.2 переменные типа sl уже заняты заняты под вполне константных персонажей, имена которых переводятся, а в 1.1 - моя старая система динамических имён, юзающая абсолютно те же самые переменные, написанная ещё в 2008 году из-за того, что в игре планировался фрагмент вроде вот такого:

$ meet('cs',u'Доктор')
cs "Меня зовут Виола, но ты можешь называть меня просто Доктор."
menu:
"Как будем обращаться?"
"Доктор":
$ meet('cs',u'Доктор')
...
"Виола":
$ meet('cs',u'Виола')
...

Когда ЫЭ стало БЛ, этого куска кода никто толком уже и не помнил, а meet() стали использоваться в основном с целью переименовывания Незнакомок в конкретные имена.

Вообще, если бы студия Soviet Games меня спросила, я бы рассказал, как к старой системе прикрутить локализацию, но раз уж студия Soviet Games от неё в 1.2 избавилась, то будем думать как жить с тем, что имеем.

>> No.51585  

>>51584
Разве это серьёзная проблема? При старте сценария имена всё равно сбрасвваются, а при загрузке — восстанавливаются из сохранений. Есть ли разница, что мы с ними делаем в модификациях?

>> No.51597  

>>51585 Вообще ты прав, проблема надуманная. С другой стороны как-то неприятно, если код игры и код модов будут использовать разные переменнные.

>> No.51599  

>>51597
Тут тогда или внедрять свою версию переводчика, или отказываться от поддержки 1.2. Благо, на фоне отключения в ней хентая из коробки (судя по комментариям, это просто убрали в никогда не выполняющееся в стандартной игре условие), это более чем оправданно.
А то ещё поставит какая пуританская вдова модпак, а там спрайты Ульянки голенькие (без одежды). И пошло-поехало (да-да, когда я последний раз разархивировал ресурсы 1.2, там такое было).

>> No.51640  
Файл: 1417008946552.png -(158 KB, 1366x768, 2014-11-27 20-34-46 Скриншот экрана.png)
158

>>51599
А голая Ульяна так и не была вырезана.

>> No.51682  

>>51640
Алёжа, делом займись уже. Вместо того, чтобы в билдах сиськи Ульяны искать, пиши уже свой "шанс". Народ требуэ новой демки.

>> No.51683  

Сап, анон! Занимаюсь возвращением АБЦБ-карты, возник небольшой затык - не могу найти, где и как определяются активные места на карте. То бишь, методом научного тыка удалось определить, например, что домики Алисы и Лены ещё как-то можно добавить на карту, но, например, склада там просто нет.

Вопрос: где можно наковырять этот момент или каким образом можно задать новую активную локацию на карте?

>> No.51687  
Файл: 1417077801441.jpg -(42 KB, 1280x720, clopclop.jpg)
42

Не думаю, что это самый подходящий тред для этого. Но раз здесь упомянули игру, то думаю никто особо против не будет. Отдельный тред всё-равно смысла нет создавать. Можете задавать итт свои ответы о том, как мы докатились до жизни такой.
http://anivisual.net/forum/16-134-3#3007
c:deothe

>> No.51809  

>>51683>>51683 Возьми из мод-пака extra_map.rpy. В нём всё есть. Извини за запоздалый ответ.

>> No.51816  

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

>> No.51819  

>>51816 Представитель "студии Soviet Games" уверенно считал, что по-другому оно не работает. Мне так и не удалось воспроизвести каких-либо проблем с загрузками, сохранениями, перемотками и т.д. с использованием обычной не-persistent переменной, но поскольку я в какой-то момент отошёл от непосредственно разработки и только консультировал, то на месте моего кода образовался вот этот.

>> No.51821  
Файл: 1417348528910.jpg -(537 KB, 1920x1080, fXWhOD7HIZ4.jpg)
537

>>51682
Мне вот не кажется, что оно хоть кому-то надо, поэтому работа пока заморожена.
Вместо Шанса пикрелейтед.

>> No.51822  

>>51821 Морозно и круто, только вот меню на пару процентов от площади экрана - это смелое решение.

Каптча "уныл", лол.

>> No.51823  

>>51822
Это пока что черновой скрин. Меню уже изменено под юзабилити.

>> No.51824  
Файл: 1417350480456.jpg -(72 KB, 675x1080, VY8SDne5fTI.jpg)
72

>>51821
С фонцами проблема, придётся юзать фотографии. Как и со спрайтами - скорее всего, будут оригинальные, из "Лета" большинство. С иллюстрациями сложно, но вроде как будут.

>> No.51894  
Файл: 1417601754784.png -(18 KB, 157x110, Everlasting Summer 2014-12-04 16-44-56-9(...).png)
18

>>51545
Я тут с помощью последних фиксов Риты подогнал чуть-чуть модпак под 1.2, но имена некоторые(me - точно, mt и mi - работают как надо) отображаются криво(пикрелейтед), надо допилить. Сам не могу, времени всё нет.
Сам модпак - https://yadi.sk/d/TtgkZXP6d7tUm
Что сделал:
заменил lb_lang.rpy на новый
удалил новый гудэнд алисы, чтоб со стимом не конфликтовал
исправил свой же косяк в "Выйти за рамки"($ reload_names в блоке init было)

>> No.51896  
Файл: 1417609871371.jpg -(529 KB, 1280x720, kururu.jpg)
529

>>51687
https://yadi.sk/d/A0n8bQAZd827d Мы того, закончили игровое интервью.
Хотя это никому не, на самом деле.

>> No.51900  

>>51896 Забавно!

>> No.51962  

Короче говоря немного оффтоп и мне нужно связаться с лолботом. А если конкретно, как можно подправить decompile.rpy чтобы оно умело transform flow.

Выходит так сорцы достает(а нужно мне изменить всего один файл и я даже знаю где и что), но потом если этот файл заменить, то будет ругать такого рода:
transform flow (x, y, z, s, r): invalid syntax
Причем если обернуть это все отдельными init, то еще немного поправить можно все-таки игру запустить, но тогда будут видны только пункты меню, а фон и все активные элемент и анимация - пропадет.

>> No.51963  

>>51962
Игра если что из неподдерживаемых естественно. Так то все распаковывает, но вот именно один файл, где описывается меню, заставка при запуске и т.д. не выходит.

>> No.51970  

>>51963 Извини, но мои экстрасенсорные способности меня сегодня подводят. Я попробовал несколько тривиальных тестов накидать с transform и аргументами, вроде бы всё конвертится как надо.

Пожалуйста, предоставь следующее:

  • rpyc-файл, который конвертится неправильно
  • rpy-файл, полученный на выходе
  • версию RenPy, в которой не работает

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

>> No.52059  

Перекат в планах есть?

>> No.52079  

Продолжение: >>52064



Удалить сообщение []
Пароль
[d | an-b-bro-fr-gf-hr-l-m-maid-med-mi-mu-ne-o-old_o-p-ph-r-s-sci-sp-t-tran-tv-w-x | bg-vg | au-mo-tr | a-aa-abe-azu-c-dn-fi-hau-jp-ls-ma-me-rm-sos-tan-to-vn | misc-tenma-vndev | dev-stat]
[Burichan] [Futaba] [Gurochan] [Tomorrow] - [Архив - Каталог - К доске] [Главная]