魔塔吧 关注:66,637贴子:2,176,721
  • 10回复贴,共1

【教程】成就系统速成

取消只看楼主收藏回复

九命的成就系统这几天真火。我来教大家做各种版本的成就系统。欢迎插楼,更新很快。


1楼2012-08-20 18:03回复
    首先,剖析九命的成就系统。
    九命的成就系统实质上就是一个场景内有一个选择项两个窗口
    名词解释:
    场景:大家打开脚本编辑器,开头是“Scene”的就叫场景。像标题画面,存档,读档画面,就是场景。场景内可以播放音乐,放置窗口等等。
    窗口:大家打开脚本编辑器,开头是“Window”的就叫窗口。窗口是专门用来显示一些东西的。像菜单中的版本显示部分就是个窗口。其实游戏中的状态栏也是个窗口,只不过隐藏了边框而已。
    选择项:我想不用解释了。标题画面的选项就是选择项。


    11楼2012-08-20 18:08
    回复
      2025-09-04 06:06:11
      广告
      不感兴趣
      开通SVIP免广告
      首先,我发一个带自动换BGM,选择项的空场景脚本供大家备用。
      #==============================================================================
      # ■ Scene_Achievement
      #------------------------------------------------------------------------------
      #  简易成就系统
      #==============================================================================
      #呼出此场景的方法:$scene = Scene_Achievement.new
      class Scene_Achievement
      #--------------------------------------------------------------------------
      # ● 初始化对像
      # menu_index : 命令光标的初期位置
      #--------------------------------------------------------------------------
      def initialize(menu_index = 0)
      @menu_index = menu_index
      Audio.bgm_play("Audio/BGM/XX", 100, 100) #更改BGM,将XX换成BGM文件夹下的音乐
      end
      #--------------------------------------------------------------------------
      # ● 主处理
      #--------------------------------------------------------------------------
      def main
      # 生成命令窗口
      s1 = ""
      @command_window = Window_Command.new(180, [s1])
      @command_window.index = @menu_index
      # 执行过渡
      Graphics.transition
      # 主循环
      loop do
      # 刷新游戏画面
      Graphics.update
      # 刷新输入信息
      Input.update
      # 刷新画面
      update
      # 如果切换画面就中断循环
      if $scene != self
      break
      end
      end
      # 准备过渡
      Graphics.freeze
      # 释放窗口
      @command_window.dispose
      end
      #--------------------------------------------------------------------------
      # ● 刷新画面
      #--------------------------------------------------------------------------
      def update
      @command_window.update
      # 按下 B 键的情况下
      if Input.trigger?(Input::B)
      # 演奏取消 SE
      $game_system.se_play($data_system.cancel_se)
      # 切换的地图画面
      $scene = Scene_Title.new #按下取消键返回标题画面,如果想返回游戏就换成$scene = Scene_Map.new
      return
      end
      # 按下 C 键的情况下
      if Input.trigger?(Input::C)
      # 演奏确定 SE
      $game_system.se_play($data_system.decision_se)
      # 命令窗口的光标位置分支
      case @command_window.index
      when 0
      #此处填写命令
      end
      # 主循环
      loop do
      # 刷新游戏画面
      Graphics.update
      # 刷新输入信息
      Input.update
      # 刷新画面
      update
      # 如果切换画面就中断循环
      if $scene != self
      break
      end
      end
      # 准备过渡
      Graphics.freeze
      # 释放窗口
      end
      end
      end


      19楼2012-08-20 18:21
      收起回复
        首先,我们先学做利用选择项显示窗口的成就系统。也就是与九命那个同原理。
        在这一部分写完后,我会放出完整的脚本供大家使用,当然,如果学会此部分的话你可以利用刚才的空场景脚本自制一个成就系统。


        24楼2012-08-20 18:25
        回复
          这是分类型成就需要用到的。比如“技术成就”“成长成就”等等。我们就按做这两个类别为例。
          想实现上述内容,我们可以做2个窗口,一个用来显示技术成就,一个用来显示“成长成就”。
          我先发一个空白窗口的脚本供备用。
          #==============================================================================
          # ■ Window_Chuangkoua
          #------------------------------------------------------------------------------
          #  一个空白的窗口。
          #============================================================================== class Window_Chuangkoua < Window_Base
          #--------------------------------------------------------------------------
          # ● 初始化窗口
          #--------------------------------------------------------------------------
          def initialize
          super(0, 0, 160, 64)#调整宽与高
          self.contents = Bitmap.new(width - 32, height - 32)
          refresh
          end
          #--------------------------------------------------------------------------
          # ● 刷新
          #--------------------------------------------------------------------------
          def refresh
          self.contents.clear
          #从此处开始插入您的内容。
          end
          end


          28楼2012-08-20 18:34
          收起回复
            请原谅我的不负责任。我拿了我写的一个给一个RPG游戏写的成就系统,结果与魔塔样板冲突。我正在努力解决问题。再次请大家原谅我
            要么,我先给大家一个成就系统大家试试看?
            http://achievement.ys168.com/
            先放一个比较华丽的成就系统。
            如果大家不会做成就图,我很乐意帮大家做。
            预览图


            37楼2012-08-20 22:33
            收起回复
              下面,我会为大家详细讲解这款成就界面的原理


              41楼2012-08-21 08:15
              回复
                这个成就系统制作流程:
                复制空白窗口,去掉B键返回菜单,将选择项改为返回菜单,调整选择项位置大小,再复制一个空白窗口,将大小调为640*480,在场景的0,0位置显示。在释放列表里添加上这个窗口。
                在窗口部分判断是否存在文件并根据情况显示不同文字图标。
                相关的脚本请大家善在其他地方找类似复制粘贴过来或者按F1查找。
                这些教程给有余力的同学看。
                如果这些看不懂的话,乃还是乖乖用现成的好了,写脚本还暂时不适合你。
                PS.严重bs@幻隐之翼 他骗走了我一组好人卡+一张豪华好人卡+一张精美包装好人卡+DATA都不给我解决问题,实在对自己的行为不负责任啊。


                43楼2012-08-21 08:35
                收起回复
                  2025-09-04 06:00:11
                  广告
                  不感兴趣
                  开通SVIP免广告
                  求预览图


                  51楼2012-08-21 16:22
                  回复
                    成就系统第三弹来了!这次推出成就系统普通型!
                    1、成就完成前显示是灰色的(图1)
                    2、成就完成后点亮此成就并显示图标,全部点亮后是这样的(图2)
                    而且这次成就界面的名字,每一页的名字,每一个成就的名字,图标,介绍都可以自己改!
                    优点:简单易懂,使用方便,成就分类,比较美观
                    缺点:固定4页,每页固定9个,固定36个成就,不够灵活
                    http://achievement.ys168.com/


                    


                    64楼2012-08-22 15:42
                    收起回复
                      成就系统第四弹来啦!等级成就系统!
                      1、成就完成前显示是灰色的(图1)
                      2、成就完成后点亮此成就并显示图标,并获得点数,当积累到一定点数的时候升级(图2)
                      优点:数量无限,等级系统
                      缺点:添加麻烦
                      地址http://achievement.ys168.com
                      第五弹要不要出个综合版呢……有人需要这么复杂的功能么?


                      


                      68楼2012-08-23 15:30
                      回复