Project1

标题: 用装备大图做物品大图 [打印本页]

作者: zxc3824    时间: 2011-3-12 12:06
标题: 用装备大图做物品大图
  1. #==============================================================================
  2. # 本脚本来自www.66rpg.com,转载和使用请保留此信息 #==============================================================================


  3. module RPG
  4.   class Weapon
  5.     def name
  6.       name = @name.split(/@/)[0]
  7.       return name != nil ? name : ''
  8.     end
  9.     def pic_name
  10.       pic_name = @name.split(/@/)[1]
  11.       return pic_name != nil ? pic_name : ""
  12.     end
  13.   end
  14.   class Armor
  15.     def name
  16.       name = @name.split(/@/)[0]
  17.       return name != nil ? name : ''
  18.     end
  19.     def pic_name
  20.       pic_name = @name.split(/@/)[1]
  21.       return pic_name != nil ? pic_name : ""
  22.     end
  23.   end
  24.   class Item
  25.     def name
  26.       name = @name.split(/@/)[0]
  27.       return name != nil ? name : ''
  28.     end
  29.     def pic_name
  30.       pic_name = @name.split(/@/)[1]
  31.       return pic_name != nil ? pic_name : ""
  32.     end
  33.   end

  34. end
  35. #==============================================================================
  36. # ■ Window_Equip
  37. #------------------------------------------------------------------------------
  38. #  装备物品大图标显示。
  39. #==============================================================================

  40. class Window_Equip < Window_Base
  41.   #--------------------------------------------------------------------------
  42.   # ● 初始化对像
  43.   #--------------------------------------------------------------------------
  44.   def initialize
  45.     super(0, 0, 640, 480)
  46.     @item = nil
  47.     self.contents = Bitmap.new(width - 32, height - 32)
  48.     self.opacity = 0
  49.     refresh
  50.   end
  51.   #--------------------------------------------------------------------------
  52.   # ● 刷新
  53.   #--------------------------------------------------------------------------
  54.   def refresh
  55.     self.contents.clear
  56.     if @item != nil
  57.       bitmap = RPG::Cache.picture(@item.pic_name)
  58.       pic_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  59.       self.contents.blt(0, 0, bitmap, pic_rect)
  60.     end
  61.   end
  62.   def set_item(item)
  63.     @item = item
  64.   end
  65. end

  66. #==============================================================================
  67. # ■ Scene_Equip
  68. #------------------------------------------------------------------------------
  69. #  处理装备画面的类。
  70. #==============================================================================

  71. class Scene_Equip
  72.   #--------------------------------------------------------------------------
  73.   # ● 主处理
  74.   #--------------------------------------------------------------------------
  75.   def main
  76.     # 获取角色
  77.     @actor = $game_party.actors[@actor_index]
  78.     # 生成窗口
  79.     @help_window = Window_Help.new
  80.     @left_window = Window_EquipLeft.new(@actor)
  81.     @right_window = Window_EquipRight.new(@actor)
  82.     @item_window1 = Window_EquipItem.new(@actor, 0)
  83.     @item_window2 = Window_EquipItem.new(@actor, 1)
  84.     @item_window3 = Window_EquipItem.new(@actor, 2)
  85.     @item_window4 = Window_EquipItem.new(@actor, 3)
  86.     @item_window5 = Window_EquipItem.new(@actor, 4)
  87.     # 关联帮助窗口
  88.     @right_window.help_window = @help_window
  89.     @item_window1.help_window = @help_window
  90.     @item_window2.help_window = @help_window
  91.     @item_window3.help_window = @help_window
  92.     @item_window4.help_window = @help_window
  93.     @item_window5.help_window = @help_window
  94.     # 设置光标位置
  95.     @right_window.index = @equip_index
  96.     ##############
  97.     @equip_window = Window_Equip.new
  98.     ##############
  99.     refresh
  100.     # 执行过渡
  101.     Graphics.transition
  102.     # 主循环
  103.     loop do
  104.       # 刷新游戏画面
  105.       Graphics.update
  106.       # 刷新输入信息
  107.       Input.update
  108.       # 刷新画面
  109.       update
  110.       # 如果画面切换的话的就中断循环
  111.       if $scene != self
  112.         break
  113.       end
  114.     end
  115.     # 准备过渡
  116.     Graphics.freeze
  117.     # 释放窗口
  118.     @help_window.dispose
  119.     @left_window.dispose
  120.     @right_window.dispose
  121.     @item_window1.dispose
  122.     @item_window2.dispose
  123.     @item_window3.dispose
  124.     @item_window4.dispose
  125.     @item_window5.dispose
  126.     ##############
  127.     @equip_window.dispose
  128.     ##############
  129.   end
  130.   #--------------------------------------------------------------------------
  131.   # ● 刷新
  132.   #--------------------------------------------------------------------------
  133.   def refresh
  134.     # 设置物品窗口的可视状态
  135.     @item_window1.visible = (@right_window.index == 0)
  136.     @item_window2.visible = (@right_window.index == 1)
  137.     @item_window3.visible = (@right_window.index == 2)
  138.     @item_window4.visible = (@right_window.index == 3)
  139.     @item_window5.visible = (@right_window.index == 4)
  140.     # 获取当前装备中的物品
  141.     item1 = @right_window.item
  142.     ##############
  143.     @equip_window.set_item(item1)
  144.     ##############
  145.     # 设置当前的物品窗口到 @item_window
  146.     case @right_window.index
  147.     when 0
  148.       @item_window = @item_window1
  149.     when 1
  150.       @item_window = @item_window2
  151.     when 2
  152.       @item_window = @item_window3
  153.     when 3
  154.       @item_window = @item_window4
  155.     when 4
  156.       @item_window = @item_window5
  157.     end
  158.     # 右窗口被激活的情况下
  159.     if @right_window.active
  160.       # 删除变更装备后的能力
  161.       @left_window.set_new_parameters(nil, nil, nil)
  162.     end
  163.     # 物品窗口被激活的情况下
  164.     if @item_window.active
  165.       # 获取现在选中的物品
  166.       item2 = @item_window.item
  167.       # 变更装备
  168.       last_hp = @actor.hp
  169.       last_sp = @actor.sp
  170.       @actor.equip(@right_window.index, item2 == nil ? 0 : item2.id)
  171.       # 获取变更装备后的能力值
  172.       new_atk = @actor.atk
  173.       new_pdef = @actor.pdef
  174.       new_mdef = @actor.mdef
  175.       # 返回到装备
  176.       @actor.equip(@right_window.index, item1 == nil ? 0 : item1.id)
  177.       @actor.hp = last_hp
  178.       @actor.sp = last_sp
  179.       # 描画左窗口
  180.       @left_window.set_new_parameters(new_atk, new_pdef, new_mdef)
  181.       ##################
  182.       @equip_window.set_item(item2)
  183.       ##################
  184.     end
  185.   end
  186.   #--------------------------------------------------------------------------
  187.   # ● 刷新画面
  188.   #--------------------------------------------------------------------------
  189.   def update
  190.     # 刷新窗口
  191.     @left_window.update
  192.     @right_window.update
  193.     @item_window.update
  194.     ##############
  195.     @equip_window.refresh
  196.     ##############
  197.     refresh
  198.     # 右侧窗口被激活的情况下: 调用 update_right
  199.     if @right_window.active
  200.       update_right
  201.       return
  202.     end
  203.     # 物品窗口被激活的情况下: 调用 update_item
  204.     if @item_window.active
  205.       update_item
  206.       return
  207.     end
  208.   end
  209. end

  210. #==============================================================================
  211. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  212. #==============================================================================
复制代码
记得以前好像有某人在一篇帖子中讲过
在装备大图那里增加
class Item
    def name
      name = @name.split(/@/)[0]
      return name != nil ? name : ''
    end
    def pic_name
      pic_name = @name.split(/@/)[1]
      return pic_name != nil ? pic_name : ""
    end
  end

然后说子在Scene_Item那里  释放窗口那加个 @equip_window.dispose

还要在哪加点什么才能使装备大图在物品栏中出现同样的效果?dsu_plus_rewardpost_czw




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1