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

Project1

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

[已经过期] 技能升级系统怎么做呀

[复制链接]

Lv2.观梦者

梦石
0
星屑
570
在线时间
172 小时
注册时间
2013-6-27
帖子
117
跳转到指定楼层
1
发表于 2016-11-11 23:18:30 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
那天,我打开脚本编辑器,想做出一个这样的技能升级效果:
比如有个技能叫治疗,那么数据库设置几个治疗分别叫治疗L1、治疗L2,以此类推,技能和装备多了一个后缀,但是游戏里并不会显示出那个后缀的
当检测到角色习得的技能中出现名字相同的技能时,将后缀名中数字较小的那个技能移除,利用神不知鬼不觉替换技能来达到一个技能升级的效果
本来直接事件替换就可以的,根本用不着整那么麻烦,不过主要是这边技能数量太多了点,每个都设定一遍才是真的麻烦
而且应该也可以用同样原理做一个装备升级系统,所以也是开始研究起脚本来了
然后,在打开脚本编辑器对着空白的脚本发了半天呆后,我终于想起自己根本不会脚本这件事
于是来发帖问了,求做这东西的思路嗯。

Lv1.梦旅人

路人党员

梦石
0
星屑
52
在线时间
2276 小时
注册时间
2010-12-30
帖子
3225
2
发表于 2016-11-12 01:27:34 | 只看该作者

  1. SKILL_LEVEL_PATTERN = /^(.*)\{(\d+)\}$/
  2. unless defined?(RPG::Skill::SKILL_LEVEL)
  3.   RPG::Skill = Class.new(RPG::Skill) do
  4.     superclass.constants.each{|c|const_set(c, superclass.const_get(c))}
  5.     const_set(:SKILL_LEVEL, true)
  6.     def name
  7.       if @name[SKILL_LEVEL_PATTERN]
  8.         return $1
  9.       else
  10.         return super
  11.       end
  12.     end
  13.     def level
  14.       if @name[SKILL_LEVEL_PATTERN]
  15.         return $2.to_i
  16.       else
  17.         return 0
  18.       end
  19.     end
  20.   end
  21.   Game_Actor = Class.new(Game_Actor) do
  22.     superclass.constants.each{|c|const_set(c, superclass.const_get(c))}
  23.     def skill_learn(id)
  24.       s = @skills.clone
  25.       super(id)
  26.       if @skills != s
  27.         s1 = $data_skills[id]
  28.         @skills.delete_if do |s|
  29.           s2 = $data_skills[s]
  30.           next s2.name == s1.name and s2.level < s1.level
  31.         end
  32.       end
  33.     end
  34.   end
  35. end
复制代码

把上面的脚本插入main之前
这样的话技能名就变成了:
  1. 技能名[等级]
复制代码

例如:
  1. 十字斩[1]
  2. 十字斩[2]
  3. 十字斩[3]
复制代码

而在游戏内只会显示为“十字斩”
然后同样的技能等级低的等级高的覆盖
如果懂得正则的话可以自行修改用来匹配名称和等级的正则

点评

改成 next (s2.name == s1.name and s2.level < s1.level)  发表于 2016-11-14 12:38
31行,next s2.name == s1.name and s2.level < s1.level  发表于 2016-11-12 22:31
哪行报错?  发表于 2016-11-12 22:17
等等,测试一下发现报错啊,咋回事  发表于 2016-11-12 21:57
哦哦,那么去研究正则去啦,万分感谢大大的帮助  发表于 2016-11-12 21:40
本人擅长XP,如果有脚本或者Ruby方面的问题欢迎发电邮到[email protected]咨询,本人很少检查电邮所以不一定会及时回复,本人不会直接出手解决问题只会提供一个方向,所以谢绝伸手党
回复 支持 2 反对 0

使用道具 举报

Lv2.观梦者

梦石
0
星屑
570
在线时间
172 小时
注册时间
2013-6-27
帖子
117
3
 楼主| 发表于 2016-11-14 13:13:50 | 只看该作者
英顺的马甲 发表于 2016-11-12 01:27
把上面的脚本插入main之前
这样的话技能名就变成了:

测试了一下,并没有效果……

未标题-1.png (34.78 KB, 下载次数: 17)

未标题-1.png

点评

啊啊,终于可以了,十分感谢  发表于 2016-11-27 12:43
好吧,是我的错,把24行的skill_learn改成learn_skill就行了 orz  发表于 2016-11-27 09:25
还是没有效果,虽然后缀去掉了,但是并没有覆盖呀  发表于 2016-11-26 16:55
正则那里记错了,所以应该是“名字{等级}”才对,抱歉 <(_ _)>  发表于 2016-11-21 20:08
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-13 18:28

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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