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

Помощь по Ren'Py (Вопрос\Ответ)

Admin

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

stop_control

#931
В очередной раз спотыкаюсь на каком то простом вопросе, но потратив 4 часа на поиск решения - пишу сюда.


Код
$ example_list = []
    $ example_list.append(["Как меня зовут","Ира","Гена","Коля","Степа","Ленорман","1"])
    $ example_list.append(["1+3=","1","2","3","4","5","4"])

Массив это какие то вопросы с вариантами ответов и указанием номера правильного.
В игре надо пройти анкетирование из какого то количества вопросов например 10.

Вывод вопроса и ответов я делаю через

"[example_list[0][0]]":

Пока стоят циферки все работает отлично.

Но чтобы не писать 10 раз один и тот же код я создаю цикл


Код
while count < len(example_list):

        "[example_list[count][0]]"

        $ count += 1


Цикл начинается с нуля и делает число повторов по числу элементов массива.
Но переменная вставленная в индекс массива воспринимается не как значение

в итоге вместо вопроса  выводится строка

[example_list[count][0]]

Вопрос: Как вставить переменную в индекс многомерного массива, чтобы выводилось значение элемента массива.
«Иди пожалуйся своей мамочке»

СОНЦЕ

#932
stop_control
подойдет ли вариант накрыть питоном всё целиком, чтобы не париться с тонкостями парсера ренпи?

Код
label start:

    python:
        example_list = []
        example_list.append(["Как меня зовут","Ира","Гена","Коля","Степа","Ленорман","1"])
        example_list.append(["1+3=","1","2","3","4","5","4"])

        for element in example_list:
            renpy.say('',element[0])

    return

stop_control

#933
С получением элемента списка понял. Спасибо

В моем варианте вопрос выводится, как текст с привязкой к верхней строке экрана, а ответы в форме меню выбора - ниже.
Код
while count < len(example_list):

        scene black with dissolve
        show text "[example_list[0][0]]": #at truecenter
            xalign 0.1
            yalign 0.1
            zoom 1.5
        with dissolve

        $ nomer = count+1

        menu:
            "[nomer]/[n_vopros] "

            "[example_list[0][1]]":
                $ variant = 1
            "[example_list[0][2]]":
                $ variant = 2
            "[example_list[0][3]]":
                $ variant = 3
            "[example_list[0][4]]":
                $ variant = 4
            "[example_list[0][5]]":
                $ variant = 5
        if variant == example_list[0][5]:
            $ opros -= 1

        $ count += 1


Как повторить эту форма вывода в коде питона?

Пока поставил костыль - вставка питона в код меню назначает  переменным вывода (вопрос и 5 вариантов ответа) значения двумерного массива.
Сообщение отредактировал stop_control - Пятница, 18/Дек/2020, 07:13
«Иди пожалуйся своей мамочке»

pirsus

#934
Ребят, тупой вопрос, но никак не могу найти решение:

Надо одновременно выводить несколько спрайтов с наложением друг на друга. Персонаж должен по ходу пьемы менять одежду и прическу .
Как это объеднить одной командой?

Базовый вид:


Код
show body1
show head1
show pants1
show jaker1
Как объединить эти изображения, чтобы я писал 

show persona1 и Renpy  выводила указанные выше спрайты? И чтобы на них распространялись общие модификаторы (ar right или with moveinright)

По идее хочется написать код вида:

Код
image persona1 = image ( body1, head1, pants1, jaket1)
Но я не понимаю, как это сделать, чтобы работало
И чтобы в процессе игры у меня была возможность вносить изменения

Код
image persona1 = image ( body1, head2, pants1, jaket2)
И с этого момента персонаж отображался бы уже с другими спрайтами

stop_control

#935
Цитата pirsus ()
Как объединить эти изображения,

Я использовал у себя вот так:


Код
image furry_sokol_foto = LiveComposite(
    (1920, 1080),
    (0, 0), "images/bg/sokolniki_bench.jpg",                    # (Позиция привязки Х,У), Картинка
    (900, 470), "images/personage/doris_full_foto.png")                     # (Позиция привязки Х,У), Картинка


Картинка "furry_sokol_foto" - далее воспринимается как обычное изображение.
«Иди пожалуйся своей мамочке»

stop_control

#937
Очередной вопрос для тех кто пишет в pytone
В Renpy можно размыть изображение.

Код
image logo blurred = im.Blur("logo.png", 1.5)

Есть ли подобная функция в pytone?

Откуда появился этот вопрос?
Когда я уменьшаю спрайт и задаю ему движение, он глючит на пиксельном уровне.

Проблему можно было бы решить если задать функцию которая при уменьшение в 10 раз размывала бы изображение спрайта на 1.5 пикселя.
А при уменьшение в 5 раз - на 0.3 пикселя.
«Иди пожалуйся своей мамочке»

СОНЦЕ

#938
stop_control

Цитата stop_control ()

image logo blurred = im.Blur("logo.png", 1.5)


Код

init python:
    renpy.image('logo blurred', im.Blur('logo.png',1.5))


Цитата stop_control ()
Когда я уменьшаю спрайт и задаю ему движение, он глючит на пиксельном уровне.

можно уточнить природу глюков? может поможет какой-нибудь subpixel True ?

dmit

#939
Сам питон не работает с графикой (так глубоко), но есть модули для этого. Например см.
Уточните что у вас не работает при пользовании функций ренпи?
image logo blurred = im.Blur(im.FactorScale("logo.png", 0.1), 1.5)
image logo blurred = im.Blur(im.FactorScale("logo.png", 0.2), 0.3)
планета FOREVER!!!      Unkenbro team

stop_control

#940
Как разместить
renpy.image('logo blurred', im.Blur('logo.png',1.5))

В цикле


Код
python:
        i=0
        for i in range(50):
                какойто код  выодящий спрайт на экран с разным увеличением.


 subpixel True не помог - или я его как то не так прописал...
глюк....
Когда дерево размером 1700 пикселей уменьшается до 200 то при движение становятся видны то одни то другие писксели
Картинка будто глючит.
Видео надо делать... чтобы показать...

Добавлено (19.12.2020, 21:10)
---------------------------------------------

Цитата dmit ()
Уточните что у вас не работает при пользовании функций ренпи?image logo blurred = im.Blur(im.FactorScale("logo.png", 0.1), 1.5)
Насколько помню эта строка работает.
Только вот выlод картинок у меня идет через Python 
а движение задается через  at_list=


Код
transform panorama_tree(y_delta, koeff, tree_mirror):
        xanchor 0.5
        yanchor 1.0
        xpos tree_x
        ypos y_delta
        zoom koeff/8
        xzoom tree_mirror                          
        subpixel True

        linear 50/koeff xpos 2500
        repeat

Как туда вставить 

image logo blurred = im.Blur(im.FactorScale("logo.png", 0.1), 1.5)

Не представляю...

Добавлено (19.12.2020, 21:39)
---------------------------------------------
Снимаю свой вопрос...
При записи видео выяснилось, что глючит в оконном режиме.
Когда игра идет на полном экране - проблемы нет.

Добавлено (20.12.2020, 12:21)
---------------------------------------------
Здравствуйте - это опять я)

После использования в питоне случайного выбора


Код
python:
        i=0
        for i in range(10):

            import random
            tree_mirror = random.choice([0,1])
           

При попытке сохранения стала выскакивать вот такая вот ошибка:

Код

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)
Exception: Could not pickle <module 'random' from 'D:\g\Cdrom.7\Игры - софт для изготовления\Визуальные новеллы\Ren'Py\renpy-7.1.0-sdk\lib\pythonlib2.7\random.pyo'>. (perhaps store.random = <module 'random' from 'D:\g\Cdrom.7\Игры - софт для изготовления\Визуальные новеллы\Ren'Py\renpy-7.1.0-sdk\lib\pythonlib2.7\random.pyo'>)

То что нужно выбрать случайно, выбирается как и ожидалось.

Вопрос.
Что не так в коде pythonа?
«Иди пожалуйся своей мамочке»

dmit

#941
stop_control, импортировать не надо в цикле, да и вообще не надо, а использовать ренпи:
tree_mirror = renpy.random.choice([0,1])
Сообщение отредактировал dmit - Воскресенье, 20/Дек/2020, 13:58
планета FOREVER!!!      Unkenbro team

stop_control

#942
Цитата dmit ()
импортировать не надо в цикле, да и вообще не надо, а использовать ренпи
Это был кусочек того, что происходит в цикле.
Весьма небольшой кусочек...
Но он хотя бы понятен.

Но если оставить только его проблема с записью в игре уже возникает.
Удалить и проблема исчезает.

Проблема исчезла после того как я запихнул 
import random
в функцию.

Господи когда же в мой проект придет консультатант по RenPy, который избавит меня от лишних знаний по программированию...
Сообщение отредактировал stop_control - Воскресенье, 20/Дек/2020, 20:10
«Иди пожалуйся своей мамочке»

СОНЦЕ

#944
pirsus

вариантов мильён, но например:

Код
image color:
    choice:
        '#f00'
    choice:
        '#0f0'
    choice:
        '#00f'

label start:
    scene color
    'hello world'

вместо '#f00' и иже с ними -- твои картинки из которых выбирать

pirsus

#945
Наткнулся на очень странную проблему.

В блоке init у меня прописано комлексное изображение.

Код
image batgirl = LiveComposite(
        (625, 850),
        (0, 0), 'images/batgirl/regular/body1.png',
        (0, 0), 'images/batgirl/regular/pants.png',
        (0, 0), 'images/batgirl/regular/jaket.png',
        (0, 0), 'images/batgirl/regular/head1.png')


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


Код
image batgirl = LiveComposite(
        (625, 850),
        (0, 0), 'images/batgirl/regular/body1.png',
        (0, 0), 'images/batgirl/regular/pants.png',
        (0, 0), 'images/batgirl/regular/jaket.png',
        (0, 0), 'images/batgirl/regular/head2.png')

Как мне исправить эту ошибку?
Поиск: