Project1

标题: 被动技能脚本问题 [打印本页]

作者: lkm55030    时间: 2013-9-15 21:24
标题: 被动技能脚本问题
本帖最后由 lkm55030 于 2013-9-17 13:07 编辑

RUBY 代码复制
  1. #========================================================
  2. #被动技能
  3. #------------------------------------------------- -----------------------------
  4. 一种特别的技能,学会后可以提高角色属性,遗忘后属性会降低。
  5. #==============================================================================
  6. # [更新记录]
  7. #    - 2012.02.16 By 我
  8. #      * 第一版
  9. #=================================================
  10. [使用方法]
  11. # - 将本脚本插入到MAIN以上
  12. #技能的备注栏用<paradd:0,100>就代表0号属性增加100
  13. #用<paramulti:0,1.1>就代表0号属性乘1.1倍。
  14. #此程序先处理paramulti的再处理paradd比如原属性是100
  15. #我有一个<paramulti:0,1.1><paradd:0,100>的技能,
  16. #就会把属性乘以1.1倍,得到110,再加100
  17. #得到210然后再处理之后的技能。
  18. =================================================
  19. #听说6R有个神马PS0,就闲着无聊蛋疼设置了一个。。。
  20. $_PS0 = {} if $_PS0 == nil  
  21. $_PS0["UnActiveSkill"] = 20120216
  22. module RPG
  23.   class Skill
  24.     def paramulti(parid)
  25.       note.split(/[\r\n]+/).each { |line|
  26.         case line
  27.         when /<(?:PARAMULTI|paramulti):[ ](\d+),(\d+)>/i
  28.           pult = $1.to_i  
  29.           if pult==parid
  30.           return $2.to_i
  31.         end
  32.         end
  33.       }
  34.       return 1
  35.     end
  36.     def paradd(parid)
  37.       note.split(/[\r\n]+/).each { |line|
  38.         case line
  39.         when /<(?:PARADD|paradd):[ ](\d+),(\d+)>/i
  40.           pult = $1.to_i
  41.           if pult==parid
  42.             return $2.to_i
  43.           end
  44.         end
  45.       }
  46.       return 0
  47.     end
  48.   end
  49. end
  50. class Game_Actor < Game_Battler
  51.   def skls
  52.     a=@skills
  53.     for n in added_skills
  54.       a.push(n)
  55.     end
  56.     return a
  57.   end
  58.   alias pbse param_base
  59.   def param_base(param_id)
  60.     a=pbse(param_id)
  61.     for i in skls
  62.       a*=$data_skills[i].paramulti(param_id)
  63.       a+=$data_skills[i].paradd(param_id)
  64.     end
  65.     return a
  66.   end
  67. end
  68. #==============================================================================
  69. #  結束
  70. #==============================================================================


我想用个被动技能可以增加10%的血量
<paramulti:0,1.1>
但是有用到小数点hp就不会改变

<paramulti:0,2>
整数的话就可以变2倍
用加的也一样只要有小数点hp就不会增加
问题出在哪?
作者: lkm55030    时间: 2013-9-16 14:04
改了还是一样有小数点hp不会改变
没有效
作者: 紫苍焰    时间: 2013-9-16 23:08
……
有没有哪里可以设置被动技能的生效条件?
比如说有这个被动技能的话半血时如何如何这种的……
作者: xTsukihime    时间: 2013-9-17 03:10
本帖最后由 xTsukihime 于 2013-9-17 03:46 编辑
我想用个被动技能可以增加10%的血量
<paramulti:0,1.1>
但是有用到小数点hp就不会改变


這是regex的問題
  1. when /<(?:PARAMULTI|paramulti):[ ](\d+),(\d+)>/i
复制代码
如果有小數點就不會match (不會翻譯,請幫忙)
可以自己看: http://rubular.com/r/HXiB9CLnFH

要解決可以改成
  1. <(?:PARAMULTI|paramulti):[ ](\d+),\s*(\d*\.?\d*)>
复制代码
http://rubular.com/r/HJowU7gf5o

下面paradd的regex也要改。
作者: xTsukihime    时间: 2013-9-17 09:46
oops.......
作者: lkm55030    时间: 2013-9-17 13:06
可以用了 謝謝大大




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1