That does make sense! Perhaps its only doing that because I havent set up all my if_alls, if_any, etc, I only have it tested on the mouths right now (since I'm very new to using layeredimages and am still figuring out how it works) and noticed it wasnt showing in the tool anymore. Thanks and sorry for the silly question! 😆
🔥 HOT: Profile/cxndystripelxgs - Full Archive
CANDY STRIPE
Creator of
Recent community posts
Hi! This tool seems like it would be extremely helpful! But for some reason, when I put it in my script, I get this error when starting up the game.
I'm sorry, but an uncaught exception occurred.
While running game code:
File "game/Script/technical/screens.rpy", line 503, in execute
screen main_menu():
File "game/Script/technical/screens.rpy", line 503, in execute
screen main_menu():
File "game/Script/technical/screens.rpy", line 518, in execute
use navigation
File "game/Script/technical/screens.rpy", line 305, in execute
screen navigation():
File "game/Script/technical/screens.rpy", line 305, in execute
screen navigation():
File "game/Script/technical/screens.rpy", line 307, in execute
fixed:
File "game/Script/technical/screens.rpy", line 313, in execute
imagebutton auto "gui/mainmenu/start_%s.webp" xpos 1553 ypos 432 focus_mask True action [Start(), Play("sound", "audio/sounds/buttonstart.mp3")] hovered [Play("sound", "audio/sounds/click.mp3")]:
TypeError: new_renpy_loadable() got an unexpected keyword argument 'directory'
-- Full Traceback ------------------------------------------------------------
Traceback (most recent call last):
File "renpy/common/_layout/screen_main_menu.rpym", line 28, in script
python hide:
File "renpy/ast.py", line 1187, in execute
renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "renpy/python.py", line 1260, in py_exec_bytecode
exec(bytecode, globals, locals)
~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "renpy/common/_layout/screen_main_menu.rpym", line 28, in <module>
python hide:
File "renpy/common/_layout/screen_main_menu.rpym", line 35, in _execute_python_hide
ui.interact()
~~~~~~~~~~~^^
File "renpy/ui.py", line 304, in interact
rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "renpy/display/core.py", line 2219, in interact
repeat, rv = self.interact_core(
~~~~~~~~~~~~~~~~~~^
preloads=preloads,
^^^^^^^^^^^^^^^^^^
...<4 lines>...
**kwargs,
^^^^^^^^^
) # type: ignore
^
File "renpy/display/core.py", line 2757, in interact_core
root_widget.visit_all(lambda d: d.per_interact())
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "renpy/display/displayable.py", line 432, in visit_all
d.visit_all(callback, seen)
~~~~~~~~~~~^^^^^^^^^^^^^^^^
File "renpy/display/displayable.py", line 432, in visit_all
d.visit_all(callback, seen)
~~~~~~~~~~~^^^^^^^^^^^^^^^^
File "renpy/display/displayable.py", line 432, in visit_all
d.visit_all(callback, seen)
~~~~~~~~~~~^^^^^^^^^^^^^^^^
File "renpy/display/screen.py", line 503, in visit_all
callback(self)
~~~~~~~~^^^^^^
File "renpy/display/core.py", line 2757, in <lambda>
root_widget.visit_all(lambda d: d.per_interact())
~~~~~~~~~~~~~~^^
File "renpy/display/screen.py", line 514, in per_interact
self.update()
~~~~~~~~~~~^^
File "renpy/display/screen.py", line 715, in update
self.screen.function(**self.scope)
~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
File "game/Script/technical/screens.rpy", line 503, in execute
screen main_menu():
File "game/Script/technical/screens.rpy", line 503, in execute
screen main_menu():
File "game/Script/technical/screens.rpy", line 518, in execute
use navigation
File "game/Script/technical/screens.rpy", line 305, in execute
screen navigation():
File "game/Script/technical/screens.rpy", line 305, in execute
screen navigation():
File "game/Script/technical/screens.rpy", line 307, in execute
fixed:
File "game/Script/technical/screens.rpy", line 313, in execute
imagebutton auto "gui/mainmenu/start_%s.webp" xpos 1553 ypos 432 focus_mask True action [Start(), Play("sound", "audio/sounds/buttonstart.mp3")] hovered [Play("sound", "audio/sounds/click.mp3")]:
File "renpy/ui.py", line 961, in _imagebutton
idle = choice(idle, idle_image, "idle", required=True)
~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "renpy/ui.py", line 949, in choice
rv = renpy.config.imagemap_auto_function(auto, name)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^
File "renpy/common/00defaults.rpy", line 168, in _imagemap_auto_function
elif renpy.loadable(rv, directory="images"):
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: new_renpy_loadable() got an unexpected keyword argument 'directory'
Windows-11-10.0.26200-SP0 AMD64
Ren'Py 8.4.1.25072401
Painkiller: Arachnophobia 2.0
Fri Dec 26 00:11:16 2025
It seems as if its interacting with my main menu code for some reason? For reference, this only happens when I put in the files for this plugin and the image tools plug in.
If it helps, this is my main menu screen. Not sure what the problem is!
screen navigation(): fixed: style_prefix "navigation" spacing gui.navigation_spacing
imagebutton auto "gui/mainmenu/start_%s.webp" xpos 1553 ypos 432 focus_mask True action [Start(), Play("sound", "audio/sounds/buttonstart.mp3")] hovered [Play("sound", "audio/sounds/click.mp3")]: at enterone imagebutton auto "gui/mainmenu/load_%s.webp" xpos 1586 ypos 496 focus_mask True action [ShowMenu("load"), Play("sound", "audio/sounds/buttonclick.mp3")] hovered [Play("sound", "audio/sounds/click.mp3")]: at entertwo imagebutton auto "gui/mainmenu/chap_%s.webp" xpos 1377 ypos 563 focus_mask True action [ShowMenu("chapterselect"), Play("sound", "audio/sounds/buttonclick.mp3")] hovered [Play("sound", "audio/sounds/click.mp3")]: at enterthree imagebutton auto "gui/mainmenu/pref_%s.webp" xpos 1420 ypos 632 focus_mask True action [ShowMenu("preferences"), Play("sound", "audio/sounds/buttonclick.mp3")] hovered [Play("sound", "audio/sounds/click.mp3")]: at enterfour imagebutton auto "gui/mainmenu/warn_%s.webp" xpos 1486 ypos 691 focus_mask True action [ShowMenu("warnings"), Play("sound", "audio/sounds/buttonclick.mp3")] hovered [Play("sound", "audio/sounds/click.mp3")]: at enterfive imagebutton auto "gui/mainmenu/about_%s.webp" xpos 1550 ypos 764 focus_mask True action [ShowMenu("about"), Play("sound", "audio/sounds/buttonclick.mp3")] hovered [Play("sound", "audio/sounds/click.mp3")]: at entersix imagebutton auto "gui/mainmenu/help_%s.webp" xpos 1583 ypos 830 focus_mask True action [ShowMenu("help"), Play("sound", "audio/sounds/buttonclick.mp3")] hovered [Play("sound", "audio/sounds/click.mp3")]: at enterseven if renpy.variant("pc"): imagebutton auto "gui/mainmenu/quit_%s.webp" xpos 1593 ypos 900 focus_mask True action [Quit(confirm=not main_menu), Play("sound", "audio/sounds/buttonclick.mp3")] hovered [Play("sound", "audio/sounds/click.mp3")]: at entereight
Hi, I really love your plugin and plan to use it! I was wondering though, specifically with this bit of code
define left_buttons = [
(("look"),(530, 430),"left_frame", None),
(("look"),(1140, 550),"left_door", None),
(("move"),(1140, 650),"escape", "pnc_flags.get('door_unlocked') == True"), # Condition. The way it's written ensures that the game doesn't throw an error if the "door_unlocked" key isn't in the dictionary
(("move"),(1720, 540),"to_right", None),
]
define right_buttons = [
(("look"),(1390, 430), "right_frame", None),
(("move"),(200, 540), "to_left", None),
]
Is there a way for these to be imagebuttons instead of text with a frame?
Thank you!
Hi there, Its been some months so you might have found a solution to this already, but here's how I combined multiple callbacks into one!
init python:
def beepyvoice(event, interact=True, **kwargs):
if not interact:
return
if event == "show_done":
renpy.sound.play("callback.wav", channel="beep", loop=True)
elif event == "slow_done" or event == "end":
renpy.sound.stop(fadeout=1, channel="beep")
def callbackcontinue(ctc, **kwargs):
if ctc == "end":
renpy.music.play("next.mp3",channel="sound")
def Dialogue_Gap(event,pause=0.3,**kwargs):
if event == "begin":
renpy.pause(pause)
# This is the one that combines the three callbacks into one vvv
def callbacks(event, **kwargs):
for callback in (beepyvoice, callbackcontinue, Dialogue_Gap):
callback(event, **kwargs)
#Then, my character definition:
define n = Character("Nori Kamo", callback=callbacks)This is an amazing pack, thank you! I will definitely be using this in my project!
I have a question about the camera angles-
Is there any way to easily change the speed of the camera movement? Or the exact positioning? Or how much its zoomed in or out? The back front and normal camera presets don't seem to change how it looks too much, unless I change between the two while the camera is moving.
Thanks!

