设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 5170|回复: 6
打印 上一主题 下一主题

物品分类脚本(汉化)

 关闭 [复制链接]

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

跳转到指定楼层
1
发表于 2008-2-10 19:07:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
物品分类脚本

来源:http://f44.aaa.livedoor.jp/~ytom ... ech=categorize_item

翻译了最前面的设置方面的注释
其他的就不翻了

其实我也不会日文,大多都是用翻译引擎和一脚本内容推测的

使用方法请看注释

效果截图:



自动分类时,物品价格设置为0就会被归类为「贵重物品」= =" 好贵重啊~~


脚本:

  1. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
  2. #_/    ◆ アイテム分類 - KGC_CategorizeItem ◆ VX ◆
  3. #_/    ◇ Last update : 2008/01/12 ◇
  4. #_/    翻译:snstar2006
  5. #_/----------------------------------------------------------------------------
  6. #_/  アイテムや武器、防具を種類別に分類する機能を作成します。
  7. #_/  
  8. #_/  
  9. #_/  设置方法:在物品、武器、防具的备注栏里打上如下格式:
  10. #_/       <分类 类别>
  11. #_/      类别以你在 「种类 识别名称」 设置的名称分类
  12. #_/      若是找不到分类名称,就会归在默认的物品种类下
  13. #_/     详细设置请看下面的注释
  14. #_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

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

  16. #==============================================================================
  17. # ★ カスタマイズ項目 - Customize ★
  18. #==============================================================================

  19. module KGC
  20. module CategorizeItem
  21.   # ◆ 自動振り分けを行う
  22.   # ◆ 自動分类
  23.   #    不需在备注栏设置,会根据下面的设定自动分类
  24.   #=================================================
  25.   #    所有物品:所有的物品包括物品、武器、各类防具
  26.   #    贵重物品:价格设置为0的物品(好贵重啊 = =")
  27.   #    武器:    所有的武器(废话)
  28.   #    盾:      盾类防具
  29.   #    头部防具:头部防具
  30.   #    身体防具:身体防具
  31.   #    装饰品:  装饰品
  32.   #        = = 所有防具的说明都是废话
  33.   ENABLE_AUTO_CATEGORIZE = true
  34.   
  35.   
  36.   
  37.   # ◆ 複数のカテゴリには配置しない
  38.   #  true にすると、いずれか1つのカテゴリにしか振り分けなくなります。
  39.   #  (「全種」は例外)
  40.   
  41.   # ◆ 多种类设置
  42.   #  设置为 true 时,物品可以设置为多种类
  43.   #  设置为 false时,物品会被归为最後设置的种类
  44.   #  (「全種」は例外)
  45.   
  46.   NOT_ALLOW_DUPLICATE = true

  47.   # ◆ カテゴリ識別名
  48.   #  メモ欄でカテゴリを識別するための名称を並べてください。
  49.   #  以下の名称は、メモ欄に記述する必要はありません。
  50.   #   "全種", "貴重品", "武器", "防具", "盾", "頭防具", "身体防具", "装飾品"
  51.   
  52.   # ◆ 种类 识别名称
  53.   #  在数据库的「备注」栏填入以下名称
  54.   #  用来分别物品/装备类别
  55.   #   "全種", "貴重品", "武器", "防具", "盾", "頭防具", "身体防具", "装飾品"
  56.   CATEGORY_IDENTIFIER = [
  57.     "一般物品",
  58.     "战斗中使用",
  59.     "武器",
  60.     "盾",
  61.     "頭部防具",
  62.     "身体防具",
  63.     "装饰品",
  64.     "貴重物品",
  65.     "剧情物品",
  66.     "全部种类",  # ← 最後的类别,显示全部物品
  67.   ]
  68.   # ◆ アイテムのデフォルトカテゴリ
  69.   #  どのカテゴリにも当てはまらないアイテムの割り当て先です。
  70.   
  71.   # ◆ 默认物品种类
  72.   #  没有设定种类、或是分类名称找不到的物品自动归到此类中
  73.   ITEM_DEFAULT_CATEGORY = "一般物品"

  74.   # ◆ リストに表示する名称
  75.   #  アイテム画面で分類ウィンドウに表示する名称です。
  76.   #  「カテゴリ識別名」と同じ順に並べてください。
  77.   
  78.   # ◆ 种类 名称
  79.   #  在物品画面显示的种类名称
  80.   #  务必与上面所设置的「种类 识别名称」一样的顺序
  81.   CATEGORY_NAME = [
  82.     "一般",
  83.     "战斗中使用",
  84.     Vocab.weapon,           # 武器
  85.     Vocab.armor1,           # 盾
  86.     "#{Vocab.armor2}防具",  # 頭防具
  87.     "#{Vocab.armor3}防具",  # 身体防具
  88.     Vocab.armor4,           # 装飾品
  89.     "貴重物品",
  90.     "剧情物品",
  91.     "所有物品",
  92.   ]

  93.   # ◆ 分類の説明文
  94.   #  「カテゴリ識別名」と同じ順に並べてください。
  95.   
  96.   # ◆ 种类的说明
  97.   #  务必与上面所设置的「种类 识别名称」一样的顺序
  98.   
  99.   CATEGORY_DESCRIPTION = [
  100.     "显示十分普通的#{Vocab.item}。",
  101.     "显示战斗中使用的#{Vocab.item}。",
  102.     "显示#{Vocab.weapon}。",
  103.     "显示#{Vocab.armor1}。",
  104.     "显示#{Vocab.armor2}防具。",
  105.     "显示#{Vocab.armor3}防具。",
  106.     "显示#{Vocab.armor4}。",
  107.     "显示貴重物品。",
  108.     "显示剧情#{Vocab.item}。",
  109.     "显示所有#{Vocab.item}。",
  110.   ]

  111.   # ◆ 分類ウィンドウの座標 [x, y]
  112.   # ◆ 分類窗口座標 [x, y]
  113.   CATEGORY_WINDOW_POSITION  = [264, 128]
  114.   
  115.   # ◆ 分類ウィンドウの列数
  116.   # ◆ 分類窗口列数(应该是栏数吧)
  117.   CATEGORY_WINDOW_COLUMNS   = 2
  118.   
  119.   # ◆ 分類ウィンドウの列幅
  120.   # ◆ 分類窗口列幅(栏的宽度)
  121.   CATEGORY_WINDOW_COL_WIDTH = 96
  122.   
  123.   # ◆ 分類ウィンドウの列間の空白
  124.   # ◆ 分類窗口列间空白(栏与栏之间的空格大小)
  125.   CATEGORY_WINDOW_COL_SPACE = 32
  126. end
  127. end

  128. #==============================================================================
  129. #    设置结束
  130. #==============================================================================
  131. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

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

  134. module KGC::CategorizeItem
  135.   # アイテムのデフォルトカテゴリ index
  136.   ITEM_DEFAULT_CATEGORY_INDEX = CATEGORY_IDENTIFIER.index(ITEM_DEFAULT_CATEGORY)

  137.   # 予約カテゴリ index
  138.   # 预留的类别 index (自动分类时用的)
  139.   RESERVED_CATEGORY_INDEX = {
  140.     "全部种类"     => CATEGORY_IDENTIFIER.index("全部种类"),
  141.     "貴重物品"   => CATEGORY_IDENTIFIER.index("貴重物品"),
  142.     "武器"     => CATEGORY_IDENTIFIER.index("武器"),
  143.     "防具"     => CATEGORY_IDENTIFIER.index("防具"),
  144.     "盾"       => CATEGORY_IDENTIFIER.index("盾"),
  145.     "頭部防具"   => CATEGORY_IDENTIFIER.index("頭部防具"),
  146.     "身体防具" => CATEGORY_IDENTIFIER.index("身体防具"),
  147.     "装飾品"   => CATEGORY_IDENTIFIER.index("装飾品")
  148.   }

  149.   # 正規表現を定義
  150.   module Regexp
  151.     # ベースアイテム
  152.     module BaseItem
  153.       # カテゴリ
  154.       # 类别(就是在备注栏里设置时的写法,建议别改)
  155.       CATEGORY = /^<(?:CATEGORY|分类|カテゴリー?)[ ]*(.*)>/i
  156.     end
  157.   end
  158. end

  159. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  160. #==============================================================================
  161. # ■ RPG::BaseItem
  162. #==============================================================================

  163. class RPG::BaseItem
  164.   #--------------------------------------------------------------------------
  165.   # ○ アイテム分類のキャッシュ生成
  166.   #--------------------------------------------------------------------------
  167.   def create_categorize_item_cache
  168.     if @__item_category == nil || !KGC::CategorizeItem::ENABLE_AUTO_CATEGORIZE
  169.       @__item_category = []
  170.     else
  171.       @__item_category.compact!
  172.     end

  173.     self.note.split(/[\r\n]+/).each { |line|
  174.       if line =~ KGC::CategorizeItem::Regexp::BaseItem::CATEGORY
  175.         # カテゴリ
  176.         c = KGC::CategorizeItem::CATEGORY_IDENTIFIER.index($1)
  177.         @__item_category << c if c != nil
  178.       end
  179.     }
  180.     if @__item_category.empty?
  181.       @__item_category << KGC::CategorizeItem::ITEM_DEFAULT_CATEGORY_INDEX
  182.     elsif KGC::CategorizeItem::NOT_ALLOW_DUPLICATE
  183.       # 最後に指定したカテゴリに配置
  184.       @__item_category = [@__item_category.pop]
  185.     end
  186.   end
  187.   #--------------------------------------------------------------------------
  188.   # ○ アイテムのカテゴリ
  189.   #--------------------------------------------------------------------------
  190.   def item_category
  191.     create_categorize_item_cache if @__item_category == nil
  192.     return @__item_category
  193.   end
  194. end

  195. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  196. #==============================================================================
  197. # ■ RPG::UsableItem
  198. #==============================================================================

  199. class RPG::UsableItem < RPG::BaseItem
  200.   #--------------------------------------------------------------------------
  201.   # ○ アイテム分類のキャッシュ生成
  202.   #--------------------------------------------------------------------------
  203.   def create_categorize_item_cache
  204.     @__item_category = []
  205.     if self.price == 0
  206.       @__item_category << KGC::CategorizeItem::RESERVED_CATEGORY_INDEX["貴重物品"]
  207.     end
  208.     super
  209.   end
  210. end

  211. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  212. #==============================================================================
  213. # ■ RPG::Weapon
  214. #==============================================================================

  215. class RPG::Weapon < RPG::BaseItem
  216.   #--------------------------------------------------------------------------
  217.   # ○ アイテム分類のキャッシュ生成
  218.   #--------------------------------------------------------------------------
  219.   def create_categorize_item_cache
  220.     @__item_category = []
  221.     @__item_category << KGC::CategorizeItem::RESERVED_CATEGORY_INDEX["武器"]
  222.     super
  223.   end
  224. end

  225. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  226. #==============================================================================
  227. # ■ RPG::Armor
  228. #==============================================================================

  229. class RPG::Armor < RPG::BaseItem
  230.   #--------------------------------------------------------------------------
  231.   # ○ アイテム分類のキャッシュ生成
  232.   #--------------------------------------------------------------------------
  233.   def create_categorize_item_cache
  234.     @__item_category = []
  235.     @__item_category << KGC::CategorizeItem::RESERVED_CATEGORY_INDEX["防具"]
  236.     type = nil
  237.     case self.kind
  238.     when 0
  239.       type = "盾"
  240.     when 1
  241.       type = "頭部防具"
  242.     when 2
  243.       type = "身体防具"
  244.     when 3
  245.       type = "装飾品"
  246.     end
  247.     if type != nil
  248.       @__item_category << KGC::CategorizeItem::RESERVED_CATEGORY_INDEX[type]
  249.     end
  250.     super
  251.   end
  252. end

  253. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  254. #==============================================================================
  255. # ■ Window_Item
  256. #==============================================================================

  257. class Window_Item < Window_Selectable
  258.   #--------------------------------------------------------------------------
  259.   # ● 公開インスタンス変数
  260.   #--------------------------------------------------------------------------
  261.   attr_reader   :category                 # カテゴリ
  262.   #--------------------------------------------------------------------------
  263.   # ● オブジェクト初期化
  264.   #     x      : ウィンドウの X 座標
  265.   #     y      : ウィンドウの Y 座標
  266.   #     width  : ウィンドウの幅
  267.   #     height : ウィンドウの高さ
  268.   #--------------------------------------------------------------------------
  269.   alias initialize_KGC_CategorizeItem initialize
  270.   def initialize(x, y, width, height)
  271.     @category = 0

  272.     initialize_KGC_CategorizeItem(x, y, width, height)
  273.   end
  274.   #--------------------------------------------------------------------------
  275.   # ○ カテゴリ設定
  276.   #--------------------------------------------------------------------------
  277.   def category=(value)
  278.     @category = value
  279.     refresh
  280.   end
  281.   #--------------------------------------------------------------------------
  282.   # ● アイテムをリストに含めるかどうか
  283.   #     item : アイテム
  284.   #--------------------------------------------------------------------------
  285.   alias include_KGC_CategorizeItem? include?
  286.   def include?(item)
  287.     return false if item == nil

  288.     # 「全種」なら無条件で含める
  289.     if @category == KGC::CategorizeItem::RESERVED_CATEGORY_INDEX["全部种类"]
  290.       return true
  291.     end

  292.     result = include_KGC_CategorizeItem?(item)

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

  303.     return result
  304.   end
  305. end

  306. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

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

  312. class Window_ItemCategory < Window_Command
  313.   #--------------------------------------------------------------------------
  314.   # ● オブジェクト初期化
  315.   #--------------------------------------------------------------------------
  316.   def initialize
  317.     cols = KGC::CategorizeItem::CATEGORY_WINDOW_COLUMNS
  318.     width = KGC::CategorizeItem::CATEGORY_WINDOW_COL_WIDTH * cols + 32
  319.     width += (cols - 1) * KGC::CategorizeItem::CATEGORY_WINDOW_COL_SPACE
  320.     commands = KGC::CategorizeItem::CATEGORY_NAME
  321.     super(width, commands, cols, 0,
  322.       KGC::CategorizeItem::CATEGORY_WINDOW_COL_SPACE)
  323.     self.x = KGC::CategorizeItem::CATEGORY_WINDOW_POSITION[0]
  324.     self.y = KGC::CategorizeItem::CATEGORY_WINDOW_POSITION[1]
  325.     self.z = 1000
  326.     self.index = 0
  327.   end
  328.   #--------------------------------------------------------------------------
  329.   # ● ヘルプテキスト更新
  330.   #--------------------------------------------------------------------------
  331.   def update_help
  332.     @help_window.set_text(KGC::CategorizeItem::CATEGORY_DESCRIPTION[self.index])
  333.   end
  334. end

  335. #★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★☆★

  336. #==============================================================================
  337. # ■ Scene_Item
  338. #==============================================================================

  339. class Scene_Item < Scene_Base
  340.   #--------------------------------------------------------------------------
  341.   # ● 開始処理
  342.   #--------------------------------------------------------------------------
  343.   alias start_KGC_CategorizeItem start
  344.   def start
  345.     start_KGC_CategorizeItem

  346.     @category_window = Window_ItemCategory.new
  347.     @category_window.help_window = @help_window
  348.     show_category_window
  349.   end
  350.   #--------------------------------------------------------------------------
  351.   # ● 終了処理
  352.   #--------------------------------------------------------------------------
  353.   alias terminate_KGC_CategorizeItem terminate
  354.   def terminate
  355.     terminate_KGC_CategorizeItem

  356.     @category_window.dispose
  357.   end
  358.   #--------------------------------------------------------------------------
  359.   # ● フレーム更新
  360.   #--------------------------------------------------------------------------
  361.   alias update_KGC_CategorizeItem update
  362.   def update
  363.     @category_window.update

  364.     update_KGC_CategorizeItem

  365.     if @category_window.active
  366.       update_category_selection
  367.     end
  368.   end
  369.   #--------------------------------------------------------------------------
  370.   # ○ カテゴリ選択の更新
  371.   #--------------------------------------------------------------------------
  372.   def update_category_selection
  373.     unless @category_activated
  374.       @category_activated = true
  375.       return
  376.     end

  377.     # 選択カテゴリー変更
  378.     if @last_category_index != @category_window.index
  379.       @item_window.category = @category_window.index
  380.       @item_window.refresh
  381.       @last_category_index = @category_window.index
  382.     end

  383.     if Input.trigger?(Input::B)
  384.       Sound.play_cancel
  385.       return_scene
  386.     elsif Input.trigger?(Input::C)
  387.       Sound.play_decision
  388.       hide_category_window
  389.     end
  390.   end
  391.   #--------------------------------------------------------------------------
  392.   # ● アイテム選択の更新
  393.   #--------------------------------------------------------------------------
  394.   alias update_item_selection_KGC_CategorizeItem update_item_selection
  395.   def update_item_selection
  396.     if Input.trigger?(Input::B)
  397.       Sound.play_cancel
  398.       show_category_window
  399.       return
  400.     end

  401.     update_item_selection_KGC_CategorizeItem
  402.   end
  403.   #--------------------------------------------------------------------------
  404.   # ○ カテゴリウィンドウの表示
  405.   #--------------------------------------------------------------------------
  406.   def show_category_window
  407.     @category_window.open
  408.     @category_window.active = true
  409.     @item_window.active = false
  410.   end
  411.   #--------------------------------------------------------------------------
  412.   # ○ カテゴリウィンドウの非表示
  413.   #--------------------------------------------------------------------------
  414.   def hide_category_window
  415.     @category_activated = false
  416.     @category_window.close
  417.     @category_window.active = false
  418.     @item_window.active = true
  419.     # アイテムウィンドウのインデックスを調整
  420.     if @item_window.index >= @item_window.item_max
  421.       @item_window.index = [@item_window.item_max - 1, 0].max
  422.     end
  423.   end
  424. end
复制代码
VA脚本开工中...
偷窃脚本1.0 - 已完成

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3299
在线时间
3619 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

2
发表于 2008-2-10 19:09:47 | 只看该作者
用脚本交流之类的吧。

回复 支持 反对

使用道具 举报

Lv1.梦旅人

很傻很天真

梦石
0
星屑
55
在线时间
3 小时
注册时间
2007-3-13
帖子
3667
3
发表于 2008-2-11 20:12:33 | 只看该作者
不错...{/tp}
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (暗夜天使)

名侦探小柯

梦石
0
星屑
3299
在线时间
3619 小时
注册时间
2006-9-6
帖子
37400

开拓者贵宾第3届短篇游戏大赛主流游戏组亚军第5届短篇游戏比赛亚军

4
发表于 2008-2-11 20:43:46 | 只看该作者
放在备注里啊……

终于知道备注是干嘛的了……
写了很多却看不见……|||

那个药物知识做什么的……?
回复 支持 反对

使用道具 举报

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

5
 楼主| 发表于 2008-2-12 03:22:41 | 只看该作者
拥有药物知识的角色使用物品回复HP/MP时效果加倍

详看Game_Battler 701 和 709 行

result *= 2 if user.pharmacology    # 药物知識效果加倍

备注最大的功能似乎就是脚本调用
以前站上许多脚本都是利用物品名称或描述来实现一些功能
於是就出现许多冲突
备注利用的好的话MS没这种问题(目前尚未发现)
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-7-27
帖子
140
6
发表于 2008-2-12 05:02:49 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
7 小时
注册时间
2008-5-20
帖子
53
7
发表于 2009-5-19 04:08:22 | 只看该作者
很实用的东西,游戏物品越来越多,光翻页就够呛了,有这个脚本应该就可以解决问题了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

//
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-21 23:02

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表