First, here's one of my menus :
Python:
"Stay in cabin. (1next)":
$ c1s1_shower = True
hide screen say_screen_for_custom_choice_menu
with Dissolve(.5)
jump s1shower
Okay. I'm officially worried.
That
hide screen say_screen_for_custom_choice_menu
implies a
show screen
sometime before this. That you are doing
show screen ...
/
hide screen ...
means there's more code you haven't included in this forum post.
Plus, that's not how
You must be registered to see the links
work.
What I would expect to see would something more like:
Python:
menu (screen="custom_choice_menu"):
"Stay in cabin. (1next)":
# ...
"Take a walk around the ship. (2next)":
# ...
Where
custom_choice_menu
is a copy of the standard
You must be registered to see the links
from the
screens.rpy
file, but modified to work in a different way. Either by changing the copy directly, or using different
style
settings.
Honestly, my bigger worry is that the code you haven't included here on the forum post includes a
You must be registered to see the links
somewhere. Though it's a pretty obscure command to be using if you're already having a problem with custom choice screens.
I've tried "duplicating" the choices by adding if persistent.lang == "french" and if persistent.lang == None at the end :
If you ever really need to do something like this, you might want to look into
You must be registered to see the links
- which is the internal variable used by RenPy when someone changes to a different language using either
You must be registered to see the links
or
You must be registered to see the links
. See:
You must be registered to see the links
But I've created a custom say screen for my menu (different from the basic one because my menu is located in the usual say screen location) so that it appears above my menu.
Again, you probably want to be using the
screen choice():
as the template for customized
menu:
screens, and not
screen say():
.
Python:
screen say_screen_for_custom_choice_menu(who, what):
hbox:
...
text who.name + " : ":
...
And I think that is where your problem lies.
You are referencing
who.name
- something which hasn't been run through the translation process.
Keep in mind that translation is done at runtime and by RenPy's translation code. Which is fine if you are using the normal RenPy functionality, but not so great when you try to bypass it.
Normally, when you write something like:
Python:
menu:
kT "What should I do ?" # <<--- Wait... you know you can do this right?
"Stay in cabin. (1next)":
# ...
"Take a walk around the ship. (2next)":
# ...
The
kT "What should I do ?"
is handled by
screen say():
screen and the actual choices ("Stay in cabin." and "Take a walk around the ship.") are processed as arguments within the
screen choice():
screen (check the lines that read
for i in items:
/
if i.action:
). But the values are both translated before being passed to those screens (or as part of processing the
text
statements - I can never remember which).
Wait... you ARE aware you can add a dialogue line between the menu:
and the first menu choice to display that line AND the list of menu choices? Yes?
I've a horrible feeling that this is what you were trying to achieve with your custom say
screen. RenPy already does it for you (see my example above).
I'd need to test it, but you might be better off with something like:
Difficult to know without seeing exactly how you are dealing with this. (Normally I'd test a bit, but I don't have access to RenPy at the moment).