设置和初始化变量#

教程所使用的示例卡可以在角色卡示例找到哦!

思考需要什么变量#

我们写 MVU 卡必须要先想想这张卡需要什么变量:

  • 你似乎打算写一个和角色谈恋爱的卡. 如果我们记录下角色对玩家的好感度, 就可以针对角色当前所在的好感度阶段, 为角色设定不同的行为模式了!

  • 你做了一张奇幻冒险卡, 那你肯定希望记录角色在冒险中的各种状态, 比如背包里有什么物品、学到了什么技能等等.

  • 什么! 玩家不是要扮演角色, 而是要扮演角色绑定的金手指系统? 那你可得好好记录一下现在给角色发布了什么任务、角色商城里有什么商品了……你还可以做一个可互动的前端界面, 让玩家通过这个界面给角色发布任务!

  • ……

总之, 请你一定一定要想清楚自己的卡需要什么变量, 因为这会影响之后所有内容!

设计变量结构#

确定下了需要什么变量后, 我们就可以开始设计变量结构啦!

为了让你写起来简单, 在正文部分我会尽量用已经做好的工具来写卡! 比如, 我会直接用门之主写卡助手咩咩的 Gemini CLI 全自动写卡工作流里的变量结构设计 (脚本) 功能来设计变量结构——

让我们打开门之主写卡助手, 通过酒馆输入框上方的选择功能按钮切换成变量结构设计 (脚本)功能, 然后输入我们的变量需求:

请制作变量!
- 在世界路径下记录当前时间、当前日期和近期事务
- 记录主角妹妹白娅当前对主角的依存度、着装和称号
  - 依存度必须在0~100之间
  - 着装包括上装、下装、内衣、袜子、鞋子和饰品
  - 称号应该记录称号的效果和白娅对称号的自我评价,如果没填写自我评价则默认设置为"待评价"
  - 称号有数量上限,依存度越高可以拥有的称号越多(依存度为0时不能拥有称号,1~10时只能拥有1个称号,依次类推),如果称号超过可以拥有的数量,应该移除最旧的称号
- 记录主角物品栏当前有的物品:它的描述、数量,如果没有填写数量则默认数量为1,如果数量不为正数应该直接删除物品

我输入了很多要求呢x 如果你熟悉 MVU 或者 MVU beta 的话, 会发现里面很多要求是以前要用 extensible$template 或者单独制作脚本来实现的, 但现在 MVU zod 可以轻松做到!
AI 也很会写这一套~所以我在这里选择了直接用门之主写卡助手来生成它, 如果你需要学习怎么手写变量结构的话, 请学习完正文后去阅读附录部分.

AI 很快给你生成出变量结构啦! 我得到的是这样的:

这个变量结构是一个酒馆助手脚本, 规定了我们的变量应该是怎么样的. 门之主写卡助手会在生成后稍微解释一下它做到了什么功能, 但其实你不用太在意该怎么自己读懂它, 之后在附.手写变量结构中我会详细解释的qwq.

既然是一个酒馆助手脚本, 让我们点开脚本库来添加它! 和之前添加 MVU 本体脚本一样, 我们点开酒馆右上角积木按钮 ‣ 酒馆助手 ‣ 脚本库, 点击+ 脚本来新建一个名叫变量结构的角色脚本, 内容就填写刚刚那个脚本的内容.

初始化变量#

在变量结构规定了我们的变量应该是什么样的后, 我们可以开始为角色卡开局设定变量初始情况了!

让我们把门之主写卡助手切换到变量初始设置 (initvar) 功能, 输入一些变量初始化需求, 比如请根据这段剧情初始化变量白娅对主角的好感度应该在20左右,据此初始化变量并生成开局之类的, 这就完全取决于你啦~

总之, 门之主写卡助手给了我下面一段内容, 它列出了变量应该有的初始值. 如果你仔细观察, 就会发现它的文字、缩进都和之前的变量结构脚本是一一对应的:

得到了变量初始值后, 我们需要以 MVU 规定的方式把变量初始值告诉它.

让我们在角色卡世界书中新建一个条目, 条目名字里要包含 [initvar] 并且必须处于禁用状态——我们不如就将这个条目叫作 [initvar]变量初始化勿开 吧! 然后, 我们将变量初始值粘贴到这个条目的内容中.

验证变量结构和初始化是否成功#

在设置好变量结构和变量初始值后, 我们确保以下两点:

  • API 配置 (左上角插头) 里选的是聊天补全

  • 角色卡有设置开局消息 (在角色卡侧边栏最下面填写)

然后就能新开聊天来让变量设置生效了!

新开聊天后, 让我们打开变量管理器来实际查看变量: 酒馆输入框左边魔棒 ‣ 变量管理器 ‣ 消息楼层.

../../../../_images/%E5%88%9D%E5%A7%8B%E5%8C%96%E5%8F%98%E9%87%8F%E7%BB%93%E6%9E%9C1.png

如果新开聊天后变量管理器里依旧没有变量, 请你先确认之前的步骤都正确执行了喔!
另外, 也许你是新开聊天后遇到了黄框提示 "变量初始化失败":

  • 如果警告标题是[MVU], 请考虑重新生成变量结构.

  • 如果警告标题是[MVU zod], 请考虑重新生成变量初始值.

为不同开局设置不同变量初始值 (全量方案)#

角色卡每个开局往往是不同的故事情景, 显然我们会需要为不同开局设置不同的变量初始值.

MVU 现在要设置不同的变量初始值很简单, 我们在开局消息中用 <initvar>...</initvar> 包裹这个开局对应的变量初始值即可:

开局 2 的故事...

<UpdateVariable>  <-- 为了方便之后设定变量提示词, 我们在外面再包裹一层 <UpdateVariable>
<initvar>
开局 2 的变量初始值...
</initvar>
</UpdateVariable>

如果不同开局的变量初始值区别很大, 你可以让门之主写卡助手变量初始设置 (initvar)帮你生成.

如果区别很小, 你可以在酒馆输入框左边魔棒 ‣ 变量管理器 ‣ 消息楼层中直接修改变量初始值, 然后将修改后结果复制到 <initvar> 块中: