Пользователи · Поиск по форуму · · Вход в аккаунт · Регистрация |
Форум о визуальных новеллах » Для разработчиков » Ren'Py » Помощь по Ren'Py (Вопрос\Ответ) |
Помощь по Ren'Py (Вопрос\Ответ) |
Runf#407Вопрос такой, нужно сделать возможность перемещения по локациям. Для этого пишу
Код textbutton "Парк" action Jump("park") Но как сделать, чтобы локации открывались постепенно, в зависимости от значения переменных? Т.е. чтобы данная кнопка либо отсутствовала в меню, либо была не активна, пока ее активация не будет необходима по сюжету. |
dmit#408Код textbutton "Парк" action If (x>0, Jump("park"), None ) кнопка не активна пока Х не больше 0 планета FOREVER!!! Unkenbro team
|
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Такой вопросик. При первом попадании в локацию проигрывается сценка, при втором не проигрывается, но есть поговорить с человеком в другой локации - в первой проигрывается новая сценка. И так десять вариантов, что вообще может быть в локации. В каждой локации! Понимаю, что это делается при помощи переменных, и делаю - работает. Но блин, как при этом не запутаться окончательно? Потому что игра маленькая, а от обилия переменных уже одуреваешь! Может есть какие-то статьи, как все это структурно организовать или типа того?
|
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#416stop_control, если я правильно понимаю, то:
anchor (0,0) — он не зависит от положения изображения на экране; pos (1920, 0) — истинно спустя 30 секунд. Если нужно узнать, где в данный момент ползает изображение, то я затрудняюсь. На случай, если игрок пытается проскипать анимацию необходимо в ключевой точке указать, мгновенный прыжок к финальному положению этой анимации. Ключевой точкой обычно считаю момент, когда изображение начинает выполнять следующий ATL-код, однако ключевая точка может определяться и по-другому. |
stop_control#417mrWebster, с движением картинки по 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#419stop_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#420Ikuku, решил проблемку.
На практике все оказалось проще. Надо было справа или слева повторить часть панорамы - ровно на ширину экрана. Тогда вывод идет бесшовно. А с движением еще поковыряюсь. Код $ 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
«Иди пожалуйся своей мамочке»
|
| |||