LPAI 独立网页游戏 AI 社区指南

脚本 API

动态字符串脚本

从当前状态同步生成可翻译的展示文本。

脚本 API · 只读文本

把状态整理成文本,而不是在显示时修改状态

动态字符串脚本每次读取时同步返回最终字符串。它适合状态摘要、对象详情和提示文本;需要保存的玩家输入或 AI 输出应写进“允许修改”的动态字符串。

# 先选择实时生成还是持久写入

需求 使用
每次根据属性重新生成 动态字符串脚本
玩家输入后保存 可写动态字符串 + setString
AI 结果写回并跨存档保留 可写动态字符串或动态表格
固定按钮文案 项目 i18n + tools.tr

脚本模式和“允许修改”互斥。一个内容不能同时是实时函数和持久写入目标。

# 可翻译文本

const hp = Number(player.getPro("生命") || 0);
const max = Number(player.getPro("生命上限") || 0);
return tools.tr("生命:{current}/{max}", { current: hp, max });

保存最终中文字符串不会在切换语言后自动翻译。实时界面文案应在读取时调用 tools.tr

# 对象详情

const object = tools.kwargs.object;
if (!object) return tools.tr("暂无对象");

return [
  tools.tr("名称:{value}", { value: object.getName() }),
  tools.tr("等级:{value}", { value: object.getPro("等级") || 0 }),
  tools.tr("状态:{value}", { value: object.getString("状态") || "-" })
].join("<br>");

同一个脚本在重复对象控件中会收到不同对象上下文。不要遍历全类后按名称猜当前实例。

# 表格与集合摘要

const table = player.getTable("任务记录");
const value = table?.getData("当前", "摘要");
return value ? String(value) : tools.tr("暂无任务");

大对象列表不要在每次文本刷新时拼接完整 HTML。先在行为脚本中准备小型摘要,或由渲染布局使用重复协议展示。

# HTML 安全边界

动态字符串可以返回受支持的展示 HTML,但运行时会清洗脚本标签、DOM 事件和危险 URL。来自玩家、AI 或弱联网的数据必须按文本展示,不能作为脚本、Canvas 模块源码或可信 HTML 执行。

# 禁止事项

  • 属性/对象写入、奖励和扣费;
  • AI、弱联网、存档和弹窗;
  • 随机产生需要持久保持的结果;
  • 返回数字、布尔值、对象或 Promise。

# 验收清单

  • 所有路径都同步返回字符串。
  • 玩家可见固定文案经过 tools.tr
  • 当前对象缺失、表格缺失和空值都有回退。
  • 多次读取无副作用、无随机变化。
  • 不可信字符串不会作为可执行源码使用。

继续阅读:文本、图标与动态字符串场景解锁脚本