| 
 
| 赞 | 0 |  
| VIP | 0 |  
| 好人卡 | 4 |  
| 积分 | 1 |  
| 经验 | 14122 |  
| 最后登录 | 2023-11-22 |  
| 在线时间 | 290 小时 |  
 Lv1.梦旅人 
	梦石0 星屑80 在线时间290 小时注册时间2012-6-8帖子109 | 
| 来,让我来解决你的问题! 脚本在此
 复制代码
#==============================================================================
# ■ 装备等级、属性限制 作者:后知后觉 2012-7-25 Ver:1.2
#--------------------------------------------------------------------------
#    本脚本来自 www.66rpg.com 使用或转载请保留此信息。
#--------------------------------------------------------------------------
#~   说明:
#~     限制的属性只会计算人物当前的基础属性.装备、状态增加的属性不会计算在内
#~     默认给武器、护甲增加一行说明.说明内容是需要的各种限制信息
#~     但默认帮助窗口一共只能显示2行内容.
#~     因此你在数据库设置武器、护甲说明的时候
#~     如果设置了2行内容.那么这新增加的第3行将无法显示出来.
#~   设置:
#~     在武器、护甲的备注里写入下面格式的内容表示要做要求.
#~       <lv 数值>    等级限制
#~       <mhp 数值>   最大HP限制
#~       <mmp 数值>   最大MP限制
#~       <atk 数值>   物理攻击限制
#~       <pdf 数值>   物理防御限制
#~       <mat 数值>   魔法攻击限制
#~       <mdf 数值>   魔法防御限制
#~       <agi 数值>   敏捷限制
#~       <luk 数值>   幸运限制
#==============================================================================
#==============================================================================
# ■ RPG::EquipItem
#==============================================================================
class RPG::EquipItem < RPG::BaseItem
  ParamName = ["mhp","mmp","atk","pdf","mat","mdf","agi","luk"]
  def description
    return @hzhj_desc if @hzhj_desc
    @hzhj_desc = @description.clone + "\n\\}"
    hzhj = " "
    if level_limit > 0
      hzhj = "装备要求 "
      @hzhj_desc += sprintf("%s%s:%d ", hzhj, Vocab.level, level_limit)
    end
    for i in 0..7
      if params_limit(i) > 0
        hzhj = "" if hzhj == "装备要求 "
        hzhj = "装备要求 " if hzhj == " "
        @hzhj_desc += sprintf("%s%s:%d ", hzhj, Vocab.param(i), params_limit(i))
      end
    end
    @hzhj_desc
  end
  def level_limit
    if /<lv (\d+?)>/i =~ @note
      return $1.to_i
    else
      return 0
    end
  end
  def params_limit(param_id)
    if /<#{ParamName[param_id]} (\d+?)>/i =~ @note
      return $1.to_i
    else
      return 0
    end
  end
end
#==============================================================================
# ■ Game_BattlerBase
#==============================================================================
class Game_BattlerBase
  #--------------------------------------------------------------------------
  # ● 判定物品是否可以装备
  #--------------------------------------------------------------------------
  alias original_equippable? equippable?
  def equippable?(item)
    original_equippable?(item) && equip_params_ok?(item)
  end
  #--------------------------------------------------------------------------
  # ● 判定物品是否可以装备
  #--------------------------------------------------------------------------
  def equip_params_ok?(item)
    return true if enemy?
    return false if item.level_limit > level
    for param_id in 0..7
      value = param_base(param_id) + @param_plus[param_id]
      value = [[value, param_max(param_id)].min, param_min(param_id)].max.to_i
      return false if item.params_limit(param_id) > value
    end
    return true
  end
end
#==============================================================================
# ■ Game_Actor
#==============================================================================
class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ● 强制更换装备
  #--------------------------------------------------------------------------
  def hzhj_force_change_equip(slot_id, item)
    @equips[slot_id].object = item if original_equippable?(item) || !item
  end
end
#==============================================================================
# ■ Window_EquipItem
#==============================================================================
class Window_EquipItem < Window_ItemList
  #--------------------------------------------------------------------------
  # ● 查询使用列表中是否含有此物品
  #--------------------------------------------------------------------------
  def include?(item)
    return true if item == nil
    return false unless item.is_a?(RPG::EquipItem)
    return false if @slot_id < 0
    return false if item.etype_id != @actor.equip_slots[@slot_id]
    return @actor.original_equippable?(item)
  end
  #--------------------------------------------------------------------------
  # ● 查询此文件是否可以装备
  #--------------------------------------------------------------------------
  def enable?(item)
    return true unless item
    return @actor.equippable?(item)
  end
  #--------------------------------------------------------------------------
  # ● 更新帮助内容
  #--------------------------------------------------------------------------
  def update_help
    super
    if [url=home.php?mod=space&uid=95897]@actor[/url] && @status_window
      temp_actor = Marshal.load(Marshal.dump(@actor))
      temp_actor.hzhj_force_change_equip(@slot_id, item)
      @status_window.set_temp_actor(temp_actor)
    end
  end
end
#==============================================================================
# ■ Window_ShopStatus
#==============================================================================
class Window_ShopStatus < Window_Base
  #--------------------------------------------------------------------------
  # ● 绘制角色的装备信息
  #--------------------------------------------------------------------------
  def draw_actor_equip_info(x, y, actor)
    enabled = actor.equippable?(@item)
    change_color(normal_color, enabled)
    draw_text(x, y, 112, line_height, actor.name)
    item1 = current_equipped_item(actor, @item.etype_id)
    draw_actor_param_change(x, y, actor, item1) if actor.original_equippable?(@item)
    draw_item_name(item1, x, y + line_height, enabled)
  end
end
 | 
 评分
查看全部评分
 |