| 
 
| 赞 | 1 |  
| VIP | 16 |  
| 好人卡 | 23 |  
| 积分 | 0 |  
| 经验 | 49509 |  
| 最后登录 | 2016-1-9 |  
| 在线时间 | 2459 小时 |  
 Lv1.梦旅人 
	梦石0 星屑48 在线时间2459 小时注册时间2011-12-18帖子1484 | 
| 
本帖最后由 a364774426 于 2012-9-25 13:52 编辑
x
加入我们,或者,欢迎回来。您需要 登录 才可以下载或查看,没有帐号?注册会员  
 不少游戏都会出现射手类的职业,用弓用枪械或者飞镖,不过有一个问题就是,没有箭矢,没有子弹,或者没有飞镖的情况下,照样可以攻击并且使用技能。这明显是不合理的,但大家都习惯忽视了。之前也有人写过一篇帖子说过这个问题的解决办法,地址是:http://rpg.blue/forum.php?mod=viewthread&tid=233488&extra=page%3D1%26filter%3Dtypeid%26typeid%3D100%26typeid%3D100这个办法是将技能作为普通攻击来使用,效果自然差强人意。所以我自己想了一个办法,针对横版,以弓箭手为例,有箭矢时,则在原地射出箭矢,没有的时候则跑到敌人跟前用弓敲打,当然什么都不做也是可以的,技能也是如此。
 下面是方法,很简单。
 
 先用一个变量代入箭矢的数量,
 然后修改脚本,两句代码可以搞定,打开横版动作设定的脚本(系统设定),查找"class Weapon",其下就是设置各种武器动作的地方,具体设置方法,请移步夕阳前辈的教学贴。
 比如我原先的设定是:
 when 101,102,103,104
 return "箭矢"
 稍加更改,就能达到目的、
 when 101,102,103,104
 if $game_variables[16] >0 #箭矢数量大于0的时候
 $game_party.lose_item($data_items[7],1)  #意思是进行该动作,则减少7号物品1个,我7号物品是箭矢。
 return "箭矢"
 else
 return "通常攻击"
 end
 如果不想动,将通常攻击换成待机也可。
 技能设定同理。
 如:when 201
 if $game_variables[16] >=4
 $game_party.lose_item($data_items[7],4)
 return "四连射"
 else
 return "通常攻击"
 end
 
 当然还有一个需要注意的细节,如果没有箭矢,但你还是要去攻击敌人,那么攻击力当然不能和有箭矢时相提并论,所以需要写一个在没有箭矢时,弓箭手的伤害公式。
 打开Game_Battler脚本,找到"damage = attacker.atk * 4 - self.def * 2 "这一句,它是默认的普通攻击伤害计算公式,
 在其下添加几句:
 if $game_variables[16] == 0 ##没有箭矢
 if attacker.is_a?(Game_Actor) and attacker.id == 2   ##二号角色是弓箭手
 Damage /=10  ##伤害变为1/10
 end
 end
 想到了普通攻击,那么技能当然也要考虑,
 以上面的“四连射”为例:
 if[201].include?(obj.id) and user.is_a?(Game_Actor)   #需要四只箭矢
 if $game_variables[16] < 4
 damage /=10
 end
 end
 
 好啦,基本方法就是这样了,当然是不可能面面俱到的。但所谓触类旁通,举一反三。更多的创新还要看各路英雄好汉哈。
 P叔建议的实现:脚本编辑器全局查找“      return false if calc_mp_cost(skill) > mp
 ”最后一个出现该代码的地方,同样以四连射为例,于其下添加: return false if [201].include?(skill.id) and $game_variables[16] < 4
 
 
 
 | 
 评分
查看全部评分
 |