00:29
Ren'Py - Love Meter Bar (шкала отношений с героями, любвиметр)
Всем привет! Так как я сейчас занимаюсь разработкой визуальной новеллы, мне частенько приходится шерстить просторы интернета на предмет той или иной интересной плюшки, которую можно было бы добавить в свою игру. Нет ничего удивительного в том, что большинство интересных туториалов написано на английском языке, который, к сожалению, на должном уровне знает далеко не каждый желающий. Собственно, к чему я это все? Сегодня меня посетила интересная мысль: попробовать перевести один из уроков, по которому я сама делала шкалу отношений для своей новеллы! Итак, преступим...

Прежде, чем мы начнем, нам понадобятся определенные графические заготовки! Позаимствуем те, что предлагает автор оригинального урока.
 

bar_full.png

bar_empty.png

bar_hover.png

thumb.png

Важное примечание!
Данный код написан для игры с расширением 1024х768 пикселей.
Если у вашей новеллы оно другое, некоторые параметры будет необходимо подправить!
Также внимательно следите за тем, чтобы количество пробелов в коде осталось нетронутым!


Есть два способа добавить в вашу новеллу шкалу отношений! Для начала, рассмотрим первый вариант... В самом начале файла script.rpy пропишите следующий код, который создаст любвиметр для подсчета очков с нужным вам персонажем. Если таких героев несколько, то необходимо лишь продублировать отдельный кусок. В коде я выделила его начало и конец красным цветом. В качестве примера рассмотрим любвиметр автора оригинала данной статьи. Будем пикапить красотку Жизель! XD
init python:
    

    # Это логическая переменная, отвечающая за видимость любвиметра.
    # Вы можете придумать что-то свое. Главное, не запутайтесь!
    # Значение False говорит о том, что сейчас переменная скрыта.

    show_giselle = False
    
    def stats_overlay():               
        
       
# ----- Начало шкалы Жизель -----
        if show_giselle:
            ui.frame (xalign = 0.5, # Любвиметр располагается по центру оси X.
                ypos = 400) # Расстояние от верхней стороны экрана 400 px.
            ui.vbox (xalign = 0.5) # Контейнер, в котором расположены надпись и сама шкала.
            
# Надпись в кавычках может быть любой, но обязательно оставьте символ %d.
            ui.text ("Giselle's Love Points: %d" %giselle_love, xalign = 0.5)
            
# Параметры для вашего бара: две переменных и стиль, о которых будет говориться ниже.
            ui.bar(max_love, giselle_love, style="my_bar")
            ui.close()
       
# ----- Конец шкалы Жизель -----

    config.overlay_functions.append(stats_overlay)
Для того, чтобы наши картинки для бара встали на место, а шкала отношений заработала окончательно, код, приведенный ниже, нужно вставить либо сразу же после вышеописанного, либо запихайте его в самый конец файла options.rpy. Тут уж выбирайте, как вам удобно!

init -2 python:

    # Переменные для шкалы Жизель. Их значения могут быть любыми.
    giselle_love = 10 # Переменная с начальным количеством очков любви. 
    max_love = 150 # Максимальный уровень любвиметра.


init -5 python:

    #
 Параметры вашего бара.
    style.my_bar = Style(style.default)
    style.my_bar.xalign = 0.5
    style.my_bar.xmaximum = 315 # Ширина шкалы
    style.my_bar.ymaximum = 30 # Высота шкалы
    style.my_bar.left_gutter = 5
    style.my_bar.right_gutter = 5
    
    # Вместо многоточия вам нужно указать путь к картинке.
    #
Например, "images/bar_full.png".
    
    style.my_bar.left_bar = Frame(".../bar_full.png", 0, 0)
    style.my_bar.right_bar = Frame(".../bar_empty.png", 0, 0)
    style.my_bar.hover_left_bar = Frame(".../bar_hover.png", 0, 0)
    
    style.my_bar.thumb = ".../thumb.png"
    style.my_bar.thumb_shadow = None
    style.my_bar.thumb_offset = 5


Ну а теперь самое интересное! Как же все это отобразить во время игры? Например, игрок делает выбор, который повышает/понижает его показатель отношений с персонажем. Чтобы отобразить это на экране достаточно скопировать очередной код непосредственно в сценарий вашей новеллы.


    $show_giselle = True # Выводит на экран любвиметр.

    pause 0.5 # Делаем короткую паузу, чтобы игрок мог отчетливо увидеть показатель шкалы "до" и "после".

    $giselle_love += 50 # Плюсуем/отнимаем очки любви.

    show expression Text("{color=ffffff}{font=LHFmisterkookyREG_0.TTF}+50 Love Points{/font}{/color}", 
        size=50, 
        yalign=0.5,
        xalign=0.5, 
        drop_shadow=(2, 2)) as text
    with dissolve

   
# Надпись оповещает о количестве добавленных баллов. Объявленный текст имеет такой индивидуальный параметр, как шрифт.
    # Обязательно замените его название своим! А также помните, что необходимый шрифт должен лежать в папке "game", иначе игра запустится с ошибкой.
    
    $show_giselle = True # Обновление показателя переменной. 

    $renpy.pause() # Любвиметр будет виден до тех пор, пока игрок не нажмет кнопку. 

    hide text with dissolve # Это скроет текст. 

    $show_giselle = False # А это - саму шкалу отношений.

ВУАЛЯ! Наш любвиметр готов! Осталось лишь запустить игру и все затестить. Но это еще не все! Как вы помните, я обещала рассказать о двух способах... Второй способ добавления максимально простой и, что весьма не маловажно, удобный! Для него вам понадобится создать новый файл с расширением .rpy. Пусть он даже так и называется lovemeter.rpy. В него мы закидываем по порядку первые два куска кода, а третья, собственно, остается там, где ей положено быть. Если вы все сделали правильно, то у вас должно получиться что-то наподобие этого.



На этой позитивной ноте можно сворачиваться! *хе-хе* Надеюсь, мой перевод будет вам полезен! Данному методу можно найти множество применений... Фантазируйте, пробуйте, экспериментируйте, создавайте что-то новое и главное - не бойтесь накосячить, потому как любые ошибки в этом деле поправимы!
С вами была natalyshka93! Полное или частичное копирование возможно только с указанием автора и ссылкой на источник http://natalyshka93.do.am
Статья переведена специально для группы RenPy в контакте!
Ссылка на оригинал статьи на английском (тык).
Категория: Ren'Py | Просмотров: 8022 | Добавил: natalyshka93 | Теги: Любвиметр, Love Meter, Шкала отношений, RenPy | Рейтинг: 5.0/13
Всего комментариев: 2
1 Assia  
Спасибо за статью, все прекрасно работает!! Правда, у меня есть вопрос насчет того, чтобы сделать такие любвиметры на разных персонажей. Я не понимаю, куда дублировать, что исправлять, чтобы на определенного персонажа был определенный любвиметр. И еще, хотелось бы узнать, можно ли сделать зависимость какого-то события/реплики от количества очков в любвиметре.
wacko

2 natalyshka93  
0
Здравствуйте! Извиняюсь за долгий ответ)))
Чтобы сделать любвиметр на несколько персонажей, нужно создать для каждого героя свою переменную. В примере это $giselle_love, но вы можете указать любую: love1 и love2, просто имена персонажей. Главное, чтобы переменные были уникальные и не повторялись с другими. Визуально шкала будет оставаться одной и той же, но в зависимости от присвоенных по ходу игры значений переменных она будет отображаться по-разному.
Для того, чтобы произошло какое-то событие в зависимости от уровня любвиметра, нужно просто добавить условия по типу "if переменная очков любви == 10, то выполняется действие, elif (если нет) сюжет идет по другой развилке или действие просто не происходит". Все зависит от вашей фантазии. Я могу помочь только в общих чертах обрисовать логику процесса, потому как в каждый отдельный пример необходимо вникать и одним комментарием тут не обойдешься.

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]