I've been wondering about this for quite awhile but is there any script that lets you show text messages while the menu screen is open?
There's a scene that I want to make. It would be like this:
Player would talk to, let's say tutorial npc. Then after talking for a bit, the menu screen will show up followed by the text message of the tutorial npc the player is talking to.
I did found a script but it doesn't show the text message after the menu screen showed up. The text message did showed up after I closed the menu screen but that's not how I want it to be.
[Ace] Show text messages while in menu screen.
● ARCHIVED · READ-ONLY
-
-
Try searching for "menu tutorial" maybe. I don't know about text/message boxes, but the ability to instruct the player while the menu is open has been requested a few times, so there might be something already that will help you, and you might just need to adjust a bit.
-
Take a screenshot while the menu was open and show it as a picture. If you want to "close the menu" again, just clear the picture. That's the solution I would come up with. Players won't see the difference.
Greetings,
Tw0Face -
Iirc Hime's Scene Interpreter allows you to show text in the menu. Not sure how it works though.
-
@Shaz That could take awhile though... I'll try anyways but at the moment, I haven't found anything.
@Tw0Face While your suggestion is good, I don't want it to be shown as a "picture". I'll save your suggestion for later use though, thanks.
@TheoAllen Do you mean this one?
If it is, it seems like it only works when you click an item from the menu. -
@Tw0Face While your suggestion is good, I don't want it to be shown as a "picture". I'll save your suggestion for later use though, thanks.
No problem, you're welcome. In case you don't find any other solution, this is how it would look like.
Greetings,
Tw0Face -
although Hime's solution isn't what I'd use, it's definitely the easiest way to implement it as a plugin.
what it actually does is not to add a message window to the current scene, but to use a common event to bring up a message window from the interpreter..... which is what the map scene does, minus the actual checks for the message object being loaded with text.
to make it a message window as in the map scene, you'd have to make it work with the message object, and add the respective triggers to open and close it, and return control to the scene.
which I know for a fact, can be messy. -
Sounds difficult o n o". I only want it to show the menu screen itself then close afterwards.although Hime's solution isn't what I'd use, it's definitely the easiest way to implement it as a plugin.
what it actually does is not to add a message window to the current scene, but to use a common event to bring up a message window from the interpreter..... which is what the map scene does, minus the actual checks for the message object being loaded with text.
to make it a message window as in the map scene, you'd have to make it work with the message object, and add the respective triggers to open and close it, and return control to the scene.
which I know for a fact, can be messy.
@Tw0Face That actually looks good. I'm considering using your method/suggestion in case I don't find the script I'm looking for :> -
Why would it be messy?... which I know for a fact, can be messy.
It's really not hard if you know what you are doing.
Making it user friendly, that's the real challenge, the rest is just logic.
I already made several of these message windows for custom menus, and I made a new one just now to see how it would work with default menus. It took me 1 hour, including the testing phase to write this.
Spoiler
I did not test this with any custom scenes or modified scenes, but it seems to work just fine with the default stuff.
It does require some scripting knowledge to use it properly, that really can't be helped. It' can either be a rigid, hard-coded script, or a modular, dynamic script. I always go with the latter, even if it means the users of said script must learn some things here and there to use it properly. -
I can't get it to work. I'm not doing anything special, all I've done is add new case to the list of MMsgs. It displays that message in the Equip menu, but I can't get it to deactivate said menu while the message box is open, and closing the menu crashes the game.
Spoiler'cliff_rebuttal' => {
:view => "@viewport",
:win2 => '@category_window',
: pos => [(Graphics.width-400)/2, Graphics.height-112], #written as : pos on forum only, became emoji
:size => [400,112],
:face_img => "Actor1",
:face_index => 0,
:text => "Cliff: YOU TELL ME, KAIN!",
:method2 => ['cursor_change',['@category_window',-1,30],['@category_window',-1,30],['@category_window',-1,30]],
[/ISPOILER]
The problem appears to me to be that there is no method that closes the menu and message box. The default method, cursor_change, just causes the selection index to decrement until it reaches 0, after which RPGMaker crashes, since there's no index# -1. Removing the Method call causes a nil crash. Changing "win2" to"win1" only caused it to crash upon opening the Equip screen, as did changing "method2" to "method1". The script itself is hard-coded to read MMsgs for input, and I don't quite understand how this script works well enough to risk replacing it with something else.
If anybody can tell me what I've done wrong, I'd be most appreciative. I have two gags riding on getting this to work, and I'd rather not have to scrap them. -
Welp, I kind of figured out the problem myself. The original code fails to account for the possibility of a nil variable in a way that suggests to me that no actual test of the full code took place. This is the fix I came up with. To make it work, replace the create_msg_win method with the below version. It's really just the addition of an if statement, and I can't say whether it won't break something somewhere, since I made the correction to address the specific problem I was having.
Spoilerdef create_msg_win(msg,win1=nil,win2=nil)
send(*msg[:method1]) if msg[:method1]
win_operation(win1,'deactivate') if win1
@message = MenuMessageD.new(*$game_message.position,*$game_message.size)
if msg[:view]
view = instance_variable_get(msg[:view])
@message.viewport = view
end
while $game_message.busy?
update
end
until @message.openness <= 0
update
end
@message.dispose
@message = nil
send(*msg[:method2]) if msg[:method2]
win_operation(win2,'activate') if win2
if $game_system.menu_msg[@mky][:times] != nil #ADDED TO MAKE IT WORK
if $game_system.menu_msg[@mky] && $game_system.menu_msg[@mky][:times] > 0
$game_system.menu_msg[@mky][:times] -= 1
$game_system.menu_msg.delete(@mky) if $game_system.menu_msg[@mky][:times] <= 0
end
end
if msg[:next]
nmsg = MenuMsgD::MMsgs[msg[:next]]
start_message(msg[:next],nmsg,nmsg[:win1],nmsg[:win2])
end
end