- 累计送礼:
 - 0 个
 
 - 累计收礼:
 - 0 个
 
 TA的每日心情  | 开心 2025-10-18 22:41 | 
|---|
 
  签到天数: 165 天 连续签到: 1 天 [LV.7]常住居民III 
  
管理员 
    
    
        - VIP
 
        - 6 
 
     
    
        - 卡币
 
        - 14829 
 
     
    
        - OK点
 
        - 16 
 
     
    
    - 推广点
 
    - 0 
 
     
	
    - 同能卷
 
    - 0 
 
     
  
	- 积分
 - 17954
 
 
  
 
  
 | 
 
突然有给技能增加等级的想法。技能等级,说白了就是让技能也具有经验和级别。做了一个简单的脚本,感觉上应该能个实现这个要求。 
主角越频繁使用一个技能,也就对这个技能越熟练,熟能生巧么,因此技能等级提高了……
 
 
以上是一年前写的东西,现在翻出来一看,写的这叫啥啊,果断返工重写。 
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在线咨询功能删除,谢谢。  |   
 
		
		
		 
 
 |