Renpy обработка сценария завершилась неудачно почему

The Ren'Py Visual Novel Engine. Contribute to renpy/renpy development by creating an account on GitHub.
translate russian strings: # 00gltest.rpy:70 old «Renderer« new «Рендер« # 00gltest.rpy:74 old «Automatically Choose« new «Выбирать Автоматически« # 00gltest.rpy:79 old «Force Angle/DirectX Renderer« new «Принудительный Angle/DirectX« # 00gltest.rpy:83 old «Force OpenGL Renderer« new «Принудительный OpenGL« # 00gltest.rpy:87 old «Force Software Renderer« new «Принудительный Программный« # 00gltest.rpy:93 old «NPOT« new «NPOT (OpenGL 2+)« # 00gltest.rpy:97 old «Enable« new «Активировано« # 00gltest.rpy:131 old «Powersave« new «Экономия энергии« # 00gltest.rpy:145 old «Framerate« new «Частота кадров« # 00gltest.rpy:149 old «Screen« new «Экранная« # 00gltest.rpy:153 old «60« new «60« # 00gltest.rpy:157 old «30« new «30« # 00gltest.rpy:163 old «Tearing« new «Разрывание кадров« # 00gltest.rpy:179 old «Changes will take effect the next time this program is run.« new «Изменения вступят в силу при следующем запуске программы.« # 00gltest.rpy:213 old «Performance Warning« new «Предупреждение Производительности« # 00gltest.rpy:218 old «This computer is using software rendering.« new «Этот компьютер использует программный рендеринг.« # 00gltest.rpy:220 old «This computer is not using shaders.« new «Этот компьютер не использует шейдеры.« # 00gltest.rpy:222 old «This computer is displaying graphics slowly.« new «Этот компьютер медленно отображает графику.« # 00gltest.rpy:224 old «This computer has a problem displaying graphics: [problem].« new «У этого компьютера проблема с отображением графики: [problem]« # 00gltest.rpy:229 old «Its graphics drivers may be out of date or not operating correctly. This can lead to slow or incorrect graphics display. Updating DirectX could fix this problem.« new «Графические драйвера устарели или работают неверно. Это может привести к медленному или неверному отображению графики. Обновление DirectX может решить эту проблему.« # 00gltest.rpy:231 old «Its graphics drivers may be out of date or not operating correctly. This can lead to slow or incorrect graphics display.« new «Графические драйвера устарели или работают неверно. Это может привести к медленному или неверному отображению графики.« # 00gltest.rpy:236 old «Update DirectX« new «Обновить DirectX« # 00gltest.rpy:242 old «Continue, Show this warning again« new «Продолжить, Показать это предупреждение снова« # 00gltest.rpy:246 old «Continue, Don’t show warning again« new «Продолжить, Не показывать это предупреждение снова.« # 00gltest.rpy:264 old «Updating DirectX.« new «Обновляю DirectX.« # 00gltest.rpy:268 old «DirectX web setup has been started. It may start minimized in the taskbar. Please follow the prompts to install DirectX.« new «Установщик DirectX был запущен. Возможно, что он запустился в свёрнутом состоянии. Пожалуйста, следуйте инструкциям для установки DirectX.« # 00gltest.rpy:272 old «{b}Note:{/b} Microsoft’s DirectX web setup program will, by default, install the Bing toolbar. If you do not want this toolbar, uncheck the appropriate box.« new «{b}Предупреждение:{/b} Установщик DirectX по умолчанию пытается установить панель инструментов Bing. Если вы этого не хотите, снимите соответствующую галочку.« # 00gltest.rpy:276 old «When setup finishes, please click below to restart this program.« new «По завершению установки, щёлкните, чтобы перезапустить программу.« # 00gltest.rpy:278 old «Restart« new «Перезапустить« # 00gamepad.rpy:32 old «Select Gamepad to Calibrate« new «Выберите Геймпад для Калибровки« # 00gamepad.rpy:35 old «No Gamepads Available« new «Геймпады Не Обнаружены« # 00gamepad.rpy:54 old «Calibrating [name] ([i]/[total])« new «Калибрую [name] ([i]/[total])« # 00gamepad.rpy:58 old «Press or move the [control!s] [kind].« new «Нажмите или передвиньте [control!s] [kind].« # 00gamepad.rpy:66 old «Skip (A)« new «Skip (A)« # 00gamepad.rpy:69 old «Back (B)« new «Back (B)« # _errorhandling.rpym:529 old «Open« new «Журнал« # _errorhandling.rpym:531 old «Opens the traceback.txt file in a text editor.« new «Открывает файл traceback.txt в текстовом редакторе.« # _errorhandling.rpym:533 old «Copy« new «Копировать« # _errorhandling.rpym:535 old «Copies the traceback.txt file to the clipboard.« new «Копирует файл traceback.txt в буфер обмена.« # _errorhandling.rpym:562 old «An exception has occurred.« new «Возникло исключение.« # _errorhandling.rpym:582 old «Rollback« new «Назад« # _errorhandling.rpym:584 old «Attempts a roll back to a prior time, allowing you to save or choose a different choice.« new «Пытается вернуться назад, позволяя вам сохраниться или принять другой выбор.« # _errorhandling.rpym:587 old «Ignore« new «Игнорировать« # _errorhandling.rpym:591 old «Ignores the exception, allowing you to continue.« new «Игнорирует это исключение, позволяя вам продолжить.« # _errorhandling.rpym:593 old «Ignores the exception, allowing you to continue. This often leads to additional errors.« new «Игнорирует это исключение, позволяя вам продолжить. Зачастую это ведёт к дополнительным ошибкам.« # _errorhandling.rpym:597 old «Reload« new «Перезагрузить« # _errorhandling.rpym:599 old «Reloads the game from disk, saving and restoring game state if possible.« new «Перезагружает игру с диска, сохраняя и восстанавливая её состояние, если это возможно.« # _errorhandling.rpym:602 old «Console« new «Консоль« # _errorhandling.rpym:604 old «Opens a console to allow debugging the problem.« new «Открывает консоль, позволяющую отладить проблему.« # _errorhandling.rpym:614 old «Quits the game.« new «Выходит из игры.« # _errorhandling.rpym:638 old «Parsing the script failed.« new «Обработка сценария завершилась неудачно.« # _errorhandling.rpym:664 old «Opens the errors.txt file in a text editor.« new «Открывает файл errors.txt в текстовом редакторе.« # _errorhandling.rpym:668 old «Copies the errors.txt file to the clipboard.« new «Копирует файл errors.txt в буфер обмена.« # _errorhandling.rpym:542 old «Copy BBCode« new «Скопировать как BBCode« # _errorhandling.rpym:544 old «Copies the traceback.txt file to the clipboard as BBcode for forums like https://lemmasoft.renai.us/.« new «Копирует файл traceback.txt в буфер обмена как BBCode для форумов типа https://lemmasoft.renai.us/.« # _errorhandling.rpym:546 old «Copy Markdown« new «Скопировать как Markdown« # _errorhandling.rpym:548 old «Copies the traceback.txt file to the clipboard as Markdown for Discord.« new «Копирует файл traceback.txt в буфер обмена как Markdown для Дискорда.« # _errorhandling.rpym:683 old «Copies the errors.txt file to the clipboard as BBcode for forums like https://lemmasoft.renai.us/.« new «Копирует файл errors.txt в буфер обмена как BBCode для форумов типа https://lemmasoft.renai.us/.« # _errorhandling.rpym:687 old «Copies the errors.txt file to the clipboard as Markdown for Discord.« new «Копирует файл errors.txt в буфер обмена как Markdown для Дискорда.« # renpy/common/00gltest.rpy:100 old «Force GL Renderer« new «Принудительный GL рендеринг« # renpy/common/00gltest.rpy:105 old «Force ANGLE Renderer« new «Принудительный ANGLE рендеринг« # renpy/common/00gltest.rpy:110 old «Force GLES Renderer« new «Принудительный GLES рендеринг« # renpy/common/00gltest.rpy:116 old «Force GL2 Renderer« new «Принудительный GL2 рендеринг« # renpy/common/00gltest.rpy:121 old «Force ANGLE2 Renderer« new «Принудительный ANGLE2 рендеринг« # renpy/common/00gltest.rpy:126 old «Force GLES2 Renderer« new «Принудительный GLES2 рендеринг« # renpy/common/00gltest.rpy:245 old «This game requires use of GL2 that can’t be initialised.« new «Эта игра требует использование GL2 который не может быть инициализирован.« # renpy/common/00gltest.rpy:256 old «More details on how to fix this can be found in the {a=[url]}documentation{/a}.« new «Больше информации о том как это может быть исправлено смотрите в {a=[url]}документации{/a}.« # renpy/common/00gltest.rpy:273 old «Change render options« new «Изменить настройки рендеринга« # renpy/common/00gamepad.rpy:58 old «Press or move the ‘[control!s][kind].« new «Нажмите или сдвиньте [kind][control!s]« # renpy/common/00gltest.rpy:136 old «Enable (No Blocklist)« new «Включить (игнорировать блоклист)« # renpy/common/00gltest.rpy:259 old «The {a=edit:1:log.txt}log.txt{/a} file may contain information to help you determine what is wrong with your computer.« new «Файл {a=edit:1:log.txt}log.txt{/a} может содержать информацию, которая поможет вам определить, что не так с вашим компьютером.«

Forum rules
This is the right place for Ren’Py help. Please ask one question per thread, use a descriptive subject like ‘NotFound error in option.rpy’ , and include all the relevant information — especially any relevant code and traceback messages. Use the code tag to format scripts.

Breci

Newbie
Posts: 9
Joined: Thu Dec 18, 2014 4:07 pm
Organization: Edarion
IRC Nick: Breci
Skype: albatorb
Location: France
Contact:

Catching ScriptError exception

#1

Post

by Breci » Fri Feb 20, 2015 1:17 pm

Hello,

I have been trying to catch the ScriptError exception for a dynamic jump.

Here is the error when there is no try/except :

While running game code:
File «game/calendarfunctions.rpy», line 58, in script
python:
ScriptError: could not find label ‘test’.

— Full Traceback ————————————————————

Full traceback:
File «C:UsersBreciDesktoprenpy-6.18.3-sdkrenpybootstrap.py», line 289, in bootstrap
renpy.main.main()
File «C:UsersBreciDesktoprenpy-6.18.3-sdkrenpymain.py», line 357, in main
run(restart)
File «C:UsersBreciDesktoprenpy-6.18.3-sdkrenpymain.py», line 77, in run
renpy.execution.run_context(True)
File «C:UsersBreciDesktoprenpy-6.18.3-sdkrenpyexecution.py», line 598, in run_context
context.run()
File «game/calendarfunctions.rpy», line 58, in script
python:
File «C:UsersBreciDesktoprenpy-6.18.3-sdkrenpyscript.py», line 595, in lookup
raise ScriptError(«could not find label ‘%s’.» % str(label))
ScriptError: could not find label ‘test’.

Windows-7-6.1.7601-SP1
Ren’Py 6.18.3.761
testCalendar 0.0

Here is the error with the code when I’m using a catch/except:

Code: Select all

label start_new_day:
    python:
        try :
            next_day()
        except ScriptError :
            renpy.jump("error")

I’m sorry, but an uncaught exception occurred.

While running game code:
File «game/calendarfunctions.rpy», line 58, in script
python:
File «game/calendarfunctions.rpy», line 61, in <module>
except ScriptError as e:
NameError: name ‘ScriptError’ is not defined

— Full Traceback ————————————————————

Full traceback:
File «game/calendarfunctions.rpy», line 58, in script
python:
File «C:UsersBreciDesktoprenpy-6.18.3-sdkrenpyast.py», line 785, in execute
renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
File «C:UsersBreciDesktoprenpy-6.18.3-sdkrenpypython.py», line 1382, in py_exec_bytecode
exec bytecode in globals, locals
File «game/calendarfunctions.rpy», line 61, in <module>
except ScriptError :
NameError: name ‘ScriptError’ is not defined

Windows-7-6.1.7601-SP1
Ren’Py 6.18.3.761
testCalendar 0.0

Any idea how I can manage to catch it?


User avatar

PyTom

Ren’Py Creator
Posts: 15919
Joined: Mon Feb 02, 2004 10:58 am
Completed: Moonlight Walks
Projects: Ren’Py
IRC Nick: renpytom
Github: renpytom
itch: renpytom
Location: Kings Park, NY
Contact:

Re: Catching ScriptError exception

#2

Post

by PyTom » Sat Feb 21, 2015 12:48 am

There isn’t a good way to catch exceptions in Ren’Py script code. Exceptions aren’t a general form of flow control.

What do you think about my adding config.missing_label_callback, a function that is called when a label is missing? It could return a label to jump to or run arbitrary cleanup code.

Supporting creators since 2004
(When was the last time you backed up your game?)

«Do good work.» — Virgil Ivan «Gus» Grissom
Software > Drama • https://www.patreon.com/renpytom


Breci

Newbie
Posts: 9
Joined: Thu Dec 18, 2014 4:07 pm
Organization: Edarion
IRC Nick: Breci
Skype: albatorb
Location: France
Contact:

Re: Catching ScriptError exception

#3

Post

by Breci » Sun Feb 22, 2015 3:44 pm

Because I need to check ir for different purpose I checked a bit more on the forum.

So now I am using the haslabel() function to solve my problem.


I’m making a game using Ren’py (based on python) and most errors aren’t shown, especially the errors in python code. Is there a possibility to check for possible errors at compile time and how do I get where some errors occur? If there are errors the game normally doesn’t run or breaks at the a errors appearance without a message.Is there maybe a file, where they are written in or something like that? Or do I have to debug using logs everywhere?

asked Dec 27, 2013 at 2:01

porky11's user avatar

0

Compile errors will be shown when you first try to compile the RPY files. They will be put in «errors.txt» in your project directory. Most errors are not found at compile-time, however, and will only show up once you encounter them at run-time.

You can use Lint to check for some common errors (It’s called «Check Script (Lint)»), but mostly you’ll have to playtest to ensure there are no errors. Errors during playback should pop up a gray screen showing the error and traceback with the option to Ignore, Rollback, or Quit. Is this screen not showing up for you?

answered Mar 2, 2015 at 23:08

qirien's user avatar

If you’re looking for some kind of intellisense like you have for some languages, where as you write the code the IDE shows errors, then it doesn’t exist. You have to launch the game so that the code is compiled, just then Ren’py will show you errors. You can see them in the editor or in the errors.txt that Ren’Py creates. To test you python code you can launch the game and type Shift + O to open the console.

answered Jul 6, 2019 at 23:33

Saiffyros's user avatar

Аватар пользователя

GameMaker174

Сообщений: 37
Зарегистрирован: 24 ноя 2015, 17:55
Откуда: Челябинск

Re: Вопросы-ответы по RenPy

Эм…такой вопрос возник, можно ли добавить картинку персонажа сразу в init, так что бы картинка персонажа, сразу вставлялась в текст???что бы не писать каждый раз точто перс появляется на фоне :) спасибо за ответ заранее)))


Аватар пользователя

Skaz

Администратор
Сообщений: 1987
Зарегистрирован: 30 июл 2015, 14:52
Контактная информация:

Re: Вопросы-ответы по RenPy

Сообщение Skaz » 24 дек 2015, 12:03

Вопрос сформулирован непонятно.
Напишите подробнее чего хотите и приведите пример кода.


Аватар пользователя

Vitamin05

Сообщений: 156
Зарегистрирован: 31 июл 2015, 19:59

Re: Вопросы-ответы по RenPy

Сообщение Vitamin05 » 07 янв 2016, 11:44

Здравствуйте, решил чисто для себя попробовать RenPy, ну и попробовать силы решил в русификации Академии Эшворда. Скачал и установил RenPy, редактором скриптов открыл скрипт «achievements.rpy» и попробовал перевести текстовые сообщения. Получил файл скрипта такого вида.

 Свернутый текст

Сохранив скрипт попробовал запустить игру и получил следующую ошибку:

 Свернутый текст

Насколько я из сообщения понял, игра ругается на кодировку «UTF8», видимо весь введённый мной в скрипт русский текст отображается именно в ней. Возникает вопрос, куда посмотреть, где почитать и что добавить, чтобы игра увидела русские буквы.


Аватар пользователя

Khan

Сообщений: 877
Зарегистрирован: 30 июл 2015, 17:38
Контактная информация:

Re: Вопросы-ответы по RenPy

Сообщение Khan » 07 янв 2016, 13:32

Vitamin05 писал(а):Здравствуйте, решил чисто для себя попробовать RenPy, ну и попробовать силы решил в русификации Академии Эшворда. Скачал и установил RenPy, редактором скриптов открыл скрипт «achievements.rpy» и попробовал перевести текстовые сообщения. Получил файл скрипта такого вида.

 Свернутый текст

Сохранив скрипт попробовал запустить игру и получил следующую ошибку:

 Свернутый текст

Насколько я из сообщения понял, игра ругается на кодировку «UTF8», видимо весь введённый мной в скрипт русский текст отображается именно в ней. Возникает вопрос, куда посмотреть, где почитать и что добавить, чтобы игра увидела русские буквы.

Необходимо изменить саму кодировку файла на UTF8.
После перевода могут появиться артефакты в коде, их надо будет необходимо устранить.


Prohogiy

Сообщений: 6
Зарегистрирован: 09 янв 2016, 05:12

Re: Вопросы-ответы по RenPy

Сообщение Prohogiy » 09 янв 2016, 05:22

Как сделать заставку, которая автоматически включалась бы перед стартовым меню?


Prohogiy

Сообщений: 6
Зарегистрирован: 09 янв 2016, 05:12

Re: Вопросы-ответы по RenPy

Сообщение Prohogiy » 13 янв 2016, 09:50

Прошу прощения за беспокойство. Сам разобрался.


SmoOke

Сообщений: 1
Зарегистрирован: 17 янв 2016, 16:45

Re: Вопросы-ответы по RenPy

Сообщение SmoOke » 17 янв 2016, 16:48

Помогите!

В общем делаю вот так — стоит выбор,2 локации. и эти 2 локации нам нужно посетить.

1 лок — душ
2 лок — туалет.

Как сделать так,чтобы если мы пошли сначала в душ,а потом в туалет,в туалете не выпадало опять меню «в душ»?
Так же и наоборот


Аватар пользователя

Skaz

Администратор
Сообщений: 1987
Зарегистрирован: 30 июл 2015, 14:52
Контактная информация:

Re: Вопросы-ответы по RenPy

Сообщение Skaz » 18 янв 2016, 12:47

SmoOke писал(а):Как сделать так,чтобы если мы пошли сначала в душ,а потом в туалет,в туалете не выпадало опять меню «в душ»?
Так же и наоборот

Пример кода в студию.


Prohogiy

Сообщений: 6
Зарегистрирован: 09 янв 2016, 05:12

Re: Вопросы-ответы по RenPy

Сообщение Prohogiy » 27 янв 2016, 05:28

С уважением и надеждой, здравствуйте.
Здесь разобраться самостоятельно как-то не получается.
Дело вот в чём.
Картинки объявлены правильно, потому что как изображения они нормально отображаются. Но только прописываешь их в анимацию, программа говорит, что файлы не загружаемые.
Помогите, если не трудно.


Аватар пользователя

Skaz

Администратор
Сообщений: 1987
Зарегистрирован: 30 июл 2015, 14:52
Контактная информация:

Re: Вопросы-ответы по RenPy

Сообщение Skaz » 27 янв 2016, 07:30

Prohogiy писал(а):Картинки объявлены правильно, потому что как изображения они нормально отображаются. Но только прописываешь их в анимацию, программа говорит, что файлы не загружаемые.
Помогите, если не трудно.

Оставляя подобные сообщение, добавляйте
а) Код, который работает
б) Код, который не работает.
в) Текст ошибки


Prohogiy

Сообщений: 6
Зарегистрирован: 09 янв 2016, 05:12

Re: Вопросы-ответы по RenPy

Сообщение Prohogiy » 27 янв 2016, 17:19

Прошу прощения. Сейчас исправлюсь.
Когда показываешь картинку
scene bg blak
show star28 at Position(xpos=.5, ypos=.5, xanchor=0, yanchor=0)
всё работает.
Стоит прописать самую простую анимацию, вот так:
image star1a = Animation(
«star6.png», 1.0,
«star16.png», 1.0,
«star28.png», 1.0)
выдаёт ошибку:
C:Torrenpy-6.9.3-rusItana/game/script.rpy:36 Image star1a uses file ‘star6.png’, which is not loadable.

C:Torrenpy-6.9.3-rusItana/game/script.rpy:36 Image star1a uses file ‘star16.png’, which is not loadable.

C:Torrenpy-6.9.3-rusItana/game/script.rpy:36 Image star1a uses file ‘star28.png’, which is not loadable.


Аватар пользователя

Dron

Сообщений: 346
Зарегистрирован: 31 июл 2015, 15:30

Re: Вопросы-ответы по RenPy

Сообщение Dron » 27 янв 2016, 18:11

Prohogiy писал(а):Прошу прощения. Сейчас исправлюсь.
Когда показываешь картинку
scene bg blak
show star28 at Position(xpos=.5, ypos=.5, xanchor=0, yanchor=0)
всё работает.
Стоит прописать самую простую анимацию, вот так:
image star1a = Animation(
«star6.png», 1.0,
«star16.png», 1.0,
«star28.png», 1.0)
выдаёт ошибку:
C:Torrenpy-6.9.3-rusItana/game/script.rpy:36 Image star1a uses file ‘star6.png’, which is not loadable.

C:Torrenpy-6.9.3-rusItana/game/script.rpy:36 Image star1a uses file ‘star16.png’, which is not loadable.

C:Torrenpy-6.9.3-rusItana/game/script.rpy:36 Image star1a uses file ‘star28.png’, which is not loadable.

Возможно я не прав, но у вас наверное картинки star6.png и т.п. лежат не в папке game, а где-то в подпапках ? Потому что обычно такое сообщение возникает при неправильном пути к изображению. Путь считается относительно папки game. А в первом примере путь как раз не задается, там вызывается уже описанное в другом месте (с правильным путем) изображение.

В любом деле главное — творческий подход.


Prohogiy

Сообщений: 6
Зарегистрирован: 09 янв 2016, 05:12

Re: Вопросы-ответы по RenPy

Сообщение Prohogiy » 28 янв 2016, 11:21

Вы совершенно правы. Огромное спасибо!
Просто в демке никак не видно, что для анимации нужно прописывать полный путь к картинке.

Теперь возник другой вопрос.
А можно ли сделать, чтобы заставка, сделанная с помощью label splashscreen, при первом запуске игры была не кликабельна, то есть не выключалась при нажатии на кнопку мыши? А при последующих запусках выключалась, чтобы не грузить пользователя повторными просмотрами.

И ещё. Последняя версия RenPy у меня тоже есть, но она глючит. Не отображаются переходы. Вместо них экран в клеточку. Я думаю, что это из-за слабости компа. Процессор: два ядра по 1,6 ГГц (нетбук). Или могут быть другие причины?


Prohogiy

Сообщений: 6
Зарегистрирован: 09 янв 2016, 05:12

Re: Вопросы-ответы по RenPy

Сообщение Prohogiy » 29 янв 2016, 04:00

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

1. SMAnimation работает только с цветом фона, как в демке, или может работать и с другими объектами? Например, с картинками.

2. Короткая анимация (около 1,5 с) появляется в случайном месте экрана.
$ gtms1 = renpy.random.randint(1, 948)
$ gtms2 = renpy.random.randint(1, 568)
show star1b at Position(xpos=gtms1, ypos=gtms2, xanchor=0.5, yanchor=0.5)
Как это зациклить, чтобы для каждой новой прокрутки генерировалось новое местоположение?


Аватар пользователя

Skaz

Администратор
Сообщений: 1987
Зарегистрирован: 30 июл 2015, 14:52
Контактная информация:

Re: Вопросы-ответы по RenPy

Сообщение Skaz » 29 янв 2016, 10:51

Prohogiy писал(а):2. Короткая анимация (около 1,5 с) появляется в случайном месте экрана.
$ gtms1 = renpy.random.randint(1, 948)
$ gtms2 = renpy.random.randint(1, 568)
show star1b at Position(xpos=gtms1, ypos=gtms2, xanchor=0.5, yanchor=0.5)
Как это зациклить, чтобы для каждой новой прокрутки генерировалось новое местоположение?

Насколько я понял, вам нужен оператор цикла.
Почитайте про цикл while здесь:

http://www.renpy.org/doc/html/conditional.html


tukreb

Сообщений: 14
Зарегистрирован: 30 ноя 2015, 04:36

Re: Вопросы-ответы по RenPy

Сообщение tukreb » 27 фев 2016, 22:47

Кстати, побуду КО, если в курсе.

Но файл script.rpy можно здорово разгрузить, разбив на множество под файлов, по крайне мере вытащить инициализацию картинок в отдельный файл.


tukreb

Сообщений: 14
Зарегистрирован: 30 ноя 2015, 04:36

Re: Вопросы-ответы по RenPy

Сообщение tukreb » 28 фев 2016, 20:57

Если у кого-нить идея, как лучше реализовать систему ивентов? Чтобы она была понятной и не сложной. Та, что в Тренере Ведьм, как то выглядит не совсем понятно, либо я не уловил всей её сути.


Аватар пользователя

Skaz

Администратор
Сообщений: 1987
Зарегистрирован: 30 июл 2015, 14:52
Контактная информация:

Re: Вопросы-ответы по RenPy

Сообщение Skaz » 29 фев 2016, 11:02

tukreb писал(а):Если у кого-нить идея, как лучше реализовать систему ивентов? Чтобы она была понятной и не сложной. Та, что в Тренере Ведьм, как то выглядит не совсем понятно, либо я не уловил всей её сути.

Система ивентов в Тренере ведьмы действительно нетривиальна. Достоинство ее в том, что можно задать условия выполнения ивентов большой сложности. Например:
Исполнить ивент А только в том случае, если распущенность Гермионы между 6 и 9, при этом не выполнен ивент С, а ивент В выполнен хотя бы трижды, но с момента его последнего выполнения прошло не больше суток игрового времени.
Исполнить ивент А два только раза, второй раз можно исполнить только если после первого исполнения прошло больше двух суток игрового времени.

Условия выполнения всех ивентов описаны в одной секции, что довольно наглядно, есть система разрешения конфликтов (если одновременно наступают условия выполнения двух ивентов) и пр.

Из-за такой навороченности пользоваться ей без подробного описания классов вряд ли получится.

Если нужно что-то совсем простое, можно предложить систему, которой пользовался Акабур. На каждый ивент по одному или несколько флажков (флажок — логическая или целая переменная). После выполнения ивента флажок меняется.
Чтобы не таскать кучу флажков все это можно запихнуть в единый словарь. Если посмотреть реализацию системы ивентов в Ведьме, то, грубо говоря, там так и сделано, а для работы со словарем состояний ивентов написаны классы.


tukreb

Сообщений: 14
Зарегистрирован: 30 ноя 2015, 04:36

Re: Вопросы-ответы по RenPy

Сообщение tukreb » 01 мар 2016, 01:00

Skaz писал(а):

tukreb писал(а):Если у кого-нить идея, как лучше реализовать систему ивентов? Чтобы она была понятной и не сложной. Та, что в Тренере Ведьм, как то выглядит не совсем понятно, либо я не уловил всей её сути.

Система ивентов в Тренере ведьмы действительно нетривиальна. Достоинство ее в том, что можно задать условия выполнения ивентов большой сложности. Например:
Исполнить ивент А только в том случае, если распущенность Гермионы между 6 и 9, при этом не выполнен ивент С, а ивент В выполнен хотя бы трижды, но с момента его последнего выполнения прошло не больше суток игрового времени.
Исполнить ивент А два только раза, второй раз можно исполнить только если после первого исполнения прошло больше двух суток игрового времени.

Условия выполнения всех ивентов описаны в одной секции, что довольно наглядно, есть система разрешения конфликтов (если одновременно наступают условия выполнения двух ивентов) и пр.

Из-за такой навороченности пользоваться ей без подробного описания классов вряд ли получится.

Если нужно что-то совсем простое, можно предложить систему, которой пользовался Акабур. На каждый ивент по одному или несколько флажков (флажок — логическая или целая переменная). После выполнения ивента флажок меняется.
Чтобы не таскать кучу флажков все это можно запихнуть в единый словарь. Если посмотреть реализацию системы ивентов в Ведьме, то, грубо говоря, там так и сделано, а для работы со словарем состояний ивентов написаны классы.

Частично я разобрался в сути, и уже заметил некоторые удобные возможности в условиях, но есть некоторые сложности в частности, я не понимаю, почему не идёт на True, если я правильно понял, как работает это

Код: Выбрать все

this.Where({"DAY"})     .AddStep("begin_01:test-true",                 ready= lambda e: day == 5 )

Далее

Код: Выбрать все

label begin_01:
    m "Хм....."
    m "Хмхмхм.."
    menu:
        " True "  if this.Has("test-true"):   
            m "test-true is True"
        " False ":
            m "test-true is False"

    $this.begin_01.Finalize()
    jump night_start

В данном случае всегда получается False, что я упустил, если у Вас есть идеи?


tukreb

Сообщений: 14
Зарегистрирован: 30 ноя 2015, 04:36

Re: Вопросы-ответы по RenPy

Сообщение tukreb » 01 мар 2016, 01:21

А уже всё понял как это работает, если кому интересно, то этот код всё объяснит

Код: Выбрать все

        this.Where({"DAY"})     .AddStep("begin_01:test-true",    ready= lambda e: day == 5 )
        this                    .AddStep("begin_00",                 ready= lambda e: day == 6 )

После выполнения begin_01 и его завершение, на флаг test-true выставиться true.

Код: Выбрать все

label begin_00:
    m "Хм....."
    m "Хм....Хм....."
    menu:
        " True " if this.Has("test-true"):   
            m "test-true is True"
        " False ":
            m "test-true is False"
    $this.begin_00.Finalize()
    jump night_start

label begin_01:
    m "Хм....."
    m "Хм....Хм....."
    menu:
        " True " if this.Has("test-true"):   
            m "test-true is True"
        " False ":
            m "test-true is False"

    $this.begin_01.Finalize()
    jump night_start

и правда это избавляет от ненужный переменных в дальнейшем.


Аватар пользователя

Skaz

Администратор
Сообщений: 1987
Зарегистрирован: 30 июл 2015, 14:52
Контактная информация:

Re: Вопросы-ответы по RenPy

Сообщение Skaz » 01 мар 2016, 10:20

tukreb писал(а):А уже всё понял как это работает, если кому интересно, то этот код всё объяснит

Энтузиазм радует. :)
В качестве подарка:
Можно сделать еще более изящно.

Код: Выбрать все

        this.Where({"DAY"})     .AddStep("begin_01", ready= lambda e: day == 5 )
        this                    .AddStep("begin_00", ready= lambda e: day == 6 )

Код: Выбрать все

label begin_00:
    m "Хм....."
    m "Хм....Хм....."
    menu:
        " True " if this.begin_01.IsDone():   
            m "test-true is True"
        " False ":
            m "test-true is False"
    wtevent.Finalize("night_start")

Ну и т.п.


tukreb

Сообщений: 14
Зарегистрирован: 30 ноя 2015, 04:36

Re: Вопросы-ответы по RenPy

Сообщение tukreb » 01 мар 2016, 18:53

Спасибо, осталось только разобраться, как определить $wtevent., чтобы она заработала, а то лишь объявлена. :lol:

В моей случае, пока проще заменить на это $this.begin_00.Finalize(«night_start») :D Пока не могу разобраться с $wtevent


Аватар пользователя

Skaz

Администратор
Сообщений: 1987
Зарегистрирован: 30 июл 2015, 14:52
Контактная информация:

Re: Вопросы-ответы по RenPy

Сообщение Skaz » 02 мар 2016, 10:20

tukreb писал(а):В моей случае, пока проще заменить на это $this.begin_00.Finalize(«night_start») :D

Да, думаю, в новом проекте так будет проще.


tukreb

Сообщений: 14
Зарегистрирован: 30 ноя 2015, 04:36

Re: Вопросы-ответы по RenPy

Сообщение tukreb » 04 мар 2016, 04:02

Глупости написал :D Потом перефразирую может быть. (можно удалить это сообщение)


tukreb

Сообщений: 14
Зарегистрирован: 30 ноя 2015, 04:36

Re: Вопросы-ответы по RenPy

Сообщение tukreb » 04 мар 2016, 04:53

нужно сделать кнопку удалить или уберите ограничение с редактирование :) А то, плодятся сообщения. Я всё мучаю $wtevent.Finalize пытаясь понять секрет, как его заставить заработать :)



Вернуться в «Разработка игр на RenPy»

Кто сейчас на форуме

Количество пользователей, которые сейчас просматривают этот форум: нет зарегистрированных пользователей и 0 гостей

Понравилась статья? Поделить с друзьями:
  • Redday праздник каждый день
  • Readx проект сценарий
  • Readx жобасы сценарий
  • Rdp сценарий входа
  • Queen s birthday праздник