Project1

标题: 关于在Window_EquipLeft显示装备名(附效果图) [打印本页]

作者: 赛露休斯    时间: 2009-4-22 01:38
标题: 关于在Window_EquipLeft显示装备名(附效果图)
如何在Window_EquipLeft显示装备名及图标,要求在换装备时Window_EquipLeft的装备名及图标刷新 [LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: tommay    时间: 2009-4-22 01:42
如果LZ想要别人帮你写脚本的话,最好贴下你要的效果图
作者: tommay    时间: 2009-4-22 01:42
抱歉,自我屏蔽
作者: 赛露休斯    时间: 2009-4-22 02:07

作者: 紫苏    时间: 2009-4-22 13:13
是这个效果吧,楼主描述的不太清楚~

插入以下脚本,红色部分是在原脚本基础上修改的语句
class Window_EquipLeft < Window_Base
  #--------------------------------------------------------------------------
  # ● 刷新
  #--------------------------------------------------------------------------
  def refresh
    self.contents.clear
    draw_actor_name(@actor, 4, 0)
    #draw_actor_level(@actor, 4, 32)
    draw_item_name(@item, 4, 32) if @item != nil

    draw_actor_parameter(@actor, 4, 64, 0)
    draw_actor_parameter(@actor, 4, 96, 1)
    draw_actor_parameter(@actor, 4, 128, 2)
    if @new_atk != nil
      self.contents.font.color = system_color
      self.contents.draw_text(160, 64, 40, 32, "→", 1)
      self.contents.font.color = normal_color
      self.contents.draw_text(200, 64, 36, 32, @new_atk.to_s, 2)
    end
    if @new_pdef != nil
      self.contents.font.color = system_color
      self.contents.draw_text(160, 96, 40, 32, "→", 1)
      self.contents.font.color = normal_color
      self.contents.draw_text(200, 96, 36, 32, @new_pdef.to_s, 2)
    end
    if @new_mdef != nil
      self.contents.font.color = system_color
      self.contents.draw_text(160, 128, 40, 32, "→", 1)
      self.contents.font.color = normal_color
      self.contents.draw_text(200, 128, 36, 32, @new_mdef.to_s, 2)
    end
  end
  # 改变角色能力的时候可以传递一个当前选中的装备
  def set_new_parameters(new_atk, new_pdef, new_mdef, item = nil)
    if @new_atk != new_atk or @new_pdef != new_pdef or @new_mdef != new_mdef
      @new_atk = new_atk
      @new_pdef = new_pdef
      @new_mdef = new_mdef
      @item = item
      refresh
    end
  end
end

class Scene_Equip
  def refresh
    # 设置物品窗口的可视状态
    @item_window1.visible = (@right_window.index == 0)
    @item_window2.visible = (@right_window.index == 1)
    @item_window3.visible = (@right_window.index == 2)
    @item_window4.visible = (@right_window.index == 3)
    @item_window5.visible = (@right_window.index == 4)
    # 获取当前装备中的物品
    item1 = @right_window.item
    # 设置当前的物品窗口到 @item_window
    case @right_window.index
    when 0
      @item_window = @item_window1
    when 1
      @item_window = @item_window2
    when 2
      @item_window = @item_window3
    when 3
      @item_window = @item_window4
    when 4
      @item_window = @item_window5
    end
    # 右窗口被激活的情况下
    if @right_window.active
      # 删除变更装备后的能力
      @left_window.set_new_parameters(nil, nil, nil)
    end
    # 物品窗口被激活的情况下
    if @item_window.active
      # 获取现在选中的物品
      item2 = @item_window.item
      # 变更装备
      last_hp = @actor.hp
      last_sp = @actor.sp
      @actor.equip(@right_window.index, item2 == nil ? 0 : item2.id)
      # 获取变更装备后的能力值
      new_atk = @actor.atk
      new_pdef = @actor.pdef
      new_mdef = @actor.mdef
      # 返回到装备
      @actor.equip(@right_window.index, item1 == nil ? 0 : item1.id)
      @actor.hp = last_hp
      @actor.sp = last_sp
      # 描画左窗口
      # 传递新能力的同时传递选中的装备
      @left_window.set_new_parameters(new_atk, new_pdef, new_mdef, item2)
    end
  end
end
[LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: tommay    时间: 2009-4-22 17:55
原来如此,昨天我还纠结于如何使得Window_EquipLeft和Window_EquipRight的选择项统一呢,多谢指点!

另:我有个想法,不知道是不是LZ的想法,就是当EquipRight窗口的光标移动一次,EquipLeft的draw_item_name会刷新一次,显示已装备的武器和防具




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