Добавление полосы индикатора любви (Adding a Love Meter Bar)

Материал из Ren'Py Wiki
Перейти к навигации Перейти к поиску
Love bar.jpg

Прежде всего, вам понадобится немного графики.

bar_full.png
bar_hover.png
bar_empty.png
thumb
frame.png

ВНИМАНИЕ: приведённый код предназначен для игры 1024x768. Если вы используете другой размер, потребуются корректировки.

Также! Отступ в начале каждой строки очень важен! Убедитесь, что вы оставили их нетронутыми!!!

Чтобы использовать эти графические полосы в индикаторе любви, добавьте этот код в файл script.rpy, в самом верху или в нижней части страницы options.rpy:

init -5 python:
    #пользовательская полоса -----------------------
    style.my_bar = Style(style.default)
    style.my_bar.xalign = 0.5
    style.my_bar.xmaximum = 315 # bar width
    style.my_bar.ymaximum = 30 # bar height
    style.my_bar.left_gutter = 5
    style.my_bar.right_gutter = 5
    
    # Я храню всю графику своего пользовательского интерфейса в одном файле с именем ui. 
    # Чтобы получить доступ к ним в моем коде, я помещаю ui/ перед всеми изображениями в этом файле.
    
    style.my_bar.left_bar = Frame("ui/bar_full.png", 0, 0)
    style.my_bar.right_bar = Frame("ui/bar_empty.png", 0, 0)
    style.my_bar.hover_left_bar = Frame("ui/bar_hover.png", 0, 0)
    
    style.my_bar.thumb = "ui/thumb.png"
    style.my_bar.thumb_shadow = None
    style.my_bar.thumb_offset = 5

В своем файле script.rpy, в самом верху, добавьте этот код для каждого персонажа, который получает индикатор любви. Это происходит в коде Жизель.

init -2 python:
    ## Персонаж Жизель --------------
   
    giselle_love = 10 #Количество очков, с которого она начинает.
    max_love = 150  #Максимальное количество очков, которое она может получить.

init python: 
    ## ------------ Код активации очков любви -------------------
    #Контролирует, когда появляется всплывающая подсказка.
    show_giselle=False

    ## ------------ Плавучий измеритель очков любви --------------------
    def stats_overlay():               
        
        # --- Любовная полоса Жизель -------
        if show_giselle:
            ui.frame(
                xalign = 0.5, #центрированный
                ypos = 400,) #400 пикселей сверху вниз
            
            ui.vbox(xalign = 0.5)
            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)

Затем, когда вы хотите показать добавление точек на полосе во время истории, вы попадаете в этот фрагмент кода:

    $ 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

    # Это текст объявления для индикатора любви, включая конкретный шрифт и цвет шрифта.
    # Здесь указано, сколько баллов получает Жизель.
    # Если вы используете этот код без замены имени шрифта на один в вашей игры,
    # вы получите сообщение об ошибке.
    
    $ show_giselle=True
    # Это обновление, которое показывает увеличение очков на счетчике.

    $ renpy.pause()
    # Это сохраняет панель видимой, пока игрок не нажмет клавишу.

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

    $ show_giselle=False
    # Это скрывает индикатор.

Очень простой способ управлять кодом для всех ваших любовных индикаторов - создать совершенно новую вкладку (страница .rpy) и поместить весь код Python на эту страницу:

LoveMeter.rpy:

init python: 

    # контролирует, когда появляется поплавок очков-любви. 
    show_giselle=False
    show_arthur=False
    show_shino=False

    ## ------------ Поплавок очков-любви ----------------------

    def stats_overlay():               
        
        # --- Любовный индикатор Жизель -------
        if show_giselle:
            ui.frame(
                xalign = 0.5, #центрированный
                ypos = 400,) #400 пикселей сверху вниз
            
            ui.vbox(xalign = 0.5)
            ui.text ("Giselle's Love Points: %d" %giselle_love, 
                xalign = 0.5)
            ui.bar(max_love, giselle_love, 
                style="my_bar")
            
            ui.close()
            
        # --- Любовный индикатор Артура -------   
        if show_arthur:
            ui.frame(
                xalign = 0.5,
                ypos = 400,) 
            
            ui.vbox()
            ui.text ("Arthur's Love Points: %d" %arthur_love, 
                xalign = 0.5)
            ui.bar(max_love, arthur_love, 
                style="my_bar")
            
            ui.close()
            
        # --- Любовный индикатор Шино -------   
        if show_shino:
            ui.frame(
                xalign = 0.5,
                ypos = 400,) 
            
            ui.vbox()
            ui.text ("Shino's Love Points: %d" %shino_love, 
                xalign = 0.5)
            ui.bar(max_love, shino_love, 
                style="my_bar")
            
            ui.close()
           
    config.overlay_functions.append(stats_overlay)

init -2 python:
    giselle_love=10
    max_love = 150

    arthur_love=10
    max_love = 150

    shino_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 # bar width
    style.my_bar.ymaximum = 30 # bar height
    style.my_bar.left_gutter = 5
    style.my_bar.right_gutter = 5
    
    # Я храню всю графику своего пользовательского интерфейса в одном файле с именем ui. 
    # Чтобы получить доступ к ним в моем коде, я помещаю ui/ перед всеми изображениями в этом файле.
    
    style.my_bar.left_bar = Frame("ui/bar_full.png", 0, 0)
    style.my_bar.right_bar = Frame("ui/bar_empty.png", 0, 0)
    style.my_bar.hover_left_bar = Frame("ui/bar_hover.png", 0, 0)
    
    style.my_bar.thumb = "ui/thumb.png"
    style.my_bar.thumb_shadow = None
    style.my_bar.thumb_offset = 5

Источник[править | править код]

Статья "Adding a Love Meter Bar" на английском языке.


На главную страницу Книга рецептов Энциклопедии Ren'Py Форумы Lemma Soft Вернуться к началу статьи