Main Menu
  • Welcome to The RPG Maker Resource Kit.

Phantasia-esque CMS 1.0

Started by modern algebra, October 06, 2009, 10:44:30 PM

0 Members and 1 Guest are viewing this topic.

modern algebra

Phantasia-esque CMS
Version: 1.0
Author: modern algebra
Date: October 6, 2009

Version History




  • <Version 1.0> 10.06.2009 - Original Release

Description



This script gives you a menu design that is inspired by a mix between the Tales of Phantasia Menu and my own Full Status CMS. Like Tales of Phantasia, each actor gets their own window and their sprite is shown walking in the top right corner. Like FSCMS, the command window and optional windows are hugely customizable, allowing you to relatively easily add new scripts to be accessible from the menu (with an automatic index finder so that you don't need to modify the return_scene methods of the respective scripts that you add to the menu), call common events from the menu (including the ability to select an actor and have your common event operate only on the actor chosen) and you can use any of the five optional windows that are in the FSCMS - Location, Playtime, Gold, Steps, and Variable.

Features


  • Attractive design
  • Walking sprites in the menu
  • Each actor/actress gets his/her own window
  • A lot of easy customizability, ranging from what scenes or common events you want accessible from the menu and what optional windows you want to show to changing the exact sprite position of the actors.
  • Allows you to have an option to include common events as options that can be run from the menu (and even targetted at individual actors)
  • Can set icons next to the commands in the menu, for greater prettiness
  • Can add and remove commands or optional windows from the menu at will in-game with call script commands

Screenshots



Instructions

Place this script in the Script Editor (F11) above Main and below other custom scripts. Please note this will not work with other CMSes.

See the header of the script and Editable Regions A & B for configuration instructions.

Script



Please see the attached text document.

[spoiler=Max Level Bug Fix]
Note that there is a bug that will occur once a character reaches max level. To fix it, paste the following code into its own slot in the editor BELOW the CMS, but still above Main.

#==============================================================================
# ** Window_TPCMS_MenuActor
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  This window displays basic status information on a party member.
#==============================================================================

class Window_TPCMS_MenuActor < Window_Base
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Draw Actor EXP Gauge
  #    actor : the actor to draw exp of
  #    x, y  : coordinates to start drawing
  #    width : the total width of guage
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def draw_actor_exp_gauge (actor, x, y, width = 120)
    gw = width
    gw *= (actor.exp_progress / actor.next_rest_exp_s.to_i) if actor.next_rest_exp_s.to_i > 0
    # Get colors
    if Phantasia_CMS::EXP_BAR_COLOR1.is_a? (Fixnum)
      gc1 = text_color (Phantasia_CMS::EXP_BAR_COLOR1)
    else
      gc1 = Color.new (*Phantasia_CMS::EXP_BAR_COLOR1)
    end
    if Phantasia_CMS::EXP_BAR_COLOR2.is_a? (Fixnum)
      gc2 = text_color (Phantasia_CMS::EXP_BAR_COLOR2)
    else
      gc2 = Color.new (*Phantasia_CMS::EXP_BAR_COLOR2)
    end
    self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color)
    self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2)
  end
end

[/spoiler]

Credit




  • modern algebra

Thanks


  • Tales of Phantasia, for inspiration
  • Saekonungar, for a bug report

Support



Please post in this topic at RMRK for support

Known Compatibility Issues

It won't work with other CMSes. It may work with some scripts that add themselves to the menu (such as my Diary script), but it won't give it an icon in that case. It is recommended when using those scripts, to place them ABOVE the CMS and set it up as you would any other script inside the CMS itself.

Demo



The demo is attached. Please note that most of the scripts in the demo are unnecessary. The only one you need is the one titled Phantasia-esque CMS 1.0. However, it is recommended that you get the script from the text document as the demo one is set up with other scripts (for the purpose of examples), while the text document is clean and has no special other scripts pre-setup




Grafikal

Whooooooshhhh, very cool man, looks like you've been busy on dem CMS's lately lol.

modern algebra

:)

This one only took a few hours since it's pretty much the same basic engine as FSCMS but with a different layout and with some particularities removed.

SuperMega

Woah, I'm really liking the layout!  Nice work Modern Algebra! :D

Lazer Ki

Holy shit, this looks awesome.

I have to learn to be a scripting god like MA ._.
Hi

Irock

This looks like a nice menu.

Good work, Modern Algebra. :]

Cascading Dragon

Amazing work.
Now if I could figure out how to do stuff like this. lol

modern algebra


tSwitch



FCF3a A+ C- D H- M P+ R T W- Z- Sf RLCT a cmn+++ d++ e++ f h+++ iw+++ j+ p sf+
Follow my project: MBlok | Find me on: Bandcamp | Twitter | Patreon

EliasD15

#9
Script 'Phantasia CMS by Modern Algebra' line 784: NoMethodError
occured.


undefined method`each' for nil:Class


How can I fix this?

modern algebra

I think it's probably an incompatibility with another script. Try putting it below any other custom scripts you have in the editor but keep it above Main. Also, don't PM me again; I always read my topics when somebody posts in them.

EliasD15

Sorry about that, I didn't know. I PM'd you again  :-[
By the way, it worked in the demo and not in my game.
The script list I sent you, should help reveal any incompatibilities.

modern algebra

#12
Not really. I'm not familiar with most of those scripts.

If it's the line that I'm thinking of (line 784 without any modifications to the script whatsoever), then the only way (unless you deleted stuff you shouldn't have - I'm assuming you haven't modified the script) for that error to occur is if the initialize method of Game_System is overwritten or if you're using an old save file.

But if it's below every custom script, than the error should be occuring in the incompatible script. I can't do any more than that without seeing the project itself.

EliasD15

Quote from: Owyn on October 26, 2009, 12:25:34 AM
Not really. I'm not familiar with most of those scripts.

If it's the line that I'm thinking of (line 784 without any modifications to the script whatsoever), then the only way (unless you deleted stuff you shouldn't have - I'm assuming you haven't modified the script) for that error to occur is if the initialize method of Game_System is overwritten.

But if it's below every custom script, than the error should be occuring in the incompatible script. I can't do any more than that without seeing the project itself.

I am seriously considering removing the script do the issues.

modern algebra

#14
OK, do so then; I don't appreciate the implication that I'm being dishonest about my ability to diagnose the problem with only the limited information you've given me and I don't see why you think that threatening to not use my script will change my ability to help you with this problem. I can't do any more unless I can actually see the project. I'm not a magical being who can divine the exact structure of a script from its name and I'm not going to hunt down 10 scripts and put them in a project just to figure out which script is causing the error. If you want my help, upload your project or your Scripts.rvdata and send it to me. If you don't want to do that then remove it or figure it out on your own.

EliasD15

#15
I didn't mean to imply that you were being dishonest in your diagnoses. I meant to say that the constant issues I was having were not worth wasting yours and my time with something as benign as this.

modern algebra

Yeah, sorry if I sounded harsh. It's totally your call.

modern algebra

It has come to my attention that there is a bug with this script that will crash the game if a character in the menu reaches maximum level. To fix it, paste the following code into its own slot in the editor BELOW the CMS, but still above Main.

#==============================================================================
# ** Window_TPCMS_MenuActor
#++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#  This window displays basic status information on a party member.
#==============================================================================

class Window_TPCMS_MenuActor < Window_Base
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  # * Draw Actor EXP Gauge
  #    actor : the actor to draw exp of
  #    x, y  : coordinates to start drawing
  #    width : the total width of guage
  #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  def draw_actor_exp_gauge (actor, x, y, width = 120)
    gw = width
    gw *= (actor.exp_progress / actor.next_rest_exp_s.to_i) if actor.next_rest_exp_s.to_i > 0
    # Get colors
    if Phantasia_CMS::EXP_BAR_COLOR1.is_a? (Fixnum)
      gc1 = text_color (Phantasia_CMS::EXP_BAR_COLOR1)
    else
      gc1 = Color.new (*Phantasia_CMS::EXP_BAR_COLOR1)
    end
    if Phantasia_CMS::EXP_BAR_COLOR2.is_a? (Fixnum)
      gc2 = text_color (Phantasia_CMS::EXP_BAR_COLOR2)
    else
      gc2 = Color.new (*Phantasia_CMS::EXP_BAR_COLOR2)
    end
    self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color)
    self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2)
  end
end

Draco

Well I downloaded this script, and at first i loved it. Now I was wondering If you could make the script with a Face graphic, where the actor's sprite walks. I pm'd you before this, so  ya...
Thanks
          ~Draco
(\_/)
(^.^)
C(")(")
Help this bunny take over the internet by copying it into your signature.

yuyu!

MA, your scripts are really awesome :)

[Spoiler=My Games and Art]
ℒℴѵℯ❤


My Artwork Thread

The Lhuvia Tales [Current]

Ambassador [Complete]

The Postman [Complete]

The Wyvern [Complete]

Phoenix Wright: Haunted Turnabout [Complete]

Major Arcana [Cancelled]

[/Spoiler]

Infinate X


crow5derlock

sorry for resuming a topic but, could you add a map button that loads an image called IGmap, i'm new to scripting and i don't know how to make much more than a script that runs a message when you open the game.
Final Statement: I chowder5lock am a dipshit and MA is a pretty cool dude.

modern algebra

#22
Well, you have two options:

(1) wait for Pacman to write a scene for it in that topic
(2) have it call a common event instead and show the picture in the common event.

If the latter, you would simply make a common event that should look essentially like (Note: if already using Picture Label 1 to show something else, use a different label):

@>Show Picture: 1, IGMap
@>Loop
  @>Set Move Route: Player
    :                      $>Wait: 6 Frames
  @>Wait: 6 frames
  @>Conditional Branch: Button B is pressed
    @>Break Loop
    @>
   : Branch End
  @>Conditional Branch: Button C is pressed
    @>Break Loop
    @>
   : Branch End
  @>
: Repeat Above
Erase Picture: 1
Open Menu Scene
@>

Then, in the script, just follow the instructions to add a common event call. In other words, do this (assuming it has not already been edited in any way. If it has, you need to pic an ID for the new one that isn't already used -- again, as per the instructions):



    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]


And you would change it to this:


    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],
    6 => ["Map", 153, -1, false, X]


(NOTE how I added that comma after the 5 => line)

The X before the bracket you would replace with the ID of the common event you made. IE, if you made the common event in the first slot of the common event tab, that line would be:

6 => ["Map", 153, -1, false, 1]

If in the second:

6 => ["Map", 153, -1, false, 2]

ETC...

Note that this method would stop the player from moving but other events on the map would still be active. If you wanted to prevent that, wait for Pacman to finish the script you requested.

crow5derlock

Ok thank you for telling me this, i think i'll just wait for Pacman to finish, but i might try this on a blank project.
Final Statement: I chowder5lock am a dipshit and MA is a pretty cool dude.

modern algebra

#24
Quote from: crow5derlock on August 03, 2011, 08:12:10 PM
Quote from: modern algebra on October 06, 2009, 10:44:30 PM
  • Each actor gets his own window

it should probably say his/her own window

sorry but im a little picky with certain things

Then shouldn't your protest be: "Each actor/actress gets his/her own window"? :P

I kind of think that whole issue is more or less moot at this point. It's obvious that texts which use the male pronoun to refer to humanity are meant to include women and do not have any intended implication that women are inferior or irrelevant. Whatever its historical origins, imputing to someone who uses the male pronoun in that way a sexist or patriarchal attitude which defines human experience only through the male perspective seems dishonest. It is such a high level of abstraction that I doubt it ever (or at least not since the 1950s) really functioned to reinforce those patriarchal attitudes even on a subconscious level. At least, not any more than using the word "holiday" implies and reinforces a sense of the "holy" or the supernatural in society that disadvantages atheists.

Anyway, I'll change it since it ultimately makes no difference and I'd prefer not to be misunderstood in that way; I normally do use gender-inclusive language but I guess the non-gender-inclusive "actor" term threw me off.

The English language would benefit from a singular gender-neutral pronoun though; the whole "his or hers; him or her; etc" is so inconvenient and breaks flow. :P I think it should have a z or an x in it since I think those letters are underused. Is there a way to lobby a dictionary? I suppose we would also need to make them for all the other gendered words in the English language though so it would be hard to really get read of the "X or Y" construction.