This custom message system adds numerous features on top of the default message system, the most notable being the ability to have multiple message windows open at once. The included features are mostly themed around turning messages into speech (and thought) bubbles, but default-style messages are of course still possible.
- multiple message windows
- speech bubbles
- position over player/event (follows movement and scrolling)
- optional message tail (for speech or thought bubbles)
- can specify location relative to player/event (top, bottom, left, right)
- thought bubbles
- can use different windowskin, message tail and font color
- letter-by-letter mode
- variable speed (and delays)
- skippable on button press
- autoresize messages
- player movement allowed during messages
- if speaker moves offscreen, message closes (like ChronoTrigger)
- everything also works during battle
- settings configurable anytime
See demo
directory. Requires RMXP, of course.
Copy the script in src
, and open the Script Editor within RMXP. At the bottom of the list of classes on the left side of the new window, you'll see one called "Main". Right click on it and select "Insert". In the newly created entry in the list, paste this script.
Copy images from assets
into the Graphics/Windowskins folder. You can, of course, just change the filename constant to use your own.
Full list of options (all case insensitive):
=============================================================================
Local (specified in message itself and resets at message end)
=============================================================================
- \L = letter-by-letter mode toggle
- \S[n] = set speed at which text appears in letter-by-letter mode
- \D[n] = set delay (in frames) before next text appears
- \P[n] = position message over event with id n
* use n=0 for player
* in battle, use n=a,b,c,d for actors (e.g. \P[a] for first actor)
and n=1,...,n for enemies (e.g. \P[1] for first enemy)
where order is actually the reverse of troop order (in database)
- \P = position message over current event (default for floating messages)
- \^ = message appears directly over its event
- \v = message appears directly below its event
- \< = message appears directly to the left of its event
- \> = message appears directly to the right of its event
- \B = bold text
- \I = italic text
- \! = message autoclose
- \? = wait for user input before continuing
- \+ = make message appear at same time as preceding one
* note: must be at the start of message to work
- \@ = thought bubble
- \N[en] = display name of enemy with id n (note the "e")
- \MAP = display the name of the current map
These are, of course, in addition to the default options:
- \Var[n] = display value of variable n (note change from \V[n])
- \N[n] = display name of actor with id n
- \C[n] = change colour
- \G = display gold window
- \\ = show the '\' character
=============================================================================
Global (specified below or by Call Script and persist until changed)
=============================================================================
Miscellaneous:
- message.move_during = true/false
* allow/disallow player to move during messages
- message.show_pause = true/false
* show/hide "waiting for player" pause graphic
- message.autocenter = true/false
* enable/disable automatically centering text within messages
Speech/thought bubble related:
- message.resize = true/false
* enable/disable automatic resizing of messages (only as big as necessary)
- message.floating = true/false
* enable/disable positioning messages above current event by default
(i.e. equivalent to including \P in every message)
- message.location = TOP, BOTTOM, LEFT or RIGHT
* set default location for floating messages relative to their event
- message.show_tail = true/false
* show/hide message tail for speech/thought bubbles
Letter-by-letter related:
- message.letter_by_letter = true/false
* enable/disable letter-by-letter mode (globally)
- message.text_speed = 0-20
* set speed at which text appears in letter-by-letter mode (globally)
- message.skippable = true/false
* allow/disallow player to skip to end of message with button press
Font:
- message.font_name = font
* set font to use for text
- message.font_size = size
* set size of text (default 22)
- message.font_color = color
* set color of regular text (same 0-7 as for \C[n])
- message.font_color_thought = color
* set color of text used in thought bubbles (same 0-7 as for \C[n])
Thanks to XRXS for the self-close wait for input functionality, Slipknot for a convenient approach to altering settings in-game and SephirothSpawn for (reliable!) bitmap rotate method.