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

Project1

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

[已经解决] 我想要一些更奇怪增幅属性的状态QwQ

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1254
在线时间
70 小时
注册时间
2019-2-12
帖子
98
跳转到指定楼层
1
发表于 2020-7-10 21:36:50 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 小姐姐一个 于 2020-8-7 12:48 编辑

我又双来问问题了
浪费大佬时间了qwq
也就是获得一个状态 加20%/30%/40%物理攻击的 这个等级变化在角色1/11/18级时变化 敌人不能获得该状态












             话说在事件里一个一个调费时费力的

Lv5.捕梦者

梦石
0
星屑
33435
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

来自 7楼
发表于 2020-7-18 08:48:56 | 只看该作者
这里换了几句,做了一些调整,可以直接在 状态备注里 写 算式,以对应 不同状态增幅不同的情况。
  1. #==============================================================================
  2. # 状态自定义增幅角色属性
  3. #==============================================================================
  4. # 状态的备注里写标签:
  5. # 标签头 => <SA:id>  id 为 0 ~ 7 角色对应的 属性ID 。
  6. # 标签尾 => </SA:id> id 同上,与标签头的ID保持相同。
  7. # 标签头 到 标签尾 之间,皆是该属性的增幅算式。
  8. #==============================================================================
  9. module XdRs_SA
  10.   #--------------------------------------------------------------------------
  11.   def self.get_state_attribute_rate(actor, param_id, state_id)
  12.     return 0 if !$data_states[state_id]
  13.     $data_states[state_id].note.gsub(/<SA:(\d+)>/) do |tx|
  14.       tx.match(/<SA:(\d+)>/)
  15.       if $1.to_i == param_id
  16.         reg = Regexp.new(tx+"([\\s\\S]*)<\/SA:"+$1+">")
  17.         next if !$data_states[state_id].note.match(reg)
  18.         a = actor
  19.         p = $game_party
  20.         s = $game_switches
  21.         v = $game_variables
  22.         return eval($1) || 0
  23.       end
  24.     end
  25.     return 0
  26.   end
  27. end
  28. #==============================================================================
  29. class Game_BattlerBase
  30.   #--------------------------------------------------------------------------
  31.   def param_states_rate(param_id)
  32.     return 0
  33.   end
  34.   #--------------------------------------------------------------------------
  35.   alias xr_sa_param_rate param_rate
  36.   def param_rate(param_id)
  37.     return xr_sa_param_rate(param_id) + param_states_rate(param_id)
  38.   end
  39. end
  40. #==============================================================================
  41. class Game_Actor
  42.   #--------------------------------------------------------------------------
  43.   def param_states_rate(param_id)
  44.     arr = @states.map{|id| XdRs_SA.get_state_attribute_rate(self, param_id, id)}
  45.     return (eval(arr.join("+")) || 0) / 100.0
  46.   end
  47. end
  48. #==============================================================================
  49. # end
  50. #==============================================================================
复制代码


对角色攻击力增幅,每级 2% ,
可以这样


也可以这样


对角色攻击力增幅,每级 2% ,并且对角色魔攻增幅,每级 1.5%
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 1 反对 0

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
122
在线时间
15 小时
注册时间
2020-7-12
帖子
6
2
发表于 2020-7-13 21:16:44 | 只看该作者
本帖最后由 恋い慕う丶雪 于 2020-7-13 22:42 编辑

RUBY 代码复制
  1. class Game_Actor
  2.   attr_accessor :dynamic_st
  3.   ST = /<ST(.+)>/
  4.   alias :setup_0713 :setup
  5.   alias :level_up_0713 :level_up
  6.   def setup(actor_id)
  7.     setup_0713(actor_id)
  8.     if actor.note =~ ST
  9.       eval($1).each do |i|
  10.         if self.level == i[0]
  11.           self.add_state(i[1])
  12.           @dynamic_st = i[1]
  13.         end
  14.       end
  15.     end
  16.   end
  17.   def level_up
  18.     level_up_0713
  19.     if actor.note =~ ST
  20.       eval($1).each do |i|
  21.         if self.level == i[0]
  22.           self.erase_state(@dynamic_st)
  23.           self.add_state(i[1])
  24.           @dynamic_st = i[1]
  25.         end
  26.       end
  27.     end
  28.   end
  29. end


数据库角色的备注栏里写<ST[[角色等级,附加的状态ID]]>
当角色到达指定等级后会附加对应ID的状态,这个状态你就可以做成+n%物理攻击力
可以多设定几个等级段,中间用,隔开
比如 <ST[[1,21],[11,22],[18,23]]>
1级时拥有状态21号(物理攻击力+20%)
11级时拥有状态22号(物理攻击力+30%)
18级时拥有状态23号(物理攻击力+40%)
3个状态只会存在最终的那个,所以1级时物攻+20%,11级时+30%,18级时+40%

点评

啊...我不清楚,抱歉,我去看看(刚入坑还没熟悉好数据库TT)  发表于 2020-7-13 21:35
数据庫中,狀态的特性是乘法吧,3个状态同时存在=1*1.2*1.1*1.1=1.452吧?  发表于 2020-7-13 21:24

评分

参与人数 1+1 收起 理由
chanszeman1018 + 1 数据庫中,狀态的特性是乘法吧,3个状态同时.

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33435
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

3
发表于 2020-7-14 10:27:02 | 只看该作者
我来 pia 一个简单点的
  1. #==============================================================================
  2. # 状态增加角色属性百分比
  3. #==============================================================================
  4. module XdRs_SA
  5.   # 状态里面备注 <SA:id>  ,角色有这个状态时就按照下面对应的算式来增幅属性百分比。
  6.   # id 为 属性ID,分别对应:0:最大HP;1:最大MP;2:物理攻击;3:物理防御;
  7.   #                        4:魔法攻击;5:魔法防御;6:敏 捷 值:7:幸 运 值 。
  8.   # 算式里的变量 a ,为该角色自身,与技能算式差不多。
  9.   # 比如某个状态依照算式增幅 攻击力 ,就在这个状态里备注 <SA:2>
  10.   # 敌人无效。
  11.   Formula = {
  12.     0=>"",
  13.     1=>"",
  14.     2=>"[0,20,20,20,20,20,20,20,20,20,20,30,30,30,30,30,30,30][a.level] || 40",
  15.     3=>"",
  16.     4=>"",
  17.     5=>"",
  18.     6=>"",
  19.     7=>""
  20.   }
  21.   #--------------------------------------------------------------------------
  22.   def self.get_state_attribute_rate(actor, param_id, state_id)
  23.     state = $data_states[state_id]
  24.     return 0 if !state
  25.     state.note.gsub(/<SA:(\d+)>/) do |tx|
  26.       tx.match(/<SA:(\d+)>/)
  27.       if $1.to_i == param_id
  28.         a = actor
  29.         p = $game_party
  30.         s = $game_switches
  31.         v = $game_variables
  32.         return eval(Formula[param_id]) || 0
  33.       end
  34.     end
  35.     return 0
  36.   end
  37. end
  38. #==============================================================================
  39. class Game_BattlerBase
  40.   #--------------------------------------------------------------------------
  41.   def param_states_rate(param_id)
  42.     return 0
  43.   end
  44.   #--------------------------------------------------------------------------
  45.   alias xr_sa_param_rate param_rate
  46.   def param_rate(param_id)
  47.     return xr_sa_param_rate(param_id) + param_states_rate(param_id)
  48.   end
  49. end
  50. #==============================================================================
  51. class Game_Actor
  52.   #--------------------------------------------------------------------------
  53.   def param_states_rate(param_id)
  54.     arr = @states.map{|id| XdRs_SA.get_state_attribute_rate(self, param_id, id)}
  55.     return (eval(arr.join("+")) || 0) / 100.0
  56.   end
  57. end
  58. #==============================================================================
  59. # end
  60. #==============================================================================
复制代码

评分

参与人数 1+1 收起 理由
恋い慕う丶雪 + 1 精品文章

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1254
在线时间
70 小时
注册时间
2019-2-12
帖子
98
4
 楼主| 发表于 2020-7-16 11:44:53 | 只看该作者
本帖最后由 小姐姐一个 于 2020-7-16 17:34 编辑
芯☆淡茹水 发表于 2020-7-14 10:27
我来 pia 一个简单点的


这个[0,20,20,20,20,20,20,20,20,20,20,30,30,30,30,30,30,30][a.level] || 40是啥意思
能解释下不
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33435
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

5
发表于 2020-7-16 14:50:08 | 只看该作者
小姐姐一个 发表于 2020-7-16 11:44
这个[0,20,20,20,20,20,20,20,20,20,20,30,30,30,30,30,30,30][a.level] || 40是啥意思
能解释下不
是不 ...

角色攻击力(ID为 2)的计算算式,对应你的 “加20%/30%/40%物理攻击的 这个等级变化在角色1/11/18级”。
默认角色属性以 0~7 为ID分为 8 个,难道你还有其他的属性?!
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1254
在线时间
70 小时
注册时间
2019-2-12
帖子
98
6
 楼主| 发表于 2020-7-16 17:38:32 | 只看该作者
芯☆淡茹水 发表于 2020-7-16 14:50
角色攻击力(ID为 2)的计算算式,对应你的 “加20%/30%/40%物理攻击的 这个等级变化在角色1/11/18级”。 ...

额。。抱歉我可能打错字了 理解错意思啦
那这个问题就不问了
后面的内个|| 40 是什么,需要改吗

点评

你也可以改写成比如:每级增幅 2%,那就是 a.level * 2  发表于 2020-7-16 17:57
算式是你自己随意写的哈。示例的算式后面的 40 ,是按照你提问的要求,表示 18级及以上的增幅是 40% 。  发表于 2020-7-16 17:56
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1254
在线时间
70 小时
注册时间
2019-2-12
帖子
98
8
 楼主| 发表于 2020-8-7 12:45:59 | 只看该作者
芯☆淡茹水 发表于 2020-7-18 08:48
这里换了几句,做了一些调整,可以直接在 状态备注里 写 算式,以对应 不同状态增幅不同的情况。


可以吧这个增幅的百分比改为固定值吗
就比如吧这个每级增幅2%改成2,这样可以做出更奇怪的状态qwq
谢谢ouo


白票使我快乐qwq

点评

楼下已改  发表于 2020-8-7 17:46
你把算式就单单的写个 2 就行了啊!  发表于 2020-8-7 17:38
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33435
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

9
发表于 2020-8-7 17:45:31 | 只看该作者
  1. #==============================================================================
  2. # 状态自定义增幅角色属性
  3. #==============================================================================
  4. #状态的备注里写标签:
  5. #
  6. #1, 状态增幅角色属性百分比
  7. #  标签头 => <SA:id>  id 为 0 ~ 7 角色对应的 属性ID 。
  8. #  标签尾 => </SA:id> id 同上,与标签头的ID保持相同。
  9. #  标签头 到 标签尾 之间,皆是该属性的增幅算式。
  10. #
  11. #2,状态直接角色属性值
  12. #  将上面第一条的标签 <SA:id> 和 </SA:id> 分别换成 <SD:id> 和 </SD:id> 即可。
  13. #
  14. #==============================================================================
  15. module XdRs_SA
  16.   #--------------------------------------------------------------------------
  17.   def self.get_state_attribute_rate(actor, param_id, state_id)
  18.     return 0 if !$data_states[state_id]
  19.     $data_states[state_id].note.gsub(/<SA:(\d+)>/) do |tx|
  20.       tx.match(/<SA:(\d+)>/)
  21.       if $1.to_i == param_id
  22.         reg = Regexp.new(tx+"([\\s\\S]*)<\/SA:"+$1+">")
  23.         next if !$data_states[state_id].note.match(reg)
  24.         a = actor
  25.         p = $game_party
  26.         s = $game_switches
  27.         v = $game_variables
  28.         return eval($1) || 0
  29.       end
  30.     end
  31.     return 0
  32.   end
  33.   #--------------------------------------------------------------------------
  34.   def self.get_state_attribute_plus(actor, param_id, state_id)
  35.     return 0 if !$data_states[state_id]
  36.     $data_states[state_id].note.gsub(/<SD:(\d+)>/) do |tx|
  37.       tx.match(/<SD:(\d+)>/)
  38.       if $1.to_i == param_id
  39.         reg = Regexp.new(tx+"([\\s\\S]*)<\/SD:"+$1+">")
  40.         next if !$data_states[state_id].note.match(reg)
  41.         a = actor
  42.         p = $game_party
  43.         s = $game_switches
  44.         v = $game_variables
  45.         return eval($1) || 0
  46.       end
  47.     end
  48.     return 0
  49.   end
  50. end
  51. #==============================================================================
  52. class Game_BattlerBase
  53.   #--------------------------------------------------------------------------
  54.   def param_states_plus(param_id)
  55.     return 0
  56.   end
  57.   #--------------------------------------------------------------------------
  58.   def param_states_rate(param_id)
  59.     return 0
  60.   end
  61.   #--------------------------------------------------------------------------
  62.   alias xr_sa_param_plus param_plus
  63.   def param_plus(param_id)
  64.     return xr_sa_param_plus(param_id) + param_states_plus(param_id)
  65.   end
  66.   #--------------------------------------------------------------------------
  67.   alias xr_sa_param_rate param_rate
  68.   def param_rate(param_id)
  69.     return xr_sa_param_rate(param_id) + param_states_rate(param_id)
  70.   end
  71. end
  72. #==============================================================================
  73. class Game_Actor
  74.   #--------------------------------------------------------------------------
  75.   def param_states_plus(param_id)
  76.     arr = @states.map{|id| XdRs_SA.get_state_attribute_plus(self, param_id, id)}
  77.     return eval(arr.join("+")) || 0
  78.   end
  79.   #--------------------------------------------------------------------------
  80.   def param_states_rate(param_id)
  81.     arr = @states.map{|id| XdRs_SA.get_state_attribute_rate(self, param_id, id)}
  82.     return (eval(arr.join("+")) || 0) / 100.0
  83.   end
  84. end
  85. #==============================================================================
  86. # end
  87. #==============================================================================
复制代码
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-16 04:35

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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