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

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


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

Alex_Apple
Дата: Пятница, 13 Ноября 2015, 16:06 | Сообщение # 121
Проверенный
Сообщений: 33
Награды: 0
Репутация: 3
Замечания: 0%
ProstoiXXX, Переименуй скрин и используй show вместо call.

Сообщение отредактировал Alex_Apple - Пятница, 13 Ноября 2015, 17:51

SteepJoe98
Дата: Пятница, 13 Ноября 2015, 20:40 | Сообщение # 122
Пользователь
Сообщений: 1
Награды: 0
Репутация: 0
Замечания: 0%
Всем привет, вот вопрос мучает можно ли сделать новеллу по эпизодам? Прям как Telltale Games любит делать. Если да, то как с сохранением будут обстоять дела?
(зарание спасибо)

Alex_Apple
Дата: Пятница, 13 Ноября 2015, 21:51 | Сообщение # 123
Проверенный
Сообщений: 33
Награды: 0
Репутация: 3
Замечания: 0%
SteepJoe98, А что с сохранениями? Создать в конце игры фаил с данными с помощью питона. Потом открыть с помощью питона и сохранить в виде переменных. Правда я не знаю можно ли сохранить фаил отдельно от игры, где-нибудь в AppData, а потом его оттуда вычитать. А так придеться игрока просить перекинуть.

ProstoiXXX
Дата: Четверг, 19 Ноября 2015, 14:18 | Сообщение # 124
Проверенный
Сообщений: 6
Награды: 0
Репутация: 0
Замечания: 0%
Есть маленькая проблема в реализации моего желания:) Помогите пожалуйста.
Вкратце проблема такова:
Создаю комнату, но в ней хочу вывести активны кнопки через картинки(imagebutton). То есть когда игрок заходит в комнату, помимо того что он может путешествовать по текстовым кнопкам(textbutton), он также может путешествовать через картинки.И взаимодействовать с комнатой тоже через картинки.
Про кнопки с изображением взял с ютуба Ссылка на ролик

Код

label home:
    show home at left

    #Действие №1
    $ ui.vbox(xpos=0.1, ypos=0.2)
    $ ui.imagebutton("images/dver.jpg", "images/dver2.jpg", clicked=ui.returns("deystvie_dver"))
    $ ui.close()

    # Действие №2
    $ ui.vbox(xpos=0.5, ypos=0.5)
    $ ui.imagebutton("images/krovat.jpg", "images/krovat2.jpg", clicked=ui.returns("deystvie_krovat"))
    $ ui.close()

    $ result = ui.interact()
            
    if result == "deystvie_dver":
        jump kitchen
    if result == "deystvie_krovat":
        jump krovat

    screen home:
        fixed:
            text 'Ваша комната.' xalign 0.0 yalign 1.0 style style.description
            textbutton 'Кухня' xalign 0.05 yalign 0.4 action Function(move, 'kitchen')
            textbutton 'Спальня' xalign 0.05 yalign 0.5 action Function(move, 'bedroom')
            textbutton 'Ванная' xalign 0.45 yalign 0.3 action Function(move, 'bathroom')
            textbutton 'Улица' xalign 0.7 yalign 0.85 action Function(move, 'street')
    call screen home


При клику по первом действие, ГГ переходит в кухню, при клике на втором действие, герой дожиться спать. Сами кнопки(imagebutton) работают, и перекидывают куда надо. Но возникла проблема:
Не показывается, то что ниже screen home. То есть на экран выводяться только imagebutton, а textbutton не выводяться. При попытке разместить код imagebutton в screen home выдает море ошибок.

Alex_Apple
Дата: Четверг, 19 Ноября 2015, 14:55 | Сообщение # 125
Проверенный
Сообщений: 33
Награды: 0
Репутация: 3
Замечания: 0%
ProstoiXXX, Мне лень проверять. Попробуй скрин и call поставить выше. После show home at left.

Alex_Apple
Дата: Четверг, 19 Ноября 2015, 15:49 | Сообщение # 126
Проверенный
Сообщений: 33
Награды: 0
Репутация: 3
Замечания: 0%
Неудержался и проверил. После чего у меня перестали отбражаться imagebutton. Исправил сменой call screen home на show screen home. Далее нашел такую проблему. При активации текстовых кнопок всё врем кидает на следующий label, то есть кнопка тупо не работает. Исправил так:
Код
textbutton 'Кухня' xalign 0.05 yalign 0.4 action Jump('kitchen')
            textbutton 'Спальня' xalign 0.05 yalign 0.5 action Jump('bedroom')
            textbutton 'Ванная' xalign 0.45 yalign 0.3 action Jump('bathroom')
            textbutton 'Улица' xalign 0.7 yalign 0.85 action Jump('street')

Хотя возможно это только у меня такая проблема.

ProstoiXXX
Дата: Четверг, 19 Ноября 2015, 16:37 | Сообщение # 127
Проверенный
Сообщений: 6
Награды: 0
Репутация: 0
Замечания: 0%
Alex_Apple если через jump делать, то как привязать к этому переменные? При переходе из комнаты в комнату тратиться время и энергия. Просто предыдущий вариант работал.
Код
label dr_spalnya:
    scene bg dr_spalnya:
        xalign 0.5
        yalign 0.0
    show levo at left
    show pravo at right
    show niz at center

    screen dr_spalnya:
        fixed:
            
            text "Спальня." xalign 0.30 yalign 0.80
            textbutton "Кухня" xalign 0.20 yalign 0.01 action Function(move, "dr_kuchnya")
            textbutton "Спальня" xalign 0.30 yalign 0.01 action Function(move, "dr_spalnya")
            textbutton "Ванная" xalign 0.40 yalign 0.01 action Function(move, "dr_vanna")
            textbutton "Детская" xalign 0.50 yalign 0.01 action Function(move, "dr_komnata")
            textbutton "Гостинная" xalign 0.60 yalign 0.01 action Function(move, "dr_gostinnaya")
            textbutton "Прихожая" xalign 0.70 yalign 0.01 action Function(move, "dr_prichojaya")
            textbutton "Улица" xalign 0.80 yalign 0.01 action Function(move, "dr_ulica")
    call screen dr_spalnya

У меня вот допустим этот код работает на ура, а с имейджботтон проблемы


Сообщение отредактировал ProstoiXXX - Четверг, 19 Ноября 2015, 16:37

Alex_Apple
Дата: Четверг, 19 Ноября 2015, 19:02 | Сообщение # 128
Проверенный
Сообщений: 33
Награды: 0
Репутация: 3
Замечания: 0%
ProstoiXXX, Если у тебя работает, то зачем менять? Оставляй. Просто у меня не работает. Возможно по причине отсутвтвия какой-то другой важной части кода. Или еще чего-нибудь.
Скажу только что textbutton должен идти перед imagebutton и вызываться через show, а не call. Потому-что код после imagebutton не будет выполняться. А call вызывает screen (или label) и работает до комманды return. После этого он возврачается на место на котором был вызван и продолжает код. А show просто показывает screen.

ProstoiXXX
Дата: Четверг, 19 Ноября 2015, 21:47 | Сообщение # 129
Проверенный
Сообщений: 6
Награды: 0
Репутация: 0
Замечания: 0%
Алекс подсказали) просто по другому имиджботоны задавать надо было:)
Но возник новый вопрос:) Как сделать время?
В моей голове он выглядит так.
Код
if minuta >= 60:
    minuta -= 60
    hour += 1    

if hour >= 24:
    hour -= 24
    weekday += 1
    number += 1

if weekday >= 8:
    weekday -= 7

if number >= 31:
    number -= 30
    month += 1

if month >= 13:
    month -= 12
    year += 1

Теперь только понять бы, правильно я себе его представляю или нет)? И куда переменные с названием месяцев и дней недели писать надо)

Bradart
Дата: Суббота, 21 Ноября 2015, 04:22 | Сообщение # 130
Пользователь
Сообщений: 2
Награды: 0
Репутация: 0
Замечания: 0%
Доброго времени суток.
smile_13
Подскажите: возможно ли сделать каким либо образом сохранение прогресса в игре? То есть при прохождении ветки - где то сохранялась информация об этом. smile_57
Иначе говоря: "Чтоб пройти одну ветку, нужно для начала пройти другую или несколько других."

Заранее спасибо.

---------------
Если я правильно понял - необходимо создать глобальную логическую переменную(key), значение которой изначально равно 0. Затем при прохождении ветки меняем на 1 и при прохождении другой ветки проверяем key==1?
Вопрос в том - возможно ли это и если возможно то как?

Добавлено (21.11.15, 04:22)
---------------------------------------------
smile_13 smile_13 smile_13


Сообщение отредактировал Bradart - Суббота, 21 Ноября 2015, 04:27

Alex_Apple
Дата: Суббота, 21 Ноября 2015, 11:51 | Сообщение # 131
Проверенный
Сообщений: 33
Награды: 0
Репутация: 3
Замечания: 0%
Bradart, Ты имеешь ввиду что после прохождения игры с определенной веткой, при начале новой игры будет доступна ранее не доступная ветка?
Создаём переменную в конце ветки.
Код
if persistent.key == None:
    $ persistent.key = True

Ну и проверяем в нужных местах.

Alex_Apple
Дата: Суббота, 21 Ноября 2015, 11:54 | Сообщение # 132
Проверенный
Сообщений: 33
Награды: 0
Репутация: 3
Замечания: 0%
ProstoiXXX, У тебя же есть пример с вики, ты забыл про что не все месяцы равны 31 дню, а еще ты забыл про високосные и не високосные годы. Если только у тебя фэнтези мир. Переменные с месяцами и днями недели можешь писать там же где и код проверки.
Я бы использовал код с вики. Его только исправить, чтобы месяцы и годы менялись и информацию как надо показывал.


Сообщение отредактировал Alex_Apple - Суббота, 21 Ноября 2015, 11:56

Bradart
Дата: Суббота, 21 Ноября 2015, 12:51 | Сообщение # 133
Пользователь
Сообщений: 2
Награды: 0
Репутация: 0
Замечания: 0%
Alex_Apple, Спасибо огромное! Не мог разобраться.)
happy funny

Добавлено (21.11.15, 12:51)
---------------------------------------------
smile_27 Работает!!! Это всё меняет на корню! smile_39

ProstoiXXX
Дата: Воскресенье, 22 Ноября 2015, 02:03 | Сообщение # 134
Проверенный
Сообщений: 6
Награды: 0
Репутация: 0
Замечания: 0%
Господа вопрос опять по часам и времени. За образец брал статью на Вике.Ссылка на часы в Вике

Создаю файл Vremya.rpy. Код который в файле, под спойлером.


Потом в label start создаю переменные.
Код

    $ minutes = 750#must be initially defined.
    $ clock = True#make false to hide the calendar
    $ theweekday = 3#tuesday, the number of the weekday, this automatically changes but must be initially assigned
    $ themonth = 9#september, the number of the month, this automatically changes but must be initially assigned
    $ theday = 21#this automatically changes but must be initially assigned
    $ theyear = 2010#this automatically changes but must be initially assigned
    $ dayofyear = 264#you must calculate this properly, this automatically changes
    $ yearlim = 365#initially define it as 265 or 366, whichever is correct, this gets changed automatically later
    $ daylim = 30#initially define it as 28, 29, 30, or 31, whichever is correct, this gets changed automatically later
    $ stringweekday = "Tuesday"#3, the string of the weekday, this automatically changes but must be initially assigned
    $ stringmonth = "September"#9, the string of the month, this automatically changes but must be initially assigned


Потом через init такую часть кода, чтоб выводить на экран время с календарем.
Код

init:
    screen vremya:
        if(clock):
            $ Calendar()
            $ Clocks()


Потом через label start вывожу время.
Код

label start:
    show screen vremya

Все работает, все великолепно. Время двигаю вот таким способом $ minutes +=15. То есть когда код выгляди как ниже, все работает. Крутиться часы, дни, недели, месяцы и годы.
Код

label proverka:
    '1'
    $ minutes += 30
    '2'
    $ minutes += 30
    '3'
    $ minutes += 30

Но после этого возникает проблема. Я создал локации, и они прекрасно работают. Чтоб перемещаться между ними textbutton Как я это реализовал, описано кодом ниже.
Код

label dr_kuchnya:
    scene bg dr_kuchnya
    screen dr_kuchnya:
        fixed:
            text 'Кухня.' xalign 0.30 yalign 0.80
            textbutton 'Кухня' xalign 0.01 yalign 0.01 action Function(move, 'dr_kuchnya')
            textbutton 'Поесть' xalign 0.4 yalign 0.6 action [Function(move, 'dr_kuchnya')]
            textbutton 'ПРОВЕРКА' xalign 0.5 yalign 0.5 action Jump('proverka')
            textbutton 'Спальня' xalign 0.01 yalign 0.06 action Function(move, 'dr_spalnya')
            textbutton 'Ванная' xalign 0.01 yalign 0.11 action Function(move, 'dr_vanna')
            textbutton 'Детская' xalign 0.01 yalign 0.16 action Function(move, 'dr_komnata')
            textbutton 'Гостинная' xalign 0.01 yalign 0.21 action Function(move, 'dr_gostinnaya')
            textbutton 'Прихожая' xalign 0.01 yalign 0.26 action Function(move, 'dr_prichojaya')
            textbutton 'Улица' xalign 0.01 yalign 0.31 action Function(move, 'dr_ulica')
    call screen dr_kuchnya

Функция [b]move [/b ]выглядит так.
Код

init -1 python:
    def move(where):
            global energy, minutes
            energy -= 1
            minutes += 30
            renpy.jump(where)

То есть при перемещение по комнатам, каждый раз прибавляется 30 минут, и это тоже все прекрасно работает. Но есть проблема. Сутки не обновляется. То есть после 12:59PM, не происходит прыжок к 1:00АМ, а продолжает крутить PM. То есть вначале 18:00PM потом и 42:00РМ и так далее. Подскажите как это прекратить? Как сделать обновления суток?

Alex_Apple
Дата: Воскресенье, 22 Ноября 2015, 04:17 | Сообщение # 135
Проверенный
Сообщений: 33
Награды: 0
Репутация: 3
Замечания: 0%
ProstoiXXX, Странно это. Я долго думал и решил, что если через def не изменяется то надо подругому.
И так для начала:
Код
label move:
    $ energy -= 1
    $ minutes += 30
    return

Затем:
Код
            textbutton 'Кухня' xalign 0.01 yalign 0.01 action ui.callsinnewcontext('move'), Jump('dr_kuchnya')
            textbutton 'Поесть' xalign 0.4 yalign 0.6 action ui.callsinnewcontext('move'), Jump ('dr_kuchnya')
            textbutton 'ПРОВЕРКА' xalign 0.5 yalign 0.5 action Jump('proverka')
            textbutton 'Спальня' xalign 0.01 yalign 0.06 action ui.callsinnewcontext('move'), Jump ('dr_spalnya')
            textbutton 'Ванная' xalign 0.01 yalign 0.11 action ui.callsinnewcontext('move'), Jump ('dr_vanna')
            textbutton 'Детская' xalign 0.01 yalign 0.16 action ui.callsinnewcontext('move'), Jump ('dr_komnata')
            textbutton 'Гостинная' xalign 0.01 yalign 0.21 action ui.callsinnewcontext('move'), Jump ('dr_gostinnaya')
            textbutton 'Прихожая' xalign 0.01 yalign 0.26 action ui.callsinnewcontext('move'), Jump ('dr_prichojaya')
            textbutton 'Улица' xalign 0.01 yalign 0.31 action ui.callsinnewcontext('move'), Jump ('dr_ulica')
Форум о визуальных новеллах » Форум о визуальных новеллах » Ren'Py » Помощь по Rep'Py (Вопрос\Ответ)
Страница 9 из 23«1278910112223»
Поиск: