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

Project1

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

[已经解决] 被动技能脚本问题

[复制链接]

Lv1.梦旅人

梦石
0
星屑
1816
在线时间
21 小时
注册时间
2008-7-20
帖子
3
跳转到指定楼层
1
发表于 2013-9-15 21:24:57 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 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就不会增加
问题出在哪?

点评

把里面的 to_i 改为 to_f 再把第66行 return a 改为 return a.to_i  发表于 2013-9-15 22:57

Lv1.梦旅人

梦石
0
星屑
1816
在线时间
21 小时
注册时间
2008-7-20
帖子
3
6
 楼主| 发表于 2013-9-17 13:06:48 | 只看该作者
可以用了 謝謝大大

点评

请问被动技能脚本怎么改才能用啊?  发表于 2013-10-1 21:35
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
135 小时
注册时间
2013-6-10
帖子
29
5
发表于 2013-9-17 09:46:54 | 只看该作者
oops.......
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
135 小时
注册时间
2013-6-10
帖子
29
4
发表于 2013-9-17 03:10:49 | 只看该作者
本帖最后由 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也要改。

点评

The real Tsukihime? Or just a joke?  发表于 2013-9-17 07:05
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
120
在线时间
486 小时
注册时间
2007-5-27
帖子
807
3
发表于 2013-9-16 23:08:26 | 只看该作者
……
有没有哪里可以设置被动技能的生效条件?
比如说有这个被动技能的话半血时如何如何这种的……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
1816
在线时间
21 小时
注册时间
2008-7-20
帖子
3
2
 楼主| 发表于 2013-9-16 14:04:38 | 只看该作者
改了还是一样有小数点hp不会改变
没有效
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 18:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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