Project1

标题: 对于弓箭类职业攻击更合理的设定 [打印本页]

作者: a364774426    时间: 2012-9-25 11:51
标题: 对于弓箭类职业攻击更合理的设定
本帖最后由 a364774426 于 2012-9-25 13:52 编辑

不少游戏都会出现射手类的职业,用弓用枪械或者飞镖,不过有一个问题就是,没有箭矢,没有子弹,或者没有飞镖的情况下,照样可以攻击并且使用技能。这明显是不合理的,但大家都习惯忽视了。之前也有人写过一篇帖子说过这个问题的解决办法,地址是:http://rpg.blue/forum.php?mod=viewthread&tid=233488&extra=page%3D1%26filter%3Dtypeid%26typeid%3D100%26typeid%3D100这个办法是将技能作为普通攻击来使用,效果自然差强人意。所以我自己想了一个办法,针对横版,以弓箭手为例,有箭矢时,则在原地射出箭矢,没有的时候则跑到敌人跟前用弓敲打,当然什么都不做也是可以的,技能也是如此。
下面是方法,很简单。
[attach]136023[/attach]
先用一个变量代入箭矢的数量,
然后修改脚本,两句代码可以搞定,打开横版动作设定的脚本(系统设定),查找"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



作者: 怪蜀黍    时间: 2012-9-25 13:10
嗷呜,写得很不错呀!
假如4连射时只有3支或以下的箭时,最好是把“4连射”技能禁止,技能选项变灰。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1