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

Project1

 找回密码
 注册会员
搜索

技能升级系统怎么做呀

查看数: 2019 | 评论数: 2 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2016-11-11 23:18

正文摘要:

那天,我打开脚本编辑器,想做出一个这样的技能升级效果: 比如有个技能叫治疗,那么数据库设置几个治疗分别叫治疗L1、治疗L2,以此类推,技能和装备多了一个后缀,但是游戏里并不会显示出那个后缀的 当检测到角色习 ...

回复

英顺的马甲 发表于 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
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-11-14 16:22

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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