Yes, this is possible! First, make sure your menus are using NVL mode. In one of your init blocks, put
Then you need to open up screens.rpy. Find the NVL screen (it says "screen nvl"). This is where you tell Ren'Py how to display your NVL text. Down lower in this function, where it says:
we are going to change the code. Right now it puts all the choices in a vbox, which means they will just be listed one on top of the other. We want to change it into a grid. Here is some code that will do that (this can replace the entire NVL screen in your screens.rpy, or just take the parts you need):
Code: Select all
#############################################################
# Nvl
#
# Screen used for nvl-mode dialogue and menus.
# http://www.renpy.org/doc/html/screen_special.html#nvl
screen nvl(dialogue, items=None):
window:
style "nvl_window"
has vbox:
style "nvl_vbox"
# Display dialogue.
for who, what, who_id, what_id, window_id in dialogue:
window:
id window_id
has hbox:
spacing 10
if who is not None:
text who id who_id
text what id what_id
# Display a menu, if given.
if items:
vbox:
id "menu"
# How many choices are in this menu?
$ num_choices = len(items)
# How many rows do we need?
$ choice_rows = ((num_choices-1) // 2) + 1
# Make a grid with two columns and however many rows we need
grid 2 choice_rows:
for caption, action, chosen in items:
if action:
# Display the choice
button:
style "nvl_menu_choice_button"
action action
text caption style "nvl_menu_choice"
else:
text caption style "nvl_dialogue"
# If there is an odd number of choices, add an extra bit of text to fill up the grid
if ((2 * choice_rows) != num_choices):
text ""
add SideImage() xalign 0.0 yalign 1.0
use quick_menu
I hope this helps you figure out how to do that!