查看: 1793|回复: 5

[已经过期] 普通攻击与力量特技合并,求解

[复制链接]
梦石
0
星屑
50
在线时间
439 小时
注册时间
2013-3-2
回帖
657
发表于 2013-8-20 02:05:54 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 guoyq1988 于 2013-8-22 13:57 编辑

因为鄙人的游戏里有可以反弹物理和魔法的技能
但,貌似只能反弹力量特技,我想把普通攻击和物理特技归类在一起,或者说把它们的公式定义为一样
求前辈指点,可行么?

反弹物理特技脚本
[pre lang="ruby" line="1"]# ▼▲▼ xrxs27a. 特殊効果 SuperEX「魔法反射」 ver.1.03 ▼▲▼
# by 桜雅 在土, clum-sea

#==============================================================================
# □ カスタマイズポイント
#==============================================================================
class Scene_Battle
  SKILL_REFREX_STATE_NAME         = "攻击反弹"   # 「魔法反射」ステート名
  SKILL_REFREX_ANIMATION_ID       =  97          #  魔法反射のアニメーションID
  REFREX_PENETRATION_SKILL_ELEMENT_NAME = "攻击反弹"   # 「反射貫通」属性名
end
class Scene_Battle
  #--------------------------------------------------------------------------
  # ○ スキルが魔法であるかどうか
  #--------------------------------------------------------------------------
  def skill1_is_a_magic?(skill)
    return false unless skill.is_a?(RPG::Skill)
    return (skill.int_f > skill.str_f)
  end
end

#=============================================================================
# ◇ 「魔法反射」ステート by 桜雅 在土
#=============================================================================
class Scene_Battle
  #--------------------------------------------------------------------------
  # ● スキルまたはアイテムの対象側バトラー設定
  #--------------------------------------------------------------------------
  alias xrxs_skill_refrex_set_target_battlers set_target_battlers
  def set_target_battlers(scope)
    xrxs_skill_refrex_set_target_battlers(scope)
    # スキル使用時
    if @active_battler.current_action.kind == 1
      # 魔法である場合
      unless skill1_is_a_magic?(@skill)
        element_id = get_refrex_skill_penetration_id
        # スキルに反射貫通が付加されているか。
        skill_state_penetration_skill(@skill, element_id, @active_battler)
        if @active_battler.penetration != true
          # 検索
          for target in @target_battlers.dup
            # 魔法反射ステートにかかっているか?
            state_id = get_skillal_refrex_id
            if state_id != nil and target.state?(state_id)
              # 反射---
              target.refrexed = true
              @target_battlers.delete(target)
              unless @target_battlers.include?(@active_battler)
                @target_battlers.push(@active_battler)
              end
              # ---反射の設定完了
            end
          end
        end
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● スキルに反射貫通属性が付加されているか
  #--------------------------------------------------------------------------
  def skill_state_penetration_skill(skill, element_id, user)
    if skill.element_set.include?(element_id)
      # 反射フラグリセット
      user.refrexed = false
      # 貫通フラグをセット
      user.penetration = true
    end
  end
  #--------------------------------------------------------------------------
  # ● フレーム更新 (メインフェーズ ステップ 4 : 対象側アニメーション)
  #--------------------------------------------------------------------------
  alias xrxs_skill_refrex_update_phase4_step4 update_phase4_step4
  def update_phase4_step4
    # 対象側アニメーション
    xrxs_skill_refrex_update_phase4_step4
    # 魔法反射(貫通しない場合)
    for target in $game_party.actors + $game_troop.enemies - @target_battlers
      next if target.refrexed == nil or target.refrexed == false
      target.animation_id = SKILL_REFREX_ANIMATION_ID
      target.animation_hit = (target.damage != "Miss")
      # 反射フラグリセット
      target.refrexed = false
    end
    for target in @target_battlers
      # 反射フラグリセット
      target.refrexed = false
    end
    # 貫通フラグリセット
    @active_battler.penetration = false
  end
  #--------------------------------------------------------------------------
  # ○ 魔法反射ステートのID取得
  #--------------------------------------------------------------------------
  def get_skillal_refrex_id
    if @xrxs27a_skill_refrex_state_id == nil
      result = nil
      for i in 1 ... $data_states.size
        if $data_states.name[/\A#{SKILL_REFREX_STATE_NAME}\Z/]
          result = $data_states.id
          break
        end
      end
      @xrxs27a_skill_refrex_state_id = result
    end
    return @xrxs27a_skill_refrex_state_id
  end
  #--------------------------------------------------------------------------
  # ○ 反射貫通属性のID取得
  #--------------------------------------------------------------------------
  def get_refrex_skill_penetration_id
    if @xrxs27a_refrex_penetration_element_id == nil
      result = nil
      for i in 1 ... $data_system.elements.size
        if $data_system.elements == REFREX_PENETRATION_SKILL_ELEMENT_NAME
          result = i
          break
        end
      end
      @xrxs27a_refrex_penetration_element_id = result
    end
    return @xrxs27a_refrex_penetration_element_id
  end
end
#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler
  attr_accessor :refrexed
  attr_accessor :penetration
end[/pre]

曾经的美好已不在   吾只能独自回忆
【RMXP共享】50个脚本整合的系统
梦石
0
星屑
50
在线时间
439 小时
注册时间
2013-3-2
回帖
657
 楼主| 发表于 2013-8-20 12:15:10 | 显示全部楼层
没人来指点,要沉了么?

曾经的美好已不在   吾只能独自回忆
【RMXP共享】50个脚本整合的系统
回复

使用道具 举报

梦石
0
星屑
34467
在线时间
5096 小时
注册时间
2012-11-19
回帖
4715

开拓者

发表于 2013-8-20 18:26:12 | 显示全部楼层
可以实现的啊,其实也很简单。把普通攻击和物理特技算在一起,把魔法特技算在一起。
但是别人的脚本看起来很费劲,没处下手修改。
xp vx va mv  va mz 各类型脚本/插件定制
回复

使用道具 举报

梦石
0
星屑
50
在线时间
439 小时
注册时间
2013-3-2
回帖
657
 楼主| 发表于 2013-8-20 21:19:05 | 显示全部楼层
@芯☆淡茹水   求修改方法,我自己修改看看
谢谢

曾经的美好已不在   吾只能独自回忆
【RMXP共享】50个脚本整合的系统
回复

使用道具 举报

梦石
0
星屑
34467
在线时间
5096 小时
注册时间
2012-11-19
回帖
4715

开拓者

发表于 2013-8-21 18:22:15 | 显示全部楼层
没看你的原脚本,所以改就无从说起。
在默认脚本上改,Game_Batter 3 里德应用普通攻击效果和应用特技攻击效果里改。在减少 HP 之前条件分歧,如果满足反射的条件(如反射装备等),普通攻击就直接是
物理伤害才反射,特技效果里需要再分歧,判断特技的威力(威力大于0,是攻击技能)和攻击力是否大于0。(等于0是魔法技能;大于0是物理技能),然后再反射给攻击者
的伤害百分比

点评

非常感谢芯大,目前在整合芯式战斗的脚本,正在测试八方向行走和回血技能。。。  发表于 2013-8-21 23:10
xp vx va mv  va mz 各类型脚本/插件定制
回复

使用道具 举报

梦石
0
星屑
50
在线时间
439 小时
注册时间
2013-3-2
回帖
657
 楼主| 发表于 2013-8-21 20:12:25 | 显示全部楼层
芯☆淡茹水 发表于 2013-8-21 18:22
没看你的原脚本,所以改就无从说起。
在默认脚本上改,Game_Batter 3 里德应用普通攻击效果和应用特技攻击 ...

用的是你的芯式战斗系统,应该是默认的Game_Batter 3
谢谢芯大的指点,虽然有点迷茫,但我放弃这个想法了,原因嘛,如果BOSS或主角用了一个能反魔反特连普通攻击都能反的技能,是不是有点变态,所以想把普通攻击留下,再把特技伤害搞高点就好了

请问芯大,芯式战斗系统里的随机两体攻击能否变成3体4体乃至7体这样的修改

点评

可以单独给你修改下,过几天给你  发表于 2013-8-21 22:16

曾经的美好已不在   吾只能独自回忆
【RMXP共享】50个脚本整合的系统
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部