JSearUK / Playthroughs

The aim is to create the system in such a way that it can be safely dropped into any other project
The Unlicense
0 stars 0 forks source link

Clicking on Q or A crashes the mod #11

Closed JSearUK closed 2 years ago

JSearUK commented 3 years ago
I'm sorry, but an uncaught exception occurred.

While running game code:
  File "game/screens.rpy", line 586, in execute
    screen save():
  File "game/screens.rpy", line 586, in execute
    screen save():
  File "game/screens.rpy", line 590, in execute
    use file_slots(_("Save"))
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 217, in execute
    screen file_slots(title):
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 217, in execute
    screen file_slots(title):
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 218, in execute
    if persistent.save_system == "original":
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 221, in execute
    use playthrough_file_slots(title=title)
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 323, in execute
    screen playthrough_file_slots(title):
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 323, in execute
    screen playthrough_file_slots(title):
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 326, in execute
    use game_menu(title):
  File "game/screens.rpy", line 420, in execute
    screen game_menu(title, scroll=None, yinitial=0.0):
  File "game/screens.rpy", line 420, in execute
    screen game_menu(title, scroll=None, yinitial=0.0):
  File "game/screens.rpy", line 429, in execute
    frame:
  File "game/screens.rpy", line 432, in execute
    hbox:
  File "game/screens.rpy", line 438, in execute
    frame:
  File "game/screens.rpy", line 441, in execute
    if scroll == "viewport":
  File "game/screens.rpy", line 472, in execute
    transclude
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 326, in execute
    use game_menu(title):
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 336, in execute
    fixed:
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 339, in execute
    hbox:
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 342, in execute
    vbox:
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 389, in execute
    viewport:
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 394, in execute
    vbox:
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 396, in execute
    for playthrough in reversed(filter(lambda playthrough: playthrough.name not in ("auto", "quick"), persistent.playthroughs)):
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 400, in execute
    side "l c r":
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 402, in execute
    button:
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 402, in keywords
    button:
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 405, in keywords
    if enable_renaming and persistent.current_playthrough.name == playthrough.name:
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 405, in <module>
    if enable_renaming and persistent.current_playthrough.name == playthrough.name:
AttributeError: 'unicode' object has no attribute 'name'

-- Full Traceback ------------------------------------------------------------

Full traceback:
  File "renpy/common/_layout/screen_load_save.rpym", line 35, in script
    $ ui.interact()
  File "renpy/ast.py", line 923, in execute
    renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
  File "renpy/python.py", line 2235, in py_exec_bytecode
    exec(bytecode, globals, locals)
  File "renpy/common/_layout/screen_load_save.rpym", line 35, in <module>
    $ ui.interact()
  File "renpy/ui.py", line 298, in interact
    rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
  File "renpy/display/core.py", line 3276, in interact
    repeat, rv = self.interact_core(preloads=preloads, trans_pause=trans_pause, pause=pause, pause_start=pause_start, **kwargs)
  File "renpy/display/core.py", line 3694, in interact_core
    root_widget.visit_all(lambda i : i.per_interact())
  File "renpy/display/core.py", line 568, in visit_all
    d.visit_all(callback, seen)
  File "renpy/display/core.py", line 568, in visit_all
    d.visit_all(callback, seen)
  File "renpy/display/core.py", line 568, in visit_all
    d.visit_all(callback, seen)
  File "renpy/display/core.py", line 568, in visit_all
    d.visit_all(callback, seen)
  File "renpy/display/screen.py", line 432, in visit_all
    callback(self)
  File "renpy/display/core.py", line 3694, in <lambda>
    root_widget.visit_all(lambda i : i.per_interact())
  File "renpy/display/screen.py", line 443, in per_interact
    self.update()
  File "renpy/display/screen.py", line 631, in update
    self.screen.function(**self.scope)
  File "game/screens.rpy", line 586, in execute
    screen save():
  File "game/screens.rpy", line 586, in execute
    screen save():
  File "game/screens.rpy", line 590, in execute
    use file_slots(_("Save"))
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 217, in execute
    screen file_slots(title):
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 217, in execute
    screen file_slots(title):
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 218, in execute
    if persistent.save_system == "original":
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 221, in execute
    use playthrough_file_slots(title=title)
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 323, in execute
    screen playthrough_file_slots(title):
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 323, in execute
    screen playthrough_file_slots(title):
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 326, in execute
    use game_menu(title):
  File "game/screens.rpy", line 420, in execute
    screen game_menu(title, scroll=None, yinitial=0.0):
  File "game/screens.rpy", line 420, in execute
    screen game_menu(title, scroll=None, yinitial=0.0):
  File "game/screens.rpy", line 429, in execute
    frame:
  File "game/screens.rpy", line 432, in execute
    hbox:
  File "game/screens.rpy", line 438, in execute
    frame:
  File "game/screens.rpy", line 441, in execute
    if scroll == "viewport":
  File "game/screens.rpy", line 472, in execute
    transclude
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 326, in execute
    use game_menu(title):
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 336, in execute
    fixed:
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 339, in execute
    hbox:
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 342, in execute
    vbox:
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 389, in execute
    viewport:
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 394, in execute
    vbox:
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 396, in execute
    for playthrough in reversed(filter(lambda playthrough: playthrough.name not in ("auto", "quick"), persistent.playthroughs)):
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 400, in execute
    side "l c r":
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 402, in execute
    button:
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 402, in keywords
    button:
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 405, in keywords
    if enable_renaming and persistent.current_playthrough.name == playthrough.name:
  File "game/JSearUK's Save System/overridescreen-fileslots.rpy", line 405, in <module>
    if enable_renaming and persistent.current_playthrough.name == playthrough.name:
AttributeError: 'unicode' object has no attribute 'name'

Windows-10-10.0.19041
Ren'Py 7.4.8.1895
Playthroughs 0.1
Tue Aug 10 19:10:51 2021
JSearUK commented 3 years ago

However, the mod does manage to partially load any quick saves after a persistent wipe and disk file prune (in both save locations...) has removed any other playthrough details. Said quick saves have no name visible.

JSearUK commented 3 years ago

It's important that the mod doesn't expect to read (possibly even write, although this should be fine) any JSON data from auto- and quick-saves. Those are part of the Ren'Py save system; the Playthrough system should treat them exactly as the Ren'Py system does and behave identically to it.