查看: 22942|回复: 39

[RMVA发布] [15.02.11]技能加点|被动技能|状态等级|属性强化|暴击伤害

[复制链接]
梦石
0
星屑
55
在线时间
185 小时
注册时间
2014-9-4
回帖
80
发表于 2014-11-22 18:16:00 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 希忆 于 2015-2-11 16:39 编辑

如题技能加点|被动技能|状态等级|属性强化|暴击伤害。我感觉我要超神了。
大坑注意



由于牵扯到make_damage_value,冲突可能,注意适配(话说一直有改那方法吧)

xy19.png

15.02.11 test.rar (1.52 MB, 下载次数: 1917)
更新内容:修正bug:注释属性修正对敌人无效的bug,附件更新,感谢 @黑曜秘法 的汇报
~顺便大家这两天祝小年快乐,预祝春节快乐~
小修:添加一小段。
  1. #属性伤害修正。
  2.   def element_rate(element_id)
  3.     super(element_id) * state_element_rate(element_id)
  4.   end
复制代码
添加位置:
捕获.PNG

[fold=其余历史更新和bug修正]
15.01.14
更新内容:前置技能解放,添加魔法盾属性,修正bug,附件更新
1.前置技能任意写,兼容老版本写法,可以直接写任意个<former X,Y>(但是需要换行)
<former1 111,2>
<former2 112,3>(老版本写法兼容)
<former 113,3>
<former 114,3>(新的统一写法)
2.添加damage_convert (魔法盾啦),状态或技能可用,受伤时将一定比例的hp伤害1:1转给mp,多个效果存在取最大值,敌人无效。
原来是100点伤害,比例算出0.25,就是变成扣75hp25mp;若mp只剩12,扣88hp12mp
一样通过公式计算出比例,低等级魔法盾比例低,保护力低,高等级则更安全,但是耗蓝增加,sp也紧张,加多少合适呢。
详见范例180技能,35状态,范例主动(状态型)比例是1级0.1成长0.04,10级满级0.46,被动技能型是每级0.05,5级满,仅供参考。
3.修复bug
首先是自己发现的粗心bug:注释状态对敌人无效,简单地修复了。
然后是感谢 @冰风时瞬 的汇报
状态对SPARAM的提升没有效果,SPARAM相关注释的错误(8是地形伤害9是经验比率),我也是太不小心了。。。
4.无关的范例附带其余脚本的修改:-赠品的售后-
施工中改版Window_Status:终于画出了像样的雷达图,当然依旧施工中,可参考,已经在准备图片化数字什么的
Window_ActorCommand改进:【new】攻击,防御,无法使用,技能类被禁止时无法选择时不出现
181号技能光之守护相关:牵扯到makedamagevalue的调整。
14.12.13:再次修正粗心bug,附件更新。
修复bug:属性强化无效,感谢@xxyy116497
附件更新。
14.12.11:一起床就看到有报bug,好在是小bug,很好修,立马动手。
修复bug:敌人对我方施加异常状态时,出现的nomethod for nil:class错误。感谢@侠客熊
附件更新。
[/fold]


目录.PNG
请叫我
[fold=备注狂魔]
备注1.PNG 备注2.PNG 备注3.PNG
[/fold]
[fold=公式狂魔]
公式.PNG
[/fold]
[fold=正则狂魔]
正则.PNG
[/fold]
各种狂魔



主要功能:
技能升级加点(应该算是仿dnf)这个是初衷,后来逐渐扩展
被动技能效果:包括增加固定普通能力,比率增加普通能力,增加添加能力,增加特殊能力,属性抗性和属性强化,暴击伤害。技能升级属性加(或减)得更多。
状态等级:状态也能有等级,还影响着它加属性的多少。
属性强化和暴击伤害也可在 角色|职业|装备 备注中按照要求添加。

听起来是不是好像很厉害的样子,但是做完了我才发现这是个大坑啊。
设定起来要花太多太多时间,适合节奏较慢的制作者一点一点慢慢悠悠地吧所有技能填完坑,而且数值平衡可能一不小心就又坑。
不过把sp点限制一下倒是不错的选择,提升可玩性吧,比如元素师,是单系单堆叼炸天呢,还是全面发展各种前置适应不同属性怪物好呢。
或者把洗点道具整成比较常见的,每打一种boss洗一次针对加点。不过,首先,你得把技能设置好。
反正不管怎么说,技能的设置成了个大工程,6R希忆或成最大输家~。


[fold=先来看看使用说明书吧。]
  1. #encoding:utf-8
  2. #===========================================================================
  3. #          RMVA 豪华型技能加点|技能被动效果:   v1.05
  4. #                       By希忆 66rpg.com
  5. #                                                 转载或修改请保留此类信息
  6. #===========================================================================
  7. #     升级获得技能点用以学习和提升技能等级,增加技能威力和技能被动效果强度。
  8. #     状态也可以与技能等级绑定,并根据等级不同获得不同程度的加成效果[类dnf]
  9. #
  10. #     技能的备注:
  11. #     使用场合为"无法使用" 的技能均默认为被动技能,不在战斗时出现。
  12. #     <param_add 0,11>
  13. #         0: 被动提升的属性编号『0:mhp 1:mmp 2:atk 3:def 4:mat 5:mdf 6:agi 7:luk』
  14. #        11:提升量的计算公式编号,在模块SkillLevel的self.formula方法中定义
  15. #           可根据需要扩展 when 8 when 9 什么的
  16. #           这个是按加法提升。和下面那个一起写就是先加后乘。
  17. #     <param_rate 0,31>
  18. #         0:被动提升的属性编号『0:mhp 1:mmp 2:atk 3:def 4:mat 5:mdf 6:agi 7:luk』
  19. #        31:提升量的计算公式编号,在模块SkillLevel的self.formula方法中定义
  20. #           这个是按乘法提升。
  21. #     <xparam 0,21>
  22. #         0:被动提升的属性编号『0:物理命中 1:物理闪避 2:必杀机率 3:必杀闪避
  23. #                              4:魔法闪避 5:魔法反射 6:物理反击 7:体力再生
  24. #                              8:魔力再生 9:TP再生 』
  25. #        21:提升量的计算公式编号,在模块SkillLevel的self.formula方法中定义
  26. #           这个是按加法提升。
  27. #     <sparam 0,31>
  28. #         0:被动提升的属性编号『0:受击几率 1:防御比率 2:恢复效果 3:药理知识
  29. #                              4:魔力消耗 5:特技补充 6:所受物理伤害
  30. #                              7:所受魔法伤害  8:地形伤害 9:获得经验值比率 』
  31. #                              
  32. #        31:提升量的计算公式编号,在模块SkillLevel的self.formula方法中定义
  33. #           这个是按乘法提升。
  34. #     <critical_rate 33>
  35. #        33:被动技能提升暴击伤害的公式,在模块SkillLevel的self.formula方法中定义
  36. #            按照乘法叠加提升【每个角色职业都有默认的初始值为1.5】
  37. #     <element_rate 3,31>
  38. #         3:被动技能属性修正的属性id
  39. #        31:被动技能属性修正的公式,模块SkillLevel的self.formula方法中定义
  40. #            按照乘法叠加减少或增加。
  41. #     <element_damage 3,31>
  42. #        31:被动技能提升属性伤害的公式,提升属性伤害(就是属性强化啦)
  43. #            模块SkillLevel的self.formula方法中定义
  44. #            按照乘法叠加减少或增加。
  45. #     <mp_type 111>
  46. #       111:主动技能的使用时的mp消耗随着等级变化的公式编号,
  47. #            在模块SkillLevel的self.formula方法中定义
  48. #     <damage_convert 51>
  49. #        被动获得hp伤害一部分转移给mp的效果,同时有两个以上这种技能或状态则取最大
  50. #        51:在模块SkillLevel的self.formula方法中定义的计算转换比率的公式编号
  51. #     <sp_cost 5>        
  52. #        学习升级一级此技能需要5sp
  53. #     <max_learn 10>
  54. #        技能等级学习上限10级(加点的等级上限)
  55. #        在技能加点栏中技能的基础等级只能加到10,
  56. #        但是可以通过装备加技能的装备来提升到11,12以上
  57. #     <max_level 15>
  58. #        技能等级堆积上限15级(包括了装备增加的堆积上限),
  59. #        就是说你装备了一堆加技能等级的装备,但这个技能到了15级就没法再加上去。
  60. #     <type 2>
  61. #        主动技能的技能威力成长类型为第二种(平均增长型)也可以在模块中自己定义
  62. #        增长类型 self.formula 方法中添加 when 4 when 5 什么的,然后写一通公式
  63. #        这里当然是乘法计算了
  64. #     <learn 10,4>  
  65. #        从10级开始可以学习1级技能,14级可以学到2级,18级可学3级技能
  66. #
  67. #前置技能的设置:『学习该技能需要先学习其它的技能到若干级』
  68. #     <former 31,5>
  69. #     <former 33,1>
  70. #        需要等级5的31号技能和等级1的33号技能作为前置技能
  71. #        前置一行只能设一个,同时设多个请回车换行
  72. #========前置技能可设可不设,同时设,无上限,搞出个复杂技能树愉快地玩耍吧
  73. #
  74. #     <link_skill 24>
  75. #        这个技能链接上24号技能,此技能的技能等级将强制等于24号技能的技能等级
  76. #       (无视其它限制,装备增强无效)
  77. #        小心别连着连着连成循环了,这是给一些特殊的“马甲技能-实效技能”对应用的。
  78. #        一般情况下别用。
  79. #      <lock_level 4>
  80. #         这个技能的技能等级将强制等于4,优先度高于link_skill
  81. #         主要用于装备附带的技能等特殊情况下的技能
  82. #         还有敌方使用的技能,如果需要不为1的话可以这样设置。
  83. #
  84. #     状态的备注
  85. #     <param_add 0,11><param_rate 0,31><xparam 0,21><sparam 0,31>
  86. #     <critical_rate 33><element_rate 3,31><element_damage 3,31>
  87. #     <damage_convert 51>
  88. #     同技能,只不过是变成状态附加时生效并和状态等级相关
  89. #     <link_skill 122>如果状态有明确的来源的话状态的等级将等于
  90. #     来源的122号技能的等级。
  91. #     <chance 43>主要用于debuff,额外的附加几率修正的公式编号,老规矩
  92. #
  93. #     装备的备注:
  94. #     <add_skill 10,3>    10号技能等级+3
  95. #    (以下下备注条目也可以备注在角色,职业上,可以为负数(只有以下两个可以))
  96. #     <critical_rate 10>   必杀伤害 +10%  多个装备将和职业,角色基础等乘法叠加
  97. #                                       基础暴击伤害为1.5倍,提升10%就是1.65倍。
  98. #     <element_damage 3,30> 装备者对敌人使用3号属性(炎属性)的攻击造成的伤害+30%
  99. #================================================
  100. #     职业的备注:
  101. #     <auto_sp>  自动升级技能的职业【不设sp,啥技能都无视前置随着等级能有多高就多高】
  102. #
  103. #
  104. # 完工了??
  105. #===========================================================================
复制代码
[/fold]

来看看预览?加点界面兼容544的但有点挤,截图544的640的都有(分辨率)
[fold=首先是普通的职业]
普通的职业
加点界面的是基础等级,没算装备增加,技能使用界面是算上装备增加的真·技能等级
544天雷.PNG
640天雷.PNG
前置.PNG
加点.PNG
[/fold]
[fold=自动加点的职业就是好,全部技能直接到达现在等级说能到的最高级]
自动加点的职业就是好,全部技能直接到达现在等级说能到的最高级
加点界面的是基础等级,没算装备增加,技能使用界面是算上装备增加的真·技能等级
544元素紊乱.PNG
技能界面.PNG
战斗技能.PNG
[/fold]


使用场合为"无法使用" 的技能均默认为被动技能,不在战斗时出现。
请注意范例中145以下的技能备注的写法,一些装备的备注和27号状态的备注
我个人还是很喜欢里面天雷这个技能的,模仿dnf元素师的天雷,站桩霹雷,受伤害增加,装备改变霹雷次数什么的,可玩性草鸡好。
剩下的技能有些暂时没怎么用心做。。。普普通通中规中矩就是了。


范例附赠剧情。80级的老前辈带你游山玩水,好吧其实剧情到出图书馆,根本不算剧情,只是对话。
所谓的范例还有附带一些其它的小东西,默认640,想恢复544可以在main加#,不知道为什么就行觉得544不爽。
下边的脚本大都是6R上大触们的杰作,都有作者和出处,有的有修改,没有出处的就是我自己瞎整的。
包括写到一半的Window_Status,和一些零零散散的东西

话说原理其实很简单,开场学习职业全技能,在Game_Actor里新建两哈希表@skill_level @state_level 分别是id => 等级,初值为零。
基础等级为零的技能默认没学,不予添加到windowbattleskill等技能列表里,只有在加点页面才能看到。
敌人的技能,装备、状态附加的技能全部用lock_level 和 link_skill 锁定。
然后就是通过正则,找“公式id”,根据“公式id”在模块的方法里面找公式,然后带入等级,算出结果。
最后的就是查查游戏系统类,七算八算,全是比较基本的。

没怎么正式地学过脚本,可能由于水平所限,很多地方脚本的写法不算很好,不过能正常运作就行。
于是这玩意儿说起来不难,但是由于内容还是有那么多的,还是花费了一定时间的。
虽说脚本是写完了,我已经排除了一些写脚本时卖萌留下的bug,内容太多测试起来可太麻烦了,不可能面面俱到,
于是大家闲的没事的可以倒腾倒腾。欢迎汇报bug相关,我会 找时间 一点一点地 慢慢地 修复的
~最后感谢所有汇报bug和帮助我完善脚本的人~

才没有反白呢!
==============================   

评分

参与人数 2星屑 +60 收起 理由
火烧兔子 + 20 赞!!!
chd114 + 40 前置技能处理好评

查看全部评分

…あたしは天

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

开拓者贵宾

发表于 2014-11-22 18:21:48 | 显示全部楼层
本帖最后由 taroxd 于 2014-11-22 18:24 编辑

关于 former 的设置,其实你可以用 String#scan 方法

顺便打点广告:
https://rpg.blue/thread-365969-1-1.html
https://rpg.blue/thread-365968-1-1.html

点评

好吧,刚刚在搜索也发现了,汗||。  发表于 2014-11-22 18:52
不,scan 就是用正则……  发表于 2014-11-22 18:46
首先,膜拜元编程大触,直接字符串处理倒是没想到,脑子里进了正则。我这个被动技能可是可以加点提升的哦,虽然设置起来很麻烦(自满ing)  发表于 2014-11-22 18:30
回复

使用道具 举报

梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

发表于 2014-11-22 21:32:38 | 显示全部楼层
伤害公式能直接写level吗?
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

梦石
0
星屑
55
在线时间
185 小时
注册时间
2014-9-4
回帖
80
 楼主| 发表于 2014-11-22 23:04:21 | 显示全部楼层
chd114 发表于 2014-11-22 21:32
伤害公式能直接写level吗?

技能那里的伤害公式正常写,范例里没有特别异常的公式,
技能备注里写<type 2>计算结果就会乘上模块里formula方法中when 2对应的
return 【1.00 + 0.15*(level-1)】,其中的level是便技能的等级【a.skill_level(item.id)】
,(其实默认就是type 2)所有主动被动技能效果随技能等级变化的成长都是写在模块里的。
如果要调用某个角色某个技能的等级:
$game_actors[1].skill_level(skill_id)
技能公式里调用就a.skill_level(skill_id)
只要formula里写好成长公式,除非是增强特定技能威力的被动技能,否则不需要在公式里出现。
范例里的脚本我写了一些注释,你可以研究下。
回复

使用道具 举报

梦石
0
星屑
9292
在线时间
2504 小时
注册时间
2011-5-20
回帖
14521

开拓者

发表于 2014-11-23 09:35:11 | 显示全部楼层
希忆 发表于 2014-11-22 06:04
技能那里的伤害公式正常写,范例里没有特别异常的公式,
技能备注里写计算结果就会乘上模块里formula方法 ...

那就有点可惜了0.0我的技能几乎都不是用固定数值算的伤害···能把level直接写在技能那的伤害公式就好了···那敌人怎么办呢?敌人用的技能,比如火魔法师用的火球术是LV1,火焰精英用的是火球术LV2这个貌似不能用一个技能做了?

点评

太长了一行写不下貌似也不行吧···直接写在一个module里面不就好了···反正一个技能的升级前置又不可能不停地换···  发表于 2014-11-28 21:08
主要是正则匹配还不太懂。同时整多个前置就不知道怎么匹配了,下一个版本可能会按楼上大触版主的建议重做这部分,前提是我得把正则搞懂了.  发表于 2014-11-23 15:23
升级前置你弄得好麻烦···直接former [X,Y](需要X号技能Y级)数组不行吗···  发表于 2014-11-23 14:25
·····那我看看你一共用了多少个设置吧···  发表于 2014-11-23 11:37
想设计好技能太麻烦了,备注狂魔我自己都记不清,数字平衡也需要长时间测试,反正大坑坑新手吧,最后感谢支持。  发表于 2014-11-23 11:34
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复

使用道具 举报

梦石
0
星屑
939
在线时间
409 小时
注册时间
2008-1-1
回帖
81
发表于 2014-11-24 17:04:44 | 显示全部楼层
請教一下
我本身有自訂選單的腳本
是呼叫腳本式的
有辦法用呼叫腳本的方式叫出這個選單嗎

点评

相关部分在场景相关最后(145行),可自行修改,调用的是 SceneManager.call(Scene_AddSkill)  发表于 2014-11-24 19:12
回复

使用道具 举报

梦石
0
星屑
939
在线时间
409 小时
注册时间
2008-1-1
回帖
81
发表于 2014-11-25 16:38:28 | 显示全部楼层
本帖最后由 diablo2x 于 2014-11-25 17:17 编辑

剛剛去測試了下戰鬥
一般戰鬥技能沒出問題
結果在選擇防禦的時候報錯跳出
錯誤訊息是系統類那邊的438行
ArgumentError Occurred.
wrong number of argument(2 for 1)

看來跟某些腳本還是有衝突的樣子orz
-----------------------------------------------
結果把樓主您的腳本調換到最下面就沒有報錯了
看來是不能放在最上面啊...

点评

哦哦,我再試試看  发表于 2014-11-26 07:33
眼拙。選擇防禦没看到,那就确定是item_effect_add_state_normal。可以尝试全局搜索查看是否有插件脚本重定义这玩意儿。  发表于 2014-11-25 21:26
摆在前面的插件脚本应该重定义了make_damage_value或item_effect_add_state_attack|item_effect_add_state_normal,光这样可能还会有一些问题(摆在前面的一些脚本失效等)  发表于 2014-11-25 21:20
冲突方法可能是apply_critical或是add_state  发表于 2014-11-25 21:13
回复

使用道具 举报

梦石
0
星屑
939
在线时间
409 小时
注册时间
2008-1-1
回帖
81
发表于 2014-12-2 23:05:01 | 显示全部楼层
忘了問
element_rate這個指令的作用是?
受到特定屬性傷害的減傷或增傷嗎?

点评

嗯,是的,收到属性伤害的修正  发表于 2014-12-3 13:40
回复

使用道具 举报

梦石
0
星屑
118
在线时间
197 小时
注册时间
2011-1-23
回帖
28
发表于 2014-12-8 15:13:33 | 显示全部楼层
可以把某个技能的等级设置成事件的条件吗?

点评

不能,状态绑定技能是指状态的等级等于该状态来源的该技能等级(来源是敌人或是事件附加状态则取1),因此1个状态只能有1个link生效(第一个)  发表于 2015-1-9 18:46
感谢,再问一下,一个状态能link多个技能吗?  发表于 2015-1-8 22:54
谢谢  发表于 2014-12-10 20:56
条件分歧->脚本 $game_actors[3].skill_level(196) >= 5 #3号角色196号技能等级大于等于5(包括装备的提升)  发表于 2014-12-8 19:11
回复

使用道具 举报

梦石
0
星屑
7392
在线时间
65 小时
注册时间
2012-7-12
回帖
1
发表于 2014-12-10 22:00:21 | 显示全部楼层
膜拜中......
测试时敌人对我方施加异常状态时,出现错误
脚本“游戏系统类”第354行:发生NoMethodError。
undefined method ’lock_level‘ for nil:Class

在两个工程中都测试过,出现同样问题。
小白新手,啥都不懂,请教下是什么问题?
多谢了

点评

小bug,感谢汇报,已修复  发表于 2014-12-11 06:40
回复 0 1

使用道具 举报

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

本版积分规则

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

在本版发帖返回顶部