查看: 1506|回复: 4

[已经解决] 请教P叔,关于套装问题(2)。

[复制链接]
梦石
0
星屑
632
在线时间
921 小时
注册时间
2013-3-13
回帖
503
发表于 2013-7-17 16:06:10 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
本帖最后由 crow2006 于 2013-7-17 16:14 编辑

基本条件:P叔整合系统1.04版本
例:在
class Game_Battler
def make_obj_damage_value(user, obj)
中添加以下这段
  $shjm10  = [201] # 技能伤害附加1000点套装头部 新兵战盔
  $shjm20  = [202] # 技能伤害附加1000点套装衣服 新兵战甲
  $shjm30  = [203] # 技能伤害附加1000点套装盾牌 新兵战盾
###########套装附加伤害###################################################   
  if user.is_a?(Game_Actor)                 # 如果攻击者是“主角”
    if damage > 0 and user.armors != [nil]
    damage += 1000 if user.armors.any?{|i| $shjm10.include?(i.base_id)} and user.armors.any?{|i| $shjm20.include?(i.base_id)} and user.armors.any?{|i| $shjm30.include?(i.base_id)}
#套装属性:技能伤害附加1000点
    end
  end
######################################################################

这样写好之后,放在游戏中测试。
【1】如图,装备编号201,202,203的3件装备:
1.png
【2】攻击测试:
2.png
【3】替换掉套装中的头部;
3.png
注意:这里攻击力上升了5点。
【4】攻击测试:
4.png
攻击下降了一大截。
如图所示:
装备编号201,202,203的3件防具确实可以起到“技能伤害附加1000点”的效果,
上述任何一个部位的编号如果不是201,202或203的话,“技能伤害附加1000点”的效果立即失效。
但就在这里,问题来了。
如果某一部位的防具为空,即未装备防具,那么主动技能攻击时脚本立刻报错。
【如图】
5.png
6.png
934行即:  
damage += 1000 if user.armors.any?{|i| $shjm10.include?(i.base_id)} and user.armors.any?{|i| $shjm20.include?(i.base_id)} and user.armors.any?{|i| $shjm30.include?(i.base_id)}
请求帮忙解决。防具为空时如何不报错。非常感谢!
请P叔和苏联大神都来看看。@protosssonny  @Password


















八宝粥的基叔

梦石
0
星屑
4957
在线时间
5234 小时
注册时间
2009-4-29
回帖
14054

贵宾

发表于 2013-7-17 16:40:31 | 显示全部楼层
本帖最后由 protosssonny 于 2013-7-18 10:42 编辑
  1.   if user.is_a?(Game_Actor)                 # 如果攻击者是“主角”
  2.     if damage > 0
  3.       if user.armors[0].is_a?(RPG::Armor) and user.armors.base_id == 201
  4.         if user.armors[1].is_a?(RPG::Armor) and user.armors.base_id == 202
  5.           if user.armors[2].is_a?(RPG::Armor) and user.armors.base_id == 203
  6.             damage += 1000
  7.           end
  8.         end
  9.       end  
  10.     end
  11.   end
复制代码

点评

谢谢,这样完美了。  发表于 2013-7-18 15:26
因为按上面这段脚本来说,装备盾牌未装备头盔时,还是会报错。  发表于 2013-7-18 08:24
我把 if damage > 0 改成 if damage > 0 and user.armors[0] != nil and user.armors[1] != nil and user.armors[2] != nil and user.armors[3] != nil 这样就是有装备部位为空时,无效果   发表于 2013-7-18 08:23
啊!非常感谢,原来是这样写的。  发表于 2013-7-17 16:46

评分

参与人数 2星屑 +100 梦石 +1 收起 理由
Luciffer + 1 认可答案
八宝粥先生 + 100 认可答案

查看全部评分

《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

《逝去的回忆3》的讨论群:
一群:192885514
二群:200460747
回复

使用道具 举报

八宝粥的基叔

梦石
0
星屑
4957
在线时间
5234 小时
注册时间
2009-4-29
回帖
14054

贵宾

发表于 2013-7-17 16:20:19 | 显示全部楼层
首先把防具全部卸下来,然后在
if user.is_a?(Game_Actor)
下面一行写:
p user.armors
看看显示什么,如果显示什么,就把
if damage > 0 and user.armors != [nil]
改成
if damage > 0 and user.armors != 什么

点评

试过了, 如果某一装备为空的话,测试时候还是报一样的错。  发表于 2013-7-17 16:32
好的,我这就试试。  发表于 2013-7-17 16:24
《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

《逝去的回忆3》的讨论群:
一群:192885514
二群:200460747
回复

使用道具 举报

梦石
0
星屑
632
在线时间
921 小时
注册时间
2013-3-13
回帖
503
 楼主| 发表于 2013-7-17 16:28:33 | 显示全部楼层
protosssonny 发表于 2013-7-17 16:20
首先把防具全部卸下来,然后在
if user.is_a?(Game_Actor)
下面一行写:

1.jpg
显示这个,我再试试。

点评

试试现在的,上面$shjm10什么的都可以删除了。  发表于 2013-7-18 10:42
我就知道还会报错,但是我昨天没时间改了。  发表于 2013-7-18 10:39
是的,还是报错了。非常感谢P叔。  发表于 2013-7-17 16:33
不过我感觉这样也会报错,我帮你写一个。  发表于 2013-7-17 16:30
if damage > 0 and user.armors != [nil, nil, nil, nil]  发表于 2013-7-17 16:29
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部