Пользователи · Поиск по форуму · · Вход в аккаунт · Регистрация |
Форум о визуальных новеллах » Для разработчиков » Ren'Py » Помощь по Ren'Py (Вопрос\Ответ) |
Помощь по Ren'Py (Вопрос\Ответ) |
Alex_Apple#121ProstoiXXX, Переименуй скрин и используй show вместо call.
Сообщение отредактировал Alex_Apple - Пятница, 13/Ноя/2015, 16:51
|
SteepJoe98#122Всем привет, вот вопрос мучает можно ли сделать новеллу по эпизодам? Прям как Telltale Games любит делать. Если да, то как с сохранением будут обстоять дела?
(зарание спасибо) |
Alex_Apple#123SteepJoe98, А что с сохранениями? Создать в конце игры фаил с данными с помощью питона. Потом открыть с помощью питона и сохранить в виде переменных. Правда я не знаю можно ли сохранить фаил отдельно от игры, где-нибудь в AppData, а потом его оттуда вычитать. А так придеться игрока просить перекинуть.
|
ProstoiXXX#124Есть маленькая проблема в реализации моего желания:) Помогите пожалуйста.
Вкратце проблема такова: Создаю комнату, но в ней хочу вывести активны кнопки через картинки(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#125ProstoiXXX, Мне лень проверять. Попробуй скрин и call поставить выше. После show home at left.
|
Alex_Apple#126Неудержался и проверил. После чего у меня перестали отбражаться 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#127Alex_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, 15:37
|
Alex_Apple#128ProstoiXXX, Если у тебя работает, то зачем менять? Оставляй. Просто у меня не работает. Возможно по причине отсутвтвия какой-то другой важной части кода. Или еще чего-нибудь.
Скажу только что textbutton должен идти перед imagebutton и вызываться через show, а не call. Потому-что код после imagebutton не будет выполняться. А call вызывает screen (или label) и работает до комманды return. После этого он возврачается на место на котором был вызван и продолжает код. А show просто показывает screen. |
ProstoiXXX#129Алекс подсказали) просто по другому имиджботоны задавать надо было:)
Но возник новый вопрос:) Как сделать время? В моей голове он выглядит так. Код 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#130Доброго времени суток.
Подскажите: возможно ли сделать каким либо образом сохранение прогресса в игре? То есть при прохождении ветки - где то сохранялась информация об этом. Иначе говоря: "Чтоб пройти одну ветку, нужно для начала пройти другую или несколько других." Заранее спасибо. --------------- Если я правильно понял - необходимо создать глобальную логическую переменную(key), значение которой изначально равно 0. Затем при прохождении ветки меняем на 1 и при прохождении другой ветки проверяем key==1? Вопрос в том - возможно ли это и если возможно то как? Добавлено (21.11.15, 04:22) --------------------------------------------- Сообщение отредактировал Bradart - Суббота, 21/Ноя/2015, 03:27
|
Alex_Apple#131Bradart, Ты имеешь ввиду что после прохождения игры с определенной веткой, при начале новой игры будет доступна ранее не доступная ветка?
Создаём переменную в конце ветки. Код if persistent.key == None: $ persistent.key = True Ну и проверяем в нужных местах. |
Alex_Apple#132ProstoiXXX, У тебя же есть пример с вики, ты забыл про что не все месяцы равны 31 дню, а еще ты забыл про високосные и не високосные годы. Если только у тебя фэнтези мир. Переменные с месяцами и днями недели можешь писать там же где и код проверки.
Я бы использовал код с вики. Его только исправить, чтобы месяцы и годы менялись и информацию как надо показывал. Сообщение отредактировал Alex_Apple - Суббота, 21/Ноя/2015, 10:56
|
ProstoiXXX#134Господа вопрос опять по часам и времени. За образец брал статью на Вике.Ссылка на часы в Вике
Создаю файл 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#135ProstoiXXX, Странно это. Я долго думал и решил, что если через 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') |
| |||