设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1796|回复: 3
打印 上一主题 下一主题

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

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1254
在线时间
70 小时
注册时间
2019-2-12
帖子
98
跳转到指定楼层
1
发表于 2022-1-22 08:16:09 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
如题,比如说 50号状态 获得 【5 * 玩家等级 * 玩家攻击力】 的回复效果比率,受到攻击几率为 【100 - 玩家等级】

Lv3.寻梦者

梦石
0
星屑
1254
在线时间
70 小时
注册时间
2019-2-12
帖子
98
4
 楼主| 发表于 2022-1-23 06:10:23 | 只看该作者
alexncf125 发表于 2022-1-23 00:49
如题,比如说 50号状态 备注的回复效果比率,受到攻击几率为

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

感谢感谢!
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
26184
在线时间
5343 小时
注册时间
2016-3-8
帖子
1655
3
发表于 2022-1-23 00:49:58 | 只看该作者
如题,比如说 50号状态 备注<REC:5*self.level*self.atk>的回复效果比率,受到攻击几率为<TGR:100-self.level>

RUBY 代码复制
  1. #==============================================================================
  2. # ■ RGSS3 能力値増加特徴 Ver2.01 by 星潟
  3. #------------------------------------------------------------------------------
  4. # 特徴を有する項目による能力値増加を割合の他に
  5. # 特定の値で増加させる事が可能になります。
  6. # 長すぎて2行になっても、自分で改行を行っていないのであれば機能すると思います。
  7. # 記述方法を変える事で常時増加させる場合と
  8. # 戦闘中のみ増加させる場合とで使い分けが可能です。
  9. # なお、マイナスの値が指定された場合は、減算扱いとなります。
  10. #------------------------------------------------------------------------------
  11.  
  12. #
  13. #設定例(職業・ステート等のメモ欄に記入)
  14. # <MHP:500>
  15. # 最大HPが500増加する。
  16. #
  17. # <MMP:250>
  18. # 最大HPが250減少する。
  19. #
  20. # <BATK:self.hp/5>
  21. # 戦闘中、自分の現在HPの5分の1分、攻撃力が増加する。
  22. #
  23. # <BDEF:friends_unit.alive_members.size*50>
  24. # 戦闘中、生存している味方数の50倍分、防御力が増加する。
  25. #
  26. # <MAT:$game_variables[9]>
  27. # 魔法力が変数9の値分増加する。
  28. #
  29. # <MDF:$game_party.item_number($data_items[5])*10>
  30. # 魔法防御がアイテムID5の所持数×10分増加する。
  31. #
  32. # <AGI:$game_party.gold/1000>
  33. # 敏捷性が所持金の1000分の1の値分増加する。
  34. #
  35. # <BLUK:rand(1000)>
  36. # 戦闘中、運の値を常に0~999の間のどれかの値で増加する。
  37. #
  38. # <HIT:$game_variables[11]>
  39. # 命中率が変数11の値%分増加する。
  40. #
  41. # <TGR:50>
  42. # 狙われ率が50%増加する。
  43. #
  44. # <BMHP:-50>
  45. # HP弱体有効度が50%減少する。(耐性上昇)
  46. #
  47. # <ELE:3,-75>
  48. # 属性ID3の有効度が75%低下する。(耐性上昇)
  49. #
  50. # <STA:2,25>
  51. # ステートID2の有効度が25%増加する。(耐性低下)
  52. #------------------------------------------------------------------------------
  53. # なお、処理によってはループしてエラーを吐く場合がある為
  54. # キャラクターの能力値が相互に影響を及ぼすような設定は避けて下さい。
  55. # (<ATK:self.param(2)>と設定したり
  56. #   <ATK:self.param(3)>と<DEF:self.param(2)>を1キャラクターに設定したり
  57. #    常時増加値として敵のデータを参照するように設定するとエラーを吐きます)
  58. #
  59. # Ver1.01 テスト用のp文を消去。
  60. # Ver1.02 指定値強化・弱体アイテム・スキルとの競合を解消。
  61. # Ver2.00 新たに追加能力値/特殊能力値/弱体有効度
  62. #          属性有効度/ステート有効度への設定が可能になりました。
  63. # Ver2.01 属性有効度/ステート有効度への設定が
  64. #          1つしか有効にならない不具合を修正しました。
  65. #==============================================================================
  66. module VU_F
  67. #==============================================================================
  68.   #空のハッシュを準備します。(消さないで下さい)
  69. #------------------------------------------------------------------------------
  70.   W1 = {}
  71. #==============================================================================
  72.   #通常能力値設定用キーワードを括弧内に設定します。
  73.   #最大HPから運までの8種を順番に設定します。(変更不要です)
  74. #------------------------------------------------------------------------------
  75.   #空の配列を用意。
  76. #------------------------------------------------------------------------------
  77.   W1[0] = []
  78. #------------------------------------------------------------------------------
  79.   #★以下に設定★
  80. #------------------------------------------------------------------------------
  81.   W1[0].push("MHP")# 最大HP
  82.   W1[0].push("MMP")# 最大MP
  83.   W1[0].push("ATK")# 攻撃力
  84.   W1[0].push("DEF")# 防御力
  85.   W1[0].push("MAT")# 魔法力
  86.   W1[0].push("MDF")# 魔法防御
  87.   W1[0].push("AGI")# 敏捷性
  88.   W1[0].push("LUK")# 運
  89. #==============================================================================
  90.   #追加能力値設定用キーワードを括弧内に設定します。
  91.   #命中率からTP再生率までの10種を順番に設定します。(変更不要です)
  92. #------------------------------------------------------------------------------
  93.   #空の配列を用意。
  94. #------------------------------------------------------------------------------
  95.   W1[1] = []
  96. #------------------------------------------------------------------------------
  97.   #★以下に設定★
  98. #------------------------------------------------------------------------------
  99.   W1[1].push("HIT")# 命中率
  100.   W1[1].push("EVA")# 回避率
  101.   W1[1].push("CRI")# 会心率
  102.   W1[1].push("CEV")# 会心回避率
  103.   W1[1].push("MEV")# 魔法回避率
  104.   W1[1].push("MRF")# 魔法反射率
  105.   W1[1].push("CNT")# 反撃率
  106.   W1[1].push("HRG")# HP再生率
  107.   W1[1].push("MRG")# MP再生率
  108.   W1[1].push("TRG")# TP再生率
  109. #==============================================================================
  110.   #特殊能力値設定用キーワードを括弧内に設定します。
  111.   #狙われ率から経験値獲得率までの10種を順番に設定します。(変更不要です)
  112. #------------------------------------------------------------------------------
  113.   #空の配列を用意。
  114. #------------------------------------------------------------------------------
  115.   W1[2] = []
  116. #------------------------------------------------------------------------------
  117.   #★以下に設定★
  118. #------------------------------------------------------------------------------
  119.   W1[2].push("仇恨")# 狙われ率
  120.   W1[2].push("GRD")# 防御効果率
  121.   W1[2].push("REC")# 回復効果率
  122.   W1[2].push("PHA")# 薬の知識
  123.   W1[2].push("MCR")# MP消費率
  124.   W1[2].push("TCR")# TPチャージ率
  125.   W1[2].push("PDR")# 物理ダメージ率
  126.   W1[2].push("MDR")# 魔法ダメージ率
  127.   W1[2].push("FDR")# 床ダメージ率
  128.   W1[2].push("EXR")# 経験獲得率
  129. #==============================================================================
  130.   #弱体有効度設定用キーワードを括弧内に設定します。
  131.   #最大HPから運までの8種を順番に設定します。(変更不要です)
  132. #------------------------------------------------------------------------------
  133.   #空の配列を用意。
  134. #------------------------------------------------------------------------------
  135.   W1[3] = []
  136. #------------------------------------------------------------------------------
  137.   #★以下に設定★
  138. #------------------------------------------------------------------------------
  139.   W1[3].push("DBMHP")# 最大HP
  140.   W1[3].push("DBMMP")# 最大MP
  141.   W1[3].push("DBATK")# 攻撃力
  142.   W1[3].push("DBDEF")# 防御力
  143.   W1[3].push("DBMAT")# 魔法力
  144.   W1[3].push("DBMDF")# 魔法防御
  145.   W1[3].push("DBAGI")# 敏捷性
  146.   W1[3].push("DBLUK")# 運
  147. #==============================================================================
  148.   #戦闘中に限定して作用する通常能力値設定用キーワードを括弧内に設定します。
  149.   #最大HPから運までの8種を順番に設定します。(変更不要です)
  150. #------------------------------------------------------------------------------
  151.   #空の配列を用意。
  152. #------------------------------------------------------------------------------
  153.   W1[4] = []
  154. #------------------------------------------------------------------------------
  155.   #★以下に設定★
  156. #------------------------------------------------------------------------------
  157.   W1[4].push("BMHP")# 最大HP弱体
  158.   W1[4].push("BMMP")# 最大MP弱体
  159.   W1[4].push("BATK")# 攻撃力弱体
  160.   W1[4].push("BDEF")# 防御力弱体
  161.   W1[4].push("BMAT")# 魔法力弱体
  162.   W1[4].push("BMDF")# 魔法防御弱体
  163.   W1[4].push("BAGI")# 敏捷性弱体
  164.   W1[4].push("BLUK")# 運弱体
  165. #==============================================================================
  166.   #戦闘中に限定して作用する追加能力値設定用キーワードを括弧内に設定します。
  167.   #命中率からTP再生率までの10種を順番に設定します。(変更不要です)
  168. #------------------------------------------------------------------------------
  169.   #空の配列を用意。
  170. #------------------------------------------------------------------------------
  171.   W1[5] = []
  172. #------------------------------------------------------------------------------
  173.   #★以下に設定★
  174. #------------------------------------------------------------------------------
  175.   W1[5].push("BHIT")# 命中率
  176.   W1[5].push("BEVA")# 回避率
  177.   W1[5].push("BCRI")# 会心率
  178.   W1[5].push("BCEV")# 会心回避率
  179.   W1[5].push("BMEV")# 魔法回避率
  180.   W1[5].push("BMRF")# 魔法反射率
  181.   W1[5].push("BCNT")# 反撃率
  182.   W1[5].push("BHRG")# HP再生率
  183.   W1[5].push("BMRG")# MP再生率
  184.   W1[5].push("BTRG")# TP再生率
  185. #==============================================================================
  186.   #戦闘中に限定して作用する特殊能力値設定用キーワードを括弧内に設定します。
  187.   #狙われ率から経験値獲得率までの10種を順番に設定します。(変更不要です)
  188. #------------------------------------------------------------------------------
  189.   #空の配列を用意。
  190. #------------------------------------------------------------------------------
  191.   W1[6] = []
  192. #------------------------------------------------------------------------------
  193.   #★以下に設定★
  194. #------------------------------------------------------------------------------
  195.   W1[6].push("BTGR")# 狙われ率
  196.   W1[6].push("BGRD")# 防御効果率
  197.   W1[6].push("BREC")# 回復効果率
  198.   W1[6].push("BPHA")# 薬の知識
  199.   W1[6].push("BMCR")# MP消費率
  200.   W1[6].push("BTCR")# TPチャージ率
  201.   W1[6].push("BPDR")# 物理ダメージ率
  202.   W1[6].push("BMDR")# 魔法ダメージ率
  203.   W1[6].push("BFDR")# 床ダメージ率
  204.   W1[6].push("BEXR")# 経験獲得率
  205. #==============================================================================
  206.   #戦闘中に限定して作用する弱体有効度設定用キーワードを括弧内に設定します。
  207.   #最大HPから運までの8種を順番に設定します。(変更不要です)
  208. #------------------------------------------------------------------------------
  209.   #空の配列を用意。
  210. #------------------------------------------------------------------------------
  211.   W1[7] = []
  212. #------------------------------------------------------------------------------
  213.   #★以下に設定★
  214. #------------------------------------------------------------------------------
  215.   W1[7].push("BDBMHP")# 最大HP弱体
  216.   W1[7].push("BDBMMP")# 最大MP弱体
  217.   W1[7].push("BDBATK")# 攻撃力弱体
  218.   W1[7].push("BDBDEF")# 防御力弱体
  219.   W1[7].push("BDBMAT")# 魔法力弱体
  220.   W1[7].push("BDBMDF")# 魔法防御弱体
  221.   W1[7].push("BDBAGI")# 敏捷性弱体
  222.   W1[7].push("BDBLUK")# 運弱体
  223. #==============================================================================
  224.   #属性有効度/ステート有効度設定用キーワードを順番に設定します。
  225. #------------------------------------------------------------------------------
  226.   #空の配列を用意。
  227. #------------------------------------------------------------------------------
  228.   W2 = []
  229. #------------------------------------------------------------------------------
  230.   #★以下に設定★
  231. #------------------------------------------------------------------------------
  232.   W2[0] = "ELE" #属性有効度
  233.   W2[1] = "STA" #ステート有効度
  234.   W2[2] = "BELE"#属性有効度(戦闘中のみ)
  235.   W2[3] = "BSTA"#ステート有効度(戦闘中のみ)
  236. #==============================================================================
  237. end
  238. class Game_BattlerBase
  239.   #--------------------------------------------------------------------------
  240.   # 通常能力値
  241.   #--------------------------------------------------------------------------
  242.   alias param_plus_exppf param_plus
  243.   def param_plus(param_id)
  244.     #元の処理に追加データを加算。
  245.     param_plus_exppf(param_id) + ppf_param_plus(0,param_id)
  246.   end
  247.   #--------------------------------------------------------------------------
  248.   # 追加能力値
  249.   #--------------------------------------------------------------------------
  250.   alias xparam_exppf xparam
  251.   def xparam(param_id)
  252.     #元の処理に追加データを加算。
  253.     xparam_exppf(param_id) + ppf_param_plus(1,param_id)
  254.   end
  255.   #--------------------------------------------------------------------------
  256.   # 特殊能力値
  257.   #--------------------------------------------------------------------------
  258.   alias sparam_exppf sparam
  259.   def sparam(param_id)
  260.     #元の処理に追加データを加算。   
  261.  
  262.    if param_id == 0
  263.     sparam_exppf(param_id) * (1+ppf_param_plus(2,param_id))
  264.   else
  265.     sparam_exppf(param_id) + ppf_param_plus(2,param_id)
  266.   end
  267.  
  268.  
  269.   end
  270.   #--------------------------------------------------------------------------
  271.   # 弱体有効度
  272.   #--------------------------------------------------------------------------
  273.   alias debuff_rate_exppf debuff_rate
  274.   def debuff_rate(param_id)
  275.     #元の処理に追加データを加算。
  276.     debuff_rate_exppf(param_id) + ppf_param_plus(3,param_id)
  277.   end
  278.   #--------------------------------------------------------------------------
  279.   # 属性有効度
  280.   #--------------------------------------------------------------------------
  281.   alias element_rate_exppf element_rate
  282.   def element_rate(element_id)
  283.     #元の処理に追加データを加算。
  284.     if element_id == 27 or element_id == 24 or element_id == 25 #改 特定属性加算
  285.        if ppf_param_plus(4,element_id) == 0
  286.         element_rate_exppf(element_id) + ppf_param_plus(4,element_id) - 1
  287.       else
  288.         element_rate_exppf(element_id) * ppf_param_plus(4,element_id)
  289.       end
  290.  
  291.     else
  292.      element_rate_exppf(element_id) + ppf_param_plus(4,element_id)
  293.    end
  294.   end
  295.   #--------------------------------------------------------------------------
  296.   # ステート有効度
  297.   #--------------------------------------------------------------------------
  298.   alias state_rate_exppf state_rate
  299.   def state_rate(state_id)
  300.     #元の処理に追加データを加算。
  301.     state_rate_exppf(state_id) + ppf_param_plus(5,state_id)
  302.   end
  303.   #--------------------------------------------------------------------------
  304.   # 追加データ
  305.   #--------------------------------------------------------------------------
  306.   def ppf_param_plus(type,param_id)
  307.     data = 0
  308.     #各特徴のデータを加算。
  309.     feature_objects.each {|f|
  310.     case type
  311.     when 0..3
  312.       #テキストデータを取得。
  313.       text = f.ex_p_data[0 + type][param_id]
  314.       #テキストデータを取得出来た場合は分岐。
  315.       if text     
  316.         #基本追加データを計算。
  317.         sub_data = eval(f.ex_p_data[0 + type][param_id])
  318.         #データが正常な場合は加算。
  319.         data += sub_data if sub_data
  320.       end
  321.       #戦闘中でない場合は次の処理へ。
  322.       next unless $game_party.in_battle
  323.       #テキストデータを取得。
  324.       text = f.ex_p_data[4 + type][param_id]
  325.       #テキストデータを取得出来た場合は分岐。
  326.       if text
  327.         #戦闘中限定追加データを計算。
  328.         sub_data = eval(text)
  329.         #データが正常な場合は加算。
  330.         data += sub_data if sub_data
  331.       end
  332.     when 4..5
  333.       #テキストデータを取得。
  334.       text = f.ex_r_data[type - 4][param_id]
  335.       #テキストデータを取得出来た場合は分岐。
  336.       if text
  337.         #基本追加データを計算。
  338.         sub_data = eval(f.ex_r_data[type - 4][param_id])
  339.         #データが正常な場合は加算。
  340.         data += sub_data if sub_data
  341.       end
  342.       #戦闘中でない場合は次の処理へ。
  343.       next unless $game_party.in_battle
  344.       #テキストデータを取得。
  345.       text = f.ex_r_data[type - 2][param_id]
  346.       #テキストデータを取得出来た場合は分岐。
  347.       if text
  348.         #戦闘中限定追加データを計算。
  349.         sub_data = eval(text)
  350.         #データが正常な場合は加算。
  351.         data += sub_data if sub_data
  352.       end
  353.     end}
  354.     #基本能力値でない場合は100.0で割る。
  355.     data / (type == 0 ? 1 : 100.0)
  356.   end
  357. end
  358. class RPG::BaseItem
  359.   #--------------------------------------------------------------------------
  360.   # 追加データ(基本能力値/追加能力値/特殊能力値/弱体有効度用)
  361.   #--------------------------------------------------------------------------
  362.   def ex_p_data
  363.     #増加値設定が既に存在するならそれを返す。
  364.     return @ex_p_data if @ex_p_data != nil
  365.     #増加値設定用ハッシュを準備。
  366.     @ex_p_data = {}
  367.     #8回分処理。
  368.     8.times {|n|
  369.     #配列を生成。
  370.     @ex_p_data[n] = []
  371.     #設定項目内の文字列設定に応じてメモ欄からデータを取得。
  372.     VU_F::W1[n].each {|i| @ex_p_data[n].push(/<#{i}[::](\S+)>/ =~ @note ? $1.to_s : "0")}}
  373. # VU_F::W1[n].each {|i| @ex_p_data[n].push(/#{i}[::](\S+)/ =~ @note ? $1.to_s : "0")}}
  374.     #データを返す。
  375.     @ex_p_data
  376.   end
  377.   #--------------------------------------------------------------------------
  378.   # 追加データ(属性有効度/ステート有効度用)
  379.   #--------------------------------------------------------------------------
  380.   def ex_r_data
  381.     #増加値設定が既に存在するならそれを返す。
  382.     return @ex_r_data if @ex_r_data != nil
  383.     #増加値設定用ハッシュを準備。
  384.     @ex_r_data = {}
  385.     #4回分処理。
  386.     4.times {|n|
  387.     #配列を生成。
  388.     @ex_r_data[n] = {}
  389.     #行別に処理。
  390.     @note.each_line {|l|
  391.     #設定項目内の文字列設定に応じて各行からデータを取得。
  392.     data = /<#{VU_F::W2[n]}[::](\d+),(\S+)>/ =~ l ? [$1.to_i,$2.to_s] : nil
  393. # data = /#{VU_F::W2[n]}[:](\d+),(\S+)/ =~ l ? [$1.to_i,$2.to_s] : nil
  394.     #nilの場合は次の行へ。
  395.     next unless data
  396.     #データを登録。
  397.     @ex_r_data[n][data[0]] = data[1]}}
  398.     #データを返す。
  399.     @ex_r_data
  400.   end
  401. end
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2866
在线时间
446 小时
注册时间
2016-9-26
帖子
1223
2
发表于 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 文不对题 不知所云

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-1 11:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表