Project1
标题:
如何限制角色装备武器和护甲?
[打印本页]
作者:
twb122633
时间:
2013-5-15 13:54
标题:
如何限制角色装备武器和护甲?
本帖最后由 Sion 于 2013-5-25 17:00 编辑
如何限制角色装备武器和护甲? 我发现主角等级1的时候 什么高级的装备都能穿,如何限制主角装备武器和护甲。比如等级1的时候穿 布衣 等级5的时候才能穿皮衣 等级8的时候 装备皮甲 之类的。
QQ图片20130515135253.jpg
(38.77 KB, 下载次数: 27)
下载附件
保存到相册
2013-5-15 13:53 上传
作者:
twb122633
时间:
2013-5-15 13:55
以上的图片 主角等级1的时候 斧头之类的都能装备,如何限制主角等级高一点的时候才能装备~~!
作者:
lirn
时间:
2013-5-15 14:13
我记得有类似脚本,自己搜索一下
作者:
chd114
时间:
2013-5-15 14:20
装备等级限制脚本
作者:
q374435503
时间:
2013-5-15 18:03
调公用事件条件分歧当xxx未到xxx级时不填当道了xxx级时更改装备
这只是个大概思想如果不可行请无视我!
作者:
UdlDruid
时间:
2013-5-15 21:46
来,让我来解决你的问题!
脚本在此
#==============================================================================
# ■ 装备等级、属性限制 作者:后知后觉 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
复制代码
作者:
黄濑凉太
时间:
2013-5-15 22:38
我也发一个,本质上说是没有说明区别的了:
=begin
#============================================================================
# 定义装备等级限制方法:在数据库装备备注里写上[LV n] ,LV后有空格,n为等级,
# 同理,定义装备能力值限制方法:
# 备注里写上[ATK n][DEF n][MAT n][MDF n][AGI n][LUK n]。
# 攻击 防御 魔攻 魔防 敏捷 幸运
# 若某项限制不写则没有装备限制。
# 注意这里限制的能力值是人物原始的能力值,不考虑装备、状态的影响,
# 但是考虑事件对能力值的影响。
#==============================================================================
#==============================================================================
# ■ RPG::BaseItem
#==============================================================================
class RPG::BaseItem
def param_limit(p_id)
return if p_id == 0 or p_id > 7
regexp_strings = ["", "LV", "ATK", "DEF", "MAT", "MDF", "AGI", "LUK"]
m = 0
regexp = /\[#{regexp_strings[p_id]} (\d+)\]/
self.note.split(/[\r\n]+/).each { |line|
m = $1.to_i if line =~ regexp
}
return m
end
#--------------------------------------------------------------------------
# ● 判断是否有要求
#--------------------------------------------------------------------------
def has_requirement?
for i in 1..7
return true if param_limit(i) > 0
end
return false
end
end
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ● 判断是否可以装备
# item : 物品
#--------------------------------------------------------------------------
alias original_equippable? equippable?
def equippable?(item)
return unless item
return true unless item.has_requirement?
return false if self.level < item.param_limit(1) #等级限制
for i in 2..7
return false if actor_param(i) < item.param_limit(i)
end
return original_equippable?(item)
end
#--------------------------------------------------------------------------
# ● 计算角色能力值
#--------------------------------------------------------------------------
def actor_param(param_id)
t_p = param_base(param_id) + param_base(param_id)
return [t_p, param_max(param_id)].min
end
end
#==============================================================================
# ■ Window_Item
#------------------------------------------------------------------------------
# 物品画面、战斗画面、显示浏览物品的窗口。
#==============================================================================
class Window_ItemList < Window_Selectable
#--------------------------------------------------------------------------
# ● 更新帮助文本(自动显示使用物品的等级能力限制)
#--------------------------------------------------------------------------
def update_help
if item.nil?
@help_window.set_text("")
return
end
newdes = item.description
if item.has_requirement?
newdes += " 要求:" if(item.has_requirement?)
for i in 1..7
next if item.param_limit(i) == 0
limit_str = item.param_limit(i).to_s
newdes += i==1 ? Vocab.level_a : Vocab.param(i) + limit_str
end
end
@help_window.set_text(newdes)
end
end
class Window_EquipItem < Window_ItemList
alias original_include? include?
def include?(item)
o_equippable = original_include?(item)
if !o_equippable
return true if
[email protected]
?(item)
end
return o_equippable
end
#--------------------------------------------------------------------------
# ● 判断是否有效化
#--------------------------------------------------------------------------
def enable?(item)
return true unless item
return @actor.equippable?(item)
end
end
=end
复制代码
使用方法:
前往数据库武器\防具的装备备注上填下:
[LV n] ,LV后有空格,n为等级。
其他能力值同理:
备注里写上[ATK n] [DEF n][MAT n][MDF n][AGI n][LUK n]。
[攻击] [防御] [魔攻] [魔防] [敏捷] [幸运]
作者:
cccjjjcui
时间:
2013-5-15 22:53
我计划是不用脚本, 相同的职业 2个相同的武器类型 把低级的放一类 高级的放另一类 一个高级的职业可以带高级武器 一个低级不可以带高级武器
可惜这版本 特性不像以前 要是可以添加 公共事件就好了
作者:
twb122633
时间:
2013-5-17 13:26
谢啦~~各位~~!
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1