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

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

Admin

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

Runf

#407
Вопрос такой, нужно сделать возможность перемещения по локациям. Для этого пишу
Код
textbutton "Парк" action Jump("park")

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

Runf

#409
Спасибо, работает. Ну и дикий же синтаксис у этого вашего питона.

Почему нельзя как обычно прописать?
Код
textbutton "Парк" action
if: условие
    Jump("park")
else:
    иной результат


или хотя бы
Код
if: условие
    textbutton "Парк" action Jump("park")
else:
    иной результат
Сообщение отредактировал Runf - Пятница, 15/Сен/2017, 22:37

dmit

#410
Вам нравиться многострочные варианты а ля бейсик? такое тоже возможно :)
Код
textbutton "Парк":
        if x>0:
            action Jump("park")
        else:
            action None

Второй Ваш вариант логически другой. Там создаётся кнопка по условию, а не разное поведение кнопки по условию :)
Код
if x>0:
    textbutton "Парк" action Jump("nachalo")
else:
    textbutton "Парк" action None
Сообщение отредактировал dmit - Суббота, 16/Сен/2017, 07:55
планета FOREVER!!!      Unkenbro team

Runf

#411
Такой вопросик. При первом попадании в локацию проигрывается сценка, при втором не проигрывается, но есть поговорить с человеком в другой локации - в первой проигрывается новая сценка. И так десять вариантов, что вообще может быть в локации. В каждой локации! Понимаю, что это делается при помощи переменных, и делаю - работает. Но блин, как при этом не запутаться окончательно? Потому что игра маленькая, а от обилия переменных уже одуреваешь! Может есть какие-то статьи, как все это структурно организовать или типа того?

mrWebster

#412
Runf, вести список переменных. Например, в виде дерева или списком.
Вот простейшая структура:

Преимуществом данной структуры будет возможность отслеживать не только переменные, но и вести прочие заметки.
Сообщение отредактировал mrWebster - Среда, 20/Сен/2017, 17:11
Добро пожаловать во Мрак!

Runf

#413
О, я кажется придумал.
Переменная park в начале равна 1.
При первом входе в парк проигрывается сценка, в конце которой переменная сбрасывается на ноль.
При нуле у нас не будет происходить ничего.
Когда мы в другой локации совершим действие, меняющее переменную на 2, то при входе в парк проигрывается следующая сценка, в конце которой переменная также сбрасывает на ноль.
Код
label park:
    if park == 0:
        <вставка навигации>
    elif park == 1:
        "разное 1"
        $ park = 0
        jump park
    elif park == 2:
        "разное 2"
        $ park = 0
        jump park

Вот это хороший вариант кода?
Сообщение отредактировал Runf - Среда, 20/Сен/2017, 18:47

stop_control

#414
Подскажите пожалуйста работающий код для отключения и последующего включения видимости слоя 'screens' или экрана 'say' на слое 'screens'.

Вопрос снят:

window hide # Скрывает окно диалогов say
Сообщение отредактировал stop_control - Воскресенье, 24/Сен/2017, 08:10
«Иди пожалуйся своей мамочке»

stop_control

#415
Привет всем.
Очередной вопрос....

К примеру :
scene bg road_river_4_pano:
xanchor 0 yanchor 0 # Точка привязки изображения верхний левый угол
xpos -11033 ypos 0.0 # Переместить его на 11033 пикселей левее
linear 30.0 xpos 1920 ypos 0 # Движение в течение 30 сек налево
repeat # Повтор анимации

Фон двигается слева направо.
Каким оператором можно узнать текущие координаты точки привязки картинки?
«Иди пожалуйся своей мамочке»

mrWebster

#416
stop_control, если я правильно понимаю, то:
anchor (0,0) — он не зависит от положения изображения на экране;
pos (1920, 0) — истинно спустя 30 секунд.
Если нужно узнать, где в данный момент ползает изображение, то я затрудняюсь. На случай, если игрок пытается проскипать анимацию необходимо в ключевой точке указать, мгновенный прыжок к финальному положению этой анимации. Ключевой точкой обычно считаю момент, когда изображение начинает выполнять следующий ATL-код, однако ключевая точка может определяться и по-другому.
Добро пожаловать во Мрак!

stop_control

#417
mrWebster, с движением картинки по ATL функциям все понятно.

Картинка - кольцевая панорама и координаты нужны, чтобы когда она сделает круг подставить на другом слое продолжение панорамы, чтобы не было голого экрана.

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

Упрощенно нужен пример скрипта выводящий в реальном координаты, например мыши или изображения.
«Иди пожалуйся своей мамочке»

stop_control

#418
Вопрос про координаты мыши - снимаю.

init python:
__import pygame
__def dd_cursor_position(st, at):
____x, y = renpy.get_mouse_pos()
____ return Text("{size=-5}%d - %d"%(x, y)), .1

screen debug_tools():
__zorder 10**10
__add DynamicDisplayable(dd_cursor_position) xpos 10 yalign 0.99

label start:
__show screen debug_tools

Вопрос с координатами картинки - еще не решен.
«Иди пожалуйся своей мамочке»

Ikuku

#419
stop_control, вы усложняете себе задачу.

> Упрощенно нужен пример скрипта выводящий в реальном координаты, например мыши или изображения.
Получение координат мыши и получение координат изображения - разные вещи. Если считаете, что именно это вам надо - копайте в сторону методов get_image_bounds и get_placement (https://www.renpy.org/doc/html/displaying_images.html#renpy.get_image_bounds) для изображений, и в сторону get_mouse_pos() для курсора (уже не актуально, ок)

Но если задача только в том, чтобы сделать неразрывное кольцо-фон, можно сделать проще.

Кольцевая панорама делится пополам, получаются два фрагмента фона, А и Б, которые должны следовать друг за другом. Заканчивается А, начинается Б, заканчивается Б, начинается А. Допустим, размер каждого фрагмента - 1000 пикселей в ширину, время прокрутки - 10 секунд.

Создаем ATL. На старте картинка А устанавливается в x = 0, картинка Б - в x = 1000 (там, где заканчивается А). Они синхроннно едут справа налево в течение десяти секунд. В конце десяти секунд картинка А перемещается на х = -1000, картинка Б приезжает в х = 0. Волевым решением ставим А в х = 1000, повторяем цикл. Волевым решением ставим Б в х = 1000, повторяем цикл. И так далее.
Код
transform move_bg_a:
    xalign 0 xpos 0
    
    linear 10 xpos -1000
    xpos 1000
    linear 10 xpos 0
    repeat
    
transform move_bg_b:
    xalign 0 xpos 1000
    
    linear 10 xpos 0
    linear 10 xpos -1000
    xpos 1000
    
    repeat

label start:
    show expression ("bg-a.jpg") at move_bg_a
    show expression ("bg-b.jpg") at move_bg_b
    pause

В теории, наверное, можно попробовать эти два трансформа объединить в один, запараметризовав его, но уверенности у меня в этом нет, структурно блоки все-таки разные, а с условными операторами внутри ATL мало было практики (напрямую их использовать нельзя, к сожалению)

stop_control

#420
Ikuku, решил проблемку.
На практике все оказалось проще.
Надо было справа или слева повторить часть панорамы - ровно на ширину экрана. Тогда вывод идет бесшовно.
А с движением еще поковыряюсь.

Код

   $ image_x = 14873

    show bg road_river_4_pano:
        xanchor 0 yanchor 0             # Точка привязки изображения верхний левый угол
        xpos 1920-image_x ypos 0.0            # Переместить его на 12953 пикселей левее
        linear 30.0 xpos 0 ypos 0       # Движение в течение 10 сек налево
        repeat                          # Повтор анимации


Ikuku, я не усложняю. Я какие то вещи вижу конкретно, а реализацию для этого движка продолжаю искать на ощупь...
Очень много вопросов, на которые ответы так просто не найти.

Например в текстовой кнопке мне нужно повернуть текст на угол 30 градусов против часовой, что бы кнопка вписалась не разрушаю геометрию рисунка фона.
Интересует именно текстовая кнопка....
Прикрепления: 3282138.jpg (51.8 Kb)
Сообщение отредактировал stop_control - Пятница, 29/Сен/2017, 13:13
«Иди пожалуйся своей мамочке»
Форум о визуальных новеллах » Для разработчиков » Ren'Py » Помощь по Ren'Py (Вопрос\Ответ)
Поиск: