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

Ternox
Дата: Вторник, 30.09.2014, 21:50 | Сообщение # 1
Администратор
Сообщений: 939
Награды: 54
Сюда пользователи сайта могут писать вопросы о тех или иных функциях движка Ren'Py, а мы попытаемся на них ответить:)


Прежде чем писать мне в ЛС, загляните в FAQ, возможно там уже есть ответ на ваш вопрос.


Iryoku
Дата: Воскресенье, 30.05.2021, 15:23 | Сообщение # 1186
Пользователь
Сообщений: 2
Награды: 0
Цитата СОНЦЕ ()
tooltip '{color=#f00} Да ладно тебе  %s {/color}'%viname

Спасибо вам огромное за помощь )

Добавлено (30.05.2021, 17:15)
---------------------------------------------

Цитата Iryoku ()
Цитата СОНЦЕ ()tooltip '{color=#f00} Да ладно тебе  %s {/color}'%viname

Спасибо вам огромное за помощь )
Код заработал
imagebutton:
            xpos 0
            ypos 0
            focus_mask True
            idle ("images/game_gui/menu_igroka/mama idle.png")
            hover ("images/game_gui/menu_igroka/mama hover.png")
            tooltip '{color=#f00}%s{/color}'%l # отображение имени при наведении
            action Jump("komnata")
        $ tooltip = GetTooltip()

        if tooltip:
            text "[tooltip]" align (0.28, 0.9)
Однако столкнулся с проблемой применения данного кода, к остальным персонажам... 
Он не позволяет прописать tooltip много раз ( 

Нашел выход через 
imagebutton:
            xpos 0
            ypos 0
            focus_mask True
            idle ("images/game_gui/menu_igroka/starshya idle.png")
            hover ("images/game_gui/menu_igroka/starshya hover.png")
            #tooltip '{color=#f00}%s {/color}'%с
            hovered Show("displayTextScreen", displayText ='%s'%c)
            unhovered Hide("displayTextScreen")
            action Jump("komnata")
Через дисплей текст. 
Подскажите какой из вариантов проще и занимает меньше строк кода?
И если tooltip проще, то как его заставить работать в нескольких местах с разными значениями?

Спасибо.


Не бейте пожалуйста за глупые вопросы (=^_^=)
С кодом работаю всего месяц )

СОНЦЕ
Дата: Понедельник, 31.05.2021, 02:58 | Сообщение # 1187
Разработчик
Сообщений: 312
Награды: 38
Цитата Iryoku ()
Он не позволяет прописать tooltip много раз (

прошу уточнить, потому что вот, я прописываю tooltip много раз, один и тот же тултип в нескольких местах имеет разные значения....


Код
init:
    $ viname = 'вася'
    $ viname2 = 'петя'
    $ viname3 = 'гриша'

image im_idle:
    '#666'
    size (100,100)

image im_hover:
    '#faa'
    size (100,100)

     
screen with_buttons:
    $ tooltip = GetTooltip()
    hbox:
        align (.5,.5)
        spacing 30
        imagebutton:
            focus_mask True
            idle 'im_idle'
            hover 'im_hover'
            tooltip '{color=#f00} Да ладно тебе  %s {/color}'%viname
            action Return()

        imagebutton:
            focus_mask True
            idle 'im_idle'
            hover 'im_hover'
            tooltip '{color=#f00} Да ладно тебе  %s {/color}'%viname2
            action Return()

        imagebutton:
            focus_mask True
            idle 'im_idle'
            hover 'im_hover'
            tooltip '{color=#f00} Да ладно тебе  %s {/color}'%viname3
            action Return()

    if tooltip:
        text "[tooltip]" yalign 1.0

label start:
    call screen with_buttons
    'foo'
    'bar'
    return

label main_menu:
    return


@son_tse, @lena_borodach, @lena_chunks


Сообщение отредактировал СОНЦЕ - Понедельник, 31.05.2021, 05:14

BALEPA
Дата: Среда, 09.06.2021, 21:36 | Сообщение # 1188
Пользователь
Сообщений: 6
Награды: 0
Хочу сделать автосохранение в игре, без возможности загрузки и сохранения по желанию. Это реализуемо?

СОНЦЕ
Дата: Четверг, 10.06.2021, 04:35 | Сообщение # 1189
Разработчик
Сообщений: 312
Награды: 38
Цитата BALEPA ()
Хочу сделать автосохранение в игре, без возможности загрузки и сохранения по желанию. Это реализуемо?

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


@son_tse, @lena_borodach, @lena_chunks

Ельница
Дата: Суббота, 19.06.2021, 21:18 | Сообщение # 1190
Пользователь
Сообщений: 3
Награды: 0
Скажите пожалуйста, как сделать так, чтобы ренпай брал изображения только из определённых папок? 
К примеру, у героя есть питомцы. У питомцев - по несколько изображений (happy, sad и иже с ними). Как сделать так, чтобы при выборе питомца 1 ренпай выводил питомец_хэппи только из папки питомца 1? Т.е. питомец_хэппи из папки питомец 2 и 3 должны оставаться в игноре. 
Или, может, данную ситуацию можно по-другому обыграть в коде?
Буду благодарен за помощь!
smile_57


Благими намерениями вымощена дорога в ад

Katruna
Дата: Суббота, 19.06.2021, 22:15 | Сообщение # 1191
Модератор
Сообщений: 1273
Награды: 28
Ельница, не поняла, а в чем собственно проблема?
Делаете 3 папки, для каждого из петов.
А в коде прописываете, картинку через нужную папку:
"/image/pet_1/happy.png"
"/image/pet_2/sad.png"
"/image/pet_3/bored.png"

или в чем-то другом проблема?


Художник в душе и в жизни
Дракон в душе и в жизни
Butterfly effect

Ельница
Дата: Суббота, 19.06.2021, 23:41 | Сообщение # 1192
Пользователь
Сообщений: 3
Награды: 0
Katruna, вопрос в том, как сделать так, чтобы не пришлось каждый раз прописывать весь путь.
Условно в какой-то момент игры ГГ выбрал питомца 1 и это зафиксировалось в коде - в дальнейшем, если надо вызвать его спрайт, то достаточно написать happy, и ренпай будет выбирать этот спрайт только из папки питомец 1.


Благими намерениями вымощена дорога в ад

Katruna
Дата: Суббота, 19.06.2021, 23:57 | Сообщение # 1193
Модератор
Сообщений: 1273
Награды: 28
Ельница, Один раз придется прописать весь путь , а потом просто вызывать по названию картинки.

На примере, как это будет. Создаем для движка эмоцию третьего пета:
   
Код
image pet_3 sad = "image/pet_3/sad.png"

А дальше, вместо прописывания пути всей картинки, просто в нужный момент вызываешь нужную картинку по уже данному тобой названию, как пример: pet_3 sad.

А на счет фиксирования тут просто сделать проверку переменной с помощью If
Код
if persistent.pet_1 == True:    ### проверка, равно ли переменная пету первому
        show pet_1 sad                   ### если равна, то он покажет картинку первого пета
    elif persistent.pet_1 != True:    ### а если не равна
         show pet_2 sad                   ### покажет второго


Художник в душе и в жизни
Дракон в душе и в жизни
Butterfly effect


Сообщение отредактировал Katruna - Воскресенье, 20.06.2021, 09:53

Ельница
Дата: Воскресенье, 20.06.2021, 00:02 | Сообщение # 1194
Пользователь
Сообщений: 3
Награды: 0
Katruna, то, что было нужно)
Благодарю!!
happy


Благими намерениями вымощена дорога в ад

Kio_Kiyoshi
Дата: Суббота, 03.07.2021, 08:23 | Сообщение # 1195
Пользователь
Сообщений: 6
Награды: 0
Подскажите как опредилить активный label, чтоб после вызова функции его можно было перезапустить с новыми параметрами, тем самым получив новые варианты "развития сюжета"... скажем так

На практике есть не очень большой label, построен на кастомном меню выборов. При отображении меню проходит проверка переменных от которой зависит то что доступно игроку..

Также есть меню с кнопками, которые могут переключать переменные не зависимо от того были ли исполнены требования, но в конце каждого label есть функция которая делает это меню недоступным.. Скажем это меню работает только в промежутке опредиленных label..

Так от после нажатия такой кнопки нужно перезапустить label (в котором находится игрок) с новыми параметрами.

Как такое можно реализовать?

Заранее спасибо за потраченное время :)

dmit
Дата: Суббота, 03.07.2021, 12:48 | Сообщение # 1196
Проверенный
Сообщений: 258
Награды: 5
Код
init python:
    def label_callback(name, abnormal):
        if name.startswith("_"): return
        store.current_label = name

    config.label_callback = label_callback

label start:

label newL:
    "[current_label]"
https://lemmasoft.renai.us/forums/viewtopic.php?t=50597


планета FOREVER!!!      Unkenbro team


Сообщение отредактировал dmit - Суббота, 03.07.2021, 12:49

Kio_Kiyoshi
Дата: Суббота, 03.07.2021, 13:09 | Сообщение # 1197
Пользователь
Сообщений: 6
Награды: 0
Спасибо:) примерно понял, но на нужной ветке форума отработаю этот вопрос.

В догонку еще один вопрос.. О времени.

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

Уменя получается что при вызове новой метки все ламается.. Или пепезапускается таймер или ничено не работает вообще.

Если знаете хорошие примеры - буду рад помощи

dmit
Дата: Суббота, 03.07.2021, 15:05 | Сообщение # 1198
Проверенный
Сообщений: 258
Награды: 5
таймер в отдельном потоке?
Прикрепления: 3587979.txt(2.6 Kb)


планета FOREVER!!!      Unkenbro team

Kio_Kiyoshi
Дата: Суббота, 03.07.2021, 15:53 | Сообщение # 1199
Пользователь
Сообщений: 6
Награды: 0
Да.
Таймер в отдельном потоке.
Запускается вместе з началом игры. После окончания времени выкидывает на label start. Работает даже если игрок ничего не делает...и естественно при смене меток..

Добавлено (03.07.2021, 15:56)
---------------------------------------------
Спасибо... Я попробую реализовать по примеру который Вы показали.

Добавлено (03.07.2021, 16:11)
---------------------------------------------
Пример не тот ( Это хороший пример для меню с ограничением по времени..У меня такое работает только з прогресбаром, это удобно для использования внутри метки...

Мой сценарий:
Стартовая метка (Таймер запущен) - Метка 1 (таймер запущеный в стартовой метке все еще работает) - .... - Метка 12 (Таймер работает) - Метка # (Время закончилось перенестись к старовой метке и перезапустить таймер) ....

При вызове Метки 2 не могу перенести время в эту метку

Добавлено (03.07.2021, 16:21)
---------------------------------------------
Возможно я не правильно выразился...извените..

То что мне нужно хорошо обьяснить на системе смены времени суток, и самое важное это должно проверяться постоянно..(без паузы в чтенни текста) даже если я пойду гулять и забуду выключить игру.

Наример каждые 48 минут меняется игровой день. Не важно в какой метке я нахожусь..Каждую четвертую часть этого времени будет выводится оверлей отвечающий за время суток...день-ночь-утро и тд...

Я не могу вывести эти данные потому что не могу проверять их динамически...

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

 

Добавлено (03.07.2021, 16:36)
---------------------------------------------
Вот пример. Но после прыжка на новую метку все ламается

Добавлено (03.07.2021, 16:37)
---------------------------------------------
# This file demonstrates how to use DynamicDisplayable to make parts of the
# display that update without there being an interaction.

init:
    python:

        # This function will run a countdown of the given length. It will
        # be white until 5 seconds are left, and then red until 0 seconds are
        # left, and then will blink 0.0 when time is up.
        def countdown(st, at, length=0.0):

            remaining = length - st

            if remaining > 5.0:
                return Text("%.1f" % remaining, color="#fff", size=72), .1
            elif remaining > 0.0:
                return Text("%.1f" % remaining, color="#f00", size=72), .1
            else:
                # It's very important to hide the displayable, otherwise Ren'Py will keep showing it, keep trying to jump over and over again and get stuck.
                renpy.hide("countdown")
                renpy.jump("demo_dynamic_catch")
                return

    # Show a countdown for 10 seconds.
    image countdown = DynamicDisplayable(countdown, length=10.0)

label start:
    jump  demo_dynamic

label demo_dynamic:

    "The DynamicDisplayable function lets you change what's displayed over the course of an interaction."

    show countdown at Position(xalign=.1, yalign=.1)

    "This makes it possible to display things like countdown timers and progress bars."

    "Remember, people read at different speeds, so it's probably better to use this for flavor, rather then to make games time-sensitive."

    hide countdown
    with dissolve
    jump a

    return

label a:
    "А"

    jump b

label b:

    "B"

label demo_dynamic_catch:

    "And now the timer's run out."

    "The world is doomed!"

    "It's all your fault."

    return

Добавлено (04.07.2021, 10:54)
---------------------------------------------
Проблема решилась

Спасибо.

telurrsellinght
Дата: Вторник, 20.07.2021, 03:23 | Сообщение # 1200
Разработчик
Сообщений: 15
Награды: 8
Здравствуйте! Прошу помощи с главным меню. Получается, что сделали текст по середине, но когда, например, нажимаешь в главном меню на кнопку "загрузка", то кнопки меню все посередине. Как сделать, чтобы при нажатии на кнопки из главного меню показывали меню как во внутреннем?
Прикрепления: 2993187.jpg(25.6 Kb) · 4489756.jpg(25.9 Kb)


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