- Joined
- Sep 16, 2012
- Messages
- 5,781
- Reaction score
- 1,041
- First Language
- English
- Primarily Uses
#~ #===============================================================#==================== 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 = { :questnote => "Quests", #example tag: <category QuestNote># :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 => "Items", #reserved symbol, but can be removed. :weapon => "Weapons", #reserved symbol, but can be removed. :armor => "Armor", #reserved symbol, but can be removed. :key_item => "Key Items", #reserved symbol, but can be removed.# :all_item => "*ALL*", #reserved symbol, but can be removed. :questnote => "Quests",# :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 quest notes.",# "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 = false #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 = nil #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:
EFAULT_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:
EFAULT_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 = 250 #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:
EFAULT_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------------------------------- ##=============================================================================#
Last edited by a moderator:

