Advanced Text System
Version: 3.0c
Author: modern algebra
Date: September 7, 2010
Version History
- Version 3.0c - 09.07.2010 - Fixed an issue with the :fit_window_to_text property, where it wouldn't resize when a message was shorter than a previous message. Also fixed an issue where paragraph format was thrown off when a new page was made, as well as another issue with choices, where the cancel condition would sometimes be changed when repeating a choice branch. Finally, I added the \x[n] code.
- Version 3.0b - 07.23.2010 - Fixed the F12-related bugs. The script should now be F12-safe
- Version 3.0a - 06.19.2010 - Added a feature that will automatically show the whole face unless you specify that it should only show a portion of it. Makes it simpler to use large faces.
- Version 3.0 - 06.13.2010 - complete rewrite, adding in tons of new features, in addition to making the script more intuitive and easier to learn. See the features section for a list of some of the updates. Also, the Paragraph Formatter is no longer needed, as I wrote up a special formatter class for the ATS and included it in the script.
- Version 2.0c - 11.6.2008 - bug with system if paragraph format is turned off but scrolling and Autopause are not
- Version 2.0b - 09.21.2008 - a major bug with levelling fixed.
- Version 2.0 - 09.17.2008 - a number of new features and script rewritten into a more friendly version.
- Version 1.5 - 07.18.2008 - quite a few new features. See the updated features list for details.
- Version 1.2b - 05.02.2008 - Minor bug fixes
- Version 1.2 - 04.14.2008 - Minor positioning glitch fixed with message back sprites. Added an option to have more than one column with the choice boxes. Face can now be drawn mirrored. Now there are 52 runtime options.
- Version 1.11 - 04.04.2008 - Minor bug fix with \px - added option to choose how many choices to show in a choicebox before it starts scrolling. - added option to change the back_sprite when you use dim background. So now 50 runtime messages
- Version 1.1 - 03.31.2008 - It is now possible to set the position and size of the message window. Also, there are now 48 runtime message options and 29 special character codes in addition to the default ones. Note that it will not resize of the message back if you use dim messages
- Version 1.0 - 03.18.2008 - Original Release. In addition to the default options, there are now 42 runtime message options and 23 special character codes
Description
This script allows for various complex message commands. Among the features are some that will be familiar from previous message scripts, such as Seasons in the Abyss' SMS and AMS. Others, such as the formatted text, expanded choice options, and speech tags, are completely new (as far as I know). See below for the features and command codes. The focus of this script is on customizability, which means that the script can seem daunting with all the properties and special message codes that you can use. However, whether to use these features is up to you, and it is very easy to plug in and just use the basic features that make sense for your game. Maybe all you want is appended choice branches and nameboxes ~ the basics are very easy and this script can be plug & play. But if you want to give your game that little extra something, the choice branches with subheadings, or the custom crafting scene, then that power is within this script, if you're willing to learn how.
Features
- High in-game customizability, with control over practically everything, if you decide to use it
- Great face handling, including the ability to use larger faces, set the faces lower than the message window, and scroll or fade them in
- Animated Facesets
- The ability to put faces in a window, and to set the border size of that window.
- Appended Text Commands
- Paragraph Formatting, allowing you to ignore the grey arrows when inputting text
- Variable Letter-by-Letter Speed
- Can play a sound effect as text is drawn
- Scrolling, with a number of new features such as smooth scroll, the ability to scroll by page, and the ability for the player to review a scrolled message when it is paused by pressing up and down.
- All relevant special message codes can be used anywhere they are useful
- Name Window, with the ability to set the border size of the window and multiline support
- Can set all of the windows to different sizes and positions
- SpeechTag graphics can be used when setting a message window above or below a character (with the :character & :char_ref properties, or the \oc, \uc, or \e codes)
- \+{} command allows you to expand the text of a choice well beyond the limitations of the program, and the ability to have multiline choices in either the default way or the choicebox makes this feature particularly useful ~ Choices can be sentences if you want them to be!
- Conditional Choice Options, as well as the ability to skip or disable choices
- Appended Choice Branches,
- The new choicehelp window allows you to attach a description to any choice that will show to the player when hovering over that choice
- The new word window allows you to create a line of instant text to be shown anywhere else on the screen
- The ability to use dim graphics for all windows
- Short hand codes for the names, descriptions, and prices for pretty much everything relevant. See the Special Message Codes section for details
- Lots of text effects, including hex colouring, bold, italic, shadow, underline, and highlight.
- A large number of vocab, actor, enemy, item, weapon, armor, skill, & state codes, allowing you to retrieve any publicly accessible value from them provided you know the method name.
- Alignment and tab codes
- Lots of other new message codes. See below for list
- A property that you can set to avoid obscuring specified characters when using default positioning
- Graphic Novel Support
- A property that allows the player to move while the message window is visible
- A property that will prevent the message window from refreshing, allowing you to do small things like Show Pictures and controlling switches without the text having to go to a new page.
Screenshots
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fimg685.imageshack.us%2Fimg685%2F6292%2Fats3screen3.png&hash=89b940e939acfbba52bcac4649da48863cd11df3)(https://rmrk.net/proxy.php?request=http%3A%2F%2Fimg337.imageshack.us%2Fimg337%2F2339%2Fats3screen5.png&hash=0142438de4b3999f54f9daa77deee94a23c1418f)(https://rmrk.net/proxy.php?request=http%3A%2F%2Fimg293.imageshack.us%2Fimg293%2F8809%2Fats3screen1.png&hash=1a4091aa33480102e7bfa59872756a85f899f881)(https://rmrk.net/proxy.php?request=http%3A%2F%2Fimg268.imageshack.us%2Fimg268%2F2575%2Fats3screen2.png&hash=9ed4544a210c56c188789c541d98745808521778)(https://rmrk.net/proxy.php?request=http%3A%2F%2Fimg815.imageshack.us%2Fimg815%2F3623%2Fats3screen4.png&hash=81cbe6cdfc6009cc41572deff16dcd1afb5f979b)(https://rmrk.net/proxy.php?request=http%3A%2F%2Fimg139.imageshack.us%2Fimg139%2F245%2Fatsscreen6.png&hash=bea17f31bb055680253fd3dd01979d6999b0a93e)
From Left to Right: Large Faces; Multiline Choices and Name Window; Simple Crafting system made entirely from Advanced Choice Branches of the ATS; Message Window Character positioning with Speech Tag; Tabbing and icon and underline features; Paragraph Format with Justified Text in the midst of a smooth scroll
There are lots of other features too, but screenshots for all of them would be rather tedious
Instructions
Basically: paste the script (http://rmrk.net/index.php?action=dlattach;topic=25348.0;attach=21376) in its own slot above Main and Below Materials in the Script Editor. If you are upgrading from ATS2, then you will also need this conversion patch (http://rmrk.net/index.php?action=dlattach;topic=25348.0;attach=21377). Paste it underneath the ATS3 in the Script Editor, but still above Main.
Complete instructions on what each property or code does can be found in the header of the script, from lines 149-754. But, in brief:
Special Message Codes
Special Message codes are codes placed in messages to be replaced by something specified or to achieve a special effect. An example of the former is \v[n], which, when used, is replaced by the value of Variable n. An example of the latter is \c[n], which, when used, makes all text following the colour with index n on the windowskin palette. The following, contained in the spoiler, are all the new and old special message codes that can be used in ATS3.
[spoiler=List of Special Message Codes]
- General Codes for all Windows
- \lb - Line break. Go to next line
- \v[n] - Draw the value of the variable with ID n
- \n[n] - Draw the name of the actor with ID n
- \c[n] - Set the colour of the text being drawn to the nth colour of the Windowskin palette
- \c[#RRGGBB] - Set the colour of the text being drawn to any colour, using hexadecimal
- \p[n] OR \pid[n] - Draw the ID of the actor in the nth position in the party
- \ni[n] - Draw the name of the item with ID n
- \nw[n] - Draw the name of the weapon with ID n
- \na[n] - Draw the name of the armor with ID n
- \ns[n] - Draw the name of the skill with ID n
- \nt[n] - Draw the name of the state with ID n
- \nc[n] - Draw the name of the class with ID n
- \ne[n] - Draw the name of the event with ID n on the current map
- \nm[n] - Draw the name of the enemy with ID n
- \nl[n] - Draw the name of the element with ID n
- \nv[n] - Draw the name of the variable with ID n
- \nsw[n] - Draw the name of the switch with ID n
- \np[n] - Draw the name of the actor in the nth position in the party
- \map - Draw the name of the map the player is currently on
- \map[n] - Draw the name of the map with ID n
- \di[n] - Draw the description of the item with ID n
- \dw[n] - Draw the description of the weapon with ID n
- \da[n] - Draw the description of the armor with ID n
- \ds[n] - Draw the description of the skill with ID n
- \pi[n] - Draw the price of the item with ID n
- \pw[n] - Draw the price of the weapon with ID n
- \pa[n] - Draw the price of the armor with ID n
- \i#[n] - Draw the number of the item with ID n that the party posesses
- \w#[n] - Draw the number of the weapon with ID n that the party posesses
- \a#[n] - Draw the number of the armor with ID n that the party posesses
- \ac[n] - Draw the class of the actor with ID n
- \i[n] - Draw the icon with index n
- \ii[n] - Draw the icon of the item with ID n
- \wi[n] - Draw the icon of the weapon with ID n
- \ai[n] - Draw the icon of the armor with ID n
- \si[n] - Draw the icon of the skill with ID n
- \ti[n] - Draw the icon of the state with ID n
- \fn[fontname] - Change the font to fontname
- \fs[n] - Change the fontsize to n
- \fa[n] - Change the alpha value (opacity) of the font to n
- \b - Turn bold on
- /b - Turn bold off
- \i - Turn italic on
- /i - Turn italic off
- \s - Turn shadow on
- /s - Turn shadow off
- \u - Turn underline on
- /u - Turn underline off
- \hl[n] - Turn highlight with colour n on
- /hl OR \hl[-1] - Turn highlight off
- \l - align the text to the left
- \r - align the text to the right
- \c - align the text to the centre
- \t - Tab. Draws the next character at the nearest pixel that is a multiple of 32
- \x[n] - Sets the x position for drawing directly to n.
- \f[key] - Draw the value corresponding to that key in the FILTERS array
- \s[n,text] - Will only draw text if the switch with ID n is ON
- \s![n,text] - Will only draw text if the switch with ID n is OFF
- \vocab[method] - Will draw whatever Vocab.method returns, if it is a valid method call. A list of suitable methods are included in the full Instructions
- \actor_method[n] - This will draw whatever actor.method returns for whoever actor n is. A list of suitable methods are included in the full Instructions
- \i_method[n] - This will draw whatever item.method returns for the item with ID n. A list of suitable methods are included in the full Instructions
- \w_method[n] - This will draw whatever weapon.method returns for the weapon with ID n. A list of suitable methods are included in the full Instructions
- \a_method[n] - This will draw whatever armor.method returns for the armor with ID n. A list of suitable methods are included in the full Instructions
- \s_method[n] - This will draw whatever skill.method returns for the skill with ID n. A list of suitable methods are included in the full Instructions
- \t_method[n] - This will draw whatever state.method returns for the state with ID n. A list of suitable methods are included in the full Instructions
- \enemy_method[n] - This will draw whatever enemy.method returns for whoever the enemy with ID n is. A list of suitable methods are included in the full Instructions in the Header
- \#{code}# - This will evaluate code. So, if you know scipting, you can place any code there and it will draw whatever is returned by it
- \resub - this feature will rerun the substitution method. It is useful if you want to use some message codes as arguments for other message codes
- Message Window Specific Codes
- \g - Shows a window with the party's gold. Closes if already open
- \nb[name] - Shows a name box with name displayed in the box
- /nb - Closes the namebox
- \wb[word] - shows the word in its own window, similar to the gold window.
- /wb - Closes a wordbox
- \. - Wait 15 frames (1/4 second) before drawing the next letter
- \| - Wait 60 frames (1 second) before drawing the next letter
- \w[n] - Wait n frames before drawing the next letter
- \! - Pause. Make the message wait for player input before continuing
- \^ - Skip the next pause without waiting for player input
- \> - Speed up the text drawing by reducing wait time between letters by one frame
- \< - Slow down the text drawing by increasing wait time between letters byone frame
- \S[n] - Change the speed the text draws by adding n to the current time between drawing letters
- \S[=n] - Directly set the speed the text draws to n
- \@ - Turn on Show line fast
- /@ - Turn off Show line fast
- \@@ - Turn on Show message fast. This will show the entire message instantly
- /@@ - Turn off Show message fast
- \% - Toggle Disable Text Skip through user input
- \se[sound effect name] - Plays a sound effect
- \me[music effect name] - Plays a musical effect
- \ani[target_id,animation_id] - Shows animation_id on target_id
- \bln[target_id,balloon_id] - Same as ani, but shows a balloon
- \af[n] - Show the face of the actor with ID n
- \pb - Page Break. Clear the contents and start drawing from the first line
- \oc[n] - positions the message box over a character n
- \uc[n] - same as \oc, but places box under character n
- \lc[n] - same as \oc, but places box to left of character n
- \rc[n] - same as \oc, but places box to right of character n
- \e[n] - same as \oc, but if the box is too tall to comfortably fit, is moved below the character instead
- \mxy[x, y] - Set the position of the message window to x, y
- \fxy[x, y] - Set the position of the face window to x, y
- \nxy[x, y] - Set the position of the name window to x, y
- \#!{code}# - This will evaluate code at the time the window reaches this code when drawing
- Choice Branch Specific Codes
- \skip - Placing this in a choice text means that the player will not be able to hover over or select this option, but will skip to the next one
- \soff[n] - A choice with this in it will only appear in the branch if the switch with ID n is OFF
- \son[n] - Same as soff[n], but it will only appear if switch n is ON
- \d[n] - A choice with this in it will be disabled (unselectable) if the switch with ID n is OFF. It will still show up, and the player can hover over it, but he or she will be prevented from selecting it
- \d![n] - Same as \d[n], except it will be disabled if switch n is ON
- \wb[text] - This code will create a help window. When the player hovers over that choice, it will show text in the help window. This allows you to explain the choice or make any content in the help window dependent on which choice the player is on
- \+{text} - This is actually a code you can put in a comment that is directly below the when branch of a choice, and it will add text to the choice. This effectively ignores the normal limitations on the size of a message in a choice, allowing you to make longer choices
[/spoiler]
Properties
There are too many to list what each specifically does, so please refer to the Instructions in the Header for that information. What I will do here is give the names and expected value types for each. Properties are set by placing the following codes in a message box:
ats_next (:property, value)
ats_all (:property, value)
where :property is the property you want to change and value is the new value for that property. You should use ats_next when you want to change the text for the next message only, and ats_all if you want to change it for all following messages. Anyway, I will put down the names of each property and the type of value they expect in the form :property, expected value. Expected value may be: number (..., -2, -1, 0, 1, 2, ...); boolean (true/false); array ([a, b, c, ...]); range (a..b), string ("string")
[spoiler=List of Properties]
- General Properties
- :max_lines, number
- :message_speed, number
- :skip_disabled, boolean
- :append_text, boolean
- :append_choice, boolean
- :scrolling, boolean
- :scroll_speed, number
- :scroll_show_arrows, boolean
- :scroll_autopause, boolean
- :scroll_review, boolean
- :scroll_by_page, boolean
- :paragraph_format, boolean
- :justified_text, boolean
- :letter_sound, boolean
- :letter_se, ["string", number, number]
- :letters_per_se, number
- :random_pitch, range
- :speech_tag_index, number
- :speech_tag_graphics
- :start_sound, boolean
- :start_se, ["string", number, number]
- :finish_sound, boolean
- :finish_se, ["string", number, number]
- :pause_sound, boolean
- :pause_se, ["string", number, number]
- :terminate_sound, boolean
- :terminate_se, ["string", number, number]
- :move_when_visible, boolean
- :graphic_novel, boolean
- :hide_button, Input::Button
- :gn_press_or_toggle, boolean
- Message Window Properties
- :message_x, number
- :message_y, number
- :wlh, number
- :battle_wlh, number
- :do_not_obscure, boolean
- :obscure_characters, [number, number, ...]
- :obscure_buffer, number
- :fit_window_to_text, boolean
- :message_width, number
- :message_height, number
- :message_opacity, number
- :message_backopacity, number
- :message_windowskin, number
- :message_fontcolour, number
- :message_fontname, "string"
- :message_fontsize, number
- :message_fontalpha, number
- :message_dim, "string"
- Face Window Properties
- :face_x, number
- :face_y, number
- :face_z, number
- :face_side, boolean
- :face_offset_x, number
- :face_offset_y, number
- :face_width, number
- :face_height, number
- :face_mirror, boolean
- :face_opacity, number
- :face_blend_type, number
- :face_fadein, boolean
- :face_fade_speed, number
- :face_scroll_x, boolean
- :face_scroll_y, boolean
- :face_scroll_speed, number
- :animate_faces, boolean
- :letters_per_face, number
- :face_window, boolean
- :face_window_opacity, number
- :face_windowskin, "string"
- :face_border_size, number
- :face_dim, "string"
- :face_use_dim, number
- Choice Window Properties
- :choice_text, "string"
- :disabled_choice_text, "string"
- :choicebox_text, "string"
- :choice_window, boolean
- :choice_x, number
- :choice_y, number
- :choice_offset_x, number
- :choice_offset_y, number
- :choice_width, number
- :choice_height, number
- :column_max, number
- :row_max, number
- :choice_spacing, number
- :choice_opacity, number
- :choice_backopacity, number
- :choice_windowskin, "string"
- :choice_fontcolour, number
- :choice_fontname, "string"
- :choice_fontsize, number
- :choice_wlh, number
- :choice_dim, "string"
- :choice_use_dim, number
- :choice_on_line, boolean
- :choice_opposite_face, boolean
- Choice Help Window Properties
- :choicehelp_x, number
- :choicehelp_y, number
- :choicehelp_width, number
- :choicehelp_height, number
- :choicehelp_center, boolean
- :choicehelp_opacity, number
- :choicehelp_backopacity, number
- :choicehelp_windowskin, "string"
- :choicehelp_fontcolour, number
- :choicehelp_fontname, "string"
- :choicehelp_fontsize, number
- :choicehelp_wlh, number
- :choicehelp_dim, "string"
- :choicehelp_use_dim, number
- Name Window Properties
- :name_x, number
- :name_y, number
- :name_offset_x, number
- :name_offset_y, number
- :name_opacity, number
- :name_backopacity, number
- :name_windowskin, "string"
- :name_border_size, number
- :name_wlh, number
- :name_fontcolour, number
- :name_fontname, "string"
- :name_fontsize, number
- :name_dim, "string"
- :name_use_dim, number
- Word Window Properties
- :word_x, number
- :word_y, number
- :word_width, number
- :word_height, number
- :word_opacity, number
- :word_backopacity, number
- :word_windowskin
- :word_wlh, number
- :word_fontcolour, number
- :word_fontname, "String"
- :word_fontsize, number
- :word_dim, "string"
- :word_use_dim, number
- ats_next-only Properties
- :do_not_refresh, boolean
- :character, number
- :char_ref, number
The last three are only permitted to be changed by ats_next, not ats_all.
[/spoiler]
Script
You can retrieve the script either from the demo (http://rmrk.net/index.php?action=dlattach;topic=25348.0;attach=21375) or the text document (http://rmrk.net/index.php?action=dlattach;topic=25348.0;attach=21376). If you are upgrading from ATS2, you also need the Conversion Patch (http://rmrk.net/index.php?action=dlattach;topic=25348.0;attach=21377). Paste it underneath the ATS3 in the Script Editor, but still above Main.
Credit
Thanks
- Zeriab! for his tutorial on Regular Expression made this script possible, but mostly for being my mentor and friend. Without him, this script and all my others would never have existed
Support
Post in this topic with any bugs or issues. Remember, this script is mostly untested. There are a lot of different combinations of features that may or may not work, I'm not sure. Also, if you have any great ideas for additions to this script, then feel free to launch them at me. There's no better time than now.
Known Compatibility Issues
All other Message scripts will not work with this one.
Demo
Download Demo (http://rmrk.net/index.php?action=dlattach;topic=25348.0;attach=21375)You can also retrieve the script from the text document (http://rmrk.net/index.php?action=dlattach;topic=25348.0;attach=21376).
If you are upgrading from ATS2, you also need the conversion patch (http://rmrk.net/index.php?action=dlattach;topic=25348.0;attach=21377). Paste it underneath the ATS3 in the Script Editor, but still above Main.
Graphics
Included also, in the demo and attached to this post, are sample speechtag graphics (http://rmrk.net/index.php?action=dlattach;topic=25348.0;attach=20973). The graphics included are: Speech Tag 1, Speech Tag 2, and Thought Tag 1 ~ As you will notice, you need to put these in the SPEECHTAG_GRAPHICS array in the script if you want to be able to use them, and these files must be saved into the System folder of Graphics.
If you wish to create your own, you may use this template:(https://rmrk.net/proxy.php?request=http%3A%2F%2Fimg692.imageshack.us%2Fimg692%2F3773%2Fspeechtagtemplate.png&hash=79576f63f7db5673f49565cb87098705106ffaba)
Basically, 1, 2, 3, & 4 are for the graphic that will appear when a message box is placed OVER a character. 5, 6, 7, & 8 are for the graphic that will show up when the message window is placed UNDER a character. 1 & 2, and 7 & 8 must be 16 pixels tall and this is the point of overlap. This part of the graphic is the part that overlaps with border of the message window. 3 & 4, and 5 & 6, are the parts that do not, and they can be as tall as you want them to be, but 3& 4 must be the same height as 5 & 6. Lastly, there are two columns: 1, 3, 5, & 7, and 2, 4, 6, & 8. The first column is for the background of the speech tag, and it will be shown at the same opacity as :message_backopacity. The second column will be the same opacity as :message_opacity. They can be whatever width you want them to be, provided that each column is the same width.
Samples: (https://rmrk.net/proxy.php?request=http%3A%2F%2Fimg245.imageshack.us%2Fimg245%2F752%2Fspeechtag1.png&hash=309d66714e88b5e1fe41531b6a77c108cbbc09a7)(https://rmrk.net/proxy.php?request=http%3A%2F%2Fimg705.imageshack.us%2Fimg705%2F9861%2Fspeechtag2.png&hash=542c1ed6e13353d2a4684e3111eba4aa59a98950)(https://rmrk.net/proxy.php?request=http%3A%2F%2Fimg28.imageshack.us%2Fimg28%2F8599%2Fthoughttag1.png&hash=6493d6a10931b1648026b53e712b1cf5ba7666a0)
Author's Notes
Well, I figured it was about time to rewrite this script. I started off with very good intentions, but about halfway through I started coding pretty sloppily. So this script really isn't the best I could do, and I am sure there are a few bugs to be hammered out. But please, try this script out, mention any bugs or incompatibilities you find and I will do my best to fix them up. Also, if you have any suggestions, there is no better time than during this debugging period, as once this script is bugfree I have no intention of looking at it ever again.[/list]
When I get home from work tonight, I'll check it out.
I edited the topic title because there was an typo I didn't like in it >_>
I'll check it out when I get the time ^^
Also you don't have to thank my so many times :-[
Quote from: Zeriab on March 18, 2008, 12:13:28 PM
Also you don't have to thank my so many times :-[
Alright, now I just put an exclamation mark :P
i wonder what the typo was now ...
This looks cool, i'll download it and tell more ^_^
This is very nice, Modern.
I have a few suggestions for features. I'm attempting to make a Zelda-ish game, and it would be nice to require player input before scrolling, then play a sound after the player input, and also have a sound after closing the message box, like in Link To The Past. I COULD just copy and paste \se[LTTP_Text_done]\! every four lines, but that seems like a bit too much. =x
Modern, I get a strange problem when I use this script. I have a character that says the following (broken up into two quote boxes because in the editor it's in two seperate display message commands):
Quote• I'm a tough guy.\!
• Twenty degrees out here,\. and I don't even need sleeves.\!
• I know you're jealous of these pipes. \!
• But how jealous are you?\!
Quote• Too jealous for your own good, that's how jealous.\!
• Step off,\. square.
I have your script set to display three lines before it starts scrolling. The thing is, after three lines it does scroll, but it puts a HUGE break between the third and fourth lines! How do I stop this?
Quote from: I Rock, Man on March 18, 2008, 11:14:49 PM
This is very nice, Modern.
I have a few suggestions for features. I'm attempting to make a Zelda-ish game, and it would be nice to require player input before scrolling, then play a sound after the player input, and also have a sound after closing the message box, like in Link To The Past. I COULD just copy and paste \se[LTTP_Text_done]\! every four lines, but that seems like a bit too much. =x
You could probably like, take the SE play code, simplify the command to just <end> or something instead of \SE[text], and then make it play the end sound specifically instead of a variable sound.
Quote from: I Rock, Man on March 18, 2008, 11:14:49 PM
This is very nice, Modern.
I have a few suggestions for features. I'm attempting to make a Zelda-ish game, and it would be nice to require player input before scrolling, then play a sound after the player input, and also have a sound after closing the message box, like in Link To The Past. I COULD just copy and paste \se[LTTP_Text_done]\! every four lines, but that seems like a bit too much. =x
Those are useful features. I will implement them. I take it you want a different sound at the end of a message (as in, separate from the one that plays after all shown lines?
Quote from: Arrow-1 on March 18, 2008, 11:47:49 PM
Modern, I get a strange problem when I use this script. I have a character that says the following (broken up into two quote boxes because in the editor it's in two seperate display message commands):
Quote• I'm a tough guy.\!
• Twenty degrees out here,\. and I don't even need sleeves.\!
• I know you're jealous of these pipes. \!
• But how jealous are you?\!
Quote• Too jealous for your own good, that's how jealous.\!
• Step off,\. square.
I have your script set to display three lines before it starts scrolling. The thing is, after three lines it does scroll, but it puts a HUGE break between the third and fourth lines! How do I stop this?
What features are active at this time? I take it Paragraph Format is off, or that construction would look rather strange in the message box. But in any case, I am having trouble reproducing the error. If worst comes to worst, maybe upload a project and I can look at the error as it occurs in your project.
Quote from: Arrow-1 on March 18, 2008, 11:47:49 PM
You could probably like, take the SE play code, simplify the command to just <end> or something instead of \SE[text], and then make it play the end sound specifically instead of a variable sound.
I take it that comment is directed at me :P
I've considered doing something similar, though I wouldn't have made a new special code - instead I would combine the codes and do it automatically, so I'd probably end up changing this (and it's unformatted equivalent)
# Convert formatted text to a string, rather than an array of characters
formatted_text.lines.each { |i|
i.each{ |j| @text += j }
@text += "\x00"
}
to something like this:
# Convert formatted text to a string, rather than an array of characters
formatted_text.lines.each_index { |i|
formatted_text.lines[i].each{ |j| @text += j }
# If feature for pause at end of lines implemented
if $game_message.scroll_pause
# If it will scroll next line and is not the last line
if (i + 1) % $game_message.shown_lines == 0 && if (i + 1) != formatted_text.lines.size
# Insert command codes for pause and Play SE
@text += "\x05\x88[#{$game_message.scroll_pause_se}]"
end
end
@text += "\x00"
}
And I'd put a message termination SE in to the finish_message.
The problem here is that this method would ultimately ruin the pause skip, as the SE will still play even when the pause is skipped. It's not an unconquerable problem, of course. As the method already iterates through every character, it would be a small matter to track whether or not a \^ is there and simply not add the \se command if there was, but I'd like a better way to track it than an if statement for every character in every message in the game (though if statements are fairly fast, so no big deal really). But, it may be enough to update instead the input_pause method - will almost definitely be better in fact. So, that is probably what I'll end up doing. Plus, really, it makes more sense for the SE to be played after all user input, not just when scrolling.
I actually had directed that at Irock, but your response is much more in-depth than his would have been. :o
EDIT: *facepalm* forgot to include my options. Starting at line 124 of your script:
class Game_MessageOptions
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Initial Settings
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Which side the face is on: true => left, false => right
FACESIDE = true
# The back opacity of the Message Window
OPACITY = 255
# The font of the Message Window
FONTNAME = "Convection"
# The Size of the font in the message window
FONTSIZE = 20
# The ability to skip the letter by letter drawing text
SKIP_DISABLED = false
# Message Box Windowskin
WINDOWSKIN = "Window"
# Redistributes the lines dependent on line length. The Paragraph Formatter
# v. 1.1 is required for this to work. You can find it at:
# http://rmrk.net/index.php/topic,25129.0.html
PARAGRAPH_FORMAT = false
# Should each line end at the same point? Icons and inaccurate text_size
# commands may cause this to be inaccurate.
JUSTIFIED_TEXT = false
# How many pixels between the y_position of one line and the next. This
# overrides the WLH constant of Window_Base, but only for messages. It
# remains the same for all other scripts
WLH = 24
# Whether text from adjacent messages are appended and scroll.
# Paragraph Format recommended if SCROLLING set to true
SCROLLING = true
# How many lines should be drawn before the text scrolls. This overrides
# Window_Message::MAX_LINES
SHOWN_LINES = 3
# Whether to use traditional choice branching or special. It essentially
# makes the choices appear in a box, rather
CHOICEBOX = true
# The following indented constants only matter when MA_CHOICES is true
# Choicebox position. true => adjacent to Message Window;
# false => above Message Window
# Paragraph Format recommended if CHOICEBOX_ON_LINE set to true
CHOICEBOX_ON_LINE = false
# When Choice branches are subsequent, the choice branches are made into one
CHOICES_APPENDED = true
# Should the Choicebox be as large as necessry to accomodate the longest
# option?
CHOICEBOX_FITTED = true
# The width of the choicebox, assuming CHOICEBOX_FITTED is false
CHOICEBOX_WIDTH = 160
# The back opacity of the choicebox
CHOICEBOX_OPACITY = 255
# The windowskin of the choicebox
CHOICEBOX_WINDOWSKIN = "Window"
# The font of the choicebox
CHOICEBOX_FONTNAME = "Convection"
# The offset in the X direction of the Choice Box
CHOICEBOX_OFFSET_X = 16
CHOICEBOX_OFFSET_Y = 16
# When this is true, it will play aa sound effect as it is drawing text
LETTER_BY_LETTER_SOUND = true
# The SE played when LETTER_BY_LETTER_SOUND is true
MESSAGE_SE = "text"
# How many frames between drawing each letter, in general
LETTER_FRAMES = 1
# ~Namebox Settings~
NAMEBOX_WINDOWSKIN = "Window" # The windowskin for the name box
NAMEBOX_COLOUR = 0 # The Color of the text in the namebox [0-31]
NAMEBOX_FONTNAME = "Convection" # The Font of the namebox
NAMEBOX_FONTSIZE = 20 # The Size of the text in the namebox
NAMEBOX_OFFSET_X = 16 # How much the Namebox is in the X direction away from default
NAMEBOX_OFFSET_Y = 16 # How much the Namebox is in the Y direction away from default
NAMEBOX_OPACITY = 255 # The opacity of the name box
Quote from: modern algebra on March 19, 2008, 12:51:18 AM
Quote from: I Rock, Man on March 18, 2008, 11:14:49 PM
This is very nice, Modern.
I have a few suggestions for features. I'm attempting to make a Zelda-ish game, and it would be nice to require player input before scrolling, then play a sound after the player input, and also have a sound after closing the message box, like in Link To The Past. I COULD just copy and paste \se[LTTP_Text_done]\! every four lines, but that seems like a bit too much. =x
I take it you want a different sound at the end of a message (as in, separate from the one that plays after all shown lines?
Yes, of course. If not, someone could just set them to the same SE. :p
Okay, I identified and fixed the error you found Arrow - nice catch!
I also implemented the autopause feature and Input Sound Effects that Irock recommended.
Since it wasn't any effort, I uploaded the new version though I am keeping the version number as 1.0
I will leave it in RMRK+ for now, just to give a few more days for people to come across bugs before I release it publicly.
It also might not be a bad feature to play a different sound when all the dialog is complete, before closing the message window, and a sound when starting a new message window. I'm surprised I didn't request/suggest them in my first post. -_-
I guess I could add that - it doesn't seem that useful though. I guess I can imagine a few situations where it could be useful.
But, since it's no trouble I'll add it.
Glad to hear it. These are features I plan to use. -_-
Works like a charm modern! Thanks loads! Only thing is now that I can' seem to find where to alter the options for animated face sets and frames between letters...?
LETTER_FRAMES should be right under PAUSE_SE
I haven't added anything special for faceset timing though - for now it is with every letter draawn (not including white space or codes). There's a reason I haven't divorced it from letter drawing - namely user defined pauses would have no way of recognizing when no characters are being drawn, so I'd have to do something special for that. I was thinking of making it so that you set how many letters are drawn between each face alteration - what do you guys think about that? It can't hurt, after all.
It couldn't hurt. It's better than having his mouth open and close for every letter.
Well open one letter close the next, but yeah I'll do that. I'll add the option in for the SE too
modern, you know i love you
now i love you more.
I found a couple of bugs and they are now fixed, but I am not going to put up the newest update yet because I am thinking of making it possible to use message codes to call constants and methods from the vocab module. My initial thought would be an array, but then people will need to count to find the one - it'd be a pain to apply. So now I'm thinking of storing everything from Vocab into a hash and calling them by method name - or maybe a case branch but that would be huge and ugly. Does anybody know an easier way?
Also, what do you all think about the idea of a Keywords option. Basically, my idea is that the user can set a colour to special words. Wherever that word appears, it will automatically be coloured in the colour you set to it - probably a hash here again.
Good job, modern. ;8 I'm unable to use RMXP on here (if it's usable on that) and I haven't gotten VX yet, but still looks nice. ;8
Why don't people ever attached the code in a .txt instead of inside a demo? XD Not that I'm complaining but just wondering why they don't think of that ?_?
People do that all the time.
Alright, well public Beta time. I'll keep those ideas in check and I will add them if there are any more useful features suggested. The current attached demo has everything up to date, I think.
I updated my stuff again and it's still working perfectly. This is a fantastic script modern!
Thanks ;D. I'm glad it's working. Be sure to tell me if anything goes wrong.
Update: You can now set the message window's position and size!
Updated Again - Sorry for all the updates - this one was necessary if you intend to use the \px command, as there was a minor miscalculation.
The other important thing is that the format for using Animated Facesets has changed in Version 1.11. Before it was _a, _b, but this arbitrarily limited the user to only two frames of animation. Now, the format is _1, _2, _3, etc... and you can have as many frames as you like.
Two options were also added:
$game_message.number_choices = positive integer
This allows you to set the number of choices shown in a Choicebox until it starts scrolling
$game_message.back_sprite = "filename"
This allows you to change the graphic used in runtime when the message is set to 'Dim'. Particularly useful if you want to use this feature in collaboration with changing message box width, since you will need to make graphics to fit that.
Also, I'm taking suggestions for giving this script a new name. Dialogue is a somewhat inappropriate, misleading name
Updated to Version 1.2!
The changes are basically:
- Fixed a minor error in the positioning of back sprites.
- Removed the Graphic not found error that would crash the game if a back sprite did not exist. It now defaults to the previously used back sprite
- Choice boxes can have multiple columns.
- Added option to draw the face mirrored.
I also changed the name as Dialogue in Programming means something totally different. It is now Advanced Text System (ATS)
I get an error saying: "ATS 1.2 ? 1668 ??? NoMethodError ??????
Undefined method `[]' for NilClass
This is on you demo when I speak with the EV005 starts the battle and error pops up!
What's the problem?!
And nice script.
Ah, sorry about that. I fixed the problem somewhere else but I guess I forgot to upload the demo. Give me a second and I'll upload a new demo. If you don't want to download the entire thing, just replace line 1668 with:
@contents_x += @line_spacing[@line_count] unless @line_spacing == nil || !$game_message.justified_text
Quote from: modern algebra on May 03, 2008, 11:29:07 PM
Ah, sorry about that. I fixed the problem somewhere else but I guess I forgot to upload the demo. Give me a second and I'll upload a new demo. If you don't want to download the entire thing, just replace line 1668 with:
@contents_x += @line_spacing[@line_count] unless @line_spacing == nil || !$game_message.justified_text
dude thank you and keep rocking! This script is awesome!!
Is there anyway to change the text for the namebox? I know I can change it globally in your script, but what I want to do is maybe have a command so I can have different colors of nameboxes for different characters (like blue for a good guy and red for a villain). Even if there's just a little add-in you could write up I could place it in the script. As it stands I can't really figure out how to change it other than changing it so it is always a certain color.
I'm not sure what you mean...
You can use Call Script to change any features, either globally with $game_dlgoptions or for just the following message with $game_message. All of the commands are listed above, but I think the ones you are looking for are:
$game_message.namebox_fontname = ["font name default", "font name alternatives"] (ex. ["Times New Roman", "Arial"])
$game_message.namebox_fontsize = positive integer (ex. 16)
$game_message.namebox_windowskin = "Skin File" (ex. "Window")
$game_message.namebox_colour = integer between 0 & 31 (ex. 7)
$game_message.namebox_opacity = integer between 0 & 255 (ex. 200)
$game_message.namebox_offset_x = integer (ex. 8)
$game_message.namebox_offset_y = integer (ex. 16)
There is a problem with this script. (Most likely it is the paragraph formatter, but I'm posting this topic because I'm using Advanced Text System)
I created the battle processing event with win/lose branches. Like this:
@>Battle Processing: Monster
If Win
@>Text: 'Spiritual', 1, Normal, Bottom
: : Blah blah blah blah blah blah blah blah blah blah
: : Blah blah blah blah blah
If Lose
@>Text: 'Spiritual', 1, Normal, Bottom
: : Blah blah blah blah blah blah blah blah blah blah
: : Blah blah blah blah blah
Branch End
When I play-tested the event processing, the paragraph formatter is no longer in effect for the first message in the win/lose branches. So they are no longer lined up nicely, so many words were missing because they disappeared on right side. It is as if the paragraph formatter was never there, so there is no formatting at all.
I can easily reproduce this bug (I did with few new events, and it happened.) Note: It only affects the first message in the win/lose. Any next messages are working prefectly.
I even made a new project and added only Advanced Text Message and Paragraph Formatter scripts. And I managed to reproduce that bug.
Yeah, I guess it must not reset $game_message after battle. I'll fix it when I make a new version, but for now just put a call script above your text with $game_message.clear there.
Okay, thanks. I'll be using that call script.
I want to ask you a question, if you don't mind.
Will you add the feature where I can show the icons\names in the choice box? Like \iicon[2] \ni[2]. It doesn't work with unique choice boxes. It does work if I use the basic choice box in the text message. I've been using that instead if I want to show the icons.
Anyways, your script is really great. I've been using it a lot, so many thanks.
Yeah, I think I will do that for the next version.
I asked this on the RPG Revolution forums, but I'm not sure which one you are more active in.
Is there a way I can make the script ignore the stuff that isolates choices? I'll give an example...
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fimg262.imageshack.us%2Fimg262%2F4855%2Fchoice1ib6.th.jpg&hash=34143ee2564c9bacac6a98262b961c1ffd5a02a1) (http://img262.imageshack.us/my.php?image=choice1ib6.jpg)
Here, the three choices will appear in the same box because of your script. Now...
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fimg241.imageshack.us%2Fimg241%2F8852%2Fchoice2pi3.th.jpg&hash=0c41724aa1d2796fcfb999e5c5199c159a7e805c) (http://img241.imageshack.us/my.php?image=choice2pi3.jpg)
You see that each of the three choices follow a conditional branch. However, because they are isolated, the choices aren't in the same box anymore.
How do I put them in the same box? (and, if possible, with the original message as well)
Don't put in the Else Branch to any of them and it should work fine.
I tried removing the "Else"'s, but the same thing happened; each choice is present in a different choice box.
Oh, nevermind, I wasn't looking at it before - I must be blind. No, there is no way to make them appear in the same choicebox when you have the conditionals around them.
Just stack them regularly
if Switch[1] ON
if Switch[2] ON
if Switch[3] ON
All Choices
else
choices 1 & 2
end
else
choice 1
end
else
if Switch[2] ON
if Switch[3] ON
choices 2 & 3
else
choice 2
end
else
if Switch[3] ON
choice 3
end
end
end
It's a pain in the neck, I know. In the next version I will see what I can do to give an option there.
Quote from: modern algebra II on July 01, 2008, 08:47:04 PM
Oh, nevermind, I wasn't looking at it before - I must be blind. No, there is no way to make them appear in the same choicebox when you have the conditionals around them.
It's a pain in the neck, I know. In the next version I will see what I can do to give an option there.
Okay. Thanks for your help.
But it would be totally awesome if you could make that an option for the next version. I would love you forever.
I've been thinking about it, and the way I will probably do it is to have a code you could put in the text area of each command. But it would only be for switches, not all the other types of conditions. I think I will just suggest that if other conditions are needed, just put all the conditions before the choice branch, and if the right conditions are met, turn on a switch and condition the choice on that switch.
Hello, I just wanted to say that this script is great, and I really enjoy using it.
However, I've got a slight problem; I'm using Woratana's windowskin changer script and if I change a windowskin, the change works the first time I talk to someone, but the next time it reverts back to the default specified in the script. Same thing for if I change the windowskin and go into the menu and try to talk to someone, it just resets back to the default in the script.
Is it possible to have the change "permanent?" Or at least, stay until it's changed again? I have no problem changing the windowskins via the menu, and even in an event, but it still changes back to the default after talking to someone.
Use the script code:
$game_dlgoptions.windowskin = "Skin File"
Sweet, thanks.
Is there also a way to change the nameplate and choice box in this same way?
$game_dlgoptions.choicebox_windowskin = "Skin File"
$game_dlgoptions.namebox_windowskin = "Skin File"
All of the possible codes are located in the instructions at the top of the script.
Yeah, I apologize for not noticing sooner, it just didn't stand out to me like the other way to change did. Thanks for the help!
Couldn't figure it out because I'm hopeless at scripting, but it definitely looks cool! :bean:
Updated to 1.5.
New Features:
- all relevant special message codes can be used in nameboxes and choiceboxes, such as show icon, etc... NOTE:: Show Icon will throw off the calculations for fitting the text to the window, just as it does in regular messages
- Now set the choicebox and namebox positions directly, instead of only in relation to the message window
- A couple new message codes:
- \CNTR - Centres text along a line
- \RGHT - Places the text along the right of the window
- Conditional Choice Options. Now, the special codes \SOFF[switch_id] and \SON[switch_id] place requirements for that option to be included in the choicebox. Namely, these conditions are simply if a switch (or multiple switches) is/are off or on. If those conditions are met, then the option will be available. Now, while it is only switches, you can easily set other conditions indirectly by setting up regular conditional branches before the choice display and turning a switch ON only if all conditions are met, then set the choice option on that switch. Note that all of the choicebox features only work if you are using a choicebox - if you are using default choice display, these will not work.
- You can now use a few different naming conventions. $ats_default can be used instead of $game_dlgoptions and \NB can be used instead of \NAME. However, both \name and $game_dlgoptions still work if you prefer those codes.
- And More...
I realy do fancy your script, but there is one , verry importand for me future missing.
----------------------------------------
>> +[ QUICK TEXT ]+ a.k.a. Shortcut
----------------------------------------
Add & Call your very long text (or) text that you use many times by shortcut.
You can put special syntax in it, e.g. 'Welcome to \c[10]Syria Village\c[0]
$nms.qt[Quick Text ID] = 'Text you want' << Add Quick Text
\qt[Quick Text ID] << Call Quick Text from message box
this is taken from neo msg script 3.0 beta.
can you do similar in yours.
oh and btw, i havent tryid your latest version, but did you menage to fix bug with window postytioning around event or player. in v1.2 when you set for example \cp[0] befeore it appeard in right location, it appeared in one of the basic positions for few frames.
cheers
I haven't done anything with the positioning of the message window and it's not a bug I've noticed, so I would imagine that I have not fixed that. As to the quick text feature - it would be pretty easy to add it, but I have no intention to look at the script for quite a while.
There's an error there when I talk to that monster by testing your demo...
In the demo? Had you changed any options? I'll take a look at the demo and see if it is outdated.
Quote from: modern algebra on August 03, 2008, 01:12:42 PM
In the demo? Had you changed any options? I'll take a look at the demo and see if it is outdated.
I dunno... Because before I talk to the lady who far left got it didn't show any error...
But after that, it show a bug message out...
MM, I did have a mistake with the far left lady, so that means you probably changed a setting - I will test them out and see which one it was and then I'll fix it up.
I think you probably changed "Shown Lines" too low.
I'll try to fix them, but for now just keep Shown Lines at 4.
awesome script man thanx! ;D
Updated to Version 2.0
There are a few new features, but the primary purpose of rewriting this script was for my own use in diagnosing and fixing problems that arise in the script, as well as add new parts. The older versions made this difficult.
That's not to discredit this update in terms of functionality. Improved face handling, as well as more codes for Actors, a way to get the Actor ID of the Party member in slot x, filters, and improved positioning commands makes this script well worth the demo. I hope you enjoy it.
New Addon for the system:
- Randomized Pitch for Letter by Letter Sound.
Adding this into your game gives you the option of having your letter by letter sound have a random pitch between 50 and 150 every time it plays. This simulates the variation in pitch of a person speaking. A similar system would be that of Animal Crossing -> http://ca.youtube.com/watch?v=n6ZxnEdmbQQ about 0:23
Runtime commands are:
$game_ats.random_pitch = true/false
$game_message.random_pitch = true/false
#==============================================================================
# Randomized Pitch Addon for ATS v. 2.0
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# This addon allows you to randomize the pitch in the letter by letter sounds,
# thus giving the impression of pitch fluctuation in a voice.
#==============================================================================
# ** Game_ATS
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Sets runtime commands for $game_ats.random_pitch
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Summary of Changes:
# new constant - RANDOMIZED_PITCH
# new public accessor variable - random_pitch
# aliased method - reset
#==============================================================================
class Game_ATS
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * CONSTANT
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
RANDOMIZED_PITCH = true
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Public Instance Variable
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
attr_accessor :random_pitch
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Reset
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
alias modalg_rndm_pitch_adon_atsv2_rst_8d94 reset
def reset
# Run Original Method
modalg_rndm_pitch_adon_atsv2_rst_8d94
# Set random pitch to default
@random_pitch = RANDOMIZED_PITCH
end
end
#==============================================================================
# ** Game_Message
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Sets runtime commands for $game_message.random_pitch
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Summary of Changes:
# aliased method - clear
# overwritten reader method - message_se
#==============================================================================
class Game_Message
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Clear
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
alias modalg_ats2_ptch_randmze_message_clr_945s clear
def clear
# Run Original Method
modalg_ats2_ptch_randmze_message_clr_945s
# Set random pitch to the ATS value
@random_pitch = $game_ats.random_pitch
end
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Message SE
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
def message_se
# Randomize Pitch
@message_se.pitch = 50 + rand(100) if @random_pitch
return @message_se
end
end
modern algebra, can you create a command to call script during the message?
I want to change .message_colour = Color object RGB more than once during the same message
thank you so much
Can you not use \C[ID] to do so?
I can, but with \C[ID] I can't use all the RGB colors :D
I suppose not, but do you can select which ones you use by editing the palette in your windowskin. Nonetheless, I'll write an addon that allows you to use hex code.
yes, but with rgb I can choose how many colors I want, and this makes the messages much more interesting ;)
I'll be very happy if you can write the addon ;8
Thanks in advance :D
Your script has a bug (not fatal one that cause the crash but still, I think it's serious) Although, there ARE a lot options so I'm not sure if it's my fault and I missed something.
Version I'm using: Version: 2.0b
I was trying to set it up so I'll only get 3 lines in the message box, not normal four lines. I deceased the message box height so it'll look nice with only three lines, not 3 lines and 1 blank line. I also changed a lot other things (like namebox, face, etc) but it seems like the window height is responsible for the bug.
If I set the window height low, the font type and font size is no longer in effect. I did not use the script syntax to change the window height. I used the config block in the script since I want it to be permanent.
The code is
DEFAULT_WINDOW_HEIGHT = 97 #128 is default
Recently, I decided to test it in Advance Text System demo I downloaded, and changed the font type. It doesn't seem to work at first, but after talking to few NPCs, it finally changes to the font type. (There was introduction speech, then I talked to the green-haired girl. The font didn't change until I talked to the green-haired man after)
I then deceased the height in that demo script, the font type never took effect, not even after I talked same NPCs.
While testing your demo for the bug, I encountered another bug (although I'm not sure if it's because I did not adjust few other options in the block to make it to work)
If I deceased the window height, the scrolling window screws up. It shows first three lines, and nothing after that. It's just bunch of blank lines and I have to press [ENTER] key repeatedly until the window finishes processing "invisible" lines, and end the conversation with the NPC.
It's not important for me because I don't intend to use the scrolling effect in my game. Although you might want to know about it.
I will look into it.
In the demo though, the events specifically set a different font and size, so that might be why it didn't show up.
In any case, thanks for the report and I will look into these bugs.
BUG REPORT!!!!!!
or possible one.
I had to take out both the paragraph and the ATS VErsion 2.0 script to determine if it was an error or the engine its self.
I have discovered its one of these two.
I have noticed that this script or scripts will scip characters when in dialog. basically its this:
Character A: bla.........................................
enter (freese, no face same text box with bla.....................................)
enter (skip character b
Character A: bla......................
basically something in the script/s is making it skip at random over characters conversations. again this is random freezes.
but once it happens it always happens with those characters no matter how many times you restart the test play.
This Error has been isolated to the ATS 2.0 script.
I don't really understand what you are trying to say. Can you recreate the error in a new project and send that to me?
I shall do that and I will send it in a private message to you.
Alright, thanks. I'll look into the problem when I have time. It might take a while before I have the time though, I should warn you. Don't expect this to be done by tomorrow.
I dont, and thank you.
The game still works fine even though it skips characters .... ;)
any news?
I don't have time to work on it right now. I have a lot of schoolwork to do - I definitely won't be able to look into this anytime before December 1
I am wondering if there is any news?
amazing script, every feature works perfectly, haven't had any errors, and I've been customizing the script a lot, just one question, does this work on the initial screen, i mean like the color codes? i'd love it even more than i do now if they did, (that's quite hard!!!!) anyway, amazing script
No, I'm sorry but that uses a different window than the message window, so it wouldnt really fit in with this script. I am glad to hear you have not encountered any problems.
@Adrien. Sorry - I sort of forgot about it. I will look into it within the next couple days. I don't have access to the internet on my computer right now, but I should within a few more days.
shame, oh well, thanks for an a* script
Alright, Adrien, I think I've located your weird ass bug.
Try inserting this into a new script BELOW the ATS in the script editor.
#==============================================================================
# Skipped Message Bug Fix for ATS v.2
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# This fixes a weird bug that skips messages occasionally
#==============================================================================
# ** Window_Message
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# aliased method - new_line
#==============================================================================
class Window_Message
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * New Line
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
alias modalg_bug_fix_scroll_nw_ln_94n4 new_line
def new_line
modalg_bug_fix_scroll_nw_ln_94n4
self.pause = false if @text == ""
end
end
I apologize for taking so long to find a fix.
thank you for fixing the error
Alrighty, I haven't been using this script for long, but I think I'm getting used to it's features.
However, I've run into a bit of a wall here. I'll try to explain.
I've got a combined choice branch, with exactly 11 choices. Depending one which you select, it will disable the choice, and reopen the choice branch to select another.
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fi81.photobucket.com%2Falbums%2Fj205%2Fzanbatou-T-S%2FErE1.png&hash=cd8aaa99d690f0611ac65ab43f6c5459e19e59df)
The above is an example of one of the 4 Choice commands.
Now, onto the issue.
Let's assume i select choice 1. This will set a variable, and turn switch 281 ON; Disabling choice 1.
I check my variables, and the correct variable has been set.
I select choice 2. The same as above happens. The command disappears, and the proper variable is set to 1.
I open the box for a third time, currently, choice 1 and 2 are gone, as they are supposed to be.
I select choice 5. The wrong switch and variable are set. The variable for choice 4 is set instead.
Further testing showed that it continued in this pattern. Disabling the wrong command, and setting the wrong variable. What i assumed, was that the ID of the next choice command was being used for the selection. As in, selecting choice 5 used the contents of choice 4, instead.
I've used several other commands that I thought might conflict, and cause this error. As well as setting the box's column count to 4, and row count to 3.
Even removing these commands didn't solve it, so I've come to the natural conclusion, that it is a script error.
I'm apologize for the messy post, I seem to lose track of what I've covered when making these things.
I'm really not sure what other information may be important. I'd appreciate some clarification, or assistance.
Yes, it likely is an error in the script. If you wouldn't mind, could you send the project with the error in it to me? If you do not feel comfortable sharing the contents of your project, then you could reproduce the error in another project and send that to me. It would make the process go a lot faster.
I cleared out everything that was unnecessary. Hopefully it cut the file size enough. (was 100mb)
For reference, i've altered the event to tell you which choice you selected.
Also, the common event in question, is #10.
Although I've nothing left in the project I'd like to keep private, I've sent the link in PM to be proper.
Alright, Thank you. I will get to work.
I seem to have this issue as well. If you have four choices:
A
B
C
D
And if you have A and B not appearing due to switches, selecting C will result as if you selected B, and selecting D will result as if you selected C! I'll PM you the project, if you wouldn't mind looking at it.
A fix would be greatly appreciated!
Yeah, thank you for the extra data. I am looking into it, but I've been pretty busy with school and haven't been able to do scripting that isn't very very simple. I will try to have it fixed before too late in February.
Huh?, Very Great Script Modern Algebra!!
Wow!!~^^
But I have a suggestion, this might be hard because...
How about add the Menu for Speed Text system. With this, the Player can adjust the menu(text speed) whatever their like. Example: Fast 0 – 10 Slow.
I Hope someone read this and reply it.
Thank you, my friend, At least reading .~^^
the menu text speed? The menu doesn't draw letter by letter though ~ it draws it all at once. I don't know what you're asking.
Also, I have not looked at the bugs with this script yet. I keep meaning to get around to it, but I have a pretty full plate at the moment. I will do it though, and I have not forgotten about them.
Yes...I see the misunderstood at there...I hope you understand with it...~^^.
Huh..(I not very well at English)... I meant that add the Menu..Maybe the command menu for adjust the text speed(when talking with NPC and other)
I know the menu go out at once..I meant that the player can adjust the text speed when talking with npc or other
Example: Slow 10 => Fast 0.
(Not for the menu text speed)(Create the command menu for adjust the text speed during talking the NPC or etc)
Please tell me if you do not understand with it...I see you are very hard working scripter/coder.
Nice...Keep it up~^^
Huh sorry for double post..
I have the AOM(Advance Option Menu)
And just upload it here... take a look..
I do not know about the author...
And in there, there has Paragraph Formatter and ATS (Advance text System) all made by Modern Algebra.
Take a look....
Maybe you can adjust for add the 'command menu' for the player that can adjust the text speed during/after talking with NPC and other...
(Hope...please understand with me....)(Please understand with me)
http://www.megaupload.com/?d=H2AXV13W
I know to create the script is harder... and I do not want to disturb you..Please respond it so I can know if you want to create it or not.
I'll take a look and if it seems easily doable, then I will do it. If it is hard, then I will put it on my list of major scripting projects, and it might take some time before I could get around to it.
Thank you very much.. Modern Algebra ...I am very appreciates with your helps~^^
Quote from: Modern Algebra on February 12, 2009, 10:00:10 PM
I'll take a look and if it seems easily doable, then I will do it. If it is hard, then I will put it on my list of major scripting projects, and it might take some time before I could get around to it.
Sorry for double post.
1)How close is this request to being finished??
2)I was found
Bug in your ATS Script, hope you will give attention. There was a crash with other script made by Worale/Woratana.
The Quick Face Border by Worale.
(There are no error in there but has only a bug)
The Quick Face Border does not work after talking with NPC (The messages).Hope you understand with my words.....
If you not understand I can explain it..
I think that all, and sorry if I take your time.
Hmm, well compatibility issues are to be expected among other message scripts. I will take a look. In the meantime, the ATS does have an option to give the faceset its own window. Maybe you could see if that achieves a similar effect.
As for the original problem, it is doable. What options do you want me to include though? Just text speed?
Quote from: Modern Algebra on March 11, 2009, 08:55:06 PM
Hmm, well compatibility issues are to be expected among other message scripts. I will take a look. In the meantime, the ATS does have an option to give the faceset its own window. Maybe you could see if that achieves a similar effect.
As for the original problem, it is doable. What options do you want me to include though? Just text speed?
ok..sorry for late reply.. The options do i want you to include though just text speed i think that all.Actually it more to up to you to add or not.
I am very thank you for you because accept my request.
Edit: for truly i said you have another bug... withEmoticon on Face made by Nechigawara Sanzenin
Maybe you should add the script/code in your ATS... the Balloon that appears in Messages.I am sorry if i have bad English Which made you not understand with me. And sorry if i take your time.
[spoiler=
Script]
#==============================================================================
# Emoticon on Face
#------------------------------------------------------------------------------
# By Nechigawara Sanzenin
# WARNING!! : This script can use on RPG Maker VX Only!! (XP Not Support)
=begin
How to Use:
Add "\E[Number Of Emoticon]" To text in message control
You can see Number of Emoticon on "Balloon.png" in "Graphics\System" or
"%programfiles%\Common Files\Enterbrain\RGSS2\RPGVX\Graphics\System".
when the line number of emoticonset is 1 , Number of Emoticon is 1.
when the line number of emoticonset is 2 , Number of Emoticon is 2.
Max of Number of Emoticon is 10.
You can set Emoticon's Position at EMO_X and EMO_y.
You can set frame rate at BALLOON_WAIT.
if the message window don't have face,Noting happen.
=end
#==============================================================================
class Window_Message < Window_Selectable
#--------------------------------------------------------------------------
BALLOON_WAIT = 12
EMO_X = 93
EMO_Y = 15
#--------------------------------------------------------------------------
alias inc_initialize initialize
def initialize
inc_initialize
@viewport = Viewport.new(0, 0, 544, 416)
@viewport.z = z + 50
@balloon_face = 0
create_balloon
end
#--------------------------------------------------------------------------
alias inc_dispose dispose
def dispose
inc_dispose
dispose_balloon
@viewport.dispose
end
#--------------------------------------------------------------------------
def update
super
update_gold_window
update_number_input_window
update_back_sprite
update_show_fast
update_balloon
unless @opening or @closing # ???????????
if @wait_count > 0 # ????????
@wait_count -= 1
elsif self.pause # ???????
input_pause
elsif self.active # ??????
input_choice
elsif @number_input_window.visible # ?????
input_number
elsif @text != nil # ????????
update_message # ????????
elsif continue? # ?????
start_message # ????????
open # ????????
$game_message.visible = true
else # ??????
close # ?????????
$game_message.visible = @closing
end
end
end
#--------------------------------------------------------------------------
def create_balloon
dispose_balloon
@balloon_duration = 8 * 8 + BALLOON_WAIT
@balloon_sprite = ::Sprite.new(@viewport)
@balloon_sprite.bitmap = Cache.system("Balloon")
@balloon_sprite.ox = 16
@balloon_sprite.oy = 32
@balloon_sprite.visible = false
update_balloon
end
#--------------------------------------------------------------------------
def refresh_balloon
if @balloon_face == 0 or @balloon_face > 10
@balloon_sprite.visible = false
else
@balloon_sprite.visible = true
end
update_balloon
end
#--------------------------------------------------------------------------
def update_balloon
if @balloon_duration > 0
@balloon_duration -= 1
if @balloon_duration == 0
@balloon_duration = 8 * 8 + BALLOON_WAIT
@balloon_duration -= 1
else
@balloon_sprite.x = x + EMO_X
@balloon_sprite.y = y + EMO_Y
@balloon_sprite.z = z + 50
if @balloon_duration < BALLOON_WAIT
sx = 7 * 32
else
sx = (7 - (@balloon_duration - BALLOON_WAIT) / 8) * 32
end
sy = (@balloon_face - 1) * 32
@balloon_sprite.src_rect.set(sx, sy, 32, 32)
end
end
end
#--------------------------------------------------------------------------
def dispose_balloon
if @balloon_sprite != nil
@balloon_sprite.dispose
@balloon_sprite = nil
end
end
#--------------------------------------------------------------------------
alias inc_terminate_message terminate_message
def terminate_message
inc_terminate_message
@balloon_sprite.visible = false
end
#--------------------------------------------------------------------------
alias inc_convert_special_characters convert_special_characters
def convert_special_characters
inc_convert_special_characters
@text.gsub!(/\\E\[([0-9]+)\]/i) { "\x09[#{$1}]" }
end
#--------------------------------------------------------------------------
def update_message
loop do
c = @text.slice!(/./m) # ???????
case c
when nil # ??????????
finish_message # ????
break
when "\x00" # ??
new_line
if @line_count >= MAX_LINE # ????????
unless @text.empty? # ??????????
self.pause = true # ????????
break
end
end
when "\x01" # \C[n] (?????)
@text.sub!(/\[([0-9]+)\]/, "")
contents.font.color = text_color($1.to_i)
next
when "\x02" # \G (?????)
@gold_window.refresh
@gold_window.open
when "\x03" # \. (???? 1/4 ?)
@wait_count = 15
break
when "\x04" # \| (???? 1 ?)
@wait_count = 60
break
when "\x05" # \! (????)
self.pause = true
break
when "\x06" # \> (???? ON)
@line_show_fast = true
when "\x07" # \< (???? OFF)
@line_show_fast = false
when "\x08" # \^ (??????)
@pause_skip = true
when "\x09"
@text.sub!(/\[([0-9]+)\]/, "")
unless $game_message.face_name.empty?
@balloon_face = $1.to_i
refresh_balloon
end
else # ?????
contents.draw_text(@contents_x, @contents_y, 40, WLH, c)
c_width = contents.text_size(c).width
@contents_x += c_width
end
break unless @show_fast or @line_show_fast
end
end
end
[/spoiler]
Hey, I recently installed Yanfly's new Display Victory Aftermath script, and it's showing something weird on ATS' end. Basically messages appear twice as often as they should. As I wrote on RPGRev,
QuoteSorry to be a pain, but I'm still getting the same error after using the compatibility fix and trying out every combination of scripts placing ATS higher/lower, the script higher/lower and compatibility. I've included an image to help show what's going on if it helps at all.
It shows the first message, then I hit the X or enter button and the portrait disappears, then I have to hit the X or enter button again for the next message to show up.
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fstudentpages.scad.edu%2F%7Ekcampb22%2Fweird_msg.png&hash=d14770dd22f40d03b2c8608f453322f5767e91ff)
Do you have any idea of how ATS is affecting this? I know that Yanfly's script has a certain way of displaying message text, namely:
# Actor.ID => # ----------------------------------------------------------
1 => [# This is Actor 1's quotes.
[# This is the 1st random message that can be said.
"\\>\\c[6]\\n[1]\\c[0]\\<",
"\"Hmph! I didn't break a sweat.\"",
" ",
" "],
],# This ends Actor 1
Hmm, I will definitely look into that tomorrow. It is likely an error on my part, as it seems that it is terminating the message without clearing the window.
First, see if:
http://rmrk.net/index.php/topic,25348.msg387740.html#msg387740
does anything.
Quote from: modern algebra on April 27, 2009, 04:36:26 AM
Hmm, I will definitely look into that tomorrow. It is likely an error on my part, as it seems that it is terminating the message without clearing the window.
First, see if:
http://rmrk.net/index.php/topic,25348.msg387740.html#msg387740
does anything.
Yep, that did it!
Thanks man! :D
Cool. Good to hear!
Hello.
I want to inform you that your script doesn't seem to have the animated face disable/enable toggle. When I was using my faces (they all end in numbers) so some of them switch to another person's face. Because of the numbers in their filenames. I went through your script, but was unable to find a toggle. Or I missed a Boolean animated face somewhere somehow.
So I had to dive in your script and disable it manually myself.
Also, is there a way to get rid of the "pause" between the face changes? I'm using the expression faces. If I want to switch a happy face to angry face, it would make the happy face disappear, and come a new angry face. I don't want the face to "disappear." I want it to happen immediately, that you don't notice the face disappearing, and reappearing. (And it also affects the namebox, so it disappears along with the face. Dunno if you want to know that too.)
I used the code - \|\^ and the face-disappear-appear is noticeable.
Meanwhile I'll try to look into the disappear/appear myself, but I'm only novice at ruby though. In the default project (No advanced test system), the face is replaced with another face immediately. So the pause between the face changes is by your script, that I know.
Thank you for writing this great script. I've been using it for a long time.
Yeah, I hadn't really thought of making a toggle for the animated faces, since I figured that if there was a desire to label faces similarly, letters A-Z could be used to denote succession, and the n umbers could be reserved for animated faces. I suppose it would have been prudent to include a toggle, but the customization of the script is a headache to begin with, it's kind of a hard choice to throw in more options.
As for the other problem, I haven't worked with the script for a long time, so changing this might cause other problems. However, I imagine this may fix it. Go to around line 2100, where you should see this method:
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * End Message
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
alias modalg_ats_win_msg_term terminate_message
def terminate_message
$game_message.se_play ($game_message.termination_se) if $game_message.mt_se
modalg_ats_win_msg_term
# Dispose of faces
@face_window.clear
# Dispose of name window
@name_window.dispose unless @name_window == nil
@name_window = nil
# Dispose of choice window
@choice_window.dispose unless @choice_window.nil? || @choice_window.disposed?
@choice_window = nil
@line_count = 0
determine_position if $game_temp.in_battle
$game_message.mt_se = $game_ats.mt_se
end
Make it look like this:
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * End Message
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
alias modalg_ats_win_msg_term terminate_message
def terminate_message
$game_message.se_play ($game_message.termination_se) if $game_message.mt_se
modalg_ats_win_msg_term
# Dispose of faces
#@face_window.clear
# Dispose of name window
#@name_window.dispose unless @name_window == nil
#@name_window = nil
# Dispose of choice window
@choice_window.dispose unless @choice_window.nil? || @choice_window.disposed?
@choice_window = nil
@line_count = 0
determine_position if $game_temp.in_battle
$game_message.mt_se = $game_ats.mt_se
end
Then place this code directly underneath the final end in that method:
def close
super
# Dispose of faces
@face_window.clear
# Dispose of name window
@name_window.dispose unless @name_window == nil
@name_window = nil
end
Sorry for being late. Life got in my way.
With your modifications, it works very well. ^_^ Thank you.
There is a bug but I probably will not encounter it during the normal gameplay. If I try to create the choices without any message beforehand, normally it would appear centered on the screen. But with your modification, it just does not show up. Since it is not showing up, it's not advancing the event. In other words, it froze.
I was using the choices/no-message during the debug map only. When I threw in a blank message, it works fine after. I'm not concerned with this bug because I will never do choices/no-message during the game.
I'm mentioning the bug in case you want to know. I'm starting to do more work in my project, so if any bugs pop up, I'll drop by here.
That's only with the modification? I will look into it when and if I should ever write a new version of this script. But if it's only with the mod then I won't worry about it much until then.
I'm glad I could help.
Yes, it is only with the modification. So don't worry about it. :)
The following on a event had the [yes] choice text as invisible in game for me:
....
@>Text:'Actor3', 2, Normal, Top
: :\nb[Setup] Are you sure you want to choose Zane?\lb
: :Plus: Attack, Defense, Speed\lb
: :Minus: Health, Spirit, Stamina\lb
: :Special: Doubles Critical Hit Chance
@>Show Choices: Yes, No
: When [Yes]
@>
: When [No]
@>
: Branch End
....
The only modifications to default settings I made was to turn off choice box (=false) and paragraph formatting (=false). Interesting enough changing choice box = true fixed everything.
Other scripts (in order from top to bottom:
Victory Aftermath
Class Changer
Victory Aftermath Extra
Paragraph Formatter
ATS
ATS Patch 1
ATS Patch 2
I will look into it as soon as I can.
It's not the script's problem and it's attached to his post from the forum. You're problem. I would try redownloading or using a different browser or use a different program to extract the files.
Do you have WinRAR? If not, maybe the extraction program you are using is incompatible.
Hey, Great script. I'm new here, and am a total n00b when it comes to scripting, so this may be stupid. But when you show the larger face that comes out of the message box (like kinda on Fire Emblem), the face is in the box, I moved it out using the face offset script commands, but the text is still scrunched into the right corner. How can I make it fill the whole text box? Like this (just with only one person) [spoiler](https://rmrk.net/proxy.php?request=http%3A%2F%2Fjudyonthenet.com%2Fwp-content%2Fuploads%2F2008%2F04%2Ffire-emblem-por-1.jpg&hash=7808304e426a216a9f5c5ace02018462a261e03a)[/spoiler]
As long as no part of the face window overlaps the text box it ought not to scrunch the text up. For instance, the attached:
I could have been a little more precise so that you wouldn't see anything between the face and the message window, but you get the picture I think.
Here's a little bit of what is going on inside my little not-working-thing.
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fi278.photobucket.com%2Falbums%2Fkk96%2FArcono%2FUntitled.jpg&hash=9f07759abb25adbe99ab301298398e1ae2dd6219)
It doesn't even work when the face is waay above the message, kinda like your picture.
The message box doesn't fix it when I move it around either.
Thanks a bundle.
Scratch that, it just worked! Thank you so much for the help.
Thanks for an awesome script, but is there any way for the script to ignore the breakups in between the choices and the text (the "isolation")? I've got labels before my choices, and I don't need for my choice window to fly to the center of my screen. I've looked all over for the commands telling the window to go center screen, but I can't find them anywhere, that I might change those coordinates.
Any help is appreciated.
I probably should have made that more configurable. Anyway, there is a workaround, but it will not retain the previous message that was up before the labels. I'm not sure if that's something you want or not.
Anyway, for that, all you would need to do is make a message before the choice branch that is transparent and has only the autoclose code in it: \%.
Then you can use the regular $game_message.choicebox_x, $game_message.choicebox_y commands to control its position.
So the event should look like this
...
@>Script: $game_message.choicebox_x = a
: : $game_message.choicebox_y = b
@>Text: -, - Transparent, Bottom
: : \%
@>Show Choices: x, y, z
...
I realize it's a little silly to have to do all that work; in retrospect, I should've given the user some control over the position of isolated choiceboxes.
I appreciate your reply, but the workaround you suggested actually doesn't seem to be working; I managed to find another workaround, actually placing the message that went before the label, after it. Thank you for your help.
I'm surprised the workaround I suggested didn't work. I tested it out myself and it worked.
Anyway, what you're doing is better. Hopefully that doesn't disrupt your eventing too much.
So, uh, any news on the choice bug yet? :-[
Sorry, I forgot about it. Remind me after July 20 and my schedule should be free to fix that. Sorry for the neglect.
Hey MA,
So I ran into a little issue trying out the ATS for OotM. Whenever I have the window size adjusted, in either default or instance based, it recolors the text to white. It can be reset by \c
- in the instance, but it also makes the next event-called text to be white. It can all be remedied with a \c
- , however I was wondering if there's a way to fix it in the script so that every single text event need not be preceded with \c
- .
The biggest perplexity is that white is nowhere in my color scheme in my windowskin, so somewhere it must be getting changed with rgb or something. I have a similar issue in the baldur's gate system where one category of text is white and I can't find where to change that, here's a screen:
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fimg.photobucket.com%2Falbums%2Fv648%2Fjoymason%2Frpgmaker%2FProject%2FScreenTravel-01.png&hash=11cd0af5266143e08bfc0d8b58433dc6b0f14131)
Lemme know if anything can be done to fix it, I understand if it takes a bit, it's not a game-breakingly vital fix.
Thanks for reporting those bugs :)
The default colour for a new font is always (255, 255, 255, 255), and so the problem is that I'm not correcting that to normal_color in either of the scripts you mention.
Anyway, the code below should fix the ATS one. Just put it anywhere below the ATS in the script editor
#==============================================================================
# Colour Change Fix
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# This fixes a minor bug where the message window does not correct itself to
# normal_color when it is remade
#==============================================================================
class Window_Message
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Remake Window
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
alias mdrnalg_joy_colourfix_ats_rmkwin_6n31 remake_window
def remake_window (*args)
mdrnalg_joy_colourfix_ats_rmkwin_6n31 (*args)
contents.font.color = normal_color
end
end
To fix it in the travel menu, go to the refresh method of Window_DestinationList (around line 420) and add this line underneath the Bitmap definition:
contents.font.color = normal_color
so it looks like this:
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Refresh
# travel_type_id : the ID of the travel type selected
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
def refresh (travel_type_id, teleport_actor = nil)
contents.clear
contents.dispose
self.contents = Bitmap.new (192, @location.dests[travel_type_id].size*WLH)
contents.font.color = normal_color
@disabled.clear
@item_max = @location.dests[travel_type_id].size
Works like a charm man. Thanks so much!
Hello,
I was using the ATS 2.0 when I ran across a problem. You see, everything was going smoothly till I entered a battle into one of the events and received this attached error:
I love these scripts but there are some things.
1.) I notice that if I use the \. or \| commands in a message, text skips to the next line a bit too soon where there is still room for another 1-3 words.
2.) Another thing, if I make a message, make a choice branch and put the call script "$scene = Scene_Map.new" below it, then give another message and choice branch and put the same call script, that the face stays even after the message is over and you can move around as the face follows.
3.) Also a side question, what command would I use to refresh the new settings. As in I had put if the user wants sound with letter by letter and it does not take effect until 2 messages later.
4.) The user input of speeding up text by pressing a key goes way too fast and skips too much compared to the default message system's skip speed. Is there a way to lower the skip speed?
1) I haven't noticed that, but I imagine that it means I did not extract that code when formatting. I will fix that if I ever make a new version. If you want to fix that, then go to around line 820 and see this:
# Codes without arguments
no_args_codes = ["\x02", "\x03", "\x04", "\x05", "\x06", "\x07", "\x09",
"\x10", "\x95", "\x94", "\x91", "\x90", "\x89"]
# Codes with integer arguments
int_args_codes = ["\x01", "\x92", "\x84", "\x82", "\x81", "\x11"]
take "\x02" out of no_args_codes and put it into int_args_codes, so it looks like this:
# Codes without arguments
no_args_codes = ["\x03", "\x04", "\x05", "\x06", "\x07", "\x09",
"\x10", "\x95", "\x94", "\x91", "\x90", "\x89"]
# Codes with integer arguments
int_args_codes = ["\x01", "\x02", "\x92", "\x84", "\x82", "\x81", "\x11"]
2) I don't understand why you would ever do that. Why call Scene_Map twice? Why call it at all? Anyway, it can probably be fixed by putting a wait command of 1 frame between the Call Script and the commands adjacent to it.
3) I assume you mean you set it in $game_ats and then it doesn't take effect immediately? $game_message.clear.
Quote from: Script InstructionsOne thing to be noted is that when you do change the $game_ats, you will need to use the code $game_message.clear to make it so that they will apply to the very next message, rather than just all messages after that.
4) the skip text in the ATS does the exact same thing that the default skip does, pretty much. The default skip-on-user-input displays the entire message immediately. the ATS can't do that any faster. What I'm guessing you are seeing is the scrolling effect - it will seem fast because the skip on user input for the ATS brings the text down until the next time it needs to scroll. This means that in long messages, it will make the first line being currently displayed disappear. However, if it only brought you down to the last line than it would both nullify the point of being able to skip text messages at all since the last line at least would have to be displayed.
In the end, it's the player's choice whether to skip the text or not; if they miss information that matters than it's their own fault. If you want certain messages to be unskippable, than just disallow skipping for that message.
Thank you for the response. About number 2, I was just using the wrong command and well it would take place in another script that I have in there to be used, but I would only use one anyway and it just shows a slow delay of the face erasing. As in the face vanishes but then the message shortly after. So not too much a problem in that case.
As for 4, the text speed skip on user input... The default message speed system just speeds up the message if I press the key once and hold. It only shows the message instantly if I press the key twice and it stops before the \! command as well so user input must go in again. But well, with the ATS, it just skips all that with a single press. Yes, even if I put "SCROLLING = false" it still puts the whole thing instantly and does not stop after each sentence, not stopping for the \! command.
Well about number 1, I did as you suggested, and it still skips to the next line too early.
\nb[Tyler]Good evening master. \!How have you been? \!Things
have been rather uncalmly here sir. \!Why, \.there was a moment
where I almost spilled my tea all because of a wee mouse. \!The
things that go on here... \|sir, \.are you listening to me?
The line "Why, there was a moment where I ____
almost spilled my tea all because of a wee mouse."
Appears like that. where "____" is enough room for the word almost to fit. And if I take away the \. command, it fits in there.
The line "The things that go on here... sir, __
are you listening to me?"
There is enough room for the word "are" to fit where that blank is, but it skips a line. The word "are" does fit in when I take away the \| and \. commands.
\nb[Tyler]Good evening master. \!How have you been? \!Things
have been rather uncalmly here sir. \!Why, there was a moment
where I almost spilled my tea all because of a wee mouse. \!The
things that go on here... \|sir, \.are you listening to me?
If I take away that first \. as seen here, then that last line, there is still room for the words "are you" before it skips to the next line. Everything fits in of course if I take away the \. and \| commands.
Anyway... thank you for your time. It's really an awesome script and something that RMVX should of had at the start. Thank you for your help.
Quote from: Raukue on August 13, 2009, 11:31:10 PM
As for 4, the text speed skip on user input... The default message speed system just speeds up the message if I press the key once and hold. It only shows the message instantly if I press the key twice and it stops before the \! command as well so user input must go in again. But well, with the ATS, it just skips all that with a single press. Yes, even if I put "SCROLLING = false" it still puts the whole thing instantly and does not stop after each sentence, not stopping for the \! command.
The default message system does skip all immediately - I'm sure about that. I just tested in a blank project - you might have had a different message system if it didn't - but I am pretty sure that default skips the whole message too. It shouldn't skip \! codes though, so I will look into that.
For (1) - if you have the extraction bug fix, then you need to do the same modification I suggested to that since it overwrites that method - It seems to be working for me.
For the skipping past \!, try adding this code into its own slot in the editor, somewhere below the ATS. See if it will still skip.
class Window_Message
alias modrnalg_atsbugfix_pause_skip_0bh2 draw_message_character
def draw_message_character (c)
if c == "\x04"
@show_fast = false
@line_show_fast = false
end
modrnalg_atsbugfix_pause_skip_0bh2 (c)
end
end
I really should work on Version 3.0 one of these days.
I am considering writing a major update for this script very soon. If anyone has any features to suggest that I add (or unresolved bugs), speak now or forever hold your peace.
Wow, yes thank you, those problems have now been fixed. Awesome!
As for user input to skip all text, I guess I meant when \! was used within it. Without those then yes the whole message appeared instantly. Sorry if I didn't say it well enough.
And yes that'd be awesome to make a 3.0 it's a truly awesome script and many others agree with that I am sure. I think its the best message script out there!
Though... I don't know how much better it can be improved, with these fixes it seems more perfect than before. There may still be some deals with faces delaying to erase but that is minor.
Is it compatable with all fonts?
It's compatible with any fonts that work in RMVX. I've never encountered a font that it didn't work with.
With the font, how do you change it everywhere. I have changed it in the script, but it only changes namebox, and choice box. How do you change it for the title, and menu, and everything?
How do I do it,
I downloaded a font
Installed the font
Put it in the font folder
It had underscores in the name, I copied the name and put it in the script
where there's 3 font names.
Play the game and it don't show the font, just plane text.
By the way, nice script. 8)
Show me how you put it in the script. It should be before all the other fonts.
In any case, the script uses the RMVX Font class - it doesn't do anything to modify it.
False alarm :police:
The font was messed up, I got it to work perfectly. :mad:
But :mad:
Now I'm having trouble with the message box, It won't adjust in the opacity. And can I change it's size?
Are the below codes not working for you?
$game_message.message_width = positive integer
$game_message.message_height = positive integer
$game_message.message_opacity = integer (between 0 and 255)
I'm probably doing this way wrong, but I change the font on the script "ATS Version 2.0" at lines 226, 298, and 341. I can't find anywhere to change it altogether. I'm no good at scripting...can ya' tell?
Sorry for the misunderstanding, I meant the namebox.
Is there a way to change it all together.
Quote from: DarkCodeZero on August 15, 2009, 05:35:40 PM
I'm probably doing this way wrong, but I change the font on the script "ATS Version 2.0" at lines 226, 298, and 341. I can't find anywhere to change it altogether. I'm no good at scripting...can ya' tell?
Hey, no you're doing it right. I just have fonts separated - One is the font of the message box, one is the name box, and the other is the choice box. They are all separate because I figured some people might not want to have the same fonts for everything.
Quote from: shandy333 on August 15, 2009, 06:34:14 PM
Sorry for the misunderstanding, I meant the namebox.
Is there a way to change it all together.
What do you mean altogether?
The size of the name box is unadjustable - it is based on the width of whatever text you put in there. So it will be shorter for Ben and longer for Benjamin.
As for opacity, are these codes not working?
$game_message.namebox_opacity =
$game_ats.namebox_opacity =
I mean like in stead of going to each event and adding a call script.
When I try to change the opacity in the script, there's no effect. :aryan: <= What is this thing?
Cam you cange the font for the title and menu. And example would be in Leventhan's game Sunken Oculus. He's got the same text for the title, menu, and all the in-game text.
awww i wish there was one for RMXP
Quote from: shandy333 on August 15, 2009, 07:19:30 PM
I mean like in stead of going to each event and adding a call script.
When I try to change the opacity in the script, there's no effect. :aryan: <= What is this thing?
You mean, when you change this:
NAMEBOX_OPACITY = 255 # The opacity of the name box
it makes no difference? I don't know what to tell you - it works for me. If that isn't working, then you might have it overwritten somewhere.
Also, you can change the global setting of any command by changing it in $game_ats. You have to follow it by clearing $game_message though, if you want it to be in effect for the very next message.
So:
$game_ats.namebox_opacity = 255
$game_message.clear
Quote from: DarkCodeZero on August 15, 2009, 08:57:36 PM
Cam you cange the font for the title and menu. And example would be in Leventhan's game Sunken Oculus. He's got the same text for the title, menu, and all the in-game text.
Not with this script. This is a message script, so I didn't change all that stuff. But try this script: http://rmrk.net/index.php?topic=26246.0
Alright, that other script works great. Thanks much.
I see now.
Sorry about this double post but I ran across another thing...
\nb[\n[2]]\%Have a seat here. \!I'll be back with something.
1.) That line there, something skips too soon when there should be room. I tried getting rid of the \! and \% commands and still. Though... its odd, if i put them all together, the same message, they all appear on one line each, except for the last one where the word "something" skips to the next line.
So yeah I suppose that's another problem there that I dunno why that happens.
2.) Another thing about it... I am using Yanfly's Battle Redux and when I try to escape, the message appears on the bottom over the Fight and status, rather than on top where the command should go. I take away the ATS script and it appears correctly on top. Of course I don't want to go back ATS'less.
3.) Just came across this one... I am using Wora's Neo Save System 3, when I tried loading my game I got a stack level too deep error on your ATS script. I dunno if it has anything to do with Wora's script there but I bring it up just in case. Though I loaded my game again and it went through fine. Then how I tried a new game and got another stack level too deep
line 1874:
start_choice if $game_message.choicebox && !$game_message.choice_texts.empty?
Though I tried a new game again and it went through alright. I dunno if this has to do with your ATS script at all or if its because of other scripts that cause it. It's just... odd. So yeah I don't know if this is part of your script or just on my fault of having many scripts, though even though I have many I have worked out the kinks with them pretty much.
Hi !
First of all , THANKS for this script . this is awesome . i will raise a statue of you in my next game :)
But .... i have a small issue , look at this screen :
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fi89.servimg.com%2Fu%2Ff89%2F11%2F59%2F23%2F52%2Fproble10.jpg&hash=d9222826caaad5146e6efd145c4f88ec163fff84)
Here is the original text :
Voulez-vous jouer en mode developpeur ?\lb
Vous aurez accés au commentaire du créateur du jeu et vous
pourrez meme ... tricher .\lb
(yes , it is in french) .
As you can see , a word "créateur" is truncated ...
This is not a major issue because i can put a \lb before , but ...
1) That doesn't seem to be a problem to me... Are you saying that if you take away everything and make the message: Have a seat here. I'll be back with something.
then it takes up two lines when it looks like it shouldn't, then there's not a lot I can do. Either it just looks like it can but really can't (the last 16 pixels of any window are unusable) or it has to do with the text_size method of Bitmap
I could try a text_size fix if I had your font. The easiest thing would simply be to change the message slightly so that it isn't noticeable. Something like:
\nb[\n[2]]\%Have a seat here. \!I'll be right back with something.
2) I'd need to see the script in order to fix that. As a preliminary, try putting Yanfly's script underneath the ATS. If that doesn't work, link me to Yanfly's script
3) A Stack Level Too Deep error is likely caused by an incompatibility with other scripts. They're tricky though, because they don't say which method is being called recursively. It could easily be an incompatibility between the ATS or any script, or between any two scripts not the ATS, or between multiple scripts. I'd need for you to find out what scripts are the culprits and tell me.
It appears to be happening in Scene_Title, since it sometimes occurs in New Game and sometimes when Loading. So, likely one of the scripts has something to do with Scene_Title. If you can reproduce the error in a different project and send it to me than I can look through it. Otherwise you will have to find out by one-by-one script deletion, though it doesn't seem to be very reliable if sometimes you can start a new game and sometimes you can't. It might have something to do with the map conditions of the starting map. IDK
Quote from: dricc on August 17, 2009, 12:03:45 PM
Hi !
First of all , THANKS for this script . this is awesome . i will raise a statue of you in my next game :)
But .... i have a small issue , look at this screen :
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fi89.servimg.com%2Fu%2Ff89%2F11%2F59%2F23%2F52%2Fproble10.jpg&hash=d9222826caaad5146e6efd145c4f88ec163fff84)
Here is the original text :
Voulez-vous jouer en mode developpeur ?\lb
Vous aurez accés au commentaire du créateur du jeu et vous
pourrez meme ... tricher .\lb
(yes , it is in french) .
As you can see , a word "créateur" is truncated ...
This is not a major issue because i can put a \lb before , but ...
Hmm, yeah it shouldn't happen. The spaces at the starts of those lines shouldn't happen either. For now, just put the \lb. If it becomes common I will have to look into it more closely. I suspect the problem has to do with the text_size method of bitmap and incorrectly calculating for french characters.
1.) Well I should say a face is there. And if I put that same message, one after the other, it all appears in one line, it fits. I put 3 in a row, the first 2 appear all in one line, but the last one, the word something skips to the next line when the other 2 lines show that it can all fit on one line.
Case 1:
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fimg8.imageshack.us%2Fimg8%2F4563%2Fatsskipline1.th.png&hash=72544c00b619b96424cdf43c404fc7680e621c81) (http://img8.imageshack.us/my.php?image=atsskipline1.png)
Case 2:
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fimg8.imageshack.us%2Fimg8%2F5245%2Fatsskipline2.th.png&hash=1d4c6b868d62fe9cad57fc13f8b1977aee4e922c) (http://img8.imageshack.us/my.php?image=atsskipline2.png)
2.) The battle script is under yours. A link to the script.
http://pockethouse.wordpress.com/vx/scene-battle-redux/
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fimg38.imageshack.us%2Fimg38%2F1418%2Fatsbattleline1.th.png&hash=4aec6851358859e3736b9fde37fadd147d57b56c) (http://img38.imageshack.us/my.php?image=atsbattleline1.png)
The text appears slowly like when out of battle and talking to someone, rather than just instant like the rest of the actions.
3.) As for that stack error... so far it's only happened once but... maybe I will look into it. Once I post the demo of what I am building, which is a demo of scripts together to perhaps use as a base for a game, then I will link you to it. But I have another scripter looking at it so that might not be a problem. Don't know how I can reproduce the error when it hasn't shown up again so... dunno.
Edit: I found that stack error happens when I load a game, it loads alright. But if I press F12 and load that is when the error occurs. Scripter friend of mine says to put "unless $@" at the end of all alias commands. So it's no scripts fault really I don't think.
I put that unless $@ at the end of the error I was getting on the ATS script and yup, works now with no error when pressing F12 and starting a new game or loading. Sounds like a good idea of what he says about how scripters should try to put that command at the end of each alias.
So yeah... thanks again for your replying and help.
Well, it's not a terrible idea. It's better to just use Zeriab's script, in my opinion: http://rmrk.net/index.php/topic,18900.0.html
2) looking at finished scripts give me headaches and I'm tired. This is sort of a hack fix so there might be problems. Hopefully it works though:
[spoiler]
#==============================================================================
# ** ATS + Scene Battle ReDux Compatibility Patch
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Instructions:
#
# Place Scene Battle Redux under the ATS and place this script in its own
# slot below Scene Battle ReDux. It's sort of a hack fix. I'm tired.
#==============================================================================
class Window_BattleMessageReDux < Window_BattleMessage
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Determine Position
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
def determine_position
m = $game_message
# Set custom position if custom position desired
# Centre by default
x = m.message_x == -1 ? (Graphics.width - m.message_width) / 2 : m.message_x
if m.message_y == -1
y = $game_message.battle_interpreter ? (Graphics.height - m.message_height) : 0
y = @position == 0 ? 0 : @position == 1 ? y / 2 : y
else
y = m.message_y
end
width = m.message_width
height = m.message_height
# Adjust Window Size according to choicebox position
if $game_message.choicebox && $game_message.choicebox_on_line && !$game_message.choice_texts.empty?
dummy = Window_ChoiceBox.new
commands, c_w = dummy.prepare_choices
dummy.dispose
width -= c_w
x += $game_message.choicebox_width unless $game_message.faceside
end
# Remake the window if the new proportions do not match the old ones.
if [x, y, width, height] != [self.x, self.y, self.width, self.height]
remake_window (x, y, width, height)
else
set_position (x, y)
end
end
end
[/spoiler]
As for the other error - I'm not sure Possibly it's \x00 causing a problem. Try adding "\x00" to the no_args thingy; same place where it was before around line 820 (or in the Extraction Bug Fix if you have it)
instead of:
# Codes without arguments
no_args_codes = ["\x03", "\x04", "\x05", "\x06", "\x07", "\x09",
"\x10", "\x95", "\x94", "\x91", "\x90", "\x89"]
change it to:
no_args_codes = ["\x00", "\x03", "\x04", "\x05", "\x06", "\x07", "\x09",
"\x10", "\x95", "\x94", "\x91", "\x90", "\x89"]
P.S. I'm merging this with the real topic.
I definitely need to rewrite this script sometime soon.
Thanks for the help again. That F12 Fix the first one on there did work but that closes and re-opens. I tried the other and still got a stack level too deep, so I have to keep the "unless $@" command next to the alias where the error occurs on line 1871.
The \x00 did not seem to do anything as I had put it on both areas like last time.
The hack fix did work but, if I try to escape and fail and win the battle, Yanflys Victory Aftermath script appears too high up and the players message appears there as well, but the next message it sets itself right where it needs to be.
But if I manage to escape, the next message I talk to on from an NPC would appear on top even though I have it set on the bottom. But the next message will appear on the bottom and things would be normal then.
I am thinking it's maybe like when I asked how for the text changes to take effect immediately and you told me "$game_message.clear". That is my guess anyway. It really did work though otherwise, I know you are tired and sorry for troubling you.
Again thanks for the help. I feel bad for troubling you with these questions and problems.
I don't know what else to say about the something thing. I don't know what's causing it. Try putting a space after the final period.
$game_message.clear might work for that, maybe not. I don't remember this script well enough to be sue. It's worth a try though.
Sorry that the Aftermath is appearing too high :(
But, I don't think I will do any more bug fixes or compatibility patches until I write the next version, sorry. It takes too long because the script isn't written well enough. Once I rewrite it, it will be a lot easier so that's what I'm going to do. Sorry :(
I will keep the same naming, and formatting, so if you can live with the graphical incompatibilities for now, than you can keep using 2.0c until 3.0 comes out, and then I will make sure to fix it up for you.
But if you find any bugs, still report them by all means. It will help me avoid them in the rewrite :D\
Also, any features you'd like added to the script, now is the best time to suggest them
Well I was thinking that something that refreshes or updates the window like "$game_message.clear" would go into the hack fix script you made. Edit: Sorry my mistake there is no problem with the aftermath script its just the message window appearing on top instead of the bottom for that first moment to why I thought that. There just needs to be a window refresh or something I guess as stated previously.
So I am just wondering what command should go into your hack fix to refresh the window back asap rather than 1 message too late? Because either that message too late is the aftermath or if i escape, the message late is the next person I talk to, message appears on the top and next one appears on the bottom like it should because I have it on the bottom.
And alright. If the new version will be more improved and all that, it'd be awesome. I wonder if there is going to be any updates for your other scripts like Quest Journal or Path Finding? If it needs any updating. Quest Journal was quite difficult to understand and Path Finding I got a syntax error or something when trying to do it in this cutscene. First one ran fine but the one that happens towards the end is where it happened, dunno if that could be my bad, but that is another topic there I suppose.
Anyway I can't think of any features at the moment... but if I do I'd be sure to tell them, as well as anymore bugs.
Well, it would, but not into the method and class I had modified. Try adding this to it:
class Window_BattleMessageCompatible
alias modalg_ynfly_atsvicaft_inize_6kv2 initialize
def initialize (*args)
$game_message.clear
modalg_ynfly_atsvicaft_inize_6kv2 (*args)
end
end
class Scene_Battle
alias modalg_ynfl_bttlend_sbrats_8ng3 battle_end
def battle_end (*args)
$game_message.clear
modalg_ynfl_bttlend_sbrats_8ng3 (*args) # Run Original Method
end
end
It assumes you have the Victory Aftermath Compatibility thingy. Hopefully that fixes everything for you. Sorry for being short with you last night. It doesn't matter how well written a script is, I get sort of cranky when looking at another's code for too long :P
I will be doing an update for Path Finding. probably not for the Quest Journal. I had originally planned to have an updat so that if you select a quest than it brings you to a journal - the journal would be such that the game maker could add things directly or let the player write his own stuff. I have since come to realize, though, that most people seem to like their scripts less complicated than all that. Maybe I'll do it one day though.
For Path Finding, I have been thinking about doing an update for a while. It's on my To-Do List.
I've seen victory aftermath, what is it?
Thanks, adding that fixed the problem to where if I escaped after battle and if there was a message, it would now go on the bottom where I have it. But... the message still appears on top after battle for that first message but then goes back on the bottom, as shown on the screens.
First message:
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fimg194.imageshack.us%2Fimg194%2F3094%2Fatsvictmes1.th.png&hash=e925b099803dbc55e10fd14a61729a6f1dd0e8b2) (http://img194.imageshack.us/my.php?image=atsvictmes1.png)
Message after:
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fimg194.imageshack.us%2Fimg194%2F8929%2Fatsvictmes2.th.png&hash=ba695201ced7585d973ff88e0bc51c27727cd232) (http://img194.imageshack.us/my.php?image=atsvictmes2.png)
So it seems the window refreshes 1 message late still when on victory. Keep in mind though this is only if I go to escape and fail to escape and finish off the battle. If I never go to escape and win the battle then the first one shows normally, showing on the bottom where that blank space is.
If I do manage to escape at least the normal messages refresh then rather than 1 message too late.
Oh I managed to fix it... I went into "Yanfly Engine RD - Victory Aftermath Compatibility" which is an extension to the Aftermath if there are problems with the message window and under line 60 where it says "refresh" I had put "$game_message.clear" under it and that seemed to work. So I guess that problem is fixed unless it would cause problems elsewhere now.
So I guess it's all fine now? Ah well I will still leave what I said on here. There is of course that word skipping to the next line too early thing but as you said, would have to wait for you to rewrite it to know what the problem is.
I am so stupid, I meant path finding. What is that? :police:
@Raukue - Strange that it didn't work in the first place. I tested it and it worked just fine. Had you put the last thing I posted under the special Victory Aftermath Compatibility thing?
@shandy - it's a script that moves a character to a specified square by the shortest possible path.
So, if you wanted a character to go somewhere specific with Move Events you'd have to know where the character was and you'd have to put in the commands individually. Move Left, Move Right, etc...
with a PathFinding script, all you need to do is type in find_path (x, y), and it will take you to the square no matter where the character is.
This is amazing, I never knew it did that. I need it. :-[
Quote from: modern algebra on August 18, 2009, 11:52:05 PM
@Raukue - Strange that it didn't work in the first place. I tested it and it worked just fine. Had you put the last thing I posted under the special Victory Aftermath Compatibility thing?
Oh yeah that works too. Just when you said add this to it, I thought you meant add to the hack fix you had sent me since it wasn't clear on where I should of added it. But yeah there we go, it works now, thanks.
Oh I just thought of something that could be added into it. Need volume controls for the sounds as well as pitch. Instead of how you had the letter by letter sound:
MESSAGE_SE = "Cursor"
Needs an option to easily adjust within the modifying area rather than going into the script itself.
MESSAGE_SE = ("Cursor", 100, 100)
If that is any idea anyway. More customization and being flexible.
Good suggestion, but doesn't this script already have like 80 billion customizations? lol
I suppose but MA did say to suggest any other possible features for if and when he does a version 3.0 so I did. Might as well add a sound customization to it as well I mean the sound tends to be too loud sometimes.
I thought of another feature, for say the message window to appear where it is best suited. Say the hero is more on the top of the screen and it'd probably be best for the message window to be on the bottom or well... something like that.
For the message window to automatically go where suited like say... calling a script to be associated with an event, like a prince is talking and moving about. The message window should go either automatically on the top or bottom according to where he is, but then say someone else talks and the same thing. Eh I am not explaining this well... oh well.
The sound thing though yeah... need a volume control for the letter by letter sound and whatever other sounds that can be used with it, seems to be no control over it.
Hey, I like that idea so much I am going to put it in a year ago :P
if you write:
MESSAGE_SE = "Cursor", 40
THen it would set volume to 40
similarly:
MESSAGE_SE = "Cursor", 60, 90
would set filename to "Cursor", volume to 60, and pitch to 90.
The same goes for setting it from in-game
$game_message.message_se = "name", volume, pitch
$game_ats.message_se = "name", volume, pitch
You don't have to set all three though, as volume and pitch will default to 100 if they are not set.
As for the message window to appear where it is best suited, I suppose I could work something out for that.
Perfect This is amazing
Well I suppose that works, but only takes effect on a new game it seems, not one saved before the change. And it was not too clear that could be done within the script like that, only with the Call Script commands. Ah well, if I think of anything else I will say so.
To change the default, all you need to do it use the $game_ats code:
$game_ats.message_se = "name", volume, pitch
$game_message.clear
Just set an event near where your save game is and activate it, and it will work for the save game too.
Remove it once you've updated the default settings for your games.
Even better for the testing.
Hmm alright will do.
Maybe you should include a letter by letter sound pack, really need sounds like a typewriter sound or the sound messaging from Lufia 2 I think has message sounds and Harvest Moon.
Guess that is more a personal note there... is there a place that has sounds that can be used for the letter by letter sound?
None specifically that I know of. But, just look at some SE sites and you'll probably find some. I know I've come across a typewriter one before.
This may be weird but I used a shotgun cocking noise and it sound's just like a typewriter. Chicago typewriter? No actually I'm serious, it was a sound sample from fruity loops. It works perfectly.
ok...
It works perfectly it's probally because of the speed that it runs at.
I had wanted to ask this before but didn't come to mind, is it possible for where the name goes into the \nb[name] command, for it to be of that dimmed window rather than the normal window skin? When I do a dimmed window, you know the black no border kind of thing, just when I put a name with it, to see a normal window with the black dimmed message window don't look right.
If this is possible, how is it done? Sorry it's late and asking this right before bed.
Well, you can change the opacity of the namebox to 0 - that might be the best solution. There is currently no way to show a picture behind the namebox though.
Perhaps a script idea? ;8
Not that I see a use for it as just that though lol.
Yeah, I can add it in to 3.0
Just so everyone knows, this will not work right with Yanfly's Battle Scene ReDux.
It works until you use "Show text" or if you or the enemy gets the first strike. Then the text appears at the bottom of the screen, over your party data. (See screenshot link below)
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fi449.photobucket.com%2Falbums%2Fqq212%2Fkrb16us%2Fth_ATSandYanfly.png&hash=d2448099460103c792f1c85b87a297f9dfbb7184) (http://s449.photobucket.com/albums/qq212/krb16us/?action=view¤t=ATSandYanfly.png)
Even if you put the text postion at the top, it still turns out like that. Just an FYI for people using Yanfly's script. I would try to fix this, but ATS is huge and....I wouldn't be able to find it.
Look back a page or two on this topic. I believe what you are saying is what I had already asked and modern algebra made a fix for shortly after.
Isn't that for the "Display Victory Aftermath"?
I take it you didn't bother to read or look at the previous page much.
http://rmrk.net/index.php/topic,25348.msg416774.html#msg416774
http://rmrk.net/index.php/topic,25348.msg416812.html#msg416812
http://rmrk.net/index.php/topic,25348.msg416859.html#msg416859
No need for the sarcasm. I did look, but I skimmed. I don't have the time to read every post.
Anyway, thank you for pointing it out. I have missed it both times I looked.
EDIT:
The "Show text" is still messed up, no matter where I position it in the editor. The actual attack text is fixed though.
I had posted this earlier but did not receive an answer...
I was using the ATS 2.0 and everything was going fine till I entered a battle and received the error:
(https://rmrk.net/index.php?action=dlattach;topic=25348.0;attach=17144;image)
Quote from: sanb2036 on September 10, 2009, 05:40:53 PM
I had posted this earlier but did not receive an answer...
I was using the ATS 2.0 and everything was going fine till I entered a battle and received the error:
(https://rmrk.net/index.php?action=dlattach;topic=25348.0;attach=17144;image)
I'm sorry for missing you.
It's very likely a compatibility error. What other scripts are you using? Particularly ones that effect battle?
Quote from: modern algebra on September 10, 2009, 06:57:21 PM
Quote from: sanb2036 on September 10, 2009, 05:40:53 PM
I had posted this earlier but did not receive an answer...
I was using the ATS 2.0 and everything was going fine till I entered a battle and received the error:
(https://rmrk.net/index.php?action=dlattach;topic=25348.0;attach=17144;image)
I'm sorry for missing you.
It's very likely a compatibility error. What other scripts are you using? Particularly ones that effect battle?
It's alright... I've been busy with school most of the time...
I'm using:
SBS Configurations
Sideview 1 (3.3b)
Sideview 2 (3.3b)
Bubs' Bow Addon
Default Scope Options Addon
Paragraph Formatter v1.1
ATS Version 2.0
Victory Battle Aftermath
Scene Splash
Scene Stats Redux
Scene Menu Redux
Scene Shop Redux
Try putting it below all those other scripts.
Quote from: modern algebra on September 10, 2009, 11:10:52 PM
Try putting it below all those other scripts.
I tried but it still didn't work... I received the same error.
Do you receive the error when you play the demo?
Quote from: modern algebra on September 10, 2009, 11:46:52 PM
Do you receive the error when you play the demo?
Yes, it's fine till it comes to a battle then it tosses the error at me. I mean I've looked at the line but it has nothing in it with the name of 'slice!'
You're saying it happens in the ATS demo attached to the first post?
If that's the case, then I don't know what could be wrong, since battle in the ATS demo works fine for me.
The only thing I know of that I use the slice! method on is @text of Window_Message. The error is suggesting that @text is nil or has not been defined. But it has been for sure, so the only thing I can think of is that it's an incompatibility. You saying it happens in the ATS demo suggests something else though.
Quote from: modern algebra on September 11, 2009, 01:40:57 AM
You're saying it happens in the ATS demo attached to the first post?
If that's the case, then I don't know what could be wrong, since battle in the ATS demo works fine for me.
The only thing I know of that I use the slice! method on is @text of Window_Message. The error is suggesting that @text is nil or has not been defined. But it has been for sure, so the only thing I can think of is that it's an incompatibility. You saying it happens in the ATS demo suggests something else though.
I'm not entirely sure... I mean... I re downloaded it and it worked fine. I inputted the code into my script instead of the other one and then ran my game. it came up with the same problem...
But here's a good question. When using the text for during a battle, is there anything I have to do because that could be the problem. The first battle I made and enter has text in the actual battle and such still using the the ATS... Could that be the problem...?
No, that should be fine. I think it's likely that the message window is using a foreign battle message window that inherits from the ATS but doesn't initialize properly. Can you upload your Scripts.rvdata and any accompanying pictures your scripts need to work? Just attach them to your next post.
Quote from: modern algebra on September 11, 2009, 02:04:34 AM
No, that should be fine. I think it's likely that the message window is using a foreign battle message window that inherits from the ATS but doesn't initialize properly. Can you upload your Scripts.rvdata and any accompanying pictures your scripts need to work? Just attach them to your next post.
I attached everything to the post...
Well except the pictures for the splash screen as there is about 21 of them...
I did it with pictures instead of AVI...
Hello once again! I was wondering if you've made any progress on the choice bug.
I don't remember what your bug was specifically, but try this: find the initialize method of Window_Choicebox and replace it with this:
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Object Initialization
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
def initialize
commands, width = prepare_choices
index = -1
@true_command_indices = []
commands.dup.each { |i|
index += 1
@true_command_indices.push (index)
while i.sub! (/\x83<(\d),(\d+)>/) { "" } != nil
if $1.to_i == 1 ? !$game_switches[$2.to_i] : $game_switches[$2.to_i]
commands.delete (i)
@true_command_indices.delete (index)
break
end
end
}
# Height is same as window if on the same line, else it is no greater than window
if $game_message.choicebox_on_line
height = $game_message.message_height
else
wlh = $game_message.wlh
height = 32 + [(commands.size.to_f / $game_message.column_max.to_f).ceil.to_i*wlh, $game_message.row_max*wlh].min
end
# Compute window height from command quantity
super(width, commands, $game_message.column_max, 0, 24)
self.windowskin = Cache.system ($game_message.choicebox_windowskin)
self.height = height
self.z = 350
self.back_opacity = $game_message.choicebox_opacity
set_position
end
I am going to start working on ATS 3.0 pretty soon, so you can expect to see a more thorough fix of the issue in that. I believe that will work though.
Ahh, thank you so much! It works fine now. :D
I recently started using ATS in a simple game I'm making to create study guides for
my college tests. Its become quite popular with my classmates.
I'm started using ATS because I needed the multiple choice options to appear onscreen while
the question is still in view. I'm in an advanced medical program, so the questions are often
to complex to remember while selecting an answer.
It's workin' great, thanks SO much.
I have a problem though: During a cut scene I did before adding ATS, I used the
'old' \> command in a series of text boxes. The scene was very precisely timed so,
after switching to ATS, the \>s stopped working and the timing slowed b/c the messages
took longer to scroll before the \^ would auto close them.
I switched all of the \>'s to \@s, because the documentation for ATS said that \@
replaced \>... however, this causes the messages to blink by more quickly than
they can be read.
With ATS active, how can I format the messages so that they work the same as
before ATS?
To illustrate:
The old message said: "\> Blah Blah Blah \|\.\^" The message would display for 1.25 seconds then auto-close. After adding
ATS, it would scroll the words out, then wait 1.25 seconds before auto-closing, I assume b/c the \> was no longer recognized.
The message I have now: "\@ Blah Blah Blah \|\.\^" I expected this to display the text, wait 1.25 seconds, then close... but instead the text is displayed for about an eighth of a second before closing. Adding additional \|s or \.s don't seem to have any effect. Using \@@ instead of \@ doesn't seem to change anything either.
The scene is a credits screen, so I don't want the names to scroll across the text box and I certainly don't want the player
to have to press enter to advance the credits. I also don't want to give up my precious choice boxes!
Am I missing something? How can I get this to work the way it did before?
Thanks,
Eric
That does seem to be a problem. Try adding this in its own slot below the ATS but above Main in the script editor:
class Window_Message
alias modrnalg_atsbugfix_pause_skip_0bh2 draw_message_character
def draw_message_character (c)
if c == "\x04" || c == "\x02"
@show_fast = false
@line_show_fast = false
end
modrnalg_atsbugfix_pause_skip_0bh2 (c)
end
end
Cool. Thanks for the response! I was able to fix the glitch this morning before I got your response, but I added
your patch anyway.
My solution:
I noticed that the bug only occurs if \. occurs in a message box where there is a preceding \@ and \| and the message ends with \^.
Ex: "\@Blah Blah\|\.\^" Opens and closes almost instantly, seeming to ignore the 1.25 second pause of the \| and \.
Ex: "\@Blah Blah\.\|\^" Works fine. The box opens, spells the message instantly, waits 1.25 seconds, and closes.
The \. must precede the \| otherwise both pauses are ignored.
I have no idea why this happens, but at least I know how to avoid it! :D
Thanks!
Hey man, I just wanted you to know that the patch you wrote works great. Not only did it kill the problem
I was having (and saved me the trouble of implementing that tedious workaround I mentioned earlier over and over
again) but it seems to have evened out the timing of the boxes so that it more closely matches the
original timing of the scene (before ATS), making it easier for me to adjust.
Also, I really want to give you a big thanks for the script overall. As I mentioned before, the game I'm making is actually
a glorified study guide for a college medical program. I release a new version to my classmates a couple days before
each test (which pretty much means I do a update every weekend).
With your script, I can increase the size of the message box and created longer, more in depth questions, or I can create
multiple choice questions with more than 4 possible answers.
The biggest boon, certainly, is the choice box being separate from the text box. Now the students can read the question and
the answers as many times as they need before choosing an answer.
So I offer you a gigantic thanks. You have made my study guide 100% better.
-Eric
:blizj: You Cool :blizj:
He's annoying and I've been fixing his VX Forum spam all day, but not particularly bannable =o
I wonder if there is any command syntax to have a image posted under the textbox as described in a older but not responded message in http://rmrk.net/index.php/topic,35421.0.html (http://rmrk.net/index.php/topic,35421.0.html)
As of now I use: Show picture, then text, then erase picture, and I really think Advanced Text System 2.0 will do a much better job if I somehow get it to put the image "under" the textbox ^.^;;;
It's a great script regardless
BUG :tpg:
The command: $game_message.choicebox_windowskin =
"name of file goes here" works 100 % perfect, but *all* versions of the command:
$game_ats.message_windowskin = "name of file goes here"
$game_message.message_windowskin = "name of file goes here"
$game_message.windowskin = "name of file goes here"
fails and fails :-\
Even when I do not get any crash-bug due to me trying all kinds of fixes, why does not the main window change skin when I get the $game_message.choicebox_windowskin =
"name of file goes here" to works great???
Strange...
The very best regards
O.
ah, yes, that was a problem with my coding. It was never instituted properly. The reason it works for name and choiceboxes is because they are created new everytime they are called. I'll fix that in 3.0 when I get around to it.
A 3.0 ? great !
Can we submit some ideas ? ... for exemple , i would like two face window instead of one and you can choose which one is animated . It's possible to make that with ATS 2.0 but not easy .
Yeah, please do make requests. I won't make any promises and it may still be a long way off, but I'd love some more ideas flowing.
Eureka! He lives!!! really? :o
Two big requests incoming:
Visual Novel GFX support
In image code.jpg you can see what I have to do in order to archive the Visual Novel effect i.e. a sprite "under" the textbox. My dream is to have Advanced Text System 3.0 support this feature natively by somehow fiddling with the z-element. In a sense ATS 2.0 support this already, but the sprite will
a. mess up the text-formatting in the box
b. z-element is making the sprite always appear OVER the textbox
On image1.jpg you have a perfect example on how a Visual Novel "implementation" shall look like in a basic setting (notice how the sprite is "under" the textbox).
Visual Novel support to hide/show the text-box
In a visual novel it's important to let the user hide/show the text-box. Why? Well, thats because he/she (mostly he) wants to see the entire image behind the text-box in it's full glory. Look on code.jpg how I solve it, aye, I use one "clean" background image and a sprite or more for the interactiveness. Every character have several expressions, and it's easy to call em in and out and give them different placement. For the "delicate" scenes I (truth be known) use single high quality images (hehe).
Anyways, look on Image2.jpg, and then visualize how you press F8 and the text-window hides, aye, see Image3.jpg on how it looks when its hidden, then press F8 again, or the VX button for continue or cancel and the "text-box" is shown again.
This feature must somehow be implemented into Advanced Text System 3.0
For the full script Jet10985 and Piejamas built around my idea go too: http://www.rpgmakervx.net/index.php?showtopic=22870
The script provided here HACKED by me and NOT working as the original production by Jet10985 and Piejamas. However, this "hack" is best to follow as reference for WHAT it does (not how the code looks, because by the god's it's a mess, but it DOES the job).
So, start up a game with the provided scripts and see for yourself (for REFERENCE only) - this is Visual Novel implementation in VX when it shines...
Main code:
[spoiler]
#===============================================================================
# Hide Text Box Snippet
# By Jet10985
# Original Code by Piejamas
#
# This version is hacked from the original to work for my project without
# triggers, and to make the matter even more complicated I am no scripter
# so I had to brew up two "addons" to have everything work without glitching
# VX (as the script in this form alone nor orginal with trigger work as intened
# without my addons... strange ehh!)
#
# PLEASE DO NOT USE THIS SCRIPT OR ADDONS WITHOUT GOING TO THE PROVIDED URL
# http://www.rpgmakervx.net/index.php?showtopic=22870
# Aye, I might be the "idea" behind this project, but I am NOT the maker of
# the code so Jet10985 and Piejamas are to be praised here.
#
#===============================================================================
# The key F8 will "hide/unide" the text window
#===============================================================================
#===============================================================================
# DON'T EDIT FURTHER UNLESS YOU KNOW WHAT TO DO.
#===============================================================================
class Window_Message
alias jet_base_update update
def update
jet_base_update
unless $scene.is_a?(Scene_Battle)
if Input.trigger?(Input::F8)
if self.visible
self.visible = false
else
self.visible = true
end
Sound.play_cursor
end
end
end
def input_pause
if Input.trigger?(Input::B) or Input.trigger?(Input::C)
if self.visible
self.pause = false
if @text != nil and not @text.empty?
new_page if @line_count >= MAX_LINE
else
terminate_message
end
end
end
end
end
[/spoiler]
Addon 1
[spoiler]
#===============================================================================
# Hide Text Box Snippet
# By Jet10985
# Original Code by Piejamas
#===============================================================================
# Addon hack by Okogawa, paste it under the main script...
#===============================================================================
#===============================================================================
# DON'T EDIT FURTHER UNLESS YOU KNOW WHAT TO DO.
#===============================================================================
class Window_Message
alias okogawa_addon_1_base_update update
def update
okogawa_addon_1_base_update
unless $scene.is_a?(Scene_Battle)
if Input.trigger?(Input::C)
if self.visible
self.visible = true
else
self.visible = true
end
# Sound.play_cursor
end
end
end
def input_pause
if Input.trigger?(Input::B) or Input.trigger?(Input::C)
if self.visible
self.pause = false
if @text != nil and not @text.empty?
new_page if @line_count >= MAX_LINE
else
terminate_message
end
end
end
end
end
[/spoiler]
Addon 2
[spoiler]
#===============================================================================
# Hide Text Box Snippet
# By Jet10985
# Original Code by Piejamas
#===============================================================================
# Addon hack by Okogawa, paste it under the main script...
#===============================================================================
#===============================================================================
# DON'T EDIT FURTHER UNLESS YOU KNOW WHAT TO DO.
#===============================================================================
class Window_Message
alias okogawa_addon_2_base_update update
def update
okogawa_addon_2_base_update
unless $scene.is_a?(Scene_Battle)
if Input.trigger?(Input::B)
if self.visible
self.visible = true
else
self.visible = true
end
# Sound.play_cursor
end
end
end
def input_pause
if Input.trigger?(Input::B) or Input.trigger?(Input::C)
if self.visible
self.pause = false
if @text != nil and not @text.empty?
new_page if @line_count >= MAX_LINE
else
terminate_message
end
end
end
end
end
[/spoiler]
The very best regards
O.
Hello again, I have encountered a conflict with Advanced Text System 2.0 and the Visual Novel script in my game.
I post a clean project file here so you can download it: http://www.mediafire.com/?qtmjgy5m22m (http://www.mediafire.com/?qtmjgy5m22m)
The issue I am having is when the Visual Novel script with F8 hides a textbox, then due to Advanced Text System 2.0's own message-settings the "face-image" is NOT hidden. When the Advanced Text System is removed, the Visual Novel script works perfect.
I now seek either a "fix" to the Visual Novel script (just make an addon like the one provided in my demo, as I think it will be easier) or "hack" (hard word) the Advanced Text System 2.0 to work with the Visual Novel script :-\
If anyone can fix this mess, feel free to email me directly at okogawa@hotmail.com or post the fix inside here maybes?
While looking on the Visual Novel bug, please also look/optimize my terrible code for my image-to-movie event I made (I will port lots of movies for the actual game project), as i'ts to many repeats on the tiggers (else the event work 100%).
Hope for any kind assistance, as I am totally stuck now :(
O.
Hmm, well I don't have time right now to look at it all, but it sounds like a code like this might fix your problem:
class Window_Message
def visible= (value)
super (value)
@face_window.visible = value unless @face_window == nil || @face_window.disposed?
@name_window.visible = value unless @name_window == nil || @name_window.disposed?
@choice_window.visible = value unless @choice_window == nil || @choice_window.disposed?
end
end
Place that in its own slot in the editor below the ATS, but still above Main.
If that doesn't work, I'll take a look at the demo when I have time.
Alas, It did not work... But please do not misunderstand my sadness about it, I am very grateful for your time in making a take on code.
Indeed, if and when you have time, a look on my demo might solve everything since it's all presented there with scripts and explanations. And it's probably no understatement when I say; - if anyone are to solve this issue, I am sure you are the one :)
Cheers
O.
Ah yeah, I know what the problem is - I save the faces as distinct sprites in order to quickly exchange them without redrawing when using animated faces. I'll fix it quickly.
Thanks thanks thanks!!!!!!!! :tpg:
EDIT: it's okay to mail it directly to me on okogawa@hotmail.com or in here or on this forum post (which also discuss this bug): http://www.rpgmakervx.net/index.php?showtopic=23501 (http://www.rpgmakervx.net/index.php?showtopic=23501) :P
EDIT 2: It's all like Greek to me... but I guess it's a good thing you found the error, because it's more or less impossible to make any game without Advanced Text System 2.0.
Alright, here, try this code to replace the one I gave you earlier:
class Window_Message
def visible= (value)
super (value)
unless @face_window == nil || @face_window.disposed?
@face_window.visible = value
@face_window.sprites_visible = value
end
@name_window.visible = value unless @name_window == nil || @name_window.disposed?
@choice_window.visible = value unless @choice_window == nil || @choice_window.disposed?
end
end
class Window_FaceBox
def sprites_visible= (boolean)
@faces_hidden = boolean
@face_sprites[@active_face].visible = boolean unless @face_sprites.nil? ||
@face_sprites[@active_face].nil?
end
alias malg_okog_anmtfce_8iu2 animate_face
def animate_face (*args)
return if @faces_hidden == false
malg_okog_anmtfce_8iu2 (*args)
end
alias malgbr_okogw_visnov_puse_7jb3 pause
def pause (*args)
malgbr_okogw_visnov_puse_7jb3 (*args)
@face_sprites[0].visible = @faces_hidden unless @faces_hidden.nil? || @face_sprites[0].nil?
end
end
BTW, I actually sort of suspect that the choice window hider is incomplete, since it doesn't account for the fact that the choice window is made visible when it is created and so if the message is still running when you press F8, I suspect the choice window would pop up, but that I haven't tested.
I think to resolve that issue, I would probably need to rewrite the hide textbox code with the ATS specifically in mind though, so I won't for now.
YOU ARE A GENIUS!!! ::PEHU:: IT REALLY WORKS!!! ;8
Finally I can start to relax and actually begin to work on Kanokon - Kitsune no Yomeiri. But before, once again: Thanks for doing this, and above all the Advanced Text System 2.0
Your contributions to the VX RPG is what actually make it possible to even use Enterbrain's product in the first place :blizj:
Cheers!
O.
I understand it's been about 2 months since this was posted in, but since I am unaware of how far off ATS 3.0 is, I figured might as well post it here.
In the instruction section of ATS 2.0 where it goes over all the various codes, there's one I think was forgotten or I'm using wrong. When using \NP[n], which is supposed to display the name of the Actor in party index "n" (0-3), all it does is display the code and not the Actor's name.
I tried searching through the script to find the part that looked for "\NP[n]" in a message window but was unsuccessful. Is this feature implemented? Or did I mess up somewhere?
-Heart of Shadow-
Yeah, I think I replaced it because you can use \PID and \N to effectively replace it, so:
\n[\pid[n]]
would do the same thing.
However, if you want the NP code, then paste the following code into its own slot below the ATS but still above Main:
#==============================================================================
# ** Game_Message
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Summary of Changes:
# aliased method - perform_substitution
#==============================================================================
class Game_Message
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Perform Substitution
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
alias moaba_prfrmsubs_np_ats_8kn3 perform_substitution
def perform_substitution (text, *args)
txt = moaba_prfrmsubs_np_ats_8kn3 (text, *args)
txt.gsub! (/\\NP\[(\d+)\]/i) { $1.to_i.between? (0, $game_party.members.size - 1) ? $game_party.members[$1.to_i].name : "" } # Name by Party Position
return txt
end
end
I just added the line where it looked like it would have been originally in the ATS script, and it works perfectly.
I figured since it was mentioned as a feature of the script, it was already in there. Plus, I like the shorter "\np[n]" over the rather long "\n[\pid[n]]". Thanks for the quick reply and help!
Really looking forward to the next version of this and the Quest Journal.
-Heart of Shadow-
Quote from: Modern Algebra on September 28, 2009, 11:03:45 AM
I don't remember what your bug was specifically, but try this: find the initialize method of Window_Choicebox and replace it with this:
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Object Initialization
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
def initialize
commands, width = prepare_choices
index = -1
@true_command_indices = []
commands.dup.each { |i|
index += 1
@true_command_indices.push (index)
while i.sub! (/\x83<(\d),(\d+)>/) { "" } != nil
if $1.to_i == 1 ? !$game_switches[$2.to_i] : $game_switches[$2.to_i]
commands.delete (i)
@true_command_indices.delete (index)
break
end
end
}
# Height is same as window if on the same line, else it is no greater than window
if $game_message.choicebox_on_line
height = $game_message.message_height
else
wlh = $game_message.wlh
height = 32 + [(commands.size.to_f / $game_message.column_max.to_f).ceil.to_i*wlh, $game_message.row_max*wlh].min
end
# Compute window height from command quantity
super(width, commands, $game_message.column_max, 0, 24)
self.windowskin = Cache.system ($game_message.choicebox_windowskin)
self.height = height
self.z = 350
self.back_opacity = $game_message.choicebox_opacity
set_position
end
I am going to start working on ATS 3.0 pretty soon, so you can expect to see a more thorough fix of the issue in that. I believe that will work though.
Sorry it took so long to reply to your message.
I tried posting it in where you suggested and it still came up with the same problem.
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fi106.photobucket.com%2Falbums%2Fm271%2Fbambie_sanborn_80165%2FProblem.jpg&hash=f6502607eae0ab855e4355763bb051d9efa42980)
heh, I think that was directed at another person, so not too surprising it doesn't work. Sorry for not getting back to you sooner, but after the line in question:
@line_spacing.slice! (0, @line_count)
replace it with:
@line_spacing.slice! (0, @line_count) if @line_spacing
I'm not positive that will be sufficient, as it appears that the SBS doesn't turn on the $game_temp.in_battle switch, and so where my script relies on that to differentiate between battle and map, problems may occur. If you encounter any others, I will look into a more permanent fix.
Please help me. I can't add this script. I am new at scrips :lol: please explain it.
im also new to scripts and it seems like there was a lot of mistakes and bugs on it so could some one post the full script of either 3.0 or 2.0?
Thanks! Haru
Quote from: haru on March 07, 2010, 02:07:21 PM
im also new to scripts and it seems like there was a lot of mistakes and bugs on it so could some one post the full script of either 3.0 or 2.0?
Thanks! Haru
This isn't full of bugs. Its patches for other scripts. The full version is available to download on the 1st page.
Second, go to the script editor. Go down and find the section on the left side named "Materials". Click underneath that part, and right-click and click on 'insert'. Next, go over to the demo of the script. Go to the script editor, find materials, and underneath that should be something labeled 'Advanced Text System'. Click on it. On the right side, select all the text that appears. Copy it. Go back to your project. Click on the new page you inserted. Paste the text.
And there you go
oh were they ok. well i did that but im new to scripting so im not quite sure what to do after that ;8 most of the other scripts ive used had all this infomation come with but im guessing you dont put it in for max customazation?
Well I would play through the demo, and it will tell you how to use it, and how to customize it.
Modern, I don't know how you can be so nice to everyone when I am sure that you get asked the same questions over and over again.
oh sorry i never saw that.. like you said a page back you was just skimming same here i just wanted to find the script and paste it in i guess it cant be done like that i will take a look at the demo now. Thank you modern for the script and demo ! :)
Oh, I was skimming through for a problem I had with another script and this.
The text file is so big that he would rather you just download the demo. If he put the text on here...it'd be a long long long post.
ok nice got it up and running alot easier than i thought :D i know there is a way to change the colour of the chat box does any of have a link for one ? :P
I believe that is in the script somewhere. Hold on
$game_ats.message_windowskin = "Window File"
That will change the color to another window skin. Find some window skins and import them into 'system'
ok thanks
Thanks for being so helpful redyugi :) Makes my life a lot easier
ok well it worked fine up untill it said this
http://s1046.photobucket.com/albums/b469/harubh/?action=view¤t=VX4.jpg (http://s1046.photobucket.com/albums/b469/harubh/?action=view¤t=VX4.jpg)
i looked at line 1073 but it looked fine what should i do?
Quote from: haru on March 08, 2010, 01:24:50 PM
ok well it worked fine up untill it said this
http://s1046.photobucket.com/albums/b469/harubh/?action=view¤t=VX4.jpg (http://s1046.photobucket.com/albums/b469/harubh/?action=view¤t=VX4.jpg)
i looked at line 1073 but it looked fine what should i do?
ok dont worry now ive just about sorted it seems there was a miss type on line 1073 all done now though :D
hey modern_algebra, is there a way to make it check variables too? like, a choice only apear if a certain variable is LESS, EQUAL, HIGHER or NOT EQUAL to a determined number? or even another variable?
No, but you can just use a conditional branch right before the choice branch and turn a switch on. So:
Conditional Branch: Variable [XXX] <=> y
Control Switch: Switch [ZZZ] = ON
Branch END
Show Choices: \son[ZZZ] choice 1, choice 2, etc...
I figured that would be a far more efficient way then including checks for every possible thing you can use in a conditional branch.
I've a request to Advanced Text System 3.0:
- A way to walk with the message in the screen (ie you talk with someone, but can move around )
;D This script with text effects... This is exciting... ;D
Google translations make me giggle :)
Is there a way in the script to have the text itself positioned on the message back differently? In my case I'm using a custom message back, so I want the text centered differently then the normal one.
You could alter the x, y, width and height of the message. So, either $game_message or $game_ats :
.message_x = integer (-1 for default placement)
.message_y = integer (-1 for default placement)
.message_width = positive integer > 32
.message_height = positive integer > 32
bug: this type of letter crash the game: É Ó Á Í Ú
Have you tried inserting the Foreign Characters Bug Patch? It's located in the Bug Patches section of the first post.
Also, for your request to allow walking when the text box is open... how would you want to work that? Would you still be able to interact with other events. If the text box was over a character, would is move with them, etc... I'm not overly opposed to the idea, but there are a lot of factors involved that I'd need to know before I could do it.
Yes, i've tried.
The crash occur when Paragraph Formatter is enabled.
I've tried the Paragraph Formatter 2.0, but the same thing occur.
I found this stack error bug whenever we press f12!
at line...1874:
start_choice if $game_message.choicebox && !$game_message.choice_texts.empty?
Replaced 1871 with [ alias modalg_ats_strt_chce_if_able_94n5 close unless $@ ]
for the meantime, I hope that'll help!
Bug: when using Paragraph Formatter (1.1 or 2.0) and using the option 'bold' in the messages, the words are 'cut' in the end of the window.
Just a suggestion for 3.0, have a code to show skill name/icon.
Alright, will do.
Level 5
Group Icon
Group: Members
Posts: 61
Type: Event Designer
RM Skill: Advanced
Warn: (0%) -----
I don't know if u get this a lot but when you F12 the game to reset. I always get the Stack too deep error. Is there anyway around this???
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fi630.photobucket.com%2Falbums%2Fuu28%2Fcaptainregal%2FATSError.png&hash=c3fd55262a87cb7d764775e99c095054d2b73204)
yeah, go to the line above def close. It should say
alias something close
something is just a bunch of random characters. Add
unless $@
right after that line, on the same line.
TY Ty fixed the problem!!!
Alright. Updated to Version 3.0. There may be a few bugs I missed, so I invite you all to please try it out and report any bugs or incompatibilities you might find. I will note that if you are upgrading from ATS 2, you will need to also put in the Conversion patch below the ATS3, since I changed a lot of the naming and things in this version. But once you have the conversion patch, all the work you did with ATS 2.0 will be preserved.
Download Demo (http://rmrk.net/index.php?action=dlattach;topic=25348.0;attach=21375)
Download Text Document (http://rmrk.net/index.php?action=dlattach;topic=25348.0;attach=21376)
Download ATS 2 Conversion Patch (http://rmrk.net/index.php?action=dlattach;topic=25348.0;attach=21377)
Download Sample SpeechTag Graphics (http://rmrk.net/index.php?action=dlattach;topic=25348.0;attach=20973)
Finally upgraded. I'll test it out as soon as I can. Good Job MA!
EDIT: OMG, you can view a record of your text. I've always wanted to know how to do that.
I can't wait to take 'er fer a spin, but 2.0 was pretty damn good, so I am actually watering at the mouth thinking about this thing (which provides many essential features.)
Wow. Very nice MA. I like all the extra features and how you redid them
@cozzie - Thanks - in ATS2, I was pretty sloppy and instead of using oy to scroll contents, I had instead chopped off the top line and redrew the last three on a new bitmap. It was pretty sloppy and the scroll review and smooth scrolling features are only possible because I did it properly in this version. I'm glad you like :)
@Mikhail - well, I hope I don't disappoint you. Be sure to tell me what you think :)
@redyugi - Thanks!
Hey MA. Awesome update! I love it! I'm using the Conversion patch...and I plug it in, and test and I get this:
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fi278.photobucket.com%2Falbums%2Fkk96%2FArcono%2Frmvx%2Ferror.png&hash=81ca39d5c165197dd29295e65521eb1ff0708ea5)
I can't see that - moved or deleted
Yeah, sorry. I was cleaning up my photobucket account and moved it. It's up again.
and you've pasted in ATS3? and put the Conversion Patch under ATS3 in the Script Editor?
*Facepalm* Now I have. It works now. Thanks for correcting me on my retardedness.
EDIT: Do I still need the "Special Codes Formatter" or the "Paragraph Formatter v1.1" scripts anymore?
I had to do a small update to the ATS2 Conversion patch. You can download it here (http://rmrk.net/index.php?action=dlattach;topic=25348.0;attach=20701). All it was was a little problem with $game_message.choicebox_fitted, so if you don't need that then you won't need this update.
Alright, well no bug reports so far, so that's a good sign :)
Anyway, I decided to add a feature so the demo has been updated. All this does is make it easier to use non-standard facesets. Basically, now when you set :face_width and :face_height to 0, it will automatically draw the whole face. This means that instead of having to change the values of :face_width and :face_height every time you want to show a larger or smaller face, you can always have them at 0 and it will show the whole face, whether single or in a set. You can still specify values for :face_width and :face_height, if you wish, and when you do it will cut out the center of the face to those specifications; but this just makes it easier for people who just want to show the whole face.
Anyway, that's the only thing I changed in this update, and so if that feature doesn't appeal to you then you don't need to get the updated version.
Could be useful if your drawing a lot of faces (which is exactly what I'm doing). By the way, where would you set your own images of your own speech bubbles?
EDIT: Nevermind, I found it out myself.
I found a bug! Hopefully you can squash it lol.
So if I start a new game or a continue game then return to the title screen and start a new game or a continue game again I get this error message when going through a meassage box:
"Script 'ATS 3.0' line 3546: SystemStackError occured
Stack level too deep"
So yea... i noticed this bug in Ats 2.0 too. Hopefully this is fixable because i wuldnt want to have the character close the whole application every time he dies against that hard boss or chooses the wrong save file.
This isnt the same problem CaptainRegal was having right?
(This is my first time posting on this board and i just wanted to say. I cannot read the verification letters hopefully im not the only one lol)
It's not the same problem, but it is the same mistake I made. I didn't realize pause= was definded in the hidden Window class. Right around that line you should see:
alias whatever pause=
change it to:
alias whatever pause= unless $@
whatever is just a bunch of characters; don't modify them -just add the unless $@
I'll fix it for the next update.
Since AMS version 3 includes a paragraph formatter, where should the old PF2 be placed (below or above?) as PF2 is required for some of your other scripts (or can AMS3 substitute PF2?)
No, it can't substitute for PF2 in other scripts because unlike the real paragraph formatters, I designed the ATS one to go line by line so as to (A) reduce lag with really long messages, and (B) allow me to work it in where face sets are set so as to interfere with only a couple lines. PF2, on the other hand, does the whole message at once and so the scripts that use it can't use the ATS3 version.
Anyway, it doesn't matter where the PF2 is in relation to ATS3 in the Script Editor. Put it anywhere above Main, but usually when I use it I put it at the top of my custom scripts. It really doesn't matter though in general. The only scripts it will need to be under is any that overwrite the initialize method of Game_System.
A very good text system! BTW when I first play the demo, when I talked to "Size matters", the game crashed with an error stack level too deep at line 1800 or so which is "alias back_opacity= opacity=". However when i play the demo again without changing anything, the same error didn't appear. I think I'll let you know anyway, so you can check if you have to change anything.
I don't know whether it's proper to ask this question here or not. But I really want to know what does this "unless $@" do, and why this solve the problem you posted before. I'm new to scripting so I'd really appreciat if you could explain it to me.
Thanks. :)
You know that if you hit F12 during gameplay, it restarts the program, right?
Well that initializes all the scripts again, which maybe cause a stack error depending on what the script modifies.
unless $@
tells the program to only initialize the script once, even if F12 is used
Well, that's not entirely true; it does that only indirectly. $@ contains the backtrace for the last exception raised. It is useful for debugging particularly, since if you do something like this:
begin
# Code that may throw an exception
# Code that may throw an exception
# Code that may throw an exception
# Code that may throw an exception
# Code that may throw an exception
rescue
p $@
end
It will print out where the error has occured.
When you first start the program, $@ will be nil, which is why "unless $@" will not prevent the initial aliases when first "loading" the scripts. The reason "unless $@" works to avoid stack errors in hidden scripts is because when F12 is pressed, an exception occurs in the update method of the Graphics module, which means that the second time it is "loading" the scripts, $@ will have the backtrace for that exception and therefore will not be nil, and so the "unless $@" will avoid re-aliasing the methods.
Personally, I think it is bad form to use this, and I prefer to directly check if the aliased method is already defined with a self.method_defined? check.
Anyway, thanks for the bug report.
I have decided to stop being lazy and have released v. 3.0b, which fixes both F12-related errors. That is all it does so there is no need to download the new version if that is irrelevant to anyone or if they've fixed it themselves. Hopefully that's the end of the bugs.
Thanks for the explanation?It clarified al lot of things for my script learning.
One more question:
Do I still need the paragraph formatter for other scripts like outline, quest journal, diary system?
Since in this link http://rmrk.net/index.php/topic,35059.0.html, it says that it requires the paragraph formatter.
I'm not sure what will happen if I use the paragraph formatter with the ATS at the same time.
yes, you still need the paragraph formatter for other scripts and it does not interfere with the ATS
I think I have found another bug. When you use choices. With the Dim Background message option it works. However as soon as you exit the choices. The dim choice part of the window won't go away until you enter the menu or exit the map.
Never mind, now I had solved this problem by myself. ;D
Anyway, thanks for creating the great tool!
--------------------------------------------------------------------------------------------
modern algebra,
I have a problem with the localization of ATS 3.0. It's not compatable with Woratana's display localization alphabets scripts.
because of ATS has revised the code of Window_Message, so I really have no idea how to implement Woratana's code into it.
Thanks in advanced
ps. please excuse my bad english, coz it's not even my third language ;8
Cool, I'm glad you solved the problem :)
Good luck with your project and I hope you enjoy the ATS
Hello! First off, I'd like to say that this is an awesome script.
Anyhow, I'm having a problem.
I'm using Display Victory Aftermath and, of course, your script. At first it all works fine, but when it begins popping up dialogue boxes of Actors saying things like "We beat them all" blah blah blah, it gets to Actor 3 and an error for ATS pops up and the game crashes.
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fi998.photobucket.com%2Falbums%2Faf104%2Fdude10101012%2FStuff%2Fth_ERROR.jpg&hash=2d7340522f6a64415aeb8ce4b6e4b53ceea31422) (http://s998.photobucket.com/albums/af104/dude10101012/Stuff/?action=view¤t=ERROR.jpg)
Any ideas as to why this is happening?
EDIT: Oh, here's what the line looks like, in case you need to know.
@text += $game_message.texts[i].clone + "\x00"
Well, try upgrading to v. 3.0b and see if the error persists. You will need the ATS 2.0 Conversion Patch too if you have already been using 2.0 in your project. If it does, I will look into the issue.
Well, I upgraded, but now I'm getting an error when I press new game.
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fi998.photobucket.com%2Falbums%2Faf104%2Fdude10101012%2FERROR.jpg&hash=3553f6193219addca6dc1ede9b6eae5240c576e7)
Did I put it in wrong or something?
Well, my line 2604 is:
@face_window = Window_FaceBox.new (self.viewport)
and that line is fine, since Window_Facebox expects that argument. If yours doesn't it's telling me that either (a) your line 2604 is not the same as mine, in which case you need to show me exactly what that line says; or (b) you did not delete the old version of the script or you have another script below it which redefines the initialize method of Window_Facebox. If it is the former, you have to delete the ATS 2.0 version; if the latter, tell me what script it is and I'll try to find a workaround.
Well, line 2604 is from this page so I doubt it's wrong, but here it is anyway:
@face_window = Window_FaceBox.new (self.viewport)
(The same as yours)
As for deleting 2.0, it's definitely deleted.
I have the following scripts below ATS 3.0:
Mithran Item Selection Number Fix
OriginalWij Row Changer
OriginalWij and Mac Malone Chest Item Pop-up
Yanfly Engine RD - Scene Menu Redux
Yanfly Engine RD - Scene Battle Redux
Scene Battle Redux Fix
Modern Algebra Flash Selected Enemy
Yanfly Engine RD - Scene Status Redux
Yanfly - Extended Equip
Yanfly - Custom Target Select
Yanfly Engine RD - Party Data Display
Yanfly Engine RD - Victory Aftermath
Yanfly Engine RD - Victory Extend
Modern Algerbra - Victory Aftermath Fix
Yanfly Engine RD - Common Event Menu
Yanfly Engine RD - Common Event Shop
Yanfly Engine RD - Bestiary/Scan
Yanfly Engine RD - Skill Display
Yanfly Engine RD - Menu System
KGC Steal
OriginalWij Debug Tools
Mr. Anonymous Battle Screen Effects
Neo Save System III
TDS Name Pop-Up
Prexus Party Manager Switcher
That's all of them, sorry about the long list.
Well, first try placing the ATS below all of them but still above Main. Then Press CTRL+SHIFT+F and put Window_FaceBox in the search field. Let me know if any beside the ATS come up in the list and tell me which it is.
Putting the script below all the other scripts (That was something I should've done in the first place, sorry) got rid of the line 2604 error, but the other error only changed to line 172, which is identical to the line from 2.0.
@text += $game_message.texts[i].clone + "\x00"
Well, it's definitely a compatibility error. But I'm not going to find and look through all of those scripts. Try starting a new project with just the ATS, and then add in each of those scripts one by one. When the error first occurs, tell me which script you had just added and give me a link to it. Well, it might be Display Victory Aftermath, so I'll test that first, but I need a link since I think Yanfly took down all his YERD scripts.
;8 This is absolutely amazing. I can't wait to dive into this script and enhance my games. Thank you so much.
Just wondering... is there any way to make it so it DOESN'T merge all the text boxes? I'm trying to make an event speak with only one line per message box. Like the default message system actually. Right now I'm just putting multiple line breaks but that becomes a hassle. Here's an example:
>"What's up?"
>
>
>
>"...Why do you look so down?"
>
>
>
and NOT
>"What's up?""Why do you look so down?"
>
>
>
Help is appreciated. This system is amazing ^-^
Yeah, just set APPEND_TEXT to false in the script. It should be around line 769. If you want to turn it on or off in-game, then just use the following codes in a script call:
ats_all (:append_text, true)
to turn it on, or ats_all (:append_text, false)
to turn it off.
Oh wow I can't believe I missed that! Exactly what I wanted, thanks ;D
The error suddenly stopped appearing. I don't know what I did, but it's working fine now. Thanks for your help.
I have the exact same issue like E. Belle:
http://www.rpgmakervx.net/index.php?showtopic=19726&pid=330573&st=80&#entry330573 (http://www.rpgmakervx.net/index.php?showtopic=19726&pid=330573&st=80&#entry330573)
Judging from the list of scripts you posted, I assume you're using the KGC+YanflyPLUS Base Demo as well? I figured out which script is causing this error:
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fi998.photobucket.com%2Falbums%2Faf104%2Fdude10101012%2FERROR.jpg&hash=3553f6193219addca6dc1ede9b6eae5240c576e7)
It's YERD_MenuSystem. I've verified this by deleting one script at a time, then start the game, then delete another script, and so on. But once this script is being deleted, everything works.
I other news, I also found out that the game crashes if YERD_VictoryAftermath is deleted. The game doesn't crash if I keep it AND use ATB3.0b, but couldn't care less if I delete it AND DON't USE ATB3.0b. Since I plan to keep both ATB and VictoryAftermath anyway, everything's fine here. I know that it was already mentioned, but for the record, I though I might as well mention it.
Overall, these two scripts (YERD_MenuSystem and YERD_VictoryAftermath) are the only troublemakers, you can literally delete any other script you want and it still works in the KGC+YanflyPLUS Base Demo. The KGC scripts are fine, you can use ATS3.0b with KGC Script Library without any problems.
That's all I could figure out so far. I would be more then grateful if you could find a solution for this problem.
Edit: Nevermind, I fixed the problem. Appearently, if you place ATB3.0b at the very end (read: As the last script right before Main) the game won't crash. Only noticed that just now that you that you said "try placing the script at the end".
So yeah, case closed. Still, I guess it's good to know which scripts caused problems in the first place.
Here's the code from YERD_MenuSystem:
#===============================================================================
#
# Yanfly Engine RD - Menu System Options
# Last Date Updated: 2009.05.12
# Level: Easy, Normal
#
# The "End Game" option is quite possibly the most useless function in RPG Maker
# VX games. Not only does it have little functionality but its functions can
# be reproduced by Alt+F4 and F12. This script replaces "End Game" with a new
# menu altogether and giving the player some familiar options seen in many of
# today's commercial RPG's such as changing window skins, adjust sound volume,
# turning off animations during battle, and the like.
#
#===============================================================================
# Updates:
# ----------------------------------------------------------------------------
# o 2009.05.12 - Auto-Dash update. If player holds down the dash button when
# this option is enabled, the player will walk instead of dash.
# o 2009.05.09 - Compatibility update with Woratana's NeoMessage.
# Compatibility update with Modern Algebra's ATS.
# o 2009.05.07 - Started script and finished.
#===============================================================================
# Instructions
#===============================================================================
#
# Input this script anywhere above Main. It's plug and play outside of changing
# a few variables and switches, which will be listed below:
#
# - If you have variables bound to variables 91, 92, 93, and 94, scroll down and
# bind them to unused variables.
# - If you have switches bound to switches 91, 92, 93, 94, 95, or 96, scroll
# down and bind them to unused switches.
#
# Then, download the windows pack, and create a "Windows" folder inside your
# Graphics folder. Input the windows pack there. You're all set to go.
#
#===============================================================================
#
# Compatibility
# - Works With: Woratana's NeoMessage
# - Works With: Modern Algebra's ATS
# - Alias: Game_Player: dash?
# - Alias: Window_Base: initialize
# - Alias: Scene_Battle: display_normal_animation
# - Overwrites: Scene_End: All of it
# - Overwrites: Vocab: game_end
#
#===============================================================================
$imported = {} if $imported == nil
$imported["MenuSystemOptions"] = true
module YE
module SYSTEM
# This changes the "End Game" string to a new string. This completely
# overrides the default term from the database for a reason and that's
# because this is adjustable from the title menu as well.
TITLE = "System"
#---------------------
# Window Configuration
#---------------------
# This will affect what string data will appear for the window selection
# portion of the system menu.
WINDOW_HELP = "Select preferred window skin."
WINDOW_SKIN = "Window Skin"
# This sets the default window used when nothing is selected. This also
# determines the window skin used at the title screen. Reference it to
# the list below to determine which window skin. Don't make this 0.
DEFAULT_WINDOW = 7
# This determines the variable used to store the player's windowskin choice.
WINDOW_VARIABLE = 91
# This below determines what the variable refers to when it's used as
# reference. Put your windows inside the Graphics/Windows folder. ID 0 will
# automatically push back to the default window's ID.
WINDOW_HASH ={
# Window ID => Window Name
1 => "Red",
2 => "Orange",
3 => "Yellow",
4 => "Green",
5 => "Cyan",
6 => "Navy",
7 => "Blue",
8 => "Violet",
9 => "Purple",
10 => "Pink",
11 => "Grey",
12 => "Black",
} # Do not remove this.
#---------------------
# Volume Configuration
#---------------------
# This will affect what string data will appear for the volume adjustment
# portion of the system menu.
BGM_HELP = "Adjust BGM volume. Press L/R to mute."
SFX_HELP = "Adjust SFX volume. Press L/R to mute."
BGS_HELP = "Adjust BGS volume. Press L/R to mute."
BGM_TITLE = "BGM Volume"
SFX_TITLE = "SFX Volume"
BGS_TITLE = "BGS Volume"
VOL_MUTE = "Mute"
# These are the variables and switches that govern the sound effect volumes.
# Note that for the variables, the higher they are, the lower the volume.
BGM_VOLUME_VAR = 92 # Variable
SFX_VOLUME_VAR = 93 # Variable
BGS_VOLUME_VAR = 94 # Variable
BGM_MUTE_SWITCH = 92 # Switch
SFX_MUTE_SWITCH = 93 # Switch
BGS_MUTE_SWITCH = 94 # Switch
# This adjusts the gradient colours for each of the volume controls.
BGM_COLOUR1 = 30
BGM_COLOUR2 = 31
SFX_COLOUR1 = 28
SFX_COLOUR2 = 29
BGS_COLOUR1 = 20
BGS_COLOUR2 = 21
#---------------------
# Battle Animations
#---------------------
# This will affect what string data will appear for the toggling of
# battle animations portion of the system menu.
ANI_TITLE = "Battle Animations"
ANI_HELP = "Toggles animations during battle."
ANI_ON = "Shown"
ANI_OFF = "Hidden"
# This is the switch used to adjust battle animations. If it is off,
# animations are enabled. If it is on, animations are disabled.
ANI_SWITCH = 91
#---------------------
# Automatic Dashing
#---------------------
# This will affect what string data will appear for the toggling of
# automatic dashing portion of the system menu.
AUTO_DASH_TITLE = "Automatic Dash"
AUTO_DASH_HELP = "Toggles automatic dashing."
AUTO_DASH_ON = "Auto"
AUTO_DASH_OFF = "Hold"
# This is the switch used to determine whether or not autodashing is on.
AUTO_DASH_SWITCH = 95
#---------------------
# Instant Text
#---------------------
# This will affect what string data will appear for the instant text
# portion of the system menu.
INSTANT_TEXT_TITLE = "Instant Text"
INSTANT_TEXT_HELP = "Toggles instant text display."
INSTANT_TEXT_ON = "Instant"
INSTANT_TEXT_OFF = "Default"
# This is the switch used to determine whether or not instant text is on.
INSTANT_TEXT_SWITCH = 96
#---------------------
# Remaining Text
#---------------------
# This will affect what remaining string data is left for the system menu.
RETURN_TO_TITLE = "Return to Title Screen"
RETURN_TITLE_HELP = "Return back to the title screen."
RETURN_TO_MENU = "Return to Main Menu"
RETURN_MENU_HELP = "Return back to the main menu."
end # SYSTEM
end # YE
#===============================================================================
# Editting anything past this point may potentially result in causing computer
# damage, incontinence, explosion of user's head, coma, death, and/or halitosis.
# Therefore, edit at your own risk.
#===============================================================================
module Vocab
def self.game_end
return YE::SYSTEM::TITLE
end
end
module Cache
def self.windows(filename)
load_bitmap("Graphics/Windows/", filename)
end
end
module RPG
class BGM < AudioFile
def play
if @name.empty?
Audio.bgm_stop
@@last = BGM.new
else
vol = @volume
if $game_variables != nil
vol *= 100 - $game_variables[YE::SYSTEM::BGM_VOLUME_VAR]
vol /= 100
vol = [[vol, 0].max, 100].min
vol = 0 if $game_switches[YE::SYSTEM::BGM_MUTE_SWITCH]
end
Audio.bgm_play("Audio/BGM/" + @name, vol, @pitch)
@@last = self
end
end #Play
end # BGM
class ME < AudioFile
def play
if @name.empty?
Audio.me_stop
else
vol = @volume
if $game_variables != nil
vol *= 100 - $game_variables[YE::SYSTEM::BGM_VOLUME_VAR]
vol /= 100
vol = [[vol, 0].max, 100].min
vol = 0 if $game_switches[YE::SYSTEM::BGM_MUTE_SWITCH]
end
Audio.me_play("Audio/ME/" + @name, vol, @pitch)
end
end
end # ME
class SE < AudioFile
def play
unless @name.empty?
vol = @volume
if $game_variables != nil
vol *= 100 - $game_variables[YE::SYSTEM::SFX_VOLUME_VAR]
vol /= 100
vol = [[vol, 0].max, 100].min
vol = 0 if $game_switches[YE::SYSTEM::SFX_MUTE_SWITCH]
end
Audio.se_play("Audio/SE/" + @name, vol, @pitch)
end
end
def self.stop
Audio.se_stop
end
end # SE
class BGS < AudioFile
def play
if @name.empty?
Audio.bgs_stop
@@last = BGS.new
else
vol = @volume
if $game_variables != nil
vol *= 100 - $game_variables[YE::SYSTEM::BGS_VOLUME_VAR]
vol /= 100
vol = [[vol, 0].max, 100].min
vol = 0 if $game_switches[YE::SYSTEM::BGS_MUTE_SWITCH]
end
Audio.bgs_play("Audio/BGS/" + @name, vol, @pitch)
@@last = self
end
end
end # BGS
end # RPG
#===============================================================================
# Game Player
#===============================================================================
class Game_Player < Game_Character
#--------------------------------------------------------------------------
# alias dash?
#--------------------------------------------------------------------------
alias dash_mso dash? unless $@
def dash?
if $game_switches[YE::SYSTEM::AUTO_DASH_SWITCH]
return false if @move_route_forcing
return false if $game_map.disable_dash?
return false if in_vehicle?
return false if Input.press?(Input::A)
return true
else
dash_mso
end
end
end
#===============================================================================
# Window
#===============================================================================
class Window
#--------------------------------------------------------------------------
# update windowskin
#--------------------------------------------------------------------------
def update_windowskin
if $game_variables != nil
winvar = YE::SYSTEM::WINDOW_VARIABLE
if $game_variables[winvar] == 0
$game_variables[winvar] = YE::SYSTEM::DEFAULT_WINDOW
elsif !YE::SYSTEM::WINDOW_HASH.include?($game_variables[winvar])
$game_variables[winvar] = YE::SYSTEM::DEFAULT_WINDOW
end
mso_windowskin = YE::SYSTEM::WINDOW_HASH[$game_variables[winvar]]
else
mso_windowskin = YE::SYSTEM::WINDOW_HASH[YE::SYSTEM::DEFAULT_WINDOW]
end
self.windowskin = Cache.windows(mso_windowskin)
end
end
#===============================================================================
# Window Base
#===============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# alias initialize
#--------------------------------------------------------------------------
alias initialize_window_mso initialize unless $@
def initialize(x, y, width, height)
initialize_window_mso(x, y, width, height)
self.update_windowskin
end
end
#===============================================================================
# Window Message
#===============================================================================
class Window_Message < Window_Selectable
#--------------------------------------------------------------------------
# alias update show fast
#--------------------------------------------------------------------------
alias update_show_fast_mso update_show_fast unless $@
def update_show_fast
if $game_switches[YE::SYSTEM::INSTANT_TEXT_SWITCH]
if self.pause or self.openness < 255
@show_fast = false
else
@show_fast = true
end
if @show_fast and @wait_count > 0
@wait_count -= 1
end
else
update_show_fast_mso
end
end
if $worale != nil
if $worale["NMS"]
#--------------------------------------------------------------------------
# alias draw_name
#--------------------------------------------------------------------------
alias draw_name_mso draw_name unless $@
def draw_name(name, x, y)
draw_name_mso(name, x, y)
@namebox.update_windowskin
end
end
end
end
#===============================================================================
# Window System
#===============================================================================
class Window_System < Window_Selectable
#--------------------------------------------------------------------------
# Initialize
#--------------------------------------------------------------------------
def initialize
super(0, 56, 544, 360)
@column_max = 1
self.index = 0
self.active = true
refresh
end
#--------------------------------------------------------------------------
# Refresh
#--------------------------------------------------------------------------
def refresh
@data = []
@data.push(0) # Window Skins
@data.push(1) # Sound Volume/Sound Mute
@data.push(2) # BGM Volume/BGM Mute
@data.push(3) # Ambience Volume/Ambience Mute
@data.push(4) # Battle Animations
@data.push(5) # Auto-Dash
@data.push(6) # Instant Text
@data.push(7) # Return to Title
@data.push(8) # Return to Menu
@item_max = @data.size
self.contents.clear
for i in 0..@item_max
self.contents.font.color.alpha = 255
draw_item(i)
end
#---
end
#--------------------------------------------------------------------------
# Draw Item
#--------------------------------------------------------------------------
def draw_item(index)
sw = self.width - 32
dw = sw
#---
case index
when 0
dx = 0
dy = 0
text = YE::SYSTEM::WINDOW_SKIN
self.contents.draw_text(dx, dy, dw, WLH, text, 1)
winvar = $game_variables[YE::SYSTEM::WINDOW_VARIABLE]
text = YE::SYSTEM::WINDOW_HASH[winvar - 2]
self.contents.draw_text(dx + dw * 0/5, dy + WLH, dw/5, WLH, text, 1)
text = YE::SYSTEM::WINDOW_HASH[winvar - 1]
self.contents.draw_text(dx + dw * 1/5, dy + WLH, dw/5, WLH, text, 1)
text = YE::SYSTEM::WINDOW_HASH[winvar]
self.contents.draw_text(dx + dw * 2/5, dy + WLH, dw/5, WLH, text, 1)
text = YE::SYSTEM::WINDOW_HASH[winvar + 1]
self.contents.draw_text(dx + dw * 3/5, dy + WLH, dw/5, WLH, text, 1)
text = YE::SYSTEM::WINDOW_HASH[winvar + 2]
self.contents.draw_text(dx + dw * 4/5, dy + WLH, dw/5, WLH, text, 1)
when 1
dx = 0
dy = WLH * 2
text = YE::SYSTEM::BGM_TITLE
self.contents.draw_text(dx + 20, dy, dw/3 - 20, WLH*2, text, 0)
when 2
dx = 0
dy = WLH * 4
text = YE::SYSTEM::SFX_TITLE
self.contents.draw_text(dx + 20, dy, dw/3 - 20, WLH*2, text, 0)
when 3
dx = 0
dy = WLH * 6
text = YE::SYSTEM::BGS_TITLE
self.contents.draw_text(dx + 20, dy, dw/3 - 20, WLH*2, text, 0)
when 4
dx = 0
dy = WLH * 8
text = YE::SYSTEM::ANI_TITLE
self.contents.draw_text(dx + 20, dy, dw/2 - 20, WLH, text, 0)
if $game_switches[YE::SYSTEM::ANI_SWITCH]
en1 = false
en2 = true
else
en1 = true
en2 = false
end
text1 = YE::SYSTEM::ANI_ON
text2 = YE::SYSTEM::ANI_OFF
self.contents.font.color.alpha = en1 ? 255 : 128
self.contents.draw_text(sw*1/2, dy, dw/4, WLH, text1, 1)
self.contents.font.color.alpha = en2 ? 255 : 128
self.contents.draw_text(sw*3/4, dy, dw/4, WLH, text2, 1)
#---
when 5
dx = 0
dy = WLH * 9
text = YE::SYSTEM::AUTO_DASH_TITLE
self.contents.draw_text(dx + 20, dy, dw/2 - 20, WLH, text, 0)
if $game_switches[YE::SYSTEM::AUTO_DASH_SWITCH]
en1 = true
en2 = false
else
en1 = false
en2 = true
end
text1 = YE::SYSTEM::AUTO_DASH_ON
text2 = YE::SYSTEM::AUTO_DASH_OFF
self.contents.font.color.alpha = en1 ? 255 : 128
self.contents.draw_text(sw*1/2, dy, dw/4, WLH, text1, 1)
self.contents.font.color.alpha = en2 ? 255 : 128
self.contents.draw_text(sw*3/4, dy, dw/4, WLH, text2, 1)
#---
when 6
dx = 0
dy = WLH * 10
text = YE::SYSTEM::INSTANT_TEXT_TITLE
self.contents.draw_text(dx + 20, dy, dw/2 - 20, WLH, text, 0)
if $game_switches[YE::SYSTEM::INSTANT_TEXT_SWITCH]
en1 = true
en2 = false
else
en1 = false
en2 = true
end
text1 = YE::SYSTEM::INSTANT_TEXT_ON
text2 = YE::SYSTEM::INSTANT_TEXT_OFF
self.contents.font.color.alpha = en1 ? 255 : 128
self.contents.draw_text(sw*1/2, dy, dw/4, WLH, text1, 1)
self.contents.font.color.alpha = en2 ? 255 : 128
self.contents.draw_text(sw*3/4, dy, dw/4, WLH, text2, 1)
#---
when 7
dx = 0
dy = WLH * 11
text = YE::SYSTEM::RETURN_TO_TITLE
self.contents.draw_text(dx + 20, dy, dw - 20, WLH, text, 0)
#---
when 8
dx = 0
dy = WLH * 12
text = YE::SYSTEM::RETURN_TO_MENU
self.contents.draw_text(dx + 20, dy, dw - 20, WLH, text, 0)
end
end
#--------------------------------------------------------------------------
# Update Cursor
#--------------------------------------------------------------------------
def update_cursor
if @index < 0
self.cursor_rect.empty
elsif @index < 4
self.cursor_rect.set(0, @index * 48, self.width - 32, 48)
else
self.cursor_rect.set(0, @index * 24 + 96, self.width - 32, 24)
end
end
end
#===============================================================================
# Window Volume
#===============================================================================
class Window_Volume < Window_Base
#--------------------------------------------------------------------------
# initialize
#--------------------------------------------------------------------------
def initialize(wx, wy, ww, wh, var)
super(wx, wy, ww, wh)
@var = var
if @var == YE::SYSTEM::BGM_VOLUME_VAR
@gc1 = text_color(YE::SYSTEM::BGM_COLOUR1)
@gc2 = text_color(YE::SYSTEM::BGM_COLOUR2)
@mute = YE::SYSTEM::BGM_MUTE_SWITCH
elsif @var == YE::SYSTEM::SFX_VOLUME_VAR
@gc1 = text_color(YE::SYSTEM::SFX_COLOUR1)
@gc2 = text_color(YE::SYSTEM::SFX_COLOUR2)
@mute = YE::SYSTEM::SFX_MUTE_SWITCH
else
@gc1 = text_color(YE::SYSTEM::BGS_COLOUR1)
@gc2 = text_color(YE::SYSTEM::BGS_COLOUR2)
@mute = YE::SYSTEM::BGS_MUTE_SWITCH
end
self.opacity = 0
refresh
end
#--------------------------------------------------------------------------
# refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
sw = self.width - 32
self.contents.fill_rect(0, 14, sw-80, 20, gauge_back_color)
gw = sw-84
gw *= 100 - $game_variables[@var]
gw /= 100
gw = [[gw, 0].max, sw-84].min
self.contents.gradient_fill_rect(2, 16, gw, 16, @gc1, @gc2)
if $game_switches[@mute]
text = YE::SYSTEM::VOL_MUTE
else
text = sprintf("%d%%", 100 - $game_variables[@var])
end
self.contents.draw_text(sw-76, 0, 76, WLH*2, text, 0)
end
end
#===============================================================================
# Modern Algebra ATS Compatibility
#===============================================================================
class Window_FaceBox < Window_Base
unless method_defined?(:initialize)
#--------------------------------------------------------------------------
# alias initialize
#--------------------------------------------------------------------------
alias initialize_fb_mso initialize unless $@
def initialize
initialize_fb_mso
self.update_windowskin
end
end
end
class Window_NameBox < Window_Base
unless method_defined?(:initialize)
#--------------------------------------------------------------------------
# alias initialize
#--------------------------------------------------------------------------
alias initialize_nb_mso initialize unless $@
def initialize(string = '')
initialize_nb_mso(string)
self.update_windowskin
end
end
end
class Window_ChoiceBox < Window_Command
unless method_defined?(:initialize)
#--------------------------------------------------------------------------
# alias initialize
#--------------------------------------------------------------------------
alias initialize_cb_mso initialize unless $@
def initialize
initialize_cb_mso
self.update_windowskin
end
end
end
class Window_Message < Window_Selectable
unless method_defined?(:initialize)
#--------------------------------------------------------------------------
# alias initialize
#--------------------------------------------------------------------------
alias initialize_wm_mso initialize unless $@
def initialize
initialize_wm_mso
self.update_windowskin
end
end
end
#===============================================================================
# Scene_Battle
#===============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# alias display_normal_animation
#--------------------------------------------------------------------------
alias display_normal_animation_mso display_normal_animation unless $@
def display_normal_animation(targets, animation_id, mirror = false)
return if $game_switches[YE::SYSTEM::ANI_SWITCH]
display_normal_animation_mso(targets, animation_id, mirror)
end
end
#===============================================================================
# Scene_End
#===============================================================================
class Scene_End < Scene_Base
#--------------------------------------------------------------------------
# Start processing
#--------------------------------------------------------------------------
def start
super
create_menu_background
@help_window = Window_Base.new(0, 0, 544, 56)
@help_window.contents.clear
#---
text = YE::SYSTEM::WINDOW_HELP
@help_window.contents.draw_text(4, 0, 504, 24, text, 0)
@system_window = Window_System.new
var = YE::SYSTEM::BGM_VOLUME_VAR
@bgm_vol_window = Window_Volume.new(160, 104, 384, 80, var)
var = YE::SYSTEM::SFX_VOLUME_VAR
@sfx_vol_window = Window_Volume.new(160, 152, 384, 80, var)
var = YE::SYSTEM::BGS_VOLUME_VAR
@bgs_vol_window = Window_Volume.new(160, 200, 384, 80, var)
#---
@last_index = 100
end
#--------------------------------------------------------------------------
# Post-Start Processing
#--------------------------------------------------------------------------
def post_start
super
end
#--------------------------------------------------------------------------
# Pre-termination Processing
#--------------------------------------------------------------------------
def pre_terminate
super
end
#--------------------------------------------------------------------------
# Termination Processing
#--------------------------------------------------------------------------
def terminate
super
@help_window.dispose
@system_window.dispose
@bgm_vol_window.dispose
@sfx_vol_window.dispose
@bgs_vol_window.dispose
dispose_menu_background
end
#--------------------------------------------------------------------------
# Update Help
#--------------------------------------------------------------------------
def update_help
@help_window.contents.clear
case @system_window.index
when 0; text = YE::SYSTEM::WINDOW_HELP
when 1; text = YE::SYSTEM::BGM_HELP
when 2; text = YE::SYSTEM::SFX_HELP
when 3; text = YE::SYSTEM::BGS_HELP
when 4; text = YE::SYSTEM::ANI_HELP
when 5; text = YE::SYSTEM::AUTO_DASH_HELP
when 6; text = YE::SYSTEM::INSTANT_TEXT_HELP
when 7; text = YE::SYSTEM::RETURN_TITLE_HELP
when 8; text = YE::SYSTEM::RETURN_MENU_HELP
end
@help_window.contents.draw_text(4, 0, 504, 24, text, 0)
end
#--------------------------------------------------------------------------
# Frame Update
#--------------------------------------------------------------------------
def update
super
update_menu_background
@system_window.update
if @last_index != @system_window.index
@last_index = @system_window.index
update_help
end
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
else
#---
if Input.repeat?(Input::LEFT) and @system_window.index == 0
$game_variables[YE::SYSTEM::WINDOW_VARIABLE] -= 1
if $game_variables[YE::SYSTEM::WINDOW_VARIABLE] == 0
$game_variables[YE::SYSTEM::WINDOW_VARIABLE] = 1
else
Sound.play_cursor
end
@system_window.refresh
@system_window.update_windowskin
@help_window.update_windowskin
elsif Input.repeat?(Input::RIGHT) and @system_window.index == 0
$game_variables[YE::SYSTEM::WINDOW_VARIABLE] += 1
if $game_variables[YE::SYSTEM::WINDOW_VARIABLE] >
YE::SYSTEM::WINDOW_HASH.size
$game_variables[YE::SYSTEM::WINDOW_VARIABLE] =
YE::SYSTEM::WINDOW_HASH.size
else
Sound.play_cursor
end
@system_window.refresh
@system_window.update_windowskin
@help_window.update_windowskin
#---
elsif Input.repeat?(Input::LEFT) and @system_window.index == 1
if Input.press?(Input::A)
$game_variables[YE::SYSTEM::BGM_VOLUME_VAR] += 10
else
$game_variables[YE::SYSTEM::BGM_VOLUME_VAR] += 1
end
if $game_variables[YE::SYSTEM::BGM_VOLUME_VAR] >= 100
$game_variables[YE::SYSTEM::BGM_VOLUME_VAR] = 100
end
Sound.play_cursor
@bgm_vol_window.refresh
RPG::BGM.last.play
RPG::BGS.last.play
elsif Input.repeat?(Input::RIGHT) and @system_window.index == 1
if Input.press?(Input::A)
$game_variables[YE::SYSTEM::BGM_VOLUME_VAR] -= 10
else
$game_variables[YE::SYSTEM::BGM_VOLUME_VAR] -= 1
end
if $game_variables[YE::SYSTEM::BGM_VOLUME_VAR] <= 0
$game_variables[YE::SYSTEM::BGM_VOLUME_VAR] = 0
end
Sound.play_cursor
@bgm_vol_window.refresh
RPG::BGM.last.play
RPG::BGS.last.play
elsif Input.trigger?(Input::L) and @system_window.index == 1
if $game_switches[YE::SYSTEM::BGM_MUTE_SWITCH]
$game_switches[YE::SYSTEM::BGM_MUTE_SWITCH] = false
else
$game_switches[YE::SYSTEM::BGM_MUTE_SWITCH] = true
end
Sound.play_decision
@bgm_vol_window.refresh
RPG::BGM.last.play
RPG::BGS.last.play
elsif Input.trigger?(Input::R) and @system_window.index == 1
if $game_switches[YE::SYSTEM::BGM_MUTE_SWITCH]
$game_switches[YE::SYSTEM::BGM_MUTE_SWITCH] = false
else
$game_switches[YE::SYSTEM::BGM_MUTE_SWITCH] = true
end
Sound.play_decision
@bgm_vol_window.refresh
RPG::BGM.last.play
RPG::BGS.last.play
elsif Input.repeat?(Input::LEFT) and @system_window.index == 2
if Input.press?(Input::A)
$game_variables[YE::SYSTEM::SFX_VOLUME_VAR] += 10
else
$game_variables[YE::SYSTEM::SFX_VOLUME_VAR] += 1
end
if $game_variables[YE::SYSTEM::SFX_VOLUME_VAR] >= 100
$game_variables[YE::SYSTEM::SFX_VOLUME_VAR] = 100
end
Sound.play_cursor
@sfx_vol_window.refresh
elsif Input.repeat?(Input::RIGHT) and @system_window.index == 2
if Input.press?(Input::A)
$game_variables[YE::SYSTEM::SFX_VOLUME_VAR] -= 10
else
$game_variables[YE::SYSTEM::SFX_VOLUME_VAR] -= 1
end
if $game_variables[YE::SYSTEM::SFX_VOLUME_VAR] <= 0
$game_variables[YE::SYSTEM::SFX_VOLUME_VAR] = 0
end
Sound.play_cursor
@sfx_vol_window.refresh
elsif Input.trigger?(Input::L) and @system_window.index == 2
if $game_switches[YE::SYSTEM::SFX_MUTE_SWITCH]
$game_switches[YE::SYSTEM::SFX_MUTE_SWITCH] = false
else
$game_switches[YE::SYSTEM::SFX_MUTE_SWITCH] = true
end
Sound.play_decision
@sfx_vol_window.refresh
elsif Input.trigger?(Input::R) and @system_window.index == 2
if $game_switches[YE::SYSTEM::SFX_MUTE_SWITCH]
$game_switches[YE::SYSTEM::SFX_MUTE_SWITCH] = false
else
$game_switches[YE::SYSTEM::SFX_MUTE_SWITCH] = true
end
Sound.play_decision
@sfx_vol_window.refresh
elsif Input.repeat?(Input::LEFT) and @system_window.index == 3
if Input.press?(Input::A)
$game_variables[YE::SYSTEM::BGS_VOLUME_VAR] += 10
else
$game_variables[YE::SYSTEM::BGS_VOLUME_VAR] += 1
end
if $game_variables[YE::SYSTEM::BGS_VOLUME_VAR] >= 100
$game_variables[YE::SYSTEM::BGS_VOLUME_VAR] = 100
end
Sound.play_cursor
@bgs_vol_window.refresh
RPG::BGM.last.play
RPG::BGS.last.play
elsif Input.repeat?(Input::RIGHT) and @system_window.index == 3
if Input.press?(Input::A)
$game_variables[YE::SYSTEM::BGS_VOLUME_VAR] -= 10
else
$game_variables[YE::SYSTEM::BGS_VOLUME_VAR] -= 1
end
if $game_variables[YE::SYSTEM::BGS_VOLUME_VAR] <= 0
$game_variables[YE::SYSTEM::BGS_VOLUME_VAR] = 0
end
Sound.play_cursor
@bgs_vol_window.refresh
RPG::BGM.last.play
RPG::BGS.last.play
elsif Input.trigger?(Input::L) and @system_window.index == 3
if $game_switches[YE::SYSTEM::BGS_MUTE_SWITCH]
$game_switches[YE::SYSTEM::BGS_MUTE_SWITCH] = false
else
$game_switches[YE::SYSTEM::BGS_MUTE_SWITCH] = true
end
Sound.play_decision
@bgs_vol_window.refresh
RPG::BGM.last.play
RPG::BGS.last.play
elsif Input.trigger?(Input::R) and @system_window.index == 3
if $game_switches[YE::SYSTEM::BGS_MUTE_SWITCH]
$game_switches[YE::SYSTEM::BGS_MUTE_SWITCH] = false
else
$game_switches[YE::SYSTEM::BGS_MUTE_SWITCH] = true
end
Sound.play_decision
@bgs_vol_window.refresh
RPG::BGM.last.play
RPG::BGS.last.play
elsif Input.trigger?(Input::LEFT) and @system_window.index == 4
$game_switches[YE::SYSTEM::ANI_SWITCH] = false
Sound.play_decision
@system_window.refresh
elsif Input.trigger?(Input::RIGHT) and @system_window.index == 4
$game_switches[YE::SYSTEM::ANI_SWITCH] = true
Sound.play_decision
@system_window.refresh
elsif Input.trigger?(Input::LEFT) and @system_window.index == 5
$game_switches[YE::SYSTEM::AUTO_DASH_SWITCH] = true
Sound.play_decision
@system_window.refresh
elsif Input.trigger?(Input::RIGHT) and @system_window.index == 5
$game_switches[YE::SYSTEM::AUTO_DASH_SWITCH] = false
Sound.play_decision
@system_window.refresh
elsif Input.trigger?(Input::LEFT) and @system_window.index == 6
$game_switches[YE::SYSTEM::INSTANT_TEXT_SWITCH] = true
Sound.play_decision
@system_window.refresh
elsif Input.trigger?(Input::RIGHT) and @system_window.index == 6
$game_switches[YE::SYSTEM::INSTANT_TEXT_SWITCH] = false
Sound.play_decision
@system_window.refresh
elsif Input.trigger?(Input::C) and @system_window.index == 7
Sound.play_decision
RPG::BGM.fade(800)
RPG::BGS.fade(800)
RPG::ME.fade(800)
$scene = Scene_Title.new
Graphics.fadeout(60)
elsif Input.trigger?(Input::C) and @system_window.index == 8
Sound.play_cancel
return_scene
end
#---
end
end
end
#===============================================================================
#
# END OF FILE
#
#===============================================================================
OK, I'll definitely look into it. The problem with Victory Aftermath seems strange - the ATS does not in any way require it, so it shouldn't matter if it's deleted. Likely the Aftermath scripts overwrites or overrides some other script that is causing a problem, and it is that script the ATS is incompatible with. Anyway, I'll look into both and see if I can fix it.
OK, to fix the Menu System Options bug, just do the following:
go to line 602 in the Menu System Options script and see this:
#===============================================================================
# Modern Algebra ATS Compatibility
#===============================================================================
class Window_FaceBox < Window_Base
unless method_defined?(:initialize)
#--------------------------------------------------------------------------
# alias initialize
#--------------------------------------------------------------------------
alias initialize_fb_mso initialize unless $@
def initialize
initialize_fb_mso
self.update_windowskin
end
end
end
class Window_NameBox < Window_Base
unless method_defined?(:initialize)
#--------------------------------------------------------------------------
# alias initialize
#--------------------------------------------------------------------------
alias initialize_nb_mso initialize unless $@
def initialize(string = '')
initialize_nb_mso(string)
self.update_windowskin
end
end
end
class Window_ChoiceBox < Window_Command
unless method_defined?(:initialize)
#--------------------------------------------------------------------------
# alias initialize
#--------------------------------------------------------------------------
alias initialize_cb_mso initialize unless $@
def initialize
initialize_cb_mso
self.update_windowskin
end
end
end
class Window_Message < Window_Selectable
unless method_defined?(:initialize)
#--------------------------------------------------------------------------
# alias initialize
#--------------------------------------------------------------------------
alias initialize_wm_mso initialize unless $@
def initialize
initialize_wm_mso
self.update_windowskin
end
end
end
Fix it by replacing it with:
#===============================================================================
# Modern Algebra ATS Compatibility
#===============================================================================
class Window_FaceBox < Window_Base
unless method_defined?(:initialize)
#--------------------------------------------------------------------------
# alias initialize
#--------------------------------------------------------------------------
alias initialize_fb_mso initialize unless $@
def initialize (*args)
initialize_fb_mso (*args)
self.update_windowskin
end
end
end
class Window_NameBox < Window_Base
unless method_defined?(:initialize)
#--------------------------------------------------------------------------
# alias initialize
#--------------------------------------------------------------------------
alias initialize_nb_mso initialize unless $@
def initialize (*args)
initialize_nb_mso(*args)
self.update_windowskin
end
end
end
class Window_ChoiceBox < Window_Command
unless method_defined?(:initialize)
#--------------------------------------------------------------------------
# alias initialize
#--------------------------------------------------------------------------
alias initialize_cb_mso initialize unless $@
def initialize (*args)
initialize_cb_mso (*args)
self.update_windowskin
end
end
end
class Window_Message < Window_Selectable
unless method_defined?(:initialize)
#--------------------------------------------------------------------------
# alias initialize
#--------------------------------------------------------------------------
alias initialize_wm_mso initialize unless $@
def initialize (*args)
initialize_wm_mso (*args)
self.update_windowskin
end
end
end
Also, it should be placed under the ATS in the Script Editor.
Yup, this new code fixes the problem with YERD_MenuSystem. Aternatively, I could fix the problem by placing ATS3.0b below MenuSystem. But I guess this was the cheap way, your fix is the real deal and allows me to place ATS3.0b in the same place which ATS2.0 was placed in the "Demo" (that is above MenuScene instead of below it).
As for Victory Aftermath: Just in case this isn't clear: Both ATS3.0b and VictoryAftermath work just fine(the upgrade from a to b must've solved the compatibility issue), BUT it causes trouble if someone tries to delete it. I guess it's just because there are other scripts left that requires the script. In fact, after deleting the 3 other scripts connected to VictoryAftermath, the game works once again.
In other words: If you want to remove VictoryAftermath from your game (or the demo in my case), be sure to delete these 4 scripts:
YERD_VictoryAftermath
YERD_VictoryExtend
MALG_YerdAftermathFix
YERD_JPDisplay
if any of these scripts is spared, but the others are deleted, it'll crash. Otherwise, version 3.0b works just fine with it.
I'll let you know if I should encounter any other issues, but everything seems to work so far.
Once again many, many thanks for this super fast support :) . This isn't the first time I see you in action, but you really helped me out big time this time (what a sentence XD).
Quote from: modern algebra on August 17, 2009, 12:18:02 PM
Quote from: dricc on August 17, 2009, 12:03:45 PM
Hi !
First of all , THANKS for this script . this is awesome . i will raise a statue of you in my next game :)
But .... i have a small issue , look at this screen :
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fi89.servimg.com%2Fu%2Ff89%2F11%2F59%2F23%2F52%2Fproble10.jpg&hash=d9222826caaad5146e6efd145c4f88ec163fff84)
Here is the original text :
Voulez-vous jouer en mode developpeur ?\lb
Vous aurez accés au commentaire du créateur du jeu et vous
pourrez meme ... tricher .\lb
(yes , it is in french) .
As you can see , a word "créateur" is truncated ...
This is not a major issue because i can put a \lb before , but ...
Hmm, yeah it shouldn't happen. The spaces at the starts of those lines shouldn't happen either. For now, just put the \lb. If it becomes common I will have to look into it more closely. I suspect the problem has to do with the text_size method of bitmap and incorrectly calculating for french characters.
I have quite a similar problem for Polish characters. In my case, though, the whole paragraph formatting and justifying seems not to be working. It does work when I use English only. I'd like to know if there's any chance of fixing this. I'd rather stay with ATS, as I'm in great need of these alignment codes/properties and I didn't see them anywhere else.
Well, paragraph formatting relies on the #text_size method of Bitmap. With some fonts, that method is not accurate. I can't really fix that unfortunately - that method is hidden. The only way to do it would be to manually adjust the method specifically for the font being used. I could do it if it were an English font, but I don't think I could with a Polish font. Sorry.
Ok, this script is really starting to get on my nerves. I encountered another bug. Each time a dialogue box with an extra name box is shown ( \nb is used), the game crashes and gives me this error:
Script 'YERD_MenuSystem' line 629: ArgumentError occurred.
wrong number of arguments (2 for 4)
Here is the line in question:
initialize_nb_mso(*args)
And here is the script itself. It already contains your fix from before, but it still crashes. (Without the fix, the game wouldn't even come this far).
#===============================================================================
#
# Yanfly Engine RD - Menu System Options
# Last Date Updated: 2009.05.12
# Level: Easy, Normal
#
# The "End Game" option is quite possibly the most useless function in RPG Maker
# VX games. Not only does it have little functionality but its functions can
# be reproduced by Alt+F4 and F12. This script replaces "End Game" with a new
# menu altogether and giving the player some familiar options seen in many of
# today's commercial RPG's such as changing window skins, adjust sound volume,
# turning off animations during battle, and the like.
#
#===============================================================================
# Updates:
# ----------------------------------------------------------------------------
# o 2009.05.12 - Auto-Dash update. If player holds down the dash button when
# this option is enabled, the player will walk instead of dash.
# o 2009.05.09 - Compatibility update with Woratana's NeoMessage.
# Compatibility update with Modern Algebra's ATS.
# o 2009.05.07 - Started script and finished.
#===============================================================================
# Instructions
#===============================================================================
#
# Input this script anywhere above Main. It's plug and play outside of changing
# a few variables and switches, which will be listed below:
#
# - If you have variables bound to variables 91, 92, 93, and 94, scroll down and
# bind them to unused variables.
# - If you have switches bound to switches 91, 92, 93, 94, 95, or 96, scroll
# down and bind them to unused switches.
#
# Then, download the windows pack, and create a "Windows" folder inside your
# Graphics folder. Input the windows pack there. You're all set to go.
#
#===============================================================================
#
# Compatibility
# - Works With: Woratana's NeoMessage
# - Works With: Modern Algebra's ATS
# - Alias: Game_Player: dash?
# - Alias: Window_Base: initialize
# - Alias: Scene_Battle: display_normal_animation
# - Overwrites: Scene_End: All of it
# - Overwrites: Vocab: game_end
#
#===============================================================================
$imported = {} if $imported == nil
$imported["MenuSystemOptions"] = true
module YE
module SYSTEM
# This changes the "End Game" string to a new string. This completely
# overrides the default term from the database for a reason and that's
# because this is adjustable from the title menu as well.
TITLE = "System"
#---------------------
# Window Configuration
#---------------------
# This will affect what string data will appear for the window selection
# portion of the system menu.
WINDOW_HELP = "Select preferred window skin."
WINDOW_SKIN = "Window Skin"
# This sets the default window used when nothing is selected. This also
# determines the window skin used at the title screen. Reference it to
# the list below to determine which window skin. Don't make this 0.
DEFAULT_WINDOW = 7
# This determines the variable used to store the player's windowskin choice.
WINDOW_VARIABLE = 91
# This below determines what the variable refers to when it's used as
# reference. Put your windows inside the Graphics/Windows folder. ID 0 will
# automatically push back to the default window's ID.
WINDOW_HASH ={
# Window ID => Window Name
1 => "Red",
2 => "Orange",
3 => "Yellow",
4 => "Green",
5 => "Cyan",
6 => "Navy",
7 => "Blue",
8 => "Violet",
9 => "Purple",
10 => "Pink",
11 => "Grey",
12 => "Black",
} # Do not remove this.
#---------------------
# Volume Configuration
#---------------------
# This will affect what string data will appear for the volume adjustment
# portion of the system menu.
BGM_HELP = "Adjust BGM volume. Press L/R to mute."
SFX_HELP = "Adjust SFX volume. Press L/R to mute."
BGS_HELP = "Adjust BGS volume. Press L/R to mute."
BGM_TITLE = "BGM Volume"
SFX_TITLE = "SFX Volume"
BGS_TITLE = "BGS Volume"
VOL_MUTE = "Mute"
# These are the variables and switches that govern the sound effect volumes.
# Note that for the variables, the higher they are, the lower the volume.
BGM_VOLUME_VAR = 92 # Variable
SFX_VOLUME_VAR = 93 # Variable
BGS_VOLUME_VAR = 94 # Variable
BGM_MUTE_SWITCH = 92 # Switch
SFX_MUTE_SWITCH = 93 # Switch
BGS_MUTE_SWITCH = 94 # Switch
# This adjusts the gradient colours for each of the volume controls.
BGM_COLOUR1 = 30
BGM_COLOUR2 = 31
SFX_COLOUR1 = 28
SFX_COLOUR2 = 29
BGS_COLOUR1 = 20
BGS_COLOUR2 = 21
#---------------------
# Battle Animations
#---------------------
# This will affect what string data will appear for the toggling of
# battle animations portion of the system menu.
ANI_TITLE = "Battle Animations"
ANI_HELP = "Toggles animations during battle."
ANI_ON = "Shown"
ANI_OFF = "Hidden"
# This is the switch used to adjust battle animations. If it is off,
# animations are enabled. If it is on, animations are disabled.
ANI_SWITCH = 91
#---------------------
# Automatic Dashing
#---------------------
# This will affect what string data will appear for the toggling of
# automatic dashing portion of the system menu.
AUTO_DASH_TITLE = "Automatic Dash"
AUTO_DASH_HELP = "Toggles automatic dashing."
AUTO_DASH_ON = "Auto"
AUTO_DASH_OFF = "Hold"
# This is the switch used to determine whether or not autodashing is on.
AUTO_DASH_SWITCH = 95
#---------------------
# Instant Text
#---------------------
# This will affect what string data will appear for the instant text
# portion of the system menu.
INSTANT_TEXT_TITLE = "Instant Text"
INSTANT_TEXT_HELP = "Toggles instant text display."
INSTANT_TEXT_ON = "Instant"
INSTANT_TEXT_OFF = "Default"
# This is the switch used to determine whether or not instant text is on.
INSTANT_TEXT_SWITCH = 96
#---------------------
# Remaining Text
#---------------------
# This will affect what remaining string data is left for the system menu.
RETURN_TO_TITLE = "Return to Title Screen"
RETURN_TITLE_HELP = "Return back to the title screen."
RETURN_TO_MENU = "Return to Main Menu"
RETURN_MENU_HELP = "Return back to the main menu."
end # SYSTEM
end # YE
#===============================================================================
# Editting anything past this point may potentially result in causing computer
# damage, incontinence, explosion of user's head, coma, death, and/or halitosis.
# Therefore, edit at your own risk.
#===============================================================================
module Vocab
def self.game_end
return YE::SYSTEM::TITLE
end
end
module Cache
def self.windows(filename)
load_bitmap("Graphics/Windows/", filename)
end
end
module RPG
class BGM < AudioFile
def play
if @name.empty?
Audio.bgm_stop
@@last = BGM.new
else
vol = @volume
if $game_variables != nil
vol *= 100 - $game_variables[YE::SYSTEM::BGM_VOLUME_VAR]
vol /= 100
vol = [[vol, 0].max, 100].min
vol = 0 if $game_switches[YE::SYSTEM::BGM_MUTE_SWITCH]
end
Audio.bgm_play("Audio/BGM/" + @name, vol, @pitch)
@@last = self
end
end #Play
end # BGM
class ME < AudioFile
def play
if @name.empty?
Audio.me_stop
else
vol = @volume
if $game_variables != nil
vol *= 100 - $game_variables[YE::SYSTEM::BGM_VOLUME_VAR]
vol /= 100
vol = [[vol, 0].max, 100].min
vol = 0 if $game_switches[YE::SYSTEM::BGM_MUTE_SWITCH]
end
Audio.me_play("Audio/ME/" + @name, vol, @pitch)
end
end
end # ME
class SE < AudioFile
def play
unless @name.empty?
vol = @volume
if $game_variables != nil
vol *= 100 - $game_variables[YE::SYSTEM::SFX_VOLUME_VAR]
vol /= 100
vol = [[vol, 0].max, 100].min
vol = 0 if $game_switches[YE::SYSTEM::SFX_MUTE_SWITCH]
end
Audio.se_play("Audio/SE/" + @name, vol, @pitch)
end
end
def self.stop
Audio.se_stop
end
end # SE
class BGS < AudioFile
def play
if @name.empty?
Audio.bgs_stop
@@last = BGS.new
else
vol = @volume
if $game_variables != nil
vol *= 100 - $game_variables[YE::SYSTEM::BGS_VOLUME_VAR]
vol /= 100
vol = [[vol, 0].max, 100].min
vol = 0 if $game_switches[YE::SYSTEM::BGS_MUTE_SWITCH]
end
Audio.bgs_play("Audio/BGS/" + @name, vol, @pitch)
@@last = self
end
end
end # BGS
end # RPG
#===============================================================================
# Game Player
#===============================================================================
class Game_Player < Game_Character
#--------------------------------------------------------------------------
# alias dash?
#--------------------------------------------------------------------------
alias dash_mso dash? unless $@
def dash?
if $game_switches[YE::SYSTEM::AUTO_DASH_SWITCH]
return false if @move_route_forcing
return false if $game_map.disable_dash?
return false if in_vehicle?
return false if Input.press?(Input::A)
return true
else
dash_mso
end
end
end
#===============================================================================
# Window
#===============================================================================
class Window
#--------------------------------------------------------------------------
# update windowskin
#--------------------------------------------------------------------------
def update_windowskin
if $game_variables != nil
winvar = YE::SYSTEM::WINDOW_VARIABLE
if $game_variables[winvar] == 0
$game_variables[winvar] = YE::SYSTEM::DEFAULT_WINDOW
elsif !YE::SYSTEM::WINDOW_HASH.include?($game_variables[winvar])
$game_variables[winvar] = YE::SYSTEM::DEFAULT_WINDOW
end
mso_windowskin = YE::SYSTEM::WINDOW_HASH[$game_variables[winvar]]
else
mso_windowskin = YE::SYSTEM::WINDOW_HASH[YE::SYSTEM::DEFAULT_WINDOW]
end
self.windowskin = Cache.windows(mso_windowskin)
end
end
#===============================================================================
# Window Base
#===============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# alias initialize
#--------------------------------------------------------------------------
alias initialize_window_mso initialize unless $@
def initialize(x, y, width, height)
initialize_window_mso(x, y, width, height)
self.update_windowskin
end
end
#===============================================================================
# Window Message
#===============================================================================
class Window_Message < Window_Selectable
#--------------------------------------------------------------------------
# alias update show fast
#--------------------------------------------------------------------------
alias update_show_fast_mso update_show_fast unless $@
def update_show_fast
if $game_switches[YE::SYSTEM::INSTANT_TEXT_SWITCH]
if self.pause or self.openness < 255
@show_fast = false
else
@show_fast = true
end
if @show_fast and @wait_count > 0
@wait_count -= 1
end
else
update_show_fast_mso
end
end
if $worale != nil
if $worale["NMS"]
#--------------------------------------------------------------------------
# alias draw_name
#--------------------------------------------------------------------------
alias draw_name_mso draw_name unless $@
def draw_name(name, x, y)
draw_name_mso(name, x, y)
@namebox.update_windowskin
end
end
end
end
#===============================================================================
# Window System
#===============================================================================
class Window_System < Window_Selectable
#--------------------------------------------------------------------------
# Initialize
#--------------------------------------------------------------------------
def initialize
super(0, 56, 544, 360)
@column_max = 1
self.index = 0
self.active = true
refresh
end
#--------------------------------------------------------------------------
# Refresh
#--------------------------------------------------------------------------
def refresh
@data = []
@data.push(0) # Window Skins
@data.push(1) # Sound Volume/Sound Mute
@data.push(2) # BGM Volume/BGM Mute
@data.push(3) # Ambience Volume/Ambience Mute
@data.push(4) # Battle Animations
@data.push(5) # Auto-Dash
@data.push(6) # Instant Text
@data.push(7) # Return to Title
@data.push(8) # Return to Menu
@item_max = @data.size
self.contents.clear
for i in 0..@item_max
self.contents.font.color.alpha = 255
draw_item(i)
end
#---
end
#--------------------------------------------------------------------------
# Draw Item
#--------------------------------------------------------------------------
def draw_item(index)
sw = self.width - 32
dw = sw
#---
case index
when 0
dx = 0
dy = 0
text = YE::SYSTEM::WINDOW_SKIN
self.contents.draw_text(dx, dy, dw, WLH, text, 1)
winvar = $game_variables[YE::SYSTEM::WINDOW_VARIABLE]
text = YE::SYSTEM::WINDOW_HASH[winvar - 2]
self.contents.draw_text(dx + dw * 0/5, dy + WLH, dw/5, WLH, text, 1)
text = YE::SYSTEM::WINDOW_HASH[winvar - 1]
self.contents.draw_text(dx + dw * 1/5, dy + WLH, dw/5, WLH, text, 1)
text = YE::SYSTEM::WINDOW_HASH[winvar]
self.contents.draw_text(dx + dw * 2/5, dy + WLH, dw/5, WLH, text, 1)
text = YE::SYSTEM::WINDOW_HASH[winvar + 1]
self.contents.draw_text(dx + dw * 3/5, dy + WLH, dw/5, WLH, text, 1)
text = YE::SYSTEM::WINDOW_HASH[winvar + 2]
self.contents.draw_text(dx + dw * 4/5, dy + WLH, dw/5, WLH, text, 1)
when 1
dx = 0
dy = WLH * 2
text = YE::SYSTEM::BGM_TITLE
self.contents.draw_text(dx + 20, dy, dw/3 - 20, WLH*2, text, 0)
when 2
dx = 0
dy = WLH * 4
text = YE::SYSTEM::SFX_TITLE
self.contents.draw_text(dx + 20, dy, dw/3 - 20, WLH*2, text, 0)
when 3
dx = 0
dy = WLH * 6
text = YE::SYSTEM::BGS_TITLE
self.contents.draw_text(dx + 20, dy, dw/3 - 20, WLH*2, text, 0)
when 4
dx = 0
dy = WLH * 8
text = YE::SYSTEM::ANI_TITLE
self.contents.draw_text(dx + 20, dy, dw/2 - 20, WLH, text, 0)
if $game_switches[YE::SYSTEM::ANI_SWITCH]
en1 = false
en2 = true
else
en1 = true
en2 = false
end
text1 = YE::SYSTEM::ANI_ON
text2 = YE::SYSTEM::ANI_OFF
self.contents.font.color.alpha = en1 ? 255 : 128
self.contents.draw_text(sw*1/2, dy, dw/4, WLH, text1, 1)
self.contents.font.color.alpha = en2 ? 255 : 128
self.contents.draw_text(sw*3/4, dy, dw/4, WLH, text2, 1)
#---
when 5
dx = 0
dy = WLH * 9
text = YE::SYSTEM::AUTO_DASH_TITLE
self.contents.draw_text(dx + 20, dy, dw/2 - 20, WLH, text, 0)
if $game_switches[YE::SYSTEM::AUTO_DASH_SWITCH]
en1 = true
en2 = false
else
en1 = false
en2 = true
end
text1 = YE::SYSTEM::AUTO_DASH_ON
text2 = YE::SYSTEM::AUTO_DASH_OFF
self.contents.font.color.alpha = en1 ? 255 : 128
self.contents.draw_text(sw*1/2, dy, dw/4, WLH, text1, 1)
self.contents.font.color.alpha = en2 ? 255 : 128
self.contents.draw_text(sw*3/4, dy, dw/4, WLH, text2, 1)
#---
when 6
dx = 0
dy = WLH * 10
text = YE::SYSTEM::INSTANT_TEXT_TITLE
self.contents.draw_text(dx + 20, dy, dw/2 - 20, WLH, text, 0)
if $game_switches[YE::SYSTEM::INSTANT_TEXT_SWITCH]
en1 = true
en2 = false
else
en1 = false
en2 = true
end
text1 = YE::SYSTEM::INSTANT_TEXT_ON
text2 = YE::SYSTEM::INSTANT_TEXT_OFF
self.contents.font.color.alpha = en1 ? 255 : 128
self.contents.draw_text(sw*1/2, dy, dw/4, WLH, text1, 1)
self.contents.font.color.alpha = en2 ? 255 : 128
self.contents.draw_text(sw*3/4, dy, dw/4, WLH, text2, 1)
#---
when 7
dx = 0
dy = WLH * 11
text = YE::SYSTEM::RETURN_TO_TITLE
self.contents.draw_text(dx + 20, dy, dw - 20, WLH, text, 0)
#---
when 8
dx = 0
dy = WLH * 12
text = YE::SYSTEM::RETURN_TO_MENU
self.contents.draw_text(dx + 20, dy, dw - 20, WLH, text, 0)
end
end
#--------------------------------------------------------------------------
# Update Cursor
#--------------------------------------------------------------------------
def update_cursor
if @index < 0
self.cursor_rect.empty
elsif @index < 4
self.cursor_rect.set(0, @index * 48, self.width - 32, 48)
else
self.cursor_rect.set(0, @index * 24 + 96, self.width - 32, 24)
end
end
end
#===============================================================================
# Window Volume
#===============================================================================
class Window_Volume < Window_Base
#--------------------------------------------------------------------------
# initialize
#--------------------------------------------------------------------------
def initialize(wx, wy, ww, wh, var)
super(wx, wy, ww, wh)
@var = var
if @var == YE::SYSTEM::BGM_VOLUME_VAR
@gc1 = text_color(YE::SYSTEM::BGM_COLOUR1)
@gc2 = text_color(YE::SYSTEM::BGM_COLOUR2)
@mute = YE::SYSTEM::BGM_MUTE_SWITCH
elsif @var == YE::SYSTEM::SFX_VOLUME_VAR
@gc1 = text_color(YE::SYSTEM::SFX_COLOUR1)
@gc2 = text_color(YE::SYSTEM::SFX_COLOUR2)
@mute = YE::SYSTEM::SFX_MUTE_SWITCH
else
@gc1 = text_color(YE::SYSTEM::BGS_COLOUR1)
@gc2 = text_color(YE::SYSTEM::BGS_COLOUR2)
@mute = YE::SYSTEM::BGS_MUTE_SWITCH
end
self.opacity = 0
refresh
end
#--------------------------------------------------------------------------
# refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
sw = self.width - 32
self.contents.fill_rect(0, 14, sw-80, 20, gauge_back_color)
gw = sw-84
gw *= 100 - $game_variables[@var]
gw /= 100
gw = [[gw, 0].max, sw-84].min
self.contents.gradient_fill_rect(2, 16, gw, 16, @gc1, @gc2)
if $game_switches[@mute]
text = YE::SYSTEM::VOL_MUTE
else
text = sprintf("%d%%", 100 - $game_variables[@var])
end
self.contents.draw_text(sw-76, 0, 76, WLH*2, text, 0)
end
end
#===============================================================================
# Modern Algebra ATS Compatibility
#===============================================================================
class Window_FaceBox < Window_Base
unless method_defined?(:initialize)
#--------------------------------------------------------------------------
# alias initialize
#--------------------------------------------------------------------------
alias initialize_fb_mso initialize unless $@
def initialize (*args)
initialize_fb_mso (*args)
self.update_windowskin
end
end
end
class Window_NameBox < Window_Base
unless method_defined?(:initialize)
#--------------------------------------------------------------------------
# alias initialize
#--------------------------------------------------------------------------
alias initialize_nb_mso initialize unless $@
def initialize (*args)
initialize_nb_mso(*args)
self.update_windowskin
end
end
end
class Window_ChoiceBox < Window_Command
unless method_defined?(:initialize)
#--------------------------------------------------------------------------
# alias initialize
#--------------------------------------------------------------------------
alias initialize_cb_mso initialize unless $@
def initialize (*args)
initialize_cb_mso (*args)
self.update_windowskin
end
end
end
class Window_Message < Window_Selectable
unless method_defined?(:initialize)
#--------------------------------------------------------------------------
# alias initialize
#--------------------------------------------------------------------------
alias initialize_wm_mso initialize unless $@
def initialize (*args)
initialize_wm_mso (*args)
self.update_windowskin
end
end
end
#===============================================================================
# Scene_Battle
#===============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# alias display_normal_animation
#--------------------------------------------------------------------------
alias display_normal_animation_mso display_normal_animation unless $@
def display_normal_animation(targets, animation_id, mirror = false)
return if $game_switches[YE::SYSTEM::ANI_SWITCH]
display_normal_animation_mso(targets, animation_id, mirror)
end
end
#===============================================================================
# Scene_End
#===============================================================================
class Scene_End < Scene_Base
#--------------------------------------------------------------------------
# Start processing
#--------------------------------------------------------------------------
def start
super
create_menu_background
@help_window = Window_Base.new(0, 0, 544, 56)
@help_window.contents.clear
#---
text = YE::SYSTEM::WINDOW_HELP
@help_window.contents.draw_text(4, 0, 504, 24, text, 0)
@system_window = Window_System.new
var = YE::SYSTEM::BGM_VOLUME_VAR
@bgm_vol_window = Window_Volume.new(160, 104, 384, 80, var)
var = YE::SYSTEM::SFX_VOLUME_VAR
@sfx_vol_window = Window_Volume.new(160, 152, 384, 80, var)
var = YE::SYSTEM::BGS_VOLUME_VAR
@bgs_vol_window = Window_Volume.new(160, 200, 384, 80, var)
#---
@last_index = 100
end
#--------------------------------------------------------------------------
# Post-Start Processing
#--------------------------------------------------------------------------
def post_start
super
end
#--------------------------------------------------------------------------
# Pre-termination Processing
#--------------------------------------------------------------------------
def pre_terminate
super
end
#--------------------------------------------------------------------------
# Termination Processing
#--------------------------------------------------------------------------
def terminate
super
@help_window.dispose
@system_window.dispose
@bgm_vol_window.dispose
@sfx_vol_window.dispose
@bgs_vol_window.dispose
dispose_menu_background
end
#--------------------------------------------------------------------------
# Update Help
#--------------------------------------------------------------------------
def update_help
@help_window.contents.clear
case @system_window.index
when 0; text = YE::SYSTEM::WINDOW_HELP
when 1; text = YE::SYSTEM::BGM_HELP
when 2; text = YE::SYSTEM::SFX_HELP
when 3; text = YE::SYSTEM::BGS_HELP
when 4; text = YE::SYSTEM::ANI_HELP
when 5; text = YE::SYSTEM::AUTO_DASH_HELP
when 6; text = YE::SYSTEM::INSTANT_TEXT_HELP
when 7; text = YE::SYSTEM::RETURN_TITLE_HELP
when 8; text = YE::SYSTEM::RETURN_MENU_HELP
end
@help_window.contents.draw_text(4, 0, 504, 24, text, 0)
end
#--------------------------------------------------------------------------
# Frame Update
#--------------------------------------------------------------------------
def update
super
update_menu_background
@system_window.update
if @last_index != @system_window.index
@last_index = @system_window.index
update_help
end
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
else
#---
if Input.repeat?(Input::LEFT) and @system_window.index == 0
$game_variables[YE::SYSTEM::WINDOW_VARIABLE] -= 1
if $game_variables[YE::SYSTEM::WINDOW_VARIABLE] == 0
$game_variables[YE::SYSTEM::WINDOW_VARIABLE] = 1
else
Sound.play_cursor
end
@system_window.refresh
@system_window.update_windowskin
@help_window.update_windowskin
elsif Input.repeat?(Input::RIGHT) and @system_window.index == 0
$game_variables[YE::SYSTEM::WINDOW_VARIABLE] += 1
if $game_variables[YE::SYSTEM::WINDOW_VARIABLE] >
YE::SYSTEM::WINDOW_HASH.size
$game_variables[YE::SYSTEM::WINDOW_VARIABLE] =
YE::SYSTEM::WINDOW_HASH.size
else
Sound.play_cursor
end
@system_window.refresh
@system_window.update_windowskin
@help_window.update_windowskin
#---
elsif Input.repeat?(Input::LEFT) and @system_window.index == 1
if Input.press?(Input::A)
$game_variables[YE::SYSTEM::BGM_VOLUME_VAR] += 10
else
$game_variables[YE::SYSTEM::BGM_VOLUME_VAR] += 1
end
if $game_variables[YE::SYSTEM::BGM_VOLUME_VAR] >= 100
$game_variables[YE::SYSTEM::BGM_VOLUME_VAR] = 100
end
Sound.play_cursor
@bgm_vol_window.refresh
RPG::BGM.last.play
RPG::BGS.last.play
elsif Input.repeat?(Input::RIGHT) and @system_window.index == 1
if Input.press?(Input::A)
$game_variables[YE::SYSTEM::BGM_VOLUME_VAR] -= 10
else
$game_variables[YE::SYSTEM::BGM_VOLUME_VAR] -= 1
end
if $game_variables[YE::SYSTEM::BGM_VOLUME_VAR] <= 0
$game_variables[YE::SYSTEM::BGM_VOLUME_VAR] = 0
end
Sound.play_cursor
@bgm_vol_window.refresh
RPG::BGM.last.play
RPG::BGS.last.play
elsif Input.trigger?(Input::L) and @system_window.index == 1
if $game_switches[YE::SYSTEM::BGM_MUTE_SWITCH]
$game_switches[YE::SYSTEM::BGM_MUTE_SWITCH] = false
else
$game_switches[YE::SYSTEM::BGM_MUTE_SWITCH] = true
end
Sound.play_decision
@bgm_vol_window.refresh
RPG::BGM.last.play
RPG::BGS.last.play
elsif Input.trigger?(Input::R) and @system_window.index == 1
if $game_switches[YE::SYSTEM::BGM_MUTE_SWITCH]
$game_switches[YE::SYSTEM::BGM_MUTE_SWITCH] = false
else
$game_switches[YE::SYSTEM::BGM_MUTE_SWITCH] = true
end
Sound.play_decision
@bgm_vol_window.refresh
RPG::BGM.last.play
RPG::BGS.last.play
elsif Input.repeat?(Input::LEFT) and @system_window.index == 2
if Input.press?(Input::A)
$game_variables[YE::SYSTEM::SFX_VOLUME_VAR] += 10
else
$game_variables[YE::SYSTEM::SFX_VOLUME_VAR] += 1
end
if $game_variables[YE::SYSTEM::SFX_VOLUME_VAR] >= 100
$game_variables[YE::SYSTEM::SFX_VOLUME_VAR] = 100
end
Sound.play_cursor
@sfx_vol_window.refresh
elsif Input.repeat?(Input::RIGHT) and @system_window.index == 2
if Input.press?(Input::A)
$game_variables[YE::SYSTEM::SFX_VOLUME_VAR] -= 10
else
$game_variables[YE::SYSTEM::SFX_VOLUME_VAR] -= 1
end
if $game_variables[YE::SYSTEM::SFX_VOLUME_VAR] <= 0
$game_variables[YE::SYSTEM::SFX_VOLUME_VAR] = 0
end
Sound.play_cursor
@sfx_vol_window.refresh
elsif Input.trigger?(Input::L) and @system_window.index == 2
if $game_switches[YE::SYSTEM::SFX_MUTE_SWITCH]
$game_switches[YE::SYSTEM::SFX_MUTE_SWITCH] = false
else
$game_switches[YE::SYSTEM::SFX_MUTE_SWITCH] = true
end
Sound.play_decision
@sfx_vol_window.refresh
elsif Input.trigger?(Input::R) and @system_window.index == 2
if $game_switches[YE::SYSTEM::SFX_MUTE_SWITCH]
$game_switches[YE::SYSTEM::SFX_MUTE_SWITCH] = false
else
$game_switches[YE::SYSTEM::SFX_MUTE_SWITCH] = true
end
Sound.play_decision
@sfx_vol_window.refresh
elsif Input.repeat?(Input::LEFT) and @system_window.index == 3
if Input.press?(Input::A)
$game_variables[YE::SYSTEM::BGS_VOLUME_VAR] += 10
else
$game_variables[YE::SYSTEM::BGS_VOLUME_VAR] += 1
end
if $game_variables[YE::SYSTEM::BGS_VOLUME_VAR] >= 100
$game_variables[YE::SYSTEM::BGS_VOLUME_VAR] = 100
end
Sound.play_cursor
@bgs_vol_window.refresh
RPG::BGM.last.play
RPG::BGS.last.play
elsif Input.repeat?(Input::RIGHT) and @system_window.index == 3
if Input.press?(Input::A)
$game_variables[YE::SYSTEM::BGS_VOLUME_VAR] -= 10
else
$game_variables[YE::SYSTEM::BGS_VOLUME_VAR] -= 1
end
if $game_variables[YE::SYSTEM::BGS_VOLUME_VAR] <= 0
$game_variables[YE::SYSTEM::BGS_VOLUME_VAR] = 0
end
Sound.play_cursor
@bgs_vol_window.refresh
RPG::BGM.last.play
RPG::BGS.last.play
elsif Input.trigger?(Input::L) and @system_window.index == 3
if $game_switches[YE::SYSTEM::BGS_MUTE_SWITCH]
$game_switches[YE::SYSTEM::BGS_MUTE_SWITCH] = false
else
$game_switches[YE::SYSTEM::BGS_MUTE_SWITCH] = true
end
Sound.play_decision
@bgs_vol_window.refresh
RPG::BGM.last.play
RPG::BGS.last.play
elsif Input.trigger?(Input::R) and @system_window.index == 3
if $game_switches[YE::SYSTEM::BGS_MUTE_SWITCH]
$game_switches[YE::SYSTEM::BGS_MUTE_SWITCH] = false
else
$game_switches[YE::SYSTEM::BGS_MUTE_SWITCH] = true
end
Sound.play_decision
@bgs_vol_window.refresh
RPG::BGM.last.play
RPG::BGS.last.play
elsif Input.trigger?(Input::LEFT) and @system_window.index == 4
$game_switches[YE::SYSTEM::ANI_SWITCH] = false
Sound.play_decision
@system_window.refresh
elsif Input.trigger?(Input::RIGHT) and @system_window.index == 4
$game_switches[YE::SYSTEM::ANI_SWITCH] = true
Sound.play_decision
@system_window.refresh
elsif Input.trigger?(Input::LEFT) and @system_window.index == 5
$game_switches[YE::SYSTEM::AUTO_DASH_SWITCH] = true
Sound.play_decision
@system_window.refresh
elsif Input.trigger?(Input::RIGHT) and @system_window.index == 5
$game_switches[YE::SYSTEM::AUTO_DASH_SWITCH] = false
Sound.play_decision
@system_window.refresh
elsif Input.trigger?(Input::LEFT) and @system_window.index == 6
$game_switches[YE::SYSTEM::INSTANT_TEXT_SWITCH] = true
Sound.play_decision
@system_window.refresh
elsif Input.trigger?(Input::RIGHT) and @system_window.index == 6
$game_switches[YE::SYSTEM::INSTANT_TEXT_SWITCH] = false
Sound.play_decision
@system_window.refresh
elsif Input.trigger?(Input::C) and @system_window.index == 7
Sound.play_decision
RPG::BGM.fade(800)
RPG::BGS.fade(800)
RPG::ME.fade(800)
$scene = Scene_Title.new
Graphics.fadeout(60)
elsif Input.trigger?(Input::C) and @system_window.index == 8
Sound.play_cancel
return_scene
end
#---
end
end
end
#===============================================================================
#
# END OF FILE
#
#===============================================================================
No other scripts are involved in this error. I've tested this by using a new "ATS3b Demo" project file and inserting the MenuScene script below ATS3.0b.
My guess is that one of the features from YERD_MenuScene (to change the windowskin) is causing this error. Strangely enough, it crashes without even changing the windowskin in the first place (I don't even access the main menu). I mean, ATS should work as long as the default one is still in use, but it looks like MenuScene is overwriting the entire windowskin part.
Btw, it also crashes if I set the background to "Dim Background" or "Transparent".
As always, the "cheap and easy way" still works: Place "YERD_MenuScene" ABOVE "ATS 3.0" and everything's fine, but place it below "ATS 3.0" and it crashes.
Would it make a difference if we leave MenuScene above ATS 3.0 anyway?
Well, no, not on the ATS end. However, whatever Yanfly is trying to do by aliasing those ATS methods in the first place wouldn't be done, which probably means one of the options that Yanfly has in the System menu doesn't work exactly as it should. I have never used that script, but it looks like it's the windowskin option, and the methods that are causing the issue are intended to make sure that the ATS windows have the chosen windowskins upon initialization. This particular error is occuring because I changed the superclass for Window_NameBox in ATS 3.0 and didn't think to change it here. Anyway, the following should fix it. Replace the whole ATS compatibility section: Ie. [spoiler=old code]#===============================================================================
# Modern Algebra ATS Compatibility
#===============================================================================
class Window_FaceBox < Window_Base
unless method_defined?(:initialize)
#--------------------------------------------------------------------------
# alias initialize
#--------------------------------------------------------------------------
alias initialize_fb_mso initialize unless $@
def initialize (*args)
initialize_fb_mso (*args)
self.update_windowskin
end
end
end
class Window_NameBox < Window_Base
unless method_defined?(:initialize)
#--------------------------------------------------------------------------
# alias initialize
#--------------------------------------------------------------------------
alias initialize_nb_mso initialize unless $@
def initialize (*args)
initialize_nb_mso(*args)
self.update_windowskin
end
end
end
class Window_ChoiceBox < Window_Command
unless method_defined?(:initialize)
#--------------------------------------------------------------------------
# alias initialize
#--------------------------------------------------------------------------
alias initialize_cb_mso initialize unless $@
def initialize (*args)
initialize_cb_mso (*args)
self.update_windowskin
end
end
end
class Window_Message < Window_Selectable
unless method_defined?(:initialize)
#--------------------------------------------------------------------------
# alias initialize
#--------------------------------------------------------------------------
alias initialize_wm_mso initialize unless $@
def initialize (*args)
initialize_wm_mso (*args)
self.update_windowskin
end
end
end
[/spoiler]
with:
[spoiler=new code]
#===============================================================================
# Modern Algebra ATS Compatibility
#===============================================================================
class Window_FaceBox
unless method_defined?(:initialize)
#--------------------------------------------------------------------------
# alias initialize
#--------------------------------------------------------------------------
alias initialize_fb_mso initialize unless $@
def initialize (*args)
initialize_fb_mso (*args)
self.update_windowskin
end
end
alias remake_window_fb_mso remake_window unless $@
def remake_window (*args)
remake_window_fb_mso (*args)
self.update_windowskin
end
end
class Window_WordBox
unless method_defined?(:initialize)
#--------------------------------------------------------------------------
# alias initialize
#--------------------------------------------------------------------------
alias initialize_nb_mso initialize unless $@
def initialize (*args)
initialize_nb_mso(*args)
self.update_windowskin
end
end
end
class Window_ChoiceBox
unless method_defined?(:initialize)
#--------------------------------------------------------------------------
# alias initialize
#--------------------------------------------------------------------------
alias initialize_cb_mso initialize unless $@
def initialize (*args)
initialize_cb_mso (*args)
self.update_windowskin
end
end
end
class Window_ChoiceHelp
unless method_defined?(:initialize)
#--------------------------------------------------------------------------
# alias initialize
#--------------------------------------------------------------------------
alias initialize_ch_mso initialize unless $@
def initialize (*args)
initialize_ch_mso (*args)
self.update_windowskin
end
end
end
class Window_Message
unless method_defined?(:initialize)
#--------------------------------------------------------------------------
# alias initialize
#--------------------------------------------------------------------------
alias initialize_wm_mso initialize unless $@
def initialize (*args)
initialize_wm_mso (*args)
self.update_windowskin
end
end
alias remake_window_wm_mso remake_window unless $@
def remake_window (*args)
remake_window_wm_mso (*args)
self.update_windowskin
end
end
[/spoiler]
Place the Menu System script under the ATS and that fix should work fine. I haven't tested it myself because I'd have to get new windowskin graphics and set the Menu System Options script up and I don't really have time, but I imagine that should fix the problems you have and retain compatibility between the two scripts. I remind you that the ATS properties used to change the windowskin will be automatically trumped by whatever windowskin is selected by the player in Menu System Options.
Wow, you certainly are fast, and you know what you're doing.
The new code works, thanks a lot.
Should I encounted yet another bug with MenuScene, I'll send it to hell.
Quote from: modern algebra on August 15, 2010, 01:29:33 AM
Well, paragraph formatting relies on the #text_size method of Bitmap. With some fonts, that method is not accurate. I can't really fix that unfortunately - that method is hidden. The only way to do it would be to manually adjust the method specifically for the font being used. I could do it if it were an English font, but I don't think I could with a Polish font. Sorry.
I see. Thanks anyway. I'll stick to English then. If that's the only option then so be it. By the way, that's a really great script, so thanks for it (I should have said that in the first place).
Well, maybe try sending me the font you are using, as well as a text document that has every polish character you might need listed. The only reason I say I can't do it is because I don't know Polish and therefore don't know what characters I need to adjust or how to do it. So if I can get those from you I might be able to fix it.
I understand. It's quite an unrewarding job. Not many people will make use of the fix. I'll try being of as much help to you as possible - I can't do much more than provide fonts and sample texts, though. I'll PM you links. One more thing, don't haste. I'm quite sure you're working on thousands of other scripts right now. ;)
Thanks for making such an awesome script!
I just have one question.
Is there any way to make each character have a different pitch for their "voice"?
I've tried changing it through a call script event, but it keeps throwing syntax errors back at me.
The script event: ats_all (:letter_se ~ "Cancel", 40, 130)
Is it just my scripting illiteracy, or is this not possible to do?
Thanks in advance!
Well, the mistake is the ~.
Put the following instead:
ats_all (:letter_se, ["Cancel", 40, 130])
Thanks for the help!
Works perfectly now.
I have a question about the filters. It's used by placing \f
- . Say I wanted one which said the names of the lead actor. In my project, there are four. So, in the following setup:
[spoiler]FILTERS = { # See line 457.
'ATS' => '\c[1]Advanced Text System\c[0], Version 3.0',
0 => 'Numbered filters work too',[/spoiler]
is the x representing the number or letters to the left? Or should I set it up like this?
'names' => '\n[1], \n[2], \n[3], \n[4]'
You say it will hold a hash, so do I call the \f[names, 3] if I want to say the 3rd Actor's name?
What I've been doing is having to use multiple text boxes based on conditional branches. I think this could help, if I could understand how to use it. If it only holds the number on the left, then won't I still have to use conditional branches?
Yeah, you would. The filter takes the key on the right and replaces it with the string on the left. So, it wouldn't work for what you want it for.
However, you could simply use the code:
\np[0]
and that will print out the name of the lead actor.
Also, you might want to look into the \s and \s! codes, since they allow you to include text in a message on the basis of the value of a switch. That sounds more like what you are looking for. With that, for instance, you would be able to make a filter like the one you were asking about simply by having four switches and turning on one based on who the lead actor is. Like I said, however, better to simply use the \np code in that case, but it's an option if you wanted to do similar things, like change the dialogue based on who is the lead actor.
Alright, another new version! Sorry guys. I really hope this will be the last. None of the bugs fixed this time were fatal, but they are problematic if you wish to use the following features:
The primary reason for this update was to fix a non-fatal issue that deadnub brought to my attention: when using the :fit_window_to_text property, the window would not be resized if a message was smaller than a previous message. This has been fixed in 3.0c.
There was also a problem with the appended choices: in some cases, when a player repeated a choice branch, the cancel conditions would be thrown off. That has been fixed and it should work perfectly fine no matter how many times a player repeats an appended choice branch.
Another issue was when moving a text box around using the \oc, \e series of codes, the paragraph format would be thrown off for one line. That is now fixed as well.
And finally, I also added a new message code: \x[n]. This allows you to set the x position for drawing directly to n, a useful feature for formatting purposes and similar to the tab code, but more explicit.
Anyway, if you don't need any of the above, then it is not crucial to update to 3.0c.
Great to see the :fit_window_to_text property work all fine now.
I've run into another little problem, though - using justification with italics (I suppose it concerns the bold text as well). Italics cause the text not to fit the window sometimes, if you're using justification. Making it work with the three default fonts would be good. Don't know how many people use justification, so it may be of little priority to fix it.
With italics and bold fonts, its hard to guess the size they use. I believe MA has said somewhere that he can't make it work for everything, and its up the the developer to play test it.
Yeah, the paragraph formatter relies on the text_size method of Bitmap, which unfortunately is not accurate when it comes to italicized text (though I think it actually is with regard to bolded font). The way to fix it would be to manually tweak the text_size method to return the correct value for each font and for each individual character, which requires a scripter. I might be able to whip up a little RM-based program that will allow you to do the tweaking yourself and generate the code to do that for the text_size method, but I am very busy at the moment, so we'll have to see about that.
Modern.
I have a question about the Choice Branches.
I've been trying to use a Choice Box to sell furniture to a player who has purchased a house in my project. When you go to the furniture store, and select which house you wish to add to, you are given Appended Choice Branches, based on possible upgrades. There are two possible upgrades for each room of the house. Therefor, I've got it setup so only the second upgrade is not visible (\son[]) until the first Upgrade is purchased. At which point, the first upgrade choice is rendered disabled using \d[].
Now, after the player upgrades to the second one, both should be disabled. That's when I'm having a hard time finishing the sequence.
I'm looking for a way to make both codes work on the same line. Like this \son[x]\d[y]LIVING ROOM 2
For some reason, though the code show selection if switch x is on and disable it if switch y is on, it simply disables it.
Is it not possible to use a double code like that?
Well, they should work together, and I did a short test and they did. I think you're using the wrong code for what you want though. If you want to disable it when switch y is on, you should be using \d![y]. \d[y] disables the choice as long as switch Y is off.
That sounds confusing, so in other words, the way the code you have works is that the choice will not show up unless switch X is ON, and will be disabled unless switch Y is ON. If you want it to be disabled if switch Y is on (it sounds like you do), then use \d![y]
Yes, that was confusing. But you were right. It works. Thanks again.
Just a suggestion, M_A:
afp[x] show face of actor in the nth position?
This would be helpful if there were multiple front of the party possibilities.
you could always do this:
\af[\p[x]]
The construction you have might be a little more simple though. What I really should have done is made it so that \n[0] and \af[0] would show the first actor in the party, as it was in RM2k3, but I forgot about it.
Cool. That works.
Hey Modern,
I'm still using the crap out of this script. I wanted to let you know that I found what may or may not be considered another bug in it.
For some reason, there are a few times, when I had an NPC say something, immediately followed by a choice branch. And in certain instances, the choices wouldn't show and the game would resume as if by cancel. I've been working around it, by excluding the choices in these situations. But today, I had an idea that maybe since I left the default max lines at 4, and there wasn't room for the choices in the message box, that it wouldn't show them.
I got this impression, because when it happens, the namebox disappears on the first spacebar or enter input, and it takes a second one to remove the message box. At length, I decided to change the default "false" boolean which is designated to the "opens choices in another box" option to "true". And it worked.
Anyway, I just wanted to let you know. It's not a real problem and I doubt anyone has run into it before. Most people can probably figure it out if it does. I know you just released the new version, so I was hesitant to tell you. But I figured you'd like to know in case the problem ever arises again.
Alright, thanks for telling me. I will definitely look into it once I have the time.
Minor issue, Yanfly's game options script doesn't work correctly, in that the windowskin you choose won't be used. Surely this can be fixed?
Well, link me to it and I will take a look.
You're genius MA. :)
This is a very good Message System which have more features then anyone will be able to use. xD
Keep on doing such freaky scripts.
Deity
Here it is (http://wiki.pockethouse.com/index.php?title=System_Game_Options)
Alright, well that script does more than just select a windowskin. It also sets the bold, italic, shadow, size, name, and color. Do you also want all that or just the windowskin?
Is it possible to create a conditional branch for choices?
Like this:
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fi53.tinypic.com%2Foh8f8k.png&hash=e7def719e656d9bc80e0f5fb73d6b8902ab5ded8)
If a switch or variable doesn't fit, an other choice is activated.
It should be all in one window!
(im sorry if there is a possibility, but I dont find it)
There are very good reasons for choices not being added externally in the way you describe, but there are other ways to do what you want - use the \soff and \son codes. You should find a description of how they work in the Instructions - special codes list. Essentially, the only thing they can check is the value of a switch, so it is not as extensive as a conditional branch, but you can use conditional branches beforehand to determine the value of the switch. So your example will look like this:
@>Show Choices: \d[200]Mission 2-1, \son[261]Mission 2-2, \soff[261]Mission 2-3, Mission 3-1
: When [\d[200]Mission 2-1]
@>
: When [\son[261]Mission 2-2]
@>
: When [\soff[261]Mission 2-3]
@>
: When [Mission 3-1]
@>
: When Cancel
@>
: Branch End
@>
To use the full range of conditionals, then you would need to do the checks before hand and turn the switch on or off accordingly
Oh, thanks, you are right! It's more or less that what I want :) !
So, when I use the fit to text and place it above a character with the speech bubble pictures...it flashes down at the bottom of the screen, as if it starts writing it down at the bottom, but then realizes that it needs to be above a character? How do I get it so that it will start drawing above a character, instead of jump to that character?
Are you using the :character and :char_ref properties or the \e[], \oc[] codes?
Try using the :character and :char_ref properties - I think they will do it immediately. Really, I should have made it so the codes would be interpreted before the window shows up, but for now, just use the properties.
PRETTY NEAT!
ill be deffinetly Using it.
5/5
I'm eventing for myself Final Fantasy XIII Datalog: I'm getting with ATS 3 pretty well, but I don't know what should I do, if I wanted to display a full screen description. For example: I'm selecting chapter one, and from this subchoice menu second choice, then a full page description shows up (preferably with pic).
I have to say that this script has come in leaps and bounds since its inception and now it's the most comprehensive text system out there. I was using UTS for my projects before but ATS satisfies all the needs for my project, AMG, though still learning all its features! That's half the fun though (teaches me how to script too!) ;D
I'm glad that you like it. I originally had made it for a friend, and its only feature was animated faces :)
I hope that the learning curve is not too steep and you get used to it quickly.
Awesome! Well it's certainly very useful. So far so good. Still learning RGSS properly, but it's nice to be able to really study the code to see how things are done. If the "learning curve" proves too steep, I guess I know where to come! ;D
Hey Modern. Got a question for you.
I've messed around with the different configuration settings, and still seem to not to be getting the results I want. So, I'll come here and ask.
Is it possible to have the Message box one window skin and the Menu an entirely different one? I notice that you can change ones for the message, face, choice, and word, but what about menu? I've got it customized to be a speech bubble, but don't want it to be a speech bubble in the menu.
The menu is controlled entirely separately. Just save the one you want for the menu as "Window" and save the one you want for the message to something else. In the configuration, set the windowskin to that something else.
Does Anyone know where I can get one just like this for XP?
First of all, I'm working with RPG Maker VX for the first time. Second, how exactly do I use a large image (X > 96x96) for the character icon or whatever? And also, I don't understand how to use the message codes (an example of it should be enough for me to understand)?
To use large faces, simply select faces that are larger than usual in the message window. IE. if you have a set of eight faces that are 128x128 rather than 96x96, just use that set of faces and select the appropriate index. Alternatively, you can save faces as single face graphics by saving it with a $ at the start of the name. Then select the 0 index and it will display the whole image.
For using message codes, just insert them directly into the text. So, if you wanted to show the name of actor 1, just put it in like so:
@>Text: My name is \n[1]!
There's no trick to it. Download the demo - there are examples of nearly every feature there, including large faces and lots of message code use.
@modern algebra
Thank you for the explanation on using message codes.
"select the appropriate index"
I'm sorry, what?
"Alternatively, you can save faces as single face graphics by saving it with a $ at the start of the name. Then select the 0 index and it will display the whole image."
So... putting "$" at the beginning of a face set does what to it exactly? I thought it was just something that I had to do to the Character images. 0 index?
Normal facesets are set up as 4x2. So, 4 actors in the top row, 4 actors in the bottom row, and each face is 96x96. So, when you are normally selecting a face, you are selecting one of those eight faces. That is what I was referring to by select the index.
For large faces, you can do it in one of two ways, either you can make a 4x2 set of faces that are larger than normal (ie. 4 faces in top row and 4 in bottom, but instead of being 96x96 they are 160x128, or whatever). Then you select the face you want, but if I recall correctly, the selecting square will not be aligned properly, so that's why I said index instead of face.
The other way to do it is to just save single large faces with the $. What that $ means is that the script will read the image as just one face, rather than 8 faces like normal.
If you are still confused, a large face is used in the demo. You can just look into that event and see how it was done.
@modern agenda
Oh, thank you very much. Now, here's another problem. Only a few images actually worked when I placed "$" in front of the filename. The others had the same problem. Check the attachment.
"Place this script in its own slot in the Script Editor (F11) above Main # and below Materials."
By this, do you mean I should have it with my other scripts (going down the list under Main and above Materials) or it should be on its own like Main and Materials are?
i.e.
*empty slot*
?Advance Text System 3.0
*empty slot*
Yeah, it should be in its own slot between Main and Materials. So:
Materials
*empty slot(s)
ATS 3.0
*empty slot(s)
Main
And yeah, it's fine that the little selector box is tiny. I can't change the program; just leave it where it is. However, once in game and used in a message, it will show the whole face.
May I ask the implementation of a new feature here or should I open a new thread?
Nah, ask it here
I noticed that when :scroll_show_arrows is true, the floating arrow (forgot its name) overlaps the scrolling arrow in the bottom. I wouldn't have noticed there was a down arrow had it not been a different colour.
So, could you implement a feature that allows to move the floating arrow to the side?
Sure, just grab the Window Pause Sprite Hijacked (http://rmrk.net/index.php/topic,39893.0.html) script and place it above the ATS. Then place the following little code below it:
class Window_Message
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# * Reset Pause Position
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
def reset_pause_position
super
@pause_sprite.x += 16 if $game_message.scrolling && $game_message.scroll_show_arrows
end
end
That'll move the pause sprite a little to the right.
Would you mind posting an example for making someone's dialogue green with the script? I didn't do it right.
Assuming that you are using the default windowskin, the following message would be do it:
@>Text: \c[3]Hi this text is green. \c[11]This is a different shade of green. \c[0]This is white.
You can also use hex with this system, allowing you to use any shade of color pretty much.
So, something like this:
@>Text: \c[#00FF00]This is green. \c[#00a000]This is a less obnoxious green.
Thank you.
What in the script do I mess with in order to make it possible to press enter and continue downward to view the rest of a message? When I press enter, it just skips to the next message.
You're going to have to be more specific as I don't know what you mean by "skip to the next message." The script will always show a full message. You can turn the scrolling option on so that it will scroll, if that is what you are asking for. You can also turn on the autopause feature if you want it to pause everytime it reads a page.
If on the other hand, you mean you want a message to pause for a second before completing itself, you just use the \! command.
Seriously though, almost everything is in the demo. Just look at the events and you can figure it out.
Thanks for the demo recommendation. It cleared up a few things, but not the scrolling problem that I have. This could possibly be a bug of some sort. Perhaps it's occurring because of the Scripts that I am using.
In the demo, way too much text just continued to flow until it was done. Afterwards, I was free to either scroll back up or continue to the next message.
In my Play Testing, too much text is shown in the message window (as much that will fit). However, it does not continue downward (scroll) with the rest of the text I simply never get it and when I press Enter or Space Bar it just goes to the next message box. What can I do from within the script to fix this?
I'm using Reedo's Common Code, Ultimate Quest System (not set-up yet), Read!, Pause Script, HK's Animated Title Screen, Yanfly Engion Melody (the latest version from the demo), and your script.
Well, it might be that you have the message system from YEM. You would have to get rid of that or else it will probably interfere.
Hey there MA, I'm getting a weird error with nameboxes, namely that they aren't long enough. Here's a screenshot:
[spoiler](https://rmrk.net/proxy.php?request=http%3A%2F%2Fi12.photobucket.com%2Falbums%2Fa228%2Fkirinelf%2FErrors%2FError.jpg&hash=9ea7089be511b8a765b32964f6715ffb1c58552f)[/spoiler]
This only happens if I use \nb[Mama]. Interestly enough, the other names I'm using (Login, Router, Yufia, Lucia, Eclair) all show up fine. I tried setting the character's name in the database and used \n[ x], but it still appears cut off like that.
Do you have any idea why this is happening?
Well, the text_size method in Bitmap doesn't work very well for some fonts, so that's probably the problem. I was working on a little fix type thing for that, but I don't know when that will be ready. For now, try just putting extra spaces in it and see if that works, like:
\nb[Mama ]
*Headdesk* That was a simple workaround. It doesn't seem like anything else in my project is effected, so that should be all for now. Cheers, MA.
I don't have that one on my script list. Oh wellies, I guess. Maybe it's a bug?
The message starting from the top ends with "what happened to them" from the next downward. Afterwards, it continues on the next message.
Hmm - yeah I guess its a bug. Can you send me a project with the error recreated? Just paste the ATS as you have it configured and that event into a new project and try it out. If it works, then its an incompatibility and you'll need to include your other scripts. If it doesn't work, you only need to include the ATS. In any case, compress game data (leave it unencrypted), and upload it in a post.
Quote from: modern algebra on December 31, 2010, 04:36:30 PM
Sure, just grab the Window Pause Sprite Hijacked (http://rmrk.net/index.php/topic,39893.0.html) script and place it above the ATS.
Ah, I remember seeing that script some times ago but I didn't fully understand what its purpose was.
It works, tough I have a minor bug to report.
Thanks (:
I tried it with only ATS and that one event. I still had the same problem, though.
Can you give me any advice on making a bridge in the game or an example (screenshot) of one? I can't shake the feeling that the one I made is really crappy, but that's the best that I've figured out how to do. :-[
OK, you set MAX_LINES to 10 - that is your problem.
In the Config, around line 766, you have:
MAX_LINES = 10 # See line 376.
But your window size and font size means you can really only fit 4 lines. So change it to:
MAX_LINES = 4 # See line 376.
If you want to make the window bigger or the font size smaller, then you can make the max lines greater too.
As for the bridge - I'm not a mapper. As far as bridges go, the VX RTP is pretty limited. I probably wouldn't make it that long though. You can always grab resources to help make better bridges though, like this (http://rmrk.net/index.php/topic,26153.0.html).
If you want better feedback, you can always post in the Screenshot Thread (http://rmrk.net/index.php/topic,13626.0.html)
Thank you for the help.
Only a tiny problem. Shouldn't be hard to fix.
I have the boxes fit to the text lenght, and I also have this script:
#==============================================================================
# Chest Item Pop-Up
#==============================================================================
# Author : OriginalWij
# Edited By : Mac Malone (Dr. ?)
# Version : 3.0 - Dr. ? Edit v1.2
#==============================================================================
#==============================================================================
# v1.0
# - Initial release
# v1.1
# - Added description window
# v1.2
# - Bug fix and added forgotten aliases
# v1.3
# - Added option to only popup once for many of the same item
# v2.0
# - Reworked name popup window (won't show "1 x" if only one item)
# - Reworked gold display (more efficient)
# - Added option to turn popup sound on/off
# - Added option to turn popup text on/off
# - Added icon to name popup and the ability to turn it on/off
# - Added adjustable X & Y coordinates for name popup window
# - Added "call" feature - with and without adding the item to inventory
# - Added option to wait for button or time for popup name window
# - Added options to define button and time for popup name window wait
# - Added option to enable/disable the "close window" sound
# - Added options to define "close window" sound
# v2.1
# - Fixed moving event bug
# - Added option to have popup always active
# - Added option for overlay graphic
# - Added auto-adjust name window location, depending on actor X/Y
# v2.2
# - Several minor (non-bug) display fixes
# - Removed overlay option due to compatibility problems
# - Optimized script
# v3.0
# - Bugfix for when called from a common event
# - Reworked main popup scene for new X/Y determination
# - Added option for 2nd window cancellation button
# - Added option to center the text window or auto-move to not cover the player
# - Added option to popup items & gold after battle
# v3.0 - Dr. ? Edit
# - Added sound groups
# - Added ME compadibiltiy
# - Added Chest_Popup.new2 command
# - Added option to show or not show gold
# - Added option to show popup above event
# - Added Chest_Popup.new3 command
# - Added Popup_Data class (Incompadible with old save files)
# v3.0 - Dr. ? Edit v1.1
# - Bugfix for $popup.show_above_event
# v3.0 - Dr. ? Edit v1.2
# - Bugfix for save bug in lines 339-353 (now lines 341-355)
#==============================================================================
#==============================================================================
# To use:
#
# Normal Mode : turn on the switch (designated below) BEFORE
# each gold/item addition
# Automatic Mode : turn on the switch (designated below) if you DON'T want
# popups and then turn the switch off when done
#
# To call manually:
#
# (useful if using a break-limits script and popping-up 100+ of one item)
#
# $scene = Chest_Popup.new(type, amount, index, add = false, x = pX, y = pY, sound_group = nil)
# type : 0 :gold, 1 :items, 2 :weapons, 3 :armor
# amount : number of items "gaining"
# index : item ID
# add : adds item(s) shown into inventory if true (default = false)
# x : custom X coordinate to pop-up at (default = player X)
# y : custom Y coordinate to pop-up at (default = player Y)
# sound_group : play different sounds; an array containing [SI, VI, PI] look
# : at PLAY_P_SOUND for more. (default = nil) - Dr.? Edit
#==============================================================================
#==============================================================================
# NOTE: when adding multiple (different) items in an event, insert a WAIT(1)
# between them (insert the WAIT(1) even if in AUTOMATIC mode)
#==============================================================================
# NOTE: the switch turns itself off after each "add item/gold" event command
# UNLESS in automatic mode (you MUST turn it off MANUALLY in auto-mode)
#==============================================================================
# NOTE: insert a WAIT(7) between a text message and adding items in events
# (allows time for the message window to close)
#==============================================================================
#-----------------------------------------------------------------------------
# Popup Controls
#-----------------------------------------------------------------------------
# Automatic popup mode
# (true = ALWAYS popup UNLESS $game_switches[POPUP_SWITCH] is on)
AUTO_POPUP = true
# Switch to activate/deactivate popups
# (activate if AUTO_POPUP = false) (deactivate if AUTO_POPUP = true)
POPUP_SWITCH = 1
# Popup gold
GOLD_POP = true
# "Gold" icon index
# (if GOLD_POPUP = true)
GOLD_ICON = 205
# Only popup once (if many of the same item)
ONLY_SHOW_ONE = true
# Popup gold/items gained in battle (pops-up after battle)
BATTLE_POP = false
# Battle reward prefix text for popup text window
# (if BATTLE_POP = true)
BATTLE_REWARD = 'Battle Reward: '
# Show the Popup icon above the event which gave you the item.
SHOW_ABOVE_EVENT = false
#-----------------------------------------------------------------------------
# Sound Groups (Dr. ?)
#-----------------------------------------------------------------------------
# With this edit you can play multiple sounds depending on what you pick up.
# You can also play custom sounds when an important item is gained.
#
# Defining your Sounds, Volumes, and Pitches:
# ===========================================
# To set up your volumes, pitchs, and sound files you put a new pitch, volume,
# and or sound into the 3 constants below (P_SND, P_SND_V, P_SND_P).
#
# Sounds:
# -------
# For sounds you can either play a SE or a ME.
# To add a new sound simply add new index to P_SND like so:
#
# old:
# P_SND = ['Audio/SE/Chime2']
# new:
# P_SND = ['Audio/SE/Chime2', 'Audio/SE/Item1'] # Added a new SE called Item1
#
# Volumes:
# --------
# To add a new volume add a new index to P_SND_V like so:
#
# old:
# P_SND_V = [100]
# new:
# P_SND_V = [100, 80] # Added a volume with a percentage of 80. The precentage can be 0 - 100
#
# Pitchs:
# -------
# Same as with volumes except you add it to P_SND_P. The precentage can be 0 - 150.
# Examples: [150] # Pitch of 150
#
# Defining your Sound Groups:
# ===========================
# A sound group is an array cosisting of a Sound Index (SI), a Volume Index (VI),
# and a Pitch Index (PI). So the format is: [SI, VI, PI]. A sound index is the
# index of one of your defined sounds, a volume index is the index of one of
# your defined volumes, and a pitch index is the index of one of your defined
# pitchs. Here are some examples (Using the values above):
#
# [0, 0, 0] # This would be the SE, Chime2, with a volume of 100 and a pitch of 150.
# [1, 1, 0] # This would be the SE, Item1, with a volume of 80 and a pitch of 150.
#
# I hope you understood that.
#
# Using Sound Groups:
# ===================
# There are two ways to use sound groups. The GOLD_SOUND, WEAPON_SOUND, etc.
# constants and via Chest_Popup.new or Chest_Popup.new2 commands.
#
# GOLD_SOUND, ITEM_SOUND, WEAPON_SOUND, etc.:
# -------------------------------------------
# To use a sound group in these constants simply write: GOLD_SOUND = [0, 0, 0]
# or whatever your sound group is. These constants mean what sounds will play
# when gold is gained, when a weapon is gained, etc. It should be evident, but
# it does tell you what each one is beside the constant definition. Examples:
#
# GOLD_SOUND = [0, 0, 0] # This would play the SE, Chime2, with a volume of 100
# and a pitch of 150 when gold is gained.
# ITEM_SOUND = [1, 1, 0] # This would play the SE, Item1, witha volume of 80
# and a pitch of 150 when an item is gained.
#
# Chest_Popup.new and Chest_Popup.new2 Commands:
# ----------------------------------------------
# Use this to make special music play when you get a special item.
#
# Example:
# Let's say we get a very special item (Like a crystal) and we want it to
# popup and play the ME Fanfare1 with the defualt volume and pitch (100, 150).
# So here is what we would do. We would first add that ME into P_SND like so:
#
# P_SND = ['Audio/SE/Chime2', 'Audio/SE/Item1', 'Audio/ME/Fanfare1']
#
# Then we would make our event with Quick Event Creation > Treasure Chest,
# select our chest character set and choose our crystal item from the drop-down.
# Then we open up the event. We delete the second to last event on the first
# page, the one that adds the a item. Then We replace it with a script event.
# If the index of the crystal was 8 it would look like this:
#
# $scene=Chest_Popup.new(1,1,8,true,nil,nil,[2,0,0]) # See the 8 in this command?
# That is the index of the item in the database.
#
# Note: This WON'T fit one just one line, and I'm not sure if that's going to
# be a problem or not. If you want the command to fit on one line you could
# ethier use the new2 command or do this:
#
# sg = [2,0,0] # sound group
# t = true # add value
# $scene=Chest_Popup.new(1,1,8,t,nil,nil,sg)
#
# This would end up taking 3 lines but all of the commands would fit on one
# line.
#
# After that, click OK and you are done.
#
# About New2:
# -----------
# The Chest_Popup.new2 is a command made just for the sound group purpose. It
# shortens the new command by rearrganing it and removing the x, y settings.
# In the example above the new2 command would have made the script look like
# this:
#
# $scene = Chest_Popup.new2(1, 1, 10, [2,0,0])
#
# Thus, it would fit on one line. The syntax for this command is:
#
# $scene = Chest_Popup.new2(type, amount, index, sound_group=nil, add=true)
#
# Each of them have the same meaning the same as their counterparts in the
# Chest_Popup.new command explained at the top of this script, with the
# exception of the defualt of add now being true.
#
# Notes:
# ======
# PLAY_P_SND must be true for any of this to work.
#
#-----------------------------------------------------------------------------
# Play sound on popup?
PLAY_P_SND = true
#######################################################
# 3 options below are valid ONLY if PLAY_P_SND = true #
#######################################################
# Sound to play upon popup
# Can be a list of sounds, volumes, and pitchs, but must be surrounded in []
P_SND = ['Audio/SE/Chime2', 'Audio/SE/Chime1', 'Audio/ME/Fanfare1']
P_SND_V = [100]
P_SND_P = [150]
# Which sound to play from P_SND at certain occasions.
# SI = Sound Index, VI = Volume Index, PI = Pitch Index
# SI VI PI
GOLD_SOUND = [1, 0, 0] # Sound to play if gold
ITEM_SOUND = [0, 0, 0] # Sound to play if item
ARMOR_SOUND = [1, 0, 0] # Sound to play if armour
WEAPON_SOUND = [1, 0, 0] # Sound to play if weapon
DEFAULT_SOUND = [0, 0, 0] # Sound to play if all others are nil
# Play "close window" sound?
# Sound Groups do not currently work with this sound.
PLAY_C_SND = false
#######################################################
# 3 options below are valid ONLY if PLAY_C_SND = true #
#######################################################
# Sound to play upon popup close
C_SND = 'Audio/SE/Cancel'
C_SND_V = 80
C_SND_P = 100
#-----------------------------------------------------------------------------
# Popup Text Controls
#-----------------------------------------------------------------------------
# Show popup text?
SHOW_POPUP_TEXT = true
##############################################################
# ALL options below are valid ONLY if SHOW_POPUP_TEXT = true #
##############################################################
# Show icon with popup text?
SHOW_POPUP_TEXT_ICON = true
# Auto adjust window if over player
TEXT_WINDOW_MOVE = true
# Popup text window Y coordinate
TEXT_WINDOW_Y = 180
# Popup text window X coordinate offset
# 0 (Zero) : centered in the window
# negative integer : offset left (centered)
# positive integer : offset right (centered)
TEXT_WINDOW_X_OFFSET = 0
# Wait for button to close? (false = wait for time)
WAIT_FOR_BUTTON = false
# Buttons to wait for
# (if WAIT_FOR_BUTTON = true)
# (Set both to the same button to check for only one)
BUTTON_TO_WAIT_FOR1 = Input::C
BUTTON_TO_WAIT_FOR2 = Input::B
# Frames to wait
# (if WAIT_FOR_BUTTON = false)
WAIT_FOR_TIME = 40
#==============================================================================
# Popup_Data
# - Added by Dr.?
#==============================================================================
class Popup_Data
attr_accessor :gold_pop, :only_show_one, :show_above_event, :battle_pop, :play_p_snd, :play_c_snd,
:c_snd, :c_snd_v, :c_snd_p, :show_popup_text, :show_popup_text_icon, :text_window_move,
:text_window_y, :text_window_x_offset, :wait_for_button, :wait_for_time
def initialize
create_popup_data
end
def create_popup_data
@gold_pop = GOLD_POP
@only_show_one = ONLY_SHOW_ONE
@battle_pop = BATTLE_POP
@show_above_event = SHOW_ABOVE_EVENT
@play_p_snd = PLAY_P_SND
@play_c_snd = PLAY_C_SND
@c_snd = C_SND
@c_snd_v = C_SND_V
@c_snd_p = C_SND_P
@show_popup_text = SHOW_POPUP_TEXT
@show_popup_text_icon = SHOW_POPUP_TEXT_ICON
@text_window_move = TEXT_WINDOW_MOVE
@text_window_y = TEXT_WINDOW_Y
@text_window_x_offset = TEXT_WINDOW_X_OFFSET
@wait_for_button = WAIT_FOR_BUTTON
@wait_for_time = WAIT_FOR_TIME
end
end
$popup = Popup_Data.new
#==============================================================================
# Scene_File
# - Added by Dr.?
#==============================================================================
class Scene_File
alias popup_save write_save_data
def write_save_data(file)
popup_save(file)
Marshal.dump($popup, file)
end
alias popup_load read_save_data
def read_save_data(file)
popup_load(file)
$popup = Marshal.load(file)
end
end
#==============================================================================
# Game_System
#==============================================================================
class Game_System
#--------------------------------------------------------------------------
# Public Instance Variables (Added)
#--------------------------------------------------------------------------
attr_accessor :battle_pop # holds items to popup after battle
attr_accessor :battle_pop_gold # holds gold to popup after battle
attr_accessor :pop_event # holds the event if SHOW_ABOVE_EVENT=true
#--------------------------------------------------------------------------
# Initialize (Mod)
#--------------------------------------------------------------------------
alias chest_pop_gs_initialize initialize unless $@
def initialize
chest_pop_gs_initialize
@battle_pop = nil
@battle_pop_gold = 0
@pop_event = nil # Add by Dr. ?
end
#--------------------------------------------------------------------------
# Get Battle Pop (New)
#--------------------------------------------------------------------------
def battle_pop
return @battle_pop
end
#--------------------------------------------------------------------------
# Set Battle Pop (New)
#--------------------------------------------------------------------------
def battle_pop=(items)
@battle_pop = items
end
#--------------------------------------------------------------------------
# Get Battle Pop Gold (New)
#--------------------------------------------------------------------------
def battle_pop_gold
return @battle_pop_gold
end
#--------------------------------------------------------------------------
# Set Battle Pop Gold (New)
#--------------------------------------------------------------------------
def battle_pop_gold=(gold)
@battle_pop_gold = gold
end
end
#==============================================================================
# Game_Interpreter
#==============================================================================
class Game_Interpreter
#--------------------------------------------------------------------------
# Change Gold (Mod)
#--------------------------------------------------------------------------
alias chest_pop_command_125 command_125 unless $@
def command_125
value = operate_value(@params[0], @params[1], @params[2])
# Pop-up
event = $game_map.events[@event_id]
$game_system.pop_event = event
if $game_switches[POPUP_SWITCH] != AUTO_POPUP and @params[0] == 0 and $popup.gold_pop
if !$popup.show_above_event
$scene = Chest_Popup.new(0, value, 1)
elsif !@event_id.nil?
$scene = Chest_Popup.new(0, value, 1, false, event.screen_x, event.screen_y)
end
end
chest_pop_command_125
end
#--------------------------------------------------------------------------
# Change Items (Mod)
#--------------------------------------------------------------------------
alias chest_pop_command_126 command_126 unless $@
def command_126
value = operate_value(@params[1], @params[2], @params[3])
# Pop-up
event = $game_map.events[@event_id]
$game_system.pop_event = event
if $game_switches[POPUP_SWITCH] != AUTO_POPUP and @params[1] == 0
if !$popup.show_above_event
$scene = Chest_Popup.new(1, value, @params[0])
elsif !@event_id.nil?
$scene = Chest_Popup.new(1, value, @params[0], false, event.screen_x, event.screen_y)
end
end
chest_pop_command_126
end
#--------------------------------------------------------------------------
# Change Weapons (Mod)
#--------------------------------------------------------------------------
alias chest_pop_command_127 command_127 unless $@
def command_127
value = operate_value(@params[1], @params[2], @params[3])
# Pop-up
event = $game_map.events[@event_id]
$game_system.pop_event = event
if $game_switches[POPUP_SWITCH] != AUTO_POPUP and @params[1] == 0
if !$popup.show_above_event
$scene = Chest_Popup.new(2, value, @params[0])
elsif !@event_id.nil?
$scene = Chest_Popup.new(2, value, @params[0], false, event.screen_x, event.screen_y)
end
end
chest_pop_command_127
end
#--------------------------------------------------------------------------
# Change Armor (Mod)
#--------------------------------------------------------------------------
alias chest_pop_command_128 command_128 unless $@
def command_128
value = operate_value(@params[1], @params[2], @params[3])
# Pop-up
event = $game_map.events[@event_id]
$game_system.pop_event = event
if $game_switches[POPUP_SWITCH] != AUTO_POPUP and @params[1] == 0
if !$popup.show_above_event
$scene = Chest_Popup.new(3, value, @params[0])
elsif !@event_id.nil?
$scene = Chest_Popup.new(3, value, @params[0], false, event.screen_x, event.screen_y)
end
end
chest_pop_command_128
end
end
#==============================================================================
# Item Popup Window (New)
#==============================================================================
class Item_Popup_Window < Window_Base
#--------------------------------------------------------------------------
# Initialize
#--------------------------------------------------------------------------
def initialize(x, y)
super(0, 0, 544, 416)
self.opacity = 0
# Adjust X/Y to proper origin
@x, @y = x - 27, y - 60
end
#--------------------------------------------------------------------------
# Pop-Up
#--------------------------------------------------------------------------
def pop_up(icon_index, x_offset, y_offset)
self.contents.clear
# Draw pop-up icon
draw_icon(icon_index, @x + x_offset, @y + y_offset, true)
end
end
#==============================================================================
# Name window (New)
#==============================================================================
class Name_Window < Window_Base
#--------------------------------------------------------------------------
# Initialize
#--------------------------------------------------------------------------
def initialize(x, y, desc, no_desc, index, gold = false, icon = 0)
super(x, y, 56, WLH + 32)
# Adjust window to content's size and center
icon_x = self.contents.text_size(index).width + 6
width = self.contents.text_size(desc).width
self.width = width + 32
self.x = ((544 - self.width) / 2) + $popup.text_window_x_offset
create_contents
# Draw pop-up text
ix = no_desc ? 0 : icon_x
item_check = $game_system.battle_pop
gold_check = $game_system.battle_pop_gold
if $popup.battle_pop and (item_check != nil or gold_check > 0) # If battle reward
ix += self.contents.text_size(BATTLE_REWARD).width + 2
end
tx = gold ? 4 : 0
draw_icon(icon, ix, 0) if $popup.show_popup_text_icon and !gold
self.contents.draw_text(tx, 0, width, WLH, desc, 0)
draw_icon(GOLD_ICON, width - 24, 0, true) if gold
end
end
#==============================================================================
# Scene_Base
#==============================================================================
class Scene_Base
#--------------------------------------------------------------------------
# Initialize (New)
#--------------------------------------------------------------------------
def initialize
@disable_blur = false
end
#--------------------------------------------------------------------------
# Disable blur (New)
#--------------------------------------------------------------------------
def disable_blur=(enabled)
@disable_blur = enabled
end
#--------------------------------------------------------------------------
# Create Snapshot for Using as Background of Another Screen (Rewrite)
#--------------------------------------------------------------------------
def snapshot_for_background
$game_temp.background_bitmap.dispose
$game_temp.background_bitmap = Graphics.snap_to_bitmap
# Don't blur if disabled
$game_temp.background_bitmap.blur unless @disable_blur # changed
end
end
#==============================================================================
# Scene_Map
#==============================================================================
class Scene_Map < Scene_Base
#--------------------------------------------------------------------------
# Start (Mod)
#--------------------------------------------------------------------------
alias chest_pop_start start unless $@
def start
chest_pop_start
# Popup battle rewards
if $popup.battle_pop
if $game_system.battle_pop_gold > 0 # gold
gold = $game_system.battle_pop_gold
$game_system.battle_pop_gold = 0
$scene = Chest_Popup.new(0, gold, 0, true)
elsif $game_system.battle_pop != nil # items
item = $game_system.battle_pop.shift
if item == nil
$game_system.battle_pop = nil
else
type = 1 if item.is_a?(RPG::Item)
type = 2 if item.is_a?(RPG::Weapon)
type = 3 if item.is_a?(RPG::Armor)
$scene = Chest_Popup.new(type, 1, item.id, true)
end
end
end
end
end
#==============================================================================
# Scene_Battle
#==============================================================================
class Scene_Battle < Scene_Base
#--------------------------------------------------------------------------
# Display Gained Experience and Gold (Rewrite)
#--------------------------------------------------------------------------
def display_exp_and_gold
# Save gold to popup after battle
$game_system.battle_pop_gold = $game_troop.gold_total if $popup.battle_pop # added
exp = $game_troop.exp_total
gold = $popup.battle_pop && $popup.gold_pop ? 0 : $game_troop.gold_total # changed
$game_party.gain_gold(gold) unless $popup.battle_pop # changed
text = sprintf(Vocab::Victory, $game_party.name)
$game_message.texts.push('\|' + text)
if exp > 0
text = sprintf(Vocab::ObtainExp, exp)
$game_message.texts.push('\.' + text)
end
if gold > 0
text = sprintf(Vocab::ObtainGold, gold, Vocab::gold)
$game_message.texts.push('\.' + text)
end
wait_for_message
end
#--------------------------------------------------------------------------
# Display Gained Drop Items (Mod)
#--------------------------------------------------------------------------
alias chest_pop_display_drop_items display_drop_items unless $@
def display_drop_items
# Save items to popup after battle
$game_system.battle_pop = $game_troop.make_drop_items if $popup.battle_pop
return if $popup.battle_pop
chest_pop_display_drop_items
end
end
#==============================================================================
# Chest_Popup (New)
#==============================================================================
class Chest_Popup < Scene_Base
#--------------------------------------------------------------------------
# Initialize
#--------------------------------------------------------------------------
def initialize(type, amount, index, add = false, x = nil, y = nil, sound_group = nil)
x = $game_player.screen_x if x == nil
y = $game_player.screen_y if y == nil
$game_switches[POPUP_SWITCH] = !AUTO_POPUP
$scene.disable_blur = true
@x, @y, @amount = x, y, amount
@gold = @no_desc = false
case type
when 0 # Gold
$game_party.gain_gold(amount) if add
@icon = GOLD_ICON
@desc_amount = ''
@desc = @amount.to_s
@amount = 1
@gold = true
@sound = GOLD_SOUND
when 1 # Items
$game_party.gain_item($data_items[index], amount) if add
@icon = $data_items[index].icon_index
@desc_amount = @amount.to_s + ' x'
@desc_amount = '' if @amount == 1
@no_desc = true if @amount == 1
@desc = $data_items[index].name
@amount = 1 if $popup.only_show_one
@sound = ITEM_SOUND
when 2 # Weapons
$game_party.gain_item($data_weapons[index], amount) if add
@icon = $data_weapons[index].icon_index
@desc_amount = @amount.to_s + ' x'
@desc_amount = '' if @amount == 1
@no_desc = true if @amount == 1
@desc = $data_weapons[index].name
@amount = 1 if $popup.only_show_one
@sound = WEAPON_SOUND
when 3 # Armors
$game_party.gain_item($data_armors[index], amount) if add
@icon = $data_armors[index].icon_index
@desc_amount = @amount.to_s + ' x'
@desc_amount = '' if @amount == 1
@no_desc = true if @amount == 1
@desc = $data_armors[index].name
@amount = 1 if $popup.only_show_one
@sound = ARMOR_SOUND
end
# Check sound_group
@sound = sound_group if !sound_group.nil?
# Set index
@index = @desc_amount
# Add description to text
if @gold
@desc = @desc + ' '
else
if $popup.show_popup_text_icon
@desc = @desc_amount + ' ' + @desc
else
@desc = @desc_amount + ' ' + @desc if @desc_amount != ''
end
end
# If battle reward
item_check = $game_system.battle_pop
gold_check = $game_system.battle_pop_gold
if $popup.battle_pop and (item_check != nil or gold_check > 0)
@desc = BATTLE_REWARD + @desc
end
end
#--------------------------------------------------------------------------
# New2
# - Added by Dr.?
# - This is mostly used for controling sound groups
#--------------------------------------------------------------------------
def self.new2(type, amount, index, sound_group = nil, add = true)
return Chest_Popup.new(type, amount, index, add, nil, nil, sound_group)
end
#--------------------------------------------------------------------------
# New3
# - Added by Dr.?
# - This is mostly used for making the icon pop-up over an event
#--------------------------------------------------------------------------
def self.new3(type, amount, index, event, add = false, sound_group = nil)
event = $game_map.events[event] if event.is_a?(Integer)
return Chest_Popup.new(type, amount, index, add, event.screen_x, event.screen_y, sound_group)
end
#--------------------------------------------------------------------------
# Start
#--------------------------------------------------------------------------
def start
create_background
# Create pop-up window
@popup_window = Item_Popup_Window.new(@x, @y)
end
#--------------------------------------------------------------------------
# Terminate
#--------------------------------------------------------------------------
def terminate
# Dispose windows
@popup_window.dispose
@menuback_sprite.dispose
@name_window.dispose if $popup.show_popup_text
end
#--------------------------------------------------------------------------
# Return Scene
#--------------------------------------------------------------------------
def return_scene
# Turn off blur and pop-up switch
$scene.disable_blur = false
$game_switches[POPUP_SWITCH] = false
$scene = Scene_Map.new
end
#--------------------------------------------------------------------------
# Update
#--------------------------------------------------------------------------
def update
super
# Update pop-up window
@popup_window.update
@menuback_sprite.update
# Do the actual popping-up
do_popup
end
#--------------------------------------------------------------------------
# Update Basic
#--------------------------------------------------------------------------
def update_basic
Graphics.update
Input.update
end
#--------------------------------------------------------------------------
# Wait
#--------------------------------------------------------------------------
def wait(duration)
# Wait for DURATION frames
for i in 0..duration
update_basic
end
end
#--------------------------------------------------------------------------
# Wait for close
#--------------------------------------------------------------------------
def wait_for_close
count = 0
loop do
update_basic
count += 1
# Close if button 1 pressed
break if Input.trigger?(BUTTON_TO_WAIT_FOR1) and $popup.wait_for_button
# Close if button 2 pressed
break if Input.trigger?(BUTTON_TO_WAIT_FOR2) and $popup.wait_for_button
# Close if time elapsed
break if count >= $popup.wait_for_time and !$popup.wait_for_button
end
end
#--------------------------------------------------------------------------
# Create Background
#--------------------------------------------------------------------------
def create_background
# Create modified background
@menuback_sprite = Sprite.new
@menuback_sprite.bitmap = $game_temp.background_bitmap
@menuback_sprite.update
end
#--------------------------------------------------------------------------
# Show Name
#--------------------------------------------------------------------------
def show_name
x = 272
y = $popup.text_window_y
py = $game_player.screen_y - 32
cy = (py - y).abs
# Offset Y if text box is above player's position
if cy < 128 and $popup.text_window_move
y = py < y ? y + (y / 2) : y - (y / 2)
end
# Create Window
@name_window = Name_Window.new(x, y, @desc, @no_desc, @index, @gold, @icon)
# Wait for button(s) or time
wait_for_close
# Play sound
Audio.se_play($popup.c_snd, $popup.c_snd_v, $popup.c_snd_p) if $popup.wait_for_button and $popup.play_c_snd
end
#--------------------------------------------------------------------------
# Do Pop-Up
#--------------------------------------------------------------------------
def do_popup
# Set sound index - Dr.?
@sound = DEFAULT_SOUND if @sound.nil?
# Pop-up icon(s)
for i in 1..@amount
# Support for ME added - Dr.?
if P_SND[@sound[0]].include?("/SE/")
Audio.se_play(P_SND[@sound[0]], P_SND_V[@sound[1]], P_SND_P[@sound[2]]) if $popup.play_p_snd
elsif P_SND[@sound[0]].include?("/ME/")
Audio.me_play(P_SND[@sound[0]], P_SND_V[@sound[1]], P_SND_P[@sound[2]]) if $popup.play_p_snd
end
for i in 0..4
@popup_window.pop_up(@icon, 0, i * -4)
@popup_window.update
wait(2)
end
wait(5) if i != @amount and !$popup.only_show_one
end
wait(5)
# Pop-up text
show_name if $popup.show_popup_text
# Exit
return_scene
end
end
My issue is that even when I turn the wlh off with
$game_ats.fit_window_to_text = false
it still cuts off some text. Any way to fix it?
EDIT: It also places the box in random places on the map. How to fix that so that it'll be in the center of the screen all the time?
It doesn't seem like that script uses the message window, so are you sure that it's doing those errors because of the ATS and is not inherent in that script? I don't see any reason why my script would interact with that one - it creates its own windows.
The chest opens and the icon comes out of the chest, then a message window comes up and says what the item was. I can't turn off the window.
I've put this into the event before it does anything:
$game_ats.fit_window_to_text = false
And then put this back in to put the ATS back to how I use it:
$game_ats.fit_window_to_text = true
But it still acts strange.
Note for the attachment, I get 10 gold from the chest. But all I see is part of the 1 and then the icon.
OK, but is that a problem with the ATS or is it independent - IE does it happen if you do it in a project that doesn't have the ATS in it?
From what I could tell when I glanced at the script, it creates and uses its own windows - it doesn't piggyback on Window_Message and so I don't see how the ATS would be affecting it.
It only does it when I have the ATS. What if I put the script above the ATS? I'll try it then edit this and let you know the results.
EDIT: It still cuts off the words. Not really cuts off the words, but puts the icon over the top of the words.
Alright, can you send me a little demo with the error recreated and I will take a look. I would prefer if it wasn't your project demo, but anything is fine so long as I know where to call the event that creates the error.
Sent. Had time to look at it?
not yet. I will get to it soon.
EDIT::
I just took a look - removing the ATS from the project does not fix the problem, so it is not the ATS. Why did you lie to me about testing that? The error is directly in the Chest Popup script and will thus occur even if there were no other scripts present - it takes poor account of font difference. In the future, I would ask that you take the steps that I ask of you when debugging a script before foisting it on me. In any case, I suppose there is no harm done and at least now I've taken the time to examine the problem.
A simple fix is to replace the method starting at line 513 with the following:
#--------------------------------------------------------------------------
# Initialize
#--------------------------------------------------------------------------
def initialize(x, y, desc, no_desc, index, gold = false, icon = 0)
super(x, y, 56, WLH + 32)
# Adjust window to content's size and center
icon_x = self.contents.text_size(index).width
width = self.contents.text_size(desc).width
width += 10
self.width = width + 32
self.x = ((544 - self.width) / 2) + $popup.text_window_x_offset
create_contents
# Draw pop-up text
ix = no_desc ? 0 : icon_x
item_check = $game_system.battle_pop
gold_check = $game_system.battle_pop_gold
if $popup.battle_pop and (item_check != nil or gold_check > 0) # If battle reward
ix += self.contents.text_size(BATTLE_REWARD).width + 2
end
tx = gold ? 4 : 0
if !gold && desc[0, 1] != " "
desc.insert (3, " ")
elsif !gold
tx += 10
end
draw_icon(icon, ix, 0) if $popup.show_popup_text_icon and !gold
self.contents.draw_text(tx, 0, width, WLH, desc, 0)
draw_icon(GOLD_ICON, width - 24, 0, true) if gold
end
There is potentially another problem with the script when it comes to using different fonts. Instead of directly calculating whether an icon is used or not, the scripter decided to just put a set number of spaces when passing the name of the item gained to his little window. This was a poor decision as it can (and in your case, did) cause problems when using different fonts. This is the real problem with the script and it is one that I did not actually address - I retained his method and simply adapted it so that it will not cause problems with the specific font you are using. I did this because to really fix it would take more time than I am willing to spend on someone else's script. The result of this is that if you change fonts, you will once again have a problem. If you want a real solution, I suggest you alert the scripter of these errors and ask him to fix it. My guess is that the error was introduced by Mac Malone (Dr ?), not Wij, but that is speculative as I am not familiar with the original script and am just going on reputation.
As for the window popping up in different places, that was a deliberate choice of the scripter and it's based on where the player sprite is on the screen. It appears designed to avoid blocking the sprite. I did not take the time to address this - it also has nothing to do with the ATS and if you want it changed, talk to the scripter.
Again though, I'd like to reiterate that while I am happy to help you with this problem, I do not like that you decided to obtain my aid by pretending it was an incompatibility with my script and maintaining that fiction even when following my directions would have clearly shown that was not the issue. Maybe it was accidental, I don't know, but in the future just post in the regular Scripts (http://rmrk.net/index.php/board,99.0.html) board when you have a problem with some random script.
I don't know if this can already be done with the script, but if it can't I have a suggestion for a feature to be added. Basically what I'd like to do is be able to change the face displayed in the message box after the message is finished (kinda like when you say something that you think is somewhat amusing and you crack a smile). The text tag could be structured like:
\cf("file_name", index)
Hi, Modern. A couple things.
First. Thank you for fixing it very much. You did something that I do not know how to do.
Second. I did not intentionally "lie" to you. I did test it without the ATS, and it did work. What happened though, my guess, is that I wasn't using the font that I am in my project. So I truly did think it was an issue with the ATS, and I'm very sorry for any inconvenience I have caused you and I hope that you won't think less of me in the future. I try not to disappoint, even though I sometimes fail. Thank you once again Modern!
I'm sorry that I jumped to a conclusion that you were doing it intentionally - I did recognize that it was possible that you were simply not being rigourous enough, but it is not uncommon for me to get requests about random scripts and I am not the world's personal scripter. I don't hold it against you personally and as I said, it's not a big deal and I would help you regardless. I do think you should be a little more careful in the future and logically make a conclusion as to the source of the error before implicating some other script based on random guesswork. It would not have been hard to either simply remove the ATS from your project to test or try both in a new project where they were the only scripts and no other variables were modified.
You are right, and I will make sure that I don't mess up again. I would never intentionally take advantage of you. You must be a busy person, as am I, and I respect your time and effort into scripting awesome scripts, and helping people resolve issues in scrips. I would never intentionally waste your time. So, I shall redouble my efforts to make sure I do not do it again.
I've been using ATS2 for months, and just today came across an error where \pid[n] wasn't working, so I upgraded to ATS3, and I'm re-adjusting all of my settings and I've come across a problem.
I used to use the Yanfly RD menu options to allow me to set the windowskin and change it around. I used to put it below ATS2 and it would supersede it, but now it causes an error (line 2616) because ATS3 and the menu options both want to mess with the windowskin.
This was also nice because it would set the facewindow, choicebox, namebox and message window to display the same thing instead of having to change all of them four times. Is there a way to make it so Yanfly's system still works?
Other than that I'm loving the update!
P.S. this is probably a hard request so you don't have to do it if you don't want to, but in RMXP ccoa had a system for facesets so that when RMXP reached the end of a message for a window it would switch the faceset from one (talking) to another (blinking). Any way that could be easily or feasibly done?
I just start using this script and I have a really beginner question...
How do you enable the choicebox? I can't find the option
Isn't it "Even Commands>Show Choices"?
I'm talking about the choicebox thing in this script, not how to show choices in RMVX
I've been using RPG Maker for years, I know how to work it
Just go to the gigantic configuration section and find the line that says:
CHOICE_WINDOW = false
Change it to:
CHOICE_WINDOW = true
alternatively, if you wanted to change it permanently in-game, you can use the code in a script call:
ats_all (:choice_window, true)
or if you want to do it only for the very next message:
ats_next (:choice_window, true)
I have a problem with the name box I put \nb[Guard] and it comes up but it is behind the text box the other scripts I have are in the attached picture. Could one of them be causing the issue?
One more thing does the ATS script include Paragraph Formatter?
Yes it includes the Paragraph Formatter.
As for the namebox below the textbox, it probably is one of those other scripts. Try putting the ATS below all of them but still above Main. If that doesn't work, you can probably fix it by CTRL+F for the line:
@name_window.open
Add after that line the following:
@name_window.z = 500
If that doesn't work, play around with that 500 and increase it until it does.
I just got a weird error. If I turn on choice_window and I have a tinted background for the preceding dialogue box the choice_window in game shows up dim as well (which isn't bad), but once I've made the choice the dim background still remains on the screen and can stack up to several times and never go away if there are multiple choices in the event.
It worked thank you!
I just thought of another suggestion; give this script the ability to print text right-to-left, and make it switchable in-game through a script command, like
text_rtl = true/false
or something like that.
I've already been told that necroposting in scripts sections is okay, so no rage for you.
Anyways, that is actually a pretty good idea for if there's some cryptic language in your game that you read backwards or something. Perhaps a system wherein text comes from both ends, or expands from the center?
I noticed if you set move when visible to on and \oc
- it will place the message window over that event, but if you move along the x,y then the message window won't stay anchored to that point over the event.
Thanks for the headsup. I will get around to that and all the other recent issues very soon as I am going on break. Hopefully I can have 3.1 ready to go very soon.
A quick question for anyone who's comfortable with the ATS:
If I was going to insert a line of code to play a sound effect when the choicebox appeared, where in the ATS script would be the best place to do so?
(I've tried doing it with events, but putting anything between the last text message and the 'show choice' command makes the text message disappear, which I'd like to avoid.)
Thanks in advance.
I also have a question, just how does the filter command work? I do have a part of my game where the player chooses their gender, but I don't know how I can use the filter command to make that work. Do I go into the script and set it so that if player chooses male it'll run "ats_all (filter, he)" and the opposite for female and then just put "\f[?]" whenever the pronoun would come up?
Is there an ATS text command to respond to the arrow keys? For example, if I wanted the message to pause, wait for arrow input (rather than enter), and then proceed?
EDIT: solved. Worked around it :P
Also:
Is it just something I'm doing wrong, or does changing the font size fuck up paragraph formatting?
MA, this whole system is absolutely fantastic btw. Idk what strange dementia compels people like yourself to expend time and energy building ridiculously deep code modules like this for the community, but I sure am grateful for it.
I found a huge glitch with appended choices.
If you have more than 4 choices by using many choice event commands.
Selecting the last of a set glitches and then crashes the game.
Example:
Event command 1:
Choice 1
Choice 2
Choice 3
Choice 4 <-- This
Event command 2:
Choice 5
Choice 6 <-- This
Selecting these will mess up.
That doesn't happen in the demo, and I am finding myself unable to recreate the error - can you recreate the error in a project and send it to me so that I can see for myself? I can't really do much as is, except speculate that that method is being called for an index outside of the range included
Well its not a compatibility issue since i recreated it in a map without scripts.
this happens on every choice i append, so i dont really know what to do.
i dont have the map at this pc atm, ill show the event later.
EDIT: here it is a "demo" of the glitch. Selecting the 4th option from the choice will.. well glitch up.
I dont know why this happens, but it does not happen to all my events i use choices.
I found something interesting: the glitch doesnt happen if the appended choices are inside a choice or a conditional branch, though i dont really feel like using conditional branches just to use a choice...
Hi, I switched over to your ATS after using the one that came from Yanfly's Engine Melody because yours had more features available to it. However, I've noticed that If I change the windowskin using the System Game Options, the menu will change but, the text in messages will remain the same as it was before. I know that not all scripts work together, but I just wanted to know if there was an easy fix. or not.
EDIT: Ugh, nevermind, got it to work. I just commented out all instances of calling the windowskin. Great script, MA.
Seriously, can some please-please-please explain filters? I'm trying to set it up so that when the player makes a specific choice in-game the filter "1" changes to "he" or "she". As far as I can tell the script in the event should look something like "$game_ats.filters = {1="he"}" but that doesn't work.
Sorry to bother, but I found an odd glitch. If I have a choicebox that's dim, and then make a choice, the dim choicebox doesn't terminate. Alternatively if I have a character talk with a face graphic and use the dim background after that character is done speaking the messagebox won't terminate either. The only way I can get it to terminate normally is to just have a dim messagebox with no choices or face windows.
EDIT: On top of everything having ATS3 and the Quest Journal together causes the game to crash everytime I open the quest menu after a quest has been added, giving me an error that states the paragraph formatter (in the quest script) is an uninitialized constant.
Well, if you are using the Quest Journal, you need to have the separate Paragraph Formatter script - the one in the ATS is quite different.
As for the other problems, I will work on them as soon as exams are finished.
Thanks! That fixed everything! And don't stress yourself, I have time.
I see you have updated some of your scripts, mind showing me all your updated scripts? So far I been tinkering with adding this one on my oh so old demo I made, but I keep getting an error on line 2616 and don't know why. I deleted all your other scripts that I think went with ATS 2.0 but I am not sure.
Also, which scripts of yours are no longer compatible now with this update? Do any of these updated scripts of yours conflict with Yanfly or KGC now?
Hello. ¿This script still has support from author? I have a problem with paragraph option. I call script thereby: ats_all (:paragraph_format, true). And all I get is text drawing in a only one long line coming out the window. I will probably use the script, I need anothers of its options. But could be a great thing to write text at input without change line troubles...
That error has never happened to me, so I will need to see your project. Reproduce the error in a new project and upload it for me and I will take a look.
http://www.joseanjim.es/RPG_MAKER/WVR.rar (http://www.joseanjim.es/RPG_MAKER/WVR.rar)
Here you have it... You can see in it another error with choose options and the spaniard letter ñ.
Paragraph option according to my observation sometimes works, sometimes not.
I think script needs a command to end color change, like bold (/c, I supose, but I think to use a light version of BBcode commands should be better in general coz a lot of people knows to use it).
I like the script, thank you, is very useful. But all options I tried I found some bug...
Another thing... ¿Is better separate commands with spaces? Then that command spaces must don't appear in final result in game screen...
EDIT: Now I'm doing some event with choice branches (I NEED more than 4 choose options). In the begining all seems ok but when I choose some options I get bad windows and a script error message: Script 'ATS 3.0' line 2553 : NoMethodError ocurred. undefined method `[]' for nil:NilClass.
I think the events are OK.
http://www.joseanjim.es/RPG_MAKER/WVR2.rar (http://www.joseanjim.es/RPG_MAKER/WVR.rar)
Well, I'll take a look at both. The foreign letters is a problem with the text_size method of Bitmap and I have been working on a fix for all that stuff, but the other problems you claim I've never heard before, so it may take some time since I have had trouble finding the time to work on this stuff.
I think I found an issue:
I am using a message width of 308 with a message height of 78
If the following was made to be over a characters head using the appropriate scripts and speech bubbles - like in your demo - the text will scroll as it is suppose to. I have also set the maximum lines to three. There is some cut off - but its not like "OMG your missing the word not or to" Its more like "Your missing part of the letter t on not."
The main issue is when I make a regular show text with no speech bubble or anything - as you see from the image - and fill it with scrolling text. You see what happens it doesn't scroll, doesn't wrap. It just breaks. and then its like "you can hit enter now" only to see that there is no more text.
I tried using \lb to break up the text but I can only do that for 2 lines, if I have anything past two lines the text won't show no matter if there is a bible of text or one more sentence.
Ideas?
Suggestions?
Fixes?
And you set the max lines to 2 there?
No - sorry the line max is actually three but the text size is 24 so it can only fit two lines because of the height which is 78
Change the max lines to 2 then.
That has done nothing.
Text above a character with a speech tag give three - like it should - text in the middle of the window (see the image above in my post) still looks the same.
Max Lines = 2
in other words its like i've done nothing.
Alright, well reproduce the error in a new project and upload it for me. I will take a look as soon as I find the time.
Really hope you can solve this issue today. I reproduced the error perfectly - thinking it was a scripting issue on my end. The max line of text are three in this case.
This demo does not include rtp for size - obv you have rpg maker vx installed.
The text is an event set to auto run. So your not actually scrolling - what you see on the screen the first time around is the issue.
Well, you had paragraph format off. You have to turn that feature on if you want it to operate. In the demo you provided, turning paragraph format on and setting max lines to 2 fixed the problem.
Also, why are you insisting on leaving max_lines at 3? The purpose of that property is to tell the script how many lines can be displayed on the window at any given time. Your window only fits 2 so that is what max_lines should be.
I am wondering if this is a rmvx thing or a if your script offers this, as have seen it in peoples games...
Text will display slowly, so let me explain you have the words "the cat" show up normally at regular speed, then "....jumped...." each syllable or group of letters should wait X amount of time before displaying.
Hope that makes sense
Yeah, you can do that in this script with the \s[=y] command (where y is the number of frames to wait). You can also use \> and \< to decrease and increase the number of frames to wait by increments of 1. \s[y] will add or subtract y from the current number of frames.
\w[y] will set a number of frames to wait before drawing the next letter but the wait is only once. The script also inherits the \. and \| codes from the default message system, which wait 15 frames (1/4 second) and 60 frames (1 second), respectively.
Hello all,
Sorry if I seem as stupid as a rock here, but I am not that good with scripting. hehe. How do I actually call/assign these scripts in my game. I mean, how do I get the text bubbles to work for example.
Any help would be appreciated.
Shinanji
If I'm not mistaken, you have to have the speech tag or thought tag graphics in your folder. Then, read lines 354 to 374. This lines explain just how to set it up. It takes some getting used to, but I still believe there has never been a better script ever invented than this one. I find new things on it all the time that I can do and have not used. It's quite amazing. Anyway, hope that helped!
Quote from: IXFURU on July 15, 2011, 06:28:32 PM
If I'm not mistaken, you have to have the speech tag or thought tag graphics in your folder. Then, read lines 354 to 374. This lines explain just how to set it up. It takes some getting used to, but I still believe there has never been a better script ever invented than this one. I find new things on it all the time that I can do and have not used. It's quite amazing. Anyway, hope that helped!
Thanks a lot. :) I will check that out.
Shinanji
Hey Modern. If you make a message window with one line of text, and then make a choice window with four options, if the cursor is on the first choice option then if you press Q or whatever Input::L is, the cursor will highlight the message.
Sorry if I've missed something in my configuration. My choice settings are:
CHOICE_TEXT = " %s" # See line 564.
DISABLED_CHOICE_TEXT = "\\FA[128]%s\\FA[255]" # See line 569.
CHOICEBOX_TEXT = "%s" # See line 576.
CHOICE_WINDOW = false # See line 578.
CHOICE_X = -1 # See line 580.
CHOICE_Y = -1 # See line 584.
CHOICE_OFFSET_X = -16 # See line 587.
CHOICE_OFFSET_Y = 16 # See line 589.
CHOICE_WIDTH = 192 # See line 591.
CHOICE_HEIGHT = -1 # See line 594.
COLUMN_MAX = 1 # See line 596.
ROW_MAX = 4 # See line 597.
CHOICE_SPACING = 20 # See line 598.
CHOICE_OPACITY = 255 # See line 600.
CHOICE_BACKOPACITY = 200 # See line 601.
CHOICE_WINDOWSKIN = "Window" # See line 603.
CHOICE_FONTCOLOUR = 0 # See line 605.
CHOICE_FONTNAME = ["Verdana", "Arial", "Courier New"] # See line 607.
CHOICE_FONTSIZE = 20 # See line 610.
CHOICE_WLH = -1 # See line 611.
CHOICE_DIM = "MessageBack" # See line 612.
CHOICE_USE_DIM = 2 # See line 614.
CHOICE_ON_LINE = false # See line 617.
CHOICE_OPPOSITE_FACE = true # See line 620.
Just letting you know about this minor bug.
I may have found something but I cannot be sure as replication is extremely hard to do - its not a rare occurrence, and its not a script incompatibility. But when I try to replicate it its odd.
The window size is as follows: 308x78 (WxH) the text lines max is set to two both in the script config and in the script you use in the event box to set up a talking npc.
paragraph formatting is on.
Sometimes, if I have more then 2 lines of text, even if i dont, the words get cut off.
"Sally mary had a log, dog on a frog" will some times be "Sally mary had a log, dog on a fr"
I say sometimes because usually talking to the again fixes this issue and the text aligns fine. Is this my issue, or your issue? Again replicating this is really hard as it doesn't ALWAYS happen while sometimes it does
My issue probably. I will look into it.
Ok awesome thank you
Um sorry for the bump but how goes the fixing of my "error" that i found?
Sorry, "look into it" was not as present tense as it sounded. I will try to get to it, along with all the other reports, sometime this week.
thats ok take your time the game wont be released till November any how, I was just curious :D
Hey Modern,
Is it possible to display faces as options in choicebox?
I got to reading through the script and saw where it had the actor_method. Thought maybe that would be the best way, but I'm not sure I understand it exactly. I would like to have just a bunch of faces for the player to select from. You placed suitable methods as str, def, etc. But these all return one value. I'd like to return both the name of file and the index of the face on the sheet. Is that possible?
Hello Modern! :D I'm sorry for asking this ugly question... :-\
I'm just seeing you write credit for this script...
And I don't understand the term of use of this script...
Can I use this script for non commercial?
And what about commercial game? <<<But I won't use this
script for commercial though.... :lol:
Sorry for my bad English... :'(
I'm not really good with English though~ :-\
But if you don't mind, please answer my question... ^-^
Yes, you can use it for non-commercial games; just mention me in the credits of a game that uses it and don't publish it elsewhere without my permission.
For commercial games, it depends on the scope of the project - typically I just ask for a free copy of the game, but, again, I would need to see the game first.
Feature request:[\b]
-> In battle when you start the battle you usually see "bla emerged" and then after battle - > you won" or some victory message which is then usually preceded by an xp amount, gold and other rewards. Allow us to change that color using \c[number].
Also checking status of fix to random cut off in smaller formed text boxes bug [\i]
I could probably add that for the next version. In the meantime, you could use a script like my Global Text Codes if you like - since those messages aren't processed character by character, it should work fine. You can find it in the Database.
I haven't gotten around to the fix yet, but I will, eventually.
I just wanted to update this as I read my bug report the paragraph formatting is true in your ATS script as well as in the "event" script
Thanks, that will help.
I noticed an annoyance with the Yerd Menu System Options. It doesn't seem to take the windows that you set from the System option screen. Is there a compat patch for it, or a snippet that could fix it? Its just an annoyance, i can deal with blue screened messages, and a black window background. It would just look... dirty.
I have a new possible bug report:
With out the ATS - Enemy victory is displayed as such:
Order may not be perfect but you get the idea
Win
XP
Gold
Item
Other - Other being other scripts that affect this out put
As noted with the previous dimensions on my other bug report of 308x78 (WxH) I get the following out put:
Win XP Gold Items Other (with appropriate line wrapping - agin see previous bug report on line wrapping issues)
\n (in most programming languages works) does nothing. (unless I am being dumb and it needs to go out the out side of the "" in the vocab section)
Ideas? Your issue? My Issue?
Probably an incompatibility with that Victory Aftermath script you're using (whatever script is generating the "other" you mentioned) as I don't remember any problem like that in my battle tests. You could use \LB as that is the code I use for linebreaks (\n is used to display actor name by default so I figured it was better to preserve that), but I wouldn't want to force you to do that there.
Share the Victory Aftermath script (or whatever script you're using to generate that "Other") though so I can make them compatible.
Its no victory after math its a vx ff 12 license board and all it does is add "you gained 10 lp" to the already existing "You gained Bla XP, Items, Gold." I am not using VA. This is standard out put, nothing modified except for me adding that one extra line to the already existing default out put for winning a battle.
I will try \lb. (typically in programming I thought you do "" + \n + "" ? (at least we do in java))
Yes, you would as \n is the line break character in ascii, but (a) it would still need to be replaced since it would actually be \\n by the way the message string is interpreted; (b) by default (no message system), it wouldn't work for messaging since it draws character by character and the draw_text method wouldn't recognize a \n character or do anything with it anyway (besides draw a square), so I would still need to add a condition for it; and (c) the default message system already uses \n[y] for the actor's name, and while it would be possible to use \n without [] to signify a line break, I didn't want to double up functions like that. So, (a) and (b) mean it is the same amount of work to use \n instead of \lb, and (c) means it would be confusing. So I think \lb is the better choice. Besides, most people wouldn't know what \n is generally in scripting and \lb for "line break" is, I think, more straightforward.
You still need to share that script though, even if that is all it does and I probably also need the configuration part of your ATS.. Or else just recreate the error in a new project and send it to me since, when I tested, I was unable to recreate your error. It might be a certain combination of features on that is causing the problem or it might be incompatibility with another script and your FF12 script is a likely culprit.
Ideal would be to recreate the error in a new project and send it to me, but I definitely need the FF12 script if you want me to fix this bug.
\\lb works. Also I don't know what I did but in a recent testing of script compatabiity and moving things around - that "cut off bug" is reduced by 25%.
I cannot seem to get this script to work. There must be a script that's messing it up, but I cannot figure out which one it is. I keep getting this error:
Script 'ATS 3.0' line 2616: ArgumentError occurred
wrong number of arguments (1 for 0)
Any help?
What does the line say? The only way my line 2616 would cause a problem like that is if you had another script that also named one of its classes Window_FaceBox and is below the ATS. That seems unlikely; the only thing I could think of is either (a) you used to have ATS 2 and you didn't delete it when you added ATS3, or (b) my line 2616 is different from yours.
Actually, the fastest way to fix this would be for you to recreate the error in a new project and send it to me - then I could very easily fix it up for you.
Which line in this script do I modify to change the default font or font style for the entire game? I think the window size estimation might work better if my font was different (right now I think it's bold arial, which seems to get cut off sometimes).
This script would only let you change it for the various windows in the Message system. To change it for everything (menus, etc...) you would want to just create a new slot (somewhere above the ATS) and have the following lines:
Font.default_name = ["Verdana", "Arial", "Courier New"]
Font.default_size = 20
You would want to add the name of the font you want to the front of the array. It will take the first font that exists on the person's computer.
Ie. the above would use Verdana but if the person doesn't have Verdana installed, it would use Arial, and if the person doesn't have Arial installed, it would use Courier New. Though, that is kind of moot as all you need to do to make sure the player has the font is create a folder inside the game folder named Fonts and put all the fonts you use in it when you share the game.
Quote from: modern algebra on August 20, 2011, 09:51:39 PM
What does the line say? The only way my line 2616 would cause a problem like that is if you had another script that also named one of its classes Window_FaceBox and is below the ATS. That seems unlikely; the only thing I could think of is either (a) you used to have ATS 2 and you didn't delete it when you added ATS3, or (b) my line 2616 is different from yours.
Actually, the fastest way to fix this would be for you to recreate the error in a new project and send it to me - then I could very easily fix it up for you.
Well, I'll see if I can get that demo created, but here's the line in question.
@face_window = Window_FaceBox.new (self.viewport)
Seems to be the same line.
I checked all my other scripts, and none of them mess with the faces or are ATS 2.0.
Well, I'll need to see a demo with the error recreated.
Hi Modern...your work seems excellent, but i cant use it and i cant understand why.
I pasted it in my Rpgmaker VX script editor but when i start a demo game to try it, the game say "line 3 error". but in line 3 there are only ====== and if i delete them, it say again error on some other line after commena "end, end"
Seems strage. maybe i'm wrong and this script doesnt work for VX ?
Thanks for your time.
No, it's for VX. Maybe it's a copying error though. Try downloading the demo (http://rmrk.net/index.php?action=dlattach;topic=25348.0;attach=21375) and if that works, then copy it directly from there.
Am I doing this right?
Some Text \s[2]...\s[0] some more text...
If so, it never resets to normal text speed.
Also whats the status on the update to this script for fixing the cut off issue? :D
I keep getting a no method error occurred on line 1033, Undefined method 'animate_faces' for nil:NilClass.
Any idea how to fix that?
http://www.filehosting.org/file/details/265101/ATS_3_Error_Demo.exe Here's the link to download the Demo that shows the error I was running into. I found which script was causing the issue and put that and the ATS 3 in the demo. Nothing else besides Missing File preventor. Will this do? (Don't worry, the site is safe to download from.)
Alright, it looks like Yanfly had written a compatibility patch between the ATS and the Menu system but it was for an old version of the script.
To fix it, go in the YERD script to line 603 and you should see the following:
#===============================================================================
# Modern Algebra ATS Compatibility
#===============================================================================
class Window_FaceBox < Window_Base
unless method_defined?(:initialize)
#--------------------------------------------------------------------------
# alias initialize
#--------------------------------------------------------------------------
alias initialize_fb_mso initialize unless $@
def initialize
initialize_fb_mso
self.update_windowskin
end
end
end
class Window_NameBox < Window_Base
unless method_defined?(:initialize)
#--------------------------------------------------------------------------
# alias initialize
#--------------------------------------------------------------------------
alias initialize_nb_mso initialize unless $@
def initialize(string = '')
initialize_nb_mso(string)
self.update_windowskin
end
end
end
class Window_ChoiceBox < Window_Command
unless method_defined?(:initialize)
#--------------------------------------------------------------------------
# alias initialize
#--------------------------------------------------------------------------
alias initialize_cb_mso initialize unless $@
def initialize
initialize_cb_mso
self.update_windowskin
end
end
end
class Window_Message < Window_Selectable
unless method_defined?(:initialize)
#--------------------------------------------------------------------------
# alias initialize
#--------------------------------------------------------------------------
alias initialize_wm_mso initialize unless $@
def initialize
initialize_wm_mso
self.update_windowskin
end
end
end
Replace it with:
#===============================================================================
# Modern Algebra ATS Compatibility
#===============================================================================
class Window_FaceBox < Window_Base
unless method_defined?(:initialize)
#--------------------------------------------------------------------------
# alias initialize
#--------------------------------------------------------------------------
alias initialize_fb_mso initialize unless $@
def initialize (*args)
initialize_fb_mso (*args)
self.update_windowskin
end
end
end
class Window_NameBox < Window_Base
unless method_defined?(:initialize)
#--------------------------------------------------------------------------
# alias initialize
#--------------------------------------------------------------------------
alias initialize_nb_mso initialize unless $@
def initialize (*args)
initialize_nb_mso (*args)
self.update_windowskin
end
end
end
class Window_ChoiceBox < Window_Command
unless method_defined?(:initialize)
#--------------------------------------------------------------------------
# alias initialize
#--------------------------------------------------------------------------
alias initialize_cb_mso initialize unless $@
def initialize (*args)
initialize_cb_mso (*args)
self.update_windowskin
end
end
end
class Window_Message < Window_Selectable
unless method_defined?(:initialize)
#--------------------------------------------------------------------------
# alias initialize
#--------------------------------------------------------------------------
alias initialize_wm_mso initialize unless $@
def initialize (*args)
initialize_wm_mso (*args)
self.update_windowskin
end
end
end
Well, now there's a new issue.
I edited the Menu System script, and now that's fine. But now when I start, the error
Script ATS 3 line 3145 NoMethodError occurred.
undefined method '[]' for nil:NilClass
The Script causing the error is Jet's Mouse System script. I'll post another demo.
http://www.filehosting.org/file/details/265239/ATS_3_Error_Demo.exe
Here ya go.
Hello MA.
I use your script -wich is great- but whenever I use the /oc[X] or /e[X] command, to get the message positionned above the X event, it appear first on the "default" position (for a very short time -but enough time to notice it-) THEN it goes to the right position, above the event.
In short, the message 'flashes' at the bottom of the screen, then goes up to the event.
I tried to change the :character line in the script itself, but the problem remains, only the "default" position changed.
I don't know if I do things correctly or not, this is the first script I've ever tried. =)
So, basically, is there a way to get the program run the commands \e[], \oc[] etc. before the message appears ?
ps: English is not my native language, sorry if my post is not clear enough.
So I am just wondering if you have fixed that text cutting off issue and I think, as I pointed out before, i found a new issue: (unless I am using it wrong)
some text \s[3]....\s[0] some more text
in that example, the dots show up slowly but the text speed never resets at \s[0] thus some more text also come in slowly.
HELP PLEASE!!! I have looked for the answer over and over again but cannot find it. Basically I was testing out the controls from the script for positioning message_width, message_height and some other one i cant remember. I had noticed after i have entered the positions and in the message box of the event after the positions i put Input Choice to see how it would look like. Then when i closed and opened my game again, the start menu screen with the New Game, Continue , and Exit was stretched out. The right side width was stretched out. I attached a picture to show what i mean :( . And yes i have other scripts but i deleted them, downloaded the ATS 3.0 Demo script again, and it still didn't fix it. Then i deleted and un-istalled rpg vx and installed it again 2 times and still wouldn't change back. Help! I don't know whats going on?!?
Err, that's just the way the title screen is by default. It has absolutely nothing to do with the ATS.
It's purely coincidental that you only noticed it after playing around with this script.
All this time... I thought something was wrong...Man i gotta stop staying up too late. I could have sworn that the box was closer to the text. Thank you, cuz now i can sit back and let this sink in my head and realize. Anyway 10/10 script man its what i always looked for since i needed to congfigure message box width and height. Peace
If you think it looks off, all you need to do to make the window in the Title screen smaller is go to line 154 in Scene_Title. You should see this:
@command_window = Window_Command.new(172, [s1, s2, s3])
Change the 172 to something lower and the box will be less wide. 140 would probably look OK with the default terms.
uh huh. Nice thanks again man. :lol:
Hahahah perfect. Thank you again. It looks nice now i set it to 135. :)
@modern algebra So.....I assume the answer is no to my question of "have you looked at the bug?" lol. Do you have any possible fixes for it? and the s[time] /s[0] issue?
Modern...i beg your forgiveness... ._. i still love your Scripts but i'm too
noob (more likely i'm too idiot -.-) to use it at full strenght... i will like to give my players some option like this:
Would you like to kiss me?
1) yes but bla bla bla
2) Definetly yes...*smuack*
3) mmm let me think...
4) well maybe...
5) isnt to haste?
6) i do not...
7) No hell! i dont want!
i make this example just to be clear as i can. i cant figure out how to give more choice with just one box ._.''
i do use Append_choice at line 770 like this...
QuoteMAX_LINES = 4 # See line 376.
MESSAGE_SPEED = 0 # See line 378.
SKIP_DISABLED = false # See line 380.
APPEND_TEXT = true # See line 381.
APPEND_CHOICE = true # See line 383.
SCROLLING = true # See line 387.
SCROLL_SPEED = 2 # See line 389.
SCROLL_SHOW_ARROWS = true
but cant figure out how to use it...[/s]
Edit: i figured out after wondering if my IQ is lowering by time...was quite simple...just set some choice then other choice without anything between them =_='''' sorry. The rest is indeed a bug i think...or maybe the bug is inside my brain...i need your confirm XD
And
also another THE problem is:
if i set 5 line message or more, then use "choice" and add under them \+{text} in the comment, when i run the game, the last choice didnt appear at all ._.
Expecially if i use the line 777 PARAGRAPH_FORMAT = true
So i must use it on false :(
Sorry to bother you all the time...answer in no hurry, i can wait Master XD
Thanks for your Time and hard work ^^
How are we coming along on the "text cutting off" bug and the possible \s[time] bug....??
Modern Algebra~ I was just wondering if there is a skip message function for ATS? I had been looking all over it but I can't seem to activate it. By skipping like fast forwarding a message? If you press shift it just automatically goes on auto read as long as you're holding it?
Thanks! Good script. It's been working great so far!
I'll be sure to test some more of it's functions out.
Hi modern,
I think I found a bug. Don't think I'm doing something wrong, but the problem is when I have a choices like this:
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fi.imgur.com%2Fw63ii.png&hash=e0355d0ccf1b4468822d792e383453b0f763daaf)
When I choose the "4" option in game, then I got new choicebox window with "5" and "6" (I had both "5" and "6" in first choicebox, so It's weird), and the game crushes after this. Also, in "5" and "6" new choicebox, your help box (from the script) appear, empty. o.o;
Can you help? What's going on?
Edit: Checked the demo, where it works well, and I think I found dependence. It works, when it looks like this:
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fi.imgur.com%2FqkZjU.png&hash=0e6b4e500ddfea829df62024d4019c6717003ab9)
So it must be in subchoices. Weird for me, but could you please check this?
Those are the same pictures.
NM, looks like you edited while I was posting.
To everyone else: I have been swamped all Fall, but hopefully can get around to fixing all the bugs over the Christmas holiday.
Quote from: modern algebra on November 27, 2011, 08:09:45 PM
Those are the same pictures.
NM, looks like you edited while I was posting.
To everyone else: I have been swamped all Fall, but hopefully can get around to fixing all the bugs over the Christmas holiday.
Yes, I pposted the same first, sorry. Would be so cool if you can fix this! :)
Loving the script, however, I have a question, would it be possible to have a script that uses the party leader's picture as the picture for a text box?
To put it in context, I'm working on a horror-ish game, where the player can pick 1 of 4 characters (they only play as one character for a playthrough) and so far, the only work around I can think of, is to duplicate each map 4 times (1 for each character) I'm hoping it'd be possible to have a script to just call the PC portrait to the text box.
I hope my description made sense, if not, let me know and I'll attempt to re-clarify it.
Bug report:
Characters who move and talk at the same time should have the speach bubble follow them instead of statically staying in one place.
Quote from: Fizzly on November 27, 2011, 07:51:37 PM
Hi modern,
I think I found a bug. Don't think I'm doing something wrong, but the problem is when I have a choices like this:
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fi.imgur.com%2Fw63ii.png&hash=e0355d0ccf1b4468822d792e383453b0f763daaf)
When I choose the "4" option in game, then I got new choicebox window with "5" and "6" (I had both "5" and "6" in first choicebox, so It's weird), and the game crushes after this. Also, in "5" and "6" new choicebox, your help box (from the script) appear, empty. o.o;
Can you help? What's going on?
Edit: Checked the demo, where it works well, and I think I found dependence. It works, when it looks like this:
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fi.imgur.com%2FqkZjU.png&hash=0e6b4e500ddfea829df62024d4019c6717003ab9)
So it must be in subchoices. Weird for me, but could you please check this?
I do not seem to have this issue when its not a sub menu....
Neither do I.
Anyway, hopefully I will get around to these bugs at Christmas break. Fizzly, could you please recreate your error in a new project and share it with me?
@Adrien. I know you've mentioned quite a few and thank you for reporting them. I am sorry it has taken so long to get around to fixing them. If it's not too much trouble, could you reply and quote all of the bugs you've found in a single post. I understand that would be a hassle and if you don't want to, then I will go through and hopefully collect them all. I just don't want to miss any and I would appreciate if you did that for me.
Bug 001: - Verified by MA
QuoteI may have found something but I cannot be sure as replication is extremely hard to do - its not a rare occurrence, and its not a script incompatibility. But when I try to replicate it its odd.
The window size is as follows: 308x78 (WxH) the text lines max is set to two both in the script config and in the script you use in the event box to set up a talking npc.
paragraph formatting is on.
Sometimes, if I have more then 2 lines of text, even if i dont, the words get cut off.
"Sally mary had a log, dog on a frog" will some times be "Sally mary had a log, dog on a fr"
I say sometimes because usually talking to the again fixes this issue and the text aligns fine. Is this my issue, or your issue? Again replicating this is really hard as it doesn't ALWAYS happen while sometimes it does
Bug 002:QuoteText bubbles, speach bubbles that sit above a NPC's head should FOLLOW said NPC no matter if that NPC is static or moving about. Some characters (NPC's) walk about as they talk - this speech bubble should follow that character.
Bug 003:QuoteBased on the size of the text window - see Bug 001 - the choices such as a,b,c and d all spear in the same window as the text. How ever if you choose choice a and are presented with yet more choices those choices appear in a window at the bottom of the screen instead of the same text window the original choices were displayed in. - this has not been tested if said user choices Choice A and then the NPC talks and then there are more choices. it has only been tested with said user choosing choice A and then there are immediately more choices.
Bug 004:Quote\s[6]Some Text\s[0] some more text. - the following you just saw should wait 6 frames before drawing each letter of the words "Some text" then reset to normal speed for writing the words "some more text" How ever this is not the case. what happens is that the whole series of words - some text. some more text. take 6 frames to render each letter. Now maybe I am using this wrong but if not then this is a bug.
Note: Let it be known that Bug 001 is very tricky to replicate as it
DOESN'T always happen. Bug 001 was NOT fixed by upgrading paragraph formatted from 1.1 to 2.0
With respect to 4, that's not a bug, just poor design. That code simply adds to and subtracts from the current speed. So, instead of:
\s[6]Some Text\s[0]
It should be:
\s[6]Some Text\s[-6]
Or:
\s[6]Some Text\s[=0]
can you fix it or make it more clear in the documentation so that its \s[6]bla\s[0]?
Well, no, I can't really fix it generally in the VX version. While I do agree it was a poor design choice, the price to change it would be a little steep since, for everyone who was using them correctly, it would force a choice between the current version with all its bugs, or getting the new version and having to go through every single one of their messages to check for where they used it and to change it to whatever new scheme I choose. The benefit of having one small feature slightly more intuitive is outweighed by that cost.
However, if you want to change it for your individual project, you can do the following (I did not test this, but it should work):
1. Go to around line 1144, where you will see:
text.gsub! (/\\</) { "\x08<1>" } # Message speed + 1
text.gsub! (/\\[Ss]\[(=?-?\d+)\]/i) { "\x08<#{$1}>" } # Message speed + x
Change it to:
text.gsub! (/\\</) { "\x08<+1>" } # Message speed + 1
text.gsub! (/\\[Ss]\[([\+-]?\d+)\]/i) { "\x08<#{$1}>" } # Message speed + x
2. Go to around line 3429, where you will see this:
when "\x08" # Speed Change
@text.sub!(/<(=?-?\d+)>/, "")
s = $1.to_s
s.sub! (/(=)/, "")
if $1.nil?
$game_message.message_speed = [$game_message.message_speed + s.to_i, -1].max
else
$game_message.message_speed = [s.to_i, -1].max
end
Change it to:
when "\x08" # Speed Change
@text.sub!(/<([\+-]?\d+)>/, "")
s = $1.to_s
s.sub! (/([\+-])/, "")
if $1.nil?
$game_message.message_speed = [s.to_i, -1].max
else
$game_message.message_speed = [$game_message.message_speed + s.to_i, -1].max
end
What that would do is make it so \s[a] directly sets it to a, while \s[-a] subtracts a from the number of frames it would wait, and \s[+a] adds a to the number of frames. The disadvantage is you will no longer be able to directly set it to -1 (instant), so if you wanted that, you would have to do \s[0]\>
Keep in mind that once I release the bug fixed version, you will need to change this again.
In terms of the current documentation, it is:
# \S[x] - Change the speed the text draws by adding x to the current time
# between drawing letters. Thus, \s[2] is the equivalent of \<\< and
# \s[-3] is the equivalent of \>\>\>. You can also directly set the
# speed by putting an equal sign, so \s[=0] would set the time to one
# frame between drawing letters, and \s[=-1] would set it to instant.
How would you suggest I make it clearer?
Sorry I didn't see the documentation >_>. What you could do is make it backwards compatible so make the new way s[6]bla\s[0] the standard way but still support those using this way...Kind of like jquery how they add and take away features but also make things backwards compatible. Just a thought.
OK, I've been using this script mostly just for the end credits of my game (scrolling text, easy centre text commands along with text effects, etc.), but getting back to the REST of the game, I find that I no longer want scrolling text. So I turned the feature off... made sure that the appending feature was off so that similar text boxes wouldn't be lumped into one, etc. What happens? All 8 faces of a faceset appear in the text box instead of 1. Like, I can get a face under the "Monster" heading to appear normally (just one face, not all 8 Monster faces), but when I use an imported faceset (e.g. $nathanface, attempt to use image 0 from the faceset), all 8 show up (0,1,2,3, then 4,5,6,7 underneath the first four). I KNOW that this script is the cause of the problem since it was working fine before I turned off the scrolling and append functions. Do I HAVE to have scrolling text and append on in order for facesets to display properly? Cause that kinda bugs me... I like having chopped up text sometimes. :/
Thanks in advance to anyone who can help resolve the problem... :)
No, but this script has a feature that allows you to use single face graphics if you name it with an $ at the front, which is what you are doing. Just rename the file and take out the $
Hey it worked! Thanks so much, I guess after I installed the script it began reading it as a single face... I actually wonder how the program didn't do that before, since it should have, but oh well, derp I guess. :P
Thanks again! And thanks for the script too, my credits are looking great ;)
This does not create a choice window, but a regular box of choices. Am I doing something wrong?
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fs7.directupload.net%2Fimages%2F111219%2Fpmdnxr5u.png&hash=68d0e5292dab74d7c106db7c143ef7216ecc2758) (http://www.directupload.net)
Err, lose the plural.
:choice_window, not :choice_windows
I have tried capitalizing, losing the ":", and changing between plural and singular. Nothing, but changing the default option, has allowed me to bring up a choice window.
This doesn't work either.
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fs7.directupload.net%2Fimages%2F111220%2Fq73iyrjx.png&hash=772d1838b70ab6c42c4a77fc871a111bec16a5cb) (http://www.directupload.net)
Sincerely
Hi, can anyone help me with this?
As you can see, this is how normal message with Dim background look:
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fi192.photobucket.com%2Falbums%2Fz113%2Frain_and_a_gentle_love%2FBlog%2Fposition1.png&hash=6bda6e33d20c07d138d2656dae7cd5e06538f001)
However, when I change the Message_Width in the script to a number smaller than 544, the text display with dim background looks something like this
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fi192.photobucket.com%2Falbums%2Fz113%2Frain_and_a_gentle_love%2FBlog%2Fposition2.png&hash=4ad794656fdb3c91a33a0853117536acf1dcb151)
Which, is a pain to the eyes.
So, is there anyway to keep the Message_width at a smaller number, but not altering the size of the Dim Background? The text can still display at the position it is supposed to be when you shrink the message width, something like this.
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fi192.photobucket.com%2Falbums%2Fz113%2Frain_and_a_gentle_love%2FBlog%2Fposition3.png&hash=e83d0ffe443b6eacccb9388395115e26bab1902b)
If you can help me with it, I would be very grateful. Thank you very much/
I dont think so, how ever MA may be able to shed light on that.
Actually what I tried to achieve is what would happen if you adjust message_width in Window_Message instead of the script.
But either way, I guess I would just keep using dimmed picture as background and display text without window OvO
Hello when I use:
ats_all (:fit_window_to_text, true)
ats_all (:scroll_speed, 3)
ats_all (:scroll_autopause, true)
That I took from the Opening Part of the Demo [cause it had Text that fit inside the Ginormous Window]. But it constantly will either cut of Text [even if only "Do you want to Fish here?"], or will make the VX Bank Event System go completely Ape5h17. And by that I mean the other problem where It will enlarge the Window by a ton, and Hide the words to everything. Or make the Actor face in the Game go into hiding.
Cause all I want honestly is to type what I want and have it fit in the window. Regardless of how much I type. Or what's on Screen. Oh and how do I add the Portraits of a Character up properly?
Pics in Order:
VX Bank System [and yes 99% 0f all my heads get chopped off] [1 and 2]
Here's what I mean by Ape 5h17 [3]
This is it acting Normal [4]
This is what Number 3 was supposed to look like I think [It usually goes to normal after you make a choice. Or Re-Read something] [5]
----------------
This is supposed to be a small Intro to Maps [Partially Cut off Face] [6]
This is Again Ape 5h17 Screen where my Face and most of the words get Thrown off. Even though I have fit_window_to_text. [7]
This what I mean by only a short sentence is even affected [8].
----------------
Can I get help please? Cause honestly I love the idea of it and what it shows on the Demo. but I'm getting Messed up Everything when I use it.
OK, well :fit_window_to_text is not the option you seem to want. What that option means is that if you have only short lines, the window will shrink to accomodate. In other words, it changes the window size.
The option it sounds like you are looking for is :paragraph_format, which will fit the text to the window - ie. if the text goes over, it will go to the next line.
For faces, you just need to change the :face_width and :face_height options. If you change them both to 0, then it will always show the whole face. Otherwise, it will cut the image out of the centre of the picture to the values specified.
Have you played through the demo? The guy with purple hair talks about faces, and the guy with red hair explains paragraph formatting.
I have the VX BAnking Evented System from the Site with ATS 3.0 Attached. With the edits [true / false / numbers changed.] That I've done. When you go to the banker and he shows his List of things [Account Details, Deposit, Withdrawl, etc.] Shows the problem. Where the face and window magically expand [or in my game sometimes shrink. Wich I believe now to be fit_text_to_widow] and not show a face / chunks of entire text.
As for Face Height and Width being 0 to show everything regardless of size. Thank you. That will be a godsend for personalizing NPC's and showing Emotions.
Hopefully the Window problem as demonstrated by the Banking Event + ATS 3 is an easy fix. Thank you very much for your time and your wonderful scripts.
MA,
I ran across this error today while playtesting my project:
I have just installed this little snippet, written by GuyvnerBane, which is supposed to play a SE when a critcal strike takes place. The error happens only when this script is active.
class Scene_Battle < Scene_Base
def display_critical(target, obj = nil)
if target.critical
if target.actor?
text = "\c[5]A DEVASTATING STRIKE!\c[0]"
Audio.se_play('AUDIO/SE/IMPACT13', 80, 50)
else
text = "\c[7]A CRITICAL IMPACT!\c[0]"
Audio.se_play('AUDIO/SE/IMPACT13', 80, 50)
end
@message_window.add_instant_text(text)
wait(5)
end
end
end
Here's the part of the script which has the error in your script:
when "\x1b" # Play SE
@text.sub! (/<(.+?),([MS]E)>/, "")
$game_message.play_se ((RPG.const_get ($2.to_s)).new ($1.to_s))
Well, you have to use \\ (not just \) when message codes are set inside double quotations " ".
My guess is that if you change:
text = "\c[5]A DEVASTATING STRIKE!\c[0]"
to:
text = "\\c[5]A DEVASTATING STRIKE!\\c[0]"
in both places that line appears, then that error will go away.
Okay MA. Thanks for the help. It no longer causes the error at the point of attack. Rather, it now causes one at the end of the battle,(This time in one of the default scripts (Message_Window)).
I know this means that it's no longer an error with your script. I appreciate it.
I wanted to add a small feature for myself that can take face_name and face_index as a parameter to show a other faces in the text window and I got that working fine.
Then I started to add feature that could check the current event page if there is suitable information which face to draw.
Nevermind, got it work. But I found a feature. If I draw a NameBox before Face (ie: "\nb[\n[1]]\af[1]Hello!"),
the textwindow doesn't care about the face, but draws the text under it. How do I can fix it?
It's not the big problem, just draw the face before NameBox, but just in case that forgot which one was right order...
when I copy the script and add it in the script windwo above main but below materials like you said and then try and play test my game I get this error message, I am using RPGVX ace, I have not even modified or added any events that use choice boxes
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fimg515.imageshack.us%2Fimg515%2F6760%2Fbrokenscript.png&hash=87d693f59a46e4acb927222835216307bedbdf3f)
This script is for RMVX, not RMVX Ace.
I have written two scripts so far that simulate some of the features in this script, with more planned. You can find them here: http://rmrk.net/index.php/topic,44525.0.html
I was customising your script to my liking and achieved the following results:
(https://rmrk.net/proxy.php?request=http%3A%2F%2Ffc09.deviantart.net%2Ffs70%2Ff%2F2013%2F052%2F8%2F6%2Fmockup_for_a_request_by_fanffx_2-d5vov7f.png&hash=3c6a872225798d6c32bdaccde45488a8d2540517)
The point is that the script now mysteriously 'eats' some of the space at the beginning of the line and I'm not actually sure where in the script should I use (The "Tester" should say "This is an example text.", but the letter "T" mysteriously disappeared). I was looking for some kind of message_offset setting to move the text a bit to the right, but I have not seen anything like that. Could you help me, please? If you need my current setup, then please let me know.
Edit: Actually, I changed FACE_Z parameter to -1 and the display now works correctly. Case closed.
Is there an ace version of this planned?
Hey I have been using this script for months and I've realised something weird that I don't know how to fix..
I wanted to change my game's font, but I'm using the \nb command in my texts and when I change my game font the namebox window won't fix the text.. :( *see attached*
I also attached my 'main' script since it's where I added the 'change font' lines..
I just wonder if it's fixeable, if it's not then it's not too bad I'll just write the names directly in the text, but I kinda like tha nameboxes :-\
Sorry, the problem is that the method for calculating text_size doesn't always work for some fonts.
I am not really supporting this script at the moment so I will likely not release a fix anytime soon, but one way to get around that problem is to just add a few spaces after the name. So, instead of \nb{Magma}, use \nb{Magma }
Also, sorry for missing your post ShinGamix, but some of its features are incorporated into my ATS Series (http://rmrk.net/index.php/topic,44525.0.html) for RMVX Ace.
Oh thanks! ;D
oh yeah and if I want to change the font in each texts do I really have to use a command in each text boxes ?
Umm, no I don't think so. I don't really remember this script that well, but just find the following line in the script and change it there:
MESSAGE_FONTNAME = ["Verdana", "Arial", "Courier New"]
Also, if you want to change it in-game, you can just use the following code in a script command:
fn = []
fn.push("Verdana")
fn.push("Times New Roman")
# etc. for each font name, with the first ones being first in priority and the others only being used if the player does not have the first fonts installed
ats_all(:message_fontname, fn)
Omg this is so much more easier than using \fn and \fs in each textboxes thank you so much! ;D
Nevermind..... I changed it by enabling the appending, it looks good with that too. Anyway, this script is very useful!
Hey I wonder.. is it possible to animate a large portrait faceset like we can with a normal faceset? also, is there a way to play another face animation when the text is done displaying? something like an eye animation.. I'm trying to do something that looks like Kingdom hearts chains of memories on GBA: https://www.youtube.com/watch?v=DoZsx3Iw2Qs
If it Is possible, it would be very helpful!
thanks in advance :)
Does anyone still have these? for some reason the attachments are corrupted :(