故事定义 (<StoryDef>)

功能说明

故事定义用于组织和编排游戏中的故事情节流程。一个完整的故事由一系列按顺序执行的故事阶段 (<StoryStageDef>) 组成,每个阶段可以包含等待时间、触发特定事件或显示消息等。

可用参数

参数名类型默认值说明
defName字符串必需。该故事定义的唯一标识符。
label字符串(空)可选。该故事在游戏中显示的名称。
description字符串(空)可选。该故事的详细描述。
storyStage故事阶段数组必需。定义组成该故事的各个阶段。这是一个故事阶段的数组。详见下文**storyStage 字段**。

示例

这是一个定义了一个包含两个阶段的故事的例子:

<Define>
    <!-- 独立的事件和消息定义,供故事阶段引用 -->
    <EventDef>
        <defName>StartQuest_FirstEncounter</defName>
        <workClass>Event_StartQuest</workClass>
        <parameter>{"QuestId": "FirstEncounter"}</parameter>
    </EventDef>

    <MessageDef>
        <defName>WelcomeMessage</defName>
        <type>ScreenCenterLargeText</type>
        <text>欢迎来到这个世界!</text>
        <color>White</color>
    </MessageDef>

    <!-- 故事定义 -->
    <StoryDef>
        <defName>NewGameIntro</defName>
        <label>新手引导故事</label>
        <description>玩家初次进入游戏时的引导流程。</description>
        <storyStage>
            <li>
                <lastWaitTime>0</lastWaitTime>
                <nextWaitTime>3</nextWaitTime> <!-- 等待3秒 -->
                <messageDef>WelcomeMessage</messageDef> <!-- 引用消息定义 -->
            </li>
            <li>
                <lastWaitTime>3</lastWaitTime> <!-- 继承上一个阶段的nextWaitTime作为lastWaitTime,也可自定义 -->
                <nextWaitTime>0</nextWaitTime>
                <eventDef>StartQuest_FirstEncounter</eventDef> <!-- 引用事件定义 -->
            </li>
        </storyStage>
    </StoryDef>
</Define>

故事阶段定义 (<StoryStageDef>)

功能说明

故事阶段定义是构成完整故事的基本单元。每个阶段代表故事流程中的一个步骤,可以指定该阶段的持续时间(通过等待时间)、需要触发的特定事件、以及需要显示给玩家的消息。故事阶段通常作为 <StoryDef> 内部的匿名定义存在。

可用参数

参数名类型默认值说明
defName字符串可选。该故事阶段的唯一标识符。作为匿名定义时可省略。
label字符串(空)可选。该故事阶段的内部标识标签。
description字符串(空)可选。该故事阶段的详细描述。
lastWaitTime浮点数0当前阶段开始前必须等待的前一个阶段的结束时间点(秒)。
nextWaitTime浮点数0当前阶段结束前需要等待的时间(秒)。这个值通常作为下一个阶段的 lastWaitTime
eventDef定义可选。定义此阶段结束后要触发的事件。可以是预定义事件的引用或匿名定义。详见下文**eventDef 字段**。
messageDef定义可选。定义此阶段中要显示给玩家的消息。可以是预定义消息的引用或匿名定义。详见下文**messageDef 字段**。

复杂参数说明

storyStage 字段 (故事阶段数组)
  • 说明:这是一个数组,其内部每个 <li> 元素代表一个故事阶段的定义。通常,这些阶段定义会以匿名方式直接嵌套在 <li> 中。
  • 数组定义方式
    <storyStage>
        <li>
            <!-- 第一个故事阶段的定义 -->
            <lastWaitTime>0</lastWaitTime>
            <nextWaitTime>5</nextWaitTime>
            <messageDef>
                <type>ScreenCenterLargeText</type>
                <text>开始新篇章!</text>
            </messageDef>
        </li>
        <li>
            <!-- 第二个故事阶段的定义 -->
            <lastWaitTime>5</lastWaitTime>
            <nextWaitTime>0</nextWaitTime>
            <eventDef>
                <workClass>Event_SpawnMonster</workClass>
                <parameter>{"MonsterType": "Goblin", "Count": 3}</parameter>
            </eventDef>
        </li>
        <!-- ...更多故事阶段 -->
    </storyStage>
    
eventDef 字段 (事件定义)
  • 说明:指定当前故事阶段完成后触发的事件。它可以是已经预定义好的 事件定义defName 引用,也可以是在此处直接定义的匿名事件。
  • 引用方式
    <eventDef>EventDef的defName</eventDef>
    
  • 匿名定义方式
    <eventDef>
        <workClass>Event_SpawnItem</workClass>
        <parameter>{"ItemDefName": "HealingPotion", "Count": 1}</parameter>
    </eventDef>
    
messageDef 字段 (消息定义)
  • 说明:指定当前故事阶段需要显示给玩家的消息。它可以是已经预定义好的 消息定义defName 引用,也可以是在此处直接定义的匿名消息。
  • 引用方式
    <messageDef>MessageDef的defName</messageDef>
    
  • 匿名定义方式
    <messageDef>
        <type>PassiveHint</type>
        <text>你获得了新的任务目标!</text>
        <color>Yellow</color>
    </messageDef>