脚本系统
AI智能体脚本
脚本系统 控制 AI 什么时候能说话,以及说完以后要做什么 AI 智能体脚本主要分两类:一类负责判断“现在能不能输入、后悔、重置”,另一类负责“输入前、输出后、后悔后、重置后要做什么”。 # 先记住 7 个脚本位置 界面里的脚本位置 用途 输入需求脚本(inputneedscript) 当前能不能发送输入 后
脚本系统
控制 AI 什么时候能说话,以及说完以后要做什么
AI 智能体脚本主要分两类:一类负责判断“现在能不能输入、后悔、重置”,另一类负责“输入前、输出后、后悔后、重置后要做什么”。
# 先记住 7 个脚本位置
| 界面里的脚本位置 | 用途 |
|---|---|
输入需求脚本(inputneedscript) |
当前能不能发送输入 |
后悔需求脚本(regneedscript) |
当前能不能后悔一步 |
重置需求脚本(resetneedscript) |
当前能不能重置会话 |
输入前触发脚本(beforeinputscript) |
输入真正发给 AI 前执行 |
输出后触发脚本(afteroutputscript) |
AI 输出结束后执行 |
后悔触发脚本(regretscript) |
后悔成功后执行 |
重置触发脚本(resetscript) |
重置成功后执行 |
# 1. 需求脚本是做判断的
这 3 个需求脚本:
输入需求脚本后悔需求脚本重置需求脚本
更适合只做判断。
# 常见写法
return player.getPro("体力") > 0;
或者给出原因:
if (player.getPro("体力") <= 0) {
return "体力不足";
}
return true;
# 这里的返回值怎么理解
| 返回值 | 结果 |
|---|---|
true |
放行 |
false |
不放行 |
"" |
放行 |
| 非空字符串 | 不放行,并把这段文字当成原因 |
# 2. 输入需求脚本适合什么
最常见的用途有:
- 体力不足时禁止继续对话
- 角色死亡时禁止继续行动
- 某段剧情里先锁住输入
- 没有选定对象时先不允许发送
# 3. 后悔需求脚本适合什么
最常见的用途有:
- 只有拿到后悔券才允许回退
- 某些战斗阶段不允许后悔
- 已经结算后不允许撤销
# 4. 重置需求脚本适合什么
最常见的用途有:
- 通关后禁止重置
- 冷却时间内禁止重置
- 某个模式里只能继续,不能清空重来
# 5. 钩子脚本是做动作的
这 4 个脚本:
输入前触发脚本输出后触发脚本后悔触发脚本重置触发脚本
更适合做真正的联动。
比如:
- 改属性
- 写对象
- 写表格
- 写动态字符串
- 跳场景
- 播提示
# 6. 输入前触发脚本会在什么时候执行
顺序大致是:
- 玩家已经提交了这次输入
- 但这条输入还没有真正发给 AI
- 这时执行
输入前触发脚本
最常见的用途:
- 先扣体力
- 记录输入次数
- 写这回合开始的标记
# 例子
player.addPro("体力", -1);
player.addPro("对话次数", 1);
# 7. 输出后触发脚本是最常用的 AI 联动脚本
它会在 AI 一轮输出结束后执行。
最常见的用途:
- 把 AI 结果摘要写进动态字符串
- 根据输出推进剧情
- 创建或修改对象
- 播放提示或特效
# 例子
tools.showToast("AI 已给出新的回应");
player.setString("最近一次对话状态", "AI 已更新当前结果");
# 8. 最新输出保存到字符串目标,和输出后触发脚本怎么配合
当前 AI 智能体面板里有一个 最新输出保存到字符串目标。
如果这里已经填了目标位置,AI 输出会先写过去,然后再执行 输出后触发脚本。
常见顺序是:
- 先把 AI 最新回复保存到字符串目标
- 再在
输出后触发脚本里继续处理后续联动
# 9. 后悔触发脚本和重置触发脚本
# 后悔触发脚本
适合做:
- 回退自己额外写入的状态
- 返还这一回合先扣掉的资源
# 重置触发脚本
适合做:
- 清空会话外的附加记录
- 把一些属性恢复到初始值
# 10. AI 脚本附带的信息
AI 智能体脚本里,常见会从 tools.kwargs 里拿这些上下文:
tools.kwargs.aigametools.kwargs.playerIDtools.kwargs.propertymaps
最常用的是:
const game = tools.kwargs.aigame;
if (game?.name) {
player.setString("当前AI名称", game.name);
}
# 11. 一个常见组合
# 输入前扣体力
if (player.getPro("体力") <= 0) {
return "体力不足";
}
return true;
# 输入前触发脚本
player.addPro("体力", -1);
# 输出后触发脚本
player.setString("最近一次AI状态", "当前 AI 输出已完成");
tools.showToast("新的 AI 回复已完成", "success");
# 12. 这些联动更常写在触发脚本里
像下面这种“判断时顺手扣资源”的写法:
player.addPro("金币", -10);
return true;
如果要真正改状态,更常见的写法是放进 输入前触发脚本、输出后触发脚本、后悔触发脚本 或 重置触发脚本。
# 使用时要注意的几件事
- 输入 / 后悔 / 重置需求脚本更适合只做判断。
- 输出后触发脚本往往是最常用的联动位置。
- 如果已经设置了
最新输出保存到字符串目标,文本会先写回,再执行输出后触发脚本。 - 真正改状态的动作,通常写在各类触发脚本里。
# 下一步
如果你准备让 AI 输出带上视觉反馈,可以继续看 客户端特效系统。