试试写一个魔女裁判

试试写一个魔女裁判 #


让我们来写一个简单的裁判 #


  1. 初始化裁判庭剧本 #

    创建裁判庭初始化脚本TrialInit.nani,修改其中的设置

    主要关注点为出场人物,不出场的人物ID设为-1即可

    ;设置出场人物位置ID,为-1的话就是未出席
    @set "emaIdx = 0"
    @set "hiroIdx = 3"
    @set "meruruIdx = -1"
    @set "hannaIdx = 6"
    @set "sherryIdx = 9"
    @set "ananIdx = -1"
    @set "leiaIdx = -1"
    @set "cocoIdx = -1"
    @set "miriaIdx = -1"
    @set "margoIdx = -1"
    @set "noahIdx = -1"
    @set "nanokaIdx = -1"
    @set "alisaIdx = -1"
    @set "yukiIdx = -1"
    @set "wardenIdx = -1"
    @set "jailerIdx = -1"
    
  2. 调用游戏自身的初始化剧本 #

    调用初始化剧本:SherryAppleJuice_ExampleTrialMod/TrialInitSystem/System_Subroutine.EndTrial

    在对话剧本的首尾通过gosub分别执行这两个初始化剧本

    ;初始化日常活动状态
    @gosub SherryAppleJuice_ExampleTrialMod/TrialInit
    
    ;结束裁判状态
    @gosub System/System_Subroutine.EndTrial
    
  3. 设置裁判超时坏结局 #

    通过timer指令设置倒计时

    通过set指令设置超时坏结局XXX,并创建Common/Common+XXX.nani文件,这个剧本文件就是坏结局的入口

    ;设置倒计时
    @timer 30
    ;设置坏结局
    @set "commonBadEndId=\"SherryAppleJuice_ExampleTrialMod00\""
    
  4. 完整样例 #

    SherryAppleJuice_ExampleTrialMod/Main.nani

    ;初始化裁判状态
    @gosub SherryAppleJuice_ExampleTrialMod/TrialInit
    
    ;设置倒计时
    @timer 30
    ;设置坏结局
    @set "commonBadEndId=\"SherryAppleJuice_ExampleTrialMod00\""
    
    ;隐藏日常UI并显示裁判UI
    @HideUI ControlPanel
    @ShowUI DebateUI
    
    ;裁判循环起点
    # Judge00
    
    ;裁判循环起点初始化
    @gosub System/System_Subroutine.BeginDebate-First
    ;播放裁判循环起点特效
    @gosub System/System_Subroutine.BeginDebate-Effect
    @gosub System/System_Subroutine.BeginDebate-Last
    
    ;裁判开始倒计时
    @pauseTrial false
    
    ;隐藏正交相机的场景,展示出裁判庭的3D场景
    @hideStageScreen 1
    
    ;将最上面原本黑色的Overlay遮罩层变为透明,同时还指定了动画时间
    @back SubId:"Overlay" Transparent tint:"#000000" time:0.9
    
    ;将镜头设置到艾玛脸上
    @char Ema.Smile1
    @gosubModifyCamera 0 look:"Ema" comp:"Left" rollDir:"Right" zoomLvl:3
    @printDebate pos:70,50 Roll:4 "这是一个测试用例,<br>我来客串一下。"
    @printDebate pos:70,50 Roll:4 "我在左边,字在右边"
    
    ;将镜头设置到艾玛脸上,换个方向
    @char Ema.Smile1
    @gosubModifyCamera 0 look:"Ema" comp:"Center" zoomLvl:3
    @printDebate pos:50,30 Roll:4 "我在中间,字在下面。"
    
    ;将镜头设置到艾玛脸上,换个方向
    @char Ema.Angry1
    @gosubModifyCamera 0 look:"Ema" comp:"Right" rollDir:"Left" zoomLvl:3
    @printDebate pos:30,50 Roll:4 "我在右边,字在左边。"
    
    ;雪莉说了一个破绽
    @char Sherry.Smile1
    @gosubModifyCamera 0 look:"Sherry" comp:"Left" rollDir:"Right" zoomLvl:3
    @printDebate pos:70,50 Roll:4 "这里有一个<link="Right_Choice_000">关键词</link>,点进去就可以进入选项分支啦。"
    
    ;裁判循环终点初始化
    @Gosub System/System_Subroutine.EndDebate-First
    @pauseTrial true
    ;播放裁判循环终点特效
    @gosub System/System_Subroutine.EndDebate-Effect
    @gosub System/System_Subroutine.EndDebate-Last
    
    ;显示正交相机的场景
    @showStageScreen 1
    Ema: 到这里一轮辩论就结束啦
    Ema: 接下来准备继续循环
    
    ;回到裁判循环起点
    @goto .Judge00
    
    # Right_Choice_000
    ;暂停倒计时
    @pauseTrial true timer:true
    @choice "这个是正确的选项分支" button:"ChoiceButtons/Trial/Approval" handler:"Trial"
       ;播放有效
       @sfx "Sfx_System_SaveData_001_2x"
       ;停止播放语音
       @StopVoice
       ;关闭返回,使用这个指令后,点击选项就不会回到辩论循环了
       @CancelGosub
       ;跳转到目标剧情
       @goto .Right_Adv_000
    @choice "这个是错误的选项分支" button:"ChoiceButtons/Trial/Objection" handler:"Trial"
       @sfx "Sfx_System_SaveData_001_2x"
       @StopVoice
       @CancelGosub
       @goto .Error_Adv_000
    @choice "返回" button:"ChoiceButtons/Trial/Cancel" handler:"Trial"
       @pauseTrial false timer:true
       @Wait "i{debateWaitTime}"
       @Return
    
    @StopForChoice Clear:false
    
    # Right_Adv_000
    @gosub System/System_Subroutine.EndDebate-First
    @pauseTrial false timer:false
    @gosub System/System_Subroutine.EndDebate-Last
    
    @char Hanna.Smile1
    @gosubModifyCamera 0 look:"Hanna" comp:"Center"
    Hanna: 这个是正确的选项~
    ;跳转到正确的路线
    @goto .Right_End
    
    # Error_Adv_000
    @gosub System/System_Subroutine.EndDebate-First
    @pauseTrial false timer:false
    @gosub System/System_Subroutine.EndDebate-Last
    
    @char Hanna.Angry1
    @gosubModifyCamera 0 look:"Hanna" comp:"Center"
    Hanna: 这个是错误的选项!
    Hanna: 我要返回到辩论循环让你重新选择了。
    @goto .Judge00
    
    # Right_End
    ;显示日常UI并隐藏裁判UI
    @HideUI DebateUI
    @ShowUI ControlPanel
    
    @char Ema.Smile1
    @gosubModifyCamera 0 look:"Ema" comp:"Center"
    Ema: 裁判教程到这里就结束啦。
    
    @gosub System/System_Subroutine.EndTrial
    
    ;跳转到结束
    @goto SherryAppleJuice_ExampleTrialMod/Tools.EndToTitle
    

    SherryAppleJuice_ExampleTrialMod/TrialInit.nani

    ;设置审判庭地点,有Court和CourtFinal两种,后者是决战时使用的版本
    @set "stageName=\"Court\""
    ;设置出庭人数,正常情况下是13个
    @set "courtStandCount = 13"
    
    ;设置出场人物位置ID,为-1的话就是未出席
    @set "emaIdx = 0"
    @set "hiroIdx = 3"
    @set "meruruIdx = -1"
    @set "hannaIdx = 6"
    @set "sherryIdx = 9"
    @set "ananIdx = -1"
    @set "leiaIdx = -1"
    @set "cocoIdx = -1"
    @set "miriaIdx = -1"
    @set "margoIdx = -1"
    @set "noahIdx = -1"
    @set "nanokaIdx = -1"
    @set "alisaIdx = -1"
    @set "yukiIdx = -1"
    @set "wardenIdx = -1"
    @set "jailerIdx = -1"
    
    ;初始化裁判
    @gosub System/System_Subroutine.BeginTrial
    
    @return
    

    Common/CommonBadSherryAppleJuice_ExampleTrialMod00.nani

    ;初始化日常活动状态
    @gosub System/System_Subroutine.BeginAdv
    
    ;显示背景
    @back 5_1 Scale:{g_backgroundDefaultScale}
    ;将最上面原本黑色的Overlay遮罩层变为透明,同时还指定了动画时间
    @back SubId:"Overlay" Transparent tint:"#000000" time:0.99 wait:true
    
    ;显示艾玛
    @char Ema pos:50,50
    ;艾玛说话
    Ema: 这是一个Bad End。
    
    ;隐藏全部角色
    @hideChars
    
    ;结束化日常活动状态
    @gosub System/System_Subroutine.EndAdv
    
    ;跳转到结束
    @goto SherryAppleJuice_ExampleMod/Tools.EndToTitle
    

如果出现红字 #

Failed to load localization document for XXX

如果控制台出现红字 Failed to load localization document for XXX

这个报错是本地化配置相关,参考这里~

本地化配置错误