LPAI AI 游戏编辑器文档

脚本系统

地图格子脚本

脚本系统 控制一个格子能不能显示,以及进出格子时要发生什么 地图里的每个格子都可以配 3 类脚本:`显示需求脚本`、`离开脚本`、`进入脚本`。它们分别负责“能不能看到 / 走到”、“离开时做什么”、“进入后做什么”。 # 先记住这 3 类脚本 脚本 用途 显示需求脚本(js_n) 这个格子现在能不能显示,正

脚本系统

控制一个格子能不能显示,以及进出格子时要发生什么

地图里的每个格子都可以配 3 类脚本:`显示需求脚本`、`离开脚本`、`进入脚本`。它们分别负责“能不能看到 / 走到”、“离开时做什么”、“进入后做什么”。

# 先记住这 3 类脚本

脚本 用途
显示需求脚本(js_n) 这个格子现在能不能显示,正常移动时能不能过去
离开脚本(js_c) 离开当前格子时触发
进入脚本(js_g) 进入目标格子后触发

# 1. js_n 适合做什么

js_n 最适合做:

  • 迷雾解锁
  • 黑暗区域需要道具
  • 某章节前不能看到某个格子
  • 某条件达成后才允许正常移动过去

# 最简单的写法

return player.getPro("火把") >= 1;

# 再复杂一点

const levelEnough = player.getPro("等级") >= 5;
const storyEnough = player.getPro("主线阶段") >= 2;

return levelEnough && storyEnough;

# 最重要的理解

js_n 更适合只做判断。
发奖励、跳剧情这类联动,通常会写在 js_cjs_g

# 2. js_c 适合做什么

js_c 会在离开当前格子时触发。

常见用途有:

  • 离开营地时扣体力
  • 离开安全区时清掉临时状态
  • 离开某地点时写一条日志

# 例子

player.addPro("体力", -1);

或者:

player.setString("当前位置说明", "你已经离开了营地。");

# 3. js_g 适合做什么

js_g 会在进入目标格子后触发。

常见用途有:

  • 第一次进入某地时显示说明
  • 进入区域后刷新当前区域文本
  • 自动触发一个事件
  • 进入新地点后切换提示内容

# 例子

let current = tools.getMapGrid("主地图");
if (current?.name) {
  player.setString("当前位置说明", current.name);
}

# 4. 这几个操作都会触发格子脚本

地图里常见的几种移动方式都会和格子脚本联动:

  • 玩家正常点击移动
  • tools.moveMapDirection(...)
  • tools.jumpMapGrid(...)
  • tools.resetMap(...)

但它们的检查强度不完全一样。

# 5. 正常移动和强制跳转的区别

# 正常移动

  • 会检查地图邻接
  • 会检查 js_n
  • 会触发 js_cjs_g

# jumpMapGrid(...)

  • 不检查邻接
  • 不检查 js_n
  • 但仍然会触发 js_cjs_g

# resetMap(...)

  • 会直接回到起点
  • 不检查 js_n
  • 也会触发 js_cjs_g

所以:

  • 想按正常走路规则移动,用 moveMapDirection
  • 想做传送,用 jumpMapGrid
  • 想回到起点,用 resetMap

# 6. 地图脚本附带的信息

地图格子脚本里,常见可以从 tools.kwargs 里拿到这些信息:

  • mapID
  • mapName
  • currentGridID
  • currentGridName
  • targetGridID
  • targetGridName
  • action

其中最常用的是:

  • currentGridID
  • targetGridID
  • action

action 常见会是:

  • move
  • jump
  • reset

# 例子

if (tools.kwargs.action === "reset") {
  tools.showNotify("地图已重置");
}

# 7. 常用地图方法

# 读取当前格

let current = tools.getMapGrid("主地图");
if (current?.name) {
  player.setString("当前位置说明", current.name);
}

# 按方向移动

tools.moveMapDirection("主地图", "right");

# 直接跳到某个格子

tools.jumpMapGrid("主地图", "废弃仓库");

# 回到起点

tools.resetMap("主地图");

# 8. 常见分工

  • js_n:这个格子现在能不能看到、能不能正常过去
  • js_c:离开这里时顺手做什么
  • js_g:进入这里后顺手做什么

这样看起来更清楚,也更容易排查联动顺序。

# 9. 发奖励这类联动更常写在哪里

像下面这种“判断里顺手发奖励”的写法:

player.addPro("金币", 10);
return true;

如果要发奖励、播提示或推进剧情,更常见的做法是把它们写进 js_cjs_g,因为 js_n 可能会被反复读取。

# 使用时要注意的几件事

  • js_n 适合判断,不适合顺手做结算。
  • jumpMapGridresetMap 不会走 js_n 的拦截。
  • js_c / js_g 更适合做记录、提示和联动。
  • 地图移动后的说明内容,常常适合写进动态字符串再显示。

# 下一步

如果你的地图或剧情还接了 AI,可以继续看 AI智能体脚本