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

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

Admin

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

НяШнАя_СмЕрТь

#1321
Здравствуйте, я начинающий начинающий разработчик игр, очень мало в этом смыслю.
Есть такой вопрос, допустим, я хочу написать на Renpy не совсем новеллу, а какую-нибудь казуалку для андроидов. Как будет реализовываться оптимизация экранов, кнопок и изображений под разные размеры дисплеев и разные диагонали? Собственно, как выбрать оптимальное разрешение для работы, что потом предпринять для улучшения оптимизации, как вообще это происходит. Извините, ничего в этом не смыслю. Проще говоря, вопрос такой, будет ли игра автоматически растягиваться под экран или будет с чёрными полосами, и если будет растягиваться, то не съедут ли кнопки куда-то вбок?

dmit

#1322
НяШнАя_СмЕрТь, ренпи растягивает игру, но сохраняя пропорции! если у вас соотношение 16х9 задано , то при просмотре на экранах 16х10, 18х8 будут появляться чёрные полосы (снизу-сверху, справа-слева). Для просмотра в вертикальном исполнении, отдельно придётся разработать интерфейс. Для просмотра на мелких экранах, есть методы изменяющие вид интерфейса для удобства взаимодействия (например убирающие мелкие элементы и увеличивающие текст и оставшиеся кнопки).Короче всё не идеально, но ренпи быстро развивается и в дальнейшем...
Если вспомнить достоинства, то один проект можно портировать не только на андроид, но и веб, айос, вин , лин...  И если правильно использовать, то и игра на любых платформах не будет напрягать не совсем чётким следованиям экрана.
планета FOREVER!!!      Unkenbro team

lf2mr

#1323
Здравствуйте. Прошу помощи.
Есть скрин в меню игры с чекбоксами:

Код
imagebutton:
                    if my_val:
                        idle "gui/preferences/custom_menu_box_idle.png"
                        hover "gui/preferences/custom_menu_box_hover.png"
                        action SetVariable("my_val",False)
                    else:
                        idle "gui/preferences/custom_menu_box_empty_idle.png"
                        hover "gui/preferences/custom_menu_box_empty_hover.png"
                        action SetVariable("my_val",True)
Мне надо, чтобы после присвоения значения переменной my_val в обоих случаях происходило обновление - renpy.restart_interaction(), но не пойму как это тут реализовать. Можно ли как-то привязать это обновление в action и оно будет единоразово срабатывать при выборе/отмене чекбокса или как-то иначе это надо реализовывать в таком случае?

Curvas

#1324
Сердечно приветствую!
Такой вот немного странный вопрос: 
Хотел сделать изменение цвета персонажа в зависимости от выборов. К примеру, если я подарю девушке цветок, то она станет более теплого цвета, а если носки, то наоборот, более холодного. Пытался сделать значение цвета переменной, но ничего не вышло(
Я понимаю, что можно просто прописывать цвет персонажу в каждой его фразе, но сами понимаете как много лишних символов получиться...
Может есть какой-то способ изменить "цвет имени персонажа" простым способом?

dmit

#1325
заменить какой-либо параметр персонажу легко - $ e = Character(kind=e, what_color = "#f00")
если сначала объявить разные персонажи (по цвету или ещё как), то можно просто их подменять  $ e = eice       $ e = efire
и далее будет другой параметр.
планета FOREVER!!!      Unkenbro team

Curvas

#1326
Цитата dmit ()
заменить какой-либо параметр персонажу легко - $ e = Character(kind=e, what_color = "#f00")если сначала объявить разные персонажи (по цвету или ещё как), то можно просто их подменять  $ e = eice       $ e = efire
и далее будет другой параметр.
    
Спасибо это почти сработало)))
'What_color=' - отвечает за цвет текста, поэтому обычный "Color=" справляется лучше)
Теперь смогу реализовать свою задумку

N1cHoNo

#1327
Приветствую
Уже который час борюсь вот с такой проблемой

I'm sorry, but an uncaught exception occurred.

While running game code:
File "renpy/common/00keymap.rpy", line 469, in script
python hide:
File "renpy/common/00keymap.rpy", line 469, in <module>
python hide:
File "renpy/common/00keymap.rpy", line 488, in _execute_python_hide
renpy.save("_reload-1", "reload save game")
AttributeError: 'NoneType' object has no attribute 'stores'

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

Full traceback:
File "renpy/common/00keymap.rpy", line 469, in script
python hide:
File "renpy/ast.py", line 928, in execute
renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
File "renpy/python.py", line 2245, in py_exec_bytecode
exec(bytecode, globals, locals)
File "renpy/common/00keymap.rpy", line 469, in <module>
python hide:
File "renpy/common/00keymap.rpy", line 488, in _execute_python_hide
renpy.save("_reload-1", "reload save game")
File "renpy/loadsave.py", line 394, in save
roots = renpy.game.log.freeze(None)
File "renpy/python.py", line 2142, in freeze
self.complete(False)
File "renpy/python.py", line 1726, in complete
self.current.stores[name], self.current.delta_ebc [name]= sd.get_changes(begin)
AttributeError: 'NoneType' object has no attribute 'stores'

Код скрипта

hide mh_smile_st
with moveoutleft
Hh "-Ну, зато поговорили дольше, чем за все наши диалоги на прошлой неделе вместе взятые"
$ renpy.pause(1.0)
// в этом месте меня возвращает в главное меню как после Return. Код не читается дальше этого. если я добавлю после Hh еще диалогов до паузы то все что до паузы будет работать и пауза тоже. после нее не работает ничего, ни лейбл ни сцена ни спрайты не показ. просто выкидывает в главное меню//
jump stores
label stores:

scene denkujz-68bbe039-55b3-490b-adbe-c8f47e9f2704
show hh_strog at right:
zoom 1.6
play music "audio/System_of_a_Down_-_Lonely_Day_47954602.mp3"
return
Сообщение отредактировал N1cHoNo - Вторник, 15/Мар/2022, 17:09

dmit

#1328
N1cHoNo
1) $ renpy.pause(1.0)  не проще ли  - pause 1.0
2) jump stores
label stores:  это что скачок на следующую строку? stores - не используйте такое имя оно явно может быть зарезервировано , см. в документации
3)после label : сцена -показ -картинки -включение звука -выход.   Что и происходит. Выполняется  код (за 3 мили сек) и выход. Поставте хотя бы паузу перед выходом, тогда увидите итог выполнения кода.
планета FOREVER!!!      Unkenbro team

N1cHoNo

#1329
Я идиот, ну конечно он будет без текста просто закрывать программу по достижению конца.
!!!!
Спасибо большое!!
Просто до этого сохранял и проверял всегда после текста, а тут забыл дописать)

Akinoya

#1330
Вопрос может быть странный, но надеюсь все же поможет кто-нибудь. 

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

Магазин у меня на отдельном экране. Если меняю значение какой-либо переменной на этом экране "магазин", то на других значение этой же переменной не меняется. Почему?!(

Например, герой покупает книги, в магазине "вы купили еще книгу, у вас 2", в инвентаре по-прежнему "у вас 1 книга", хотя переменная, отвечающая за книги, одна и та же.

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

Ну и еще была бы благодарна, если кто подсказал, возможно уже есть в открытом доступе решение, как сделать магазин)

dmit

#1331
Akinoya, вы не привели код как вы меняете переменные в магазине. Могу только предположить, что меняете локальные переменные (в экране будет отображаться правильно), а вам надо глобальные. Проверьте видимость переменных.
планета FOREVER!!!      Unkenbro team

Akinoya

#1332
dmit, кода нет, потому что спросить решила внезапно и с работы).

Цитата
Могу только предположить, что меняете локальные переменные (в экране будет отображаться правильно), а вам надо глобальные.
я думала в эту сторону. Но вот сейчас еще раз прочитала про видимость в питоне, и у меня возникла идея, где именно я там накосячила. Надо будет проверить дома.
Спасибо! Но если не то, приду жаловаться с кодом)

krokot11

#1333
Сап! Я даже не знаю, с чего начать. У меня довольно стандартный проект, я сильно не ковырял код меню. Хотел сделать так, чтобы нажатие на ПКМ удаляло сохранение, как нажатие на delete.

Прописал в 00keymap.rpy это:

        # Delete a save.
        save_delete = [ 'mousedown_3', 'K_DELETE' ],

С остальными изменениями управления (rollback / rollforward, dismiss и т.п.) сработало, а тут -- нет. Методом проб и ошибок я выяснил, что при таком коде правая кнопка мыши всё же удаляет сохранения, НО... Только автосохранение, и только если их 6 штук (полная страница).

В screens rpy я смог добиться желаемого результата, используя такой код:

button:
                        action FileAction(slot)
                        alternate FileDelete(slot)

                        has vbox

                        add FileScreenshot(slot) xalign 0.5

                        text FileTime(slot, format=_("{#file_time}%A, %d %B %Y, %H:%M"), empty=_("Пустой слот")):
                            style "slot_time_text"

                        text FileSaveName(slot):
                            style "slot_name_text"

                        key "save_delete" action FileDelete(slot)

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

dmit

#1334
krokot11, не вдаваясь в код, очевидно что при клике пкм происходят события , которые мешают  получить функции FileDelete(slot) этот самый slot. А полученный при наведении мыши на слот теряется. Второй вариант - абсолютно правильное решение, единственно не очевидное. Обычно вставляют кнопку удаления [х] в каждый слот сохранения для наглядности.
планета FOREVER!!!      Unkenbro team
Форум о визуальных новеллах » Для разработчиков » Ren'Py » Помощь по Ren'Py (Вопрос\Ответ)
Поиск: