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

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

Admin

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

total

#301
я тут заморочился сделать прокрутку в окне save load
через viewport же. и в нем grid
Так вот, последняя строка сетки полностью не помещается, какие бы размеры я не задавал

Код
$ columns = 3
    $ rows = 6

    frame:
        style_group 'saveload'
        xpos 710
        ypos 156
        ymaximum 700
      
        
        viewport id "sl":
            mousewheel True
            area (0,20,1200,750)
            child_size (1200, 750)  ##- вот это НЕ решает проблему
            
           
                
            grid columns rows:
                transpose False
                xfill False
                yfill False
                spacing 40
            
    

                for i in range(1, columns * rows + 1):
                    button:
                        xpos 35
                        ypos 35
                        xminimum 330
                        xmaximum 330
                        ymaximum 200
                       background "images/interface/saveload/slot_empty.png"
                        foreground "images/interface/saveload/slot_empty.png"
                        hover_foreground "images/interface/saveload/slot_hover.png"
                        action FileAction(i)

                        add FileScreenshot(i) yoffset 1 xoffset -10
                    
                        $ file_name = FileSlotName(i, columns * rows)
                        $ file_time = FileTime(i, empty=_("Пусто"))
                        $ save_name = FileSaveName(i)
                    
                        text "{b}[file_name]. [file_time!t]\n[save_name!t]{/b}" size 24 ypos 180 xalign 0.58 color "#000"
                        key "save_delete" action FileDelete(i)
                
                    
        add "images/interface/options/vbar.png" xpos 1150
        vbar xpos 1150 ymaximum 820 idle_top_bar None idle_bottom_bar None idle_thumb "images/interface/options/polzunok_vbar.png" hover_thumb "images/interface/options/polzunok_vbar.png"  value YScrollValue("sl")


как сделать отступ снизу сетки в viewport'е?
Следуй за черным котиком, и он расскажет тебе много историй. Расскажи и ты свою (в игре есть мастерская)

dmit

#302
Попробуйте:
Код
frame:
        style_group 'saveload'
        xpos 710
        ypos 0 #мжб вы сдвинули фраме за границу экрана?
        ymaximum 700
      
        
        viewport id "sl":
            scrollbars "vertical" # бегунок покажет где низ viewport
планета FOREVER!!!      Unkenbro team

dmit

#304
Вызывает сомнения всякие отступы ypos, spacing ... В стиле grid возможно тоже они присутствуют. по видимому что-то не учитывается. Без grid такого не наблюдается.
Ну если решить не заморачиваясь, то вставьте после grid пустой элемент - подтолкните grid.
типа:
has vbox
grid columns rows:
.....
.....
image Null(64, 64)
Сообщение отредактировал dmit - Понедельник, 02/Янв/2017, 20:21
планета FOREVER!!!      Unkenbro team

Siel

#307
nastia_manko, вот код)
Код
init python:
    # окно игры в центре экрана
    import os
    os.environ['SDL_VIDEO_CENTERED'] = '1'
    # автоматическое объявление изображений
    config.automatic_images_minimum_components = 1
    config.automatic_images = [' ', '_', '/']
    config.automatic_images_strip = ['images']
    # вспышка
    flash  = Fade(.25, 0, .5, color="#fff")
    flash2 = Fade(.25, 0, .5, color="#222")

# настройки игры:
    # максимальное значение шкалы
    max_points = 100
    # название картинки (без нумерации кадров)
    img_name = "n"
    # первый и последний кадры анимации
    minN = 1
    maxN = 14
    # значение, на которое прибавляется шкала при клике
    # (т.е. сложность игры. 2.0 - очень сложно, 3.0 - легко)
    points_plus = 2.5

# переменные по умолчанию
    # при желании можно поменять и это значение,
    # чтобы точнее подобрать баланс игры
    points_minus = 1.0
    # допустимое время между кликами или
    # скорость анимации (время между сменой кадров)
    ani_time = .1
    # текущий кадр
    number = 0
    # инкремент кадра (+1/-1)
    plus = 1
    # шкала, которую нужно заполнить
    points = 0
    # недавно был клик
    clicked = True
    # смена кадров анимации, если клик был недавно
    # и перерисовка экрана, чтобы увидеть изменения
    def NextFrameF():
        global points, number, plus, clicked
        # если клик был недавно, то продолжаем анимацию,
        # иначе следующего кадра не будет. пауза
        if clicked:
            # следующий/предыдущий кадр
            number += plus
            # если за пределы числа кадров, то анимация в обратную сторону
            if number > maxN:
                number = maxN - 1
                plus = -plus
            if number < minN:
                number = minN + 1
                plus = -plus
        # уменьшение шкалы, если давно не было клика
        points -= points_minus
        if points < 0:
            points = 0
        clicked = False
        # перерисовка экрана
        renpy.restart_interaction()
    # функция → action
    NextFrame = renpy.curry(NextFrameF)

# экран игры
screen clicker:
    # это чтобы игра не продолжилась по клику мышкой
    modal True
    # сбрасываем настройки игры при появлении экрана
    on "show" action [SetVariable("number", 0), SetVariable("plus", 1), SetVariable("clicked", True)]
    # меняем кадр, если клик был недавно,
    # и проверяем на проигрыш
    timer ani_time repeat True action [NextFrame(), If(points <= 0, true=Return(False), false=NullAction())]
    # картинка с анимацией
    add img_name + str(number)
    # отображаем невидимую кнопку для кликов
    # по нажатию прибавляем шкалу и устанавливаем флаг клика
    button:
        text _(" ")
        xfill True
        yfill True
        background "#00000001"
        # если шкала полная, то конец игры, победа
        action [SetVariable("points", points + points_plus), SetVariable("clicked", True), If(points >= max_points, true=Return(True), false=NullAction())]
    # альтернативное нажатие с клавиатуры
    key "K_SPACE" action [SetVariable("points", points + points_plus), SetVariable("clicked", True), If(points >= max_points, true=Return(True), false=NullAction())]
    # индикатор
    vbar value StaticValue(points, max_points):
        align (0, 0) # положение на экране
        maximum (150, 150) # размеры
        left_bar "heartempty" # пустое сердце
        right_bar "heart" # полное сердце
        thumb None # тут можно поставить разделитель
        thumb_shadow None # и тень

label start:
    # всякие ненужные штуки для оформления
    scene expression (img_name + "0")
    pause .5
    show expression Text("Приготовились!") at truecenter as txt
    with dissolve
    pause
    hide txt
    # начать с 10 очков, чтобы не проиграть сразу же
    $ points = 10

    # ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
    call screen clicker # ←  игра
    # ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑

    # дальше снова пошли всякие ненужные вещи:
    # показываем результаты игры
    if _return:
        # перематываем анимацию до последнего кадра
        while number < maxN:
            $ number += 1
            scene expression (img_name + str(number))
            $ renpy.pause(ani_time, hard=True)
        scene expression (img_name + str(maxN))
        with flash
        show expression Text("Победа!") at truecenter as txt
    else:
        # перематываем анимацию до первого кадра
        while number > 1:
            $ number -= 1
            scene expression (img_name + str(number))
            $ renpy.pause(ani_time, hard=True)
        scene expression (img_name + "0")
        with flash2
        show expression Text("Проигрыш.") at truecenter as txt
    # жесткая пауза на случай, если игрок всё еще лупит по кнопке
    $ renpy.pause(1.0, hard=True)
    hide txt
    with dissolve
    return
Енот Тян

RiokoRain

#308
Цитата GREY ()
RiokoRain, https://www.youtube.com/watch?v=hlrkynF-rlk это для старой версии... но и в новой это прекрасно работает. 1137 строчка в screens.rpy


Цитата dmit ()
RiokoRain, я бы, не ища, просто написал свой текст:
text _("Сделано в {a=https://www.renpy.org/}Ren'Py{/a} Свой текст")


Спасибо за попытку, но это всё совсем не то :< В новой версии в "о программе" есть строчка с ссылкой на лицензии Рен'Пая
И у меня начинает складываться ощущение, что она попросту нередактируемая, хотя мне сложно это представить в условиях данного движка.
Думаю, я просто оставлю её так, как она есть..

dmit

#310
Почему нет? тут показано как разместить анимацию методом add.
Так же, можно прокручивать анимацию при наведении на область. Просто объявите для hover не статичную картинку, а анимацию (к примеру:
Код
image astr = anim.Filmstrip("aa2.png", (400, 566), (18, 1), .1)
.....
imagemap:
            ground "mmo.png"   
            hover "astr"
Сообщение отредактировал dmit - Среда, 18/Янв/2017, 20:11
планета FOREVER!!!      Unkenbro team

dmit

#311
Цитата RiokoRain ()
есть строчка с ссылкой на лицензии Рен'Пая

А ктоВам запрещает в Своём тексте сделать ссылку (куда угодно, в том числе и на лицензию)
smile_61
планета FOREVER!!!      Unkenbro team

RiokoRain

#312
Цитата dmit ()
Почему нет? тут показано как разместить анимацию методом add.
Так же, можно прокручивать анимацию при наведении на область.


Благодарности *_* то, что нужно

ne_fikys

#314
Доброго времени суток, есть такая проблема, при компиляции скриптов при помощи renpy-6.99.10-sdk, стал вылетать пустой traceback, без указания ссылок на ошибки. Подскажите, какой процесс блокируется и как все вернуть как было.

mrWebster

#315
Вопрос касаемо выборов в RenPy:
Есть ли внутренние функции, реализующие "не активные" или "запрещенные" варианты меню? Положим, дается n вариантов ответа, но один из них на сером фоне, и выбрать его нельзя, пока не будет истинным условие.
Сообщение отредактировал mrWebster - Воскресенье, 29/Янв/2017, 14:57
Добро пожаловать во Мрак!
Форум о визуальных новеллах » Для разработчиков » Ren'Py » Помощь по Ren'Py (Вопрос\Ответ)
Поиск: