smbx吧 关注:1,419贴子:85,387

回复:【喝了】【我来开个大坑】【SMBX 1.4.X编辑器使用教程】

只看楼主收藏回复

哎,可惜我最近都不玩smbx了


IP属地:湖南来自Android客户端89楼2018-04-11 10:18
收起回复
    3.一些特殊的事件。

    如图,随意勾选一个事件,找到“其他”选项。您就会看到信息框下面有特殊事件并附带下拉框。
    Player.Hurt
    事件执行时使玩家受伤。(如果是小个子状态则直接死亡)
    Player.Death
    事件执行时击杀玩家。(不限状态)
    PlayerStatWindow.Hide
    事件执行时使HUD系统消失。
    PlayerStatWindow.Show
    反之,事件执行时使HUD系统出现。(若之前未有特殊事件改变HUD状态,则不会执行该事件)
    Battle.hurt(id=1)
    Battle.hurt(id=2)
    我不知道这两个是干嘛的……如果知道的可以在楼中楼补充。
    WI.Add(Item)
    执行事件时在世界物品栏添加Item(道具),道具在游戏有说明,此处就不一一列举了。(前提是你需要一个世界地图并且设置SMB3世界物品栏容量。为0时不可用)
    Player.ItemBox.Disable
    执行事件时禁用关卡储备框。
    Player.ItemBox.Enable
    执行事件时重新启用关卡储备框。
    Player.WallJump.Enable
    执行事件时允许在关卡中使用踢墙跳。
    Player.WallJump.Disable
    执行事件时禁止在关卡中使用踢墙跳。
    PowerUpSystem.Int(SMB3)
    执行事件时改变玩家属性。(从其它形态受伤缩小为大个子形态。如在装备火力花,锤子装等受伤时缩小为大个子状态)
    PowerUpSystem.Int(SMB1)
    具体用途不知道,好像是和SMB3相反。执行事件时使玩家恢复受伤设定。
    Screen.Pow
    执行事件时使关卡窗口震动。(SMB2的Pow效果)
    Screen.Tremor
    执行事件时使关卡窗口震动。(轻微震动)
    PowerUpSystem.Enable(Free...)
    在玩家受伤的时候停止所有屏幕内NPC的运动。Free...是因为看不到后面的字了。
    PowerUpSystem.Disable(Free...)
    相当于是不再调用前一个事件。(PowerUpSystem.Enable(Free...))
    SMWYellowSwitch.Trigger
    SMWBlueSwitch.Trigger
    SMWGreenSwitch.Trigger
    SMWRedSwitch.Trigger
    执行事件时转换SMW的四色开关。(只能选一种转换)
    SMB3SwitchBlock.Trigger
    这玩意我不知道。
    TimeStop.Activate
    执行事件时使时间(游戏画面)静止。
    TimeStop.Deactivate
    执行事件时恢复游戏。(其实也是不再调用上一事件)
    PSwtich.Trigger
    执行事件时调用P按钮功能。
    PSwitch.Stop
    立刻结束P按钮的影响。
    PlayerInvincibleStar.Activate
    执行事件时启用无敌星效果。
    PlayerInvincibleStar.Deactivate
    执行事件时停止无敌星效果。
    PlayerFLUDD.Clear
    PlayerFLUDD.Exhaust
    这两个我不知道……
    PlayerItemBox.Clear
    执行事件时清空关卡储备框。
    Player.ResetState
    执行事件时强制使玩家恢复原状态。(小个子)
    特殊事件部分,完。有几个地方空着,还望知道的人来补充一下,谢谢啦~


    IP属地:北京90楼2018-08-31 10:10
    回复(3)
      补充:
      关于自动执行事件:
      默认的自动执行事件有三个,在之前有讲解。但是还有一些自动执行事件是需要玩家添加的,如下图。

      Level - End : 在关卡结束时执行事件。
      Player - Death : 在玩家死亡后执行事件。
      Starman - Start : 在无敌星效果开启时执行事件。(多半用于播放无敌星效果的BGM)
      Starman - End : 在无敌星效果结束时执行事件。


      IP属地:北京91楼2018-08-31 10:18
      回复
        4.关于强制卷轴的设定。

        如果您的关卡需要用到强制卷轴,就需要事件执行。
        找到任意事件,打开“场景”模块。然后就会出现如上所示的界面。
        若您只是需要强制卷轴,请看下图。

        如图,这是一个强制卷轴关卡,我们需要打开按钮“启用自动滚屏”来执行强制卷轴。
        场景边界设置:
        X,Y轴的边界为场景总大小,在做完之后可以找到“场景边界设置”的下拉框勾选“使用最近的位置”。
        宽度:强制卷轴范围的宽。(通常为800)
        高度:强制卷轴范围的高。(通常为600)
        横向/纵向卷轴移动速度:按您的关卡所需选择是横向还是纵向移动。速度在横向/纵向框里填写。(如果是横纵都有也可以写两个框,但我没试过那种……)
        强制卷轴将会在场景尽头停止运动。


        IP属地:北京92楼2018-08-31 10:26
        回复
          不自动启动(召唤时启
          动):代表该事件需要被触发才会启用
          当游戏开始时启用:游戏开始时便会启动。
          符合所有条件时自动启用:利用数学表达式,条件满足启用,True 表示条件正确,False代表条件错误。(比如在条件表达式上面写1+1=2代表正确,1+1=3代表错误)
          开始时调用和匹配所有条件:有一点用,但复杂,大概吧。


          93楼2018-08-31 10:54
          收起回复
            喝了,那么事件部分基本完了,更多的东西还是需要玩家探索,接下来是脚本。


            IP属地:北京94楼2018-08-31 10:59
            回复
              10.变量与脚本。
              SMBX - 38A 的成功与出色之处在于变量/脚本系统,它运用与VB相近的语法编写,利用它可以做出很多强大的东西。如自定义NPC,自定义玩家状态,自定义关卡全局等更多高级功能。当然这可能需要玩家有一点编程基础。
              先讲解一些语法:(更多的东西在自带的脚本教程都有,就不说了)
              “If”(“如果”语句):若该语句所描述的条件正确,则会执行该条件。
              例:
              If 【条件表达式】Then
              【关于条件的描述1】
              Else(若无法执行前表达式或条件不符,则执行语句的下一表达式)
              【关于条件的描述2】
              End If(关于“If”语句的表达式结束)
              -------------------------------------------------------------------------------------------------------------
              Do(循环语句):
              如您所见,Do语句是一种循环语句,它将会重复执行里面的条件表达式。
              例:
              Do
              【关于条件的描述】
              Loop / Loop Until/While 【条件表达式】
              -------------------------------------------------------------------------------------------------------------
              Select Case(选择描述语句)
              语句将选择与计算值相等的结果的语句执行。
              例:
              Select Case 【情况】 【描述】
              Case 【情况】 【描述】
              【关于条件的描述1】
              Case 【情况】 【描述】
              【关于条件的描述2】
              Case Else(若以上语句都无法执行,则:)
              【关于条件的描述3】
              End Select(结束选择描述语句)
              注:Case 可以多次出现于 “Select Case”中,但只能出现一次“Case Else”,Case 语句可以有很多个,但都要有与之对应的描述。
              -------------------------------------------------------------------------------------------------------------
              With(应用指定对象)
              例:
              With 【游戏对象】
              【描述】
              End With
              -------------------------------------------------------------------------------------------------------------
              Call (程序/功能)
              利用Call语句可以实现一些功能。
              例:
              Call NCreate(NPC生成)
              Call FXCreate(效果生成)
              Call LSpin(对一个图层进行旋转)
              Call LMove(对一个图层进行移动)
              Call NKill(击杀指定对象)
              Call Showmsg(显示对话框)
              Call Sleep(为快速执行下一条语句而结束当前语句的延迟)
              Call TCreate(执行一个事件)
              Call SysShowmsg(显示窗体对话框)
              ...


              IP属地:北京95楼2018-08-31 11:20
              收起回复
                自定义HUD:
                很多玩家都有自定义HUD的想法,但是怎么做呢?其实还是比较简单的,你首先需要有“scflash.png”(HUD素材)以及变量数字素材。
                Call hudset("initialize",0,0,0,0,0,0,0,0,0)
                Call hudset("bitmap",0,0,0,0,0,0,0,0,0)
                Call hudset("bitmap",0,0,0,0,0,0,0,0,0)
                Call hudset("text:&sys(Playerhealth)",0,0,0,0,0,0,0,0,0)
                Call hudset("text:&sys(CoinCount)",0,0,0,0,0,0,0,0,0,0)
                Call hudset("text:&sys(StarCount)",0,0,0,0,0,0,0,0,0)
                Call hudset("text:&sys(lvlTimer)",0,0,0,0,0,0,0,0,0)
                Call hudset("text:&sys(score)",0,0,0,0,0,0,0,0,0)
                写“0”的地方是HUD的位置之类的,具体需要玩家根据情况调试。
                &sys(“&”之前是字符的位置)
                Playerhealth:玩家的生命值
                CoinCount:金币数量
                StarCount:星星数量
                lvlTimer:计时器
                score:分数
                这样就可以做出一个简单的HUD。
                2.若您不想用特殊事件来覆盖原HUD,也可以用脚本。新建脚本,然后写上:
                'initialize,0,0,0,0,0,0,0,0,0
                Call hudset("initialize",0,0,0,0,0,0,0,0,0)
                这样原HUD就会被覆盖。


                IP属地:北京96楼2018-08-31 11:28
                回复
                  那么脚本我也没讲过多东西,最后来看几个实用简单的脚本。
                  1.图层旋转:
                  新建一个图层,我这里命名为“LSpin”。(如下图)

                  因为这是个旋转金币圈,所以摆成这样子。
                  然后打开脚本,新建脚本,我命名为“1”。

                  然后写入:
                  Call LSpin(X,Y,速度)
                  X,Y打开网格编辑模式选择选择中心,然后打开调试器找到对应的数值填写X,Y。
                  速度通常为0.02~0.07之间,不然会太慢或者太快。
                  写完之后关闭脚本面板,打开事件面板新建事件,我写的是“LSpin”。(如下图)

                  然后在脚本下拉框里链接刚才写的旋转图层的脚本。
                  在自动开始里选择第二项。
                  最后测试关卡。
                  ------------------完------------------
                  像KFCM的那种高级金币圈我做不出来。


                  IP属地:北京97楼2018-08-31 11:52
                  回复
                    2.a.对话框系统。
                    觉得事件写对话过于麻烦?没关系,您可以使用脚本功能。
                    如下:
                    Call Showmsg("内容")
                    Call Showmsg("内容")
                    可以只有一条“Call Showmsg”,也可以多条,而且想写多少写多少。
                    最后调用关卡中的事件执行或者流体执行。
                    2.b.窗体对话框系统。
                    如果您觉得原来的对话框不太好看,也可以改成窗体对话框。
                    如下:
                    Call SysShowmsg("内容",0,"窗体名称")
                    同上,可以多条,也可以一条,最后调用事件/流体执行。


                    IP属地:北京98楼2018-08-31 11:56
                    回复
                      脚本部分完。我并不会讲很多,其它的还需要玩家自己去探索。


                      IP属地:北京99楼2018-08-31 11:58
                      回复
                        开始停更,接下来就是世界地图编辑器的使用部分。


                        IP属地:北京100楼2018-08-31 12:00
                        回复
                          --------------------大地图编辑器部分--------------------
                          1.模式切换
                          SMBX默认的编辑模式是“关卡编辑模式”,如果您需要编辑到关卡/地图的大地图(世界),就需要进行切换模式。有两种方法,如下:
                          a.找到编辑器上方工具栏的“编辑模式”按钮,点击它出现下拉框,选择“世界编辑”,即可切换。(如下图)

                          b.使用快捷键。其实在世界编辑按钮的右侧就写明了切换至世界编辑模式的快捷键(Ctrl + W)。
                          如果切换成功就会播放“SMW - Switch”的音效并出现世界编辑界面。(如下图)

                          最后就可以开始使用世界编辑器,楼下讲解此编辑器的功能。


                          IP属地:北京101楼2018-09-08 11:19
                          回复
                            1.关于Tiles
                            Tiles板块位于下侧工具栏的左数第三个。(下图红圈部分)

                            由于本人使用了中文插件,所以显示是地面。
                            然后点击它,出现大地图的地面编辑系统。(如下图)

                            SMW区:
                            Grass:草原地面
                            Desert:沙漠地面(巧克力岛)
                            Cave(A):洞穴地面A(一般用于清秀明亮的洞穴)
                            Cave(B):洞穴地面B(用于黑暗的洞穴,如深谷、火山)
                            Cave的两种地面可以混用,内置了专属的衔接板块。
                            Cloud:云大陆地面(也是SMW的星星之路传送区)
                            -------------------------------------------------------------------------------------------------------
                            SMB3区(如下图):

                            Grass & Snow:草原与雪地面
                            Desert:沙漠(黄土)地面
                            -------------------------------------------------------------------------------------------------------
                            使用Tiles的方法与关卡编辑器模式一样,选择之后在编辑器框内放置即可。


                            IP属地:北京102楼2018-09-08 11:33
                            回复
                              2.关于Scenes
                              Scenes(中文插件显示为“景物”)板块位于Tiles的右侧。(下图蓝圈部分)

                              里面的贴图可以用来装饰您的大地图。点击它出现以下界面:

                              使用方法与楼上相同,由于只是编辑器教程,所以关于景物的摆放什么的就不说了。


                              IP属地:北京103楼2018-09-08 11:38
                              回复