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

  • Страница 2 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Форум о визуальных новеллах » Записи участника » AxelK [52]
Результаты поиска

AxelK

#16 | Тема: Помощь по Ren'Py (Вопрос\Ответ)
Касательно перекрашенной картинки с прошлой страницы.
Всё бы ничего, но с такой картинкой на экране нельзя делать save/reload


Код
I'm sorry, but an uncaught exception occurred.

While running game code:
  File "renpy/common/00action_file.rpy", line 372, in __call__
    renpy.save(fn, extra_info=save_name)
TypeError: no default __reduce__ due to non-trivial __cinit__ (perhaps renpy.game.log.log[9].context.scene_lists.layers[u'master'][0].displayable.raw_child.child_surf = <Surface(512x288x32)>)


Я так понимаю, к классу
    class MyBlit(renpy.Displayable):

Надо доопределить еще какой-то стандартный метод типа __reduce__ ?
Или чего-то вроде имени не хватает в __init__  ?

AxelK

#18 | Тема: Помощь по Ren'Py (Вопрос\Ответ)
Цитата СОНЦЕ ()
Нужен более конкретный пример, вызывающий баг

В общем, работает (у меня) до первого эффекта.

        renpy.show('_', at_list=[truecenter], layer='master', what=test_image, zorder=1, tag='bg', behind=[])
нормально

        renpy.show('_', at_list=[truecenter], layer='master', what=test_image, zorder=1, tag='bg', behind=[])
        renpy.with_statement(Dissolve(0.5))

= ошибка

AxelK

#19 | Тема: Помощь по Ren'Py (Вопрос\Ответ)
СОНЦЕ, кажися починил. Не знаю, в чём проблема, но это явно что-то при сериализации cpickle

Код

  class MyBlit(renpy.Displayable):

        def __init__(self, child, colors, **kwargs):
            super(MyBlit, self).__init__(**kwargs)
            [b][color=#ff0000]self.child = renpy.displayable(child)[/color][/b]   # вместо  self.child_surf = renpy.load_surface(child)
            self.colors = colors
            self.width = 0
            self.height = 0
        
        def render(self, width, height, st, at):
            displayable_child = renpy.displayable(self.child)
            child_render = renpy.render(displayable_child, width, height, st, at)
            self.width, self.height = child_render.get_size()
            [b][color=#ff0000]surf = renpy.load_surface(self.child)[/color] [/b] # вместо   surf = self.child_surf

            surf.lock()
            for i in range(int(self.width)):
                for j in range(int(self.height)):
                    pix = surf.get_at((i, j))
                    for cf, ct in self.colors:
                        if pix == cf:
                            surf.set_at((i, j), ct)
            surf.unlock()
            pix = None
            render = renpy.Render(self.width, self.height)
            render.blit(surf, (0, 0))
                 
            return render


Теперь отображает, красит, сохраняет и загружает (пока что) без ошибок

AxelK

#21 | Тема: Помощь по Ren'Py (Вопрос\Ответ)
Как красиво и грамотно пропустить первое меню, возникающее на старте, и сразу прыгнуть в игру?
Видел совет вписать

Код
label main_menu:
    $ Start ()

Это срабатывает, но
1. почему-то ломает отображение оверлея quick_menu (можно конечно поразбираться и с этим) и роллбэк
2. отключает основное меню совсем, но из игры-то бы его таки неплохо уметь вызывать

Есть способ надежней?

AxelK

#23 | Тема: Помощь по Ren'Py (Вопрос\Ответ)
Хотелось бы узнать, что тут не так.
Казалось бы, прямо в мануале написано

Код
scene bg beach

is equivalent to:

$ renpy.scene()
$ renpy.show("bg beach")


Однако, если добавить к экрану say например кнопки, то

команда scene при переходах отрабатывает нормально,
а программные эквиваленты этого не делают. Выполняется переход и все кнопки экрана видно поверх картинок

обычный код экрана

Код
screen say(who, what):
    style_prefix "say"
    window:
        id "window"
        if who is not None:
            window:
                id "namebox"
                style "namebox"
                text who id "who"
        text what id "what"

        imagebutton auto "btn_%s" action ShowMenu("")

   
Код
"test"

    scene "image"   # здесь кнопки скрываются
    with dissolve

    "test?"

    $ renpy.scene ()
    $ renpy.show ("image")  # здесь почему-то нет
    $ renpy.with_statement (dissolve)

AxelK

#26 | Тема: Помощь по Ren'Py (Вопрос\Ответ)
Зависит от того, как именно у вас игра устроена.
Можно например свою обертку для show сделать

Код
init python:
    def replacement_scene(*args, **kwargs):
        renpy.scene()
        return [renpy.show(*args, **kwargs), renpy.with_statement (dissolve)]

    config.show = replacement_scene

start:

    'text1'
    show bg1
    'text2'

Но я бы лучше оформил своей функцией для гибкости дальнейшего редактирования.


Код
init python:

    def bg (name, fx = dissolve):
        renpy.scene ()
        renpy.show (name, layer='master')

        if fx is not None:
            renpy.with_statement (fx)

start

    'text1'
    $ bg ('bg1') # dissolve по-умолчанию
    'text2'
    $ bg ('bg2', blinds) # а тут вот захотелось blinds вместо dissolve
    'text3'

AxelK

#29 | Тема: Помощь по Ren'Py (Вопрос\Ответ)
Именно поэтому я и написал что зависит от того как устроена ваша новелла. Такой подход не предусматривает гибкости. Рассмотрите функциональный подход. Функция будет делать каждый раз то что надо, а в скрипте одна строка.
По-моему, штатно эффекты на show не навешиваются.

AxelK

#30 | Тема: Помощь по Ren'Py (Вопрос\Ответ)
Столкнулся с очередной непонятной фигнёй.
Можно как-то отключить любое взаимодействие на время выполнения перехода?
Например делаешь свой титульный экран, выполняешь с него открытия/закрытия других экранов
В результате, пока что-то красиво открывается, если во время этого перехода жать правую кнопку мыши, проваливаешься в первое доступное меню
Обычно экран сохранений, где можно сохраниться, получается, прямо на титульнике... -_-
Форум о визуальных новеллах » Записи участника » AxelK [52]
  • Страница 2 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Поиск: