Skip to content

命令参考

本文档列出所有 NovaMark 支持的命令。

注释

NovaMark 支持 // 单行注释:

// 这是整行注释
林晓: 你好! // 这是行尾注释

注释不会被执行,仅用于代码说明。


定义命令

@char - 角色定义

定义游戏中的角色。

@char 角色名
  color: #RRGGBB
  description: 角色描述
  sprite_default: 默认立绘.png
  sprite_happy: 开心立绘.png
@end

属性:

属性类型说明
color颜色值对话框中角色名的颜色
description字符串角色描述
sprite_default文件名默认立绘文件
sprite_*文件名情绪贴图约定,如 sprite_happy

@item - 物品定义

定义游戏中的物品。

@item 物品ID
  name: 显示名称
  description: 物品描述
  icon: 图标文件
@end

属性:

属性类型说明
name字符串物品显示名称
description字符串物品描述
icon文件名物品图标

@var - 变量定义

定义游戏变量。

@var 变量名 = 初始值

支持的类型:

  • 数字: @var hp = 100
  • 字符串: @var name = "林晓"
  • 布尔值: @var is_alive = true

@theme - 主题定义

定义 UI 主题样式。

@theme 主题名
  dialog_bg: #000000
  text_color: #FFFFFF
@end

场景控制

#scene - 场景定义

定义一个场景。

#scene_id "场景标题"

示例:

#scene_forest "幽暗的森林"
#scene_tower "星光之塔"

-> - 跳转

跳转到场景或标签。

-> scene_name      // 跳转到场景
-> .label_name     // 跳转到当前场景内的标签

@call - 调用场景

调用场景,执行完毕后返回。

@call shop_scene

被调用的场景中使用 @return 返回。


@return - 返回

@call 调用返回。

@return

.label - 标签定义

定义场景内的标签。

.look_around
> 你环顾四周。

标签名以 . 开头。


显示命令

@bg - 背景图片

显示或切换背景图片。

@bg image.png
@bg image.png transition:fade

参数:

参数类型说明
transition字符串过渡效果 (fade/slide/none)

@sprite - 精灵/立绘

显示或切换角色立绘。

@sprite 角色名 show url:立绘.png position:left
@sprite 角色名 show position:left
@sprite 角色名 show url:立绘.png x:70 y:100
@sprite 角色名 hide

参数:

参数类型说明
show-显示精灵;若未提供 url,会尝试使用角色的 sprite_default
hide-隐藏精灵
url文件名精灵图片
position字符串推荐 left / right,原样透传
x字符串/数字原样透传给宿主解释
y字符串/数字原样透传给宿主解释
opacity数字透明度 (0-1)

场景切换时,当前场景中的立绘会自动清空;同一场景内若需要退场,仍使用 hide

NovaMark 只会导出脚本里显式设置过的立绘字段;未设置字段保持为空,由宿主决定默认布局或渲染策略。


@bgm - 背景音乐

播放或停止背景音乐。

@bgm music.mp3
@bgm music.mp3 loop:true volume:0.8
@bgm stop

参数:

参数类型说明
loop布尔是否循环播放
volume数字音量 (0-1)

@sfx - 音效

播放音效。

@sfx click.mp3
@sfx ambient.mp3 loop:true volume:0.5

参数:

参数类型说明
loop布尔是否循环播放
volume数字音量 (0-1)

游戏逻辑

@set - 修改变量

修改变量值。如果变量尚不存在,@set 会在当前作用域中自动创建它。

@set hp = 80
@set gold = gold + 10
@set courage = courage - 5

支持运算: +, -, *, /, %

说明:

  • 左侧变量名支持“设置或创建”
  • 右侧表达式里的变量引用仍然要求已经可用

例如:

@set hp = 100         // 如果 hp 不存在,则创建 hp
@set mp = hp + 10     // 合法,因为上面已经创建了 hp
@set gold = coins + 1 // 如果 coins 未定义,仍然会报错

@give - 给予物品

给玩家添加物品。

@give healing_potion 1
@give gold 100
@give gold random(10, 20)

数量参数支持表达式。


@take - 移除物品

从玩家背包移除物品。

@take healing_potion 1
@take gold 1 + 1
@take gold count + 1

数量参数支持表达式。


@check - 条件检定

基于条件执行不同分支。

@check 条件表达式
@success
  // 成功时执行
@fail
  // 失败时执行
@endcheck

示例:

@check roll("2d6") >= 8
@success
  林晓: 成功了!
@fail
  林晓: 失败了...
@endcheck

@check has_item("key")
@success
  > 你打开了宝箱。
@fail
  > 没有钥匙。
@endcheck

@check hp >= 50
@success
  林晓: 我还能坚持!
@fail
  林晓: 我需要休息...
  @set hp = 50
@endcheck

@flag - 设置标记

设置游戏标记(用于多周目)。

@flag met_spirit

@ending - 触发结局

触发游戏结局。

@ending good_ending
@ending bad_ending

表达式与函数

算术运算

@set total = a + b
@set diff = a - b
@set product = a * b
@set quotient = a / b

比较运算

@check hp > 0
@check gold >= 100
@check hp == 100
@check hp != 0

逻辑运算

@check has_item("key") and hp > 0
@check not has_flag("boss_defeated")

内置函数

函数说明示例
has_item("id")检查是否有物品has_item("key")
item_count("id")获取物品数量item_count("gold")
has_ending("id")检查是否触发过结局has_ending("true_end")
has_flag("id")检查是否设置过标记has_flag("met_spirit")
roll("XdY+Z")骰子检定roll("2d6+3")

骰子表达式

roll("2d6")      // 2个6面骰
roll("1d20")     // 1个20面骰
roll("2d6+3")    // 2个6面骰+3修正值
roll("1d8-1")    // 1个8面骰-1修正值
Last updated on