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

Project1

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

[已经解决] 问题又来了!

[复制链接]

Lv3.寻梦者

梦石
0
星屑
2767
在线时间
675 小时
注册时间
2012-1-29
帖子
89
跳转到指定楼层
1
发表于 2012-2-2 06:15:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想请教一下,怎样将物品扩张为多几个类。
比如:食物
          任务物品
          稀罕品
          消耗品
          材料
            .
            .
求解答!谢谢@!

顺便说下,发帖需要的验证码非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常非常难以看到!!!

点评

⑼0⑼先去看版规,童鞋  发表于 2012-2-2 09:04

Lv3.寻梦者

梦石
0
星屑
3176
在线时间
1442 小时
注册时间
2009-7-27
帖子
1454
2
发表于 2012-2-2 08:08:46 | 只看该作者
在物品的叙述结尾用@(类别的名称) ,如:@武器。这样得到的那个东西就会被分到武器类。

  1. #在物品的叙述后加  @(类别的名称)  即可
  2. #==============================================================================
  3. # ■ Harts_Window_ItemTitle
  4. #==============================================================================

  5. class Harts_Window_ItemTitle < Window_Base
  6.   def initialize
  7.     super(0, 64, 160, 64)
  8.     self.contents = Bitmap.new(width - 32, height - 32)
  9.     self.contents.clear
  10.     self.contents.font.color = normal_color
  11.     self.contents.draw_text(4, 0, 120, 32, $data_system.words.item, 1)
  12.   end
  13. end

  14. #==============================================================================
  15. # ■ Harts_Window_ItemCommand
  16. #==============================================================================

  17. class Harts_Window_ItemCommand < Window_Selectable
  18.   attr_accessor :commands
  19.   #--------------------------------------------------------------------------
  20.   # ● 初始化,生成commands窗口
  21.   #--------------------------------------------------------------------------
  22.   def initialize
  23.     super(0, 128, 160, 352)
  24.     self.contents = Bitmap.new(width - 32, height - 32)
  25.     @commands = []
  26.     #————————生成commands窗口
  27.     for i in 1...$data_items.size
  28.       if $game_party.item_number(i) > 0
  29.         push = true
  30.         for com in @commands
  31.           if com == $data_items[i].desc
  32.             push = false
  33.           end
  34.         end
  35.         if push == true
  36.           @commands.push($data_items[i].desc)
  37.         end
  38.       end
  39.     end
  40.     for i in 1...$data_weapons.size
  41.       if $game_party.weapon_number(i) > 0
  42.         push = true
  43.         for com in @commands
  44.           if com == $data_weapons[i].desc
  45.             push = false
  46.           end
  47.         end
  48.         if push == true
  49.           @commands.push($data_weapons[i].desc)
  50.         end
  51.       end
  52.     end
  53.     for i in 1...$data_armors.size
  54.       if $game_party.armor_number(i) > 0
  55.         push = true
  56.         for com in @commands
  57.           if com == $data_armors[i].desc
  58.             push = false
  59.           end
  60.         end
  61.         if push == true
  62.           @commands.push($data_armors[i].desc)
  63.         end
  64.       end
  65.     end
  66.     if @commands == []
  67.       @commands.push("无任何物品")
  68.     end      
  69.     @item_max = @commands.size
  70.     refresh
  71.     self.index = 0
  72.   end
  73.   #--------------------------------------------------------------------------
  74.   #--------------------------------------------------------------------------
  75.   def refresh
  76.     self.contents.clear
  77.     for i in 0...@item_max
  78.       draw_item(i, normal_color)
  79.     end
  80.   end
  81.   #--------------------------------------------------------------------------
  82.   #--------------------------------------------------------------------------
  83.   def draw_item(index, color)
  84.     self.contents.font.color = color
  85.     y = index * 32
  86.     self.contents.draw_text(4, y, 128, 32, @commands[index])
  87.   end
  88.   #--------------------------------------------------------------------------
  89.   # 只描绘原文字
  90.   #--------------------------------------------------------------------------
  91.   def update_help
  92.     @help_window.set_text(@commands[self.index])
  93.   end
  94. end

  95. #==============================================================================
  96. # ■ Window_Item
  97. #==============================================================================

  98. class Harts_Window_ItemList < Window_Selectable
  99.   #--------------------------------------------------------------------------
  100.   #--------------------------------------------------------------------------
  101.   def initialize
  102.     super(160, 64, 480, 416)
  103.     refresh
  104.     self.index = -1
  105.   end
  106.   #--------------------------------------------------------------------------
  107.   #--------------------------------------------------------------------------
  108.   def item
  109.     return @data[self.index]
  110.   end
  111.   #--------------------------------------------------------------------------
  112.   #--------------------------------------------------------------------------
  113.   def refresh
  114.     if self.contents != nil
  115.       self.contents.dispose
  116.       self.contents = nil
  117.     end
  118.     @data = []
  119.   end
  120.   #--------------------------------------------------------------------------
  121.   #--------------------------------------------------------------------------
  122.   def set_item(command)
  123.     refresh
  124.     for i in 1...$data_items.size
  125.       if $game_party.item_number(i) > 0 and $data_items[i].desc == command
  126.         @data.push($data_items[i])
  127.       end
  128.     end
  129.     for i in 1...$data_weapons.size
  130.       if $game_party.weapon_number(i) > 0 and $data_weapons[i].desc == command
  131.         @data.push($data_weapons[i])
  132.       end
  133.     end
  134.     for i in 1...$data_armors.size
  135.       if $game_party.armor_number(i) > 0 and $data_armors[i].desc == command
  136.         @data.push($data_armors[i])
  137.       end
  138.     end
  139.     @item_max = @data.size
  140.     if @item_max > 0
  141.       self.contents = Bitmap.new(width - 32, row_max * 32)
  142.       self.contents.clear
  143.       for i in 0...@item_max
  144.         draw_item(i)
  145.       end
  146.     end
  147.   end
  148.   #--------------------------------------------------------------------------
  149.   #--------------------------------------------------------------------------
  150.   def item_number
  151.     return @item_max
  152.   end
  153.   #--------------------------------------------------------------------------
  154.   #--------------------------------------------------------------------------
  155.   def draw_item(index)
  156.     item = @data[index]
  157.     case item
  158.     when RPG::Item
  159.       number = $game_party.item_number(item.id)
  160.     when RPG::Weapon
  161.       number = $game_party.weapon_number(item.id)
  162.     when RPG::Armor
  163.       number = $game_party.armor_number(item.id)
  164.     end
  165.     if item.is_a?(RPG::Item) and
  166.       $game_party.item_can_use?(item.id)
  167.       self.contents.font.color = normal_color
  168.     else
  169.       self.contents.font.color = disabled_color
  170.     end
  171.     x = 4
  172.     y = index * 32
  173.     bitmap = RPG::Cache.icon(item.icon_name)
  174.     opacity = self.contents.font.color == normal_color ? 255 : 128
  175.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
  176.     self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  177.     self.contents.draw_text(x + 400, y, 16, 32, ":", 1)
  178.     self.contents.draw_text(x + 416, y, 24, 32, number.to_s, 2)
  179.   end
  180.   #--------------------------------------------------------------------------
  181.   #--------------------------------------------------------------------------
  182.   def update_help
  183.     @help_window.set_text(self.item == nil ? "" : self.item.description)
  184.   end
  185. end

  186. #==============================================================================
  187. # ■ Harts_Scene_Item
  188. #==============================================================================

  189. class Scene_Item
  190.   #--------------------------------------------------------------------------
  191.   #--------------------------------------------------------------------------
  192.   def main
  193.     @itemtitle_window = Harts_Window_ItemTitle.new
  194.     @itemcommand_window = Harts_Window_ItemCommand.new
  195.     @command_index = @itemcommand_window.index
  196.     @itemlist_window = Harts_Window_ItemList.new
  197.     @itemlist_window.active = false
  198.     @help_window = Window_Help.new
  199.     @help_window.x = 0
  200.     @help_window.y = 0
  201.     @itemcommand_window.help_window = @help_window
  202.     @itemlist_window.help_window = @help_window
  203.     @target_window = Window_Target.new
  204.     @target_window.visible = false
  205.     @target_window.active = false
  206.     @itemlist_window.set_item(@itemcommand_window.commands[@command_index])
  207.     Graphics.transition
  208.     loop do
  209.       Graphics.update
  210.       Input.update
  211.       update
  212.       if $scene != self
  213.         break
  214.       end
  215.     end
  216.     Graphics.freeze
  217.     @itemtitle_window.dispose
  218.     @itemcommand_window.dispose
  219.     @itemlist_window.dispose
  220.     @help_window.dispose
  221.     @target_window.dispose
  222.   end
  223.   #--------------------------------------------------------------------------
  224.   #--------------------------------------------------------------------------
  225.   def update
  226.     @itemtitle_window.update
  227.     @itemcommand_window.update
  228.     @itemlist_window.update
  229.     @help_window.update
  230.     @target_window.update
  231.     if @command_index != @itemcommand_window.index
  232.       @command_index = @itemcommand_window.index
  233.       @itemlist_window.set_item(@itemcommand_window.commands[@command_index])
  234.     end
  235.     if @itemcommand_window.active
  236.       update_itemcommand
  237.       return
  238.     end
  239.     if @itemlist_window.active
  240.       update_itemlist
  241.       return
  242.     end
  243.     if @target_window.active
  244.       update_target
  245.       return
  246.     end
  247.   end
  248.   #--------------------------------------------------------------------------
  249.   #--------------------------------------------------------------------------
  250.   def update_itemcommand
  251.     if Input.trigger?(Input::B)
  252.       $game_system.se_play($data_system.cancel_se)
  253.       $scene = Scene_Menu.new(0)
  254.       return
  255.     end
  256.     if Input.trigger?(Input::C)
  257.       if @itemlist_window.item_number == 0
  258.         $game_system.se_play($data_system.buzzer_se)
  259.         return
  260.       end
  261.       $game_system.se_play($data_system.decision_se)
  262.       @itemcommand_window.active = false
  263.       @itemlist_window.active = true
  264.       @itemlist_window.index = 0
  265.       return
  266.     end
  267.   end
  268.   #--------------------------------------------------------------------------
  269.   #--------------------------------------------------------------------------
  270.   def update_itemlist
  271.     if Input.trigger?(Input::B)
  272.       $game_system.se_play($data_system.cancel_se)
  273.       @itemcommand_window.active = true
  274.       @itemlist_window.active = false
  275.       @itemlist_window.index = -1
  276.       @itemcommand_window.index = @command_index
  277.       return
  278.     end
  279.     if Input.trigger?(Input::C)
  280.       @item = @itemlist_window.item
  281.       unless @item.is_a?(RPG::Item)
  282.         $game_system.se_play($data_system.buzzer_se)
  283.         return
  284.       end
  285.       unless $game_party.item_can_use?(@item.id)
  286.         $game_system.se_play($data_system.buzzer_se)
  287.         return
  288.       end
  289.       $game_system.se_play($data_system.decision_se)
  290.       if @item.scope >= 3
  291.         @itemlist_window.active = false
  292.         @target_window.x = 304
  293.         @target_window.visible = true
  294.         @target_window.active = true
  295.         if @item.scope == 4 || @item.scope == 6
  296.           @target_window.index = 0
  297.         else
  298.           @target_window.index = 0
  299.         end
  300.       else
  301.         if @item.common_event_id > 0
  302.           $game_temp.common_event_id = @item.common_event_id
  303.           $game_system.se_play(@item.menu_se)
  304.             if @item.consumable
  305.               $game_party.lose_item(@item.id, 1)
  306.               @itemlist_window.draw_item(@itemlist_window.index)
  307.             end
  308.           $scene = Scene_Map.new
  309.           return
  310.         end
  311.       end
  312.       return
  313.     end
  314.   end
  315.   #--------------------------------------------------------------------------
  316.   #--------------------------------------------------------------------------
  317.   def update_target
  318.     if Input.trigger?(Input::B)
  319.       $game_system.se_play($data_system.cancel_se)
  320.       unless $game_party.item_can_use?(@item.id)
  321.         @itemlist_window.refresh
  322.       end
  323.       @itemlist_window.active = true
  324.       @target_window.visible = false
  325.       @target_window.active = false
  326.       @itemlist_window.set_item(@itemcommand_window.commands[@command_index])
  327.       return
  328.     end
  329.     if Input.trigger?(Input::C)
  330.       if $game_party.item_number(@item.id) == 0
  331.         $game_system.se_play($data_system.buzzer_se)
  332.         return
  333.       end
  334.       if @target_window.index == -1
  335.         used = false
  336.         for i in $game_party.actors
  337.           used |= i.item_effect(@item)
  338.         end
  339.       end
  340.       if @target_window.index >= 0
  341.         target = $game_party.actors[@target_window.index]
  342.         used = target.item_effect(@item)
  343.       end
  344.       if used
  345.         $game_system.se_play(@item.menu_se)
  346.         if @item.consumable
  347.           $game_party.lose_item(@item.id, 1)
  348.           @itemlist_window.draw_item(@itemlist_window.index)
  349.           @itemlist_window.set_item(@itemcommand_window.commands[@command_index])
  350.         end
  351.         @target_window.refresh
  352.         if $game_party.all_dead?
  353.           $scene = Scene_Gameover.new
  354.           return
  355.         end
  356.         if @item.common_event_id > 0
  357.           $game_temp.common_event_id = @item.common_event_id
  358.           $scene = Scene_Map.new
  359.           return
  360.         end
  361.       end
  362.       unless used
  363.         $game_system.se_play($data_system.buzzer_se)
  364.       end
  365.     return
  366.     end
  367.   end
  368. end

  369. #==============================================================================
  370. # ■ RPG追加定义,使用@符号分类
  371. #==============================================================================

  372. module RPG
  373.   class Weapon
  374.     def description
  375.       description = @description.split(/@/)[0]
  376.       return description != nil ? description : ''
  377.     end
  378.     def desc
  379.       desc = @description.split(/@/)[1]
  380.       return desc != nil ? desc : "普通物品"
  381.     end
  382.   end
  383.   class Item
  384.     def description
  385.       description = @description.split(/@/)[0]
  386.       return description != nil ? description : ''
  387.     end
  388.     def desc
  389.       desc = @description.split(/@/)[1]
  390.       return desc != nil ? desc : "普通物品"
  391.     end
  392.   end
  393.   class Armor
  394.     def description
  395.       description = @description.split(/@/)[0]
  396.       return description != nil ? description : ''
  397.     end
  398.     def desc
  399.       desc = @description.split(/@/)[1]
  400.       return desc != nil ? desc : "普通物品"
  401.     end
  402.   end
  403. end
复制代码

评分

参与人数 1星屑 +2 收起 理由
柳柳QQ + 2 正解

查看全部评分


博客:我的博客
回复

使用道具 举报

Lv2.观梦者

路人

梦石
0
星屑
590
在线时间
943 小时
注册时间
2011-8-20
帖子
1011
3
发表于 2012-2-2 09:31:12 | 只看该作者
有个帖子叫置顶.......
为填坑而修炼中……
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2767
在线时间
675 小时
注册时间
2012-1-29
帖子
89
4
 楼主| 发表于 2012-2-2 10:31:07 | 只看该作者
好吧,我愚昧了!
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-28 11:38

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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