LPAI AI 游戏编辑器文档

脚本系统

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. 输入前触发脚本会在什么时候执行

顺序大致是:

  1. 玩家已经提交了这次输入
  2. 但这条输入还没有真正发给 AI
  3. 这时执行 输入前触发脚本

最常见的用途:

  • 先扣体力
  • 记录输入次数
  • 写这回合开始的标记

# 例子

player.addPro("体力", -1);
player.addPro("对话次数", 1);

# 7. 输出后触发脚本是最常用的 AI 联动脚本

它会在 AI 一轮输出结束后执行。

最常见的用途:

  • 把 AI 结果摘要写进动态字符串
  • 根据输出推进剧情
  • 创建或修改对象
  • 播放提示或特效

# 例子

tools.showToast("AI 已给出新的回应");
player.setString("最近一次对话状态", "AI 已更新当前结果");

# 8. 最新输出保存到字符串目标,和输出后触发脚本怎么配合

当前 AI 智能体面板里有一个 最新输出保存到字符串目标
如果这里已经填了目标位置,AI 输出会先写过去,然后再执行 输出后触发脚本

常见顺序是:

  1. 先把 AI 最新回复保存到字符串目标
  2. 再在 输出后触发脚本 里继续处理后续联动

# 9. 后悔触发脚本和重置触发脚本

# 后悔触发脚本

适合做:

  • 回退自己额外写入的状态
  • 返还这一回合先扣掉的资源

# 重置触发脚本

适合做:

  • 清空会话外的附加记录
  • 把一些属性恢复到初始值

# 10. AI 脚本附带的信息

AI 智能体脚本里,常见会从 tools.kwargs 里拿这些上下文:

  • tools.kwargs.aigame
  • tools.kwargs.playerID
  • tools.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 输出带上视觉反馈,可以继续看 客户端特效系统