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

Ternox

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

GunSpike77

#1276
Помогите, добрячки. Хотел сделать смешнявый тест на знание таблицы умножения. 
Украл откуда-то такой код для рандомных цифр:


Код
init python:
    import random

    def getNumber1():
        options = range(10)
        return random.choice(options)

    def getNumber2():
        options = range(10)
        return random.choice(options)

И решил сделать чтобы эти рандомные числа умножались между собой:
       
Код
$ value1 = getNumber1()
    $ value2 = getNumber2()
    $ value3 = value1 * value2

    $ otvum = renpy.input("Сколько будет [value1] * [value2]?", length=2, allow="1234567890").strip()

    ap "Конечно же [otvum]!"

    if otvum == value3:

        "Фига я умный!!!"

        return

    else:

        "Ответ будет [value3]."

        "Я оч тупой!"

        "Все делаю харакири."

        jump harakiri
Код неплохо работает, рандомизруется и умножается как надо, но проблема в том что не работает оператор if, хотя я и ввожу правильный ответ - ренпай тупо не читает и переходит к else, че за дела 0_0. Жду очень добрячков программистов!!!
кек

agnessha

#1278
Привет, совсем недавно начала изучать RenPy и вот столкнулась с проблемкой, игра вылетает в главное меню до отметки return, сразу после фразы персонажа Taja ((( Хз, что делать, памагите


Код
# Вы можете расположить сценарий своей игры в этом файле.

# Определение персонажей игры.
define Taja = Character('Тая', color="#c8ffc8")
define Elza = Character('Эльза', color="#fff")
define Ljuda = Character('Люда', color="#000")

#
# Вместо использования оператора image можете просто
# складывать все ваши файлы изображений в папку images.
# Например, сцену bg room можно вызвать файлом "bg room.png",
# а eileen happy — "eileen happy.webp", и тогда они появятся в игре.
# Игра начинается здесь:
init:
    image kotleta = "images/kotleta.png"

label start:

    scene stolovka
    with fade
    
    show ljuda at left
    with dissolve
   
    Ljuda "Блин, так кушать хочется...Наконец обед!"
    Ljuda "Такссс, что тут у нас сегодня....."
    
    
    show taja4 at right
    with dissolve

    Taja "Судя по настрою, ты у нас новенькая...Ты только взгляни на это!"
    
    
    hide taja4
    
    show kotleta
    show taja4
    

    return

Katruna

#1279
agnessha, ну так да.. так и должно быть.. 
Никаких ошибок нет. Просто вот есть такая особенность, если не ставить паузу или фразу персонажей, движок сразу выйдет в главное меню. 
т.е. чисто технически он скорее всего показывает картинки, но это происходит настолько быстро, что ничего ты не видишь.
Если надо что бы картинки повисели на экране - пропиши просто паузу или добавь слова автора, что кто-то получил ту самую котлету.

Код

  Taja "Судя по настрою, ты у нас новенькая...Ты только взгляни на это!"
    
    
    hide taja4
    
    show kotleta
    show taja4
    pause 5.0

или

Код

  Taja "Судя по настрою, ты у нас новенькая...Ты только взгляни на это!"
    
    
    hide taja4
    
    show kotleta
    show taja4
    "Герой получил котлету."
Художник в душе и в жизни
Дракон в душе и в жизни
Butterfly effect

smollvrn

#1281
хаю, бегущую строку можно как-нибудь сделать для textbutton, а то названия некоторых треков не влезает в плеере
Сообщение отредактировал smollvrn - Среда, 06/Окт/2021, 11:02

anilimi

#1283
Здравствуйте. У меня появилась небольшая проблема. Я не могу разместить двух персонажей одновременно в одном кадре (когда ввожу второго, первый всегда исчезает, хоть я его и не убираю). Может у этой проблемы есть какое-то решение?

anilimi

#1285
Katruna,  вот отрывок кода. И проблема в том, что когда первый персонаж заканчивает свою реплику (и я его не убираю), когда появляется второй, первый всегда пропадает
Код

label start:

    scene bg komnata
    with fade

    show img luda at left
    with dissolve

    l "Вау, привет! Не ожидала встретить тебя здесь."

    show img katja at right
    with dissolve

    к "Привет. Да, сегодня решила прийти. "
    

dmit

#1286
anilimi, так и должно быть. у вас два спрайта имеют одину группу - "img". Для ренпи это спрайты одного персонажа и при вызове одного она меняет на другого. вывод - задайте разную группу для спрайтов разных персонажей.
Сообщение отредактировал dmit - Суббота, 16/Окт/2021, 13:22
планета FOREVER!!!      Unkenbro team

Кира353

#1288
Подскажите как лучше сделать счетчик числовых переменных в новелле. Нужно чтобы за определенный ответ прибавлялось или отнималось к примеру по 1 очку, Если игрок пройдет игру, в конце по итогу суммы выйдет какая -то концовка.
Не могу понять как сделать...

Katruna

#1289
Кира353, Привет. Тут достаточно все просто, объясню на примере своего же куска кода.
В начале игры, сразу после строчки "label start" надо прописать все необходимые переменные, которые будешь использовать для выхода на те или иные концовки.


Код
label start:

    $ red = 0
    $ green = 0
    $ blue = 0
 
У меня здесь 3 переменных, т.к. есть три персонажа, на чьи концовки можно выйти. Переменные задаются таким образом, пишешь знак $ и после него название переменной. Оно может быть любое.

Далее, нам нужно прописать, в каких ситуациях, переменные изменяются. Я чаще всего делаю, это в момент выбора действия.

Код

  menu:
        "Тем более, никто из девушек точно не сможет отказаться от моего предложения, ведь я..."    
        "Такой умный и рассудительный парень.":
            $ green +=1
            jump first
        
        "Такой сильный и страстный парень.":
            $ red +=1
            jump second
        
        "Такой неотразимый и авантюрный парень.":
            $ blue +=1
            jump third

Что тут происходит? Игроку дан выбор, menu запускает возможность выбора, и в каждом из выборов дает очки к той или иной переменной. т.е. делая выбор, игрок в любом случае получит +1 очко к какой-то из концовок.
п.с. не обязательно давать очки в момент развилки, можно в любой момент написать просто

Код
$ red +=1
к нужной переменной и программа запомнит, что вот здесь, игроку дается + 1 очко в такую переменную.

А теперь как сделать, что бы игра показала нужную концовку. Для разных концовок лучше всего создать отдельные лейболы и перед ними написать такой кусок кода.
   
Код
if green == 2: 
                jump good_green
          
   
    elif green != 2:
                jump bad_green

Тут идет проверка, сколько игрок к этому моменту набрал очков. Если он смог набрать достаточно очков для хорошей концовки - программа автоматом перекидывает на кусок текста с хорошей концовкой. Если нет - то в плохую.
bad_green и good_green  это отдельно прописанные лейблы.

Код
label bad_green:

Постаралась как можно подробнее все написать, но если остались вопросы - пиши. )
Художник в душе и в жизни
Дракон в душе и в жизни
Butterfly effect

agrokowka

#1290
Нужна помощь!
Простейший код: есть список названий объектов menu, из них нужно выбрать случайное, и так три раза. Однако внутриигровое меню может встретиться дважды, хотя его название было удалено из списка.

Код
define questions = ["q1", "q2", "q3", "q4"]

init python:
    import random
    def random_question():
        i = random.choice(questions)
        renpy.call(i)
        questions.remove(i)
Форум о визуальных новеллах » Для разработчиков » Ren'Py » Помощь по Ren'Py (Вопрос\Ответ)
Поиск: