Project1

标题: 如何添加“卸下装备”的字样? [打印本页]

作者: 无双修罗一闪    时间: 2008-9-14 19:00
标题: 如何添加“卸下装备”的字样?
就是在装备栏中,当你想卸下武器时,在下方的装备物品栏(Window_EquipItem)中空白处显示该字样。
我曾经试过:
    case item
    when RPG::Weapon
      number = $game_party.weapon_number(item.id)
    when RPG::Armor
      number = $game_party.armor_number(item.id)
    when nil
      self.contents.font.size = 18
      draw_text_normal(x + 32, y, 184, 32, "卸下装备", 0)
      return
    end
但没显示出来,谁能指教一下。 [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: 黑鏻    时间: 2008-9-14 19:25
使用这个http://rpg.blue/upload_program/files/菜单_101592122.rar

看里面的装备部分,有缺下装备功能~~~虽然与LZ所说不同
作者: 无双修罗一闪    时间: 2008-9-14 20:47
请问在哪一段,我找了半天没找到.
作者: 黑鏻    时间: 2008-9-14 20:52
搞错了,不过里面的装备界面就可以啊~~~抱歉,我脑筋突然死了~~
作者: 无双修罗一闪    时间: 2008-9-14 20:55
没关系
作者: IamI    时间: 2008-9-14 20:55
即插脚本
  1. #==============================================================================
  2. # ■ Window_EquipItem
  3. #------------------------------------------------------------------------------
  4. #  装备画面、显示浏览变更装备的候补物品的窗口。
  5. #==============================================================================

  6. class Window_EquipItem < Window_Selectable
  7.   #--------------------------------------------------------------------------
  8.   # ● 刷新
  9.   #--------------------------------------------------------------------------
  10.   def refresh
  11.     if self.contents != nil
  12.       self.contents.dispose
  13.       self.contents = nil
  14.     end
  15.     @data = []
  16.     # 添加可以装备的武器
  17.     if @equip_type == 0
  18.       weapon_set = $data_classes[@actor.class_id].weapon_set
  19.       for i in 1...$data_weapons.size
  20.         if $game_party.weapon_number(i) > 0 and weapon_set.include?(i)
  21.           @data.push($data_weapons[i])
  22.         end
  23.       end
  24.     end
  25.     # 添加可以装备的防具
  26.     if @equip_type != 0
  27.       armor_set = $data_classes[@actor.class_id].armor_set
  28.       for i in 1...$data_armors.size
  29.         if $game_party.armor_number(i) > 0 and armor_set.include?(i)
  30.           if $data_armors[i].kind == @equip_type-1
  31.             @data.push($data_armors[i])
  32.           end
  33.         end
  34.       end
  35.     end
  36.     # 添加空白
  37.     @data.push(nil)
  38.     # 生成位图、描绘全部项目
  39.     @item_max = @data.size
  40.     self.contents = Bitmap.new(width - 32, row_max * 32)
  41.     for i in 0...@item_max
  42.       draw_item(i)
  43.     end
  44.   end
  45.   #--------------------------------------------------------------------------
  46.   # ● 项目的描绘
  47.   #     index : 项目符号
  48.   #--------------------------------------------------------------------------
  49.   def draw_item(index)
  50.     item = @data[index]
  51.     x = 4 + index % 2 * (288 + 32)
  52.     y = index / 2 * 32
  53.     if item == nil
  54.       self.contents.font.color = normal_color
  55.       self.contents.draw_text(x + 22, y, 212, 32, "[卸下装备]", 0)
  56.       return
  57.     end
  58.     case item
  59.     when RPG::Weapon
  60.       number = $game_party.weapon_number(item.id)
  61.     when RPG::Armor
  62.       number = $game_party.armor_number(item.id)
  63.     end
  64.     bitmap = RPG::Cache.icon(item.icon_name)
  65.     self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
  66.     self.contents.font.color = normal_color
  67.     self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
  68.     self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
  69.     self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
  70.   end
  71. end
复制代码

之所以要修改refresh请注意最后那个for的异同 [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 无双修罗一闪    时间: 2008-9-14 21:10
哦,原来是这样添加啊,我还有一个问题不解,就是
为什么要把   for i in 0...@item_max 后面那个 -1 给去掉?望
LS能给点解答。
作者: IamI    时间: 2008-9-14 21:14
为什么啊,你看那个draw_item对index采取完全信任制度(不做任何检查)
这是为什么?原因很简单:
看refresh的这一段(最后面)
  1.    # 添加空白
  2.    @data.push(nil)
  3.    # 生成位图、描绘全部项目
  4.    @item_max = @data.size
  5.    self.contents = Bitmap.new(width - 32, row_max * 32)
  6.    for i in 0...@item_max-1
  7.      draw_item(i)
  8.    end
  9. end
复制代码

在data里面冲进了一个nil,并且把selectable的项目数也设置成了包含nil的数量,Bitmap也设置了,但是那个-1恰恰河蟹掉了nil(卸下装备)!!换言之,“卸下装备”完全没有经过draw_item,直接被跳过了!
作者: 无双修罗一闪    时间: 2008-9-14 21:24
原来如此,我明白了,多谢IamI!




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