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

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

Admin

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

anilimi

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

anilimi

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

label start:

    scene bg komnata
    with fade

    show img luda at left
    with dissolve

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

    show img katja at right
    with dissolve

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

dmit

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

Кира353

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

Katruna

#1268
Кира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

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

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

init python:
    import random
    def random_question():
        i = random.choice(questions)
        renpy.call(i)
        questions.remove(i)

agnessha

#1270
Всем привет, возник такой вопрос, можно ли сделать так, что бы имя главного персонажа отображалось слева в диалоговом окне, а имена всех других справа?

dmit

#1272
agnessha, для каждого персонажа можно сделать своё положение окна имени, например сдвинуть по горизонтали:
Код
define ep = Character('Эйлин', who_xpos=600)
планета FOREVER!!!      Unkenbro team

lf2mr

#1273
Цитата agnessha ()
Всем привет, возник такой вопрос, можно ли сделать так, что бы имя главного персонажа отображалось слева в диалоговом окне, а имена всех других справа?
Другое решение, отличное от уже предложенного выше.
Код
define mychar = Character("[player_name]", color ="#FA63B1")
Кусок кода из обычного screens.rpy, имена персонажей слева по умолчанию:
Код
if who is not None:

    window:
        id "namebox"
        style "namebox"
        text who id "who"
Заменить на:

Код
if who is not None:

    window:
        id "namebox"
        style "namebox"
        if who != player_name:
            # "500" в строке ниже - это смещение на 500 точек вправо всех имён персонажей, кроме player_name
            xpos gui.name_xpos + 500
        text who id "who"

dmit

#1274
lf2mr, да, рабочий код, но излишний. Для смещения всех имён достаточно задать параметр gui.name_xpos в файле gui, а для одного гг в Character :)
планета FOREVER!!!      Unkenbro team

nikag

#1275
Не запускается Ren'Py и появляется это:
Fri Nov 12 23:21:50 2021
Windows-7-6.1.7601-SP1
Ren'Py 7.4.10.2178

Bootstrap to the start of init.init took 0.24s
Early init took 0.01s
Loader init took 0.07s
Loading error handling took 0.20s
Loading script took 0.92s
Loading save slot metadata. took 0.01s
Loading persistent took 0.00s
Importing _renpysteam: ImportError('No module named _renpysteam',)
Set script version to: None (alternate path)
- Init at launcher/game/web.rpyc:26 took 0.26300 s.
Running init code took 0.80s
Loading analysis data took 0.09s
Analyze and compile ATL took 0.01s
Index archives took 0.00s
Dump and make backups. took 0.00s
Cleaning cache took 0.00s
Making clean stores took 0.00s
Initial gc. took 0.10s
DPI scale factor: 1.000000
nvdrs: Loaded, about to disable thread optimizations.
nvdrs: Disabled thread optimizations.
Creating interface object took 0.56s
Cleaning stores took 0.00s
Init translation took 0.11s
Build styles took 0.00s
Load screen analysis took 0.06s
Analyze screens took 0.00s
Save screen analysis took 0.00s
Prepare screens took 0.20s
Save pyanalysis. took 0.00s
Save bytecode. took 0.00s
Running _start took 0.00s
Performance test:
Interface start took 0.16s

Initializing gl2 renderer:
primary display bounds: (0, 0, 1360, 768)
swap interval: -1 frames
Windowed mode.
Could not get pygame screen: error('Could not create GL context: ',)

Initializing sw renderer:
И еще не работает игра и выдает ошибку.
Сообщение отредактировал nikag - Пятница, 12/Ноя/2021, 22:47
Поиск: