old-=equips[i].params[3]/10 if equips[i].etype_id==1#则盾牌增加的物理防御减少10%
end
end
end
end
old
end
end
复制代码
参照这个修改吧?作者: 雷影 时间: 2015-1-17 23:22
整个代码看起来好像是,是符合条件时,修改数据库中指定装备的属性啊。哪不是装备第一人是数值改变了,取下来后装备不是已经是修改后的数值了么?第二人装备时不就是用被修改后的数值再计算么??
class Game_Actor
alias_method :c4_20150117, :param_plus
def param_plus(id)
old = c4_20150117(id)
for i in 0...equips.size
if equips[i]!=nil
if id == 3#物理防御 (id==3是数据库中3号位置的装备么?是怎么判断这ID武器还是防具的?)
if class_id==8#职业是盗贼
old-=equips[i].params[3]/10 if equips[i].etype_id==1#则盾牌增加的物理防御减少10%
(params[3]/10要怎么理解?看起来是什么数值除以10的样子)
(etype是装备类型吧!1是防具?哪2之后都是什么?)
end
end
end
end
old
end
end作者: chd114 时间: 2015-1-18 09:28
@taroxd@VIPArcher 问题解决··· 作者: 雷影 时间: 2015-1-18 15:26
能不能帮看看,怎么优化这段代码吗??
#武器装备因职业,人物不同产生不同效果的设定
#id和param()的3都指物理防御···Game_BattlerBase里面有具体的设定,
#0为MHP、1为MMP、2为物理攻击···etype_id是装备的位置,
#p一下角色的equip_slots就会看到二刀流角色的装备位置是[0,0,2,3,4]而普通角色装备位置是[0,1,2,3,4]1默认是盾牌···2、3、4分别对应头盔、铠甲、饰品
#actor_id就是角色ID,class_id是职业ID
class Game_Actor
alias_method :c4_20150117, :param_plus
def param_plus(id)
old = c4_20150117(id)
for i in 0...equips.size
if equips[i]!=nil
if equips[i].id==1 #ID为武器或者防具数据库里编号
if id == 2 #处理物理攻击力的变化(当武器是1,2号主角装备时)
if actor_id==1 #1号主角
old+=equips[i].params[2]/10 if equips[i].etype_id==0#获得10%攻击力加成
end
if actor_id==2 #2号主角
old+=equips[i].params[2]/2 if equips[i].etype_id==0#获得50%攻击力加成
end
end
if id == 6 #处理敏捷值的变化
if actor_id==1#1号主角
old+=equips[i].params[6]/10 if equips[i].etype_id==0#获得10%敏捷加成
end
if actor_id==2#2号主角
old+=equips[i].params[6]/2 if equips[i].etype_id==0#获得50%敏捷加成
end
end
end
end
end
old
end
end作者: chd114 时间: 2015-1-18 16:19