查看: 2604|回复: 3

[已经过期] 【ACE】来个大佬帮忙看看这些脚本会不会冲突!

[复制链接]
梦石
0
星屑
2085
在线时间
185 小时
注册时间
2022-6-24
回帖
148
发表于 2022-10-29 20:05:49 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 ACRI 于 2022-11-4 03:19 编辑

我想让某个特定技能必定暴击和暴击伤害增加/减少,然后我搜了论坛,找到了老鹰大佬的脚本,但是并不能做到我想要的效果,所以我找了其他的脚本,而且有我想要的效果,但是,老鹰大佬的脚本也想使用,所以想问问看这些脚本会不会冲突

[fold=这是老鹰大佬的][pre lang="ruby"]#==============================================================================
# ■ 暴击与暴击伤害  by 老鹰
#------------------------------------------------------------------------------
#   - 新增对暴击、暴击造成的伤害的修改
#   - 调整默认的暴击伤害为 100 ,即普通伤害的 2 倍;被暴击伤害为 0 ,即不修改
#   - 角色、职业、武器、护甲、敌人、状态的备注栏中填入下式,即可对暴击进行修改
#      <Certain Crit>      效果: 必定暴击
#      <Certain Be Crited> 效果: 必定被暴击(免疫暴击无效)
#      <Resist Crit>       效果: 免疫暴击
#      - 注:当攻击者为必定暴击,被攻击者为免疫暴击时,按通常暴击概率计算
#   - 角色、职业、武器、护甲、敌人、状态的备注栏中填入下式,即可对暴击伤害进行修改
#      <Crit Damage: 数字> 或 <Crit Damage: 数字%>
#        作用:造成的暴击伤害增加 数字/100 的比例(全部之间为加法叠加)
#      <Be Crited Damage: 数字> 或 <Be Crited Damage: 数字%>
#        作用:被造成的暴击伤害增加 数字/100 的比例(全部之间为加法叠加)
#      - 注:数字可为负数,若最终计算的暴击伤害加成结果为负数,则直接算作普通攻击伤害
#   - 举例:
#       1号护甲的备注中填入 <Crit Damage: 200>,1号角色装备中
#       1号状态的备注中填入 <Crit Damage: -100%>,1号角色被附加了该状态
#       1号敌人的备注中填入 <Be Crited Damage: 300>,1号角色暴击了1号敌人
#       效果:其造成的暴击伤害为 普通伤害的 (100 + 200 - 100 + 300)/100 倍,即5倍
#
#   - 实质:给战斗者新增了两个实例方法,用于获取 暴击伤害加成 和 被暴击伤害加成
#==============================================================================

class Game_BattlerBase
  #--------------------------------------------------------------------------
  # ○ 必定暴击?
  #--------------------------------------------------------------------------
  def certain_crit?
    @crit_params[0]
  end
  #--------------------------------------------------------------------------
  # ○ 必定被暴击?
  #--------------------------------------------------------------------------
  def certain_be_crited?
    @crit_params[1]
  end
  #--------------------------------------------------------------------------
  # ○ 免疫暴击?
  #--------------------------------------------------------------------------
  def resist_crit?
    @crit_params[2]
  end
  #--------------------------------------------------------------------------
  # ○ 暴击伤害加成(百分数)
  #--------------------------------------------------------------------------
  def crit_damage
    @crit_params[3]
  end
  #--------------------------------------------------------------------------
  # ○ 被暴击伤害加成(百分数)
  #--------------------------------------------------------------------------
  def be_crited_damage
    @crit_params[4]
  end
  #--------------------------------------------------------------------------
  # ○ 获取用于计算暴击伤害的数组
  #--------------------------------------------------------------------------
  def get_crit_damage_array
    []
  end
  #--------------------------------------------------------------------------
  # ○ 重新获取暴击各项参数值
  #--------------------------------------------------------------------------
  def reget_crit_params
    # [必定暴击?, 必定被暴击?, 免疫暴击?, 暴击伤害, 被暴击伤害]
    @crit_params = [false, false, false, 100, 0]
    get_crit_damage_array.each do |a|
      next if a == nil
      @crit_params[0] = true if a.note =~ /<Certain Crit>/
      @crit_params[1] = true if a.note =~ /<Certain Be Crited>/
      @crit_params[2] = true if a.note =~ /<Resist Crit>/
      @crit_params[3] += $1.to_i if a.note =~ /<Crit Damage: *(-?\d+)%?>/
      @crit_params[4] += $1.to_i if a.note =~ /<Be Crited Damage: *(-?\d+)%?>/
    end
  end
end

class Game_Battler < Game_BattlerBase
  #--------------------------------------------------------------------------
  # ● 计算伤害
  #--------------------------------------------------------------------------
  alias eagle_crit_damage_make_damage_value make_damage_value
  def make_damage_value(user, item)
    @skill_user = user
    @skill_user.reget_crit_params
    reget_crit_params
    unless @skill_user.certain_crit? && resist_crit?
      @result.critical = true  if @skill_user.certain_crit?
      @result.critical = false if resist_crit?
    end
    @result.critical = true if certain_be_crited?
    eagle_crit_damage_make_damage_value(user, item)
  end
  #--------------------------------------------------------------------------
  # ● 应用关键一击
  #--------------------------------------------------------------------------
  def apply_critical(damage)
    damage * (1 + calc_crit_damage)
  end
  #--------------------------------------------------------------------------
  # ○ 计算最终的暴击伤害加成
  #--------------------------------------------------------------------------
  def calc_crit_damage
    value = (@skill_user.crit_damage + self.be_crited_damage) / 100
    return value < 0 ? 0 : value
  end
end

class Game_Actor < Game_Battler
  #--------------------------------------------------------------------------
  # ○ 获取用于计算暴击伤害的数组
  #--------------------------------------------------------------------------
  def get_crit_damage_array
    [actor, self.class] + equips + states
  end
end

class Game_Enemy < Game_Battler
  #--------------------------------------------------------------------------
  # ○ 获取用于计算暴击伤害的数组
  #--------------------------------------------------------------------------
  def get_crit_damage_array
    [enemy] + states
  end
end[/pre][/fold]



[fold=这是可以让特定技能的暴击效果增加的脚本(随便一问,这个可以减少吗,我用谷歌翻译看了,好像是不行,但谷歌日常抽风,不是特别相信)][pre lang="ruby"]#==============================================================================
# クリティカルダメージ倍率 ver1.01
#------------------------------------------------------------------------------
#[特徴]
# クリティカルによるダメージの倍率を強化します。
#
#[設定方法]
# アクター、職業、エネミー、アイテム、スキル、装備品、ステートのメモ欄に
# <クリティカルダメージ倍率:数値> と書く。
#
# <クリティカルダメージ倍率:200> と書くと、
# クリティカル時のダメージが200%(2倍)になります。
#
#[注意]
# スキルで反映されるのは使用したスキルのダメージ倍率です。
# いわゆるパッシブスキルのような反映はされません。
#
#
# 作成:ぶちょー
# ホム:http://nyannyannyan.bake-neko.net
# 著作:自分で作ったとか言わないで><
#       改造はご自由にどうぞ。
#       リードミーとかに私の名前の載せたりするのは任意で。
#==============================================================================

#==============================================================================
# バージョンアップ情報
# ver1.01 カウンター時にエラーが出るのを修正
# ver1.00 公開
#==============================================================================

#==============================================================================
# 設定項目
#==============================================================================
module Kazari
module CriticalRate
  # 設定が重複したときの計算方法
  # 0 : 加算【 300%(100%+200%)+200%(100%+100%)=400%(100%+300%) 】
  # 1 : 最大
  CALC_TYPE = 0
  
  # アクター、エネミーのデフォルトのクリティカルダメージ倍率
  DAMAGE_RATE = 3.0
end
end
#==============================================================================
# ここまで
#==============================================================================

$kzr_imported = {} if $kzr_imported == nil
$kzr_imported["CriticalDamageRate"] = true
#==============================================================================
# ■ Game_Battler
#==============================================================================
class Game_Battler
  #--------------------------------------------------------------------------
  # ● ダメージ計算
  #--------------------------------------------------------------------------
  alias kzr_cdr_make_damage_value make_damage_value
  def make_damage_value(user, item)
    @skill_user = user
    kzr_cdr_make_damage_value(user, item)
  end
  #--------------------------------------------------------------------------
  # ● クリティカルの適用
  #--------------------------------------------------------------------------
  def apply_critical(damage)
    damage * @skill_user.critical_damage_rate
  end
  #--------------------------------------------------------------------------
  # ● クリティカルダメージの倍率
  #--------------------------------------------------------------------------
  def critical_damage_rate
    rate = current_action ? current_action.item.critical_damage_rate : 1.0
    if Kazari::CriticalRate::CALC_TYPE == 0
      feature_objects.inject(rate) {|r, obj| r += (obj.critical_damage_rate - 1.0) }
    else
      feature_objects.inject([rate]) {|r, obj| r << obj.critical_damage_rate }.max
    end
  end
end


#==============================================================================
# ■ RPG
#==============================================================================
module RPG

class BaseItem
  def critical_damage_rate
    return @critical_damage_rate if @critical_damage_rate
    @critical_damage_rate = 1.0
    note.each_line {|line|
    case line
    when /<クリティカルダメージ倍率:(\d+)>/
      @critical_damage_rate = $1.to_i / 100.0
    end
    }
    return @critical_damage_rate
  end
end

class Actor < BaseItem
  def critical_damage_rate
    return @critical_damage_rate if @critical_damage_rate
    @critical_damage_rate = Kazari::CriticalRate::DAMAGE_RATE
    note.each_line {|line|
    case line
    when /<クリティカルダメージ倍率:(\d+)>/i
      @critical_damage_rate = $1.to_i * 0.01
    end
    }
    return @critical_damage_rate
  end
end

class Enemy < BaseItem
  def critical_damage_rate
    return @critical_damage_rate if @critical_damage_rate
    @critical_damage_rate = Kazari::CriticalRate::DAMAGE_RATE
    note.each_line {|line|
    case line
    when /<クリティカルダメージ倍率:(\d+)>/i
      @critical_damage_rate = $1.to_i * 0.01
    end
    }
    return @critical_damage_rate
  end
end

end[/pre][/fold]



[fold=这是特定技能必定暴击脚本][pre lang="ruby"]class Game_Battler < Game_BattlerBase
  #--------------------------------------------------------------------------
  # ● 计算技能/物品的必杀几率    #<must_cri>放技能或者物品备忘录
  #--------------------------------------------------------------------------
  alias :special_skill_item_cri :item_cri
  def item_cri(user, item)
    return 1 if item.note =~ /<must_cri>/i
    special_skill_item_cri(user, item)
  end
end
[/pre][/fold]
在尝试做游戏了,但还是个菜狗(结果现在编程,音乐和剧情设计没开始学,画画也暂时没时间学了(;д;))

(个人精神状况不是很好,有时会说出一些奇怪且根本没法理解意思的话,直接无视就好,如果说出的话不小心冒犯到你,我会在精神状况良好时和你道歉的(`・ω・´)(不过一般在感觉到不适时会直接下线,请勿过于担心))
梦石
0
星屑
2085
在线时间
185 小时
注册时间
2022-6-24
回帖
148
 楼主| 发表于 2022-11-2 04:23:50 | 显示全部楼层
沉了啊,悲
回复

使用道具 举报

梦石
0
星屑
29901
在线时间
5734 小时
注册时间
2016-3-8
回帖
1653
发表于 2022-11-6 12:23:48 | 显示全部楼层
第一跟第二个脚本都重写了def apply_critical(damage)
那肯定不相容吧

评分

参与人数 1赞 +1 收起 理由
ACRI + 1 塞糖

查看全部评分

回复

使用道具 举报

梦石
0
星屑
2085
在线时间
185 小时
注册时间
2022-6-24
回帖
148
 楼主| 发表于 2022-11-7 06:05:40 | 显示全部楼层
alexncf125 发表于 2022-11-6 12:23
第一跟第二个脚本都重写了def apply_critical(damage)
那肯定不相容吧

那能不能让第一个脚本有第二个脚本的效果呢(指可以控制放技能的备注里控制技能的暴击伤害)
在尝试做游戏了,但还是个菜狗(结果现在编程,音乐和剧情设计没开始学,画画也暂时没时间学了(;д;))

(个人精神状况不是很好,有时会说出一些奇怪且根本没法理解意思的话,直接无视就好,如果说出的话不小心冒犯到你,我会在精神状况良好时和你道歉的(`・ω・´)(不过一般在感觉到不适时会直接下线,请勿过于担心))
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部