RPG Maker VX/VXAce - La Communauté - v3
Le forum de la communauté francophone de making. News, entraide, ressources, venez nombreux!
Spécialisés dans RPG Maker VX et RPG Maker VXAce

AccueilPage d'accueilFAQRechercherS'enregistrerConnexion



Partager | 
 

 Item categories

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
T. à la menthe
Administrateur, Fondateur, Vieillard acariâtre
Administrateur, Fondateur, Vieillard acariâtre


Nombre de messages: 3382
Age: 99
Localisation: Erem Vehyx
Avertissements: Avertissements infinis |-)
Distinction: Flooder invisible [Coco']

Maître vénéré [Les Kikoolol]

Champion de boxe et au lit ! :O [Wax]

Être Mythique [Sisitkt]

Papi T. qui a l'ostéoporose [Skillo]

Soldat Ikéa [Coco']
Date d'inscription: 16/12/2007

MessageSujet: Item categories   Lun 28 Juil 2008 - 0:03




Place it before Main :

1st part:

Code:
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
#_/    ◆            Item Categorization - KGC_CategorizeItem            ◆ VX ◆
#_/    ◇                  Last update : 2008/04/10                            ◇
#_/    ◇                Translated by Mr. Anonymous                          ◇
#_/-----------------------------------------------------------------------------
#_/  Adds a function to the Items screen which allows the player to display
#_/  items by catagory.
#_/  To assign a category to an item, you must add <category IDENTIFIER> to the
#_/  notes on the specified item.
#_/  EX. A Potion would be listed as <category Goods> and a Sword would be
#_/  listed as <category Weapons>, provided you use the default terminology.
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_

$data_system = load_data("Data/System.rvdata") if $data_system == nil

#==============================================================================#
#                            ★ Customization ★                                #       
#==============================================================================#

module KGC
module CategorizeItem
  #                  ◆ Automatically Catagorize Items ◆
  ENABLE_AUTO_CATEGORIZE = true
 
  #                  ◆ Duplicate Category Entries. ◆
  #  Set to false, items can have multiple categories.
  #  Set to true, items will be classified under the last tag (In the item
  #  databasexsd "Notes")
  NOT_ALLOW_DUPLICATE = false

  #                      ◆ Category Identifier ◆
  #  Arrange names in order to identify a category with the category identifier.
  #  These are the default item catagories translated for future reference.
  #  "Goods", "Combat", "Weapons", "Shields", "Head Gear", "Body Gear",
  #  "Accessories", "Valuables", "Special Items", "All Items"
  CATEGORY_IDENTIFIER = [
    "Goods",          # Consumable items (potion)
    "Combat",        # Battle-only items (fire bomb)
    "Weapons",        # Weapons
    "Shields",        # Shields
    "Helmets",        # Head Gear / Helmets
    "Armor",          # Body Gear / Armor
    "Accessories",    # Accessories / Rings, Necklaces, etc
    "Valuables",      # Treasures and the like
    "Special Items",  # AKA Plot Devices. Special keys, etc.
    "All Items",      # According to the script's author(s), it isn't neccessary
                      # to set this in brackets for item notes, it's automatic.
                      # However, I must note that I haven't gotten this to work
                      # correctly.
  ]
 
  #                  ◆ Default Catagory Display ◆
  #  Not hard to figure this one out.
  ITEM_DEFAULT_CATEGORY = "Goods"

  #                  ◆ Item Screen Category Name ◆
  #  Shows what current category is selected in the item description window.
  #  Must be arranged in the same order as CATAGORY_IDENTIFIER.
  CATEGORY_NAME = [
    "Goods",
    "Combat",
    Vocab.weapon,                # Weapons
    Vocab.armor1,                # Shields
    "#{Vocab.armor2}",          # Head Gear
    "#{Vocab.armor3}",          # Body Gear
    Vocab.armor4,                # Accessories
    "Valuables",
    "Special",
    "All",
  ]

  #                      ◆ Descriptive Text ◆
  #  Must be arranged in the same order as CATAGORY_IDENTIFIER
  CATEGORY_DESCRIPTION = [
    "Viewing #{Vocab.item}.",
    "Viewing Combat #{Vocab.item}. For use during battle.",
    "Viewing #{Vocab.weapon}s.",
    "Viewing #{Vocab.armor1}s.",
    "Viewing #{Vocab.armor2}s.",
    "Viewing #{Vocab.armor3}s.",
    "Viewing #{Vocab.armor4}.",
    "Viewing Valuables.",
    "Viewing Special #{Vocab.item} items.",
    "Viewing All #{Vocab.item} goods.",
  ]

  # ◆ Coordinates of item description window. [ x, y ]
  CATEGORY_WINDOW_POSITION  = [264, 128]
  # ◆ Number of rows in the item description window.
  CATEGORY_WINDOW_COLUMNS  = 2
  # ◆ Item description window column line width.
  CATEGORY_WINDOW_COL_WIDTH = 96
  # ◆ item description window column spacer width.
  CATEGORY_WINDOW_COL_SPACE = 32
end
end

#------------------------------------------------------------------------------#

$imported = {} if $imported == nil
$imported["CategorizeItem"] = true

module KGC::CategorizeItem
  #                        ◆ Item Index ◆
  ITEM_DEFAULT_CATEGORY_INDEX = CATEGORY_IDENTIFIER.index(ITEM_DEFAULT_CATEGORY)

  #                    ◆ Reserved Category Index ◆
  #  To be honest I'm not entirely sure what this affects.
  RESERVED_CATEGORY_INDEX = {
    "All Items"    => CATEGORY_IDENTIFIER.index("All Items"),
    "Valuables"  => CATEGORY_IDENTIFIER.index("Valuables"),
    "Weapons"    => CATEGORY_IDENTIFIER.index("Weapons"),
    "Gear"    => CATEGORY_IDENTIFIER.index("Gear"),
    "Shields"      => CATEGORY_IDENTIFIER.index("Shields"),
    "Head Gear"  => CATEGORY_IDENTIFIER.index("Head Gear"),
    "Body Gear" => CATEGORY_IDENTIFIER.index("Body Gear"),
    "Accessories"  => CATEGORY_IDENTIFIER.index("Accessories")
  }


Dernière édition par Tretian le Lun 28 Juil 2008 - 0:04, édité 1 fois
Revenir en haut Aller en bas
http://www.rpgmakervx-fr.com/
T. à la menthe
Administrateur, Fondateur, Vieillard acariâtre
Administrateur, Fondateur, Vieillard acariâtre


Nombre de messages: 3382
Age: 99
Localisation: Erem Vehyx
Avertissements: Avertissements infinis |-)
Distinction: Flooder invisible [Coco']

Maître vénéré [Les Kikoolol]

Champion de boxe et au lit ! :O [Wax]

Être Mythique [Sisitkt]

Papi T. qui a l'ostéoporose [Skillo]

Soldat Ikéa [Coco']
Date d'inscription: 16/12/2007

MessageSujet: Re: Item categories   Lun 28 Juil 2008 - 0:03

2nd part - suite:

Code:
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #
# Unless you know what you're doing, it's best not to alter anything beyond #
# this point, as this only affects the tags used for "Notes" in database. #
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * #
# Whatever word(s) are after the separator ( | ) in the following lines are
# what are used to determine what is searched for in the "Notes" section.

# Regular Expression Definition
module Regexp
# Base Item Module
module BaseItem
# Category tag string
CATEGORY = /^<(?:CATEGORY|classification|category?)[ ]*(.*)>/i
end
end
end

#==============================================================================
# ■ RPG::BaseItem
#==============================================================================

class RPG::BaseItem
#--------------------------------------------------------------------------
# ○ アイテム分類のキャッシュ生成
#--------------------------------------------------------------------------
def create_categorize_item_cache
if @__item_category == nil || !KGC::CategorizeItem::ENABLE_AUTO_CATEGORIZE
@__item_category = []
else
@__item_category.compact!
end

self.note.split(/[\r\n]+/).each { |line|
if line =~ KGC::CategorizeItem::Regexp::BaseItem::CATEGORY
# カテゴリ
c = KGC::CategorizeItem::CATEGORY_IDENTIFIER.index($1)
@__item_category << c if c != nil
end
}
if @__item_category.empty?
@__item_category << KGC::CategorizeItem::ITEM_DEFAULT_CATEGORY_INDEX
elsif KGC::CategorizeItem::NOT_ALLOW_DUPLICATE
# 最後に指定したカテゴリに配置
@__item_category = [@__item_category.pop]
end
end
#--------------------------------------------------------------------------
# ○ アイテムのカテゴリ
#--------------------------------------------------------------------------
def item_category
create_categorize_item_cache if @__item_category == nil
return @__item_category
end
end

#==================================End Class===================================#

#==============================================================================
# ■ RPG::UsableItem
#==============================================================================

class RPG::UsableItem < RPG::BaseItem
#--------------------------------------------------------------------------
# ○ アイテム分類のキャッシュ生成
#--------------------------------------------------------------------------
def create_categorize_item_cache
@__item_category = []
if self.price == 0
@__item_category << KGC::CategorizeItem::RESERVED_CATEGORY_INDEX["Valuables"]
end
super
end
end

#==================================End Class===================================#

#==============================================================================
# ■ RPG::Weapon
#==============================================================================

class RPG::Weapon < RPG::BaseItem
#--------------------------------------------------------------------------
# ○ アイテム分類のキャッシュ生成
#--------------------------------------------------------------------------
def create_categorize_item_cache
@__item_category = []
@__item_category << KGC::CategorizeItem::RESERVED_CATEGORY_INDEX["Weapon"]
super
end
end

#==================================End Class===================================#

#==============================================================================
# ■ RPG::Armor
#==============================================================================

class RPG::Armor < RPG::BaseItem
#--------------------------------------------------------------------------
# ○ アイテム分類のキャッシュ生成
#--------------------------------------------------------------------------
def create_categorize_item_cache
@__item_category = []
@__item_category << KGC::CategorizeItem::RESERVED_CATEGORY_INDEX["Armor"]
type = nil
case self.kind
when 0
type = "Shields"
when 1
type = "Head Gear"
when 2
type = "Body Gear"
when 3
type = "Accessories"
end
if type != nil
@__item_category << KGC::CategorizeItem::RESERVED_CATEGORY_INDEX[type]
end
super
end
end

#==================================End Class===================================#

#==============================================================================
# ■ Window_Item
#==============================================================================

class Window_Item < Window_Selectable
#--------------------------------------------------------------------------
# ● 公開インスタンス変数
#--------------------------------------------------------------------------
attr_reader :category # カテゴリ
#--------------------------------------------------------------------------
# ● オブジェクト初期化
# x : ウィンドウの X 座標
# y : ウィンドウの Y 座標
# width : ウィンドウの幅
# height : ウィンドウの高さ
#--------------------------------------------------------------------------
alias initialize_KGC_CategorizeItem initialize
def initialize(x, y, width, height)
@category = 0

initialize_KGC_CategorizeItem(x, y, width, height)
end
#--------------------------------------------------------------------------
# ○ カテゴリ設定
#--------------------------------------------------------------------------
def category=(value)
@category = value
refresh
end
#--------------------------------------------------------------------------
# ● アイテムをリストに含めるかどうか
# item : アイテム
#--------------------------------------------------------------------------
alias include_KGC_CategorizeItem? include?
def include?(item)
return false if item == nil

# 「全種」なら無条件で含める
if @category == KGC::CategorizeItem::RESERVED_CATEGORY_INDEX["All Items"]
return true
end

result = include_KGC_CategorizeItem?(item)

unless result
# 使用可能なら追加候補とする
if $imported["UsableEquipment"] && $game_party.item_can_use?(item)
result = true
end
end
# 戦闘外ならカテゴリ一致判定
unless $game_temp.in_battle
result &= (item.item_category.include?(@category))
end

return result
end
end

#==================================End Class===================================#

#==============================================================================
# □ Window_ItemCategory
#------------------------------------------------------------------------------
#  アイテム画面でカテゴリ選択を行うウィンドウです。
#==============================================================================

class Window_ItemCategory < Window_Command
#--------------------------------------------------------------------------
# ● オブジェクト初期化
#--------------------------------------------------------------------------
def initialize
cols = KGC::CategorizeItem::CATEGORY_WINDOW_COLUMNS
width = KGC::CategorizeItem::CATEGORY_WINDOW_COL_WIDTH * cols + 32
width += (cols - 1) * KGC::CategorizeItem::CATEGORY_WINDOW_COL_SPACE
commands = KGC::CategorizeItem::CATEGORY_NAME
super(width, commands, cols, 0,
KGC::CategorizeItem::CATEGORY_WINDOW_COL_SPACE)
self.x = KGC::CategorizeItem::CATEGORY_WINDOW_POSITION[0]
self.y = KGC::CategorizeItem::CATEGORY_WINDOW_POSITION[1]
self.z = 1000
self.index = 0
end
#--------------------------------------------------------------------------
# ● ヘルプテキスト更新
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(KGC::CategorizeItem::CATEGORY_DESCRIPTION[self.index])
end
end

#==================================End Class===================================#

#==============================================================================
# ■ Scene_Item
#==============================================================================

class Scene_Item < Scene_Base
#--------------------------------------------------------------------------
# ● 開始処理
#--------------------------------------------------------------------------
alias start_KGC_CategorizeItem start
def start
start_KGC_CategorizeItem

@category_window = Window_ItemCategory.new
@category_window.help_window = @help_window
show_category_window
end
#--------------------------------------------------------------------------
# ● 終了処理
#--------------------------------------------------------------------------
alias terminate_KGC_CategorizeItem terminate
def terminate
terminate_KGC_CategorizeItem

@category_window.dispose
end
#--------------------------------------------------------------------------
# ● フレーム更新
#--------------------------------------------------------------------------
alias update_KGC_CategorizeItem update
def update
@category_window.update

update_KGC_CategorizeItem

if @category_window.active
update_category_selection
end
end
#--------------------------------------------------------------------------
# ○ カテゴリ選択の更新
#--------------------------------------------------------------------------
def update_category_selection
unless @category_activated
@category_activated = true
return
end

# 選択カテゴリー変更
if @last_category_index != @category_window.index
@item_window.category = @category_window.index
@item_window.refresh
@last_category_index = @category_window.index
end

if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
elsif Input.trigger?(Input::C)
Sound.play_decision
hide_category_window
end
end
#--------------------------------------------------------------------------
# ● アイテム選択の更新
#--------------------------------------------------------------------------
alias update_item_selection_KGC_CategorizeItem update_item_selection
def update_item_selection
if Input.trigger?(Input::B)
Sound.play_cancel
show_category_window
return
end

update_item_selection_KGC_CategorizeItem
end
#--------------------------------------------------------------------------
# ○ カテゴリウィンドウの表示
#--------------------------------------------------------------------------
def show_category_window
@category_window.open
@category_window.active = true
@item_window.active = false
end
#--------------------------------------------------------------------------
# ○ カテゴリウィンドウの非表示
#--------------------------------------------------------------------------
def hide_category_window
@category_activated = false
@category_window.close
@category_window.active = false
@item_window.active = true
# アイテムウィンドウのインデックスを調整
if @item_window.index >= @item_window.item_max
@item_window.index = [@item_window.item_max - 1, 0].max
end
end
end

#==================================End Class===================================#

#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
#_/ The original untranslated version of this 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
#_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_
Revenir en haut Aller en bas
http://www.rpgmakervx-fr.com/
 

Item categories

Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1

 Sujets similaires

-
» Projet Communautaire: Creation d'une Item List
» L'item qu'il ne fallait pas implanter...
» Item dans PNJ (Serveur)
» Item terre sur kuri
» [Vente] Item et dofus

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
RPG Maker VX/VXAce - La Communauté - v3 :: International forum-
Web Designers : Widowan, SD-Arius, Coco-Drift & Mist'

|
Forum gratuit | © phpBB | Forum gratuit d'entraide | Contact | Signaler un abus | Créer un forum