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

脚本 API

objects:对象集合 API

按类查询、创建、修改和删除玩家存档中的对象实例。

脚本 API · 对象

用稳定对象 ID 管理多份独立实例

`objects` 操作的是当前玩家存档里的对象实例。类定义结构,实例保存自己的属性、字符串、名称和 ID;页面只展示快照,动作脚本负责修改。

# API 清单

方法 参数 返回
objects.getObjects(classname, pro?, start?, end?) 类、可选属性范围 对象代理数组
objects.getObjectsByFilter(filterid, curobjectid?) 筛选器、可选当前对象 ID 对象代理数组;筛选器不存在时 false
objects.newObject(classname, name, des) 类、名称、介绍 新对象代理;失败 false
objects.delObject(classname, index) 类、数组位置 成功 true,失败 false
objects.delObjectByID(classname, id) 类、稳定对象 ID 成功 true,失败 false

对象代理提供:

方法 用途
getID() 读取稳定身份
getName() / setName(name) 读写名称
getDes() / setDes(des) 读写介绍
getPro(name) / setPro(name, value) / addPro(name, delta) / delPro(name) 读写对象属性或清除对象覆写
getComPro(name) 读取当前对象的派生属性
getString(name) / setString(name, value) 读写对象上下文动态字符串

# 查询不要依赖数组位置

const candidates = objects.getObjects("装备")
  .filter((item) => Number(item.getPro("耐久") || 0) <= 0);

for (const item of candidates) {
  objects.delObjectByID("装备", item.getID());
}

排序、筛选和删除都会改变数组顺序。数组索引只适合一次性的临时操作;跨脚本或异步回调必须保存 getID()

# 创建对象是一个事务

const count = objects.getObjects("宠物").length;
if (count >= 50) {
  tools.showToast(tools.tr("宠物栏已满"), "warning");
  return;
}

const pet = objects.newObject("宠物", "幼狼", tools.tr("刚加入队伍的伙伴"));
if (!pet) return;
pet.setPro("等级", 1);
pet.setPro("好感度", 0);

先检查资源和数量,再创建并初始化全部字段,最后才扣费或发放结果。异步动作要使用提交锁或幂等标记,避免快速点击创建两份实例。

# 当前对象上下文

对象控件、对象行脚本和拖放脚本会把当前实例放到 tools.kwargs

const object = tools.kwargs.object;
const objectID = tools.kwargs.objID;
if (!object || !objectID) return;

object.addPro("经验", 1);

object 是可读写代理;objID 适合传给删除、特效和后续动作。名称会变化,不能作为唯一身份。

# 对象筛选器

const targets = objects.getObjectsByFilter("可攻击目标", tools.kwargs.objID);
if (targets === false || targets.length === 0) return;

for (const target of targets) {
  target.addPro("生命", -10);
}

筛选器规则由项目配置决定,脚本只消费结果。需要完全动态的查询时,使用 getObjects 后在脚本中筛选;传统筛选器页面默认隐藏,可从文档开关进入。

# 对象动态字符串

对象上下文读取字符串时,会优先使用当前对象自己的可写覆写,再回退到玩家级字符串:

const title = object.getString("称号");
object.setString("备注", tools.tr("已完成训练"));

写入前确认目标字符串允许修改,并避免把对象描述和权威状态混为一谈。

# 删除与清理

删除对象会从玩家对象集合移除实例并注销运行时对象。删除前应处理当前选中状态、仍指向该 ID 的控件和任务记录、删除奖励的幂等性,以及存档写入失败后的重试。

# 验收清单

  • 同类对象的 ID、属性和字符串彼此独立。
  • 异步回调仍按 ID 操作正确实例。
  • 创建失败不会留下半初始化对象或已扣除资源。
  • 删除当前实例后页面没有悬空选择。
  • 对象脚本没有在渲染/只读上下文中写入。

下一步阅读:对象控件与当前实例tools 对象