- 累计送礼:
- 0 个
- 累计收礼:
- 0 个
TA的每日心情 | 开心 昨天 18:01 |
---|
签到天数: 114 天 连续签到: 4 天 [LV.6]常住居民II

管理员
  
- VIP
- 6
- 卡币
- 10640
- OK点
- 16
- 推广点
- 0
- 同能卷
- 0
- 积分
- 13411


|
突然有给技能增加等级的想法。技能等级,说白了就是让技能也具有经验和级别。做了一个简单的脚本,感觉上应该能个实现这个要求。
主角越频繁使用一个技能,也就对这个技能越熟练,熟能生巧么,因此技能等级提高了……
以上是一年前写的东西,现在翻出来一看,写的这叫啥啊,果断返工重写。
2.0版本的东西和1.0的很不一样,使用方法也不同。修复了一些BUG,不过没有动什么界面上的东西(为了避免脚本冲突)
虽然如此,还是存在脚本冲突的可能。
有BUG欢迎报告,代码如下:
RUBY 代码 - #=============================================================================
- # 技能等级系统 Ver 2.01
- #-----------------------------------------------------------------------------
- # By:RyanBern
- #-----------------------------------------------------------------------------
- # 主要功能:
- # 开放了技能成长值,角色在连续使用同一个技能若干次后,该技能会变得更加强大
- # 值得一提的是,技能的等级和角色的等级没有关系,只和你使用它的频率相关,即
- # 使角色等级非常高,如果那个技能一直不用,那么技能不会升级。
- # 只有产生了效果的技能才会增加技能的熟练度(EXP),在这里产生效果是指:
- # 对敌人打出了不为0的伤害/产生状态变化/对同伴有加血作用/
- # 也就是说对着一个满血同伴一直加血的话是不会增加EXP的……
- # 技能只要满足升级条件立即升级(也就是说在战斗未完成就可以用升级之后的技能)
- # 如果在菜单中升级,则下次点击 C 键会立即使用新技能
- # 技能升级之后原有技能将会消失。
- #-----------------------------------------------------------------------------
- # 使用方法:
- # 在数据库中定义某技能升级后的技能,方法是在对应的技能说明中的任何位置写:
- # %sklv[升级后技能ID,升级所需EXP]
- # 例如:1号技能[治疗]可以升级到2号技能[治疗+],需要10个EXP
- # %sklv[2,10] = exp_next
- # 设置技能升级标志
- $game_temp.skill_level_up = true
- # 遗忘上一级别的技能
- forget_skill(skill_id)
- # 显示窗口
- unless$game_switches[RB::NO_SKILL_UP_WINDOW]
- Audio.se_play(RB::SKILL_UP_SE, 80, 100)ifRB::SKILL_UP_SE != ""
- show_skill_up_result(skill_id, skill_next)
- end
- # 学习新特技
- learn_skill(skill_next)
- end
- end
- end
- #--------------------------------------------------------------------------
- # ● 升级显示处理
- #--------------------------------------------------------------------------
- def show_skill_up_result(skill_id, skill_next)
- skill_learning_window = Window_SkillUpgrade.new(skill_id, skill_next)
- # 循环
- loopdo
- # 刷新游戏画面
- Graphics.update
- # 刷新输入信息
- Input.update
- # 按下C就关闭窗口
- if Input.trigger?(Input::C)
- skill_learning_window.visible = false
- break
- end
- end
- skill_learning_window.dispose
- end
- end
- class Window_SkillUpgrade < Window_Base
- def initialize(skill_id, new_skill_id)
- super(0, 0, 32, 96)
- self.contents = Bitmap.new(1, 1)
- self.visible = false
- self.back_opacity = 160
- # 防止被对话框遮住
- self.z = 9999
- @old_skill = $data_skills[skill_id]
- @new_skill = $data_skills[new_skill_id]
- refresh
- end
- #--------------------------------------------------------------------------
- # ● 刷新
- #--------------------------------------------------------------------------
- def refresh
- text1 = @old_skill.name + " 升级为:"
- text2 = @new_skill.name
- w1 = self.contents.text_size(text1).width
- w2 = self.contents.text_size(text2).width
- self.contents = Bitmap.new([w1, w2].max + 28, 64)
- self.width = [w1, w2].max + 28 + 32
- self.x = 320 - width / 2
- self.y = 240 - height / 2
- # 各描写
- self.contents.clear
- bitmap1 = RPG::Cache.icon(@old_skill.icon_name)
- bitmap2 = RPG::Cache.icon(@new_skill.icon_name)
- self.contents.blt(4, 4, bitmap1, Rect.new(0,0,24,24))
- self.contents.blt(4, 36, bitmap2, Rect.new(0,0,24,24))
- self.contents.draw_text(28, 0, contents.width - 28, 32, text1)
- self.contents.draw_text(28, 32, contents.width - 28, 32, text2)
- self.visible = true
- end
- end
- class Window_Skill < Window_Selectable
- def update_help
- ifself.skill == nil
- text = ""
- else
- text_append = self.skill.skill_next == 0 ? "" \
- : sprintf("Exp:%d/%d", @actor.skill_exp(self.skill.id), self.skill.exp_next)
- text = self.skill.description + text_append
- end
- @help_window.set_text(text)
- end
- end
- class Scene_Skill
- alias rb_update_target_20170530 update_target
- def update_target
- if$game_temp.skill_level_up
- $game_temp.skill_level_up = false
- @skill = $data_skills[@skill.skill_next] || @skill
- @skill_window.refresh
- end
- rb_update_target_20170530
- end
- end
复制代码
本帖来自P1论坛作者guoyq1988,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址: https://rpg.blue/forum.php?mod=viewthread&tid=332995 若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。 |
|