Пользователи · Поиск по форуму · · Вход в аккаунт · Регистрация |
Форум о визуальных новеллах Для разработчиков Ren'Py Помощь по Ren'Py (Вопрос\Ответ) |
Помощь по Ren'Py (Вопрос\Ответ) |
KripWorland#571СОНЦЕ, К сожалению не совсем подходящий вариант, т.к. текст в кнопках может быть как в одну строчку ("Уйти" например), так и содержать довольно большой текст, т.е. по высоте без прокрутки может как 5 кнопок поместиться, так и всего две, поэтому просто проверка на количество элементов но прокатит.
Пытаюсь найти что-то вроде функций определяющих разрешение объекта, используемые скажем в диспетчере объектов: ![]() Прикрепления:
6202319.png
(52.4 Kb)
Сообщение отредактировал KripWorland - Вторник, 01/Окт/2019, 10:39
|
СОНЦЕ#572... или можно взять костыль позабористей
![]() Код 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#573СОНЦЕ, направление создания костылей уловил, спасибо за помощь.
Жаль что некостыльного решения определения высоты объекта никто не подсказал... Ведь один и тот же текст при разном размере (если нет принудительных переносов) будет занимать разное количество строк... Вот эту бы высоту и выловить как-то, а там уже и предложенный Вами костыль будет идеален) |
СОНЦЕ#574Вот эту бы высоту и выловить как-то, а там уже и предложенный Вами костыль будет идеален) я нащхоль! Код 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#576У меня вопрос по поводу локализации игры на renpy. В общем сделал локализацию одной игры, она стала двухязычная с выбором из языка из настроек, файлы локализации находились по пути game/tl/rus.. Всё прекрасно работало, но вышла новая версия той игры и автор там довольно много изменил, как сами тексты, так и их расположение. С помощью renpy-7.3.3-sdk я обновил перевод до новой версии, в файлах локализации добавилось много разных фраз как новых, так и бывших ранее в переводе. Взялся всё это переводить, после перевода небольшого текста решил протестировать, но игра тупо не видит тех новых переведенных фраз и показывает их оригинально английском виде. Стал копаться что к чему и оказалось что метки создаваемые в файлах локализации неверны и поэтому игра их не видит, пример под спойлером ниже, где я называю метками "translate rus shower_f1049d2a:". Где-то следовало изменить "shower" на другое значение(найденное в самом скрипте) и текст в игре становился локализованным, а где-то где текст повторялся в локализации достаточным было добавить новую метку "f1049d2a" и текст появлялся в игре, но в некоторых местах и изменение этих адресов "f1049d2a" не помогает.
Нашёл в сети другой инструмент для создания локализаций под названием renpy-update-tl-1.0.1, но он вообще выдает ошибку при создании локализации. Может быть есть какие другие инструменты для этого? В общем если у кого есть дельные советы как производить локализацию апдейтов игр, то прошу не пройти мимо этого поста. Но а самое главное что меня интересует, так это какой-то адрес из файла локализации, в моём примере это "f1049d2a". Каким образом эта метка создаётся? Можно ли использвать эту метку, чтобы найти текст в том файла на который она ссылается? Как самостоятельно сгенерировать ту метку? |
progxaker#577lf2mr,
Оригинал: Код # 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#578Помогите, пожалуйста, разобраться с кнопками.
В словаре хранятся имена фонов для кнопок (без "_idle", "_hover"). Из словаря часть попадает в список, на основании которого в цикле выводятся кнопки. Проблема в том, что одно и то же изображение используется в трёх разных местах с разным масштабированием. Подскажите, как можно сделать предварительную трансформацию, дабы использовать imagebutton либо как заставить button менять добавленное в него через add изображение в зависимости от действия. Заранее спасибо |
dmit#580KripWorland, может достаточно использовать трансформу для всех кнопок? типа:
Код transform zoom_button: on idle: linear .1 zoom 1.0 on hover: linear .1 zoom 1.25 screen but(): imagebutton idle "tri" action Return() at zoom_button Сообщение отредактировал dmit - Вторник, 15/Окт/2019, 10:25
планета FOREVER!!! Unkenbro team
|
KripWorland#582Еще такой вопрос: есть ли возможность при наведении или активации imagemap "накладывать" на нее другое изображение и как это организовать?
|
KripWorland#583Еще такой вопрос: есть ли возможность при наведении или активации imagemap "накладывать" на нее другое изображение и как это организовать? Вопрос снимается, решил стандартным (хоть этого и не хотелось) путем создания отдельных картинок для спокойной/наведенной/активированной кнопки... Зато возник другой вопрос: в разных локациях разное количество комнат, для комнат генерируются imagebutton следующим кодом: Код imagebutton: ....name "im_but"+str(i) ....align (0.5, 0.0) ....idle room.icon ....selected_idle room.icon + " act" ....selected_hover room.icon + " act" ....selected room == current_room ....keysym 'K_'+str(i) ....focus_mask True ....action [SetVariable("current_room", room), Jump("AfterWaiting")] ....at middle_zoom очень хочется сделать, чтобы кнопки можно было активировать не только мышью, но и нажатием на клавиатуре цифры 1-8 (максимум 8 комнат в локации). Но вот как работает keysym никак не могу разобраться... Дайте пример с использованием "горячих" клавиш, если не затруднит. Заранее спасибо Решил проблему! Вместо keysym после создания кнопки добавил Код key str(i) action [SetVariable("current_room", room), Jump("AfterWaiting")] и все заработало. Всем спасибо Сообщение отредактировал KripWorland - Понедельник, 21/Окт/2019, 16:53
|
| |||