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

Project1

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

[已经解决] 请问有没有VA的“物品分类脚本”?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
86 小时
注册时间
2012-3-26
帖子
28
跳转到指定楼层
1
发表于 2012-6-14 21:31:21 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
请问有没有VA的“物品分类脚本”?{:2_270:}
别看我这表情,我是很需要的!{:2_286:}
物品一上百,使用时就眼花缭乱......{:2_277:}
最好有菜单中和战斗中都有效的物品分类!XP和VX都有!(我查了那么久就查到他俩的说......){:2_258:}
以下的是VX的,也许可以修改!{:2_261:}
  1. module RPG
  2.   class Weapon
  3.     def description
  4.       description = @description.split(/@/)[0]
  5.       return description != nil ? description : ''
  6.     end
  7.     def desc
  8.       desc = @description.split(/@/)[1]
  9.       return desc != nil ? desc : "普通物品"
  10.     end
  11.   end
  12.   class Item
  13.     def description
  14.       description = @description.split(/@/)[0]
  15.       return description != nil ? description : ''
  16.     end
  17.     def desc
  18.       desc = @description.split(/@/)[1]
  19.       return desc != nil ? desc : "普通物品"
  20.     end
  21.   end
  22.   class Armor
  23.     def description
  24.       description = @description.split(/@/)[0]
  25.       return description != nil ? description : ''
  26.     end
  27.     def desc
  28.       desc = @description.split(/@/)[1]
  29.       return desc != nil ? desc : "普通物品"
  30.     end
  31.   end
  32. end

  33. class Harts_Window_ItemTitle < Window_Base
  34.   def initialize
  35.     super(0, 0, 160, 64)
  36.     self.contents = Bitmap.new(width - 32, height - 32)
  37.     self.contents.clear
  38.     self.contents.font.color = normal_color
  39.     self.contents.draw_text(4, 0, 120, 32, Vocab::item, 1)
  40.   end
  41. end

  42. class Harts_Window_ItemCommand < Window_Selectable
  43.   attr_accessor :commands
  44.   def initialize
  45.     super(0, 64, 160, 296)
  46.     self.contents = Bitmap.new(width - 32, height - 32)
  47.     @commands = []
  48.     for i in 1...$data_items.size
  49.       if $game_party.item_number($data_items[i]) > 0
  50.         push = true
  51.         for com in @commands
  52.           if com == $data_items[i].desc
  53.             push = false
  54.           end
  55.         end
  56.         if push == true
  57.           @commands.push($data_items[i].desc)
  58.         end
  59.       end
  60.     end
  61.     for i in 1...$data_weapons.size
  62.       if $game_party.item_number($data_weapons[i]) > 0
  63.         push = true
  64.         for com in @commands
  65.           if com == $data_weapons[i].desc
  66.             push = false
  67.           end
  68.         end
  69.         if push == true
  70.           @commands.push($data_weapons[i].desc)
  71.         end
  72.       end
  73.     end
  74.     for i in 1...$data_armors.size
  75.       if $game_party.item_number($data_armors[i]) > 0
  76.         push = true
  77.         for com in @commands
  78.           if com == $data_armors[i].desc
  79.             push = false
  80.           end
  81.         end
  82.         if push == true
  83.           @commands.push($data_armors[i].desc)
  84.         end
  85.       end
  86.     end
  87.     if @commands == []
  88.       @commands.push("普通物品")
  89.     end      
  90.     @item_max = @commands.size
  91.     self.index = 0
  92.     refresh
  93.   end
  94.   
  95. def refresh
  96.     self.contents.clear
  97.     for i in 0...@item_max
  98.       draw_item(i, normal_color)
  99.     end
  100.   end
  101.   
  102.   def draw_item(index, color)
  103.     self.contents.font.color = color
  104.     y = index * WLH
  105.     self.contents.draw_text(4, y, 128, WLH, @commands[index])
  106.   end
  107.   
  108.   def update_help
  109.     @help_window.set_text(@commands[self.index])
  110.   end
  111. end

  112. class Harts_Window_ItemList < Window_Selectable
  113.   
  114.   def initialize
  115.     super(160, 0, 384, 360)
  116.     self.index = 0
  117.     refresh
  118.   end
  119.   
  120.   def item
  121.     return @data[self.index]
  122.   end
  123.   
  124.   def refresh
  125.     @data = []
  126.   end
  127.   
  128.   def set_item(command)
  129.     refresh
  130.     for i in 1...$data_items.size
  131.       if $game_party.item_number($data_items[i]) > 0  and $data_items[i].desc == command
  132.         @data.push($data_items[i])
  133.       end
  134.     end
  135.     for i in 1...$data_weapons.size
  136.       if $game_party.item_number($data_weapons[i]) > 0  and $data_weapons[i].desc == command
  137.         @data.push($data_weapons[i])
  138.       end
  139.     end
  140.     for i in 1...$data_armors.size
  141.       if $game_party.item_number($data_armors[i]) > 0  and $data_armors[i].desc == command
  142.         @data.push($data_armors[i])
  143.       end
  144.     end
  145.     @item_max = @data.size
  146.     if @item_max > 0
  147.       self.contents = Bitmap.new(width - 32, row_max * 32)
  148.       self.contents.clear
  149.       for i in 0...@item_max
  150.         draw_item(i)
  151.       end
  152.     end
  153.   end
  154.   
  155.   def item_number
  156.     return @item_max
  157.   end
  158.   
  159.   def draw_item(index)
  160.     rect = item_rect(index)
  161.     self.contents.clear_rect(rect)
  162.     item = @data[index]
  163.     if item != nil
  164.       number = $game_party.item_number(item)
  165.       enabled = $game_party.item_can_use?(item)
  166.       rect.width -= 4
  167.       draw_item_name(item, rect.x, rect.y, enabled)
  168.       self.contents.draw_text(rect, sprintf(":%2d", number), 2)
  169.     end
  170.   end
  171.   
  172.   def update_help
  173.     @help_window.set_text(self.item == nil ? "" : self.item.description)
  174.   end
  175. end
  176. class Harts_Window_Help < Window_Base
  177.   
  178.   def initialize
  179.     super(0, 360, 544, WLH + 32)
  180.   end

  181.   def set_text(text, align = 0)
  182.     if text != @text or align != @align
  183.       self.contents.clear
  184.       self.contents.font.color = normal_color
  185.       self.contents.draw_text(4, 0, self.width - 40, WLH , text, align)
  186.       @text = text
  187.       @align = align
  188.     end
  189.   end
  190. end

  191. class Harts_Window_MenuStatus < Window_Selectable

  192.   def initialize(x, y)
  193.     super(x, y, 288, 416)
  194.     refresh
  195.     self.active = false
  196.     self.index = -1
  197.   end

  198.   def refresh
  199.     self.contents.clear
  200.     @item_max = $game_party.members.size
  201.     for actor in $game_party.members
  202.       x = 8
  203.       y = actor.index * 96 + WLH / 2
  204.       draw_actor_name(actor, x, y)
  205.       draw_actor_class(actor, x + 120, y)
  206.       draw_actor_level(actor, x, y + WLH * 1)
  207.       draw_actor_state(actor, x, y + WLH * 2)
  208.       draw_actor_hp(actor, x + 120, y + WLH * 1)
  209.       draw_actor_mp(actor, x + 120, y + WLH * 2)
  210.     end
  211.   end

  212.   def update_cursor
  213.     if @index < 0               
  214.       self.cursor_rect.empty
  215.     elsif @index < @item_max  
  216.       self.cursor_rect.set(0, @index * 96, contents.width, 96)
  217.     elsif @index >= 100        
  218.       self.cursor_rect.set(0, (@index - 100) * 96, contents.width, 96)
  219.     else                       
  220.       self.cursor_rect.set(0, 0, contents.width, @item_max * 96)
  221.     end
  222.   end
  223. end

  224. class Scene_Item < Scene_Base
  225.   def start
  226.     super
  227.     create_menu_background
  228.     @viewport = Viewport.new(0, 0, 544, 416)
  229.     @itemtitle_window = Harts_Window_ItemTitle.new
  230.     @itemcommand_window = Harts_Window_ItemCommand.new
  231.     @command_index = @itemcommand_window.index
  232.     @itemlist_window = Harts_Window_ItemList.new
  233.     @itemlist_window.active = false
  234.     @help_window = Harts_Window_Help.new
  235.     @help_window.viewport = @viewport
  236.     @target_window = Harts_Window_MenuStatus.new(96, 0)
  237.     @itemcommand_window.help_window = @help_window
  238.     @itemlist_window.help_window = @help_window
  239.     @itemlist_window.set_item(@itemcommand_window.commands[@command_index])
  240.     hide_target_window
  241.   end

  242.   def terminate
  243.     super
  244.     dispose_menu_background
  245.     @viewport.dispose
  246.     @itemtitle_window.dispose
  247.     @itemcommand_window.dispose
  248.     @itemlist_window.dispose
  249.     @help_window.dispose
  250.     @target_window.dispose
  251.   end

  252.   def return_scene
  253.     $scene = Scene_Menu.new(0)
  254.   end

  255.   def update
  256.     super
  257.     update_menu_background
  258.     @help_window.update
  259.     @itemlist_window.update
  260.     @itemcommand_window.update
  261.     @target_window.update
  262.     if @command_index != @itemcommand_window.index
  263.       @itemlist_window.index = 0
  264.       @command_index = @itemcommand_window.index
  265.       @itemcommand_window.update_help
  266.       @itemlist_window.set_item(@itemcommand_window.commands[@command_index])
  267.     end
  268.     if @itemcommand_window.active
  269.       @itemcommand_window.update_help
  270.       update_itemcommand
  271.     elsif @itemlist_window.active
  272.       update_itemlist
  273.     elsif @target_window.active
  274.       update_target_selection
  275.     end
  276.   end

  277.   def update_itemcommand
  278.     if Input.trigger?(Input::B)
  279.       Sound.play_cancel
  280.       return_scene
  281.       return
  282.     end
  283.     if Input.trigger?(Input::C)
  284.       if @itemlist_window.item_number == 0
  285.         Sound.play_buzzer
  286.         return
  287.       end
  288.       Sound.play_decision
  289.       @itemcommand_window.active = false
  290.       @itemlist_window.index = 0
  291.       @itemlist_window.active = true
  292.       return
  293.     end
  294.   end

  295.   def update_itemlist
  296.     if Input.trigger?(Input::B)
  297.       Sound.play_cancel
  298.       @itemcommand_window.active = true
  299.       @itemlist_window.active = false
  300.       @itemcommand_window.index = @command_index
  301.     elsif Input.trigger?(Input::C)
  302.       @item = @itemlist_window.item
  303.       if @item != nil
  304.         $game_party.last_item_id = @item.id
  305.       end
  306.       if $game_party.item_can_use?(@item)
  307.         Sound.play_decision
  308.         determine_item
  309.       else
  310.         Sound.play_buzzer
  311.       end
  312.     end
  313.   end

  314.   def determine_item
  315.     if @item.for_friend?
  316.       show_target_window(@itemlist_window.index % 2 == 0)
  317.       if @item.for_all?
  318.         @target_window.index = 99
  319.       else
  320.         if $game_party.last_target_index < @target_window.item_max
  321.           @target_window.index = $game_party.last_target_index
  322.         else
  323.           @target_window.index = 0
  324.         end
  325.       end
  326.     else
  327.       use_item_nontarget
  328.     end
  329.   end

  330.   def update_target_selection
  331.     if Input.trigger?(Input::B)
  332.       Sound.play_cancel
  333.       if $game_party.item_number(@item) == 0
  334.         @itemlist_window.refresh                 
  335.       end
  336.       @itemlist_window.active = true
  337.       @itemlist_window.set_item(@itemcommand_window.commands[@command_index])
  338.       hide_target_window
  339.       @itemlist_window.active = true
  340.     elsif Input.trigger?(Input::C)
  341.       if not $game_party.item_can_use?(@item)
  342.         Sound.play_buzzer
  343.       else
  344.         determine_target
  345.       end
  346.     end
  347.   end

  348.   def determine_target
  349.     used = false
  350.     if @item.for_all?
  351.       for target in $game_party.members
  352.         target.item_effect(target, @item)
  353.         used = true unless target.skipped
  354.       end
  355.     else
  356.       $game_party.last_target_index = @target_window.index
  357.       target = $game_party.members[@target_window.index]
  358.       target.item_effect(target, @item)
  359.       used = true unless target.skipped
  360.     end
  361.     if used
  362.       use_item_nontarget
  363.     else
  364.       Sound.play_buzzer
  365.     end
  366.   end

  367.   def show_target_window(right)
  368.     @itemlist_window.active = false
  369.     width_remain = 544 - @target_window.width
  370.     @target_window.x = right ? width_remain : 0
  371.     @target_window.visible = true
  372.     @target_window.active = true
  373.     if right
  374.       @viewport.rect.set(0, 0, width_remain, 416)
  375.       @viewport.ox = 0
  376.     else
  377.       @viewport.rect.set(@target_window.width, 0, width_remain, 416)
  378.       @viewport.ox = @target_window.width
  379.     end
  380.   end

  381.   def hide_target_window
  382.     @target_window.visible = false
  383.     @target_window.active = false
  384.     @itemlist_window.set_item(@itemcommand_window.commands[@command_index])
  385.     @viewport.rect.set(0, 0, 544, 416)
  386.     @viewport.ox = 0
  387.   end

  388.   def use_item_nontarget
  389.     Sound.play_use_item
  390.     $game_party.consume_item(@item)
  391.     @itemlist_window.draw_item(@itemlist_window.index)
  392.     @itemlist_window.set_item(@itemcommand_window.commands[@command_index])
  393.     @target_window.refresh
  394.     if $game_party.all_dead?
  395.       $scene = Scene_Gameover.new
  396.     elsif @item.common_event_id > 0
  397.       $game_temp.common_event_id = @item.common_event_id
  398.       $scene = Scene_Map.new
  399.     end
  400.   end
  401. end
复制代码

Lv2.观梦者

梦石
0
星屑
758
在线时间
2064 小时
注册时间
2011-10-3
帖子
1686
4
发表于 2012-6-15 19:01:27 | 只看该作者
看来我被无视了
回复

使用道具 举报

Lv1.梦旅人

54酱是大笨蛋!

梦石
0
星屑
66
在线时间
1389 小时
注册时间
2011-2-23
帖子
5014
3
发表于 2012-6-15 18:02:26 | 只看该作者
VX——VA修改无能....
LZ等一下脚本吧...
有大神正在做....

点评

努力!加油!支持!希望成功!  发表于 2012-6-15 18:09
去你爹的现充.去你爹的异性恋.
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
758
在线时间
2064 小时
注册时间
2011-10-3
帖子
1686
2
发表于 2012-6-15 17:23:13 | 只看该作者
使用方法:
在物品备注里写上:<category: XX>(XX等于中文名)
  1. #==============================================================================
  2. #
  3. # ▼ Yanfly Engine Ace - Ace Item Menu v1.02
  4. # -- Last Updated: 2012.01.05
  5. # -- Level: Normal, Hard
  6. # -- Requires: n/a
  7. #
  8. #==============================================================================

  9. $imported = {} if $imported.nil?
  10. $imported["YEA-ItemMenu"] = true

  11. #==============================================================================
  12. # ▼ Updates
  13. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  14. # 2012.01.05 - Compatibility Update with Equip Dynamic Stats.
  15. # 2012.01.03 - Started Script and Finished.
  16. #            - Compatibility Update with Ace Menu Engine.
  17. #
  18. #==============================================================================
  19. # ▼ Introduction
  20. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  21. # The Ace Item Menu offers more item categorization control and a better layout
  22. # that simulatenously provides information regarding the items to the player,
  23. # while keeping a good amount of the item list visible on screen at once. The
  24. # script can also be customized to rearrange commands and categories.
  25. #
  26. #==============================================================================
  27. # ▼ Instructions
  28. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  29. # To install this script, open up your script editor and copy/paste this script
  30. # to an open slot below ▼ Materials/素材 but above ▼ Main. Remember to save.
  31. #
  32. # -----------------------------------------------------------------------------
  33. # Item Notetags - These notetags go in the item notebox in the database.
  34. # -----------------------------------------------------------------------------
  35. # <category: string>
  36. # Places this object into the item category for "string". Whenever the selected
  37. # category is highlighted in the Ace Item Menu command window, this object will
  38. # be included and shown in the item window.
  39. #
  40. # <image: string>
  41. # Uses a picture from Graphics\Pictures\ of your RPG Maker VX Ace Project's
  42. # directory with the filename of "string" (without the extension) as the image
  43. # picture shown in the Ace Item Menu.
  44. #
  45. # -----------------------------------------------------------------------------
  46. # Weapon Notetags - These notetags go in the weapon notebox in the database.
  47. # -----------------------------------------------------------------------------
  48. # <category: string>
  49. # Places this object into the item category for "string". Whenever the selected
  50. # category is highlighted in the Ace Item Menu command window, this object will
  51. # be included and shown in the item window.
  52. #
  53. # <image: string>
  54. # Uses a picture from Graphics\Pictures\ of your RPG Maker VX Ace Project's
  55. # directory with the filename of "string" (without the extension) as the image
  56. # picture shown in the Ace Item Menu.
  57. #
  58. # -----------------------------------------------------------------------------
  59. # Armour Notetags - These notetags go in the armour notebox in the database.
  60. # -----------------------------------------------------------------------------
  61. # <category: string>
  62. # Places this object into the item category for "string". Whenever the selected
  63. # category is highlighted in the Ace Item Menu command window, this object will
  64. # be included and shown in the item window.
  65. #
  66. # <image: string>
  67. # Uses a picture from Graphics\Pictures\ of your RPG Maker VX Ace Project's
  68. # directory with the filename of "string" (without the extension) as the image
  69. # picture shown in the Ace Item Menu.
  70. #
  71. #==============================================================================
  72. # ▼ Compatibility
  73. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  74. # This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
  75. # it will run with RPG Maker VX without adjusting.
  76. #
  77. #==============================================================================

  78. module YEA
  79.   module ITEM
  80.    
  81.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  82.     # - Item Command Settings -
  83.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  84.     # This array adjusts what options appear in the initial item command window
  85.     # before the items are split into separate categories. Add commands, remove
  86.     # commands, or rearrange them. Here's a list of which does what:
  87.     #
  88.     # -------------------------------------------------------------------------
  89.     # :command         Description
  90.     # -------------------------------------------------------------------------
  91.     # :item            Opens up the various item categories. Default.
  92.     # :weapon          Opens up the various weapon categories. Default.
  93.     # :armor           Opens up the various armour categories. Default.
  94.     # :key_item        Shows a list of the various key items. Default.
  95.     #
  96.     # :gogototori      Requires Kread-EX's Go Go Totori Synthesis.
  97.     #
  98.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  99.     COMMANDS =[
  100.       :item,         # Opens up the various item categories. Default.
  101.       :weapon,       # Opens up the various weapon categories. Default.
  102.       :armor,        # Opens up the various armour categories. Default.
  103.       :key_item,     # Shows a list of the various key items. Default.
  104.       :gogototori,   # Requires Kread-EX's Go Go Totori Synthesis.
  105.     # :custom1,      # Custom command 1.
  106.     # :custom2,      # Custom command 2.
  107.     ] # Do not remove this.
  108.    
  109.     #--------------------------------------------------------------------------
  110.     # - Item Custom Commands -
  111.     # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  112.     # For those who use scripts to that may produce unique effects for the item
  113.     # scene, use this hash to manage the custom commands for the Item Command
  114.     # Window. You can disable certain commands or prevent them from appearing
  115.     # by using switches. If you don't wish to bind them to a switch, set the
  116.     # proper switch to 0 for it to have no impact.
  117.     #--------------------------------------------------------------------------
  118.     CUSTOM_ITEM_COMMANDS ={
  119.     # :command => ["Display Name", EnableSwitch, ShowSwitch, Handler Method],
  120.       :gogototori => ["Synthesis",            0,         0, :command_totori],
  121.       :custom1 => [ "Custom Name",            0,          0, :command_name1],
  122.       :custom2 => [ "Custom Text",           13,          0, :command_name2],
  123.     } # Do not remove this.
  124.    
  125.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  126.     # - Item Type Settings -
  127.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  128.     # These arrays adjusts and shows the various item types shown for Items,
  129.     # Weapons, and Armours. Note that when using :category symbols, the
  130.     # specific category shown will be equal to the text used for the Display
  131.     # and the included item must contain a category equal to the Display name.
  132.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  133.     # This array contains the order for the Item categories.
  134.     ITEM_TYPES =[
  135.     # [  :symbol,   "Display"],
  136.       [   :field,     "菜单中使用"], # Shows Menu-usable items.
  137.       [  :battle,    "战斗中使用"], # Shows Battle-usable items.
  138.       [:category,   "特别"], # Categorized by <category: string>
  139.       [:category,"成分"], # Categorized by <category: string>
  140.       [:key_item,  "钥匙"], # Shows all key items.
  141.       [     :all,       "全部"], # Shows all usable items.
  142.     ] # Do not remove this.
  143.    
  144.     # This array contains the order for the Weapon categories.
  145.     WEAPON_TYPES =[
  146.     # [  :symbol,   "Display"],
  147.       [   :types,  "个别"], # Lists all of the individual weapon types.
  148.       [:category,  "训练用"], # Categorized by <category: string>
  149.       [:category, "传奇"], # Categorized by <category: string>
  150.       [     :all,       "全部"], # Shows all weapons.
  151.     ] # Do not remove this.
  152.    
  153.     # This array contains the order for the Armour categories.
  154.     ARMOUR_TYPES =[
  155.     # [  :symbol,   "Display"],
  156.       [   :slots,  "防具"], # Lists all of the individual armour slots.
  157.       [   :types,  "个别防具"], # Lists all of the individual armours types.
  158.       [:category,  "训练用"], # Categorized by <category: string>
  159.       [:category, "传奇"], # Categorized by <category: string>
  160.       [     :all,       "全部"], # Shows all armours.
  161.     ] # Do not remove this.
  162.    
  163.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  164.     # - Item Status Settings -
  165.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  166.     # The item status window displays information about the item in detail.
  167.     # Adjust the settings below to change the way the status window appears.
  168.     #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
  169.     STATUS_FONT_SIZE = 20       # Font size used for status window.
  170.     MAX_ICONS_DRAWN  = 10       # Maximum number of icons drawn for states.
  171.    
  172.     # The following adjusts the vocabulary used for the status window. Each
  173.     # of the vocabulary settings are self explanatory.
  174.     VOCAB_STATUS ={
  175.       :empty      => "---",          # Text used when nothing is shown.
  176.       :hp_recover => "HP回复",      # Text used for HP Recovery.
  177.       :mp_recover => "MP回复",      # Text used for MP Recovery.
  178.       :tp_recover => "TP回复",      # Text used for TP Recovery.
  179.       :tp_gain    => "TP获得",      # Text used for TP Gain.
  180.       :applies    => "增加",      # Text used for applied states and buffs.
  181.       :removes    => "去除",      # Text used for removed states and buffs.
  182.     } # Do not remove this.
  183.    
  184.   end # ITEM
  185. end # YEA

  186. #==============================================================================
  187. # ▼ Editting anything past this point may potentially result in causing
  188. # computer damage, incontinence, explosion of user's head, coma, death, and/or
  189. # halitosis so edit at your own risk.
  190. #==============================================================================

  191. module YEA
  192.   module REGEXP
  193.   module BASEITEM
  194.    
  195.     CATEGORY = /<(?:CATEGORIES|category):[ ](.*)>/i
  196.     IMAGE    = /<(?:IMAGE|image):[ ](.*)>/i
  197.    
  198.   end # BASEITEM
  199.   end # REGEXP
  200. end # YEA

  201. #==============================================================================
  202. # ■ Numeric
  203. #==============================================================================

  204. class Numeric
  205.   
  206.   #--------------------------------------------------------------------------
  207.   # new method: group_digits
  208.   #--------------------------------------------------------------------------
  209.   unless $imported["YEA-CoreEngine"]
  210.   def group; return self.to_s; end
  211.   end # $imported["YEA-CoreEngine"]
  212.    
  213. end # Numeric

  214. #==============================================================================
  215. # ■ Vocab
  216. #==============================================================================

  217. module Vocab
  218.   
  219.   #--------------------------------------------------------------------------
  220.   # new method: self.item_status
  221.   #--------------------------------------------------------------------------
  222.   def self.item_status(type)
  223.     return YEA::ITEM::VOCAB_STATUS[type]
  224.   end
  225.   
  226. end # Vocab

  227. #==============================================================================
  228. # ■ DataManager
  229. #==============================================================================

  230. module DataManager
  231.   
  232.   #--------------------------------------------------------------------------
  233.   # alias method: load_database
  234.   #--------------------------------------------------------------------------
  235.   class <<self; alias load_database_aim load_database; end
  236.   def self.load_database
  237.     load_database_aim
  238.     load_notetags_aim
  239.   end
  240.   
  241.   #--------------------------------------------------------------------------
  242.   # new method: load_notetags_aim
  243.   #--------------------------------------------------------------------------
  244.   def self.load_notetags_aim
  245.     groups = [$data_items, $data_weapons, $data_armors]
  246.     for group in groups
  247.       for obj in group
  248.         next if obj.nil?
  249.         obj.load_notetags_aim
  250.       end
  251.     end
  252.   end
  253.   
  254. end # DataManager

  255. #==============================================================================
  256. # ■ RPG::BaseItem
  257. #==============================================================================

  258. class RPG::BaseItem
  259.   
  260.   #--------------------------------------------------------------------------
  261.   # public instance variables
  262.   #--------------------------------------------------------------------------
  263.   attr_accessor :category
  264.   attr_accessor :image
  265.   
  266.   #--------------------------------------------------------------------------
  267.   # common cache: load_notetags_aim
  268.   #--------------------------------------------------------------------------
  269.   def load_notetags_aim
  270.     @category = []
  271.     #---
  272.     self.note.split(/[\r\n]+/).each { |line|
  273.       case line
  274.       #---
  275.       when YEA::REGEXP::BASEITEM::CATEGORY
  276.         @category.push($1.upcase.to_s)
  277.       when YEA::REGEXP::BASEITEM::IMAGE
  278.         @image = $1.to_s
  279.       end
  280.     } # self.note.split
  281.     #---
  282.   end
  283.   
  284. end # RPG::BaseItem

  285. #==============================================================================
  286. # ■ Game_Temp
  287. #==============================================================================

  288. class Game_Temp
  289.   
  290.   #--------------------------------------------------------------------------
  291.   # public instance variables
  292.   #--------------------------------------------------------------------------
  293.   attr_accessor :scene_item_index
  294.   attr_accessor :scene_item_oy
  295.   
  296. end # Game_Temp

  297. #==============================================================================
  298. # ■ Window_ItemList
  299. #==============================================================================

  300. class Window_ItemList < Window_Selectable
  301.   
  302.   #--------------------------------------------------------------------------
  303.   # overwrite method: draw_item
  304.   #--------------------------------------------------------------------------
  305.   def draw_item(index)
  306.     item = @data[index]
  307.     return if item.nil?
  308.     rect = item_rect(index)
  309.     rect.width -= 4
  310.     draw_item_name(item, rect.x, rect.y, enable?(item), rect.width - 24)
  311.     draw_item_number(rect, item)
  312.   end
  313.   
  314. end # Window_ItemList

  315. #==============================================================================
  316. # ■ Window_ItemCommand
  317. #==============================================================================

  318. class Window_ItemCommand < Window_Command
  319.   
  320.   #--------------------------------------------------------------------------
  321.   # public instance variables
  322.   #--------------------------------------------------------------------------
  323.   attr_reader   :item_window
  324.   
  325.   #--------------------------------------------------------------------------
  326.   # initialize
  327.   #--------------------------------------------------------------------------
  328.   def initialize(x, y)
  329.     super(x, y)
  330.   end
  331.   
  332.   #--------------------------------------------------------------------------
  333.   # window_width
  334.   #--------------------------------------------------------------------------
  335.   def window_width; return 160; end
  336.   
  337.   #--------------------------------------------------------------------------
  338.   # visible_line_number
  339.   #--------------------------------------------------------------------------
  340.   def visible_line_number; return 4; end
  341.   
  342.   #--------------------------------------------------------------------------
  343.   # process_ok
  344.   #--------------------------------------------------------------------------
  345.   def process_ok
  346.     $game_temp.scene_item_index = index
  347.     $game_temp.scene_item_oy = self.oy
  348.     super
  349.   end
  350.   
  351.   #--------------------------------------------------------------------------
  352.   # make_command_list
  353.   #--------------------------------------------------------------------------
  354.   def make_command_list
  355.     for command in YEA::ITEM::COMMANDS
  356.       case command
  357.       #--- Default Commands ---
  358.       when :item
  359.         add_command(Vocab::item, :item)
  360.       when :weapon
  361.         add_command(Vocab::weapon, :weapon)
  362.       when :armor
  363.         add_command(Vocab::armor, :armor)
  364.       when :key_item
  365.         add_command(Vocab::key_item, :key_item)
  366.       #--- Imported ---
  367.       when :gogototori
  368.         next unless $imported["KRX-AlchemicSynthesis"]
  369.         process_custom_command(command)
  370.       #--- Custom Commands ---
  371.       else
  372.         process_custom_command(command)
  373.       end
  374.     end
  375.   end
  376.   
  377.   #--------------------------------------------------------------------------
  378.   # process_custom_command
  379.   #--------------------------------------------------------------------------
  380.   def process_custom_command(command)
  381.     return unless YEA::ITEM::CUSTOM_ITEM_COMMANDS.include?(command)
  382.     show = YEA::ITEM::CUSTOM_ITEM_COMMANDS[command][2]
  383.     continue = show <= 0 ? true : $game_switches[show]
  384.     return unless continue
  385.     text = YEA::ITEM::CUSTOM_ITEM_COMMANDS[command][0]
  386.     switch = YEA::ITEM::CUSTOM_ITEM_COMMANDS[command][1]
  387.     enabled = switch <= 0 ? true : $game_switches[switch]
  388.     add_command(text, command, enabled)
  389.   end
  390.   
  391.   #--------------------------------------------------------------------------
  392.   # update
  393.   #--------------------------------------------------------------------------
  394.   def update
  395.     super
  396.     return unless self.active
  397.     @item_window.category = current_symbol if @item_window
  398.   end
  399.   
  400.   #--------------------------------------------------------------------------
  401.   # item_window=
  402.   #--------------------------------------------------------------------------
  403.   def item_window=(item_window)
  404.     @item_window = item_window
  405.     update
  406.   end
  407.   
  408. end # Window_ItemCommand

  409. #==============================================================================
  410. # ■ Window_ItemType
  411. #==============================================================================

  412. class Window_ItemType < Window_Command
  413.   
  414.   #--------------------------------------------------------------------------
  415.   # public instance variables
  416.   #--------------------------------------------------------------------------
  417.   attr_reader   :item_window
  418.   
  419.   #--------------------------------------------------------------------------
  420.   # initialize
  421.   #--------------------------------------------------------------------------
  422.   def initialize(x, y)
  423.     super(x, y)
  424.     deactivate
  425.     @type = nil
  426.   end
  427.   
  428.   #--------------------------------------------------------------------------
  429.   # window_width
  430.   #--------------------------------------------------------------------------
  431.   def window_width; return 160; end
  432.   
  433.   #--------------------------------------------------------------------------
  434.   # visible_line_number
  435.   #--------------------------------------------------------------------------
  436.   def visible_line_number; return 4; end
  437.   
  438.   #--------------------------------------------------------------------------
  439.   # reveal
  440.   #--------------------------------------------------------------------------
  441.   def reveal(type)
  442.     @type = type
  443.     refresh
  444.     activate
  445.     select(0)
  446.   end
  447.   
  448.   #--------------------------------------------------------------------------
  449.   # make_command_list
  450.   #--------------------------------------------------------------------------
  451.   def make_command_list
  452.     return if @type.nil?
  453.     #---
  454.     case @type
  455.     when :item
  456.       commands = YEA::ITEM::ITEM_TYPES
  457.     when :weapon
  458.       commands = YEA::ITEM::WEAPON_TYPES
  459.     else
  460.       commands = YEA::ITEM::ARMOUR_TYPES
  461.     end
  462.     #---
  463.     for command in commands
  464.       case command[0]
  465.       #---
  466.       when :types
  467.         case @type
  468.         when :weapon
  469.           for i in 1...$data_system.weapon_types.size
  470.             name = $data_system.weapon_types[i]
  471.             add_command(name, :w_type, true, i)
  472.           end
  473.         else
  474.           for i in 1...$data_system.armor_types.size
  475.             name = $data_system.armor_types[i]
  476.             add_command(name, :a_type, true, i)
  477.           end
  478.         end
  479.       #---
  480.       when :slots
  481.         if $imported["YEA-AceEquipEngine"]
  482.           maximum = 1
  483.           for key in YEA::EQUIP::TYPES
  484.             maximum = [maximum, key[0]].max
  485.           end
  486.         else
  487.           maximum = 4
  488.         end
  489.         for i in 1..maximum
  490.           name = Vocab::etype(i)
  491.           add_command(name, :e_type, true, i) if name != ""
  492.         end
  493.       #---
  494.       else
  495.         add_command(command[1], command[0], true, @type)
  496.       end
  497.     end
  498.   end
  499.   
  500.   #--------------------------------------------------------------------------
  501.   # update
  502.   #--------------------------------------------------------------------------
  503.   def update
  504.     super
  505.     return unless self.active
  506.     @item_window.category = current_symbol if @item_window
  507.   end
  508.   
  509.   #--------------------------------------------------------------------------
  510.   # item_window=
  511.   #--------------------------------------------------------------------------
  512.   def item_window=(item_window)
  513.     @item_window = item_window
  514.     update
  515.   end
  516.   
  517. end # Window_ItemType

  518. #==============================================================================
  519. # ■ Window_ItemList
  520. #==============================================================================

  521. class Window_ItemList < Window_Selectable
  522.   
  523.   #--------------------------------------------------------------------------
  524.   # alias method: initialize
  525.   #--------------------------------------------------------------------------
  526.   alias window_itemlist_initialize_aim initialize
  527.   def initialize(dx, dy, dw, dh)
  528.     window_itemlist_initialize_aim(dx, dy, dw, dh)
  529.     @ext = :none
  530.     @name = ""
  531.   end
  532.   
  533.   #--------------------------------------------------------------------------
  534.   # alias method: category=
  535.   #--------------------------------------------------------------------------
  536.   alias window_itemlist_category_aim category=
  537.   def category=(category)
  538.     if @types_window.nil?
  539.       window_itemlist_category_aim(category)
  540.     else
  541.       return unless update_types?(category)
  542.       @category = category
  543.       if @types_window.active
  544.         @name = @types_window.current_data[:name]
  545.         @ext = @types_window.current_ext
  546.       end
  547.       refresh
  548.       self.oy = 0
  549.     end
  550.   end
  551.   
  552.   #--------------------------------------------------------------------------
  553.   # new method: update_types?
  554.   #--------------------------------------------------------------------------
  555.   def update_types?(category)
  556.     return true if @category != category
  557.     return false unless @types_window.active
  558.     if category == :category
  559.       return @name != @types_window.current_data[:name]
  560.     end
  561.     return @ext != @types_window.current_ext
  562.   end
  563.   
  564.   #--------------------------------------------------------------------------
  565.   # new method: types_window=
  566.   #--------------------------------------------------------------------------
  567.   def types_window=(window)
  568.     @types_window = window
  569.   end
  570.   
  571.   #--------------------------------------------------------------------------
  572.   # alias method: include?
  573.   #--------------------------------------------------------------------------
  574.   alias window_itemlist_include_aim include?
  575.   def include?(item)
  576.     if @types_window.nil?
  577.       return window_itemlist_include_aim(item)
  578.     else
  579.       return ace_item_menu_include?(item)
  580.     end
  581.   end
  582.   
  583.   #--------------------------------------------------------------------------
  584.   # new method: ace_item_menu_include?
  585.   #--------------------------------------------------------------------------
  586.   def ace_item_menu_include?(item)
  587.     case @category
  588.     #---
  589.     when :field
  590.       return false unless item.is_a?(RPG::Item)
  591.       return item.menu_ok?
  592.     when :battle
  593.       return false unless item.is_a?(RPG::Item)
  594.       return item.battle_ok?
  595.     #---
  596.     when :w_type
  597.       return false unless item.is_a?(RPG::Weapon)
  598.       return item.wtype_id == @types_window.current_ext
  599.     when :a_type
  600.       return false unless item.is_a?(RPG::Armor)
  601.       return item.atype_id == @types_window.current_ext
  602.     when :e_type
  603.       return false unless item.is_a?(RPG::Armor)
  604.       return item.etype_id == @types_window.current_ext
  605.     #---
  606.     when :all
  607.       case @types_window.current_ext
  608.       when :item
  609.         return item.is_a?(RPG::Item)
  610.       when :weapon
  611.         return item.is_a?(RPG::Weapon)
  612.       else
  613.         return item.is_a?(RPG::Armor)
  614.       end
  615.     #---
  616.     when :category
  617.       case @types_window.current_ext
  618.       when :item
  619.         return false unless item.is_a?(RPG::Item)
  620.       when :weapon
  621.         return false unless item.is_a?(RPG::Weapon)
  622.       else
  623.         return false unless item.is_a?(RPG::Armor)
  624.       end
  625.       return item.category.include?(@types_window.current_data[:name].upcase)
  626.     #---
  627.     else
  628.       return window_itemlist_include_aim(item)
  629.     end
  630.   end
  631.   
  632. end # Window_ItemList

  633. #==============================================================================
  634. # ■ Window_ItemStatus
  635. #==============================================================================

  636. class Window_ItemStatus < Window_Base
  637.   
  638.   #--------------------------------------------------------------------------
  639.   # initialize
  640.   #--------------------------------------------------------------------------
  641.   def initialize(dx, dy, item_window)
  642.     super(dx, dy, Graphics.width - dx, fitting_height(4))
  643.     @item_window = item_window
  644.     @item = nil
  645.     refresh
  646.   end
  647.   
  648.   #--------------------------------------------------------------------------
  649.   # update
  650.   #--------------------------------------------------------------------------
  651.   def update
  652.     super
  653.     update_item(@item_window.item)
  654.   end
  655.   
  656.   #--------------------------------------------------------------------------
  657.   # update_item
  658.   #--------------------------------------------------------------------------
  659.   def update_item(item)
  660.     return if @item == item
  661.     @item = item
  662.     refresh
  663.   end
  664.   
  665.   #--------------------------------------------------------------------------
  666.   # refresh
  667.   #--------------------------------------------------------------------------
  668.   def refresh
  669.     contents.clear
  670.     reset_font_settings
  671.     return draw_empty if @item.nil?
  672.     contents.font.size = YEA::ITEM::STATUS_FONT_SIZE
  673.     draw_item_image
  674.     draw_item_stats
  675.     draw_item_effects
  676.   end
  677.   
  678.   #--------------------------------------------------------------------------
  679.   # draw_empty
  680.   #--------------------------------------------------------------------------
  681.   def draw_empty
  682.     colour = Color.new(0, 0, 0, translucent_alpha/2)
  683.     rect = Rect.new(1, 1, 94, 94)
  684.     contents.fill_rect(rect, colour)
  685.     dx = 96; dy = 0
  686.     dw = (contents.width - 96) / 2
  687.     for i in 0...8
  688.       draw_background_box(dx, dy, dw)
  689.       dx = dx >= 96 + dw ? 96 : 96 + dw
  690.       dy += line_height if dx == 96
  691.     end
  692.   end
  693.   
  694.   #--------------------------------------------------------------------------
  695.   # draw_background_box
  696.   #--------------------------------------------------------------------------
  697.   def draw_background_box(dx, dy, dw)
  698.     colour = Color.new(0, 0, 0, translucent_alpha/2)
  699.     rect = Rect.new(dx+1, dy+1, dw-2, line_height-2)
  700.     contents.fill_rect(rect, colour)
  701.   end
  702.   
  703.   #--------------------------------------------------------------------------
  704.   # draw_item_image
  705.   #--------------------------------------------------------------------------
  706.   def draw_item_image
  707.     colour = Color.new(0, 0, 0, translucent_alpha/2)
  708.     rect = Rect.new(1, 1, 94, 94)
  709.     contents.fill_rect(rect, colour)
  710.     if @item.image.nil?
  711.       icon_index = @item.icon_index
  712.       bitmap = Cache.system("Iconset")
  713.       rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
  714.       target = Rect.new(0, 0, 96, 96)
  715.       contents.stretch_blt(target, bitmap, rect)
  716.     else
  717.       bitmap = Cache.picture(@item.image)
  718.       contents.blt(0, 0, bitmap, bitmap.rect, 255)
  719.     end
  720.   end
  721.   
  722.   #--------------------------------------------------------------------------
  723.   # draw_item_stats
  724.   #--------------------------------------------------------------------------
  725.   def draw_item_stats
  726.     return unless @item.is_a?(RPG::Weapon) || @item.is_a?(RPG::Armor)
  727.     dx = 96; dy = 0
  728.     dw = (contents.width - 96) / 2
  729.     for i in 0...8
  730.       draw_equip_param(i, dx, dy, dw)
  731.       dx = dx >= 96 + dw ? 96 : 96 + dw
  732.       dy += line_height if dx == 96
  733.     end
  734.   end
  735.   
  736.   #--------------------------------------------------------------------------
  737.   # draw_equip_param
  738.   #--------------------------------------------------------------------------
  739.   def draw_equip_param(param_id, dx, dy, dw)
  740.     draw_background_box(dx, dy, dw)
  741.     change_color(system_color)
  742.     draw_text(dx+4, dy, dw-8, line_height, Vocab::param(param_id))
  743.     if $imported["YEA-EquipDynamicStats"]
  744.       draw_percentage_param(param_id, dx, dy, dw)
  745.     else
  746.       draw_set_param(param_id, dx, dy, dw)
  747.     end
  748.   end
  749.   
  750.   #--------------------------------------------------------------------------
  751.   # draw_percentage_param
  752.   #--------------------------------------------------------------------------
  753.   def draw_percentage_param(param_id, dx, dy, dw)
  754.     if @item.per_params[param_id] != 0 && @item.params[param_id] != 0
  755.       text = draw_set_param(param_id, dx, dy, dw)
  756.       dw -= text_size(text).width
  757.       draw_percent_param(param_id, dx, dy, dw)
  758.     elsif @item.per_params[param_id] != 0 && @item.params[param_id] == 0
  759.       draw_percent_param(param_id, dx, dy, dw)
  760.     else
  761.       draw_set_param(param_id, dx, dy, dw)
  762.     end
  763.   end
  764.   
  765.   #--------------------------------------------------------------------------
  766.   # draw_set_param
  767.   #--------------------------------------------------------------------------
  768.   def draw_set_param(param_id, dx, dy, dw)
  769.     value = @item.params[param_id]
  770.     if $imported["YEA-EquipDynamicStats"] && @item.var_params[param_id] > 0
  771.       value += $game_variables[@item.var_params[param_id]] rescue 0
  772.     end
  773.     change_color(param_change_color(value), value != 0)
  774.     text = value.group
  775.     text = "+" + text if value > 0
  776.     draw_text(dx+4, dy, dw-8, line_height, text, 2)
  777.     return text
  778.   end
  779.   
  780.   #--------------------------------------------------------------------------
  781.   # draw_percent_param
  782.   #--------------------------------------------------------------------------
  783.   def draw_percent_param(param_id, dx, dy, dw)
  784.     value = @item.per_params[param_id]
  785.     change_color(param_change_color(value))
  786.     text = (@item.per_params[param_id] * 100).to_i.group + "%"
  787.     text = "+" + text if @item.per_params[param_id] > 0
  788.     draw_text(dx+4, dy, dw-8, line_height, text, 2)
  789.     return text
  790.   end
  791.   
  792.   #--------------------------------------------------------------------------
  793.   # draw_item_effects
  794.   #--------------------------------------------------------------------------
  795.   def draw_item_effects
  796.     return unless @item.is_a?(RPG::Item)
  797.     dx = 96; dy = 0
  798.     dw = (contents.width - 96) / 2
  799.     draw_hp_recover(dx, dy + line_height * 0, dw)
  800.     draw_mp_recover(dx, dy + line_height * 1, dw)
  801.     draw_tp_recover(dx + dw, dy + line_height * 0, dw)
  802.     draw_tp_gain(dx + dw, dy + line_height * 1, dw)
  803.     dw = contents.width - 96
  804.     draw_applies(dx, dy + line_height * 2, dw)
  805.     draw_removes(dx, dy + line_height * 3, dw)
  806.   end
  807.   
  808.   #--------------------------------------------------------------------------
  809.   # draw_hp_recover
  810.   #--------------------------------------------------------------------------
  811.   def draw_hp_recover(dx, dy, dw)
  812.     draw_background_box(dx, dy, dw)
  813.     change_color(system_color)
  814.     draw_text(dx+4, dy, dw-8, line_height, Vocab::item_status(:hp_recover))
  815.     per = 0
  816.     set = 0
  817.     for effect in @item.effects
  818.       next unless effect.code == 11
  819.       per += (effect.value1 * 100).to_i
  820.       set += effect.value2.to_i
  821.     end
  822.     if per != 0 && set != 0
  823.       change_color(param_change_color(set))
  824.       text = set > 0 ? sprintf("+%s", set.group) : set.group
  825.       draw_text(dx+4, dy, dw-8, line_height, text, 2)
  826.       dw -= text_size(text).width
  827.       change_color(param_change_color(per))
  828.       text = per > 0 ? sprintf("+%s%%", per.group) : sprintf("%s%%", per.group)
  829.       draw_text(dx+4, dy, dw-8, line_height, text, 2)
  830.       return
  831.     elsif per != 0
  832.       change_color(param_change_color(per))
  833.       text = per > 0 ? sprintf("+%s%%", per.group) : sprintf("%s%%", per.group)
  834.     elsif set != 0
  835.       change_color(param_change_color(set))
  836.       text = set > 0 ? sprintf("+%s", set.group) : set.group
  837.     else
  838.       change_color(normal_color, false)
  839.       text = Vocab::item_status(:empty)
  840.     end
  841.     draw_text(dx+4, dy, dw-8, line_height, text, 2)
  842.   end
  843.   
  844.   #--------------------------------------------------------------------------
  845.   # draw_mp_recover
  846.   #--------------------------------------------------------------------------
  847.   def draw_mp_recover(dx, dy, dw)
  848.     draw_background_box(dx, dy, dw)
  849.     change_color(system_color)
  850.     draw_text(dx+4, dy, dw-8, line_height, Vocab::item_status(:mp_recover))
  851.     per = 0
  852.     set = 0
  853.     for effect in @item.effects
  854.       next unless effect.code == 12
  855.       per += (effect.value1 * 100).to_i
  856.       set += effect.value2.to_i
  857.     end
  858.     if per != 0 && set != 0
  859.       change_color(param_change_color(set))
  860.       text = set > 0 ? sprintf("+%s", set.group) : set.group
  861.       draw_text(dx+4, dy, dw-8, line_height, text, 2)
  862.       dw -= text_size(text).width
  863.       change_color(param_change_color(per))
  864.       text = per > 0 ? sprintf("+%s%%", per.group) : sprintf("%s%%", per.group)
  865.       draw_text(dx+4, dy, dw-8, line_height, text, 2)
  866.       return
  867.     elsif per != 0
  868.       change_color(param_change_color(per))
  869.       text = per > 0 ? sprintf("+%s%%", per.group) : sprintf("%s%%", per.group)
  870.     elsif set != 0
  871.       change_color(param_change_color(set))
  872.       text = set > 0 ? sprintf("+%s", set.group) : set.group
  873.     else
  874.       change_color(normal_color, false)
  875.       text = Vocab::item_status(:empty)
  876.     end
  877.     draw_text(dx+4, dy, dw-8, line_height, text, 2)
  878.   end
  879.   
  880.   #--------------------------------------------------------------------------
  881.   # draw_tp_recover
  882.   #--------------------------------------------------------------------------
  883.   def draw_tp_recover(dx, dy, dw)
  884.     draw_background_box(dx, dy, dw)
  885.     change_color(system_color)
  886.     draw_text(dx+4, dy, dw-8, line_height, Vocab::item_status(:tp_recover))
  887.     set = 0
  888.     for effect in @item.effects
  889.       next unless effect.code == 13
  890.       set += effect.value1.to_i
  891.     end
  892.     if set != 0
  893.       change_color(param_change_color(set))
  894.       text = set > 0 ? sprintf("+%s", set.group) : set.group
  895.     else
  896.       change_color(normal_color, false)
  897.       text = Vocab::item_status(:empty)
  898.     end
  899.     draw_text(dx+4, dy, dw-8, line_height, text, 2)
  900.   end
  901.   
  902.   #--------------------------------------------------------------------------
  903.   # draw_tp_gain
  904.   #--------------------------------------------------------------------------
  905.   def draw_tp_gain(dx, dy, dw)
  906.     draw_background_box(dx, dy, dw)
  907.     change_color(system_color)
  908.     draw_text(dx+4, dy, dw-8, line_height, Vocab::item_status(:tp_gain))
  909.     set = @item.tp_gain
  910.     if set != 0
  911.       change_color(param_change_color(set))
  912.       text = set > 0 ? sprintf("+%s", set.group) : set.group
  913.     else
  914.       change_color(normal_color, false)
  915.       text = Vocab::item_status(:empty)
  916.     end
  917.     draw_text(dx+4, dy, dw-8, line_height, text, 2)
  918.   end
  919.   
  920.   #--------------------------------------------------------------------------
  921.   # draw_applies
  922.   #--------------------------------------------------------------------------
  923.   def draw_applies(dx, dy, dw)
  924.     draw_background_box(dx, dy, dw)
  925.     change_color(system_color)
  926.     draw_text(dx+4, dy, dw-8, line_height, Vocab::item_status(:applies))
  927.     icons = []
  928.     for effect in @item.effects
  929.       case effect.code
  930.       when 21
  931.         next unless effect.value1 > 0
  932.         next if $data_states[effect.value1].nil?
  933.         icons.push($data_states[effect.data_id].icon_index)
  934.       when 31
  935.         icons.push($game_actors[1].buff_icon_index(1, effect.data_id))
  936.       when 32
  937.         icons.push($game_actors[1].buff_icon_index(-1, effect.data_id))
  938.       end
  939.       icons.delete(0)
  940.       break if icons.size >= YEA::ITEM::MAX_ICONS_DRAWN
  941.     end
  942.     draw_icons(dx, dy, dw, icons)
  943.   end
  944.   
  945.   #--------------------------------------------------------------------------
  946.   # draw_removes
  947.   #--------------------------------------------------------------------------
  948.   def draw_removes(dx, dy, dw)
  949.     draw_background_box(dx, dy, dw)
  950.     change_color(system_color)
  951.     draw_text(dx+4, dy, dw-8, line_height, Vocab::item_status(:removes))
  952.     icons = []
  953.     for effect in @item.effects
  954.       case effect.code
  955.       when 22
  956.         next unless effect.value1 > 0
  957.         next if $data_states[effect.value1].nil?
  958.         icons.push($data_states[effect.data_id].icon_index)
  959.       when 33
  960.         icons.push($game_actors[1].buff_icon_index(1, effect.data_id))
  961.       when 34
  962.         icons.push($game_actors[1].buff_icon_index(-1, effect.data_id))
  963.       end
  964.       icons.delete(0)
  965.       break if icons.size >= YEA::ITEM::MAX_ICONS_DRAWN
  966.     end
  967.     draw_icons(dx, dy, dw, icons)
  968.   end
  969.   
  970.   #--------------------------------------------------------------------------
  971.   # draw_icons
  972.   #--------------------------------------------------------------------------
  973.   def draw_icons(dx, dy, dw, icons)
  974.     dx += dw - 4
  975.     dx -= icons.size * 24
  976.     for icon_id in icons
  977.       draw_icon(icon_id, dx, dy)
  978.       dx += 24
  979.     end
  980.     if icons.size == 0
  981.       change_color(normal_color, false)
  982.       text = Vocab::item_status(:empty)
  983.       draw_text(4, dy, contents.width-8, line_height, text, 2)
  984.     end
  985.   end
  986.   
  987. end # Window_ItemStatus

  988. #==============================================================================
  989. # ■ Scene_Item
  990. #==============================================================================

  991. class Scene_Item < Scene_ItemBase
  992.   
  993.   #--------------------------------------------------------------------------
  994.   # alias method: start
  995.   #--------------------------------------------------------------------------
  996.   alias scene_item_start_aim start
  997.   def start
  998.     scene_item_start_aim
  999.     create_types_window
  1000.     create_status_window
  1001.     relocate_windows
  1002.   end
  1003.   
  1004.   #--------------------------------------------------------------------------
  1005.   # overwrite method: return_scene
  1006.   #--------------------------------------------------------------------------
  1007.   def return_scene
  1008.     $game_temp.scene_item_index = nil
  1009.     $game_temp.scene_item_oy = nil
  1010.     super
  1011.   end
  1012.   
  1013.   #--------------------------------------------------------------------------
  1014.   # overwrite method: create_category_window
  1015.   #--------------------------------------------------------------------------
  1016.   def create_category_window
  1017.     wy = @help_window.height
  1018.     @category_window = Window_ItemCommand.new(0, wy)
  1019.     @category_window.viewport = @viewport
  1020.     @category_window.help_window = @help_window
  1021.     @category_window.y = @help_window.height
  1022.     if !$game_temp.scene_item_index.nil?
  1023.       @category_window.select($game_temp.scene_item_index)
  1024.       @category_window.oy = $game_temp.scene_item_oy
  1025.     end
  1026.     $game_temp.scene_item_index = nil
  1027.     $game_temp.scene_item_oy = nil
  1028.     @category_window.set_handler(:ok, method(:on_category_ok))
  1029.     @category_window.set_handler(:cancel, method(:return_scene))
  1030.     @category_window.set_handler(:item, method(:open_types))
  1031.     @category_window.set_handler(:weapon, method(:open_types))
  1032.     @category_window.set_handler(:armor, method(:open_types))
  1033.     process_custom_item_commands
  1034.   end
  1035.   
  1036.   #--------------------------------------------------------------------------
  1037.   # new method: process_custom_item_commands
  1038.   #--------------------------------------------------------------------------
  1039.   def process_custom_item_commands
  1040.     for command in YEA::ITEM::COMMANDS
  1041.       next unless YEA::ITEM::CUSTOM_ITEM_COMMANDS.include?(command)
  1042.       called_method = YEA::ITEM::CUSTOM_ITEM_COMMANDS[command][3]
  1043.       @category_window.set_handler(command, method(called_method))
  1044.     end
  1045.   end
  1046.   
  1047.   #--------------------------------------------------------------------------
  1048.   # new method: create_types_window
  1049.   #--------------------------------------------------------------------------
  1050.   def create_types_window
  1051.     wy = @category_window.y
  1052.     @types_window = Window_ItemType.new(Graphics.width, wy)
  1053.     @types_window.viewport = @viewport
  1054.     @types_window.help_window = @help_window
  1055.     @types_window.y = @help_window.height
  1056.     @types_window.item_window = @item_window
  1057.     @item_window.types_window = @types_window
  1058.     @types_window.set_handler(:ok, method(:on_types_ok))
  1059.     @types_window.set_handler(:cancel, method(:on_types_cancel))
  1060.   end
  1061.   
  1062.   #--------------------------------------------------------------------------
  1063.   # new method: create_status_window
  1064.   #--------------------------------------------------------------------------
  1065.   def create_status_window
  1066.     wx = @category_window.width
  1067.     wy = @category_window.y
  1068.     @status_window = Window_ItemStatus.new(wx, wy, @item_window)
  1069.     @status_window.viewport = @viewport
  1070.   end
  1071.   
  1072.   #--------------------------------------------------------------------------
  1073.   # new method: relocate_windows
  1074.   #--------------------------------------------------------------------------
  1075.   def relocate_windows
  1076.     return unless $imported["YEA-AceMenuEngine"]
  1077.     case Menu.help_window_location
  1078.     when 0 # Top
  1079.       @help_window.y = 0
  1080.       @category_window.y = @help_window.height
  1081.       @item_window.y = @category_window.y + @category_window.height
  1082.     when 1 # Middle
  1083.       @category_window.y = 0
  1084.       @help_window.y = @category_window.height
  1085.       @item_window.y = @help_window.y + @help_window.height
  1086.     else # Bottom
  1087.       @category_window.y = 0
  1088.       @item_window.y = @category_window.height
  1089.       @help_window.y = @item_window.y + @item_window.height
  1090.     end
  1091.     @types_window.y = @category_window.y
  1092.     @status_window.y = @category_window.y
  1093.   end
  1094.   
  1095.   #--------------------------------------------------------------------------
  1096.   # new method: open_categories
  1097.   #--------------------------------------------------------------------------
  1098.   def open_types
  1099.     @category_window.x = Graphics.width
  1100.     @types_window.x = 0
  1101.     @types_window.reveal(@category_window.current_symbol)
  1102.   end
  1103.   
  1104.   #--------------------------------------------------------------------------
  1105.   # new method: on_types_ok
  1106.   #--------------------------------------------------------------------------
  1107.   def on_types_ok
  1108.     @item_window.activate
  1109.     @item_window.select_last
  1110.   end
  1111.   
  1112.   #--------------------------------------------------------------------------
  1113.   # new method: on_types_cancel
  1114.   #--------------------------------------------------------------------------
  1115.   def on_types_cancel
  1116.     @category_window.x = 0
  1117.     @category_window.activate
  1118.     @types_window.unselect
  1119.     @types_window.x = Graphics.width
  1120.   end
  1121.   
  1122.   #--------------------------------------------------------------------------
  1123.   # alias method: on_item_cancel
  1124.   #--------------------------------------------------------------------------
  1125.   alias scene_item_on_item_cancel_aim on_item_cancel
  1126.   def on_item_cancel
  1127.     if @types_window.x <= 0
  1128.       @item_window.unselect
  1129.       @types_window.activate
  1130.     else
  1131.       scene_item_on_item_cancel_aim
  1132.     end
  1133.   end
  1134.   
  1135.   #--------------------------------------------------------------------------
  1136.   # new method: command_totori
  1137.   #--------------------------------------------------------------------------
  1138.   def command_totori
  1139.     SceneManager.call(Scene_Alchemy)
  1140.   end
  1141.   
  1142.   #--------------------------------------------------------------------------
  1143.   # new method: command_name1
  1144.   #--------------------------------------------------------------------------
  1145.   def command_name1
  1146.     # Do nothing.
  1147.   end
  1148.   
  1149.   #--------------------------------------------------------------------------
  1150.   # new method: command_name2
  1151.   #--------------------------------------------------------------------------
  1152.   def command_name2
  1153.     # Do nothing.
  1154.   end
  1155.   
  1156. end # Scene_Item

  1157. #==============================================================================
  1158. #
  1159. # ▼ End of File
  1160. #
  1161. #==============================================================================
复制代码

点评

谢谢!本来想战斗中也有物品分类的,既然做不到那也不强求,感谢!  发表于 2012-6-16 09:16
可怜的孩子,我差点也把你无视了~  发表于 2012-6-15 20:16
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-26 04:00

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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