RMRK RPG Maker Creation => VX => VX Scripts Database => Topic started by: modern algebra on August 23, 2009, 07:53:13 PM
Title: Full Status CMS 1.0d
Post by: modern algebra on August 23, 2009, 07:53:13 PM
Full Status CMS Version:1.0d Author:modern algebra Date:May 14, 2010
Version History
<Version 1.0d> 05.14.2010 - Fixed the no party members bug that arose in 1.0c. If you already have the patch for that, there is no reason to update.
<Version 1.0c> 10.03.2009 - Fixed a bug that arose in 1.0b where it wouldn't draw the partylist guage if actors had less than full health
<Version 1.0b> 09.28.2009 - Fixes a bug that would occur when a party member has 0 Max MP, as well as increasing the maximum number of states shown from 4 to 6
<Version 1.0> 08.23.2009 - Original Release
Description
This screen shows a full status window in the menu itself. It also allows for command list customization and design customization by giving you the options of which commands and scenes you can call from the menu, and also allows you to call common events from any of these commands. It further allows you to choose which other windows show up in the menu, such as location, gold, steps, etc...
See the screenshots for the design.
Features
Shows all status data in the menu itself, thus eliminating the need for a status scene
Allows you to add commands to the menu fairly easy.
Allows you to run a common event from a command chosen in the menu. It further allows you to require actor selection and save the ID of the actor chosen to a variable for use in the common event
Allows you to add or remove optional windows to the menu, including a gold window, a location window, a playtime window, a steps window, and a window that displays the value of a specified variable
Allows you to set icons to commands in the menu
Allows you to pass scenes even if they have arguments
Allows you to choose command and actor concurrently, if you choose, rather than sequentially
Automatic index finder, so that you do not need to modify the return_scene methods of scenes called from the menu unless more than one command calls the same scene
Screenshots
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fimg7.imageshack.us%2Fimg7%2F4199%2Ffscmsscreen1.png&hash=304fb15d4b5d78e9897a4bac9a351b014800c318) Concurrent command & actor selection.
(https://rmrk.net/proxy.php?request=http%3A%2F%2Fimg38.imageshack.us%2Fimg38%2F8584%2Ffscmsscreen2.png&hash=cf4f9b5b3003a92618914a0563fcd1a95bd7e0ea) Sequential command, then actor selection.
Instructions
Place this script above Main and below any scripts you intend to add to the menu.
For instructions on configuring the script, please see the header and the Editable Regions of the script.
Script
Note that this script REQUIRES Bitmap Addons 1.5 (http://rmrk.net/index.php/topic,32286.0.html) (or higher version).
The code is too long for the post. Please find it attached at the bottom of this post: Full Status CMS 1.0 Script (http://rmrk.net/index.php?action=dlattach;topic=34500.0;attach=20374)
Credit
modern algebra
Thanks
Yanfly - some of the basic configuration is based on how configuraiton is handled in Scene Menu Redux
munkis - for a bug report on the no party members error
Support
Please post in this topic at rmrk.net for swiftest response
Bug Fixes
This is where known bugs are listed along with the fix, until they can be incorporated into the next version of the script.
No currently known bugs.
Known Compatibility Issues
Will not work with other Custom Menu Systems, and may have problems with some menu-altering scripts such as the Integrated Reserve Party.
There may be some scripts that will not work as expected directly upon adding it. If this is the case, please post in this topic and I will post a fix.
Spoiler for ziifee's Animated Icons:
Icons won't animate in the menu status window when using this script with FSCMS. To fix, simply insert the following code into its own slot in the editor below the FSCMS.
class Scene_Menu #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Frame Update #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ alias ma_fscmsziifee_upd_2hl8 update def update (*args) ma_fscmsziifee_upd_2hl8 (*args) # Run Original Method @status_window.update end end
Spoiler for OriginalWij's Row Changer:
The row position of the characters doesn't show up in the menu status window. To fix that, simply insert the following code below both the Row Changer script and the FSCMS in the script editor:
class Window_FSCMS_MenuStatus #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # Draw Basic Information (Mod) #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ alias mamunk_fscmsorc_basinf_5yh2 draw_basic_info def draw_basic_info(x, y) rw = self.contents.text_size(Row_Text).width self.contents.font.color = system_color self.contents.draw_text(Row_X, Row_Y, 100, WLH, Row_Text) self.contents.font.color = ROW::COLOR[2 - @actor.row] self.contents.draw_text(Row_X + rw, Row_Y, 100, WLH, Row[@actor.row]) self.contents.font.color = normal_color mamunk_fscmsorc_basinf_5yh2 (x, y) end end
Note that you will still need to position it appropriately in the Row Changer script itself.
Demo
Note that this script REQUIRES Bitmap Addons 1.5 (http://rmrk.net/index.php/topic,32286.0.html).
See Attached Demo (http://rmrk.net/index.php?action=dlattach;topic=34500.0;attach=20375). It is recommended you retrieve the script from the text document (http://rmrk.net/index.php?action=dlattach;topic=34500.0;attach=18019), rather than the demo, as the demo is setup with a number of extraneous scripts, whereas the text version is clean.
Title: Re: Full Status CMS 1.0
Post by: Cascading Dragon on August 24, 2009, 01:39:16 AM
It looks great but I won't use it. I see problems with some scripts. I am currently using Yanfly's and though his has been around longer, I still have problems with some scipts such as the Advanced Crafting System.
Anyway, maybe in a few versions, I will attempt to use it with my scripts because it really does look great. good job
Title: Re: Full Status CMS 1.0
Post by: modern algebra on August 25, 2009, 03:58:48 AM
I'm glad you like the design :)
Though I'd like to know what problems you see with regard to adding scripts to the menu, so I can hopefully fix it in the future.
It doesn't have any trouble with the ACS, as far as I could tell.
Title: Re: Full Status CMS 1.0
Post by: Cascading Dragon on August 25, 2009, 12:49:39 PM
Well with Yanfly's CMS, I could go into the ACS and back out to the menu, as long as I didnt try and open one of the crafting catigories. It would give me an error if I did. So I removed scripts one by one until it turns out that Yanfly's CMS was causing it. I don't know how but it was. Someday, when I switch from Python to Ruby, I'll find whats causing it and fix it but....
Have you tried ACS with this script? If you have, I probably will switch. I am stilll missing a crafting feature in my game.
Title: Re: Full Status CMS 1.0
Post by: modern algebra on August 26, 2009, 02:32:11 AM
I haven't tested extensively, IE I haven't tested with actually having recipes and stuff; all I tried it with was opening the menu and opening categories, but when there's no recipes in those categories it might function differently.
Speaking without any extensive knowledge of the ACS, I do not believe it will cause errors, primarily because the way the automatic index finder of this script works is it ignores the arguments passed to Scene Menu unless it is specifically instructed not to ignore them. So, I imagine it should work. But there might be something unexpected in the ACS that would cause an error.
Title: Re: Full Status CMS 1.0
Post by: Cascading Dragon on August 26, 2009, 02:49:18 AM
Well I suppose I'll test it and post the results. Let me dig up that old file. lol.
I'll post it tomorrow though, because I need to get up early.
Title: Re: Full Status CMS 1.0
Post by: modern algebra on August 26, 2009, 04:28:00 PM
Alright.
Let me know if it doesn't work and I will look into it.
Title: Re: Full Status CMS 1.0b
Post by: modern algebra on September 28, 2009, 05:53:48 PM
I updated the script to 1.0b now;
It fixes a division by zero bug that occurred whenever a character had 0 MaxMP and also made it so that it will show up to 6 states in the menu status window rather than just 4.
Title: Re: Full Status CMS 1.0
Post by: modern algebra on October 03, 2009, 03:04:37 PM
Updated to version 1.0c. An oversight in Version 1.0b allowed bad things to happen, namely that MP and HP wouldn't show up in the partylist window if it was less than full.
Title: Re: Full Status CMS 1.0
Post by: Roulent on March 02, 2010, 01:12:42 PM
ok. i will try it. :)
Title: Re: Full Status CMS 1.0
Post by: haru on March 10, 2010, 07:19:21 PM
first off very nice script like it alot. ;8
secondly ive got a stat distrabution script (by Lettuce) and i want to add that onto my menu bar instead of the seranade that is alrdy there how would i go about doing this?
Title: Re: Full Status CMS 1.0
Post by: modern algebra on March 10, 2010, 07:45:52 PM
Well, I've tried to put out the instructions as well as I know how in the script, but if you give me some indication of where it confuses you I might be able to clarify. The first thing you need to do is set it up, around here:
CommandID => ["Name", IconID, DisableCondition, ActorSelect?, # SceneName, SceneArguments], # # CommandID : this is the ID that this command is represented by. It is # used in denoting the order in which it appears in the command list # at line 194. This MUST be unique for each command # Name : This is how the command appears in the list. If it is represented # by a method or value included in Vocab, then you can input its # call. Otherwise, write it exactly as it should appear. # IconID : The ID of the icon that will appear next to the name of the # command in the command window. # DisableCondition : if this is put as a string, it will evaluate the # string as code and use it's an integer, then the command will be # disabled if the switch with that ID is ON. If it is a string, it # will evaluate the string as code. This is useful for scripts that # have disable conditions updated through event-inaccessible booleans. # If this is set to -1, it will never be disabled # ActorSelect? : Truth value of whether or not actor should be selected. # If true, the first argument sent to the scene will always be # @target_window.index. If true when the command calls a common event, # then the ID of the actor chosen will be saved to a variable as # designated by FSCMS_CE_ACTOR_VARIABLE_ID at line 78 # SceneName : This is the class name of the scene being called once this # command is selected. You MUST know this data from whatever script you # are trying to add. If you want this command to call a common event, # place the ID of the catalogue you wish to call instead. If there is # more than one command that calls the same scene, then there will # need to be some manual index setting when returning to the menu # from that scene. # SceneArguments : a String of the arguments to be passed to the scene # when it is called. This too must be known from the script you are # trying to add.
I don;t know anything about this Lettuce script, but if you link it to me I could do this part for you. It will be something like:
Here ya go MA, http://rmrk.net/index.php/topic,26799.0.html
ahh thanks :D
And im confused on well just about everything.. :( ive read it over and over again and it just confuses me more if some one could pre right the script again with the stat dist in it so its all ready to go id be very very greatful!!
Title: Re: Full Status CMS 1.0
Post by: modern algebra on March 10, 2010, 08:10:36 PM
Well, the simple thing to do if you don't want to interfere with stuff you might have already set up is to go to around line 167 and see something like this (it may be different, since if you have Serenade you must have taken it from the demo and not the txt):
And you're done. In case you didn't follow it, I put the modified script into a text document and attached it, so you can just copy paste it directly. However, it is the same process everytime you want to add another script to the menu, so I suggest you learn it.
You might also want to go to line 655 of the Stat Distribution script and change:
Title: Re: Full Status CMS 1.0
Post by: haru on March 10, 2010, 08:18:35 PM
thanks alot!! works perfectly now ;8 :o
Title: Re: Full Status CMS 1.0
Post by: haru on March 10, 2010, 08:19:48 PM
if i knew how to add rep to your name i would!
Title: Re: Full Status CMS 1.0d
Post by: IXFURU on September 02, 2010, 11:52:52 PM
Modern, Hey, I'm trying to place the LargeParty Scene accessible from the Full Status CMS. Here's what I've got. But I think there may be some arguments I need to add at the end. I'm just not sure where to look. Can you help me?
Title: Re: Full Status CMS 1.0d
Post by: modern algebra on September 03, 2010, 12:03:21 AM
Well, you'd look in the initialize method of Scene_PartyForm. Is it not working as is? Remember you have to add 6 to the FSCMS_COMMANDLIST array as well.
Title: Re: Full Status CMS 1.0d
Post by: IXFURU on September 03, 2010, 12:31:15 AM
Ah! Right you are! (as always) Thanks. I was leaving it out of the commands list.
Title: Re: Full Status CMS 1.0d
Post by: naizehcnas on September 11, 2010, 01:55:31 AM
is it compatible with large party script?
Title: Re: Full Status CMS 1.0d
Post by: IXFURU on September 11, 2010, 02:33:25 AM
Naiz,
Yes, this script is compatible with Large Party. You just have to set it up. Add to the custom commands list making it call whatever party scene you want. If you read the instructions in the script it will help ya. Good luck.
Title: Re: Full Status CMS 1.0d
Post by: JonFawkes on August 30, 2011, 03:36:56 AM
I've been messing around and I've resized the HP/MP bars, but I can't find the lines that draw the stats (like ATK/DEF/etc) so I can shift them over. I also want a more full picture to show up instead of the normal picture (this isn't priority. I've found a very crude way of doing this).
EDIT: I've got the parameters to line up, but the spacing between the parameter name and the numbers doesn't change, so it still looks weird.
Here's a mock-up of what I want it to look like: (https://rmrk.net/proxy.php?request=http%3A%2F%2Fimg84.imageshack.us%2Fimg84%2F9479%2Fcmsscreen.jpg&hash=44b81ab665628b929e2c81550e97b9dcf775e99c)
I'm still messing with the script myself so if I get an answer before someone replies I'll either post again or delete this post.
Title: Re: Full Status CMS 1.0d
Post by: modern algebra on August 30, 2011, 04:25:54 PM
I'll take a look tomorrow. I'm travelling today though :(
Title: Re: Full Status CMS 1.0d
Post by: JonFawkes on August 30, 2011, 06:29:29 PM
No rush o: I hope you have fun on your travels
EDIT: Got it! It was a matter of searching for "draw_parameter" in another script (in this case Window_Base) and editing that.
So now it's just a matter of finding a way to draw_actor_face better. Here is my version of your script, like I said, very crude.
def draw_actor_face (actor, x, y) super (actor, -210,-215, 530) #(actor, x, 0) end
Here's what it looks like right now (non-mockup) (https://rmrk.net/proxy.php?request=http%3A%2F%2Fimg850.imageshack.us%2Fimg850%2F2466%2Fnewstatus.png&hash=be450f176b1c430ec54ff20b0c584753bd188066)
Title: Re: Full Status CMS 1.0d
Post by: modern algebra on September 06, 2011, 11:03:04 PM
It looks very nice! Good work.
Title: Re: Full Status CMS 1.0d
Post by: JonFawkes on September 24, 2011, 06:31:50 PM
Would it be possible to make the EXP display in a bar like the HP/MP? Perhaps it would be possible to have the Vocab:EXP displayed on the left and "Current EXP/(Current EXP+Next EXP)" on the right, analogous to how Vocab:HP and Current HP are displayed
Title: Re: Full Status CMS 1.0d
Post by: pacdiggity on September 25, 2011, 12:39:44 AM
There are methods in Game_Actor for drawing the text. You will see exp_s at 403, next_exp_s at 409 and next_rest_exp_s and 415. All you have to do is transform those methods (DON'T OVERWRITE THEM, MAKE NEW ONES) to return a number no matter what, so that you can use them in a gauge. I think I pulled it off in PAC MM, so I'll spare you the trouble of making the methods yourself. In Game_Actor, I made two new methods:
#-------------------------------------------------------------------------- # * Refresh #-------------------------------------------------------------------------- def refresh self.contents.clear @item_max = $game_party.members.size for actor in $game_party.members draw_actor_face(actor, 2, actor.index * 96 + 2, 92) x = 104; y = actor.index * 96 + WLH / 2 draw_actor_name(actor, x, y) draw_menu_actor_class(actor, x + 120, y) draw_menu_actor_level(actor, x + 200, y) draw_actor_state(actor, x, y + WLH * 2) draw_actor_hp(actor, x + 120, y + WLH * 1) draw_actor_mp(actor, x + 120, y + WLH * 2) draw_exp_meter(actor, x, y + WLH * 1) end end
Hope I helped!
Title: Re: Full Status CMS 1.0d
Post by: JonFawkes on September 25, 2011, 04:29:54 AM
The script doesn't return any errors, but because I'm using MA's CMS, it doesn't draw it like it would on the normal status screen. That's probably because the script uses its own method to draw the HP/MP bars.
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Draw Basic Information # x, y :coordinates to draw at #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def draw_basic_info (x, y) x, y = 0, 96 draw_actor_hp(@actor, x+123, y, 225) #added x+137, remove the +127 to fix draw_actor_mp(@actor, x+123, y + WLH * 1, 225) #on all three of draw_actor_state(@actor, x+123, y + WLH * 2, 144) #these lines end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Draw Parameters # x, y :coordinates to draw at #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def draw_parameters (x, y) #added w super (120, 104 + 3*WLH) #(0, 104 + 3*WLH) end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Draw Experience Information # x : Draw spot X coordinate # y : Draw spot Y coordinate #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def draw_exp_info(x, y) x = 124 x += [60, Graphics.width - 544].min if Graphics.width > 544 y = 2*WLH s1 = @actor.exp_s s2 = @actor.next_rest_exp_s width = contents.width - x s_next = sprintf(Vocab::ExpNext, Vocab::level) self.contents.font.color = system_color tw1 = contents.text_size (Vocab::ExpTotal).width self.contents.draw_text(x, y, 180, WLH, Vocab::ExpTotal) tw2 = contents.text_size (s_next).width self.contents.draw_text(x, y + WLH, 180, WLH, s_next) self.contents.font.color = normal_color self.contents.draw_text(x + tw1, y, width - tw1, WLH, s1, 2) self.contents.draw_text(x + tw2, y + WLH, width - tw2, WLH, s2, 2) end
Title: Re: Full Status CMS 1.0d
Post by: steventhekid on October 20, 2011, 06:07:55 PM
i love this menu setup but i'm having a little trouble. i'm trying to use the Materia System (FF:VII) Script but the Materia command doesn't show up on the menu. i was wondering if there was a way to edit the 2 scripts so that they will work and i can use the Materia Script. any help would be very appreciated.
Title: Re: Full Status CMS 1.0d
Post by: JonFawkes on October 20, 2011, 11:07:48 PM
It should be in the config part of MA's script (around line 175 I think). If you could post the materia script, it would be easy enough to figure out how to add it to the menu
Title: Re: Full Status CMS 1.0d
Post by: Xabaras on February 19, 2012, 02:32:31 PM
hi! sorry if this post counts like necroposting, but i really love this Menu and i just wanna ask if it is possible to customize it for a single character oriented game (meaning remove the actor window and make equip, skills etc. directly send the player to the respectively main-hero categories without the need of choice)
sorry for my english, i'm in a hurry too so is even more bad than usual :X
Title: Re: Full Status CMS 1.0d
Post by: DoctorTodd on February 22, 2012, 06:36:24 AM
I'll try doing this for you, just give me a little bit but it shouldn't take to long. See next post
Title: Re: Full Status CMS 1.0d
Post by: DoctorTodd on February 22, 2012, 07:24:38 AM
Sorry for double post but here you go. :) Let me know if you receive any errors.
#============================================================================== # Full Status Custom Menu System (One Actor Version) # Version: 1.0d # Author: modern algebra (rmrk.net) Modified by DoctorTodd # Date: May 14, 2010 # Thanks to: Yanfly; some ideas for configuration come from Scene Menu REDUX #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Description: # # This script more or less eliminates the need for a Status scene (at least, # the default one) by showing all of the status data in the menu itself. It # has two modes of operating: either the default way, where you select a # command and you then select an actor, or the new way, where both windows # are active concurrently and when you select an option, it takes the # currently selected actor. You can choose which way you want by changing the # value of FSCMS_BOTH_WINDOWS_ACTIVE, at line 75 # # You can also choose which scenes are accessible through the menu, and # the instructions for this are in EDITABLE REGION B, at line 93. # # This script also allows you to choose optional windows to show up in the # menu. The optional windows you can choose are: # 0 => Gold Window :shows amount of party gold # 1 => PlayTime Window :shows current playtime # 2 => Steps Window :shows number of steps party has taken # 3 => Location Window :shows name of the current map # 4 => Variable Window :shows the value of a designated variable # If you have any ideas for other optional windows, than feel free to contact # me in this script's topic at rmrk.net and I will consider adding them. #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Instructions: # # This script requires Bitmap Addons 1.5. You can find it at the below link: # http://rmrk.net/index.php/topic,32286.0.html # # Place this script below any scripts you intend to add to the menu, but # still above Main. # # Please see Editable Region A at line 62 for instructions on adding scenes # (or common events) to the menu and other configuration options. # # Note that you can alter the composition of the menu or the optional # windows in-game with the following script calls: # # add_custom_command (command_id) # remove_custom_command (command_id) # command_id : ID of the command being added/removed from the commands # add_optional_window (window_id) # remove_optional_window (window_id) # window_id : ID of the window being added/removed from the menu #==============================================================================
module ModernAlgebra #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # ** CONSTANTS #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ #\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ # EDITABLE REGION A #`````````````````````````````````````````````````````````````````````````` # Here is where all configuration data is setup. Please read the comments # adjacent to each comment to discover what it does. #|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| # The y position of the Equip info in the Menu Status. FSCMS_EQUIP_Y = 200 # The truth value of whether or not you should be able to select actor at the # same time as you scroll through commands or not. false => standard # sequential selection. true => concurrent selection FSCMS_BOTH_WINDOWS_ACTIVE = true # For common event commands that require actor selection, this is the ID of # the variable that will hold the chosen actor's ID. FSCMS_CE_ACTOR_VARIABLE_ID = 1 # If you decide to show a Variable optional window, this is the ID of the # variable that will be shown in the menu. FSCMS_VARWINDOW_VARIABLE_ID = 3 # Optional Window Icons. For all icons, # -1 => no icon. >0 => icon index FSCMS_VARWINDOW_VARIABLE_ICON = 80 # Icon of variable window FSCMS_GOLD_ICON = 147 # Icon of gold window FSCMS_PLAYTIME_ICON = 188 # Icon of playtime window FSCMS_STEPS_ICON = 48 # Icon of steps window FSCMS_LOCATION_ICON = 153 # Icon of location window #|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| # END EDITABLE REGION A #////////////////////////////////////////////////////////////////////////// FSCMS_CUSTOM_COMMANDS = { #\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ # EDITABLE REGION B #`````````````````````````````````````````````````````````````````````````` # This is where you can configure the initial composition of the menu; # the order of optional windows, the order of the command list, and setting # up commands that can be included in the command list - all of that is # done here. #|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| # Command Setup # based off of Yanfly's Scene Menu Redux # # Each command can be set up in the following format: # # CommandID => ["Name", IconID, DisableCondition, ActorSelect?, # SceneName, SceneArguments], # # CommandID : this is the ID that this command is represented by. It is # used in denoting the order in which it appears in the command list # at line 194. This MUST be unique for each command # Name : This is how the command appears in the list. If it is represented # by a method or value included in Vocab, then you can input its # call. Otherwise, write it exactly as it should appear. # IconID : The ID of the icon that will appear next to the name of the # command in the command window. # DisableCondition : if this is put as a string, it will evaluate the # string as code and use it's an integer, then the command will be # disabled if the switch with that ID is ON. If it is a string, it # will evaluate the string as code. This is useful for scripts that # have disable conditions updated through event-inaccessible booleans. # If this is set to -1, it will never be disabled # ActorSelect? : Truth value of whether or not actor should be selected. # If true, the first argument sent to the scene will always be # @target_window.index. If true when the command calls a common event, # then the ID of the actor chosen will be saved to a variable as # designated by FSCMS_CE_ACTOR_VARIABLE_ID at line 78 # SceneName : This is the class name of the scene being called once this # command is selected. You MUST know this data from whatever script you # are trying to add. If you want this command to call a common event, # place the ID of the catalogue you wish to call instead. If there is # more than one command that calls the same scene, then there will # need to be some manual index setting when returning to the menu # from that scene. # SceneArguments : a String of the arguments to be passed to the scene # when it is called. This too must be known from the script you are # trying to add. # # Note that the comma after the last square bracket must be excluded if you # are not adding any more commands after it. If you receive a syntax error # after configuring this script, then it is likely a missing comma or bracket # or, as noted, there is a comma after the last command. # Be sure to check your commas before reporting the error. # # EXAMPLE 1: # # 7 => ["Quests", 178, "$game_system.quest_disabled || $game_party.quests.list.empty?", # false, Scene_Quest, "1"], # # This will create a command called Quests that is represented by the # icon with index 178. It does not require actor selection and calls: # $scene = Scene_Quest.new (1) # when selected. The option is disabled if: # $game_system.quest_disabled || $game_party.quests.list.empty? # returns true. It's ID is 7, so when setting up your command list, this # command will show up wherever you set 7 in the list # # EXAMPLE 2: # # 15 => ["Vocab::escape", 134, 5, false, 4] # } # # This will create a command that is called whatever you have labelled # the escape option in the Terms section of the database. It is # represented by the icon with index 134. It is disabled if the switch # with ID 5 is ON; it does not require actor selection, and it calls # the common event with ID 4 0 => ["Vocab::item", 144, "$game_party.members.empty?", false, Scene_Item], 1 => ["Vocab::skill", 128, "$game_party.members.empty?", true, Scene_Skill], 2 => ["Vocab::equip", 51, "$game_party.members.empty?", true, Scene_Equip], 3 => ["Vocab::status", 137, "$game_party.members.empty?", true, Scene_Status], 4 => ["Vocab::save", 133, "$game_system.save_disabled", false, Scene_File, "true, false, false"], 5 => ["Vocab::game_end", 179, -1, false, Scene_End] } # This is where you setup the order that commands appear in the command # window of the menu. List them by their command ID, as it is explained # above. The default commands are: # 0 => Item # 1 => Skill # 2 => Equip # 3 => Status # 4 => Save # 5 => End Game # Those can be changed by you above, if you desire, and you can always add # more commands with whatever IDs you want. Note, however, that those # command IDs must appear in the array below or they will NOT appear in the # initial menu. This array can be modified in-game by the following script # calls: # # add_custom_command (command_id) # remove_custom_command (command_id) # command_id : ID of the command being added/removed from the commands FSCMS_COMMANDLIST = [0, 1, 2, 4, 5] # Which optional windows ought to be created, from bottom to top? # 0 => Gold Window # 1 => PlayTime Window # 2 => Steps Window # 3 => Location Window # 4 => Variable Window # This array can be modified in-game by the following script calls: # # add_optional_window (window_id) # remove_optional_window (window_id) # window_id : ID of the window being added/removed from the menu FSCMS_OPTIONAL_WINDOWS = [0, 1, 3] #|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| # END EDITABLE REGION B #////////////////////////////////////////////////////////////////////////// end
#============================================================================== # ** Game System #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Summary of Changes: # new instance variables - fscms_custom_commands, fscms_optional_windows # aliased method - initialize #==============================================================================
class Game_System #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Public Instance Variables #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ attr_reader :fscms_command_list # Holds current array of commands in menu attr_reader :fscms_optional_windows # Holds current array of optional windows #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Object Initialization #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ alias ma_fscms_intz_cstmcmmns_6hj2 initialize def initialize (*args) # Initialize new variables @fscms_command_list = ModernAlgebra::FSCMS_COMMANDLIST @fscms_optional_windows = ModernAlgebra::FSCMS_OPTIONAL_WINDOWS ma_fscms_intz_cstmcmmns_6hj2 (*args) # Run Original Method end end
#============================================================================== # ** Game Interpreter #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Summary of Changes: # new methods - add_custom_command; add_optional_window; # remove_custom_command; remove_optional_window #==============================================================================
class Game_Interpreter #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Custom Commands Add/Remove # id : Command ID to add or remove #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def add_custom_command (id) $game_system.fscms_command_list.push (id) unless $game_system.fscms_command_list.include? (id) end def remove_custom_command (id) $game_system.fscms_command_list.delete (id) end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Optional Windows Add/Remove # id : window ID to add or remove #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def add_optional_window (id) $game_system.fscms_optional_windows.push (id) unless $game_system.fscms_optional_windows.include? (id) end def remove_optional_window (id) $game_system.fscms_optional_windows.delete (id) end end
#============================================================================== # ** Window_Gold #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Summary of Changes: # overwritten super method - draw_currency_value #==============================================================================
class Window_Gold #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Draw Currency Value # value : amount to draw # x, y : coordinates to draw at # width : amount of room to draw #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def draw_currency_value (value, x, y, width, *args) if ModernAlgebra::FSCMS_GOLD_ICON >= 0 draw_icon (ModernAlgebra::FSCMS_GOLD_ICON, x, y) x += 24 width -= 24 end # Run Original Method super (value, x, y, width, *args) end end
#============================================================================== # ** Window MenuStatus #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # This window shows the status #==============================================================================
class Window_FSCMS_MenuStatus < Window_Status #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Object Initialization #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def initialize (x, y) super (nil) self.x, self.y = x, y self.width, self.height = Graphics.width - x, Graphics.height - y create_contents refresh ($game_party.last_actor_index) end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Refresh # party_actor_id : the index of the actor in the party #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def refresh (party_actor_id = nil) return if party_actor_id == nil @actor = $game_party.members[party_actor_id] return if @actor == nil super () end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Draw Basic Information # x, y :coordinates to draw at #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def draw_basic_info (x, y) x, y = 0, 96 draw_actor_hp(@actor, x, 140, 330) draw_actor_mp(@actor, x, y + WLH * 3, 330) draw_actor_state(@actor, x, 110, 166) end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Draw Parameters # x, y :coordinates to draw at #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def draw_parameters (x, y) super (0, 104 + 5*WLH) end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Draw Experience Information # x : Draw spot X coordinate # y : Draw spot Y coordinate #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def draw_exp_info(x, y) x = 128 x += [60, Graphics.width - 544].min if Graphics.width > 544 y = 2*WLH s1 = @actor.exp_s s2 = @actor.next_rest_exp_s width = contents.width - x s_next = sprintf(Vocab::ExpNext, Vocab::level) self.contents.font.color = system_color tw1 = contents.text_size (Vocab::ExpTotal).width self.contents.draw_text(x, y, 180, WLH, Vocab::ExpTotal) tw2 = contents.text_size (s_next).width self.contents.draw_text(x, y + WLH, 180, WLH, s_next) self.contents.font.color = normal_color self.contents.draw_text(x + tw1, y, width - tw1, WLH, s1, 2) self.contents.draw_text(x + tw2, y + WLH, width - tw2, WLH, s2, 2) end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Draw Equipment # x, y :coordinates to draw at #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def draw_equipments (x, y) x = [contents.width - 188, 188].max super (x, ModernAlgebra::FSCMS_EQUIP_Y) end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Draw Actor Name # actor : the Game_Actor object # x, y :coordinates to draw at #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def draw_actor_name (actor, x, y) x = 128 x += [60, Graphics.width - 544].min if Graphics.width > 544 super (actor, x, 0) draw_actor_level (actor, x, WLH) end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Draw Actor Class # actor : the Game_Actor object # x, y :coordinates to draw at #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def draw_actor_class(actor, x, y) self.contents.font.color = normal_color self.contents.draw_text (contents.width - 108, 0, 108, WLH, actor.class.name, 2) end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Draw Actor Face # actor : the Game_Actor object # x, y :coordinates to draw at #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def draw_actor_face (actor, x, y) super (actor, x, 0) end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Draw Item Name # item : Item (skill, weapon, armor are also possible) # x : draw spot x-coordinate # y : draw spot y-coordinate # enabled : Enabled flag. When false, draw semi-transparently. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def draw_item_name(item, x, y, enabled = true) x -= 32 room = contents.width - x - 24 if item != nil draw_icon(item.icon_index, x, y, enabled) self.contents.font.color = normal_color self.contents.font.color.alpha = enabled ? 255 : 128 self.contents.draw_text(x + 24, y, room, WLH, item.name) end end end
#============================================================================== # ** Window_MenuCommand #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # This window shows commands in the menu # overwritten super methods - draw_item #==============================================================================
#============================================================================== # ** Window Location #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # This window shows the current location #==============================================================================
class Window_FSCMS_Location < Window_Base #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Object Initialization #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def initialize (x, y) height = 32 + WLH y -= height super (x, y, 160, height) x, tw = 0, contents.width if ModernAlgebra::FSCMS_LOCATION_ICON >= 0 draw_icon (ModernAlgebra::FSCMS_LOCATION_ICON, x, 0) x += 24 tw -= 24 end map_name = load_data ("Data/MapInfos.rvdata")[$game_map.map_id].name contents.font.color = normal_color contents.draw_text (x, 0, tw, WLH, map_name, 2) end end
#============================================================================== # ** Window PlayTime #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # This window shows total playtime #==============================================================================
class Window_FSCMS_PlayTime < Window_Base #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Object Initialization #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def initialize (x, y) super (x, y, 160, 32 + WLH) refresh end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Refresh #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def refresh self.contents.clear x, tw = 0, contents.width if ModernAlgebra::FSCMS_PLAYTIME_ICON >= 0 draw_icon (ModernAlgebra::FSCMS_PLAYTIME_ICON, x, 0) x += 24 tw -= 24 end @total_sec = Graphics.frame_count / Graphics.frame_rate hour = @total_sec / 60 / 60 min = @total_sec / 60 % 60 sec = @total_sec % 60 text = sprintf("%02d:%02d:%02d", hour, min, sec) self.contents.font.color = normal_color self.contents.draw_text(x, 0, tw, WLH, text, 2) end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Frame Update #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def update super if Graphics.frame_count / Graphics.frame_rate != @total_sec refresh end end end
#============================================================================== # ** Window StepCount #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # This window shows total number of steps party has taken #==============================================================================
class Window_FSCMS_StepCount < Window_Base #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Object Initialization #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def initialize (x, y) super (x, y, 160, 32 + WLH) x, tw = 0, contents.width # Draw step count icon if ModernAlgebra::FSCMS_STEPS_ICON >= 0 draw_icon (ModernAlgebra::FSCMS_STEPS_ICON, x, 0) x += 24 tw -= 24 end # Draw Step Count contents.font.color = normal_color contents.draw_text (x, 0, tw, WLH, $game_party.steps.to_s, 2) end end
#============================================================================== # ** Window Variable #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # This window shows the value of a specified variable #==============================================================================
class Window_FSCMS_Variable < Window_Base #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Object Initialization #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def initialize (x, y) super (x, y, 160, 32 + WLH) refresh end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Refresh #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def refresh x, tw = 0, contents.width # Draw varibale icon if ModernAlgebra::FSCMS_VARWINDOW_VARIABLE_ICON >= 0 draw_icon (ModernAlgebra::FSCMS_VARWINDOW_VARIABLE_ICON, x, 0) x += 24 tw -= 24 end # Draw Variable text = $game_variables[ModernAlgebra::FSCMS_VARWINDOW_VARIABLE_ID].to_s contents.font.color = normal_color contents.draw_text (x, 0, tw, WLH, text, 2) end end
#============================================================================== # ** Scene_Menu #++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ # Summary of Changes: # completely overwritten class #==============================================================================
class Scene_Menu < Scene_Base #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Object Initialization # menu_index : command cursor's initial position #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def initialize(menu_index = 0, manual = false) if manual @menu_index = menu_index return elsif $scene.is_a? (Scene_Map) @menu_index = 0 return end # Check where it is coming from. $game_system.fscms_command_list.each_index { |i| j = $game_system.fscms_command_list[i] # If coming from this designated scene next if ModernAlgebra::FSCMS_CUSTOM_COMMANDS[j][4].is_a? (Fixnum) if $scene.is_a? (ModernAlgebra::FSCMS_CUSTOM_COMMANDS[j][4]) # Set menu index to its position @menu_index = i return end } @menu_index = 0 end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Start processing #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def start super create_menu_background create_command_window @status_window = Window_FSCMS_MenuStatus.new (160, 0) @windows = [@command_window, @target_window, @status_window] create_optional_windows end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Termination Processing #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def terminate super dispose_menu_background @command_window.dispose @status_window.dispose @optional_windows.each { |window| window.dispose } end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Frame Update #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def update super update_menu_background update_command_selection # Update Playtime if it is shown if $game_system.fscms_optional_windows.include? (1) @optional_windows[$game_system.fscms_optional_windows.index (1)].update end # If not both windows active, than update Target Window unless ModernAlgebra::FSCMS_BOTH_WINDOWS_ACTIVE update_actor_selection return end end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Create Command Window #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def create_command_window @commands, @disabled_commands, @actor_commands = [], [], [] @scene_calls, @scene_arguments = [], [] index = 0 $game_system.fscms_command_list.each { |i| command = ModernAlgebra::FSCMS_CUSTOM_COMMANDS[i] name = command[0][/Vocab/i] != nil ? eval (command[0]) : command[0] @commands.push (name) if command[2].is_a? (String) boolean = eval (command[2]) @disabled_commands.push (index) if boolean else @disabled_commands.push (index) if command[2] > 0 && $game_switches[command[2]] end @actor_commands.push (index) if command[3] @scene_calls.push (command[4]) @scene_arguments.push (command[5]) index += 1 } @command_window = Window_FSCMS_MenuCommand.new(160, @commands) @command_window.index = @menu_index # Disable commands @disabled_commands.each { |index| @command_window.draw_item (index, false) } end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Create Optional Windows #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def create_optional_windows y = Graphics.height @optional_windows = [] $game_system.fscms_optional_windows.each { |i| window = optional_window (i) y -= window.height window.y = y @optional_windows.push (window) } end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Optional Window # index : index of optional window #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def optional_window (index) return case index when 0 then Window_Gold.new (0, 0) when 1 then Window_FSCMS_PlayTime.new (0, 0) when 2 then Window_FSCMS_StepCount.new (0, 0) when 3 then Window_FSCMS_Location.new (0, 0) when 4 then Window_FSCMS_Variable.new (0, 0) end end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Update Command Selection #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def update_command_selection @command_window.update if Input.trigger?(Input::B) Sound.play_cancel $scene = Scene_Map.new elsif Input.trigger?(Input::C) # Return if Disabled if @disabled_commands.include? (@command_window.index) Sound.play_buzzer return end Sound.play_decision # Start Actor Selection if command desires actor selection if @actor_commands.include? (@command_window.index) start_actor_selection else call_next_scene end end end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Start Actor Selection #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def start_actor_selection if ModernAlgebra::FSCMS_BOTH_WINDOWS_ACTIVE select_actor else @command_window.active = false @target_window.active = true if $game_party.last_actor_index < @target_window.item_max @target_window.index = $game_party.last_actor_index else @target_window.index = 0 end end end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * End Actor Selection #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def end_actor_selection return if ModernAlgebra::FSCMS_BOTH_WINDOWS_ACTIVE $game_party.last_actor_index = @target_window.index @command_window.active = true @target_window.active = false @target_window.index = -1 end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Update Actor Selection #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def update_actor_selection if Input.trigger?(Input::B) Sound.play_cancel end_actor_selection elsif Input.trigger?(Input::C) select_actor end end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Select Actor #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def select_actor Sound.play_decision call_next_scene end #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # * Call Next Scene #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ def call_next_scene # Call next scene if @scene_calls[@command_window.index].is_a? (Fixnum) # If actor selected if @actor_commands.include? (@command_window.index) var_id = ModernAlgebra::FSCMS_CE_ACTOR_VARIABLE_ID $game_variables[var_id] = $game_party.members[1].id end # Run Common Event if Scene call is an integer $game_temp.common_event_id = @scene_calls[@command_window.index] $scene = Scene_Map.new else # Call specified scene args = [] if @scene_arguments[@command_window.index] != nil args = eval ("[#{@scene_arguments[@command_window.index]}]") end $scene = @scene_calls[@command_window.index].new (*args) end end end
Title: Re: Full Status CMS 1.0d
Post by: modern algebra on February 22, 2012, 12:44:12 PM
Thanks DoctorTodd!
Title: Re: Full Status CMS 1.0d
Post by: DoctorTodd on February 22, 2012, 08:06:43 PM
No problem :) I just hope he gets back on so he can use it.
Title: Re: Full Status CMS 1.0d
Post by: Baz Wolftail on September 11, 2012, 05:42:14 AM
First off, I wanted to apologize for necroposting. I just came across this script and decided to try and use it, though I am running into a slight snag, and wanted to post to see if it was fixable.
I am currently using extra stat scripts (RES and DEX), as well as extra Equipment options (like having boots, cloaks, more accessories, etc). The extra stats show up for the first character when the menu is first called, but as soon as you switch to a new character, the extra stats disappear, and won't reappear until you exit and re-enter the menu, but still won't be displayed for each person. The extra equipment options don't even appear at all in the status window. Is it possible some how to make them compatible? If not, no worries, I just wanted to ask. Thanks for the help.
Title: Re: Full Status CMS 1.0d
Post by: modern algebra on September 11, 2012, 10:53:58 AM
Upload a demo with all those scripts set up and the error recreated. I will try to find the time to take a look.
Title: Re: Full Status CMS 1.0d
Post by: Baz Wolftail on September 13, 2012, 12:29:32 AM
Okay, thanks so much. Here is a demo with those scripts. Whenever you have time, no rush at all. I look forward to hearing back on a possible solution. Thanks again.
Title: Re: Full Status CMS 1.0d
Post by: Bradoki2 on October 19, 2012, 10:57:05 PM
That was amazing script here. I will see it here. I like it here.