Seiryuki 14 Posted January 3, 2012 (edited) ~ Categorize Item Scene v1.0 ~ create your own categories and assign items, weapons, armor to them via notetags Ported from RMVX to RMVXAce by: Seiryuki on: 2012-Jan-02 Original Script by: KGC on: 2008-Apr-10 for: RMVX translated by: Mr. Anonymous Description While RMVXAce already categorises the items in the items scene into Items, Weapons, Armor, and Key Items this script allows you to create your own categories and assign items, weapons, and armor to any of them using notebox tags. This script also allows you to customise the size and location of the help, category, and item windows. See the Custom Layout Section for more information. Compatibility May not be compatible with scripts that redo the item scene. May be compatible with scripts that modify the item categories for shops. Instructions Place this script above Main and below Materials. To assign an item to a category, place <category IDENTIFIER> tag in the item's (or weapon, or armor) notebox where IDENTIFIER is the label listed in the CATEGORY_IDENTIFIER array in the Customisation Section in the script. You can add to or remove from the CATEGORY_IDENTIFIER list. NOTE: The following symbols are reserved and MUST NOT be used in the CATEGORY_IDENTIFIER list: :item, :weapon, :armor, :key_item, :all_item You can assign an item to multiple categories by simply placing more <category IDENTIFIER> tags in the item's notebox. NOTE: When doing that, make sure that ALLOW_DUPLICATE is set to true (see Customisation Section) or else only the last tag in the notebox will be used as the category for the item. See script for full details on setup and use. Screenshots Script MediaFire Link or, #=============================================================== #==================== CATEGORIZE ITEM SCENE v1.0 =============== #=============================================================== #= Ported from RMVX to RMVXAce #= Author: Seiryuki #= Date: 2012-Jan-02 #= Type: VXA/RGSS3 #= Additions: a few more customisation options #--------------------------------------------------------------- #= RMVX Title: KGC's Categorize Item Script #= Author: KGC #= Date: 2008-Apr-10 #= Translated by: Mr. Anonymous #= The original untranslated version of the VX script can be found here: #= http://f44.aaa.livedoor.jp/~ytomy/tkool/rpgtech/php/tech.php?tool=VX&cat=tech_vx/item&tech=categorize_item #=============================================================== #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # DESCRIPTION: # While RMVXAce already categorises the items in the items scene # into Items, Weapons, Armor, and Key Items this script allows # you to create your own categories and assign items, weapons, # and armor to any of them using notebox tags. # # This script also allows you to customise the size and location # of the help, category, and item windows. # See the Custom Layout Section for more information. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # COMPATIBILITY: # May not be compatible with scripts that redo the item scene. # May be compatible with scripts that modify the item categories # for shops. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ # INSTRUCTIONS: # Place this script above Main and below Materials. # # To assign an item to a category, place <category IDENTIFIER> tag # in the item's (or weapon, or armor) notebox where IDENTIFIER # is the label listed in the CATEGORY_IDENTIFIER array in the # Customisation Section below. # You can add to or remove from the CATEGORY_IDENTIFIER list. # # NOTE: The following symbols are reserved and MUST NOT be used in # the CATEGORY_IDENTIFIER list: # :item, :weapon, :armor, :key_item, :all_item # # You can assign an item to multiple categories by simply placing # more <category IDENTIFIER> tags in the item's notebox. # NOTE: When doing that, make sure that ALLOW_DUPLICATE is set to # true (see Customisation Section) or else only the last tag in # the notebox will be used as the category for the item. #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #=============================================================== $data_system = load_data("Data/System.rvdata2") if $data_system == nil module ICAT #=============================================================================# # CUSTOMISATION SECTION - Do not make changes unless you understand completely # what you are doing. Read and follow the below instructions very carefully. #=============================================================================# #-----------------------------------------------------------------------------# #>> CATEGORY_IDENTIFIER - Create your categories here. # You can add or remove categories from this list. # On the left is the symbol used to identify the category. # On the right is the category label that will be used when setting # the e.g. <category Potions> tag in the notebox, where Potions is # the label. # # IMPORTANT - You cannot use the following as symbols as they are # reserved: # :item, :weapon, :armor, :key_item, :all_item CATEGORY_IDENTIFIER = { :potion => "Potions", #example tag: <category Potions> :ammunition => "Ammunition", #example tag: <category Ammunition> } #>> VISIBLE_CATEGORY_INDEX - Set the categories that would be visible # in the item category window. # On the left is identifying symbol from the CATEGORY_IDENTIFIER list # above. It must be a symbol present in that list above, OR, one of the # reserved symbols stated above. Make sure spelling is correct! # On the right is the text to display, and can be any text desired. # (see below customisation section for RESERVED_CATEGORY_INDEX list). # # Only what is present in the VISIBLE_CATEGORY_INDEX will be shown in the # item category window (so you can remove any from the list). # This list can be arranged in any order desired. VISIBLE_CATEGORY_INDEX = { #:item => "Common", #reserved symbol, but can be removed. :weapon => "Weapons", #reserved symbol, but can be removed. :armor => "Armor", #reserved symbol, but can be removed. :key_item => "Special", #reserved symbol, but can be removed. :all_item => "*ALL*", #reserved symbol, but can be removed. :potion => "Potions", :ammunition => "Ammo", } #>> CATEGORY_DESCRIPTION - Simple. The list below creates descriptions # that will be shown in the help window. BUT! Number of items in the # this list MUST match the number of items in the VISIBLE_CATEGORY_INDEX # list above.....and the arranged order too. CATEGORY_DESCRIPTION = [ #"Viewing basic items.", "Viewing attack-type items for use in battles.", "Viewing head, body, arm and leg equipment.", "Viewing important items.", "Viewing all items.", "Viewing potions.", "Viewing ammunition.", ] #>> I'm not sure how important setting this is. ITEM_DEFAULT_CATEGORY = :item #default= :item ITEM_DEFAULT_CATEGORY_INDEX = CATEGORY_IDENTIFIER.index(ITEM_DEFAULT_CATEGORY) #>> AUTOFIT_CATEGORY_COLUMNS - Set to true if you want all the # categories to autofit in the width of the item category window. # Set to false if you only want CATEGORY_WINDOW_MAX_COLUMNS number # of categories visible in the window width. If there are more # categories than CATEGORY_WINDOW_MAX_COLUMNS, the rest will still be # accessible to the right of the last category. AUTOFIT_CATEGORY_COLUMNS = true #default=true CATEGORY_WINDOW_MAX_COLUMNS = 5 #If autofit=false, this number is used. #>> ALLOW_DUPLICATE - This is for when items have multiple tags # in the notebox. # Set to true if you want to allow an item in other categories. # Setting to false will only choose the last category tag from the # item's notebox as the item's category. ALLOW_DUPLICATE = true #default=true #>> CATEGORY_WINDOW_COL_WIDTH - Specify the width of the column to # be used for each category. The category's text is auto-squished # to fit. CATEGORY_WINDOW_COL_WIDTH = 50 #default=50 #>> CATEGORY_WINDOW_COL_SPACE - The amount of space-padding to be # used on either end of the column. CATEGORY_WINDOW_COL_SPACE = 2 #default=2 #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# #>> DEFAULT_SCENE_ITEM_LAYOUT - If you want the normal item scene # layout where the help window is on top, categories in the # middle, and item list below set this to TRUE. # If you wish to move and resize the windows yourself, set to # FALSE and modify the CUSTOM LAYOUT SECTION below. DEFAULT_SCENE_ITEM_LAYOUT = true #default=true #>> CUSTOM LAYOUT SECTION: # The default settings below recreate the layout as if # DEFAULT_SCENE_ITEM_LAYOUT was set to true above. #----------- # DEFAULTS: #----------- # HELP_WINDOW_POSITION = [0, 0] # HELP_WINDOW_WIDTH = Graphics.width #or enter your own number # HELP_WINDOW_NUM_OF_LINES = 2 # CATEGORY_WINDOW_POSITION = [0, 72] # CATEGORY_WINDOW_WIDTH = Graphics.width #or enter your own number # ITEMLIST_WINDOW_POSITION = [0, 120] # ITEMLIST_WINDOW_HEIGHT = 296 HELP_WINDOW_POSITION = [0, 0] HELP_WINDOW_WIDTH = Graphics.width #or enter your own number HELP_WINDOW_NUM_OF_LINES = 2 CATEGORY_WINDOW_POSITION = [0, 72] CATEGORY_WINDOW_WIDTH = Graphics.width #or enter your own number ITEMLIST_WINDOW_POSITION = [0, 120] ITEMLIST_WINDOW_HEIGHT = 296 #>> END OF LAYOUT SECTION #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~# #-----------------------------------------------------------------------------# #=============================================================================# # END OF CUSTOMISATION SECTION #=============================================================================# #-----------------------------------------------------------------------------# # DO NOT MODIFY ANYTHING BELOW HERE UNLESS YOU ARE SURE OF WHAT YOU'RE DOING! # #-----------------------------------------------------------------------------# #=============================================================================# #=============================================================================# RESERVED_CATEGORY_INDEX = { "All Items" => CATEGORY_IDENTIFIER.index(:all_item), "Key Items" => CATEGORY_IDENTIFIER.index(:key_item), "Weapons" => CATEGORY_IDENTIFIER.index(:weapon), "Armor" => CATEGORY_IDENTIFIER.index(:armor), "Items" => CATEGORY_IDENTIFIER.index(:item), } module Regexp module BaseItem # Category tag string CATEGORY = /^<(?:CATEGORY|classification|category?)[ ]*(.*)>/i end end end # END OF module: ICAT #=============================================================================# # Creates the item category window from VISIBLE_CATEGORY_INDEX hash above. #=============================================================================# class ICAT_WindowItemCategory < Window_ItemCategory def initialize super self.z = 1000 self.index = 0 end def update_help #I'm too lazy to find a way to identify description by symbol. @help_window.set_text(ICAT::CATEGORY_DESCRIPTION[self.index]) end alias icat_make_command_list make_command_list def make_command_list ICAT::VISIBLE_CATEGORY_INDEX.each { |symbol, label| add_command(label, symbol) } end def col_max if ICAT::AUTOFIT_CATEGORY_COLUMNS cols = ICAT::VISIBLE_CATEGORY_INDEX.length else cols = ICAT::CATEGORY_WINDOW_MAX_COLUMNS end return cols end def window_width if ICAT::CATEGORY_WINDOW_WIDTH == nil return Graphics.width else return ICAT::CATEGORY_WINDOW_WIDTH end end def spacing return ICAT::CATEGORY_WINDOW_COL_SPACE end end #class #=============================================================================# # Creates category array from BASEITEM database. #=============================================================================# class RPG::BaseItem attr_reader :icat def create_categorize_item_cache if @icat == nil @icat = [] else @icat.compact! end self.note.split(/[\r\n]+/).each { |line| if line =~ ICAT::Regexp::BaseItem::CATEGORY c = ICAT::CATEGORY_IDENTIFIER.key($1) @icat << c if c != nil end } if @icat.empty? @icat << ICAT::ITEM_DEFAULT_CATEGORY_INDEX elsif !ICAT::ALLOW_DUPLICATE @icat = [@icat.pop] end end def item_category create_categorize_item_cache if @icat == nil return @icat end end #class #=============================================================================# # Creates category array from USABLEITEM database. #=============================================================================# class RPG::UsableItem < RPG::BaseItem def create_categorize_item_cache @icat = [] if key_item? @icat << ICAT::RESERVED_CATEGORY_INDEX.key("Key Items") elsif !key_item? @icat << ICAT::RESERVED_CATEGORY_INDEX.key("Items") end super end end #class #=============================================================================# # Creates category array from WEAPON database. #=============================================================================# class RPG::Weapon < RPG::EquipItem def create_categorize_item_cache @icat = [] @icat << ICAT::RESERVED_CATEGORY_INDEX.key("Weapons") super end end #class #=============================================================================# # Creates category array from ARMOR database. #=============================================================================# class RPG::Armor < RPG::EquipItem def create_categorize_item_cache @icat = [] @icat << ICAT::RESERVED_CATEGORY_INDEX.key("Armor") super end end #class #=============================================================================# # Creates item window, categorised by RESERVED_CATEGORY_INDEX and by your own # custom VISIBLE_CATEGORY_INDEX hash above. #=============================================================================# class Window_ItemList < Window_Selectable alias icat_initialize initialize def initialize(x, y, width, height) icat_initialize(x, y, width, height) @category = ICAT::VISIBLE_CATEGORY_INDEX end def include?(item) return false if item == nil case @category when :item item.is_a?(RPG::Item) && !item.key_item? when :weapon item.is_a?(RPG::Weapon) when :armor item.is_a?(RPG::Armor) when :key_item item.is_a?(RPG::Item) && item.key_item? when :all_item item.is_a?(RPG::Item) || item.is_a?(RPG::Armor) || item.is_a?(RPG::Weapon) else ###### NEED TO CHECK FOR CUSTOM CATEGORIES HERE AND ###### DECIDE IF TO INCLUDE THE ITEM TO IT @icategory = item.item_category for i in @icategory do if @category == i return item.item_category.include?(@category) end end return false end #when end #def end #class #=============================================================================# # Allows for the customisation of the help window. #=============================================================================# class Window_Help < Window_Base alias icat_help_initialize initialize def initialize(line_number = 2) if ICAT::DEFAULT_SCENE_ITEM_LAYOUT super(0, 0, Graphics.width, fitting_height(line_number)) else super( ICAT::HELP_WINDOW_POSITION[0], ICAT::HELP_WINDOW_POSITION[1], ICAT::HELP_WINDOW_WIDTH, fitting_height(ICAT::HELP_WINDOW_NUM_OF_LINES)) end end end #class #=============================================================================# # Creates the entire item scene: item window, item categories, help window. #=============================================================================# class Scene_Item < Scene_ItemBase alias icat_create_category_window create_category_window #Create the item category window. def create_category_window @category_window = ICAT_WindowItemCategory.new @category_window.viewport = @viewport @category_window.help_window = @help_window @category_window.x = ICAT::CATEGORY_WINDOW_POSITION[0] if ICAT::DEFAULT_SCENE_ITEM_LAYOUT #customise check @category_window.y = @help_window.height else @category_window.y = ICAT::CATEGORY_WINDOW_POSITION[1] end @category_window.set_handler(:ok, method(:on_category_ok)) @category_window.set_handler(:cancel, method(:return_scene)) @category_window.opacity = 255 #255=totally opaque @category_window.back_opacity = 255 #255=totally opaque @category_window.contents_opacity = 255 #255=totally opaque end #Create the item list window. alias icat_create_item_window create_item_window def create_item_window if ICAT::DEFAULT_SCENE_ITEM_LAYOUT #customise check wy = @category_window.y + @category_window.height wh = Graphics.height - wy else wy = ICAT::ITEMLIST_WINDOW_POSITION[1] wh = ICAT::ITEMLIST_WINDOW_HEIGHT end @item_window = Window_ItemList.new(0, wy, Graphics.width, wh) @item_window.viewport = @viewport @item_window.help_window = @help_window @item_window.set_handler(:ok, method(:on_item_ok)) @item_window.set_handler(:cancel, method(:on_item_cancel)) @category_window.item_window = @item_window end end #class #=============================================================================# # -------------------------------END OF SCRIPT------------------------------- # #=============================================================================# I'm thinking about the ability for a category to be disabled using switches for each category. I may not do that yet, but if anyone is willing then go right ahead. I also wanted to do the descriptions with symbols too, so that it would be more automatic and less of a bother to change when rearranging the order of the categories. Edited January 3, 2012 by Seiryuki 1 cyborgmermaid reacted to this Share this post Link to post Share on other sites
cyborgmermaid 1 Posted May 19, 2012 Yesss! I've so been looking forward to something like this. I love Ace categories, but I use them for work behind the scenes; I'd been hoping for a way to hide them the player, so this is a great help! Now if there was just a solution to the battle window to get it back to where it just showed "Skills" I'd be one very happy designer Share this post Link to post Share on other sites
Seiryuki 14 Posted May 20, 2012 Now if there was just a solution to the battle window to get it back to where it just showed "Skills" I'd be one very happy designer I don't quite understand. Do you mean like a "Skills" category where you can select it and a window opens with all the skills/abilities in it? If so, then you can do already do that in the Database under the Terms tab. Create your Skill-Types (you can just create one: "Skills") and then under the Skills tab you would assign the Skills-Type "Skills" to each skill that you want in that category (skill-types are basically categories). Then make sure that the actor or class has that Skill-Type added under Traits. Now when you go in battle you would see the "Skills" category and you can select it to open up a window containing the list of skills, assuming that the actor has already learned some of those skills. If you want more control over Skill-Types in a similar way to the Categorize Item Scene script above, you can make use of this script by Kread-Ex: http://grimoirecastle.wordpress.com/2012/01/17/multiple-skill-types/ or a similar script by FenixFyreX: http://www.rpgmakervxace.net/topic/964-multiple-skill-types-per-skill/ It allows you to assign a skill to multiple skill-types. I use this script to have more behind-the-scenes power over what the player sees in the Skill-Type categories. I also created a script that makes use of the Multiple Skill-Types script above: http://rmrk.net/index.php?topic=44946.0 It is called: Skill Menu With Horizontal Skill-Type Commands, and it overrides the default Skill Menu to have horizontal skill-type list instead of vertical (because I like it like that).....but.....it also has a neat feature that allows you to specify what skill-types you want to hide for each actor. Very powerful. 1 cyborgmermaid reacted to this Share this post Link to post Share on other sites
Begie 0 Posted November 28, 2012 Hi there ! Nice script, i was really needing it. is there a way to add the same categories in the shop scene ? Or do you plan to make it avaible for the future ? thanks in advance Share this post Link to post Share on other sites
+ DarthVollis 59 Posted February 17, 2013 I want to know if you would make it where we could use and icon instead of the word. Like for weapons I could just have a weapon. Share this post Link to post Share on other sites
Seiryuki 14 Posted February 18, 2013 I want to know if you would make it where we could use and icon instead of the word. Like for weapons I could just have a weapon. I don't have any current plans to add that feature (although I would love to) primarily because I'm too preoccupied with school and work. However, please take a look at modern_algebra's script here: http://rmrk.net/index.php/topic,46516.0.html Share this post Link to post Share on other sites
+ DarthVollis 59 Posted February 20, 2013 Thanks. I will look into it. Share this post Link to post Share on other sites
mikiito 0 Posted January 4, 2014 Awesome man, awesome script, thanks. Share this post Link to post Share on other sites
Kelomancer 0 Posted February 22, 2014 Thank you very much for this script, Seiryuki. Share this post Link to post Share on other sites
flashkickguile 1 Posted June 6, 2014 I have 8 different categories for items, instead of scrolling left and right, is there a way to make the category window 4x2 so all 8 categories are shown for easier navigation? Share this post Link to post Share on other sites
AeghtyAteKees 11 Posted December 18, 2014 Could there be a way for the category to only be displayed if the inventory contained items with that tag? Share this post Link to post Share on other sites
AxD141 6 Posted January 31, 2015 Urh is it just me or do the custom categories don't appear at all when selling items at shops? Only the default Items, Weapons, Armors and Key Items are present. Share this post Link to post Share on other sites
fbu 54 Posted September 8, 2015 Forgive me the necroposting but... I would take a bullet for you! One of the most essential scripts I've seen around! The player benefits from this, specially if the game has hundreds of crafting ingredients and special items and all you want is to find that health potion! Share this post Link to post Share on other sites
RupamOntherocks 11 Posted September 1, 2016 Not able to edit Window_ItemList position. It's always stuck below "Category Window". Share this post Link to post Share on other sites