查看: 4040|回复: 4

[已经解决] 关于技能会心一击几率问题

[复制链接]
梦石
0
星屑
50
在线时间
641 小时
注册时间
2015-7-29
回帖
188
发表于 2015-9-20 19:27:06 | 显示全部楼层 |阅读模式

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

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

×
怎么让技能拥有独立的会心一击(几率)      不是装备附加上的也不是状态附加上的!  求大神告知。


技能公式能否直接实现= =

…あたしは天

梦石
0
星屑
2308
在线时间
4033 小时
注册时间
2010-10-4
回帖
10548

开拓者贵宾

发表于 2015-9-20 19:40:03 | 显示全部楼层
能:https://rpg.blue/thread-307316-1-1.html

可以通过 rand 获取一个 0~1 之间的随机数。比如可以用 rand < 0.5 作判断

点评

那如果我的技能是 a的攻击力减去b的防御力,然后该技能会心几率为百分20, 请问要怎么写呢= =  发表于 2015-9-20 19:45
回复

使用道具 举报

梦石
0
星屑
22879
在线时间
8598 小时
注册时间
2011-12-31
回帖
3270
发表于 2015-9-20 19:52:37 | 显示全部楼层
本帖最后由 tseyik 于 2015-10-17 18:05 编辑

設定方法
在資料庫中技能附註欄加上。
<会心率プラス n>
<会心率マイナス n>
這技能使用時、角色的「会心率」がプラス/マイナス(+/-)n%。
(例<会心率プラス 50>、会心率+10%的角色使用該技能時角色的「会心率」変成60%)

還有<会心威力 n>的用法n可以不是整数,<会心威力 1.5>就是暴撃是普通攻撃的1.5倍

スキル毎クリティカル設定[pre lang="ruby"]


#==============================================================================
#                「スキル毎クリティカル設定」(ACE) ver3.0  by奈々
#
#   ◇使用規約
#   使用される場合はスクリプト作成者として「奈々」を明記して下さい。
#   このスクリプトを改変したり、改変したものを配布するなどは自由ですが
#   その場合も元のスクリプトの作成者として名前は載せて下さい。
#
#------------------------------------------------------------------------------
#
#   ・会心率をスキル毎に増減
#   スキルのメモ欄に<会心率プラス 数値>か<会心率マイナス 数値>と書きます。
#   このスキルを使用する場合、アクターの「会心率」にその数値が足されます。
#   (例えば<会心率プラス 50>のスキルを会心率+10%のアクターが使うと60%扱い)
#
#   ・クリティカル時にダメージを何倍にするか指定
#   スキルのメモ欄に<会心威力 数値>と書いて設定します。(1.5などの小数も可能)
#   書かない場合はデフォルトの3倍で計算されます。
#
#==============================================================================
#==============================================================================
#
#   内蔵型MDVリッパー
#
#------------------------------------------------------------------------------
unless (NanaSeven::MDV_RIPPER rescue false) # 他のMDVリッパーの検出
module NanaSeven
  MDV_RIPPER = true
end  
class Game_Battler < Game_BattlerBase
  #--------------------------------------------------------------------------
  # ● ダメージ計算(極力再定義しない)
  #--------------------------------------------------------------------------
  def make_damage_value(user, item)
    value = make_damage_value_1(user, item)
    value = make_damage_value_2(user, item, value)
    value = make_damage_value_3(user, item, value)
    value = make_damage_value_4(user, item, value)
    value = make_damage_value_5(user, item, value)
    value = make_damage_value_6(user, item, value)
    value = make_damage_value_7(user, item, value)
    value = make_damage_value_8(user, item, value)
    value = make_damage_value_new(user, item, value)
    @result.make_damage(value.to_i, item)
  end
  #--------------------------------------------------------------------------
  # ● 再定義用下位メソッド群
  #--------------------------------------------------------------------------
  #--------------------------------------------------------------------------
  # ● *ダメージ計算式
  #--------------------------------------------------------------------------
  def make_damage_value_1(user, item)
    value = item.damage.eval(user, self, $game_variables)
    return value
  end
  #--------------------------------------------------------------------------
  # ● *属性有効度
  #--------------------------------------------------------------------------
  def make_damage_value_2(user, item, value)
    value *= item_element_rate(user, item)
    return value
  end
  #--------------------------------------------------------------------------
  # ● *物理ダメージ率
  #--------------------------------------------------------------------------
  def make_damage_value_3(user, item, value)
    value *= pdr if item.physical?
    return value
  end
  #--------------------------------------------------------------------------
  # ● *魔法ダメージ率
  #--------------------------------------------------------------------------
  def make_damage_value_4(user, item, value)
    value *= mdr if item.magical?
    return value
  end
  #--------------------------------------------------------------------------
  # ● *回復効果率
  #--------------------------------------------------------------------------
  def make_damage_value_5(user, item, value)
    value *= rec if item.damage.recover?
    return value
  end
  #--------------------------------------------------------------------------
  # ● *クリティカル
  #--------------------------------------------------------------------------
  def make_damage_value_6(user, item, value)
    value = apply_critical(value) if @result.critical
    return value
  end
  #--------------------------------------------------------------------------
  # ● 分散度
  #--------------------------------------------------------------------------
  def make_damage_value_7(user, item, value)
    value = apply_variance(value, item.damage.variance)
    return value
  end
  #--------------------------------------------------------------------------
  # ● 防御修正
  #--------------------------------------------------------------------------
  def make_damage_value_8(user, item, value)
    value = apply_guard(value)
    return value
  end
  #--------------------------------------------------------------------------
  # ● エイリアス用新規メソッド
  #--------------------------------------------------------------------------
  def make_damage_value_new(user, item, value)
    return value
  end
end
end
#------------------------------------------------------------------------------
#
#   ここまでMDVリッパー
#
#==============================================================================
class Game_Battler < Game_BattlerBase
  #--------------------------------------------------------------------------
  # ○ スキル/アイテムの会心率計算(再定義)
  #--------------------------------------------------------------------------
  def item_cri(user, item)
    item.damage.critical ? (user.cri + item.cri_fix) * (1 - cev) : 0
  end
  #--------------------------------------------------------------------------
  # ○ クリティカルの適用(再定義)
  #--------------------------------------------------------------------------
  def apply_critical(damage, item)
    item.cri_damage ? damage * item.cri_damage.truncate : damage * 3
  end
  #--------------------------------------------------------------------------
  # ○ *クリティカル(再定義)
  #--------------------------------------------------------------------------
  def make_damage_value_6(user, item, value)
    value = apply_critical(value, item) if @result.critical
    return value
  end
end
class RPG::UsableItem < RPG::BaseItem
  #--------------------------------------------------------------------------
  # ☆ 会心率修正の定義(追加定義)
  #--------------------------------------------------------------------------  
  def cri_fix
    @note.scan(/<会心率(プラス|マイナス)\s?(\d*)>/)
    return ($2.to_i * 0.01) if $2 && $1 == "プラス"
    return -(($2.to_i * 0.01)) if $2 && $1 == "マイナス"
    return 0
  end
  #--------------------------------------------------------------------------
  # ☆ 会心の威力の定義(追加定義)
  #--------------------------------------------------------------------------  
  def cri_damage
    @note.scan(/<会心威力\s?(\d*)>/)
    return $1.to_i if $1
    return 3
  end
end

[/pre]

评分

参与人数 2星屑 +210 收起 理由
taroxd + 200 认可答案
黄谊洲 + 10 认可答案

查看全部评分

回复

使用道具 举报

梦石
0
星屑
225
在线时间
38 小时
注册时间
2011-8-28
回帖
42
发表于 2017-12-5 18:49:26 | 显示全部楼层
errr,楼上大神的方案有中文版的吗?不会很懂啊
回复

使用道具 举报

梦石
0
星屑
225
在线时间
38 小时
注册时间
2011-8-28
回帖
42
发表于 2017-12-5 19:01:44 | 显示全部楼层
懂了懂了,刚才没看见下面的代码
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部