查看: 2794|回复: 7

[已经过期] 新人求教,特技效果设置问题

[复制链接]
梦石
0
星屑
800
在线时间
2 小时
注册时间
2014-9-25
回帖
2
发表于 2014-9-26 22:05:24 | 显示全部楼层 |阅读模式

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

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

×
我想制作一个特技,比如“真气护体”,要求能吸收30%的敌人攻击,请问一下该怎么设置啊。是在资料库里直接添加,还是需要写脚本。谢谢了!
梦石
0
星屑
50
在线时间
320 小时
注册时间
2014-9-2
回帖
244
发表于 2014-9-26 22:32:06 | 显示全部楼层
可能要用事件脚本

调用公共事件→脚本

具体...我对战斗不熟...
回复

使用道具 举报

梦石
0
星屑
50
在线时间
206 小时
注册时间
2014-2-8
回帖
378
发表于 2014-9-26 23:21:54 | 显示全部楼层
1.状态附加效果增加防御比较编结
2.战斗伤害造成里改
3.附加对一切怪物伤害减半的状态就是属性有效度为一半,30%可能完成不了
刚接触RPG的新人们裤艾来这里!在这里能够帮助你们提高自身的能力,让大家来帮助每个人实现自己的创意、构想!
也许你只是正在看RPG教程的新人,或者是正在努力学着制作自己的RPG的制作者,或者是狂热的RPG游戏喜爱者,
但都不重要!
加入我们,我们会帮助你实现梦想,或者帮助你更好的运用RPG并且创造个人的一片天地!周末我们会不定时间开放RM技术讨论活动或者RM经验交流课!
加入我们,我们愿意与你共同创造奇迹,共同进步!
QQ群号:329443038  
或者联系QQ:573932914
我们和你站在同一线!
要求只有:常能上线
我们会用十分的热情接纳你!
回复

使用道具 举报

梦石
0
星屑
800
在线时间
2 小时
注册时间
2014-9-25
回帖
2
 楼主| 发表于 2014-9-26 23:39:26 | 显示全部楼层
感谢上面的回复,虽然还没最终解决。耐心等待后续高手的解答
回复

使用道具 举报

梦石
0
星屑
2816
在线时间
1051 小时
注册时间
2011-8-2
回帖
273
发表于 2014-9-27 06:33:40 | 显示全部楼层
用VA的伤害公式好像可以,xp无力了,应该要脚本
为方便新人,建议大家一同换上此签名(当然我没指最下面的宣传……)
RM各版本下载链接
RMXP:http://pan.baidu.com/s/1qWLZjIW
RMVX:http://pan.baidu.com/s/1sjBhM2L
以上链接由妖精蕾贝卡 提供
--------------------------------------------------------------------------------
RMVA:http://pan.baidu.com/s/1jG1mDUY
以上链接由VIPArcher 提供
——————————————————————————
回复

使用道具 举报

梦石
0
星屑
800
在线时间
2 小时
注册时间
2014-9-25
回帖
2
 楼主| 发表于 2014-9-27 09:33:42 | 显示全部楼层
小凡哥 发表于 2014-9-27 06:33
用VA的伤害公式好像可以,xp无力了,应该要脚本

亲,具体怎么弄啊,能不能解释一下
回复

使用道具 举报

梦石
0
星屑
9557
在线时间
5074 小时
注册时间
2013-6-21
回帖
3459

开拓者贵宾剧作品鉴家

发表于 2014-9-27 09:53:22 | 显示全部楼层
最喜欢黑掉这两个方法了,在Game_Battler3脚本处找到相同的地方,直接修改即可,注意增加的部分。
如果嫌麻烦就直接在Main前新开一个脚本页,粘贴这里的脚本即可。
[pre lang="Ruby"]class Game_Battler
  # 在这里设置“真气护体”状态的ID
  DEFENCE_STATE_ID = 17
  def attack_effect(attacker)
    # 清除会心一击标志
    self.critical = false
    # 第一命中判定
    hit_result = (rand(100) < attacker.hit)
    # 命中的情况下
    if hit_result == true
      # 计算基本伤害
      atk = [attacker.atk - self.pdef / 2, 0].max
      self.damage = atk * (20 + attacker.str) / 20
      # 属性修正
      self.damage *= elements_correct(attacker.element_set)
      self.damage /= 100
      ### 真气护体效果 ###
      if self.state?(DEFENCE_STATE_ID) && self.damage > 0
        self.damage = Integer(self.damage * 0.7)
      end
      ###
      # 伤害符号正确的情况下
      if self.damage > 0
        # 会心一击修正
        if rand(100) < 4 * attacker.dex / self.agi
          self.damage *= 2
          self.critical = true
        end
        # 防御修正
        if self.guarding?
          self.damage /= 2
        end
      end
      # 分散
      if self.damage.abs > 0
        amp = [self.damage.abs * 15 / 100, 1].max
        self.damage += rand(amp+1) + rand(amp+1) - amp
      end
      # 第二命中判定
      eva = 8 * self.agi / attacker.dex + self.eva
      hit = self.damage < 0 ? 100 : 100 - eva
      hit = self.cant_evade? ? 100 : hit
      hit_result = (rand(100) < hit)
    end
    # 命中的情况下
    if hit_result == true
      # 状态冲击解除
      remove_states_shock
      # HP 的伤害计算
      self.hp -= self.damage
      # 状态变化
      @state_changed = false
      states_plus(attacker.plus_state_set)
      states_minus(attacker.minus_state_set)
    # Miss 的情况下
    else
      # 伤害设置为 "Miss"
      self.damage = "Miss"
      # 清除会心一击标志
      self.critical = false
    end
    # 过程结束
    return true
  end
  def skill_effect(user, skill)
    # 清除会心一击标志
    self.critical = false
    # 特技的效果范围是 HP 1 以上的己方、自己的 HP 为 0、
    # 或者特技的效果范围是 HP 0 的己方、自己的 HP 为 1 以上的情况下
    if ((skill.scope == 3 or skill.scope == 4) and self.hp == 0) or
       ((skill.scope == 5 or skill.scope == 6) and self.hp >= 1)
      # 过程结束
      return false
    end
    # 清除有效标志
    effective = false
    # 公共事件 ID 是有效的情况下,设置为有效标志
    effective |= skill.common_event_id > 0
    # 第一命中判定
    hit = skill.hit
    if skill.atk_f > 0
      hit *= user.hit / 100
    end
    hit_result = (rand(100) < hit)
    # 不确定的特技的情况下设置为有效标志
    effective |= hit < 100
    # 命中的情况下
    if hit_result == true
      # 计算威力
      power = skill.power + user.atk * skill.atk_f / 100
      if power > 0
        power -= self.pdef * skill.pdef_f / 200
        power -= self.mdef * skill.mdef_f / 200
        power = [power, 0].max
      end
      # 计算倍率
      rate = 20
      rate += (user.str * skill.str_f / 100)
      rate += (user.dex * skill.dex_f / 100)
      rate += (user.agi * skill.agi_f / 100)
      rate += (user.int * skill.int_f / 100)
      # 计算基本伤害
      self.damage = power * rate / 20
      # 属性修正
      self.damage *= elements_correct(skill.element_set)
      self.damage /= 100
      ### 真气护体效果 ###
      if self.state?(DEFENCE_STATE_ID) && self.damage > 0
        self.damage = Integer(self.damage * 0.7)
      end
      ###
      # 伤害符号正确的情况下
      if self.damage > 0
        # 防御修正
        if self.guarding?
          self.damage /= 2
        end
      end
      # 分散
      if skill.variance > 0 and self.damage.abs > 0
        amp = [self.damage.abs * skill.variance / 100, 1].max
        self.damage += rand(amp+1) + rand(amp+1) - amp
      end
      # 第二命中判定
      eva = 8 * self.agi / user.dex + self.eva
      hit = self.damage < 0 ? 100 : 100 - eva * skill.eva_f / 100
      hit = self.cant_evade? ? 100 : hit
      hit_result = (rand(100) < hit)
      # 不确定的特技的情况下设置为有效标志
      effective |= hit < 100
    end
    # 命中的情况下
    if hit_result == true
      # 威力 0 以外的物理攻击的情况下
      if skill.power != 0 and skill.atk_f > 0
        # 状态冲击解除
        remove_states_shock
        # 设置有效标志
        effective = true
      end
      # HP 的伤害减法运算
      last_hp = self.hp
      self.hp -= self.damage
      effective |= self.hp != last_hp
      # 状态变化
      @state_changed = false
      effective |= states_plus(skill.plus_state_set)
      effective |= states_minus(skill.minus_state_set)
      # 威力为 0 的场合
      if skill.power == 0
        # 伤害设置为空的字串
        self.damage = ""
        # 状态没有变化的情况下
        unless @state_changed
          # 伤害设置为 "Miss"
          self.damage = "Miss"
        end
      end
    # Miss 的情况下
    else
      # 伤害设置为 "Miss"
      self.damage = "Miss"
    end
    # 不在战斗中的情况下
    unless $game_temp.in_battle
      # 伤害设置为 nil
      self.damage = nil
    end
    # 过程结束
    return effective
  end
end[/pre]
回复

使用道具 举报

梦石
0
星屑
2816
在线时间
1051 小时
注册时间
2011-8-2
回帖
273
发表于 2014-9-27 10:03:59 | 显示全部楼层
jcrystal 发表于 2014-9-27 09:33
亲,具体怎么弄啊,能不能解释一下

你的那个技能是吸收什么类型的伤害物理还是魔法。

用VA的话,设置一个技能,使用时附加一个状态,然后添加属性抗性

也许勉强能达到效果(`・ω・)

点评

好吧,我已经很久没用XP了  发表于 2014-9-27 12:57
XP中的属性抗性是对有属性的攻击和特技而言的,而且设置的值只能是吸收50%或者完全吸收。30%是做不出来的。  发表于 2014-9-27 10:28
为方便新人,建议大家一同换上此签名(当然我没指最下面的宣传……)
RM各版本下载链接
RMXP:http://pan.baidu.com/s/1qWLZjIW
RMVX:http://pan.baidu.com/s/1sjBhM2L
以上链接由妖精蕾贝卡 提供
--------------------------------------------------------------------------------
RMVA:http://pan.baidu.com/s/1jG1mDUY
以上链接由VIPArcher 提供
——————————————————————————
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部