I was trying to shorten and reuse code for each question in a quiz, and so I define my variables for each section, call a reusable section. I think the problem is that most of the time the call command never gets to go back to the point at which it was called as, depending on the quiz answer, the section can end with a jump command. An incorrect quiz answer will utilize the call command and return to where it came from.
Code: Select all
label q2question17:
label .qstart:
#there is code here but it is unrelated, confusing, and probably unlikely to be a problem in this case
call winorlose
jump .qstart
label winorlose:
call screen wordst
$ result = _return
if result == "win":
play sound "duck.mp3"
call win
jump quiz2 #My guess is that this is the problem, call winorlose is probably trying to keep track of where it needs to return to, but never gets a chance.
else: #this else code uses the call function properly and goes back
play sound "wrongduck.mp3"
Should I bite the bullet and just add the winorlose code to each of the questions and thus get rid of the call function, or is there another way?
I'd really love to be able to keep code lean.
I looked at the Patreon articles with creator defined statements, and I saw blocks were included, but they don't seem to be reused/called and seem to exist within their specific label.
Thanks for taking the time to read this!!!
Traceback:
Code: Select all
I'm sorry, but an uncaught exception occurred.
While running game code:
File "game/quiz2.rpy", line 164, in script call
call winorlose
File "game/quiz2.rpy", line 76, in script call
call winorlose
File "game/quiz2.rpy", line 109, in script call
call winorlose
File "game/quiz2.rpy", line 219, in script call
call winorlose
File "game/quiz2.rpy", line 208, in script call
call winorlose
File "game/quiz2.rpy", line 98, in script call
call winorlose
File "game/quiz2.rpy", line 153, in script call
call winorlose
File "game/quiz2.rpy", line 87, in script call
call winorlose
File "game/quiz2.rpy", line 142, in script call
call winorlose
File "game/quiz2.rpy", line 131, in script call
call winorlose
File "game/quiz2.rpy", line 175, in script call
call winorlose
File "game/quiz2.rpy", line 65, in script call
call winorlose
File "game/quiz2.rpy", line 54, in script call
call winorlose
File "game/quiz2.rpy", line 120, in script call
call winorlose
File "game/quiz2.rpy", line 186, in script call
call winorlose
File "game/quiz2.rpy", line 197, in script call
call winorlose
File "game/script.rpy", line 760, in script
call screen rate
File "renpy/common/000statements.rpy", line 531, in execute_call_screen
store._return = renpy.call_screen(name, *args, **kwargs)
TypeError: unbound method get_tooltip() must be called with Return instance as first argument (got nothing instead)
-- Full Traceback ------------------------------------------------------------
Full traceback:
File "game/quiz2.rpy", line 164, in script call
call winorlose
File "game/quiz2.rpy", line 76, in script call
call winorlose
File "game/quiz2.rpy", line 109, in script call
call winorlose
File "game/quiz2.rpy", line 219, in script call
call winorlose
File "game/quiz2.rpy", line 208, in script call
call winorlose
File "game/quiz2.rpy", line 98, in script call
call winorlose
File "game/quiz2.rpy", line 153, in script call
call winorlose
File "game/quiz2.rpy", line 87, in script call
call winorlose
File "game/quiz2.rpy", line 142, in script call
call winorlose
File "game/quiz2.rpy", line 131, in script call
call winorlose
File "game/quiz2.rpy", line 175, in script call
call winorlose
File "game/quiz2.rpy", line 65, in script call
call winorlose
File "game/quiz2.rpy", line 54, in script call
call winorlose
File "game/quiz2.rpy", line 120, in script call
call winorlose
File "game/quiz2.rpy", line 186, in script call
call winorlose
File "game/quiz2.rpy", line 197, in script call
call winorlose
File "game/script.rpy", line 760, in script
call screen rate
File "X:\games\renpy\renpy-7.3.2-sdk\renpy\ast.py", line 1947, in execute
self.call("execute")
File "X:\games\renpy\renpy-7.3.2-sdk\renpy\ast.py", line 1935, in call
return renpy.statements.call(method, parsed, *args, **kwargs)
File "X:\games\renpy\renpy-7.3.2-sdk\renpy\statements.py", line 277, in call
return method(parsed, *args, **kwargs)
File "renpy/common/000statements.rpy", line 531, in execute_call_screen
store._return = renpy.call_screen(name, *args, **kwargs)
File "X:\games\renpy\renpy-7.3.2-sdk\renpy\exports.py", line 2896, in call_screen
rv = renpy.ui.interact(mouse="screen", type="screen", roll_forward=roll_forward)
File "X:\games\renpy\renpy-7.3.2-sdk\renpy\ui.py", line 295, in interact
rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
File "X:\games\renpy\renpy-7.3.2-sdk\renpy\display\core.py", line 2699, in interact
repeat, rv = self.interact_core(preloads=preloads, trans_pause=trans_pause, **kwargs)
File "X:\games\renpy\renpy-7.3.2-sdk\renpy\display\core.py", line 3507, in interact_core
rv = renpy.display.focus.mouse_handler(ev, x, y)
File "X:\games\renpy\renpy-7.3.2-sdk\renpy\display\focus.py", line 407, in mouse_handler
return change_focus(new_focus, default=default)
File "X:\games\renpy\renpy-7.3.2-sdk\renpy\display\focus.py", line 362, in change_focus
set_focused(current, newfocus.arg, newfocus.screen)
File "X:\games\renpy\renpy-7.3.2-sdk\renpy\display\focus.py", line 109, in set_focused
new_tooltip = widget._get_tooltip()
File "X:\games\renpy\renpy-7.3.2-sdk\renpy\display\behavior.py", line 746, in _get_tooltip
return get_tooltip(self.action)
File "X:\games\renpy\renpy-7.3.2-sdk\renpy\display\behavior.py", line 373, in get_tooltip
return func()
TypeError: unbound method get_tooltip() must be called with Return instance as first argument (got nothing instead)
Windows-7-6.1.7601-SP1
Ren'Py 7.3.2.320
Cats Bath Test 2 1.0
Fri Aug 02 15:34:13 2019