Вопросы-ответы по RenPy

Разработка игр на RenPy, обсуждение реализации, вопросы "Как сделать?"
Аватар пользователя
Skaz
Администратор
Сообщений: 1992
Зарегистрирован: 30 июл 2015, 14:52
Контактная информация:

Re: Вопросы-ответы по RenPy

Сообщение Skaz » 29 мар 2022, 07:39

Эль_Терри писал(а):Здравствуйте. А как сделать так, чтобы в определённые моменты игры определённые файлы сами удалялись(не чтобы их кто-то посторонний удалял!)?
А для чего это нужно?

VladProBloger4
Сообщений: 1
Зарегистрирован: 26 июн 2022, 11:43

Вопросы-ответы по RenPy

Сообщение VladProBloger4 » 26 июн 2022, 11:45

Пж скажите а как импортировать и использовать модули math и random?

Аватар пользователя
Skaz
Администратор
Сообщений: 1992
Зарегистрирован: 30 июл 2015, 14:52
Контактная информация:

Re: Вопросы-ответы по RenPy

Сообщение Skaz » 26 июн 2022, 11:58

VladProBloger4 писал(а):Пж скажите а как импортировать и использовать модули math и random?

Поищите import math в модуле из дистрибутива RenPy
...\common\00definitions.rpy
и будем вам образец.

python357
Сообщений: 9
Зарегистрирован: 11 дек 2022, 13:48

Re: Вопросы-ответы по RenPy

Сообщение python357 » 11 дек 2022, 22:39

Доброго времени суток.

1.В игре должы быть штук 30 карт, разных для разных эпизодов, но для всех используется одна картинка.
Вопрос: сколько памяти это будет занимать? Размер одного файла или в 30 раз больше?

2. Как сделать чтобы нажатие игроком кнопок блокировалось, а смена изображений на экране шли без его вмешательства, по времени?

3. Можно-ли сделать, чтобы один музыкальный файл проигрывался с разных мест в разные моменты игры?
Не хочется забивать игру кучей почти одинаковых файлов.

python357
Сообщений: 9
Зарегистрирован: 11 дек 2022, 13:48

Re: Вопросы-ответы по RenPy

Сообщение python357 » 12 дек 2022, 11:19

Написал вот-такой код:

Код: Выбрать все

layeredimage elsa:
    ...
    if elsa_hands == "magic":
        "images/characters/elsa/elsa_magic.png"
    elif elsa_hands == "gloves":
        "images/characters/elsa/elsa_gloves.png"
    else:
        pass

RenPy не нравится строка с "pass". Почему?
Пока вставил вместо этого пустое изображение, но может есть способ получше?

python357
Сообщений: 9
Зарегистрирован: 11 дек 2022, 13:48

Re: Вопросы-ответы по RenPy

Сообщение python357 » 23 дек 2022, 14:11

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

Код: Выбрать все

label slums_crocus_talking:
    crocus "Спасибо, добрый господин!"
    $ crocus_rand_talk = renpy.random.choice([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
    if crocus_rand_talk == 1:
        crocus "Вы знаете, что раньше Крокус был помошником Великого Визиря?"
        crocus "Да, да! Это было при Махмуде Справедливом."
        jump slums_menu
    # ещё целых 9 вариантов

Проблема: при повторном разговоре, с частотой наверное 99%, 90 - точно!, выпадает тот-же самый разговор.
Я добавил переменную с номером последнего разговора, чтобы не было повторов:

Код: Выбрать все

label slums_crocus_talking:
    crocus "Спасибо, добрый господин!"
    $ crocus_rand_talk = renpy.random.choice([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
    if crocus_rand_talk == 1 and crocus_last_rand_talk != 1:
        crocus "Вы знаете, что раньше Крокус был помошником Великого Визиря?"
        crocus "Да, да! Это было при Махмуде Справедливом."
        jump slums_menu
    elif crocus_rand_talk == 2 and crocus_last_rand_talk != 2:
        crocus "Никто кроме вас не даёт денег бедному Крокусу."
        crocus "А Крокус уже слишком стар, чтобы брать деньги у тех, кто не хочет их отдавать."
        jump slums_menu
    ...
    else:
        if crocus_gold < 25:
            crocus "Ещё пара монет и Крокус сможет сегодня закусить."
            crocus "Нет, одного золотого Крокусу не хватит.\nКак Крокус сможет закусить, если перед этим он ничего не выпьет?"
            jump slums_menu
        elif crocus_gold < 50:
            crocus "Крокус накопит денег и купит себе красные штаны."
            crocus "Почему красные? Это - секрет!"
            jump slums_menu
        else:
            crocus "Ещё немного монет и Крокус сможет купить себе гоночного верблюда!\nТо-есть, хромого ослика для своей больной матери..."
            jump slums_menu

Стал постоянно выпадать тот вариант, что "else".
У меня уже мозг не соображает, что сделать, чтобы разговоры были разные.

Аватар пользователя
dmit
Сообщений: 47
Зарегистрирован: 28 апр 2016, 00:03
Контактная информация:

Re: Вопросы-ответы по RenPy

Сообщение dmit » 25 дек 2022, 18:33

может быть ответы производить по порядку? Если порядок нужно нарушать, то можно перемешать список, типа
list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
renpy.random.shuffle(list)
и отвечать list[0] ...list[9]
для особо тупых перемешать ещё и опять с 0 до 9 ответа

python357
Сообщений: 9
Зарегистрирован: 11 дек 2022, 13:48

Re: Вопросы-ответы по RenPy

Сообщение python357 » 27 дек 2022, 18:22

Dmit, cпасибо. Перемешивание в два раза работает намного лучше.
Хотя сложновато получается для вывода простого случайного трёпа.

У меня новая проблема:
в options.rpy

Код: Выбрать все

    ## Music that is played while the user is at the main menu.
    # музыка, которяа играет пока игрок находится в главном меню (перевод мой)
    config.main_menu_music = "music/bolerish.mp3"

так у меня эта музыка продолжает играть и когда я из меню выхожу.

python357
Сообщений: 9
Зарегистрирован: 11 дек 2022, 13:48

Re: Вопросы-ответы по RenPy

Сообщение python357 » 28 дек 2022, 09:35

Снова проблема:
Простой код, где на экран выводится спрайт:

Код: Выбрать все

image jafar = "images/characters/jafar/jafar.png"

Код: Выбрать все

    "а не менее многочисленныз воров - помилованиями."
    hide sultan
    show jafar
    "А высокие налоги и смертные приговоры были целиком на совести злого великого визиря Джафара, которого все ненавидели и презирали."

Всё работало, пока я не накодил персонажу Джафару разную одежду и выражения лица

Код: Выбрать все

#image jafar = "images/characters/jafar/jafar.png"

define jafar_outfit = "visier"
define jafar_face = "smile"

layeredimage jafar:
    if jafar_outfit == "sultan":
        "images/characters/jafar/jafar_sultan.png"
    else:
        "images/characters/jafar/jafar_visier.png"
    if jafar_face == "angry":
        "images/characters/jafar/jafar_angry.png"
    else:
        "images/characters/jafar/jafar_smile.png"


I'm sorry, but an uncaught exception occurred.

While loading <'Image' u'images/characters/jafar/jafar.png'>:
File "game/scripts/events/intro.rpy", line 21, in script
"А высокие налоги и смертные приговоры были целиком на совести злого великого визиря Джафара, которого все ненавидели и презирали."
IOError: Couldn't find file 'images/characters/jafar/jafar.png'.

Удалил все *.rpyc, очистил папку tmp, запускал на другом компе, всё-равно ищет файл jafar.png
А со всеми остальными спрайтами персонажей со слоями - порядок.

Аватар пользователя
dmit
Сообщений: 47
Зарегистрирован: 28 апр 2016, 00:03
Контактная информация:

Re: Вопросы-ответы по RenPy

Сообщение dmit » 28 дек 2022, 11:59

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

Код: Выбрать все

layeredimage jafar:
    always:
        "images/characters/jafar/jafar.png"
    group outfit:
        attribute sultan default:
            "images/characters/jafar/jafar_sultan.png"
        attribute visier:
            "images/characters/jafar/jafar_visier.png"
    group face:
        attribute angry default:
            "images/characters/jafar/jafar_angry.png"
        attribute smile:
            "images/characters/jafar/jafar_smile.png"


вызов
show jafar
show jafar sultan
show jafar sultan angry
равнозначен поскольку установленно default

python357
Сообщений: 9
Зарегистрирован: 11 дек 2022, 13:48

Re: Вопросы-ответы по RenPy

Сообщение python357 » 28 дек 2022, 20:02

dmit писал(а):Да музыку меню надо останавливать самостоятельно обычно сразу после label start.

Это не проблема, но как останавливать её в том случае, когда игрок заходит в меню, чтобы сохраниться-загрузиться, а потом обратно в игру?

Код: Выбрать все

layeredimage jafar:
    always:
        "images/characters/jafar/jafar.png"
    group outfit:
        attribute sultan default:
            "images/characters/jafar/jafar_sultan.png"
        attribute visier:
            "images/characters/jafar/jafar_visier.png"
    group face:
        attribute angry default:
            "images/characters/jafar/jafar_angry.png"
        attribute smile:
            "images/characters/jafar/jafar_smile.png"

Вызов: show jafar
Продолжается та-же чертовщина: выводит только изображение jafar.png, а не весь layeredimage jafar
Если заменить в этом коде jafar.png на jafar_base.png например, всё-равно выводит jafar.png или выдаёт ошибку если его нет.
Я проверил все скрипты, которые *.rpy. Нигде нет присваивания, что jafar = "images/characters/jafar/jafar.png", а не layeredimage.
Такая засада пока только с этим Джафаром. У меня уже был вызов изображений, для которого раньше было простое изображение, а теперь - многослойное. Копировал скрипт с layeredimage с другого перса, работающего нормально.

За код огромное спасибо!
Я прочитал пару каких-то фантастически кривых мануалов по этим "group" & "attribute" на несколько экранов, нифига не понял, а тут просто, оказывается!

Аватар пользователя
dmit
Сообщений: 47
Зарегистрирован: 28 апр 2016, 00:03
Контактная информация:

Re: Вопросы-ответы по RenPy

Сообщение dmit » 29 дек 2022, 10:07

main_menu_music включается только на главном меню и если зайти на сохранения в игре, то звучать не будет. Или я не понял вашу задачу?
рекомендую удалить все файлы rpyc (если было удаление или переименование rpy) , очистить постоянные и не пользоваться старыми сохранениями (лучше удалить, все которые были до изменения layeredimage).

python357
Сообщений: 9
Зарегистрирован: 11 дек 2022, 13:48

Re: Вопросы-ответы по RenPy

Сообщение python357 » 29 дек 2022, 17:13

Да, проблема с Джафаром оказалась из-за старого файла rpyc. Неудаляемого-незаменяемого из под Винды.
А с музыкой дело было в старом сохранении, где ещё играла эта музыка. Вот я ступил!

И спасибо ещё раз за пример нормального кода с attributes, сделаю теперь всем персам.


Вернуться в «Разработка игр на RenPy»

Кто сейчас на форуме

Количество пользователей, которые сейчас просматривают этот форум: нет зарегистрированных пользователей и 1 гость