Ryex's Collapsing CMS
Authors: Ryex
Version: 2.51
Type: CMS
Key Term: Custom Menu System
IntroductionAs many on you know I have been working on a fully animated CMS that takes advantage of the collapsed CMS's layout. this is the result. a visually appealing and space efficient Custom Menu System.
Features
- Gradient Bars for Health, SP, and EXP that lag less through entire menu
- Fully Animated
- Map as background
- Every menu is designed to fit in a smaller area so as to show the map and provide a more flowing feel
- Icons in command menu
- Small only visible when you need it actor select menu
- Options menu with BGM/SFX volume change and Plug-In capability
Screenshots
(http://i15.photobucket.com/albums/a400/ryex/screen%20shots/Equipmenu.png)
(http://i15.photobucket.com/albums/a400/ryex/screen%20shots/Equipmenuitems.png)
(http://i15.photobucket.com/albums/a400/ryex/screen%20shots/Itemmenu.png)
(http://i15.photobucket.com/albums/a400/ryex/screen%20shots/Mainmenu-1.png)
(http://i15.photobucket.com/albums/a400/ryex/screen%20shots/Mainmenuwactiorslect.png)
(http://i15.photobucket.com/albums/a400/ryex/screen%20shots/Optionmenu.png)
(http://i15.photobucket.com/albums/a400/ryex/screen%20shots/Optionmenuvolume.png)
(http://i15.photobucket.com/albums/a400/ryex/screen%20shots/Skillmenu.png)
(http://i15.photobucket.com/albums/a400/ryex/screen%20shots/Skillmenuwtarget.png)
(http://i15.photobucket.com/albums/a400/ryex/screen%20shots/Statusmenu.png)
DemoMiedaFire (http://www.mediafire.com/?rdigogdvecn)
Script
http://docs.google.com/View?id=dgb5wg25_7dkg34qhh (http://docs.google.com/View?id=dgb5wg25_7dkg34qhh)
Instructionsin script
CompatibilityThis is a one scene CMS so it only modifies Scene_Menu. In other words it should be compatible with anything but other CMS's
Credits and Thanks
- Ryex
- WcW (Plug-In capability)
Author's NotesUPDATE: The script has reached V2 it now contains a better animation method among other things! like a easier to use configuration for the icons in the menu.
UPDATE2: Option menu now exists!
Enjoy!
I got the Equip Menu finished!!!! :haha:
heres what it looks like!
(http://i15.photobucket.com/albums/a400/ryex/screen%20shots/Equipmenu1.png)
(http://i15.photobucket.com/albums/a400/ryex/screen%20shots/Equipmenu2.png)
Funny Scripting Story:
While I was building this I was greatly concerned because every time I opened the equip menu the frame rate dropped from 38-40 FPS to 6-10 fps! I found out that I was refreshing two windows every frame! so I fixed that problem and life goes on!
Heh, congratulations...
I can't wait to see what quality work will come out of this. :) Keep up the good work, Ryexander. I'll make sure this script gets in the RMXP Database once it's done (And sexy too, not just bug-filled torture D:).
Nice, could you make the equip menu an addon that you can use? I would like to use it instead of the equip screen in the stormtronics CMS.
(Don't get me wrong blizz, it is awesome, but I'd rather have the text than icons)
um I could but the menu as it is right now is inbuilt into my scene menu class instead of a standalone menu. it is also built off the animation system so unless I rebuilt I couldn't release it as stand alone. note that in the final version there will be an option for icons or text. to the effects of weapons or armor.
This is actually really nice Rye. I hope you keep up the good work.
that is a really nice CMS
powersup
Ok I'm Nearing the finish and I know that I am going to put and option menu that changes the font, volume of SF's, and BMG and such. maybe more as time goes on. I know that to option would be controlled by Global Variables variables in my module, but how do I make sure that these Global Variables get saved with the save game file and lorded again when the file is opened.
I can't wait, I tried it out and it is really good!
Maybe even better than Stormtronics CMS, but I never said that
lol the animation wont be as good as Bliz's ST, mostly I didn't create a deceleration effect and I think it lags a lot more,... I think.... but that is what I was aiming for thanks for the comment
CAn any one answer my question?
Check out Scene_Save and Scene_Load. They have write_save_data and read_save_data, respectively. You'll want to alias your variables to the end of both definitions. Hope that was a good explanation. If not, I'll try and explain it better.
^-^ This looks awesome! Great job, and good luck with finishing it. :D
Quote from: shdwlink1993 on January 30, 2009, 11:26:33 pm
Check out Scene_Save and Scene_Load. They have write_save_data and read_save_data, respectively. You'll want to alias your variables to the end of both definitions. Hope that was a good explanation. If not, I'll try and explain it better.
*Slaps head* should of seen that...
Very good job.
It might be better to put them into Game_System though. o.o
hay blizz could you provide an example of the above? I couldn't figure it out...
Example of the above:
class Game_System
attr_accessor :variable_thingy
alias initalias initialize
def initialize
initalias
@variable_thingy = 'something'
end
end
And then you'd use the above variable like this:
if $game_system.variable_thingy == 'something'
$game_system.variable_thingy = 5
Hope this helps!
Just a suggestion, but you should either combine the Gold and Item windows into one, or drop the Gold window down and place it directly right of the item window. Just to see what it looks like.
I'm planing on doing the latter. placing the gold window in the middle of the bottom edge of the screen. it's on the side right now because this is only a demo where I uses the code from my old menu.
oh and thanks Shdw
Got it.. .. ..
Do you have an ETA??
next week perhaps....? thats assuming I have the free time. I've been caught up with school recently. ETA is tentative at this point although all I have to do is write two screens, one of which are very simple.
Alright, alright.. .. ..
I will stay tuned.. .. ..
I take it you are looking forward to this? :)
I'm interested.
Me too.
This is really good, I'll be looking forward to you completing it :)
BETA OF THE SCRIPT IS OUT!! FIRST POST UPDATED!!
Download the Demo it is freaking awesome!!
I actually am in love with it!! Looks very nice.
*power up*
*hugs the extra power*
I agree! *Powers UP*
I haven't tried the new version but the older version was awesome, I'll check it out tomorrow after I sleep.
I've downloaded it but I'll give you feedback later when I have the time. ^-^
I'm sure it'll be awesome anyhow... :D
Is this perhaps a one scene cms?
it dose say that in the first post so I would assume yes :P
Oh :shy:
/me just notices it :shy:
So. those of you who have tested this first version, How do you like it? any suggestions?
I'm now Using Fant's Window move method and everything is looking even better, I was able to eliminate a lot of code in the animation methods too I've also removed a few bugs. this is going to be one sweet system when I'm done.
also...
I WANT FEED BACK ON THE DEMO!!!
your input will be used on the final product!
I gotta say, this is looking good so far. I posted this with haste however just because of this bug:
Bug:
QuoteScript 'Window_Base' line 30: RGSSError occurred.
disposed window
How to replicate: Just go to the Status window and exit all the way.
I'll find more and edit this post. I downloaded from Mediafire, by the way.
Not really a bug:
If I can press fast enough when exiting a menu, I can do some things...Like move choices through the Item Menu before that window actually closes and open the Hero Select windows before I get redirected to the Main Menu. Disable player choice when moving those windows around perhaps?
Question:
When I equip an accessory, I get a print saying 'false'. What does this mean?
Bug:
QuoteScript 'Ryex's Collapsing CMS' line 1463: NoMethodError occurred.
undefined method `changes' for Nil:NilClass
How to replicate:Equip a Ring of Strength, get the false message, and then try to equip another accessory.
thanks for reporting Star.
the print thing is some debugging I was doing and for got to remove.
the error in the equip menu I have already fixed and I'll take a look at the status menu one.
V2 is OUT it's no longer a beta and all bugs have been fixed!
the demos updated too so take a look it even has my new window skin!
NOTE: the volume changer has not been added yet.
This is such a great cms, I especially love the menu that shows just character pictures, I just wish I wasnt so devoted to blizzards cms :P
Quote from: Mightylink on May 12, 2009, 12:16:13 pm
This is such a great cms, I especially love the menu that shows just character pictures, I just wish I wasnt so devoted to blizzards cms :P
Well start geting UNdevoted :P
UPDATE! THE OPTION MENU HAS BEEN ADDED AS WELL AS SOME OTHER THINGS CHECK IT OUT TODAY!! :P
Two things:
1) Unless you're doing it on purpose, $Scene should be $scene.
2) My comments don't make sense anymore, you should delete them from the PlugIn class.
3) $RyexCOLCMS would be easier to read as $RyexCollCMS (just a small suggestion)
And the plugin code would look better like this:
if $RyexCollCMS # If you are using Ryexander's CMS
plugin = PlugIn.new(<name>, <desc>) do
# Your Code Here
end
RyexCFG::PLUGINS.push plugin
end
But that's purely aesthetic. Don't worry about plugin being a variable; that will be fixed in GC as soon as the script is loaded.
Quote from: WcW on May 18, 2009, 08:22:56 pm
Two things:
1) Unless you're doing it on purpose, $Scene should be $scene.
2) My comments don't make sense anymore, you should delete them from the PlugIn class.
3) $RyexCOLCMS would be easier to read as $RyexCollCMS (just a small suggestion)
And the plugin code would look better like this:
if $RyexCollCMS # If you are using Ryexander's CMS
plugin = PlugIn.new(<name>, <desc>) do
# Your Code Here
end
RyexCFG::PLUGINS.push plugin
end
But that's purely aesthetic. Don't worry about plugin being a variable; that will be fixed in GC as soon as the script is loaded.
1)Where are you seeing $Scene?
2)true but I don't feel like editing them out right now I will in the next update (IE. if some one finds a bug or I want to clean up the code.)
3)nitpicky are we? :P
4)nitpicky are we? :P
I like my code pretty.
And you put $Scene in the example config scriptlet (which is right above my code).
Quote from: WcW on May 18, 2009, 08:32:14 pm
And you put $Scene in the example config scriptlet (which is right above my code).
I did? *Looks* stupid me. :P
Ssshhh! Quick, go retcon (http://en.wikipedia.org/wiki/retcon) it before someone notices >:V
Help my thread is being SPAMED!!! :V:
I was telling you to silently update the script with those minor fixes, not spamming.
Well, the DEMO says it's missing the .dll file to run the RGSS, so I can't play that, but from your screenshots I can see that you have done a lot of work since the last time I checked it.
Hmm...I don't like the windowskin, Lol, but that's irrelevant.
I do question your Elemental and Status Resistance sections though. Will they support more afflictions than what you have presented in your screenshots, or will they cause a graphics error of some sort?? Would you be interested in having the menu display icons to show those status and elemental attributes instead of text??
Personally, I would increase the font size of the character's display name by a couple points in all of the windows where it appears. Also, I would give the Hero's name a separate font and add a module to make it easily accessible and easily modified. You could add a module for the Font size too if you do it.
Lastly, I would find some way to merge the item, gold, and command windows together in the original menu display.
Other than those few things, I think this system is gorgeous. Great job Ryexander.
would this work if i had more than 4 members in my party?
technically no as the interface would only work for the first 4 members
would i be able to edit in the script? i have minor scriot experience but im best with windows
you could... but the status bar on the main screen would sill only show the first four actors and changing how it looks wouldn't be a good idea as it would get squished pretty fast I suggest finding another menu because this one is also more complex than other systems and is harder to edit
crap. thanks for advice
This is clearly the BEST collapsing CMS that excists. It looks really sweet and doesn't have all kinds of wierdly-placed windows that clutter the screen. So, clearly the best. I am without ANY type of ANY doubt using this!
thank you for the complements! :haha:
note that I'm going to be updating this script with some new stuff eventually so make sure you check back every month or so
I have to say this is pretty neat :P
I was just wondering Ryex, what part of the script would i need to change if i want to change the Icons? obviously it would be the names of them but where abouts is that, and do i just replace it with the name of the icon i want it to use?..
Thanks in advance.
the config is fairly self explanatory just replace the names in the config with the name of the icon that your want to replace it with, or alternately rename the icons you want in there with the names in the config
Alright, i got it!
Thanks a lot mate, love this CMS, probably the best ive seen while looking around for one, the are a few with nicer designs, but none function as good as this.
Thanks again.
I built this to rival STCMS. I didn't come very close, but I beat most of the competition ;) 8) :ninja:
I've just downloaded the demo, and I've got to admit, I'm
very impressed! Awe-inspiring Ryex, nothing less. I especially love your idea for equipment description in the equip scene. Seriously, why didn't I think of that? *levels up*
EDIT:
Quote from: Ryexander on September 02, 2009, 07:07:18 pm
I built this to rival STCMS. I didn't come very close, but I beat most of the competition ;) 8) :ninja:
You sure did mate, you sure did :)
But you've inspired me to make a CMS of my own! Man, it feels good to be scripting in RGSS again, it's been too long. So stay tuned for my next script. I have some ideas already, heheh...
EDIT2: Oh, I forgot. I think you're better off using the moving window code from STCMS. Mine is an alpha version because it's not really optimized. Why don't you code one yourself? It's easy and I think you'll agree.
Quote from: Fantasist on September 05, 2009, 03:01:21 am
EDIT2: Oh, I forgot. I think you're better off using the moving window code from STCMS. Mine is an alpha version because it's not really optimized. Why don't you code one yourself? It's easy and I think you'll agree.
your code may be an alpha but every time I tried to come up with I different way to move the windows I failed. besides I've yet to find any bugs in your method.
it is conceptually sound. besides I've looked at STCMS and the way Blizzard moves his windows is just different, he approaches the problem from a different angle, instead of making a method tha can move a window from any were to ant were he made a one way ticket system.
I'm going to make V3.0 soon I'm going to complete the status screen, add the ability to see status effects and elaments as icons, and edit the status bar in the main menu a bit.
also... have you checked out the code in Window_Advanced? I made so slight modifications
Yes, I unified moving in one method because it's a repeating procedure.
I have to admit this is one of my top picks for a CMS. My only quem would be the HP/SP/EXP bars.
Never been a fan of bars that have text over them, cause it makes it hard to tell if your full or how low you are. I've been using an edited version of Cogwheel's bar script to add my HP and such barsm (edited so the bars are right below the text rather then behind it), even bars for the stats.
Would there be away to remove the bars from this so I can use Cogwheel's?
dunno for sure but if you put Cogweels script underneath this 1 the bars get replace. (well normally that is)
He'll probably have to comment out the original bar code as well.
tried to edit the script, fount out 2 things.
first of all cogweels bars needs to be placed above this menu script to prevent crashes.
second is that by commenting out the original bar code will remove the bars in total.
will keep testing
edit:
got the bars working.
need to remove the double text and than will post solution here
edit 2:
replace line 38 till 267 with this:
module RyexCFG
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
MENU_ICONS = []
MENU_ICONS[1] = "Item" #Icon name for the Item option on the main menu
MENU_ICONS[2] = "Skill" #Icon name for the Skill option on the main menu
MENU_ICONS[3] = "Equip"#Icon name for the Equip option on the main menu
MENU_ICONS[4] = "050-Skill07" #Icon name for the Status option on the main menu
MENU_ICONS[5] = "Save" #Icon name for the Save option on the main menu
MENU_ICONS[6] = "Option"
MENU_ICONS[7] = "Door" #Icon name for the Exit option on the main menu
DEFALT_BGM_VOULME = 100 #The defalt voulume for back ground music
DEFALT_SFX_VOULME = 100 #The defalt voulume for sound effects
#--------------------------------
# * Custom scenes
# If for some reason you want to use an item, equip, skill, status, save,
# exit, or option screen fallow the instrutions below.
#--------------------------------
CUSTOM_ITEM_SCENE = nil
=begin # if you want to use deleat this line
CUSTOM_ITEM_SCENE = Proc.new do
$scene = <insert scene class name here>.new # complete this line
end
=end # and deleate this line
CUSTOM_SKILL_SCENE = nil
=begin # if you want to use deleat this line
CUSTOM_SKILL_SCENE = Proc.new do
$scene = <insert scene class name here>.new # complete this line
end
=end # and deleate this line
CUSTOM_EQUIP_SCENE = nil
=begin # if you want to use deleat this line
CUSTOM_EQUIP_SCENE = Proc.new do
$scene = <insert scene class name here>.new # complete this line
end
=end # and deleate this line
CUSTOM_STATUS_SCENE = nil
=begin # if you want to use deleat this line
CUSTOM_STATUS_SCENE = Proc.new do
$scene = <insert scene class name here>.new # complete this line
end
=end # and deleate this line
CUSTOM_SAVE_SCENE = nil
=begin # if you want to use deleat this line
CUSTOM_SAVE_SCENE = Proc.new do
$scene = <insert scene class name here>.new # complete this line
end
=end # and deleate this line
CUSTOM_OPTION_SCENE = nil
=begin # if you want to use deleat this line
CUSTOM_OPTION_SCENE = Proc.new do
$scene = <insert scene class name here>.new # complete this line
end
=end # and deleate this line
CUSTOM_EXIT_SCENE = nil
=begin # if you want to use deleat this line
CUSTOM_EXIT_SCENE = Proc.new do
$scene = <insert scene class name here>.new # complete this line
end
=end # and deleate this line
#CUSTOM BAR EDIT
CUSTOM_BARS = true #set to true if you want to use custom bars
CUSTOM_BARS_XHP_OFFSET = 0 #The X offset of the custom HP bars
CUSTOM_BARS_YHP_OFFSET = -10 #The Y offset of the Custom HP bars
CUSTOM_BARS_WHP_OFFSET = 0 # The W offset of the Custom HP bars
CUSTOM_BARS_XSP_OFFSET = 0 #The X offset of the custom SP bars
CUSTOM_BARS_YSP_OFFSET = -10 #The Y offset of the Custom SP Bars
CUSTOM_BARS_WSP_OFFSET = 0 # The W offset of the Custom SP Bars
CUSTOM_BARS_XEXP_OFFSET = 0 #The X offset of the custom EXP bars
CUSTOM_BARS_YEXP_OFFSET = -10 #The Y offset of the Custom EXP Bars
CUSTOM_BARS_WEXP_OFFSET = 0 # The W offset of the Custom EXP Bars
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
PLUGINS = []
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Do you have a scene or menu that you want to link to the option menu?
# A plug-in perhaps? To add an option on the option menu that
# will call your scene simply use this format.
=begin
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if $RyexCOLCMS
desc = '<insert description of the plugin to be displayed in the help window here>'
RyexCFG::PLUGINS.push(RyexCMS::Plugin.new('<name of plugin>', desc) do
$Scene = <scene you want to call>.new
end
) #don't forget this line
end
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
=end
# its that simple
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
class PlugIn
# read/write-able
attr_accessor :name, :action, :description
def initialize( name = '', desc = '')
# @name is the name which will show up in the menu,
# @reqs is the Proc that will be called to see if the option should
# be activated (optional),
# and @action is the proc that will be called when
# the option is selected.
@name, @action, @description = name, Proc.new, desc
end
def call
@action.call
end
end
end
#==============================================================================
# New methods added to Bitmap
#==============================================================================
class Bitmap
def draw_bar_ryex(x, y, w, h, p, c)
gray = Color.new(100, 100, 100)
fill_rect(x, y, w, h, Color.new(0, 0, 0))
for i in 0...(h / 2 - 1)
gr = gray.red * i / (h / 2 - 1)
gg = gray.green * i / (h / 2 - 1)
gb = gray.blue * i / (h / 2 - 1)
fill_rect(x + 1, y + i + 1, w - 2, 1, Color.new(gr, gg, gb))
end
fill_rect(x + 1, y + (h / 2), w - 2, 2, gray)
for i in 0...(h / 2 - 1)
gr = gray.red * i / (h / 2 - 1)
gg = gray.green * i / (h / 2 - 1)
gb = gray.blue * i / (h / 2 - 1)
fill_rect(x + 1, y + h - i - 1, w - 2, 1, Color.new(gr, gg, gb))
end
for i in 0...(h / 2 - 1)
r = c.red * i / (h / 2 - 1)
g = c.green * i / (h / 2 - 1)
b = c.blue * i / (h / 2 - 1)
fill_rect(x + 1, y + i + 1, p * (w - 2), 1, Color.new(r, g, b))
end
fill_rect(x + 1, y + (h / 2), p * (w - 2), 2, c)
for i in 0...(h / 2 - 1)
r = c.red * i / (h / 2 - 1)
g = c.green * i / (h / 2 - 1)
b = c.blue * i / (h / 2 - 1)
fill_rect(x + 1, y + h - i - 1, p * (w - 2), 1, Color.new(r, g, b))
end
end
end
#==============================================================================
# New methods added to Window_Base
#==============================================================================
class Window_Base < Window
#----------------------------------------------------------------------------
# * Draws a gradiant bar fo the actor's HP
#----------------------------------------------------------------------------
def draw_actor_hp_bar_ryex(x, y, m, actor)
h = 12
p = actor.hp.to_f / actor.maxhp
c = Color.new(255, 0, 0)
if RyexCFG::CUSTOM_BARS
xo = RyexCFG::CUSTOM_BARS_XHP_OFFSET
yo = RyexCFG::CUSTOM_BARS_YHP_OFFSET
mo = RyexCFG::CUSTOM_BARS_WHP_OFFSET
draw_actor_hp(actor, x+xo, y+yo, m+mo)
else
self.contents.draw_bar_ryex(x, y, m, h, p, c)
end
end
#----------------------------------------------------------------------------
# * Draws a gradiant bar fo the actor's SP
#----------------------------------------------------------------------------
def draw_actor_sp_bar_ryex(x, y, m, actor)
h = 12
p = actor.sp.to_f / actor.maxsp
c = Color.new(0, 0, 255)
if RyexCFG::CUSTOM_BARS
xo = RyexCFG::CUSTOM_BARS_XSP_OFFSET
yo = RyexCFG::CUSTOM_BARS_YSP_OFFSET
mo = RyexCFG::CUSTOM_BARS_WSP_OFFSET
draw_actor_sp(actor, x+xo, y+yo, m+mo)
else
self.contents.draw_bar_ryex(x, y, m, h, p, c)
end
end
#----------------------------------------------------------------------------
# * Draws a gradiant bar fo the actor's EXP
#----------------------------------------------------------------------------
def draw_actor_exp_bar_ryex(x, y, m, actor)
h = 12
p = (actor.next_exp != 0 ? actor.now_exp.to_f / actor.next_exp : 1)
c = Color.new(255, 255, 0)
if RyexCFG::CUSTOM_BARS
xo = RyexCFG::CUSTOM_BARS_XEXP_OFFSET
yo = RyexCFG::CUSTOM_BARS_YEXP_OFFSET
mo = RyexCFG::CUSTOM_BARS_WEXP_OFFSET
draw_actor_exp(actor, x+xo, y+yo, m+mo)
else
self.contents.draw_bar_ryex(x, y, m, h, p, c)
end
end
#--------------------------------------------------------------------------
# * Draw HP
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# width : draw spot width
#--------------------------------------------------------------------------
def draw_actor_hp_Ryex(actor, x, y, width = 144)
if not RyexCFG::CUSTOM_BARS
# Draw "HP" text string
self.contents.font.color = system_color
self.contents.draw_text(x, y, 32, 32, $data_system.words.hp)
hp_x = x + width - 108
# Draw HP
self.contents.font.color = actor.hp == 0 ? knockout_color :
actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
self.contents.draw_text(hp_x + 60, y, 48, 32, actor.hp.to_s, 2)
end
end
#--------------------------------------------------------------------------
# * Draw SP
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# width : draw spot width
#--------------------------------------------------------------------------
def draw_actor_sp_Ryex(actor, x, y, width = 144)
if not RyexCFG::CUSTOM_BARS
# Draw "SP" text string
self.contents.font.color = system_color
self.contents.draw_text(x, y, 32, 32, $data_system.words.sp)
sp_x = x + width - 108
# Draw SP
self.contents.font.color = actor.sp == 0 ? knockout_color :
actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
self.contents.draw_text(sp_x + 60, y, 48, 32, actor.sp.to_s, 2)
end
end
#--------------------------------------------------------------------------
# * Get Up Text Color
#--------------------------------------------------------------------------
def up_color
return Color.new(0, 255, 0 )
end
#--------------------------------------------------------------------------
# * Get Down Text Color
#--------------------------------------------------------------------------
def down_color
return Color.new(255, 0, 0)
end
alias draw_actor_parameter_col_cms_later draw_actor_parameter
def draw_actor_parameter(actor, x, y, type)
if type == 7
self.contents.font.color = system_color
self.contents.draw_text(x, y, 120, 32, 'Evasion')
self.contents.font.color = normal_color
self.contents.draw_text(x + 120, y, 36, 32, actor.eva.to_s, 2)
else
draw_actor_parameter_col_cms_later(actor, x, y, type)
end
end
end
that will remove the Bars from this CMS and will replace them with cogweel (ore your custom)
to put it on/off edit line 101: CUSTOM_BARS = true
the lines below can be used to put the bars to the right position (they are correct now for Cogweel)
Thanks Jack! That works just fine :)
However one little thing, when you pull down the first menu that shows the partys health at the top, the text still over laps, and I noticed that the 4th party member, the exp text gets cut off. Like Ev 1 12/[rest is cut off]
While it's normally not hard for me to poke a script, find where the text size is controled or text is drawn and change the size/placement/yada myself. I can't seem to find it in this. Where I thought it was (around line 247 and down) nothing I do seems to effect anything, so I wonder if it's controled elsewhere that I am overlooking or if it's somewhere else and what I'm poking is to something else :P
when you turn this edit on it won't be using the health etc of the menu script
its only putting down the bars from cogweels script
so if you want to change size etc you need to do it in cogweels script.
anyway. if you gief me your modified cogweel script i can take a look at it.
Nono I don't mean the bar size, I mean the text side to the CMS, when you first pull down the menu the text for HP/SP/EV along with their values are large and over lap the bars and the text for the 4th party member get cut off cause it's to fare to the right.
I want to know where you control the text size at in the CMS.
like i sayed... its no longer controled by the CMS. its just a link from cogweel.
if you can gief me the cogweel script i can see what i can do
Here is btw an edit with the font size. Same lines to be replace (38 till 267)
module RyexCFG
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# START Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
MENU_ICONS = []
MENU_ICONS[1] = "Item" #Icon name for the Item option on the main menu
MENU_ICONS[2] = "Skill" #Icon name for the Skill option on the main menu
MENU_ICONS[3] = "Equip"#Icon name for the Equip option on the main menu
MENU_ICONS[4] = "050-Skill07" #Icon name for the Status option on the main menu
MENU_ICONS[5] = "Save" #Icon name for the Save option on the main menu
MENU_ICONS[6] = "Option"
MENU_ICONS[7] = "Door" #Icon name for the Exit option on the main menu
DEFALT_BGM_VOULME = 100 #The defalt voulume for back ground music
DEFALT_SFX_VOULME = 100 #The defalt voulume for sound effects
#--------------------------------
# * Custom scenes
# If for some reason you want to use an item, equip, skill, status, save,
# exit, or option screen fallow the instrutions below.
#--------------------------------
CUSTOM_ITEM_SCENE = nil
=begin # if you want to use deleat this line
CUSTOM_ITEM_SCENE = Proc.new do
$scene = <insert scene class name here>.new # complete this line
end
=end # and deleate this line
CUSTOM_SKILL_SCENE = nil
=begin # if you want to use deleat this line
CUSTOM_SKILL_SCENE = Proc.new do
$scene = <insert scene class name here>.new # complete this line
end
=end # and deleate this line
CUSTOM_EQUIP_SCENE = nil
=begin # if you want to use deleat this line
CUSTOM_EQUIP_SCENE = Proc.new do
$scene = <insert scene class name here>.new # complete this line
end
=end # and deleate this line
CUSTOM_STATUS_SCENE = nil
=begin # if you want to use deleat this line
CUSTOM_STATUS_SCENE = Proc.new do
$scene = <insert scene class name here>.new # complete this line
end
=end # and deleate this line
CUSTOM_SAVE_SCENE = nil
=begin # if you want to use deleat this line
CUSTOM_SAVE_SCENE = Proc.new do
$scene = <insert scene class name here>.new # complete this line
end
=end # and deleate this line
CUSTOM_OPTION_SCENE = nil
=begin # if you want to use deleat this line
CUSTOM_OPTION_SCENE = Proc.new do
$scene = <insert scene class name here>.new # complete this line
end
=end # and deleate this line
CUSTOM_EXIT_SCENE = nil
=begin # if you want to use deleat this line
CUSTOM_EXIT_SCENE = Proc.new do
$scene = <insert scene class name here>.new # complete this line
end
=end # and deleate this line
#CUSTOM BAR EDIT
CUSTOM_BARS = true #set to true if you want to use custom bars
CUSTOM_BARS_XHP_OFFSET = 0 #The X offset of the custom HP bars
CUSTOM_BARS_YHP_OFFSET = -10 #The Y offset of the Custom HP bars
CUSTOM_BARS_WHP_OFFSET = 0 # The W offset of the Custom HP bars
CUSTOM_BARS_HP_fontsize = 24 #Change the font size of the HP text
CUSTOM_BARS_XSP_OFFSET = 0 #The X offset of the custom SP bars
CUSTOM_BARS_YSP_OFFSET = -10 #The Y offset of the Custom SP Bars
CUSTOM_BARS_WSP_OFFSET = 0 # The W offset of the Custom SP Bars
CUSTOM_BARS_SP_fontsize = 24 #Change the font size of the SP text
CUSTOM_BARS_XEXP_OFFSET = 0 #The X offset of the custom EXP bars
CUSTOM_BARS_YEXP_OFFSET = -10 #The Y offset of the Custom EXP Bars
CUSTOM_BARS_WEXP_OFFSET = 0 # The W offset of the Custom EXP Bars
CUSTOM_BARS_EXP_fontsize = 24 #Change the font size of the EXP text
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
# END Configuration
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
PLUGINS = []
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Do you have a scene or menu that you want to link to the option menu?
# A plug-in perhaps? To add an option on the option menu that
# will call your scene simply use this format.
=begin
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if $RyexCOLCMS
desc = '<insert description of the plugin to be displayed in the help window here>'
RyexCFG::PLUGINS.push(RyexCMS::Plugin.new('<name of plugin>', desc) do
$Scene = <scene you want to call>.new
end
) #don't forget this line
end
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
=end
# its that simple
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
class PlugIn
# read/write-able
attr_accessor :name, :action, :description
def initialize( name = '', desc = '')
# @name is the name which will show up in the menu,
# @reqs is the Proc that will be called to see if the option should
# be activated (optional),
# and @action is the proc that will be called when
# the option is selected.
@name, @action, @description = name, Proc.new, desc
end
def call
@action.call
end
end
end
#==============================================================================
# New methods added to Bitmap
#==============================================================================
class Bitmap
def draw_bar_ryex(x, y, w, h, p, c)
gray = Color.new(100, 100, 100)
fill_rect(x, y, w, h, Color.new(0, 0, 0))
for i in 0...(h / 2 - 1)
gr = gray.red * i / (h / 2 - 1)
gg = gray.green * i / (h / 2 - 1)
gb = gray.blue * i / (h / 2 - 1)
fill_rect(x + 1, y + i + 1, w - 2, 1, Color.new(gr, gg, gb))
end
fill_rect(x + 1, y + (h / 2), w - 2, 2, gray)
for i in 0...(h / 2 - 1)
gr = gray.red * i / (h / 2 - 1)
gg = gray.green * i / (h / 2 - 1)
gb = gray.blue * i / (h / 2 - 1)
fill_rect(x + 1, y + h - i - 1, w - 2, 1, Color.new(gr, gg, gb))
end
for i in 0...(h / 2 - 1)
r = c.red * i / (h / 2 - 1)
g = c.green * i / (h / 2 - 1)
b = c.blue * i / (h / 2 - 1)
fill_rect(x + 1, y + i + 1, p * (w - 2), 1, Color.new(r, g, b))
end
fill_rect(x + 1, y + (h / 2), p * (w - 2), 2, c)
for i in 0...(h / 2 - 1)
r = c.red * i / (h / 2 - 1)
g = c.green * i / (h / 2 - 1)
b = c.blue * i / (h / 2 - 1)
fill_rect(x + 1, y + h - i - 1, p * (w - 2), 1, Color.new(r, g, b))
end
end
end
#==============================================================================
# New methods added to Window_Base
#==============================================================================
class Window_Base < Window
#----------------------------------------------------------------------------
# * Draws a gradiant bar fo the actor's HP
#----------------------------------------------------------------------------
def draw_actor_hp_bar_ryex(x, y, m, actor)
h = 12
p = actor.hp.to_f / actor.maxhp
c = Color.new(255, 0, 0)
if RyexCFG::CUSTOM_BARS
self.contents.font.size = RyexCFG::CUSTOM_BARS_HP_fontsize
xo = RyexCFG::CUSTOM_BARS_XHP_OFFSET
yo = RyexCFG::CUSTOM_BARS_YHP_OFFSET
mo = RyexCFG::CUSTOM_BARS_WHP_OFFSET
draw_actor_hp(actor, x+xo, y+yo, m+mo)
else
self.contents.draw_bar_ryex(x, y, m, h, p, c)
end
end
#----------------------------------------------------------------------------
# * Draws a gradiant bar fo the actor's SP
#----------------------------------------------------------------------------
def draw_actor_sp_bar_ryex(x, y, m, actor)
h = 12
p = actor.sp.to_f / actor.maxsp
c = Color.new(0, 0, 255)
if RyexCFG::CUSTOM_BARS
self.contents.font.size = RyexCFG::CUSTOM_BARS_SP_fontsize
xo = RyexCFG::CUSTOM_BARS_XSP_OFFSET
yo = RyexCFG::CUSTOM_BARS_YSP_OFFSET
mo = RyexCFG::CUSTOM_BARS_WSP_OFFSET
draw_actor_sp(actor, x+xo, y+yo, m+mo)
else
self.contents.draw_bar_ryex(x, y, m, h, p, c)
end
end
#----------------------------------------------------------------------------
# * Draws a gradiant bar fo the actor's EXP
#----------------------------------------------------------------------------
def draw_actor_exp_bar_ryex(x, y, m, actor)
h = 12
p = (actor.next_exp != 0 ? actor.now_exp.to_f / actor.next_exp : 1)
c = Color.new(255, 255, 0)
if RyexCFG::CUSTOM_BARS
self.contents.font.size = RyexCFG::CUSTOM_BARS_EXP_fontsize
xo = RyexCFG::CUSTOM_BARS_XEXP_OFFSET
yo = RyexCFG::CUSTOM_BARS_YEXP_OFFSET
mo = RyexCFG::CUSTOM_BARS_WEXP_OFFSET
draw_actor_exp(actor, x+xo, y+yo, m+mo)
else
self.contents.draw_bar_ryex(x, y, m, h, p, c)
end
end
#--------------------------------------------------------------------------
# * Draw HP
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# width : draw spot width
#--------------------------------------------------------------------------
def draw_actor_hp_Ryex(actor, x, y, width = 144)
if not RyexCFG::CUSTOM_BARS
# Draw "HP" text string
self.contents.font.color = system_color
self.contents.draw_text(x, y, 32, 32, $data_system.words.hp)
hp_x = x + width - 108
# Draw HP
self.contents.font.color = actor.hp == 0 ? knockout_color :
actor.hp <= actor.maxhp / 4 ? crisis_color : normal_color
self.contents.draw_text(hp_x + 60, y, 48, 32, actor.hp.to_s, 2)
end
end
#--------------------------------------------------------------------------
# * Draw SP
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# width : draw spot width
#--------------------------------------------------------------------------
def draw_actor_sp_Ryex(actor, x, y, width = 144)
if not RyexCFG::CUSTOM_BARS
# Draw "SP" text string
self.contents.font.color = system_color
self.contents.draw_text(x, y, 32, 32, $data_system.words.sp)
sp_x = x + width - 108
# Draw SP
self.contents.font.color = actor.sp == 0 ? knockout_color :
actor.sp <= actor.maxsp / 4 ? crisis_color : normal_color
self.contents.draw_text(sp_x + 60, y, 48, 32, actor.sp.to_s, 2)
end
end
#--------------------------------------------------------------------------
# * Get Up Text Color
#--------------------------------------------------------------------------
def up_color
return Color.new(0, 255, 0 )
end
#--------------------------------------------------------------------------
# * Get Down Text Color
#--------------------------------------------------------------------------
def down_color
return Color.new(255, 0, 0)
end
alias draw_actor_parameter_col_cms_later draw_actor_parameter
def draw_actor_parameter(actor, x, y, type)
if type == 7
self.contents.font.color = system_color
self.contents.draw_text(x, y, 120, 32, 'Evasion')
self.contents.font.color = normal_color
self.contents.draw_text(x + 120, y, 36, 32, actor.eva.to_s, 2)
else
draw_actor_parameter_col_cms_later(actor, x, y, type)
end
end
end
also found some solutions to move the text etc. but before i do make an edit i want to know something.
in the menu. you want to have the exp numbers seen on top of the exp bar or don't
the reason why the exp text is not fitting atm is because in the default Ryex's Collapsing CMS the EXP is never drawn. (4th pic in the first post, no exp text)
there is simple no space to put big exp numbers.
Here is the cogweel script, only thing I changed would be how tall the HP/SP/EXP bars are and lower them so they are directly below the text.
But yeah I don't want the exp/hp/sp text or such over any of the bars. It just makes it to hard to see at times where the bar is when text is blocking it. Thats why I edited the below script to move the bars below the text.
#==============================================================================
# ** COGWHEEL Plug 'n' Play Menu Bars (based on Syvkal's revisions)
#-------------------------------------------------------------------------------
# by DerVVulfman
# Version 1.1
# 06-28-06
#------------------------------------------------------------------------------
# This is a revision of Cogwheel's famous bargraph system, now set as an inser-
# table script to display bargraphs behind values in the menus.
#
# To prevent conflict with Cogwheel's RTAB system, two key definitions have been
# renamed: "gauge_rect" to "cw_gauge" & "gradation_rect" to "cw_grad_rect."
#
#
# Affected Systems: Main Menu
# Skill Menu
# Status Menu
# Hero Select Menu (for Items & Skills)
# Equipment Menu
# BattleStatus Menu
#
# The system uses a series of CONSTANTS that can be edited here. They control
# the basic gauge colors and the manner the gauge is filled:
# Gauge Border Colors
COG_COLOR1 = Color.new(0, 0, 0, 192) # Outer Border
COG_COLOR2 = Color.new(255, 255, 192, 192) # Inner Border
# Gauge Empty filler
COG_COLOR3 = Color.new(0, 0, 0, 192) # Half of Inner Shading
COG_COLOR4 = Color.new(64, 0, 0, 192) # Half of Inner Shading
# Alignment
COG_ALIGN1 = 1 # Type 1: (0: Left / 1: Center / 2: Right Justify)
COG_ALIGN2 = 0 # Type 2: (0: Upper / 1: Central / 2: Lower)
COG_ALIGN3 = 0 # FILL ALIGNMENT (0: Left Justify / 1: Right Justify)
# Gauge Settings
COG_GRADE1 = 1 # EMPTY gauge (0: Side / 1: Vertical / 2: Slanted)
COG_GRADE2 = 0 # FILLER gauge (0: Side / 1: Vertical / 2: Slanted)
#==============================================================================
# ** Game_Actor
#------------------------------------------------------------------------------
# This class handles the actor. It's used within the Game_Actors class
# ($game_actors) and refers to the Game_Party class ($game_party).
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# * Get EXP - numeric for calculations
#--------------------------------------------------------------------------
def now_exp
return @exp - @exp_list[@level]
end
#--------------------------------------------------------------------------
# * Get Next Level EXP - numeric for calculations
#--------------------------------------------------------------------------
def next_exp
return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0
end
#--------------------------------------------------------------------------
# * End of Class
#--------------------------------------------------------------------------
end
#==============================================================================
# ** Window_Base
#------------------------------------------------------------------------------
# This class is for all in-game windows.
#==============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# * Draw EXP w/ Bars
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
#--------------------------------------------------------------------------
alias draw_actor_exp_original draw_actor_exp
def draw_actor_exp(actor, x, y, width = 150)
if actor.next_exp != 0
rate = actor.now_exp.to_f / actor.next_exp
else
rate = 1
end
# Calculate Bar Gradiation
if actor.next_exp != 0
rate = actor.now_exp.to_f / actor.next_exp
else
rate = 1
end
# Adjust Bar Color based on Gradiation
color1 = Color.new(80 * rate, 80 - 80 * rate ** 2, 80 - 80 * rate, 192)
color2 = Color.new(240 * rate, 240 - 240 * rate ** 2, 240 - 240 * rate, 192)
# Calculate Bar Width
if actor.next_exp != 0
exp = width * actor.now_exp / actor.next_exp
else
exp = width
end
# Draw Bar Graph
cw_gauge(x, y + 25, width, 7, exp, color1, color2)
# Call original EXP
draw_actor_exp_original(actor, x, y)
end
#--------------------------------------------------------------------------
# * Draw HP w/ Bars
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# width : draw spot width
#--------------------------------------------------------------------------
alias draw_actor_hp_original draw_actor_hp
def draw_actor_hp(actor, x, y, width = 144)
# Calculate Bar Gradiation
if actor.maxhp != 0
rate = actor.hp.to_f / actor.maxhp
else
rate = 0
end
# Adjust Bar Color based on Gradiation
color1 = Color.new(80 - 24 * rate, 80 * rate, 14 * rate, 192)
color2 = Color.new(240 - 72 * rate, 240 * rate, 62 * rate, 192)
# Calculate Bar Width
if actor.maxhp != 0
hp = width * actor.hp / actor.maxhp
else
hp = 0
end
# Draw Bar Graph
cw_gauge(x, y + 25, width, 7, hp, color1, color2)
# Call original HP
draw_actor_hp_original(actor, x, y, width)
end
#--------------------------------------------------------------------------
# * Draw SP w/ Bars
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# width : draw spot width
#--------------------------------------------------------------------------
alias draw_actor_sp_original draw_actor_sp
def draw_actor_sp(actor, x, y, width = 144)
# Calculate Bar Gradiation
if actor.maxsp != 0
rate = actor.sp.to_f / actor.maxsp
else
rate = 1
end
# Adjust Bar Color based on Gradiation
color1 = Color.new(14 * rate, 80 - 24 * rate, 80 * rate, 192)
color2 = Color.new(62 * rate, 240 - 72 * rate, 240 * rate, 192)
# Calculate Bar Width
if actor.maxsp != 0
sp = width * actor.sp / actor.maxsp
else
sp = width
end
# Draw Bar Graph
cw_gauge(x + width * 0 / 100, y + 25, width, 7, sp, color1, color2)
# Call original SP
draw_actor_sp_original(actor, x, y, width)
end
#--------------------------------------------------------------------------
# * Draw Parameter w/ Bars
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# type : parameter type (0-6)
#--------------------------------------------------------------------------
alias draw_actor_parameter_original draw_actor_parameter
def draw_actor_parameter(actor, x, y, type)
# Choose Color & Parameter Type
case type
when 0
e1 = actor.atk
c6 = Color.new(253, 53, 56, 192)
c5 = Color.new(242, 2, 6, 192)
when 1
e1 = actor.pdef
c6 = Color.new(238, 254, 124, 192)
c5 = Color.new(228, 253, 48, 192)
when 2
e1 = actor.mdef
c6 = Color.new(150, 37, 184, 192)
c5 = Color.new(170, 57, 204, 192)
when 3
e1 = actor.str
c6 = Color.new(253, 163, 33, 192)
c5 = Color.new(254, 209, 154, 192)
when 4
e1 = actor.dex
c6 = Color.new(255, 255, 255, 192)
c5 = Color.new(222, 222, 222, 192)
when 5
e1 = actor.agi
c6 = Color.new(124, 254, 155, 192)
c5 = Color.new(33, 253, 86, 192)
when 6
e1 = actor.int
c6 = Color.new(119, 203, 254, 192)
c5 = Color.new(8, 160, 253, 192)
end
# Calculate Bar Gradiation
e2 = 999
if e1.to_f != 0
rate = e1.to_f / e2.to_f
else
rate = 1
end
# Adjust Bar Color based on Gradiation & Parameter Type
for i in 0..7
r = c6.red * rate
g = (c6.green - 10) * rate
b = c6.blue * rate
a = c6.alpha
end
# Calculate Bar Width
width = 168
if e1.to_f != 0
par = width * e1.to_f / e2.to_f
else
par = width
end
# Equipment Calc Fix
case type
when 0
if e1 == 0
par = 0
end
when 1
if e1 == 0
par = 0
end
when 2
if e1 == 0
par = 0
end
end
# Draw Bar Graph
cw_gauge(x , y + 25, width, 7, par, c5, Color.new(r, g, b, a))
# Call Original Parameter
draw_actor_parameter_original(actor, x, y, type)
end
#--------------------------------------------------------------------------
# * Gauge Rectangle (New to Class)
#--------------------------------------------------------------------------
def cw_gauge(x, y, width, height, gauge, color1, color2)
# Use Cogwheel PRESETS
color3 = COG_COLOR1
color4 = COG_COLOR2
color5 = COG_COLOR3
color6 = COG_COLOR4
align1 = COG_ALIGN1
align2 = COG_ALIGN2
align3 = COG_ALIGN3
grade1 = COG_GRADE1
grade2 = COG_GRADE2
# Create Rectangle Width based on gauge max.
rect_width = width
case align1
when 1
x += (rect_width - width) / 2
when 2
x += rect_width - width
end
case align2
when 1
y -= height / 2
when 2
y -= height
end
self.contents.fill_rect(x, y, width, height, color3)
self.contents.fill_rect(x + 1, y + 1, width - 2, height - 2, color4)
if align3 == 0
if grade1 == 2
grade1 = 3
end
if grade2 == 2
grade2 = 3
end
end
if (align3 == 1 and grade1 == 0) or grade1 > 0
color = color5
color5 = color6
color6 = color
end
if (align3 == 1 and grade2 == 0) or grade2 > 0
color = color1
color1 = color2
color2 = color
end
self.contents.cw_grad_rect(x + 2, y + 2, width - 4, height - 4, color5, color6, grade1)
if align3 == 1
x += width - gauge
end
self.contents.cw_grad_rect(x + 2, y + 2, gauge - 4, height - 4, color1, color2, grade2)
end
#--------------------------------------------------------------------------
# * End of Class
#--------------------------------------------------------------------------
end
#==============================================================================
# ** Bitmap
#==============================================================================
class Bitmap
#--------------------------------------------------------------------------
# * Gradation Rectangle
#--------------------------------------------------------------------------
def cw_grad_rect(x, y, width, height, color3, color4, align = 0)
if align == 0
for i in x...x + width
red = color3.red + (color4.red - color3.red) * (i - x) / (width - 1)
green = color3.green +
(color4.green - color3.green) * (i - x) / (width - 1)
blue = color3.blue +
(color4.blue - color3.blue) * (i - x) / (width - 1)
alpha = color3.alpha +
(color4.alpha - color3.alpha) * (i - x) / (width - 1)
color = Color.new(red, green, blue, alpha)
fill_rect(i, y, 1, height, color)
end
elsif align == 1
for i in y...y + height
red = color3.red +
(color4.red - color3.red) * (i - y) / (height - 1)
green = color3.green +
(color4.green - color3.green) * (i - y) / (height - 1)
blue = color3.blue +
(color4.blue - color3.blue) * (i - y) / (height - 1)
alpha = color3.alpha +
(color4.alpha - color3.alpha) * (i - y) / (height - 1)
color = Color.new(red, green, blue, alpha)
fill_rect(x, i, width, 1, color)
end
elsif align == 2
for i in x...x + width
for j in y...y + height
red = color3.red + (color4.red - color3.red) *
((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
green = color3.green + (color4.green - color3.green) *
((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
blue = color3.blue + (color4.blue - color3.blue) *
((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
alpha = color3.alpha + (color4.alpha - color3.alpha) *
((i - x) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
color = Color.new(red, green, blue, alpha)
set_pixel(i, j, color)
end
end
elsif align == 3
for i in x...x + width
for j in y...y + height
red = color3.red + (color4.red - color3.red) *
((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
green = color3.green + (color4.green - color3.green) *
((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
blue = color3.blue + (color4.blue - color3.blue) *
((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
alpha = color3.alpha + (color4.alpha - color3.alpha) *
((x + width - i) / (width - 1.0) + (j - y) / (height - 1.0)) / 2
color = Color.new(red, green, blue, alpha)
set_pixel(i, j, color)
end
end
end
end
#--------------------------------------------------------------------------
# * End of Class
#--------------------------------------------------------------------------
end
hi ryex
its Djeff from rmrk with my question.
im a total noob at scripting so i only know what youtube learns me.
i want to add 2 more new menu tabs in the right bellow.
Iwant to add an icon that opens Zeriab's questbook : $scene = Scene_Questbook.new($scene)
and a load screen : $scene = Scene_Load2.new
i think a must add these near the plugin part ?
how do i do that ?
what must i fill in exeactly here :
#::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
PLUGINS = []
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Do you have a scene or menu that you want to link to the option menu?
# A plug-in perhaps? To add an option on the option menu that
# will call your scene simply use this format.
=begin
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if $RyexCOLCMS
desc = '<insert description of the plugin to be displayed in the help window here>'
RyexCFG::PLUGINS.push(RyexCMS::Plugin.new('<name of plugin>', desc) do
$Scene = <scene you want to call>.new
end
) #don't forget this line
end
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
=end
# its that simple
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
class PlugIn
# read/write-able
attr_accessor :name, :action, :description
def initialize( name = '', desc = '')
# @name is the name which will show up in the menu,
# @reqs is the Proc that will be called to see if the option should
# be activated (optional),
# and @action is the proc that will be called when
# the option is selected.
@name, @action, @description = name, Proc.new, desc
end
def call
@action.call
end
end
end
Please help me
already thanks ! DJeff
Please use code tags for code. ~Blizz
if $RyexCOLCMS
desc = '<insert Quest book description of be displayed in the help window here>'
RyexCFG::PLUGINS.push(RyexCMS::Plugin.new('<name of quest book plugin>', desc) do
$Scene = Scene_Questbook.new($Scene)
end
) #don't forget this line
desc = '<insert load scene description of the plugin to be displayed in the help window here>'
RyexCFG::PLUGINS.push(RyexCMS::Plugin.new('<name of load plugin>', desc) do
$scene = Scene_Load2.new
end
) #don't forget this line
end
add that in a new script above main and it should work if you still get problems tell me.
what excectly do i have to type near :
RyexCFG::PLUGINS.push(RyexCMS::Plugin.new('< HERE ? >', desc) do
and dont i need to add a icon somewhere ?
so you have a icon like a Q from quest in the right bottom
the name of the plugin is the name that appears in the menu ie if you put Quest there you would have a quest button. and there are no icons in the options menu
ie.
desc = '<insert Quest book description of be displayed in the help window here>'
RyexCFG::PLUGINS.push(RyexCMS::Plugin.new('Quest', desc) do
#Scene = Scene_Questbook.new($Scene)
end
)
options menu ?
i need 2 more icons in the general menu.
near the item,equip,save,skills,and end game icons.
i want to add 2 more icons which will open 2 new windows.
The questbook window and a load window.
oh well the plugin system only adds options the the options menu if you want to add an option the the main menu you have to do some thing else.
first tell me this do you want the scene to pop up immediately after pressing the button? or do you want the menu to animate out first? the edits are different and the animation is a bit more complex.
Wont need to be animated.
Just a new screen poping up
could you help me with it ryex ?
you'll have to wait young grasshopper, for this bird must cache up with his studies before he can find the time to script, or help with it.
ok ill wait :^_^':
good luck with your studies :)
So I'm trying to insert an additional option into the Options menu, but it isn't working and I really am not sure why. I simply deleted the begin and end comment lines and replaced the placeholder text with the text i need, and this error comes up:
----
Script 'Ryex's Collapsing CMS' NameError occurred.
uninitialized constant RyexCFG::RyexCMS
----
PLUGINS = []
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# Do you have a scene or menu that you want to link to the option menu?
# A plug-in perhaps? To add an option on the option menu that
# will call your scene simply use this format.
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
if $RyexCOLCMS
desc = 'Beastiary'
RyexCFG::PLUGINS.push(RyexCMS::Plugin.new('Beastiary', desc) do
$scene = scene_beastairy.new
end
) #don't forget this line
end
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# its that simple
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
I've tried screwing around with it, putting it after the cms script in the script editor as its own thing, and still no luck. It doesn't help that I really don't know the scripting language either. I can piece stuff together, but yeah, I can't figure this one out.
(sorry if this post is out of date / necroposting, but i couldn't find a recent one)
Well, i figured out how to add options to the main menu, so i got my beastiary thing to work. I'm still confused as to why the options menu addons don't work though.
This looks great but i have a suggestion:
(http://i915.photobucket.com/albums/ac351/cyclope_hud/Dibujo.jpg)
If you see the position of the 99(In the yellow bar), it is not at the end of the bar like the SP and SP and I think it would look beter if it did
Hi there, I have a quick question that I cant seem to figure out.
I am trying to replace the Option Screen with a Quest Log screen. I have activated the 'Custom Option Screen' Option and when I click on option the quest menu pops up. The problem is that the other menus do not disappear, and stay for about 2 seconds after I have closed the quest Menu. What would I have to add/change to get rid of the Main menus?
@mysticesper
Not sure if this a THE problem, but I do see a problem with the code in your post. You need to have the class name written properly as a constant. i.e. Capitalized and written exactly as the class name.
version 2.51 is out. this should fix any errors people have with windows not disposing when another scene is called
@Infinity8 try the new script version. if you still have problems post here
Awesomeness, it works perfectly now, sort of.
At first it kept giving me errors, but after I edited out the following lines:
(http://a.imagehost.org/t/0463/Ryex.jpg) (http://a.imagehost.org/view/0463/Ryex)
It worked fine. Not sure what the issue was there. (btw im using game guy's quest log instead of the options screen)
And I should have said this earlier but I absolutely love this CMS. Amazingly good work :D
what kind of errors were you getting...?
Ok So heres my problem.
this portion doesnt seem to be working right.
# Dispose of windows
@command_window.dispose if @command_window != nil && !@command_window.disposed?
@status_window.dispose if @status_window != nil && !@status_window.disposed?
@gold_window.dispose if @gold_window != nil && !@gold_window.disposed?
@actor_window.dispose if @actor_window != nil && !actor_window.disposed?
@help_window.dispose if @help_window != nil && !@help_window.disposed?
@help_window_item.dispose if @help_window_item != nil && !@help_window_item.disposed?
@item_window_item.dispose if @item_window_item != nil && !@item_window_item.disposed?
@target_window_item.dispose if @target_window_item != nil && !@target_window_item.disposed?
@help_window_skill.dispose if @help_window_skill != nil && !@help_window_skill.disposed?
@status_window_skill.dispose if @status_window_skill != nil && !@status_window_skill.disposed?
@skill_window_skill.dispose if @skill_window_skill != nil && !@skill_window_skill.disposed?
@target_window_skill.dispose if @target_window_skill != nil && !@target_window_skill.disposed?
@help_window_equip.dispose if @help_window_equip != nil && !@help_window_equip.disposed?
@left_window_equip.dispose if @left_window_equip != nil && !@left_window_equip.disposed?
@right_window_equip.dispose if @right_window_equip != nil && !@right_window_equip.disposed?
@item_info_equip.dispose if @item_info_equip != nil && !@item_info_equip.disposed?
@item_windows_equip.each_index {|i|
@item_windows_equip[i].dispose if @item_windows_equip[i] != nil && !@item_windows_equip[i].disposed?
}
@status_window_status.dispose if @status_window_status != nil && !@status_window_status.disposed?
@map.dispose
end
See when I exit or try to use either the option or save It says error and refers this line of code
ah darn, one sec and i'll fix it.
EDIT: Fixed
Quote from: Ryexander on September 17, 2010, 09:22:35 pm
ah darn, one sec and i'll fix it.
EDIT: Fixed
this line is still messing up
@item_windows_equip.each_index {|i|
What do i need to Delete to get rid of the options and save features.I dont need them.
what is the error? i can't help if you don't post the exact error, and no don't even try to delete them. you'll just screw it up.
Quote from: Ryexander on September 17, 2010, 09:58:06 pm
what is the error? i can't help if you don't post the exact error, and no don't even try to delete them. you'll just screw it up.
Ok I wont delete them.
Um its a no method error.
Its says undefined method for "Each_Index" for nil:Nill class
Fixed
Good job on this Ryexander.
I have seen this one around the site before.
Happy to see it's had some updates and it still under full support.
Quote from: Ryexander on September 17, 2010, 10:24:01 pm
Fixed
Oh thank you everythings good now.
sorry for not being clear im an artist so the coding part is a real pain for me.
Thank you Ill make sure to make your Name in the Credits huge!!
Hey, i'd like to remove the save menu from the main menu, as i'm going to use save points instead. So, which parts do i need to delete and/or edit?
Thanks in advance for your help.
oh... well you will change two lines, first is the one that adds the save commands to the menu. the second is the one that tels it to call the save scene.
i'll help you more in the morning. 3:30AM here
Ok, thanks. Sleep well
Hey, so uh what lines do i need to cut ut to disable the save acces?
bumpsit?
Ryex, what part's would i need to remove from this to take out the save option in the menu?
And, if it's not too much trouble, i'd like to add options for Blizzards Bestiary and G_Gs Quest log... since they are separate scripts, i think adding those would only need the clling lines...
Anyway, thanks in advance.
Hello there..
I really like this CMS and would like to use it, but I'm using Minkoff's animated battler and it displays the spritesheet I'm using. Is there any way this could be changed?? I'm not a scripter, so i can't really edit scripts. Thanks
I'm sorry, say that again? you didn't make sense to me.
:^_^': sorry bout that...
I'll try to explain clearly... your CMS displays the actor/character's battler image in the status window (those images saved in the battler folder) , right?
So since this CMS uses the actor's battler image, in my situation, it displays the actors animated spritesheet, since I'm using Minkoff's/DerWulfman's animated battler..
so when i open the status window, instead of this image showing in the window,
(http://img22.imageshack.us/img22/804/001fighter01batt.png)
this spritesheet shows instead because this is the battler image i'm using (well im not really using it, just an example, coz im trying to making my own sprites)
(http://img.photobucket.com/albums/v232/TKTDIVISION/2uidbux.png)
is there any way this can be solved?
I've tried other CMS wherein you are allowed to use images in the Pictures folder instead of the battler folder.
I think this can be edited in script but i have no idea in editing.
I assume most people using this script with Minkoff's/DerWulfman's animated battler have experienced the same..
This is a very cool CMS but the minor graphics glitch in the animated battler is ruining it.
I hope you understood what i was trying to say this time :)
Edit:
I'll try to post a screenshot when possible..
I've provided a screenshot on the problem about this CMS interacting wih Minkoff's/DerWulfman animated battler
As you can see, when the status window is displayed, the animated battler is shown since that is the saved
image in my battlers folder..
(http://i171.photobucket.com/albums/u285/monsdname22_26/collpase.jpg)
Can this be fixed??
Usually spritesheets are 4x4 obviously. You are using one that is much larger so when the system breaks the sheet into 1/16ths and transfers the image (usually just a single pattern of the character) it is taking many images.
Your problem is not with this script, it's with the Window_Base in your own game and an oversight from the other script for not changing the "draw_actor_graphic" method in it to perform correctly with expanded spritesets.
EDIT: Here try this:
class Window_Base
def draw_actor_graphic(actor, x, y)
bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
cw = bitmap.width / 4 # <--- CHANGE THE 4 TO NUMBER OF SPRITES WIDE
ch = bitmap.height / 4 # <--- CHANGE THE 4 TO NUMBER OF SPRITES TALL
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
end
end
I definitely know there's nothing wrong in the script, coz it works fine, the thing is, it ruins the game when I see that spritesheet on my status window. :haha:
Anyway, I'll try this and hope it works fine..
I'll try it as soon as i can and give a feedback
Thank you.. :)
I'd imagine that you'd just have to change the line in the script that gets the Battler to get a different image instead. Should be a fairly simple edit.
QuoteI'd imagine that you'd just have to change the line in the script that gets the Battler to get a different image instead. Should be a fairly simple edit.
Yes, that would work quite perfectly.
One would use the special spritesheet, while the other used the default.
Either way, should be an easy fix.
ya, the line should be simple to change, just a matter of what you want to change it to. what would you like to show there?
@ForeverZero
The code you posted didn't worked out, but thanks for the effort to help..
Good thing there was an option to insert a custom window in this script (I was like, amazed when i figured it out :haha:). I downloaded a custom status window there and then, it was perfectly fine. :)
@WhiteRose
It should be simple for you guys, but I'm not a scripter :^_^':
And I really appreciate the works of a scripter :)
ah, so you managed to get a custom status window working? good
yeah.. i got rid of that sprite sheet thing..
is it possible to make the map background active so that all events continue ?!
because i use rmx-os and need a on screen menue, and this one is really nice but its not very cool when you exit the menue and the other players and global events skip :<_<:
so my question is if you could make a version for rmx-os where this is possible ? :shy:
thx in advance and thx for all your great scripts btw ;)
I'm pretty sure this has already been answered. no I will NOT make a version for rmx-os. besides, using a menu like this with rmx-os isn't piratical.
Sorry for the post when this topic seems a little out-of-date, but I love this script and need some help with it :D
I'm using Guilaume777's Multi-Slot script, which doesn't seem to be compatible with your own equipment system!
Thing is, the equipment is still THERE (e.g the character attacks with 2 weapons, even though they can't both be displayed in the menu) it just doesn't show, and can't be changed.
Would anyone be willing to helpme patch this :)?
Sorry for the necro, but I just gotta know something. Been trying to add custom menu options to this beautiful CMS, can't for the life of me figure out how. Reading so many post, even some people saying they got it to work, just forgetting to post how they got it to work. If any one would be oh so kind to please just try and help a poor lost soul out here. all I really want is to know if it is at all possible to add more icons to custom scenes right there along side equip and all that jazz. If this is not possible just slap me and I'll be on my merry way, but, if this is possible I would appreciate someone telling me how.
it's all explained in the comments at the top of the script, but i you really need help then you need to give specifics as to what you want to add and where.
Oh ho! So it is explained there, I had just assumed that was only explaining how to change the icon of the options already there, appears I was sorely mistaken. Much thanks for clearing up that small matter for me.
no hotkeys .._.. I'm no scripter, so I don't know how to implant them... Anyway, this is a very nice script, but I guess, I can't use it.. :/
what do you mean by hotkeys?
Extremely, extremely, extremely, intensely love!! Fantastic job. =)
EDIT: except it doesn't work for my game =( i get an error
Script ' ' line 342: TypeError occurred.
nil can't be coerced into Fixnum
when i try to load a save file
and
Script ' ' line 165: RangeError occurred.
float -1.#IND out of range of integer
when i start a new game and press escape to see the menu
damn it worked in a fresh new game =(
i have the following addons
Variable increase
class Game_Enemy
#-------------------------------------------------------------------------------
# CONFIGURATION
#-------------------------------------------------------------------------------
# Define the variable used for each enemy here. Follow this pattern:
#
# when ENEMY_ID then VARIABLE_ID
#
# If more than one eneky share the same variable, you can define multiple
# IDs on one line. For example, say you had a Goblin whose ID was 1, and an
# Orc whose ID was 17. You wanted both of them to be of the same "type", and
# use the variable with ID of 6:
#
# when 1, 17 then 6
#
#-------------------------------------------------------------------------------
def enemy_variable(enemy_id)
return case enemy_id
when 2 then 201
when 3 then 202
when 4 then 203
when 5 then 204
when 6 then 205
when 10 then 206
when 14 then 207
when 15 then 208
when 16 then 209
when 19 then 210
when 20 then 211
when 21 then 212
when 28, 29 then 213
when 40 then 214
when 41 then 215
when 42 then 216
when 43 then 217
when 45 then 218
when 47 then 219
when 48 then 220
when 50 then 221
when 51 then 222
when 52 then 223
when 53 then 224
when 72 then 225
when 74 then 226
when 88 then 230
when 75, 76, 77, 81 then 231
end
end
#-------------------------------------------------------------------------------
# END CONFIGURATION
#-------------------------------------------------------------------------------
def increase_count(enemy_id)
var_id = enemy_variable(enemy_id)
if var_id != nil
$game_variables[var_id] += 1
end
end
alias zer0_enemy_type_attack attack_effect
def attack_effect(attacker)
result = zer0_enemy_type_attack(attacker)
if self.dead? && @counted == nil
increase_count(@enemy_id)
@counted = true
end
return result
end
alias zer0_enemy_type_skill skill_effect
def skill_effect(user, skill)
result = zer0_enemy_type_skill(user, skill)
if self.dead? && @counted == nil
increase_count(@enemy_id)
@counted = true
end
return result
end
alias zer0_enemy_type_item item_effect
def item_effect(item)
result = zer0_enemy_type_item(item)
if self.dead? && @counted == nil
increase_count(@enemy_id)
@counted = true
end
return result
end
end
under Game_Enemy
Monster Health
class Window_Base < Window
#--------------------------------------------------------------------------
# * Draw Slant Bar(by SephirothSpawn)
#--------------------------------------------------------------------------
def draw_slant_bar(x, y, min, max, width = 152, height = 6,
bar_color = Color.new(150, 0, 0, 255), end_color = Color.new(255, 255, 60, 255))
# Draw Border
for i in 0..height
self.contents.fill_rect(x + i, y + height - i, width + 1, 1, Color.new(50, 50, 50, 255))
end
# Draw Background
for i in 1..(height - 1)
r = 100 * (height - i) / height + 0 * i / height
g = 100 * (height - i) / height + 0 * i / height
b = 100 * (height - i) / height + 0 * i / height
a = 255 * (height - i) / height + 255 * i / height
self.contents.fill_rect(x + i, y + height - i, width, 1, Color.new(r, b, g, a))
end
# Draws Bar
for i in 1..( (min / max.to_f) * width - 1)
for j in 1..(height - 1)
r = bar_color.red * (width - i) / width + end_color.red * i / width
g = bar_color.green * (width - i) / width + end_color.green * i / width
b = bar_color.blue * (width - i) / width + end_color.blue * i / width
a = bar_color.alpha * (width - i) / width + end_color.alpha * i / width
self.contents.fill_rect(x + i + j, y + height - j, 1, 1, Color.new(r, g, b, a))
end
end
end
end
class Window_EnemyHP < Window_Base
def initialize
super(0, 0, 640, 480)
self.contents = Bitmap.new(width - 32, height - 32)
self.opacity = 0
refresh
end
def refresh
self.contents.clear
for i in 0...$game_troop.enemies.size
@enemy = $game_troop.enemies
@percent = (@enemy.hp * 100) / @enemy.maxhp
unless @enemy.hp == 0
draw_slant_bar(@enemy.screen_x - 55, @enemy.screen_y - 10, @enemy.hp, @enemy.maxhp, width = 75, height = 6, bar_color = Color.new(150, 0, 0, 255), end_color = Color.new(255, 255, 60, 255))
self.contents.draw_text(@enemy.screen_x - 39, @enemy.screen_y - 22, 100, 32, "#{@percent}" + "%")
end
end
end
end
class Scene_Battle
alias raz_update update
alias raz_update_phase5 update_phase5
alias raz_update_phase4_step1 update_phase4_step1
alias raz_update_phase4_step5 update_phase4_step5
alias raz_enemy_hp_main main
def main
@troop_id = $game_temp.battle_troop_id
$game_troop.setup(@troop_id)
@enemy_window = Window_EnemyHP.new
@enemy_window.z = 95
raz_enemy_hp_main
@enemy_window.dispose
end
def update
@enemy_window.update
raz_update
end
def update_phase5
# If wait count is larger than 0
if @phase5_wait_count > 0
# Decrease wait count
@phase5_wait_count -= 1
# If wait count reaches 0
if @phase5_wait_count == 0
@enemy_window.visible = false
# Show result window
@result_window.visible = true
# Clear main phase flag
$game_temp.battle_main_phase = false
# Refresh status window
@status_window.refresh
@enemy_window.refresh
end
return
end
raz_update_phase5
end
def update_phase4_step1
raz_update_phase4_step1
@enemy_window.refresh
end
def update_phase4_step5
# Hide help window
@help_window.visible = false
# Refresh status window
@status_window.refresh
@enemy_window.refresh
raz_update_phase4_step5
end
end
Skill Shop
Tons of Addons
EasyLVL
Probably not compatible with old save games. Just start a new game once you add the script and work off of it. You shouldn't have more troubles loading after that.
Quote from: djskagnetti on October 08, 2011, 09:49:56 am
and
Script ' ' line 165: RangeError occurred.
float -1.#IND out of range of integer
when i start a new game and press escape to see the menu
line 165 is
fill_rect(x + 1, y + i + 1, p * (w - 2), 1, Color.new(r, g, b))
The script is incompatible with old save files and the other error is only possible is another script is messing with ti and there is now way that the two you posted could be the cause. you'll have to do a little debugging in a new game adding you additional scripts until you get an error. then you'll know which on is causing the error. and THEN I'll be bale to help ypu
Hi a little necropost but would it be possible to remove the gradient bars from this cms?
Thanks.
Sorry for the necropost.
I found a problem with this script (Apart of the equip screen) and that is if you have a picture showing on the map and you open the menu the picture will show over the menu even status screen, item screen, options, etc etc.
I'm trying to add z values for every scene but I don't know each location for every option but that is pretty much the solution.
the demo link is gone