赞 | 5 |
VIP | 71 |
好人卡 | 22 |
积分 | 6 |
经验 | 32145 |
最后登录 | 2013-8-9 |
在线时间 | 184 小时 |
Lv2.观梦者 天仙
- 梦石
- 0
- 星屑
- 620
- 在线时间
- 184 小时
- 注册时间
- 2008-4-15
- 帖子
- 5023
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
物品分类脚本
来源:http://f44.aaa.livedoor.jp/~ytom ... ech=categorize_item
翻译了最前面的设置方面的注释
其他的就不翻了
其实我也不会日文,大多都是用翻译引擎和一脚本内容推测的
使用方法请看注释
效果截图:
自动分类时,物品价格设置为0就会被归类为「贵重物品」= =" 好贵重啊~~
脚本:
- #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
- #_/ ◆ アイテム分類 - KGC_CategorizeItem ◆ VX ◆
- #_/ ◇ Last update : 2008/01/12 ◇
- #_/ 翻译:snstar2006
- #_/----------------------------------------------------------------------------
- #_/ アイテムや武器、防具を種類別に分類する機能を作成します。
- #_/
- #_/
- #_/ 设置方法:在物品、武器、防具的备注栏里打上如下格式:
- #_/ <分类 类别>
- #_/ 类别以你在 「种类 识别名称」 设置的名称分类
- #_/ 若是找不到分类名称,就会归在默认的物品种类下
- #_/ 详细设置请看下面的注释
- #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
- $data_system = load_data("Data/System.rvdata") if $data_system == nil
- #==============================================================================
- # ★ カスタマイズ項目 - Customize ★
- #==============================================================================
- module KGC
- module CategorizeItem
- # ◆ 自動振り分けを行う
- # ◆ 自動分类
- # 不需在备注栏设置,会根据下面的设定自动分类
- #=================================================
- # 所有物品:所有的物品包括物品、武器、各类防具
- # 贵重物品:价格设置为0的物品(好贵重啊 = =")
- # 武器: 所有的武器(废话)
- # 盾: 盾类防具
- # 头部防具:头部防具
- # 身体防具:身体防具
- # 装饰品: 装饰品
- # = = 所有防具的说明都是废话
- ENABLE_AUTO_CATEGORIZE = true
-
-
-
- # ◆ 複数のカテゴリには配置しない
- # true にすると、いずれか1つのカテゴリにしか振り分けなくなります。
- # (「全種」は例外)
-
- # ◆ 多种类设置
- # 设置为 true 时,物品可以设置为多种类
- # 设置为 false时,物品会被归为最後设置的种类
- # (「全種」は例外)
-
- NOT_ALLOW_DUPLICATE = true
- # ◆ カテゴリ識別名
- # メモ欄でカテゴリを識別するための名称を並べてください。
- # 以下の名称は、メモ欄に記述する必要はありません。
- # "全種", "貴重品", "武器", "防具", "盾", "頭防具", "身体防具", "装飾品"
-
- # ◆ 种类 识别名称
- # 在数据库的「备注」栏填入以下名称
- # 用来分别物品/装备类别
- # "全種", "貴重品", "武器", "防具", "盾", "頭防具", "身体防具", "装飾品"
- CATEGORY_IDENTIFIER = [
- "一般物品",
- "战斗中使用",
- "武器",
- "盾",
- "頭部防具",
- "身体防具",
- "装饰品",
- "貴重物品",
- "剧情物品",
- "全部种类", # ← 最後的类别,显示全部物品
- ]
- # ◆ アイテムのデフォルトカテゴリ
- # どのカテゴリにも当てはまらないアイテムの割り当て先です。
-
- # ◆ 默认物品种类
- # 没有设定种类、或是分类名称找不到的物品自动归到此类中
- ITEM_DEFAULT_CATEGORY = "一般物品"
- # ◆ リストに表示する名称
- # アイテム画面で分類ウィンドウに表示する名称です。
- # 「カテゴリ識別名」と同じ順に並べてください。
-
- # ◆ 种类 名称
- # 在物品画面显示的种类名称
- # 务必与上面所设置的「种类 识别名称」一样的顺序
- CATEGORY_NAME = [
- "一般",
- "战斗中使用",
- Vocab.weapon, # 武器
- Vocab.armor1, # 盾
- "#{Vocab.armor2}防具", # 頭防具
- "#{Vocab.armor3}防具", # 身体防具
- Vocab.armor4, # 装飾品
- "貴重物品",
- "剧情物品",
- "所有物品",
- ]
- # ◆ 分類の説明文
- # 「カテゴリ識別名」と同じ順に並べてください。
-
- # ◆ 种类的说明
- # 务必与上面所设置的「种类 识别名称」一样的顺序
-
- CATEGORY_DESCRIPTION = [
- "显示十分普通的#{Vocab.item}。",
- "显示战斗中使用的#{Vocab.item}。",
- "显示#{Vocab.weapon}。",
- "显示#{Vocab.armor1}。",
- "显示#{Vocab.armor2}防具。",
- "显示#{Vocab.armor3}防具。",
- "显示#{Vocab.armor4}。",
- "显示貴重物品。",
- "显示剧情#{Vocab.item}。",
- "显示所有#{Vocab.item}。",
- ]
- # ◆ 分類ウィンドウの座標 [x, y]
- # ◆ 分類窗口座標 [x, y]
- CATEGORY_WINDOW_POSITION = [264, 128]
-
- # ◆ 分類ウィンドウの列数
- # ◆ 分類窗口列数(应该是栏数吧)
- CATEGORY_WINDOW_COLUMNS = 2
-
- # ◆ 分類ウィンドウの列幅
- # ◆ 分類窗口列幅(栏的宽度)
- CATEGORY_WINDOW_COL_WIDTH = 96
-
- # ◆ 分類ウィンドウの列間の空白
- # ◆ 分類窗口列间空白(栏与栏之间的空格大小)
- CATEGORY_WINDOW_COL_SPACE = 32
- end
- end
- #==============================================================================
- # 设置结束
- #==============================================================================
- #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
- $imported = {} if $imported == nil
- $imported["CategorizeItem"] = true
- module KGC::CategorizeItem
- # アイテムのデフォルトカテゴリ index
- ITEM_DEFAULT_CATEGORY_INDEX = CATEGORY_IDENTIFIER.index(ITEM_DEFAULT_CATEGORY)
- # 予約カテゴリ index
- # 预留的类别 index (自动分类时用的)
- RESERVED_CATEGORY_INDEX = {
- "全部种类" => CATEGORY_IDENTIFIER.index("全部种类"),
- "貴重物品" => CATEGORY_IDENTIFIER.index("貴重物品"),
- "武器" => CATEGORY_IDENTIFIER.index("武器"),
- "防具" => CATEGORY_IDENTIFIER.index("防具"),
- "盾" => CATEGORY_IDENTIFIER.index("盾"),
- "頭部防具" => CATEGORY_IDENTIFIER.index("頭部防具"),
- "身体防具" => CATEGORY_IDENTIFIER.index("身体防具"),
- "装飾品" => CATEGORY_IDENTIFIER.index("装飾品")
- }
- # 正規表現を定義
- module Regexp
- # ベースアイテム
- module BaseItem
- # カテゴリ
- # 类别(就是在备注栏里设置时的写法,建议别改)
- CATEGORY = /^<(?: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
- #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
- #==============================================================================
- # ■ 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["貴重物品"]
- end
- super
- end
- end
- #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
- #==============================================================================
- # ■ RPG::Weapon
- #==============================================================================
- class RPG::Weapon < RPG::BaseItem
- #--------------------------------------------------------------------------
- # ○ アイテム分類のキャッシュ生成
- #--------------------------------------------------------------------------
- def create_categorize_item_cache
- @__item_category = []
- @__item_category << KGC::CategorizeItem::RESERVED_CATEGORY_INDEX["武器"]
- super
- end
- end
- #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
- #==============================================================================
- # ■ RPG::Armor
- #==============================================================================
- class RPG::Armor < RPG::BaseItem
- #--------------------------------------------------------------------------
- # ○ アイテム分類のキャッシュ生成
- #--------------------------------------------------------------------------
- def create_categorize_item_cache
- @__item_category = []
- @__item_category << KGC::CategorizeItem::RESERVED_CATEGORY_INDEX["防具"]
- type = nil
- case self.kind
- when 0
- type = "盾"
- when 1
- type = "頭部防具"
- when 2
- type = "身体防具"
- when 3
- type = "装飾品"
- end
- if type != nil
- @__item_category << KGC::CategorizeItem::RESERVED_CATEGORY_INDEX[type]
- end
- super
- end
- end
- #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
- #==============================================================================
- # ■ 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["全部种类"]
- 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
- #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
- #==============================================================================
- # □ 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
- #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★
- #==============================================================================
- # ■ 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
复制代码 |
|