Форум Anivisual закрыт. Вы не можете создавать новые темы или писать ответы. Форум будет работать в режиме архива.
Пользователи · Поиск по форуму · · · Регистрация

Форум о визуальных новеллах » Для разработчиков » Ren'Py » Помощь по Ren'Py (Вопрос\Ответ)
Помощь по Ren'Py (Вопрос\Ответ)

Admin

#1
Сюда пользователи сайта могут писать вопросы о тех или иных функциях движка Ren'Py, а мы попытаемся на них ответить:)

Ubic

#571
Можно ли сделать возврат в то место, откуда был последний джамп? Т.е. идет кусок кода, потом "jump xxx", потом в другом месте снова кусок кода, а потом нужен возврат сразу после "jump xxx".

ProstoiXXX

#572
Ubic самое простое, что приходит в голову

Код
label start:
    "1-я фраза."
    "2-я фраза."
    call proverka # call вместо jump

label proverka:
    "3-я фраза"
    "4-я фраза"
    "5-я фраза"
    return
Сообщение отредактировал ProstoiXXX - Пятница, 23/Авг/2019, 20:17

AlienXMask

#575
Существуют ли примеры плееров в играх, где помимо музыки выводится анимация? Например - запустил трек а рядом анимация кассеты появляется или винилового проигрывателя? Такое возможно?

KripWorland

#576
Уважаемые знатоки. Прошу сильно не пинать или пинать только в направлении подсказок (только начинаю работать с renpy  и python) Есть вот такой код для меню выбора:

Код
screen choice(items):
    style_prefix "choice"

    viewport:
        area(1410, 820, 520, 255)
        spacing -15
        scrollbars "vertical"
        draggable True
        mousewheel True
        arrowkeys True

        vbox id "vb1":
            xfill True
            spacing -10

            for i in items:
                button:
                    action i.action
                    background None
                    xpadding 0 ypadding 0 xmargin 0 ymargin 0
                    textbutton i.caption action i.action xpos 20 yalign .0
                    foreground "pref"


Вопрос: как сделать, чтобы scrollbar появлялся только тогда высота vbox выходит за границы viewport. Другими словами - если положили две кнопки с коротким текстом, то скролл не нужен, если пихнули десяток кнопок, тогда без скролла не обойтись.

СОНЦЕ

#577
KripWorland, не скажу как это делать по-людски, но вот такой костыль вроде работает

Код
screen choice(items):
    $ ScrlAuto = 'vertical' if len(items)>10 else None
    style_prefix "choice"

    viewport:
        area(1410, 820, 520, 255)
        spacing -15
        scrollbars ScrlAuto
        draggable True
        mousewheel True
        arrowkeys True

        vbox id "vb1":
            xfill True
            spacing -10

            for i in items:
                button:
                    action i.action
                    background None
                    xpadding 0 ypadding 0 xmargin 0 ymargin 0
                    textbutton i.caption action i.action xpos 20 yalign .0
                    foreground "pref"
Сообщение отредактировал СОНЦЕ - Вторник, 01/Окт/2019, 09:50

KripWorland

#578
СОНЦЕ, К сожалению не совсем подходящий вариант, т.к. текст в кнопках может быть как в одну строчку ("Уйти" например), так и содержать довольно большой текст, т.е. по высоте без прокрутки может как 5 кнопок поместиться, так и всего две, поэтому просто проверка на количество элементов но прокатит.

Пытаюсь найти что-то вроде функций определяющих разрешение объекта, используемые скажем в диспетчере объектов:
Прикрепления: 6202319.png (52.4 Kb)
Сообщение отредактировал KripWorland - Вторник, 01/Окт/2019, 10:39

СОНЦЕ

#579
... или можно взять костыль позабористей smile_16

Код
screen choice(items):
    $ rows = 0
    for i in items:
        $rows += i.caption.count('\n')
        $rows += len(i.caption) // 22
        $rows += 1
    $ ScrlAuto = 'vertical' if rows>10 else None
    style_prefix "choice"

    viewport:
        area(1410, 820, 520, 255)
        spacing -15
        scrollbars ScrlAuto
        draggable True
        mousewheel True
        arrowkeys True

        vbox id "vb1":
            xfill True
            spacing -10

            for i in items:
                button:
                    action i.action
                    background None
                    xpadding 0 ypadding 0 xmargin 0 ymargin 0
                    textbutton i.caption action i.action xpos 20 yalign .0
                    foreground "pref"
Сообщение отредактировал СОНЦЕ - Вторник, 01/Окт/2019, 15:52

KripWorland

#580
СОНЦЕ, направление создания костылей уловил, спасибо за помощь.
Жаль что некостыльного решения определения высоты объекта никто не подсказал... Ведь один и тот же текст при разном размере (если нет принудительных переносов) будет занимать разное количество строк... Вот эту бы высоту и выловить как-то, а там уже и предложенный Вами костыль будет идеален)

СОНЦЕ

#581
Цитата KripWorland ()
Вот эту бы высоту и выловить как-то, а там уже и предложенный Вами костыль будет идеален)

я нащхоль!


Код
default AutoScroll = None
default ChoiceHeight = 300 #ожидаемая сумма высот для полоски. отличается от высоты возможно из за спейсинга. возможно надо будет подкрутить

init python:       
    def GetMenuHeight(items):
        yy = 0
        output = 0
        for i in items:
            yy+=1
            widget = renpy.get_widget('choice','vbb'+str(yy))
            output+= widget.window_size[1]
        return output
        
    def ScrlAuto(items):
        global AutoScroll, ChoiceHeight    
        AutoScroll = 'vertical' if GetMenuHeight(items)>ChoiceHeight else None
        return

screen choice_clutch(items):
    timer .01 action Function(ScrlAuto,items)

screen choice(items):
    use choice_clutch(items)

    style_prefix "choice"

    viewport:
        area(1410, 820, 520, 255)
        spacing -15
        scrollbars AutoScroll
        draggable True
        mousewheel True
        arrowkeys True

        vbox id "vb1":
            xfill True
            spacing -10
            $yy = 0
            for i in items:
                $yy+=1
                button:
                    id "vbb"+str(yy)
                    action i.action
                    background None
                    xpadding 0 ypadding 0 xmargin 0 ymargin 0
                    textbutton i.caption action i.action xpos 20 yalign .0
                    foreground "pref"

lf2mr

#583
У меня вопрос по поводу локализации игры на renpy. В общем сделал локализацию одной игры, она стала двухязычная с выбором из языка из настроек, файлы локализации находились по пути game/tl/rus.. Всё прекрасно работало, но вышла новая версия той игры и автор там довольно много изменил, как сами тексты, так и их расположение. С помощью renpy-7.3.3-sdk я обновил перевод до новой версии, в файлах локализации добавилось много разных фраз как новых, так и бывших ранее в переводе. Взялся всё это переводить, после перевода небольшого текста решил протестировать, но игра тупо не видит тех новых переведенных фраз и показывает их оригинально английском виде. Стал копаться что к чему и оказалось что метки создаваемые в файлах локализации неверны и поэтому игра их не видит, пример под спойлером ниже, где я называю метками "translate rus shower_f1049d2a:". Где-то следовало изменить "shower" на другое значение(найденное в самом скрипте) и текст в игре становился локализованным, а где-то где текст повторялся в локализации достаточным было добавить новую метку "f1049d2a" и текст появлялся в игре, но в некоторых местах и изменение этих адресов "f1049d2a" не помогает.
Нашёл в сети другой инструмент для создания локализаций под названием renpy-update-tl-1.0.1, но он вообще выдает ошибку при создании локализации. Может быть есть какие другие инструменты для этого?
В общем если у кого есть дельные советы как производить локализацию апдейтов игр, то прошу не пройти мимо этого поста.
Но а самое главное что меня интересует, так это какой-то адрес из файла локализации, в моём примере это "f1049d2a". Каким образом эта метка создаётся? Можно ли использвать эту метку, чтобы найти текст в том файла на который она ссылается? Как самостоятельно сгенерировать ту метку?

progxaker

#584
lf2mr
Оригинал:
Код
# game/script.rpy <--file from which the lines are taken
translate language script_#######:  #<--string for replacing original script with translation
# n "Commented version of line from original script."
n "Translated version of line."

Перевод:
Код
# game/script.rpy <--файл откуда будут браться строки
translate language script_#######:  #<--строка из оригинала скрипта, которую заменяем переводом
# n "Закомментированная версия строки из оригинала скрипта."
n "Переведённая версия строки."

Источник: https://lemmasoft.renai.us/forums/viewtopic.php?f=51&t=43333
"Ничто не может оставаться таким же вечно. И вещи, приносящие радость и счастье, тоже. Ничто не остается неизменным." - Фурукава Нагиса, CLANNAD

KripWorland

#585
Помогите, пожалуйста, разобраться с кнопками.
В словаре  хранятся имена фонов для кнопок (без "_idle", "_hover"). Из словаря часть попадает в список, на основании которого в цикле выводятся кнопки. Проблема в том, что одно и то же изображение используется в трёх разных местах с разным масштабированием.
Подскажите, как можно сделать предварительную трансформацию, дабы использовать imagebutton либо как заставить button менять добавленное в него через add изображение в зависимости от действия.
Заранее спасибо
Форум о визуальных новеллах » Для разработчиков » Ren'Py » Помощь по Ren'Py (Вопрос\Ответ)
Поиск: