查看: 2355|回复: 3

[已经解决] 求大佬,我想将部分状态里的【特殊能力】增加改为随属性

[复制链接]
梦石
0
星屑
1249
在线时间
69 小时
注册时间
2019-2-12
回帖
73
发表于 2022-1-22 08:16:09 | 显示全部楼层 |阅读模式

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

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

×
如题,比如说 50号状态 获得 【5 * 玩家等级 * 玩家攻击力】 的回复效果比率,受到攻击几率为 【100 - 玩家等级】
梦石
0
星屑
2866
在线时间
446 小时
注册时间
2016-9-26
回帖
1175
发表于 2022-1-22 12:49:12 | 显示全部楼层
本帖最后由 任小雪 于 2022-1-22 12:57 编辑

https://rpg.blue/thread-486948-1-1.html
提取字串符再对应赋值(划掉,直接赋值)

$dataState[50]=["code":21,"dataId":2,"value":这里填数值,{"code":21,"dataId":2,"value":这里填数值}];//大括号里面填帖子里对应的数组(code和dataid组合对应一种属性加成),你可以参考具体的引擎里的data文件,要运算的数值value要填对应的代码

记得读档存档时保存和读取一次对应的data文件,参考https://rpg.blue/thread-487752-1-1.html中的图片做法


额,又是我最讨厌的va区,整体代码不一样,法子你大概参考吧,不知道有没有data文件(呵)

评分

参与人数 1星屑 -10 收起 理由
alexncf125 -10 文不对题 不知所云

查看全部评分

回复

使用道具 举报

梦石
0
星屑
29901
在线时间
5734 小时
注册时间
2016-3-8
回帖
1653
发表于 2022-1-23 00:49:58 | 显示全部楼层
如题,比如说 50号状态 备注<REC:5*self.level*self.atk>的回复效果比率,受到攻击几率为<TGR:100-self.level>

[pre lang="ruby"]#==============================================================================
# ■ RGSS3 能力値増加特徴 Ver2.01 by 星潟
#------------------------------------------------------------------------------
# 特徴を有する項目による能力値増加を割合の他に
# 特定の値で増加させる事が可能になります。
# 長すぎて2行になっても、自分で改行を行っていないのであれば機能すると思います。
# 記述方法を変える事で常時増加させる場合と
# 戦闘中のみ増加させる場合とで使い分けが可能です。
# なお、マイナスの値が指定された場合は、減算扱いとなります。
#------------------------------------------------------------------------------

#
#設定例(職業・ステート等のメモ欄に記入)
# <MHP:500>
# 最大HPが500増加する。
#
# <MMP:250>
# 最大HPが250減少する。
#
# <BATK:self.hp/5>
# 戦闘中、自分の現在HPの5分の1分、攻撃力が増加する。
#
# <BDEF:friends_unit.alive_members.size*50>
# 戦闘中、生存している味方数の50倍分、防御力が増加する。
#
# <MAT:$game_variables[9]>
# 魔法力が変数9の値分増加する。
#
# <MDF:$game_party.item_number($data_items[5])*10>
# 魔法防御がアイテムID5の所持数×10分増加する。
#
# <AGI:$game_party.gold/1000>
# 敏捷性が所持金の1000分の1の値分増加する。
#
# <BLUK:rand(1000)>
# 戦闘中、運の値を常に0~999の間のどれかの値で増加する。
#
# <HIT:$game_variables[11]>
# 命中率が変数11の値%分増加する。
#
# <TGR:50>
# 狙われ率が50%増加する。
#
# <BMHP:-50>
# HP弱体有効度が50%減少する。(耐性上昇)
#
# <ELE:3,-75>
# 属性ID3の有効度が75%低下する。(耐性上昇)
#
# <STA:2,25>
# ステートID2の有効度が25%増加する。(耐性低下)
#------------------------------------------------------------------------------
# なお、処理によってはループしてエラーを吐く場合がある為
# キャラクターの能力値が相互に影響を及ぼすような設定は避けて下さい。
# (<ATK:self.param(2)>と設定したり
#   <ATK:self.param(3)>と<DEF:self.param(2)>を1キャラクターに設定したり
#    常時増加値として敵のデータを参照するように設定するとエラーを吐きます)
#
# Ver1.01 テスト用のp文を消去。
# Ver1.02 指定値強化・弱体アイテム・スキルとの競合を解消。
# Ver2.00 新たに追加能力値/特殊能力値/弱体有効度
#          属性有効度/ステート有効度への設定が可能になりました。
# Ver2.01 属性有効度/ステート有効度への設定が
#          1つしか有効にならない不具合を修正しました。
#==============================================================================
module VU_F
#==============================================================================
  #空のハッシュを準備します。(消さないで下さい)
#------------------------------------------------------------------------------
  W1 = {}
#==============================================================================
  #通常能力値設定用キーワードを括弧内に設定します。
  #最大HPから運までの8種を順番に設定します。(変更不要です)
#------------------------------------------------------------------------------
  #空の配列を用意。
#------------------------------------------------------------------------------
  W1[0] = []
#------------------------------------------------------------------------------
  #★以下に設定★
#------------------------------------------------------------------------------
  W1[0].push("MHP")# 最大HP
  W1[0].push("MMP")# 最大MP
  W1[0].push("ATK")# 攻撃力
  W1[0].push("DEF")# 防御力
  W1[0].push("MAT")# 魔法力
  W1[0].push("MDF")# 魔法防御
  W1[0].push("AGI")# 敏捷性
  W1[0].push("LUK")# 運
#==============================================================================
  #追加能力値設定用キーワードを括弧内に設定します。
  #命中率からTP再生率までの10種を順番に設定します。(変更不要です)
#------------------------------------------------------------------------------
  #空の配列を用意。
#------------------------------------------------------------------------------
  W1[1] = []
#------------------------------------------------------------------------------
  #★以下に設定★
#------------------------------------------------------------------------------
  W1[1].push("HIT")# 命中率
  W1[1].push("EVA")# 回避率
  W1[1].push("CRI")# 会心率
  W1[1].push("CEV")# 会心回避率
  W1[1].push("MEV")# 魔法回避率
  W1[1].push("MRF")# 魔法反射率
  W1[1].push("CNT")# 反撃率
  W1[1].push("HRG")# HP再生率
  W1[1].push("MRG")# MP再生率
  W1[1].push("TRG")# TP再生率
#==============================================================================
  #特殊能力値設定用キーワードを括弧内に設定します。
  #狙われ率から経験値獲得率までの10種を順番に設定します。(変更不要です)
#------------------------------------------------------------------------------
  #空の配列を用意。
#------------------------------------------------------------------------------
  W1[2] = []
#------------------------------------------------------------------------------
  #★以下に設定★
#------------------------------------------------------------------------------
  W1[2].push("仇恨")# 狙われ率
  W1[2].push("GRD")# 防御効果率
  W1[2].push("REC")# 回復効果率
  W1[2].push("PHA")# 薬の知識
  W1[2].push("MCR")# MP消費率
  W1[2].push("TCR")# TPチャージ率
  W1[2].push("PDR")# 物理ダメージ率
  W1[2].push("MDR")# 魔法ダメージ率
  W1[2].push("FDR")# 床ダメージ率
  W1[2].push("EXR")# 経験獲得率
#==============================================================================
  #弱体有効度設定用キーワードを括弧内に設定します。
  #最大HPから運までの8種を順番に設定します。(変更不要です)
#------------------------------------------------------------------------------
  #空の配列を用意。
#------------------------------------------------------------------------------
  W1[3] = []
#------------------------------------------------------------------------------
  #★以下に設定★
#------------------------------------------------------------------------------
  W1[3].push("DBMHP")# 最大HP
  W1[3].push("DBMMP")# 最大MP
  W1[3].push("DBATK")# 攻撃力
  W1[3].push("DBDEF")# 防御力
  W1[3].push("DBMAT")# 魔法力
  W1[3].push("DBMDF")# 魔法防御
  W1[3].push("DBAGI")# 敏捷性
  W1[3].push("DBLUK")# 運
#==============================================================================
  #戦闘中に限定して作用する通常能力値設定用キーワードを括弧内に設定します。
  #最大HPから運までの8種を順番に設定します。(変更不要です)
#------------------------------------------------------------------------------
  #空の配列を用意。
#------------------------------------------------------------------------------
  W1[4] = []
#------------------------------------------------------------------------------
  #★以下に設定★
#------------------------------------------------------------------------------
  W1[4].push("BMHP")# 最大HP弱体
  W1[4].push("BMMP")# 最大MP弱体
  W1[4].push("BATK")# 攻撃力弱体
  W1[4].push("BDEF")# 防御力弱体
  W1[4].push("BMAT")# 魔法力弱体
  W1[4].push("BMDF")# 魔法防御弱体
  W1[4].push("BAGI")# 敏捷性弱体
  W1[4].push("BLUK")# 運弱体
#==============================================================================
  #戦闘中に限定して作用する追加能力値設定用キーワードを括弧内に設定します。
  #命中率からTP再生率までの10種を順番に設定します。(変更不要です)
#------------------------------------------------------------------------------
  #空の配列を用意。
#------------------------------------------------------------------------------
  W1[5] = []
#------------------------------------------------------------------------------
  #★以下に設定★
#------------------------------------------------------------------------------
  W1[5].push("BHIT")# 命中率
  W1[5].push("BEVA")# 回避率
  W1[5].push("BCRI")# 会心率
  W1[5].push("BCEV")# 会心回避率
  W1[5].push("BMEV")# 魔法回避率
  W1[5].push("BMRF")# 魔法反射率
  W1[5].push("BCNT")# 反撃率
  W1[5].push("BHRG")# HP再生率
  W1[5].push("BMRG")# MP再生率
  W1[5].push("BTRG")# TP再生率
#==============================================================================
  #戦闘中に限定して作用する特殊能力値設定用キーワードを括弧内に設定します。
  #狙われ率から経験値獲得率までの10種を順番に設定します。(変更不要です)
#------------------------------------------------------------------------------
  #空の配列を用意。
#------------------------------------------------------------------------------
  W1[6] = []
#------------------------------------------------------------------------------
  #★以下に設定★
#------------------------------------------------------------------------------
  W1[6].push("BTGR")# 狙われ率
  W1[6].push("BGRD")# 防御効果率
  W1[6].push("BREC")# 回復効果率
  W1[6].push("BPHA")# 薬の知識
  W1[6].push("BMCR")# MP消費率
  W1[6].push("BTCR")# TPチャージ率
  W1[6].push("BPDR")# 物理ダメージ率
  W1[6].push("BMDR")# 魔法ダメージ率
  W1[6].push("BFDR")# 床ダメージ率
  W1[6].push("BEXR")# 経験獲得率
#==============================================================================
  #戦闘中に限定して作用する弱体有効度設定用キーワードを括弧内に設定します。
  #最大HPから運までの8種を順番に設定します。(変更不要です)
#------------------------------------------------------------------------------
  #空の配列を用意。
#------------------------------------------------------------------------------
  W1[7] = []
#------------------------------------------------------------------------------
  #★以下に設定★
#------------------------------------------------------------------------------
  W1[7].push("BDBMHP")# 最大HP弱体
  W1[7].push("BDBMMP")# 最大MP弱体
  W1[7].push("BDBATK")# 攻撃力弱体
  W1[7].push("BDBDEF")# 防御力弱体
  W1[7].push("BDBMAT")# 魔法力弱体
  W1[7].push("BDBMDF")# 魔法防御弱体
  W1[7].push("BDBAGI")# 敏捷性弱体
  W1[7].push("BDBLUK")# 運弱体
#==============================================================================
  #属性有効度/ステート有効度設定用キーワードを順番に設定します。
#------------------------------------------------------------------------------
  #空の配列を用意。
#------------------------------------------------------------------------------
  W2 = []
#------------------------------------------------------------------------------
  #★以下に設定★
#------------------------------------------------------------------------------
  W2[0] = "ELE" #属性有効度
  W2[1] = "STA" #ステート有効度
  W2[2] = "BELE"#属性有効度(戦闘中のみ)
  W2[3] = "BSTA"#ステート有効度(戦闘中のみ)
#==============================================================================
end
class Game_BattlerBase
  #--------------------------------------------------------------------------
  # 通常能力値
  #--------------------------------------------------------------------------
  alias param_plus_exppf param_plus
  def param_plus(param_id)
    #元の処理に追加データを加算。
    param_plus_exppf(param_id) + ppf_param_plus(0,param_id)
  end
  #--------------------------------------------------------------------------
  # 追加能力値
  #--------------------------------------------------------------------------
  alias xparam_exppf xparam
  def xparam(param_id)
    #元の処理に追加データを加算。
    xparam_exppf(param_id) + ppf_param_plus(1,param_id)
  end
  #--------------------------------------------------------------------------
  # 特殊能力値
  #--------------------------------------------------------------------------
  alias sparam_exppf sparam
  def sparam(param_id)
    #元の処理に追加データを加算。   

   if param_id == 0
    sparam_exppf(param_id) * (1+ppf_param_plus(2,param_id))
  else
    sparam_exppf(param_id) + ppf_param_plus(2,param_id)
  end


  end
  #--------------------------------------------------------------------------
  # 弱体有効度
  #--------------------------------------------------------------------------
  alias debuff_rate_exppf debuff_rate
  def debuff_rate(param_id)
    #元の処理に追加データを加算。
    debuff_rate_exppf(param_id) + ppf_param_plus(3,param_id)
  end
  #--------------------------------------------------------------------------
  # 属性有効度
  #--------------------------------------------------------------------------
  alias element_rate_exppf element_rate
  def element_rate(element_id)
    #元の処理に追加データを加算。
    if element_id == 27 or element_id == 24 or element_id == 25 #改 特定属性加算
       if ppf_param_plus(4,element_id) == 0
        element_rate_exppf(element_id) + ppf_param_plus(4,element_id) - 1
      else
        element_rate_exppf(element_id) * ppf_param_plus(4,element_id)
      end

    else
     element_rate_exppf(element_id) + ppf_param_plus(4,element_id)
   end
  end
  #--------------------------------------------------------------------------
  # ステート有効度
  #--------------------------------------------------------------------------
  alias state_rate_exppf state_rate
  def state_rate(state_id)
    #元の処理に追加データを加算。
    state_rate_exppf(state_id) + ppf_param_plus(5,state_id)
  end
  #--------------------------------------------------------------------------
  # 追加データ
  #--------------------------------------------------------------------------
  def ppf_param_plus(type,param_id)
    data = 0
    #各特徴のデータを加算。
    feature_objects.each {|f|
    case type
    when 0..3
      #テキストデータを取得。
      text = f.ex_p_data[0 + type][param_id]
      #テキストデータを取得出来た場合は分岐。
      if text     
        #基本追加データを計算。
        sub_data = eval(f.ex_p_data[0 + type][param_id])
        #データが正常な場合は加算。
        data += sub_data if sub_data
      end
      #戦闘中でない場合は次の処理へ。
      next unless $game_party.in_battle
      #テキストデータを取得。
      text = f.ex_p_data[4 + type][param_id]
      #テキストデータを取得出来た場合は分岐。
      if text
        #戦闘中限定追加データを計算。
        sub_data = eval(text)
        #データが正常な場合は加算。
        data += sub_data if sub_data
      end
    when 4..5
      #テキストデータを取得。
      text = f.ex_r_data[type - 4][param_id]
      #テキストデータを取得出来た場合は分岐。
      if text
        #基本追加データを計算。
        sub_data = eval(f.ex_r_data[type - 4][param_id])
        #データが正常な場合は加算。
        data += sub_data if sub_data
      end
      #戦闘中でない場合は次の処理へ。
      next unless $game_party.in_battle
      #テキストデータを取得。
      text = f.ex_r_data[type - 2][param_id]
      #テキストデータを取得出来た場合は分岐。
      if text
        #戦闘中限定追加データを計算。
        sub_data = eval(text)
        #データが正常な場合は加算。
        data += sub_data if sub_data
      end
    end}
    #基本能力値でない場合は100.0で割る。
    data / (type == 0 ? 1 : 100.0)
  end
end
class RPG::BaseItem
  #--------------------------------------------------------------------------
  # 追加データ(基本能力値/追加能力値/特殊能力値/弱体有効度用)
  #--------------------------------------------------------------------------
  def ex_p_data
    #増加値設定が既に存在するならそれを返す。
    return @ex_p_data if @ex_p_data != nil
    #増加値設定用ハッシュを準備。
    @ex_p_data = {}
    #8回分処理。
    8.times {|n|
    #配列を生成。
    @ex_p_data[n] = []
    #設定項目内の文字列設定に応じてメモ欄からデータを取得。
    VU_F::W1[n].each {|i| @ex_p_data[n].push(/<#{i}[::](\S+)>/ =~ @note ? $1.to_s : "0")}}
# VU_F::W1[n].each {|i| @ex_p_data[n].push(/#{i}[::](\S+)/ =~ @note ? $1.to_s : "0")}}
    #データを返す。
    @ex_p_data
  end
  #--------------------------------------------------------------------------
  # 追加データ(属性有効度/ステート有効度用)
  #--------------------------------------------------------------------------
  def ex_r_data
    #増加値設定が既に存在するならそれを返す。
    return @ex_r_data if @ex_r_data != nil
    #増加値設定用ハッシュを準備。
    @ex_r_data = {}
    #4回分処理。
    4.times {|n|
    #配列を生成。
    @ex_r_data[n] = {}
    #行別に処理。
    @note.each_line {|l|
    #設定項目内の文字列設定に応じて各行からデータを取得。
    data = /<#{VU_F::W2[n]}[::](\d+),(\S+)>/ =~ l ? [$1.to_i,$2.to_s] : nil
# data = /#{VU_F::W2[n]}[:](\d+),(\S+)/ =~ l ? [$1.to_i,$2.to_s] : nil
    #nilの場合は次の行へ。
    next unless data
    #データを登録。
    @ex_r_data[n][data[0]] = data[1]}}
    #データを返す。
    @ex_r_data
  end
end[/pre]
回复

使用道具 举报

梦石
0
星屑
1249
在线时间
69 小时
注册时间
2019-2-12
回帖
73
 楼主| 发表于 2022-1-23 06:10:23 | 显示全部楼层
alexncf125 发表于 2022-1-23 00:49
如题,比如说 50号状态 备注的回复效果比率,受到攻击几率为

#========================================= ...

感谢感谢!
回复

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部