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

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


Я у мамы ямаман.

Runf
Дата: Понедельник, 04 Сентября 2017, 20:40 | Сообщение # 406
Проверенный
Сообщений: 27
Награды: 0
Репутация: 0
Замечания: 0%
Круто, работает!
Тогда еще вопрос, что вы могли бы рекомендовать для изучения ренпай и питона? Уроков находил много, в том числе и тут, но они все новичковые. А посложней что-то?


Сообщение отредактировал Runf - Понедельник, 04 Сентября 2017, 20:42

mrWebster
Дата: Понедельник, 04 Сентября 2017, 21:25 | Сообщение # 407
Друг сайта
Сообщений: 208
Награды: 0
Репутация: 32
Замечания: 20%
Цитата Runf ()
Тогда еще вопрос, что вы могли бы рекомендовать для изучения ренпай и питона?

Смотри официальную документацию. Там есть все.


Добро пожаловать во Мрак!

Runf
Дата: Пятница, 15 Сентября 2017, 21:13 | Сообщение # 408
Проверенный
Сообщений: 27
Награды: 0
Репутация: 0
Замечания: 0%
Вопрос такой, нужно сделать возможность перемещения по локациям. Для этого пишу
Код
textbutton "Парк" action Jump("park")

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

dmit
Дата: Пятница, 15 Сентября 2017, 22:42 | Сообщение # 409
Проверенный
Сообщений: 124
Награды: 0
Репутация: 17
Замечания: 0%
Код
textbutton "Парк" action If (x>0, Jump("park"), None )

кнопка не активна пока Х не больше 0


планета FOREVER!!!

Runf
Дата: Пятница, 15 Сентября 2017, 23:30 | Сообщение # 410
Проверенный
Сообщений: 27
Награды: 0
Репутация: 0
Замечания: 0%
Спасибо, работает. Ну и дикий же синтаксис у этого вашего питона.

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


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


Сообщение отредактировал Runf - Пятница, 15 Сентября 2017, 23:37

dmit
Дата: Суббота, 16 Сентября 2017, 08:50 | Сообщение # 411
Проверенный
Сообщений: 124
Награды: 0
Репутация: 17
Замечания: 0%
Вам нравиться многострочные варианты а ля бейсик? такое тоже возможно :)
Код
textbutton "Парк":
        if x>0:
            action Jump("park")
        else:
            action None

Второй Ваш вариант логически другой. Там создаётся кнопка по условию, а не разное поведение кнопки по условию :)
Код
if x>0:
    textbutton "Парк" action Jump("nachalo")
else:
    textbutton "Парк" action None


планета FOREVER!!!

Сообщение отредактировал dmit - Суббота, 16 Сентября 2017, 08:55

Runf
Дата: Среда, 20 Сентября 2017, 17:24 | Сообщение # 412
Проверенный
Сообщений: 27
Награды: 0
Репутация: 0
Замечания: 0%
Такой вопросик. При первом попадании в локацию проигрывается сценка, при втором не проигрывается, но есть поговорить с человеком в другой локации - в первой проигрывается новая сценка. И так десять вариантов, что вообще может быть в локации. В каждой локации! Понимаю, что это делается при помощи переменных, и делаю - работает. Но блин, как при этом не запутаться окончательно? Потому что игра маленькая, а от обилия переменных уже одуреваешь! Может есть какие-то статьи, как все это структурно организовать или типа того?

mrWebster
Дата: Среда, 20 Сентября 2017, 18:10 | Сообщение # 413
Друг сайта
Сообщений: 208
Награды: 0
Репутация: 32
Замечания: 20%
Runf, вести список переменных. Например, в виде дерева или списком.
Вот простейшая структура:

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


Добро пожаловать во Мрак!

Сообщение отредактировал mrWebster - Среда, 20 Сентября 2017, 18:11

Runf
Дата: Среда, 20 Сентября 2017, 19:43 | Сообщение # 414
Проверенный
Сообщений: 27
Награды: 0
Репутация: 0
Замечания: 0%
О, я кажется придумал.
Переменная 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, 19:47

stop_control
Дата: Воскресенье, 24 Сентября 2017, 08:15 | Сообщение # 415
Проверенный
Сообщений: 35
Награды: 0
Репутация: 5
Замечания: 0%
Подскажите пожалуйста работающий код для отключения и последующего включения видимости слоя 'screens' или экрана 'say' на слое 'screens'.

Вопрос снят:

window hide # Скрывает окно диалогов say


Сообщение отредактировал stop_control - Воскресенье, 24 Сентября 2017, 09:10

stop_control
Дата: Пятница, 29 Сентября 2017, 10:51 | Сообщение # 416
Проверенный
Сообщений: 35
Награды: 0
Репутация: 5
Замечания: 0%
Привет всем.
Очередной вопрос....

К примеру :
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
Дата: Пятница, 29 Сентября 2017, 12:11 | Сообщение # 417
Друг сайта
Сообщений: 208
Награды: 0
Репутация: 32
Замечания: 20%
stop_control, если я правильно понимаю, то:
anchor (0,0) — он не зависит от положения изображения на экране;
pos (1920, 0) — истинно спустя 30 секунд.
Если нужно узнать, где в данный момент ползает изображение, то я затрудняюсь. На случай, если игрок пытается проскипать анимацию необходимо в ключевой точке указать, мгновенный прыжок к финальному положению этой анимации. Ключевой точкой обычно считаю момент, когда изображение начинает выполнять следующий ATL-код, однако ключевая точка может определяться и по-другому.


Добро пожаловать во Мрак!

stop_control
Дата: Пятница, 29 Сентября 2017, 12:45 | Сообщение # 418
Проверенный
Сообщений: 35
Награды: 0
Репутация: 5
Замечания: 0%
mrWebster, с движением картинки по ATL функциям все понятно.

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

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

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

stop_control
Дата: Пятница, 29 Сентября 2017, 13:12 | Сообщение # 419
Проверенный
Сообщений: 35
Награды: 0
Репутация: 5
Замечания: 0%
Вопрос про координаты мыши - снимаю.

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
Дата: Пятница, 29 Сентября 2017, 13:43 | Сообщение # 420
Проверенный
Сообщений: 23
Награды: 2
Репутация: 80
Замечания: 0%
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 мало было практики (напрямую их использовать нельзя, к сожалению)
Форум о визуальных новеллах » Для разработчиков » Ren'Py » Помощь по Rep'Py (Вопрос\Ответ)
Поиск: