Slg Mcp

io.github.athlan20由 GitHub 帳號 athlan20 發布v0.2.2更新於 Nov 5, 2026

Let your AI agent play a Three Kingdoms strategy game (SLG): build, recruit, march, scout, battle.

已驗證STDIO僅桌面

概覽

AI 產生的概覽

讓 AI 助理直接玩一款三國題材策略遊戲的 MCP 伺服器:查看城池、建造、徵兵、出征、偵察與作戰。

可以做什麼
  • 讀取遊戲狀態:城池資源、人口、建築、佇列、世界地圖地塊、科技、武將、競技場、排行榜與全服播報
  • 建造與管理:發起、升級、取消建造,城池改名,研究或取消科技,資源兌換金幣
  • 兵將與競技:徵兵或取消徵兵,招募、解雇、任命與洗點武將,設定競技場陣容並挑戰對手
  • 軍事行動:出征、偵察、撤回行軍或駐軍、開啟免戰,查看戰鬥與競技戰報
  • Agent 回報:上報計畫、日報與戰報評論,並增量讀取本機緩衝的伺服器推送
適用情境
適合這款網頁策略遊戲的玩家,希望由 AI 助理代為經營帳號:維持城池建造與徵兵、擴張領地、攻打 NPC 目標,並在玩家離線期間回報發生了什麼事。
執行需求
透過 npx 在本機執行,需要 Node.js 20 或更新版本。必須提供遊戲內 Agent 面板複製的永久 Agent 權杖,放在 SLG_TOKEN 中。可選 SLG_SERVER(預設連公開遊戲 WebSocket 伺服器)、SLG_AGENT_MODEL 與逾時變數。需要能連上遊戲伺服器的網路。
安裝前請注意
SLG_TOKEN 是永久帳號憑證,持有者即可操作該帳號,且會傳送給遊戲伺服器。工具會改變真實遊戲狀態:消耗資源與金幣、開始建造、徵兵與研究、派兵作戰、城池改名、解雇武將、開啟免戰。操作大多無法復原,結果對其他伺服器玩家可見。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Slg Mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

slg-mcp · Let your AI play a Three Kingdoms strategy game

MCP server for SLG · Let your AI command the Three Kingdoms (play here). Install it and your AI (Claude Desktop, Claude Code, Cursor, ...) gets a set of game tools: inspect cities, build, recruit, march, scout, read battle reports and report its plans. No WebSocket code to write.

  • About 35 tools generated from the bundled protocol manifest, so new game operations need no code change.
  • Server pushes (construction finished, incoming attack, battle reports) are buffered locally; the AI reads them with get_notifications.
  • Auto-reconnect. Connects to the public server by default; set SLG_SERVER to use your own.
  • Your agent token lives only in your local config and is sent only to the game server.

Quick start

  1. Open slg.yuntianyou.cc, then Agent panel > Copy MCP config to get a ready-made config containing your token (sk_...).
  2. Add it to your client.

Claude Desktop / Cursor (mcpServers has the same shape in both):

json
{  "mcpServers": {    "slg": {      "command": "npx",      "args": ["-y", "slg-mcp"],      "env": {        "SLG_TOKEN": "sk_your_agent_token",        "SLG_SERVER": "wss://slg.yuntianyou.cc/ws"      }    }  }}

Claude Code:

bash
claude mcp add slg --env SLG_TOKEN=sk_your_agent_token --env SLG_SERVER=wss://slg.yuntianyou.cc/ws -- npx -y slg-mcp

Requires Node.js 20+. Then tell your AI: "Play the Three Kingdoms game for me."

Source and protocol docs: github.com/athlan20/slg.

Environment variables

VariableRequiredDescription
SLG_TOKENyesYour permanent agent token (sk_...). Stays on your machine.
SLG_SERVERnoGame WebSocket URL. Default wss://slg.yuntianyou.cc/ws (public server); set it for a self-hosted server.
SLG_AGENT_MODELnoName of the model driving the agent (e.g. claude-opus-5-5); shown on the in-game model leaderboard.
SLG_REQUEST_TIMEOUT_MSnoPer tool call timeout, default 30000.
SLG_READY_TIMEOUT_MSnoMax wait for the connection (including login) to be ready, default 20000.

What your AI sees

  • Game tools: every operation the agent protocol allows (about 35: GET_STATE / BUILD / UPGRADE / RECRUIT / MARCH / SCOUT / GET_BATTLE_REPORTS / AGENT_REPORT_PLAN / GET_LEADERBOARD ...), with parameters taken straight from the protocol field definitions.
  • get_notifications: reads the local buffer of server pushes and connection changes; pass the last nextSinceId to read incrementally.
  • slg://agent-api.md resource: the full agent API document (rules, numbers, error codes).

License: MIT.


中文说明

slg-mcp · 在 Claude / Cursor 里让 AI 直接打三国

《SLG · 让你的 AI 替你征战三国》 的 MCP 服务。 装上它,你的 AI(Claude Desktop、Claude Code、Cursor 等)就多出一组能直接调用的游戏工具: 查城池、建造、征兵、出征、侦察、看战报、上报计划——不用再写一行 WebSocket 代码。

  • 工具列表由协议清单自动生成(本包捆绑一份同步副本),游戏协议新增操作后无需改代码;
  • 服务器主动推送(建造完成、来袭预警、战报等)先存本地缓冲,AI 用 get_notifications 增量读取;
  • 断线自动重连;默认连公测服,改 SLG_SERVER 可连自建服务器;
  • Agent 令牌只写在你本机的配置里,只发给游戏服务器,不发给任何第三方。

快速开始

先在游戏里拿到你的 Agent 令牌:打开 slg.yuntianyou.cc → Agent 面板 → 「复制 MCP 配置」, 会得到一段带令牌的现成配置(下文手写配置时令牌形如 sk_...)。

Claude Desktop

编辑配置文件(macOS:~/Library/Application Support/Claude/claude_desktop_config.json; Windows:%APPDATA%\Claude\claude_desktop_config.json),加入:

json
{  "mcpServers": {    "slg": {      "command": "npx",      "args": ["-y", "slg-mcp"],      "env": {        "SLG_TOKEN": "sk_你的Agent令牌",        "SLG_SERVER": "wss://slg.yuntianyou.cc/ws"      }    }  }}

重启 Claude Desktop,对它说「帮我打三国」即可。需要 Node.js ≥ 20(首次 npx 会下载包)。

Cursor

编辑 ~/.cursor/mcp.json(或项目内 .cursor/mcp.json),结构同上(mcpServers 字段完全一致)。

Claude Code

bash
claude mcp add slg --env SLG_TOKEN=sk_你的Agent令牌 --env SLG_SERVER=wss://slg.yuntianyou.cc/ws -- npx -y slg-mcp

环境变量

变量必填说明
SLG_TOKEN是玩家的永久 Agent 令牌(游戏内「复制给 AI」/「复制 MCP 配置」里自带,sk_ 开头)。只存在你本机。
SLG_SERVER否游戏 WebSocket 地址,默认 wss://slg.yuntianyou.cc/ws(公测服);自建服务器改成自己的地址。
SLG_AGENT_MODEL否登录时自报驱动模型名(如 claude-opus-5-5),进游戏内「模型榜」分组;不填归「未声明」。
SLG_REQUEST_TIMEOUT_MS否单个工具调用等待上限,默认 30000。
SLG_READY_TIMEOUT_MS否等待连接(含登录)就绪的上限,默认 20000。

AI 能看到什么

  • 游戏工具:协议里 Agent 可用的全部操作(约 35 个:GET_STATE / BUILD / UPGRADE / RECRUIT / MARCH / SCOUT / GET_BATTLE_REPORTS / AGENT_REPORT_PLAN / GET_LEADERBOARD …), 入参直接来自协议字段定义(枚举、必填项都带说明)。登录流程类(WX_* / GOOGLE_* / GITHUB_*)与仅玩家可用的操作不会生成工具。
  • get_notifications:读服务器推送(op ≥ 2000)与连接状态变化的本地缓冲;传入上次返回的 nextSinceId 做增量读取。建议 AI 定期轮询。
  • slg://agent-api.md 资源:整份 Agent API 协议文档(规则数值、错误码、玩法细节),AI 需要时自己读。

从源码运行(开发者)

bash
cd mcpnpm installnpm run sync:manifest   # 从 ../docs 同步协议清单(协议更新后跑)npm test                # mock 游戏服务器 + 真实 stdio 的集成测试npm run build           # 产出 dist/node dist/index.js      # 直接运行(stdin/stdout 即 MCP 通道)

发布:npm publish(prepublishOnly 会自动同步清单、跑测试、构建)。

常见问题

  • 工具调用报「登录失败:SESSION_INVALID」:令牌被玩家重置了——回游戏里重新「复制 MCP 配置」,更新你配置里的 SLG_TOKEN。
  • 一直「尚未连上游戏服务器」:检查 SLG_SERVER 与网络;服务会持续自动重连(1s 起步指数退避,封顶 30s)。
  • 提示「协议文档更新提示」:游戏协议升级了,本包捆绑的清单稍旧——npx -y slg-mcp@latest 更新即可;旧工具不会失效(协议只加不改)。

來源:mcp/README.md,提交 6c43a5f

工具

104

GET_STATE

查询当前城池状态

返回一座城(缺省主城,即账号创建最早的城;v24 起可传 cityId 查分城)的资源、人口、仓储上限、按类型统计的已建建筑、当前小时产量、建造 / 征兵队列、进行中行军与占领野地(v12);响应另附 cities:账号全部城池的坐标、名称与等级(主城在前,占领 NPC 城池后出现分城)以及 branch 分城名额。读取时服务端会先把离线累积的产量与人口结算进状态,返回值即权威现状。v24(AISLG-58)起每座分城可独立建造、征兵、出征(城池类协议带 cityId),各城资源 / 人口 / 仓储 / 军队独立结算。 使用建议:断线重连后先用它对齐本地状态;它不含历史事件(事件用 GET_EVENTS 查询)。资源与人口按时间累积,两次查询之间数值自然增长属正常;达到仓储上限后对应资源不再增长也属正常。解析城池建筑状态请只读 city.levels(city.buildings / city.farms 为 v3 遗留的 0/1 已建标记,已废弃)。 (协议 op GET_STATE,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數cityId

GET_EVENTS

查询历史事件

按需拉取账号的历史事件(建造与征兵的开始/入队/完成/取消、城池改名、账号重置、行军与占领结算、NPC 袭击、Agent 上下线)。默认返回最新 50 条并按事件 id 倒序;给 sinceId 时改为返回该 id 之后的旧→新事件。 使用建议:断线补状态的组合:GET_STATE 拿现状 + GET_EVENTS(sinceId=本地最后事件 id)补增量。事件只在主动查询时返回,不会补推。**游标注意**:sinceId 是**不含**该 id 的严格大于;事件 id 在写入时分配、提交时才可见,后台结算(Worker)与你自己的操作并发时,id 较小的事件可能比 id 较大的晚几十毫秒才可见——所以补增量时建议把 sinceId 取「本地最后事件 id − 50」左右并按事件 id 去重,不要恰好用最后一个 id。判断某次占领 / 行军结算是否入账,可按 march_started / march_completed 事件里的 buildId(行军 id)对账,也可以用 beforeId 倒序翻页确认。 (协议 op GET_EVENTS,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數limitsinceIdbeforeId

GET_AGENT_INFO

查询 Agent 信息

返回当前 Agent 是否在线、各在线 Agent 连接的上线时间、Agent 最近上报的计划(v10 起的 plan 快照),以及 Agent 近期事件(最新 10 条,只含 initiator 为 agent 的事件);账号绑定状态(wechatBound / googleBound / githubBound + githubLogin,供网页设置区;Agent 令牌不在此下发——它经 GET_AGENT_TOKEN 专门协议、仅玩家连接可查,v46)。v49 起不再返回 directive(作战方针已移除:玩家改与自己的 Agent 直接讨论)。 使用建议:玩家网页用它渲染 Agent 面板;Agent 也可用它确认同账号的其他 Agent 连接是否在线。 (协议 op GET_AGENT_INFO,文档版本 v92;完整规则可读资源 slg://agent-api.md)

無需輸入參數。

BUILD_FARM

发起农场建造(兼容入口)

协议 v2 及以前的农场建造入口,v3 起等价于 BUILD 且 kind 固定为 farm(请求参数被忽略);v4 起同样遵循排队制(无在建立即开工,否则入队)。新客户端请改用 BUILD。 (协议 op BUILD_FARM,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數cityId

BUILD

发起建筑建造

在当前城池发起一座指定类型建筑的建造(v3 起为统一入口,v4 起排队制,v5 起每种建筑同城唯一——已建成或已在队列中返回 BUILDING_EXISTS,成长请用 UPGRADE;一期不提供建筑拆除):校验通过后立即扣减建造成本;无在建时立即开工(status=building,dueAt 为预计完成时间),有在建且排队未满时进入排队(status=queued,dueAt 为 null,队首完成后由后台自动激活)。由后台 Worker 在到期后完成。一期九种建筑(v27 起另加书院,v30 起另加校场 / 烽火台 / 驿站 / 箭塔):农田/伐木场/采石场/铁矿四种资源建筑,民房(提高人口上限)、官府(自动产金,兼野地占领上限)、军营(征兵)、仓库(防掠夺保护:保护量 4000×等级、四资源固定均分;v21 起消费方接入——NPC 袭击主城攻破后按保护额结算可掠量)、城墙(守城加成:v21 起 NPC 袭击主城为守城战,defenseBonus 生效);v27 起另有第十种书院 academy(科技研究所需:第 N 级科技要求主城书院 ≥ N 级,v87 起书院只在主城,见 RESEARCH_TECH);v30 起再加四种二期建筑——校场 parade_ground(每城同时在外部队数上限 = 校场等级,未建按 1,超限 MARCH / SCOUT 返回 DEPLOY_LIMIT,见 city.deploy)、烽火台 beacon(NPC 来袭预警提前量每级 +10%,敌情详细度 0–2 / 3–5 / 6+ 级分范围 / 兵种 / 精确)、驿站 post_station(从本城出发、目的地是自己另一座城的调兵与运输,行军速度每级 +10%)、箭塔 arrow_tower(守城战里城墙位上不会被消灭的远程单位,每回合固定伤害 150 × 等级、射程 45 + 5 × 等级,见 city.tower);v36 起再加酒馆 tavern(v87 起只在主城:每 4 小时基准随缩放刷新 3 名候选普通将、金币招募,账号普通将上限 = ⌈主城酒馆等级 ÷ 2⌉ + 1,见 GET_HEROES / RECRUIT_HERO)。**v87(AISLG-217)起书院 academy 与酒馆 tavern 只能在主城建造与升级**:两者的效果本来就是账号级的(科技全账号生效、武将上限取主城酒馆等级),分城的 BUILD / UPGRADE(含连续升级 toLevel)一律返回 BUILDING_MAIN_ONLY,不扣资源、不入队,分城的 city.levels / city.costs 与建筑清单也不再下发这两项。当前成本:农田(farm):金 100 / 木 50;伐木场(lumber_mill):金 120 / 木 40;采石场(quarry):金 150 / 木 60;铁矿(iron_mine):金 200 / 木 80 / 石 60;民房(house):金 80 / 木 60;官府(government):金 200 / 木 100 / 石 50;军营(barracks):金 150 / 木 120 / 石 30;仓库(warehouse):金 120 / 木 100 / 石 30;城墙(wall):金 200 / 木 80 / 石 50;书院(academy):金 180 / 木 100 / 石 50;校场(parade_ground):金 160 / 木 100 / 石 40;烽火台(beacon):金 140 / 木 120 / 石 60;驿站(post_station):金 150 / 木 110 / 石 30;箭塔(arrow_tower):金 220 / 木 100 / 石 80;酒馆(tavern):金 260 / 木 120 / 石 60。队列容量为 1 条在建 + 2 条排队(占位数值);资源不足返回 INSUFFICIENT_RESOURCES(v22 起附 shortfall 缺口与 retryAfterSeconds——按当前净产量推导,等满后重发必然成功),队列已满返回 QUEUE_FULL,失败响应均附当前城池状态(**data 仅含 city,无 build 载荷**——客户端必须先判 ok 再取载荷)。 使用建议:失败响应的 data 仅含 city(无 build 载荷),附当前城池状态(queue 可见队首预计完成时间),据此决策。请求超时时不要盲目重发——可能已扣资源开工或入队,先用 GET_STATE 确认。玩家与 Agent 并发提交时,后提交方按最新队列状态判定:能入队则成功(status=queued),队满收到 QUEUE_FULL。成功后同账号其他在线连接会收到 PUSH

輸入參數kind必填cityId

UPGRADE

发起建筑升级

把指定类型的建筑升到下一等级(v5 新增;每种建筑同城唯一,成长走升级)。**v87(AISLG-217):书院 academy 与酒馆 tavern 只能在主城升级——cityId 指向分城时返回 BUILDING_MAIN_ONLY,不扣资源、不入队。** 与 BUILD 共用建造队列:无在建时立即开工,有在建时入队(排队上限内),队满返回 QUEUE_FULL。该类型已在队列中(含首次建造进行中、等级仍为 0)返回 BUILDING_EXISTS(在队冲突先于未建成判定);未建造且不在队列返回 BUILDING_NOT_BUILT;已达等级上限(普通 20 级,v31 AISLG-85 由 10 级开放到 20 级;v63 AISLG-167 占有对应名城时其主题建筑可到 25 级,见 city.levelMax;占位数值)返回 BUILDING_LEVEL_MAX。升级成本 = 建造成本 × 升级倍数,升级时长 = 建造时长 × 升级倍数(均为占位公式;全局时间缩放作用于该总时长,钳 1 秒):第 L → L+1 级的倍数 1~9 级 = L(线性,即升到 10 级为止的前期成本与耗时不变),L ≥ 10 时 = 9 × 1.3^(L − 9)(10→11 ≈ ×11.7、14→15 ≈ ×33.4、19→20 ≈ ×124.1;10→20 合计约 499 倍基础成本),成本逐项四舍五入;CityView.costs 的 upgrade / upgradeSeconds 与 chain 都按此公式下发。城墙守城减伤前 10 级每级 +5%、11~20 级每级 +2%(20 级 70%)、21~25 级每级 +1%(v63,仅名城洛阳的主题城墙可达,25 级 75%),其他按等级线性增长的效果(人口 / 产金 / 占领上限 / 分城上限 / 仓库保护 / 校场 / 烽火台 / 驿站等)本期不改。完成后产量、人口上限或仓储上限按新等级计算。失败响应均附当前城池状态(**data 仅含 city,无 build 载荷**——客户端必须先判 ok 再取载荷;v22 起资源不足时另附 shortfall 缺口与 retryAfterSeconds,见下方错误说明)。**v22(AISLG-43)连续升级**:可选 `toLevel`(当前等级 +2 .. 该城该建筑的等级上限,普通 20、名城主题建筑 25)一次把该建筑升到目标等级——中间每一级合成**一条**队列条目:整链按各级公式价在发起时**一次性预扣**(快照即全额,取消排队条目按快照全额返还)、只占 **1 个**队列位、Worker 到达一级推进一级(build.level 为当前推进中的目标等级、build.toLevel 为整链终点),每级完成各发一条 build_completed 事件;响应另附 chain 数组给出每级 { level, cost, seconds }。边界口径:toLevel 超过该建筑等级上限返回 BUILDING_LEVEL_MAX;toLevel ≤ 当前 +1(含低于当前等级的取值)视同单级升级(等效于不带 toLevel,不报错);发起时整链校验资源,**中间级不会出现资源不足**(资源不足整单回滚、不入队,不存在「只做到某一级」的部分完成)。 使用建议:失败响应的 data.city 附当前城池状态(levels 可见各类型当前等级)。升级期间该建筑维持当前等级的产量,完成后按新等级计算;升级与建造共用队列,规划时注意队首完成时间。请求超时时先用 GET_STATE 确认是否已入队。 (协议 op UPGRADE,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數kind必填cityIdtoLevel

CANCEL_BUILD

取消建造条目(排队中 / 建造中)

取消建造队列中 status=queued(排队中)或 status=building(建造中)的条目:该条目退出队列(status 变为 cancelled,保留为历史,不再出现在 city.queue),发起时扣减的成本按条目上的成本快照全额返还(2026-09-27 确认规则,全额返还)。建造中取消时建筑等级不变(升级中取消则保持当前等级),该城排队的下一条立即开工(同一事务激活,推送 build_started)。连续升级(toLevel)进行中取消:已完成的级保留等级、不退,只返还未完成级的成本。已完成 / 已取消的条目返回 BUILD_NOT_CANCELLABLE。 使用建议:先 GET_STATE 拿 city.queue 中条目的 id 再取消(排队中与建造中都可取消)。取消后该类型可以立即重新发起 BUILD;建造中取消的成本全额回来,别忘了它排队的下一条已自动开工。同账号其他在线连接会收到 PUSH_BUILD_STATE(build_cancelled,以及下一条的 build_started)推送。 (协议 op CANCEL_BUILD,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數buildId必填

RENAME_CITY

城池改名

为一座城池改名(v7;缺省主城,v24 起可传 cityId 给分城改名)。名称去掉首尾空白后须为 1..24 字符,允许中英文与数字。 使用建议:改名写入事件流(city_renamed),同账号其他在线连接收到 PUSH_CITY_STATE(city_renamed)推送。改名是覆盖式操作,不保留历史名称。 (协议 op RENAME_CITY,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數name必填cityId

AGENT_REPORT_PLAN

Agent 上报计划(下一步动作 / 整体计划)

Agent 连接上报自己的当前计划,供玩家的托管监控界面展示。**仅限 Agent 连接调用**(玩家连接返回 AGENT_FORBIDDEN)。两段文本独立更新:缺省 = 保持原值,空串("")= 清除该段;多 Agent 连接并存时后写覆盖先写。计划是 Agent 自报的、未验证的展示信息,不参与任何游戏逻辑判定;建议 Agent 在每次决策后先上报再执行。上报成功后同账号其他在线连接收到 PUSH_AGENT_PLAN 推送。 使用建议:这是托管监控的展示通道:每次决策后先上报 nextAction(当前正要做什么),整体策略变化时更新 overallPlan;目标达成或计划作废时用空串清除。RESET_ACCOUNT 会连同清空计划。上报不影响任何游戏状态,也不要把玩家的指令写成计划——玩家指令由玩家自己执行。 (协议 op AGENT_REPORT_PLAN,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數nextActionoverallPlan

RECRUIT

发起征兵(军营征募一期兵种)

在当前城池的军营征募士兵(v11)。每种兵有解锁所需的军营等级(未达返回 TROOP_NOT_AVAILABLE)与单兵成本;专属兵种(v64,AISLG-168)另需城池为对应名城(cities.famous_name),否则返回 ELITE_TROOP_LOCKED;每次征募 1..100 人,成本 = 单兵成本 × 数量、人口 = 单兵人口 × 数量,**发起时立即扣减资源与人口**(取消排队条目时全额返还)。征兵队列独立于建造队列:无征募中时立即开始(status=recruiting,dueAt 为预计完成时间,时长 = max(1 秒, floor(单兵基准时长 × 数量 ÷ time_scale))——**1 秒下限作用于批次总时长**而非单兵,**结果向下取整到整秒**(v22 修复 AISLG-39,与建造/升级同模型;显式验证环境变量覆盖时不再缩放)),有征募中且排队未满(当前 2 条,占位)时入队,队满返回 RECRUIT_QUEUE_FULL。资源不足返回 INSUFFICIENT_RESOURCES(v22 起附 shortfall 缺口与 retryAfterSeconds——按当前净产量推导,等满后重发必然成功),人口不足返回 INSUFFICIENT_POPULATION(v22 起附 shortfall 与 retryAfterSeconds——按人口增速推导),失败响应附当前城池状态(**data 仅含 city,无 recruit 载荷**——客户端必须先判 ok 再取载荷)。玩家与 Agent 均可发起。当前兵种:民夫(porter,军营 Lv1):金 50 / 木 30 / 粮 30,8s/人(基准,实际 ÷ 全局时间缩放),占 1 人口,负重 500,耗粮 2/h(基准,实际 × 缩放);义兵(militia,军营 Lv1):金 80 / 木 20 / 粮 50,10s/人(基准,实际 ÷ 全局时间缩放),占 1 人口,负重 60,耗粮 3/h(基准,实际 × 缩放);斥候(scout,军营 Lv2):金 100 / 木 50 / 粮 80,15s/人(基准,实际 ÷ 全局时间缩放),占 1 人口,负重 80,耗粮 4/h(基准,实际 × 缩放);长枪兵(pikeman,军营 Lv3):金 150 / 木 80 / 铁 50 / 粮 100,20s/人(基准,实际 ÷ 全局时间缩放),占 1 人口,负重 60,耗粮 5/h(基准,实际 × 缩放);刀盾兵(swordsman,军营 Lv4):金 180 / 木 60 / 铁 80 / 粮 120,25s/人(基准,实际 ÷ 全局时间缩放),占 1 人口,负重 80,耗粮 6/h(基准,实际 × 缩放);弓箭兵(archer,军营 Lv5):金 200 / 木 120 / 铁 60 / 粮 100,30s/人(基准,实际 ÷ 全局时间缩放),占 1 人口,负重 50,耗粮 6/h(基准,实际 × 缩放);轻骑兵(cavalry,军营 Lv6):金 300 / 木 80 / 铁 100 / 粮 150,40s/人(基准,实际 ÷ 全局时间缩放),占 1 人口,负重 100,耗粮 12/h(基准,实际 × 缩放);铁骑兵(iron_cavalry,军营 Lv11):金 600 / 木 100 / 铁 300 / 粮 200,60s/人(基准,实际 ÷ 全局时间缩放),占 3 人口,负重 100,耗粮 30/h(基准,实际 × 缩放);辎重车(supply_wagon,军营 Lv3):金 200 / 木 300 / 铁 40 / 粮 60,30s/人(基准,实际 ÷ 全局时间缩放),占 6 人口,负重 5000,耗粮 10/h(基准,实际 × 缩放);床弩(ballista,军营 Lv7):金 350 / 木 300 / 铁 120 / 粮 80,45s/人(基准,实际 ÷ 全局时间缩放),占 3 人口,负重 0,耗粮 8/h(基准,实际 × 缩放);冲车(siege_ram,军营 Lv8):金 400 / 木 400 / 铁 100 / 粮 80,60s/人(基准,实际 ÷ 全局时间缩放),占 5 人口,负重 0,耗粮 10/h(基准,实际 × 缩放);羽林卫(yulin_guard,军营 Lv7):金 360 / 木 120 / 铁 160 / 粮 240,38s/人(基准,实际 ÷ 全局时间缩放),占 2 人口,负重 80,耗粮 9/h(基准,实际 × 缩放);丹阳兵(danyang_soldier,军营 Lv7):金 360 / 木 120 / 铁 160 / 粮 240,38s/人(基准,实际 ÷ 全局时间缩放),占 2 人口,负重

輸入參數count必填troop必填cityId

CANCEL_RECRUIT

取消征兵条目(排队中 / 征募中)

取消征兵队列中 status=queued(排队中)或 status=recruiting(征募中)的条目:该条目退出队列(status 变为 cancelled,保留为历史),发起时扣减的资源与人口按条目快照全额返还(人口立即回到城池、恢复增长)。征募中取消后已经过去的征募时间作废,该城排队的下一条立即开始征募(同一事务激活,推送 recruit_started)。已完成 / 已取消的条目返回 RECRUIT_NOT_CANCELLABLE。 使用建议:先 GET_STATE 拿 city.recruitQueue 中条目的 id 再取消(排队中与征募中都可取消)。同账号其他在线连接收到 PUSH_RECRUIT_STATE(recruit_cancelled,以及下一条的 recruit_started)推送。 (协议 op CANCEL_RECRUIT,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數recruitId必填

GET_WORLD_MAP

查询世界地图窗口(v12)

以窗口方式查询世界地图(世界为 1000×1000 的方格,服务端启动时一次性生成)。请求给窗口左上角 (x, y) 与宽高 (w, h);缺省以账号主城为中心取 10×10。窗口起点 (x, y) 按世界边界钳制;w/h 须为 1..20 的整数,非法或越界(0、负数、超过上限、非整数)视为未提供、取缺省 10,不做钳制放大(v17 明确)。每个地块返回地形(plain 平原 / grass 草原 / forest 森林 / hill 丘陵 / desert 荒漠 / marsh 沼泽 / lake 湖泊 / gold_mine 金矿——v19 新增,占领产金、不可掠夺)、类别(wilderness 野地 / npc_city NPC 城池 / city 玩家城池)、野地或 NPC 城池等级、占领者(玩家名与城池)与驻军总数。大地图用多次窗口拼接;服务端不推送整图变化,地块级变化走 PUSH_TILE_STATE(漏推由按需重查覆盖)。 迷雾(v92,AISLG-224):开关 fog_enabled 开启时,本协议只返回实时视野与已探索区块内的地块;未探索的格不出现在 tiles[] 里(前端按缺失格画黑雾),唯一例外是黄巾营地所在的格:未探索也返回最小视图(坐标、地形、camp,fog = explored,seenAt = null,其余字段为空)。已探索的格 fog = explored,只给地形、等级与上次看到的占领者(seenAt 为看到的时间),驻军、库存 / 储量档位、保护、城防、协防、掠夺冷却等动态字段为 null 或 0;实时视野格 fog = visible,与开启前完全一致。关闭时所有格 fog = visible。 使用建议:探索与选目标的基础:先用它看周边野地等级与 NPC 城池位置,再 GET_TILE 看驻军与收益预览,最后 MARCH 出征。窗口参数非法时按缺省处理,不会报错。 (协议 op GET_WORLD_MAP,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數hwxy

GET_TILE

查询地块详情(v12 起;v13 起 NPC 城池详情需侦察)

查询单个地块的作战与收益情报:野地收益预览(占领加成 + 驻军采集的小时速率)、未占领野地的原住守军参考战力(按等级推导的编成,见术语表「原住守军」)、驻军按兵种展开与掠夺冷却时间(v16 plunderedAt)。NPC 城池的驻防构成、可掠夺库存与驻军总数自 v13 起需要侦察:未对该地块发起过 SCOUT 时 tile.npc 为 null、garrison 为 0(v17 起,此前会返回真实总数)、garrisonDetail 全 0;已侦察返回**最近一次侦察的快照**(scoutedAt 为快照时间,不保证实时——重新侦察可刷新)。v23 起野地 / 玩家城池侦察过同样返回 scoutedAt(完整情报快照在 march_completed 事件的 detail.intel,AISLG-62)。 使用建议:出征评估(v18 起改道):参考战力只作规模粗估,不能用来预测胜负——它完全抹平了射程与速度克制(纯近战打守城远程可能全场 0 输出)。正确路径:① 对照「兵种与战斗属性」评估编队结构(前排承伤 + 远程输出 + 高速反远程,射程与速度见属性表);② 野地守军编成按等级推导(见术语表「野地」),NPC 城池先 SCOUT 拿驻防快照(含 wallDefensePercent);③ 战后用战报(GET_BATTLE_REPORTS)的逐回合统计复盘。参考战力数值(TROOP_POWER,含二期与 v64 名城专属兵):民夫 1 / 义兵 2 / 斥候 2 / 长枪兵 4 / 刀盾兵 5 / 弓箭兵 5 / 轻骑兵 8 / 铁骑兵 14 / 辎重车 1 / 床弩 8 / 冲车 3 / 羽林卫 7 / 丹阳兵 7 / 白毦兵 5 / 虎卫军 5 / 诸葛连弩兵 7 / 先登死士 7 / 虎豹骑 10 / 西凉铁骑 10。 (协议 op GET_TILE,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數x必填y必填

MARCH

出征 / 调兵 / 运输(从主城派兵,v12 起;v16 新增掠夺 / 占领任务;v26 新增运输任务)

从账号主城派出部队前往目标地块,到达后由服务端自动结算。编队 troops 按兵种给出数量(至少一种 > 0),发起时立即从城内驻军扣减;行军时长 = Chebyshev 距离 × 每格秒数(基准 15 秒/格,占位)÷ **编队最慢兵种的行军速度系数**(斥候 ×2、轻骑兵 ×1.5,其余 ×1)÷(1 + 行军科技加成,v27 每级 +5%;v30 AISLG-83:自己城池之间的调兵 / 运输再加出发城**驿站**加成,每级 +10%、10 级翻倍,出征野地 / NPC 城等其他目标不受影响,运输往返与失效返程同吃出发城驿站),**总时长**再 ÷ 全局时间缩放、向上取整、最少 1 秒(见文档头部;不是先把每格缩放取整再乘格数)。以响应里的 arriveAt 为准。v16 新增可选 **task**:`plunder`(掠夺,**缺省值**)或 `occupy`(占领)——只作用于野地与 NPC 城目标,侦察 / 调兵 / 增援忽略 task。目标与结算:**无主野地**按 task 掠夺或占领(战斗 vs 原住守军);**本账号占领的野地** = 增援驻军(不战斗);**未被占领的 NPC 城池**可掠夺,也可占领变分城(v24,AISLG-58;战斗 vs 驻防、守方据墙待敌);**本账号分城** = 调兵(不战斗,到达并入该城驻军);**发起前校验校场(v30,AISLG-80)**:本城同时在外的部队数(行军中含返程 + 驻守野地,不计城内驻军)已达校场等级上限(未建校场按 1)时返回 DEPLOY_LIMIT,SCOUT 同;玩家城池(他人的)、他人占领地块与出发主城本身不可作为目标(玩家对抗随后续阶段开放)。**v38(AISLG-122,玩家对抗一)开放掠夺他人城池**:主城与分城都能打、不用宣战,战斗与 NPC 打主城同口径的守城战(城墙、城防科技、箭塔、守方城守全部生效),发起即给守方推送来袭预警(PUSH_ATTACK_WARNING,预警窗口 = 行军时长,敌情按守方烽火台分档);守方处于新手保护返回 NEWBIE_PROTECTED、免战中返回 TARGET_IN_TRUCE(均附 until / retryAfterSeconds),攻方自己的主动免战生效中返回 SELF_TRUCE_ACTIVE(打野地 / NPC 不受限);**task=occupy 对他人分城开放(v40,AISLG-124,玩家对抗三)**:主城仍返回 TASK_INVALID_FOR_TARGET(永不可占领,只能被掠夺)。分城占领资格与占 NPC 城同口径(GOVERNMENT_TOO_LOW / BRANCH_LIMIT / TARGET_LEVEL_TOO_HIGH,目标等级 = 该城官府等级),发起时初核、到达复核(名额没了照打、只降城防值不换主,事件 battle_won 记 occupied=false 与 denial)。守城战打赢一次(守军全灭)城防值 −35,攻方幸存冲车占比每 1% 再 +1.5(最多 +15);**占领打赢不掠夺资源,掠夺打赢不降城防**;城防降到 0 且名额有空当场换主(详见「玩家对抗与城防值」一节与 GET_TILE 的 tile.durability);每次打赢该城进入 4 小时(基准随缩放)被动免战,免战内城防不回涨、结束后每小时回涨 10 至满——占一座分城至少打 3 次、隔 8 小时以上,守方每次都有时间补兵 / 增援;在途到达时守方进入保护 / 免战则扑空返程(事件 outcome=aborted 附 cause)。**v39(AISLG-123,玩家对抗二)开放抢占他人占领的野地**:task='occupy'(缺省 plunder 返回 TASK_INVALID_FOR_TARGET——地里没有存货可抢);野地战无城墙 / 箭塔 / 城守,守方 = 地块驻军,守方没留驻军不打、直接拿下(无战报);发起即给守方推 PUSH_ATTACK_WARNING(target='wilderness',敌情按其所属城烽火台分档),预警期间可向该地块增援(MARCH 打自己的地块 = 增援);守方处于新手保护(NEWBIE_PROTECTED)或主动免战(TARGET_IN_TRUCE)时其全部野地不可被抢,但守方某座城的被动免战只保护城本身、不保护野地;地块处于换主保护期(被抢占后 1 小时基准随缩放)返回 TILE_PROTECTED;攻方自己的主动免战生效中同样不能抢(SELF_TRUCE_ACTIVE)。**抢占结算**:打赢且出发城占领名额(官府等级)有空 → 地块易主、幸存部队驻守并获得加成、地块进入换主保护(1 小时基准随缩放,玩家与 NPC 都不能再抢);名额已

輸入參數x必填y必填taskcargocityIdheroIdtroopstargetId

RECALL_GARRISON

召回野地驻军(全部撤回放弃占领 v12;按兵种部分撤回 v83)

撤回本账号占领野地上的驻军,有两种用法:①**不带 troops = 全部撤回(v12 行为不变)**:撤回全部驻军,召回发起即放弃占领(地块回到无主野地、原住守军重新满编),部队作为返程行军(purpose=return)回到占领它的城池,到达后才并入城内驻军;②**带 troops = 部分撤回(v83,AISLG-207)**:只撤指定兵种与数量,**保留占领**(地块仍归本账号,占领加成与连片加成不变),被撤的兵作为返程行军回到占领城,剩余驻军继续守地。返程时长按撤回编队的最慢兵种折算,与出征同公式。野地占领以驻军存在为前提:驻军被 NPC 袭击全灭时占领同样失效(见 NPC 袭击说明)。 使用建议:两种用法按意图选:只想抽走一部分兵(守城吃紧、去打仗)就带 troops,地块与占领加成保留,但地块至少留 1 兵;想彻底放弃这块地就不带 troops。全部撤回时占领加成与采集立即停止(产量在归属翻转前先结算到当前时刻),地块可被他人或 NPC 夺取。部分撤回后驻军变少,采集与守备随之减弱。返程部队到达前不在城内驻军里,无法再次派出。 (协议 op RECALL_GARRISON,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數x必填y必填troops

SCOUT

斥候侦察(v13)

从主城派 count 名斥候侦察目标地块:行军 purpose='scout'(按斥候行军速度 ×2 折算时长),到达后不战斗,产出情报快照(守军按兵种构成、城墙守城减伤、NPC 城池可掠夺库存、占领者)并落为 march_completed 事件(outcome='scouted',detail.intel 为完整快照),名城(v24)的情报按侦察时刻的阶段给出:intel.famous = { name, stage },intel.garrison / wallDefensePercent 即该阶段的守军(外围驻军 / 城守驻军)与城墙口径(外围阶段野战无城墙)。随后斥候原地返程。**情报详细度随侦察科技(v27,AISLG-77)**:intel.detail = 'rough'(侦察科技 Lv0–2)时 intel.garrison 全 0、只有 intel.garrisonTotal { min, max } 给总兵力约数(真实 ±20%);'kinds'(Lv3–5)给兵种明细、各兵种数量为近似值(真实 ±20%,按坐标固定、重复侦察不变);'exact'(Lv6+)精确(garrisonTotal 的 min = max)。historic 情报无 detail 字段视为 exact;城墙与库存不降级。情报同时存为该账号对该地块的最近快照:此后 GET_TILE 对 NPC 城池返回该快照(此前为 null)。重新侦察会覆盖快照。目标限制:任意非本账号城池的地块;v38(AISLG-122)起侦察其他玩家的城池会读到该城的实时驻军(city_army)与城墙减伤(城墙 + 守方城防科技),守方处于新手保护期时被拒(NEWBIE_PROTECTED,附 until / retryAfterSeconds;免战不拦侦察),你自己处于新手保护期时侦察其他玩家会立即破保(事件 newbie_protection_ended)。校验顺序:先校验请求参数(坐标须在世界内)与城内斥候兵力(不足返回 INSUFFICIENT_TROOPS),再判定目标(自己的城池返回 INVALID_PARAMS)——因此城内无斥候时侦察自己的城池返回的是 INSUFFICIENT_TROOPS 而非 INVALID_PARAMS。 使用建议:侦察不发生战斗、斥候全数返程(当前无侦察对抗判定,占位)。攻 NPC 城池前先侦察:GET_TILE 的 npc 字段(驻防 + 库存)只对侦察过的地块开放;野地原住守军(v24):Lv1–2 义兵 8×等级,Lv3 起义兵 6×等级 + 弓箭兵 (等级−2),每块在基准上固定 ±20% 浮动、被打残后每小时恢复 25%——侦察可看到该地块此刻的具体编成;推荐兵力见文档「野地进攻口径」。 (协议 op SCOUT,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數x必填y必填count必填cityId

RECALL_MARCH

撤回行军途中的部队(v13)

把一条行军中(status=marching 且 purpose 不是 return)的部队原地折返:行军翻转为返程(purpose=return),arrive_at = 当前时间 + 已走时长(同速回程,按编队最慢兵种);到达出发城后部队并入城内驻军。目标已到达 / 已是返程 / 行军不存在或不属于本账号返回 MARCH_NOT_RECALLABLE。折返不影响已扣减的编队(部队全程在行军中)。 使用建议:发出后目标不会被结算(行军已折返);若恰好在到达瞬间撤回,可能已被 Worker 结算——收到 MARCH_NOT_RECALLABLE 后读 GET_STATE 对齐。撤回驻军(已占领地块)用 RECALL_GARRISON,两者语义不同:前者撤「在途部队」,后者撤「驻军并放弃占领」。 (协议 op RECALL_MARCH,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數marchId必填

GET_BATTLE_REPORTS

查询战斗战报(v13)

分页查询本账号的战斗战报(新→旧):每场战斗(出征野地 / 攻 NPC 城池 / NPC 袭击驻军或主城)各生成一份,账号作为攻方或守方持有。战报含双方编成与损失、逐回合伤害统计、终局原因与城墙减伤;v85(AISLG-212)起各侧还给出 wounded(伤兵)/ captured(被胜方抓走)、胜方另有 captives(抓到的俘虏)——阵亡 = losses − wounded − captured,伤兵 / 俘虏的处置见 RESTORE_TROOPS。战斗结果同时进事件流(march_completed / npc_raid),战报提供更完整的逐回合明细。v15 起战败幸存部队撤回出发城——战报的 survivors 即实际存活兵力(round_limit 终局时攻方幸存者会在返程行军结束后回到出发城)。 使用建议:战损不再“损失即最终减员”(v85,AISLG-212):各侧 wounded(伤兵)/ captured(被俘)与胜方 captives(抓到的俘虏)已入对应城池的池子(伤兵 20%、俘虏 10%,见 GET_STATE 的 city.wounded / captives / deserters)——读完战报应接着建议玩家治疗 / 招降(RESTORE_TROOPS),别让伤兵 / 俘虏白白过期。roundLog 可用于复盘推进 / 接敌节奏与输出效率。读完战报可用 AGENT_COMMENT_REPORT 写一段大白话点评(为什么输 / 下次带什么兵),玩家会在战报弹窗顶部看到——建议说人话、不出现协议字段名。 (协议 op GET_BATTLE_REPORTS,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數limitbeforeId

EXCHANGE

集市兑换(资源 → 金币)

把四种基础资源(粮/木/石/铁)之一按固定汇率换成金币(v22 新增,AISLG-42——满级 / 满仓后的**可持续资源出口**):汇率 = 4 单位资源 → 1 金(金币不可逆向兑换)。兑换即时入账、不钳储量上限(与掠夺入账同规则);无队列、无冷却、可反复调用。存量不足返回 INSUFFICIENT_RESOURCES(附 shortfall 与 retryAfterSeconds,口径同 UPGRADE)。产出 resource_exchanged 事件(detail = { resource, amount, gold, rate })。定位说明:兑换产出远低于官府产金(官府 Lv10 = 1000 金/h),不构成最优策略,只为过满资源保底变现。 使用建议:满级 / 满仓后的资源去处:四资源顶满上限后产出冻结,用本协议把过满资源换成金币(金币是官府升级与征募的通用货币);兑换不设冷却,可按需分批。汇率 4:1 为占位决策。 (协议 op EXCHANGE,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數amount必填cityIdresource必填

AGENT_COMMENT_REPORT

Agent 写回战报点评(v23,AISLG-53)

Agent 读完一份战报后,用几句话大白话写点评:为什么输(或赢得险)、下次建议带什么兵。**仅限 Agent 连接调用**(玩家连接返回 AGENT_FORBIDDEN)。一份战报只保留最新一条点评,重写覆盖;正文 trim 后 1..200 字符(超出服务端拒绝)。点评随战报一起下发(GET_BATTLE_REPORTS 的 reports[].comment),写入成功后经 PUSH_BATTLE_REPORT_COMMENT 实时推给账号全部在线连接。战报不存在或不属于本账号返回 INVALID_PARAMS。 使用建议:收到 PUSH_BATTLE_REPORT 后正是写点评的时机:先看 won / endReason / 双方 losses,再对照 maxRange + rangedUnits 判断是不是被远程压制,最后用一句可执行的建议收尾。玩家重新登录仍能看到(点评随战报持久保存)。 (协议 op AGENT_COMMENT_REPORT,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數text必填reportId必填

AGENT_DAILY_REPORT

Agent 写离线日报(v23,AISLG-54)

Agent 定期(建议每完成一批事或每小时)把「玩家不在时发生了什么、现在该干什么」写成几句话存到服务端;玩家上线时直接读到最近一份,不在上线瞬间现写。**仅限 Agent 连接调用**(玩家连接返回 AGENT_FORBIDDEN)。账号只保留最新一份(重写覆盖),正文 trim 后 1..500 字符。日报是给玩家看的总结,不参与任何游戏逻辑;数字部分(收获 / 损失)由服务端按实际离线时段另行统计,Agent 不必也不应自己算数字。 使用建议:触发时机建议:每次完成建造 / 征兵 / 战斗后,或每离线批次结束。内容说人话——玩家上线第一眼看到的就是它;具体数字(进账多少、丢了几块地)玩家会同时看到服务端统计的汇总,你补充「为什么」和「接下来怎么办」即可。RESET_ACCOUNT 会清掉日报。 (协议 op AGENT_DAILY_REPORT,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數text必填

GET_OFFLINE_REPORT

查询离线日报(v23,AISLG-54)

返回玩家最近一次离线(最后一条玩家连接断开)至今的时长、离线期间的收获 / 损失数字汇总(服务端从事件流统计,纯数字不做判断),以及 Agent 最近写好的日报(从未写过为 null)。玩家与 Agent 连接都可调用;Agent 连接调用返回的是同一份数据。从未离线过(新号 / 未断开过)offline.seconds 为 0、各计数为 0。前端约定:离线超过 30 分钟再上线时弹窗展示本响应,可关闭、可在页面上重新打开。 使用建议:玩家上线会读这份响应:数字部分是服务端按实际离线时段统计的(与事件流 / 战报对得上),agentReport 是你最近一次 AGENT_DAILY_REPORT 写的内容——上线前记得更新一份,玩家会把它当成「你留给玩家的字条」。 (协议 op GET_OFFLINE_REPORT,文档版本 v92;完整规则可读资源 slg://agent-api.md)

無需輸入參數。

GET_SERVER_BROADCASTS

查询全服播报(v23,AISLG-60)

查询最近的全服大事(新→旧)。只播大事、不做聊天、不能回复;全服每分钟最多 3 条,超出的直接丢弃(播报不是事件流,漏掉不补)。当前四类基础播报 + v29 黄巾之乱五类关键节点播报(不受限频):NPC 城被掠空(npc_city_emptied)、首个占领金矿(gold_mine_first,全服一次性)、主城被 NPC 攻破(city_broken)、玩家或其 Agent 1 小时内连胜 5 场(win_streak,此后每再累计 5 场再播)。在线期间的新播报经 PUSH_SERVER_BROADCAST 实时推送;断线期间的用本协议补拉(前端约定:重连后查看最近 20 条)。 使用建议:播报是全服氛围信息,与你的决策无强制关系;但「某 NPC 城被掠空」意味着那座城不再值得打,「首个占领金矿」意味着金矿红利已被拿走。别把播报当任务清单——玩家对打法的意图直接与玩家沟通确认。 (协议 op GET_SERVER_BROADCASTS,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數limit

GET_LEADERBOARD

查询全服排行榜(v23,AISLG-61;v50 新增模型榜;v70 新增联盟榜;v76 新增爵位榜)

查询六个全服榜之一:power 综合战力(全部兵力战力之和:城内驻军 + 占领野地的驻军 + 行军中的部队,按「兵种与战斗属性」的战力系数合计)/ territory 领地数量(占领的野地数)/ plunder 累计掠夺量(掠夺入账的四资源合计,记在账号上——玩家与 Agent 打出的成绩算同一账号)/ **model 模型榜(v50,AISLG-133)**:把最近 7 天 Agent 上线过、且进了战力统计的账号按 Agent 自报模型(LOGIN 的 agentModel)归类分组,「未声明」与「其他」(名单外)也是组,每组排名分 = 该模型实力前 10 名的平均战力(不足 10 名取全部平均)——防止单个账号(刷小号)拉高或拉低整体。模型为**自报口径,不验证**。**nobility 爵位榜(v76,AISLG-197)**:按账号累计声望降序(声望只增不减,换季清零;来源见 GET_NOBILITY)。**alliance 联盟榜(v70,AISLG-185)**:按联盟势力降序,势力 = 全体成员占领的野地数 × 1 + 名城数 × 10 + 成员主城官府等级之和(权重为占位);成员不足 5 人的联盟不上榜;同势力按联盟名排序。联盟榜经 allianceEntries 下发(entries 为空数组),前 50 名;me 给出你所在联盟的名次与势力(不在榜上或没有联盟为 null)。玩家三榜返回前 50 名与本账号的名次和数值(不在前 50 也会给出 me);模型榜经 modelEntries 下发(entries 为空数组、me 为 null)。数值来自 Worker 每 10 分钟整榜重算的快照(updatedAt 为快照时间,页面上展示),不是实时精确值但与玩家页面同源;agentOnline 是查询时刻该账号是否有在线 Agent 连接(托管标注)。快照尚未生成时返回空榜(entries = []、me = null),不报错。 使用建议:排行榜每 10 分钟刷新一次(updatedAt 可判断新鲜度)。战力榜可用来评估目标(对比自己与对手的兵力战力);别刷榜——数值来自快照,高频查询只会读到同一份。模型榜(v50)按 LOGIN 的 agentModel 自报分组:想让你的模型上榜就每次登录带上它(自报不验证,不填归「未声明」);排名用前 10 名平均战力,单个账号刷不上去。联盟榜(v70)要求成员不少于 5 人才上榜,势力随成员的领地与名城变化,查看自己所在联盟的名次用 me;联盟详细信息(成员、公告)用 GET_ALLIANCE 带 allianceId 查询。 (协议 op GET_LEADERBOARD,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數kind必填

GET_TECHS

查询科技状态(v27,AISLG-77)

查询账号的科技研究:十六项科技(农耕(farming):粮、木、石、铁产量每级 +5%;负重(carrying):部队负重每级 +5%(掠夺与运输共用);行军(marching):行军速度每级 +5%;储存(storage):粮、木、石、铁储量上限每级 +5%;侦察(scouting):侦察报告更详细:Lv3 起看到兵种明细,Lv6 起看到精确数量;城防(defense):主城守城时城墙减伤每级额外 +1%(加在城墙加成上);练兵(drill):征兵时长每级 −3%(10 级 −30%);战斗(combat):世界地图战斗中我方全军攻击每级 +1.5%(10 级 +15%);防护(protection):世界地图战斗中我方全军受到伤害每级 −1.5%(10 级 −15%);驾驭(riding):骑兵类兵种战斗速度每级 +2%(10 级 +20%);抛射(archery):远程兵种(弓箭兵 / 床弩 / 诸葛连弩 / 先登死士)射程每级 +1%(10 级 +10%);补给(supply):部队耗粮(城内、行军、驻守)每级 −3%(10 级 −30%);建筑(construction):建造、升级时长每级 −3%(10 级 −30%);研究(research):科技研究时长每级 −3%(10 级 −30%);掠夺(looting):掠夺野地时可抢的资源池每级 +4%(10 级 +40%);维修(repair):分城城防值每小时回涨每级 +5%(基础 10 点/小时,10 级 15 点/小时))各自的当前等级、每级效果、下一级的成本 / 耗时 / 书院门槛,以及进行中的研究。科技分「发展 / 军事」两类(条目 category:development / military),前端分两栏展示;其中战斗 / 防护 / 驾驭 / 抛射四项只在世界地图战斗中生效。科技是**账号共享**的——全账号所有城都生效,研究统一在主城进行(v87 AISLG-217:书院只在主城建造);同一时间账号只研究一项。每项最高 10 级,第 N 级要求**主城**的书院(academy 建筑)≥ N 级。v87 起 data.cityId 保留但忽略(academyLevel / academyOk 恒按主城)。成本 = 基础 × 目标等级;耗时 = 建造基准 × 2 × 目标等级,随全局时间缩放。数值均为占位,上线后按数据调整。 使用建议:科技规划:书院等级是研究的硬门槛(第 N 级要书院 ≥ N 级),先升书院再研究高级科技。农耕 / 储存 / 建筑 / 研究 / 补给 / 掠夺 / 维修直接放大经济与后勤,负重 / 行军服务掠夺与出征,侦察决定侦察报告的详细度(Lv3 起兵种明细、Lv6 起精确数量,之前只有总兵力约数——想精确评估野地 / NPC 城守军先点侦察)。v72 新增十项:练兵(征兵 −3%/级)、建筑(建造升级 −3%/级)、研究(研究 −3%/级)、补给(耗粮 −3%/级)、掠夺(野地掠夺池 +4%/级)、维修(分城城防回涨 +5%/级,10 级 15 点/小时);战斗 / 防护 / 驾驭 / 抛射(每级 +1.5% 攻击 / −1.5% 受伤 / +2% 骑兵速度 / +1% 远程射程)只在世界地图战斗生效,竞技场与将星塔不受影响,与武将加成叠两层。研究完成会收到 PUSH_TECH_STATE(reason=research_completed)。 (协议 op GET_TECHS,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數cityId

RESEARCH_TECH

发起科技研究(v27,AISLG-77)

研究某项科技的下一级:校验通过后立即从**主城**扣除成本(v87 AISLG-217 起书院只在主城,请求里的 cityId 保留但忽略;书院等级按主城那座判定),写入研究记录,到期由后台 Worker 完成并让等级账号共享、全城生效。校验顺序:科技已满级 → TECH_LEVEL_MAX;账号已有进行中的研究 → RESEARCH_IN_PROGRESS;发起城书院 < 目标等级 → ACADEMY_TOO_LOW(失败 data 附 academyRequired / academyLevel);资源不足 → INSUFFICIENT_RESOURCES。失败响应附 city(当前城池状态)。研究生效瞬间,全账号所有城的产量与储量上限按旧等级结算到到期时刻、此后按新等级走(与建筑完工同口径的产量切分)。 使用建议:同一时间只研究一项:想换研究方向用 CANCEL_RESEARCH(全额返还)。资源不足时按 shortfall 思路自行推算(科技成本 = 基础 × 目标等级)。研究期间别重复发起。 (协议 op RESEARCH_TECH,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數tech必填cityId

CANCEL_RESEARCH

取消科技研究(v27,AISLG-77)

取消账号进行中的研究并把发起时的成本**全额返还**到发起城(返还不钳储量上限,与建造取消一致)。已到期等待 Worker 结算的研究不可取消(返回 RESEARCH_NOT_CANCELLABLE)。取消成功后同账号其他在线连接收到 PUSH_TECH_STATE(reason=research_cancelled)。 (协议 op CANCEL_RESEARCH,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數researchId

GET_MOVING_TARGETS

查询移动目标(流寇与运粮商队,v28,AISLG-78)

地图上会周期性刷出两类沿固定路线移动、过时消失的 NPC 目标:**运粮商队**(守军弱,带的资源较多;打赢按负重掠走)与**流寇**(守军强些,资源更多;路过玩家野地会顺手掠夺该地采集收益(掠到的也记在它身上,打赢能夺回))。本协议返回当前存在的全部目标:当前位置、公开路线与时刻表(路线共 24 格,第 i 格从 route[i].at 起占据、到 route[i+1].at 止;最后一格持续到 endsAt)、守军与携带量的**大致范围**(真实 ±20%,要精确情报派斥候去目标所在格)。存在时长基准 6 小时(随全局时间缩放);全图同时存在的数量随活跃玩家数(最近 24 小时内登录过的账号)调整:⌈人数 × 0.5⌉ 夹在 [2, 40],没有活跃玩家时不刷新。流寇路过玩家占领的野地时会顺手掠夺该地「小时产量(占领加成 + 驻军采集)」的 2 倍(不超过城内存量,被掠方收到 bandit_plundered 事件),掠到的记在流寇携带量里,截获流寇即可夺回。数值均为占位,上线后按数据调整。 使用建议:截击流程(v35 起「到了先埋伏」):先 GET_MOVING_TARGETS 看时刻表,挑一格 route[i] 与出发城估算行军时长。部队到达时目标还在该格或相邻格(Chebyshev 距离 ≤ 1)→ 到达即接战;还没到 → 部队原地埋伏,等目标走进相邻范围再开打(接战时刻 = max(到达时刻, 目标进入范围的时刻,即发起后 MARCH 响应的 arriveAt,无需掐点);已走远(太晚)→ 扑空返程。埋伏期间部队占校场名额、按在外口径耗粮,可 RECALL_MARCH 撤回;目标被他人击败或过时消失 → 「目标消失」返程。守军精确编成要靠 SCOUT 侦察目标当前所在格(侦察到的是该格地块,不含移动目标本身——目标的大致强度见 garrisonTotal)。刷出 / 被截获 / 消失会收到 PUSH_MOVING_TARGET_STATE,也可以定时重查。 (协议 op GET_MOVING_TARGETS,文档版本 v92;完整规则可读资源 slg://agent-api.md)

無需輸入參數。

GET_YELLOW_TURBAN

查询黄巾之乱(全服共同清剿的周期事件,v29,AISLG-76)

纯 PvE、全服共同参与的周期事件(参考旧游戏剧本战场「黄巾之乱」,只取玩法结构):**起事**——每隔基准 3 天(随全局时间缩放;上一轮未结束则等其结束,没有活跃玩家不起事)全服播报「黄巾起事」,地图上冒出一批黄巾营地:数量按活跃玩家数(⌈人数 × 2⌉ 夹在 [6, 60]),分小 / 中 / 大三档(占 50% / 30% / 20%),守军强度对应野地 Lv3 / Lv6 / Lv9,落在活跃玩家主城周围;**坐大**——营地放着不管每隔 6 小时(基准)升一档,大营每隔 3 小时向 40 格内最近的玩家野地 / 主城(官府 ≥ 2、不在免战期)发兵,走现有 NPC 来袭预警流程(等价来袭 Lv4,预警期间可增援);**清剿**——出征营地和打野地一样(MARCH 掠夺任务,营地格不可占领、不受掠夺冷却限制),打赢营地消失,按幸存部队负重(含负重科技)掉落资源与金币;**决战**——营地清掉 80%(向上取整)后出现「张角老巢」:高难度、分外围(Lv10 野地基准 ×2)与城守(×4)两段,类似名城——外围清空后 6 小时(基准)内可攻城守,超时外围恢复满编,全服都能打,谁打掉谁有首杀播报;**收场**——老巢被打掉或到时限(基准 48 小时)事件结束,没清完的营地散成流寇(AISLG-78,小 / 中 / 大营散成 Lv2 / Lv3 / Lv5 流寇)。营地与老巢守军的战后存量按野地同口径每小时恢复 25%,全服可以接力消耗。**贡献与奖励**:贡献 = 每人歼灭的黄巾单位数(输赢都累计),事件期间有贡献榜(本协议返回前 10 与我的名次),结束按名次发资源与金币到各人主城(第 1 名:金 6000、四资源各 30000;第 2–3 名:金 4000、四资源各 20000;第 4–10 名:金 2500、四资源各 12000;参与奖:金 800、四资源各 3000;歼敌 > 0 才有奖)并写 yt_reward 事件。事件开始 / 坐大 / 老巢出现 / 首杀 / 结束都有全服播报(不受每分钟 3 条限频)。营地所在地块的 TileView.camp 带档位 / 守军大致范围 / 升档倒计时,营地所在格不显示野地原住守军。数值均为占位,上线后按数据调整。 使用建议:清剿建议:先 GET_YELLOW_TURBAN 看 camps 与自己的兵力,从小营下手(守军约等于 Lv3 野地,推荐兵力口径见「野地进攻口径」表),大营守军强且会向附近玩家发兵;坐大计时(nextGrowAt)是时间压力。出征用 MARCH(task 缺省 plunder)对营地坐标,task=occupy 会被拒(TASK_INVALID_FOR_TARGET)。贡献 = 歼敌单位数,打输也算——合力磨掉老巢守军(存量每小时只恢复 25%)是可行打法。老巢外围清空后注意 boss.recoversAt 的城守窗口。事件起止与进度用 PUSH_YELLOW_TURBAN_STATE 实时获得,也可定时重查。 (协议 op GET_YELLOW_TURBAN,文档版本 v92;完整规则可读资源 slg://agent-api.md)

無需輸入參數。

GET_HEROES

查询武将(账号武将 / 酒馆候选 / 名将归属,v36,AISLG-114/115/116)

返回账号全部武将(含属性、等级 / 经验、自由点数、俸禄、欠饷 / 重伤 / 历练状态、占用关系、今日剩余次数)、当前(或指定)城酒馆的候选(v87 AISLG-217 起:酒馆只在主城建造、候选账号只有一份,固定为主城那座,每 4 小时基准随时间缩放刷新 3 名)、普通将 / 名将数量与上限、全部 40 名名将的全服归属(famousClaims,未被获得的 ownerUsername 为 null;在野名将未被获得时 wildAt 为 null,被获得后才给出落位 wildAt),以及在野名将的结交进度(friendships)与结交资格(unlocks)。武将规则(数值均为占位):**普通将**从酒馆招募,三项属性(统率 lead / 武力 force / 智力 wit)各 10–40 随机;招募费 = 500 + 三项合计 × 20(金币,从主城扣)。**名将**(三项各 45–65)只从 PvE 获得、全服唯一(见 famousClaims)。带兵加成:全军攻击 + 武力 × 0.3%、全军受到伤害 − 智力 × 0.3%,各自封顶 20%;能吃到加成的兵数 = 统率 × 20,部队超出时按比例摊薄(统率是带大军的关键)。俸禄每小时从主城扣(普通将 20 × 等级、名将 100 × 等级金币,随全局时间缩放),主城金币不够即「欠饷」(arrears=true,不能出征),扣款成功自动恢复。带队战败(攻方失败或全灭)武将重伤 2 小时(随缩放),期间不能出征、不会死亡。经验(v36 AISLG-116):带队参战(含城守守城)获得经验 = 本场歼灭敌军的参考战力,战败减半;升到 L+1 级需 100 × L²,每升一级获得自由点数(普通将 3、名将 5,由玩家分到三项属性,v54 起升级不再自动加属性),上限 40 级——加成仍受 20% 封顶,高等级的主要收益是统率提高(带更多兵吃满加成)。在野名将(v54,AISLG-144):29 名名将隐居在 Lv3 以上的野地里(开服时分配,之后不变)。地图上该野地带 wildFamous 标记;派部队打赢它的原住守军(守军为同级野地的 2 倍)即获得该名将的结交资格(GET_HEROES 的 unlocks)。结交(BEFRIEND_HERO)花主城金币 500 × 野地等级,好感 +10,每个名将每游戏日最多 5 次,同时结交(好感未满、未被招揽)最多 2 名。好感满 100 后招揽(RECRUIT_FAMOUS_HERO),全服唯一,先到先得;别人先招揽走,你的结交进度作废(lost=true,金币不退)。名将解雇后回到可获得状态。 使用建议:培养与结交:加点 / 洗点 / 历练 / 赏赐见 ALLOCATE_HERO_POINTS 等协议;结交与招揽见 BEFRIEND_HERO / RECRUIT_FAMOUS_HERO(先看 unlocks)。配将出征流程:GET_HEROES 挑选 arrears=false 且 woundedUntil 为 null / 已过期、marchingMarchId 与 guardCityId 都为 null 的武将,MARCH / SCOUT 带 heroId 即随队(一支部队至多一名,同一武将同一时间只能在一支部队里,城守不能出征)。经验与等级在 heroes[] 里实时可查(expNext = 距下一级还差多少)。名将归属见 famousClaims——未被获得的名将按 sourceLabel 的条件争取(首占名城 / 老巢首杀 / 贡献前二)。收到 PUSH_HERO_STATE 后重拉本协议对齐。 (协议 op GET_HEROES,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數cityId

RECRUIT_HERO

酒馆招募武将(v36,AISLG-114)

从某座城的酒馆候选中招募一名普通将:招募费 = 500 + 三项属性合计 × 20 金币,从**酒馆所在城**扣除。候选被招走即从列表消失(同批其余保留)。v59: New ordinary heroes receive one uniformly random, immutable specialty on successful recruitment. Candidates do not expose it before hiring. Famous and existing heroes have null and retain their original rules. Rules: {"infantry":{"troops":["militia","pikeman","swordsman","yulin_guard","danyang_soldier","baimao_soldier","huwei_guard"],"atkPercent":2.5,"defPercent":2.5},"ranged":{"troops":["archer","ballista","zhuge_crossbow","xiandeng_warrior"],"atkPercent":2.5,"defPercent":0},"cavalry":{"troops":["cavalry","iron_cavalry","hubao_cavalry","xiliang_cavalry"],"atkPercent":10,"defPercent":4},"siege":{"troops":["ballista","siege_ram"],"atkPercent":8,"defPercent":3,"siegeOnly":true},"assault":{"troops":["militia","scout","pikeman","swordsman","archer","cavalry","iron_cavalry","ballista","siege_ram","yulin_guard","danyang_soldier","baimao_soldier","huwei_guard","zhuge_crossbow","xiandeng_warrior","hubao_cavalry","xiliang_cavalry"],"atkPercent":3,"defPercent":0},"defense":{"troops":["militia","scout","pikeman","swordsman","archer","cavalry","iron_cavalry","ballista","siege_ram","yulin_guard","danyang_soldier","baimao_soldier","huwei_guard","zhuge_crossbow","xiandeng_warrior","hubao_cavalry","xiliang_cavalry"],"atkPercent":0,"defPercent":2.5}}. Bonuses apply only to the listed troops, add to the original attack/damage-reduction percentages, and use the same command dilution in world combat. Arena and tower use full specialty bonuses. Siege-only specialties are inactive in arena and tower. No specialty selection or reroll operation exists. 使用建议:招前先核对 normalCount < normalCap 与该城金币;招募费随属性浮动(三项合计 × 20),统率高的候选带大队更划算。名将不走酒馆(无法招募),只能 PvE 获得。 (协议 op RECRUIT_HERO,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數cityIdcandidateId

DISMISS_HERO

解雇武将(v36,AISLG-114)

解雇一名普通将或名将:直接消失,不再发俸禄。随队出征中(含返程)的武将不能解雇(HERO_BUSY);正在任城守的武将解雇同时撤任。**名将解雇后回到全服「可获得」状态**,下次满足条件的玩家(首占名城 / 老巢首杀 / 贡献前二)会得到它。 使用建议:俸禄是持续成本(欠饷武将不能出征),低属性武将留着不划算;解雇名将前想清楚——全服唯一,放手就是别人的了。 (协议 op DISMISS_HERO,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數cityIdheroId

ASSIGN_HERO

任命 / 撤换城守(v36,AISLG-115)

每座城可任命 1 名武将(普通将或名将)当城守:守城战(NPC 来袭、黄巾大营进攻)时守军享受该武将的攻击 / 减伤加成(同出征口径,含统率摊薄);平时该城四资源(非金)产量 + 智力 × 0.1%(封顶 5%,已含在城池产量里)。城守不能同时出征(出征校验会拒)。 使用建议:智力高的武将当城守最划算(产量 +智力 × 0.1% 封顶 5%,如 wit=50 → +5%);守城战另享攻防加成。heroes[].guardProductionPercent 已按当前智力给出可预期产量加成。账号 0d3d8e2a-6f2b-4f4e-9d8f-1a2b3c4d5e6f 视角:城守加成在守城战报(defender.hero)与 CityView.production 里都能看到。 (协议 op ASSIGN_HERO,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數cityIdheroId

TRUCE

开启主动免战(每周一次免费)

开启账号级主动免战:持续 12 小时基准(随全局时间缩放),期间别的玩家打不了你(MARCH 打你返回 TARGET_IN_TRUCE)、NPC 袭击目标池也会跳过你;你自己也不能出兵攻打玩家(MARCH 打玩家返回 SELF_TRUCE_ACTIVE),打野地 / NPC 城池、侦察、运输、调兵均不受影响。每个账号每周(7 天基准,随缩放)可免费开一次;城被攻破 / 被抢后的被动免战(4 小时基准)与本免战相互独立、共用「免战中」的不可攻击效果。 使用建议:免战适合「要下线睡觉 / 资源涨满怕被抢」的时间窗:开启后 12 小时(基准)内别人打不了你。注意开启后你也不能出兵打玩家(打野地 / NPC 不受限);每周只有一次,规划好使用时机(city.shieldNextAt 可查下次可用时刻)。开错了可用 CANCEL_TRUCE 提前解除,但本周次数不返还。 (协议 op TRUCE,文档版本 v92;完整规则可读资源 slg://agent-api.md)

無需輸入參數。

GET_ARENA

查询竞技场

(v53,AISLG-145)返回我在竞技场的完整状态:名次、阵容、今日挑战与被挑战次数、可挑战对手、榜单前 100 名与规则常量。进入竞技场时先调用一次;之后以 ARENA_CHALLENGE / SET_ARENA_LINEUP 的响应为准,不必重复查询。第一次访问时系统会补齐 20 个守擂者(占榜首 1–20 名)。玩家与 Agent 同一套规则。 (协议 op GET_ARENA,文档版本 v92;完整规则可读资源 slg://agent-api.md)

無需輸入參數。

SET_ARENA_LINEUP

保存竞技场阵容

(v53,AISLG-145)保存竞技场阵容:heroIds 为 3 个号位(1/2/3 号位),空位用 null;至少要有 1 名武将,同一武将不能占两个号位,武将必须属于本账号。第一次保存即入榜,排在榜尾(名次 = 当前总人数 + 1 之后的最后一名)。阵容随时可改,改完马上生效:别人挑战你时用的是你保存那一刻的阵容与武将当时的属性。武将重伤、没发俸禄、正在外出都不影响参赛(对战是模拟的)。 (协议 op SET_ARENA_LINEUP,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數heroIdsformations

ARENA_CHALLENGE

发起竞技挑战

(v53,AISLG-145)挑战一名对手,当场算完。进档奖励:历史最好名次第一次升进前 200 / 前 50 / 前 10 / 第 1 名时各发一次性奖励,入榜时不发。规则:只能挑战名次比我靠前、且差距不超过 10 名的席位;每个竞技日最多 5 次(我发起的次数);每名玩家每个竞技日最多被挑战 10 次;同一对手连续挑战有 5 分钟冷却(已按时间缩放)。对战为三局两胜:1 号位对 1 号位、2 对 2、3 对 3,先赢两局者胜,决出后不再打余下的局;某方缺人的号位判对方胜(双方都缺判守擂方胜)。对战用系统配的标准军队(人数 = 基础兵数 + 统率 × 每点统率兵数,见 rules.armyBase / armyPerLead;balanced 默认刀盾 / 弓箭各一半,其他号位按 formations 生成),不消耗真实兵力,不改变武将的伤病与状态。挑战方赢了与对手互换名次;输了名次不变,但照样扣一次挑战次数。 使用建议:挑战前先看 opponents 里的 rank 与 defendedToday;ARENA_NO_CHALLENGES / ARENA_TARGET_BUSY 响应附 nextDayAt 与 retryAfterSeconds,等到那时再试。ARENA_PAIR_COOLDOWN 附 retryAfterSeconds。名次会被别人的挑战改变,遇到 ARENA_TARGET_INVALID 应重拉 GET_ARENA。 (协议 op ARENA_CHALLENGE,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數entryId必填

GET_ARENA_REPORTS

查询竞技场战报

(v53,AISLG-145)返回我参与过的竞技战报(我挑战别人的、别人挑战我的),按时间从新到旧。战报保留 7 天,过期自动清理。战报里只有对手武将的名字与属性,不含武将 id。翻页:取最后一条的 id 作为 beforeId 再查,直到 hasMore 为 false。 (协议 op GET_ARENA_REPORTS,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數limitbeforeId

ALLOCATE_HERO_POINTS

分配自由点数(v54,AISLG-144)

把武将的自由点数(heroes[].freePoints)分到统率 lead / 武力 force / 智力 wit,三项各为非负整数,合计至少 1、不超过自由点数。只能对在家的武将操作(HERO_BUSY / HERO_TRAINING 拒绝)。培养(v54,AISLG-144):升一级获得自由点数(普通将 3、名将 5),由玩家分到统率 / 武力 / 智力,等级上限 40;升级不再自动加属性。洗点花 等级 × 1000 金币,已分配点数全部退回,每个武将每游戏日 1 次。历练派出去 1 / 4 / 12 小时基准(随时间缩放),到点经验 = 基础经验 × 武将等级 ÷ 10(基础 200 / 1000 / 4000),到点自动到账,离线也结算。赏赐每次花 1000 金币 → 100 经验,每个武将每游戏日最多 3 次。加点 / 洗点 / 历练 / 解雇 / 出征 / 任城守都要求武将不在外出、不在城守、不在历练(赏赐不受限)。 使用建议:武力 / 智力加成在 67 左右就封顶了(各 20%),多余点数优先给统率(统率 × 20 = 能吃满加成的兵数)。 (协议 op ALLOCATE_HERO_POINTS,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數witleadforceheroId

RESET_HERO_POINTS

洗点(v54,AISLG-144)

把已分配的点数全部退回自由点数,属性还原到武将的初始值。花费 = 武将等级 × 1000 金币(主城扣);每个武将每游戏日 1 次;没有已分配点数时拒绝(HERO_NOTHING_TO_RESET)。 使用建议:洗点是按等级收费的,武将越高越贵;先在低等级把点数想清楚再洗。 (协议 op RESET_HERO_POINTS,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數heroId

TRAIN_HERO

派武将历练(v54,AISLG-144)

派武将离家历练 1 / 4 / 12 小时基准(tier 1 / 2 / 3,随时间缩放)。到点经验 = 基础经验(200 / 1000 / 4000)× 开始历练时的武将等级 ÷ 10,由 Worker 到点结算(离线也结算),到账后推送 reason=training_done,升级的自由点数照常获得。历练期间武将不能带兵 / 城守 / 解雇 / 加点 / 洗点;赏赐不受限。 使用建议:历练是把武将变成经验的最省心方式:不花金币,代价是这段时间它不能出战。等级越高,同档位给的经验越多。 (协议 op TRAIN_HERO,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數tierheroId

GIFT_HERO

赏赐武将(v54,AISLG-144)

花 1000 金币(主城扣)给武将加 100 经验,每个武将每游戏日最多 3 次;外出 / 城守 / 历练中的武将也能赏赐。经验可能让武将升级并获得自由点数。 使用建议:1000 金币换 100 经验,比历练贵,但不占用武将时间;适合临时凑等级。 (协议 op GIFT_HERO,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數heroId

BEFRIEND_HERO

结交在野名将(v54,AISLG-144)

对已获得结交资格(GET_HEROES 的 unlocks 里)的在野名将结交一次:花 500 × 野地等级 金币(主城扣),好感 +10(上限 100)。每个名将每游戏日最多 5 次;同时结交的名将最多 2 名。好感满 100 后不能再结交,改用 RECRUIT_FAMOUS_HERO。在野名将(v54,AISLG-144):29 名名将隐居在 Lv3 以上的野地里(开服时分配,之后不变)。地图上该野地带 wildFamous 标记;派部队打赢它的原住守军(守军为同级野地的 2 倍)即获得该名将的结交资格(GET_HEROES 的 unlocks)。结交(BEFRIEND_HERO)花主城金币 500 × 野地等级,好感 +10,每个名将每游戏日最多 5 次,同时结交(好感未满、未被招揽)最多 2 名。好感满 100 后招揽(RECRUIT_FAMOUS_HERO),全服唯一,先到先得;别人先招揽走,你的结交进度作废(lost=true,金币不退)。名将解雇后回到可获得状态。 使用建议:先在 GET_WORLD_MAP / GET_TILE 找 wildFamous 标记的野地,派部队打赢守军拿到资格。结交的金币花在主城,每次都要看 cost。 (协议 op BEFRIEND_HERO,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數heroName

RECRUIT_FAMOUS_HERO

招揽在野名将(v54,AISLG-144)

好感满 100 后招揽该在野名将,加入账号为名将(名将上限 3 名,不占普通将上限)。全服唯一:已被他人获得返回 FAMOUS_CLAIMED;成功后全服播报(hero_granted)。名将的三项属性在落位时已固定,侦察看到的就是它。 使用建议:招揽是全服竞争:好感满的那一刻就去招,慢一步就会被 FAMOUS_CLAIMED。 (协议 op RECRUIT_FAMOUS_HERO,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數heroName

GET_STAR_TOWER

查询将星塔

(v55,AISLG-146)返回我的爬塔进度:已通过的最高层 bestFloor(0 = 还没通过任何一层)、下一层 nextFloor(只能从它开始打,不能跳层)、下一层是否 Boss 层、下一层的敌方阵容(匿名)与首通奖励预览、我的阵容(与竞技场共用,保存走 SET_ARENA_LINEUP)、阵容是否可用、账号是否有城。挑战前先调用一次;之后以 STAR_TOWER_CHALLENGE 的响应为准。 使用建议:挑战只打 nextFloor,不能指定层。阵容不可用(lineupReady 为 false)或 hasCity 为 false 时先按提示处理,再挑战。 (协议 op GET_STAR_TOWER,文档版本 v92;完整规则可读资源 slg://agent-api.md)

無需輸入參數。

STAR_TOWER_CHALLENGE

挑战将星塔下一层

(v55,AISLG-146)挑战下一层(无参数)。阵容与敌方按竞技场的三局两胜当场结算,不消耗真实兵力、不改武将状态(重伤、欠饷、外出都不影响)。赢了:第一次通过这一层,发首通奖励(金币进主城,经验给阵容里每名武将,Boss 层翻倍)并推进进度;Boss 层首通全服播报。输了:什么都不扣,可以立刻重打。已通过的层不再发奖励。 使用建议:没有 entryId 之类的参数,每次都打下一层。won 为 false 时可直接重打同一层(不扣任何东西);想加强阵容先 SET_ARENA_LINEUP。STAR_TOWER_NO_LINEUP 时先保存阵容。 (协议 op STAR_TOWER_CHALLENGE,文档版本 v92;完整规则可读资源 slg://agent-api.md)

無需輸入參數。

GET_STAR_TOWER_REPORTS

查询将星塔战报

(v55,AISLG-146)返回我每次挑战将星塔的战报,按时间从新到旧,每人保留最近 50 条(写入新战报时删掉更旧的)。战报里有我的阵容(匿名)与敌方阵容,以及每一局的结果。翻页:取最后一条的 id 作为 beforeId 再查,直到 hasMore 为 false。 使用建议:战报只用来复盘,不影响进度与奖励。要看当前能打哪一层,以 GET_STAR_TOWER 为准。 (协议 op GET_STAR_TOWER_REPORTS,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數limitbeforeId

GET_DAILY

查询日常任务与签到状态

任务与签到是本地自建分支新增的日常玩法(AISLG-200):6 条日常任务按「北京日」(Asia/Shanghai)刷新,完成判定读取当日事件(登录恒完成);签到每天一次、连续签到 7 天一轮循环。奖励发往主城。 使用建议:Agent 可查询并代领任务奖励(与玩家同一套规则)。任务 id 与条件在未来版本可能增删,请以本协议响应的 daily 列表为准,不要硬编码。 (协议 op GET_DAILY,文档版本 v92;完整规则可读资源 slg://agent-api.md)

無需輸入參數。

CLAIM_DAILY

领取日常任务奖励

领取一条当日已完成、未领取的日常任务奖励,资源发往主城。任务不存在 / 未完成 / 今日已领取均返回 INVALID_PARAMS。 使用建议:建议 Agent 在完成对应动作后(建造 / 征兵 / 出征 / 研究 / 占领)顺手领取当日任务奖励。 (协议 op CLAIM_DAILY,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數taskId必填

GET_SIGNIN

查询签到状态

查询签到状态(GET_DAILY 的 quest.signin 子集亦可获取)。 (协议 op GET_SIGNIN,文档版本 v92;完整规则可读资源 slg://agent-api.md)

無需輸入參數。

SIGNIN

每日签到

每日签到(每天一次,按北京日)。连续签到,7 天一轮循环,奖励按档位递增,第 7 天最优;断签后连续天数归 1。当日重复签到返回 INVALID_PARAMS。奖励发往主城。 (协议 op SIGNIN,文档版本 v92;完整规则可读资源 slg://agent-api.md)

無需輸入參數。

GET_QUESTS

查询主线/支线任务与成就

主线任务链(10 环,顺序解锁与领取)、支线任务(并行)与成就(多条 × 3 档,逐档领取)。进度从 events / 建筑等级 / 科技 / 武将 / 签到等既有数据派生,奖励发往主城。 使用建议:任务 / 成就 id 与条件未来可能调整,请以响应为准,不要硬编码。 (协议 op GET_QUESTS,文档版本 v92;完整规则可读资源 slg://agent-api.md)

無需輸入參數。

CLAIM_QUEST

领取任务/成就奖励

领取已完成、未领取的主线 / 支线 / 成就奖励,资源发往主城。条件未达成 / 前置未完成 / 重复领取均返回 INVALID_PARAMS。 (协议 op CLAIM_QUEST,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數id必填kind必填

GET_ACTIVITIES

查询活动状态

活动:开服冲刺(限时,按活动窗口内的事件达成里程碑,每档一次)与每日活跃(今日完成的日常任务数 + 是否签到 = 活跃点,每档每天一次)。奖励发往主城。 (协议 op GET_ACTIVITIES,文档版本 v92;完整规则可读资源 slg://agent-api.md)

無需輸入參數。

CLAIM_ACTIVITY

领取活动奖励

领取活动某一档奖励(data.id = 阶梯 id,如 act_launch:1 / act_daily:3)。未达成 / 不在活动期 / 重复领取均返回 INVALID_PARAMS。奖励发往主城。 (协议 op CLAIM_ACTIVITY,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數id必填

DISCARD_CITY

放弃分城

主动放弃一座分城(v57,AISLG-153):分城转回 NPC 城池,腾出分城名额;主城不可放弃。城内资源、驻军、建筑与建造 / 征兵 / 研究队列作废(不返还),城守武将解除任命、武将本身保留;名下野地转为无主;地块回到同级 NPC 城池(名城恢复为未攻破的名城)。放弃后本账号冷却 = 放弃时的官府等级 天(按时间缩放,占位),冷却内不能再占回该城(占领时返回 DISCARD_COOLDOWN)。发起前须满足:该城没有部队在外(行军 / 返程 / 运输 / 侦察)、该城与其名下野地没有正在途中的行军、没有未结的 NPC 来袭、名下野地无驻军(先用 RECALL_MARCH 召回)。放弃不可撤销,必须显式携带 confirm=true 防误触。 使用建议:放弃前先 GET_STATE:确认目标 cities[] 中 isMain 为 false,并确认没有在途行军。放弃成功后 GET_STATE 的 cities / branch(count 减一)即时反映;同账号其他在线连接收到 PUSH_CITY_STATE(reason=city_discarded)推送,事件流新增 city_discarded。腾出的名额可以去占其他 NPC 城(但不能占回刚放弃的这一座,直到冷却结束)。 (协议 op DISCARD_CITY,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數cityId必填confirm必填

GET_MAP_OVERVIEW

查询世界小地图总览(v58)

返回全图的城池点位,供小地图一次看全局(AISLG-160)。无请求参数。只含城池(不含野地、黄巾营地与行军):本方主城 / 分城(side=own)、同联盟盟友的城池(ally,v67 AISLG-182)、他方非盟友的玩家城池(enemy)、NPC 城池(npc)、未被占领的名城(famous,名城被占领后按玩家城池口径归属)。点位为 [x, y, side] 的紧凑元组,按 y 行 x 列排序;城池约万级,整包较大,客户端宜按需拉取(如小地图展开时)并保持低频刷新(几十秒一次)。归属按请求账号区分本方 / 他方,地图数据全服公开,不做侦察门控。 迷雾开启时(v92):实时视野内的城与战力榜前 20 名的主城始终显示;已探索的城按上次看到的归属显示;未探索的城不显示,8 座名城未探索时在锚点显示 side = famous_rumor(大致方位,不是真实坐标)。响应多出 exploredChunks(10,000 位 base64,1250 字节,区块下标 floor(y/10)*100+floor(x/10),第 i 位在字节 i>>3、掩码 1<<(i&7))与 exploredPercent(探索进度 %)。关闭时响应与之前完全一致(无这两个字段,全图城池)。 使用建议:想找城(名城、NPC 城、他人城池)时先用它看全局方位,再用 GET_WORLD_MAP 按窗口取地块详情、GET_TILE 看驻军。它不返回野地,找野地仍用 GET_WORLD_MAP。 (协议 op GET_MAP_OVERVIEW,文档版本 v92;完整规则可读资源 slg://agent-api.md)

無需輸入參數。

GET_ANNOUNCEMENTS

查询公告列表(v60,AISLG-162)

列出本站可见的公告。默认返回生效中的公告:置顶在前,其余按发布时间倒序,最多 limit 条(1..50,缺省 20,不分页)。history=true 改为返回往期(已过结束时间的公告,按发布时间倒序,用 beforeId 取比它更早的一页)。列表不含正文,正文用 GET_ANNOUNCEMENT。unreadCount 为生效中且未读的公告数(红点用,不受 limit 影响)。lang 取 zh(缺省)或 en:英文没填的公告回落到中文。已撤回、未到生效时间、他站定向的公告不出现。 使用建议:新公告到达时服务端推送 PUSH_ANNOUNCEMENT(只带标题与分类,不带正文);断线期间的用本协议补拉。标题为 30 字以内的短句。需要正文时再调 GET_ANNOUNCEMENT。 (协议 op GET_ANNOUNCEMENTS,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數langlimithistorybeforeId

GET_ANNOUNCEMENT

查询公告正文(v60,AISLG-162)

返回一条公告的详情(列表视图 + 正文 body)。正文为受限 Markdown 子集:段落之间以空行分隔,段内换行保留,**加粗**,[文字](https 链接);图片、HTML 标签与脚本已在服务端去掉,非 http(s) 链接只保留文字。body 按 lang 取对应语言,英文没填时回落到中文。可以读往期公告(expired=true);已撤回、未生效或他站的公告返回 ANNOUNCEMENT_NOT_FOUND。读取本身不计已读,需要标记时调 READ_ANNOUNCEMENT。 使用建议:读正文不会改变已读状态;需要标记时再调 READ_ANNOUNCEMENT。运营公告以正文为准,玩家问到规则细节时照原文转述,不要自行补充。 (协议 op GET_ANNOUNCEMENT,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數idlang

READ_ANNOUNCEMENT

标记公告已读(v60,AISLG-162)

把一条公告标记为本账号已读(幂等,重复调用无副作用)。已读后 GET_ANNOUNCEMENTS 的 read 为 true,unreadCount 相应减少。红点与强提醒弹窗都以已读为准。仅能标记本站可见的公告,否则返回 ANNOUNCEMENT_NOT_FOUND。 使用建议:只在确实读过(或已把内容告知玩家)之后再标记,不要为了清红点而批量标记。 (协议 op READ_ANNOUNCEMENT,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數id

GET_SEASON

查询赛季(v65,AISLG-134)

返回当前赛季(编号、起止时刻、距结束的现实秒数、本季倍速)、是否处于换季维护态(maintenance)、本账号的荣誉称号(myHonors)以及本账号是否已加入当前赛季(joined)。赛季按现实时间计,每季 28 天左右(部署可调),与游戏内 timeScale 无关。维护期间本协议仍可用,其他游戏类协议返回 MAINTENANCE。 使用建议:赛季剩余时间用 remainingSec 判断,不要自己按 endAt 换算时区。收到 MAINTENANCE 或 PUSH_SEASON 的 resetting 后,停止发游戏类请求,等 started 推送(服务端会断开连接,客户端需重新登录)。 (协议 op GET_SEASON,文档版本 v92;完整规则可读资源 slg://agent-api.md)

無需輸入參數。

GET_HALL_OF_FAME

查询名人堂(v65,AISLG-134)

查询已结束赛季的存档:各榜前列(个人榜 power / territory / plunder / arena / starTower)、模型榜(model)与联盟榜前三(alliance,v70,AISLG-185:换季时联盟势力排名前三,条目的 accountId / username 为当时的盟主,value 为势力,并带 allianceId / allianceName / memberCount)。缺省 seasonId 为最近一个已结束赛季;kind 缺省 power;page 从 1 起,每页 20 条。个人榜结果进 entries,模型榜结果进 modelEntries(entries 为空)。total 为该榜总条数。seasons 列出全部已结束赛季(新 → 旧)供选择。指定的 seasonId 不存在返回 INVALID_PARAMS;没有任何已结束赛季时 seasonId 为 null、结果为空。kind 允许值:power / territory / plunder / arena / starTower / model / alliance。 使用建议:名人堂只读,不影响任何游戏数值。模型榜的模型归类为自报口径,展示时保留「自报」标注。 (协议 op GET_HALL_OF_FAME,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數kindpageseasonId

GET_ALLIANCE

查询联盟(v66,AISLG-181)

玩家与 Agent 通用。不带 allianceId = 我的联盟:返回联盟详情(公告、成员列表)、我的职位、冷却、我发出的申请、发给我的邀请;盟主 / 副盟主另带待审批的申请与已发出的邀请。带 allianceId = 查看某个联盟的公开信息(公告与成员列表,不含申请 / 邀请)。过期(48 小时)的申请与邀请不会返回。联盟规则(数值为占位,上线后按数据调整,均按现实时间计、不受 timeScale 影响):创建需主城官府 ≥ 5 级并从主城扣 100000 金币;联盟名 2–8 字、全服唯一(忽略大小写)、过屏蔽词;一个账号只能在一个联盟;成员上限 30(待处理邀请也占名额);盟主 1 人、副盟主最多 2 人;退出 / 被踢 / 解散者 24 小时内不能创建也不能加入联盟;盟主 7 天没有活跃,系统自动转给最近活跃的副盟主(没有副盟主则转给最早入盟的成员)。 使用建议:只能查询。创建、申请、审批、踢人、转让、任免等管理类操作只能由玩家本人做,Agent 调用会得到 AGENT_FORBIDDEN。 (协议 op GET_ALLIANCE,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數allianceId

LIST_ALLIANCES

联盟列表(v66,AISLG-181)

玩家与 Agent 通用。按成员数降序(同数按创建时间)分页返回联盟概要,每页 20 条。 (协议 op LIST_ALLIANCES,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數page

ALLIANCE_MARK_ADD

打联盟地图标记(v69,AISLG-184)

玩家与 Agent 通用。在地图任意格子打一个标记,同时在联盟频道写一条系统消息(alliance_mark_created)。地图标记规则(占位数值,按现实时间计、不受 timeScale 影响):标记类型 rally 集结 / enemy 敌人 / resource 资源 / danger 危险;同一联盟同时最多 20 个有效标记(过期的不计);同一格子只能有一个标记;每个标记保留 24 小时,到期后不再返回;只有本联盟成员能看到,离盟后看不到旧联盟的标记;联盟解散时标记一并删除,换季清空。附言可选,去首尾空白后不超过 20 字(按字形计),含屏蔽词整条拒绝(INVALID_PARAMS)。满 20 个时返回 ALLIANCE_MARK_LIMIT,附 until(最早一个标记的到期时刻)与 retryAfterSeconds,等它到期或被删除后再打。 (协议 op ALLIANCE_MARK_ADD,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數x必填y必填kind必填text

ALLIANCE_MARK_REMOVE

删除联盟地图标记(v69,AISLG-184)

玩家与 Agent 通用。成员只能删自己打的标记;盟主 / 副盟主可以删任何人的,但这一条只对玩家连接开放,Agent 连接即使身份是盟主也只能删自己打的。删别人的(无权限)返回 ALLIANCE_FORBIDDEN;别的联盟或已过期的标记返回 ALLIANCE_NOT_FOUND。 (协议 op ALLIANCE_MARK_REMOVE,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數id必填

GET_ALLIANCE_MARKS

查询联盟地图标记(v69,AISLG-184)

玩家与 Agent 通用。返回本联盟全部有效标记(未过期,按创建顺序)。没有联盟返回 ALLIANCE_NOT_IN。地图标记规则(占位数值,按现实时间计、不受 timeScale 影响):标记类型 rally 集结 / enemy 敌人 / resource 资源 / danger 危险;同一联盟同时最多 20 个有效标记(过期的不计);同一格子只能有一个标记;每个标记保留 24 小时,到期后不再返回;只有本联盟成员能看到,离盟后看不到旧联盟的标记;联盟解散时标记一并删除,换季清空。 (协议 op GET_ALLIANCE_MARKS,文档版本 v92;完整规则可读资源 slg://agent-api.md)

無需輸入參數。

CANCEL_TRAINING

取消武将历练(v71,AISLG-190)

取消进行中的历练:武将立刻回家(回到城内,可以带兵、任城守、加点、洗点等),不给经验,已过去的历练时间作废;历练本就不花金币,无返还。取消后可立即再次派去历练(TRAIN_HERO,无次数限制)。历练到点结算与取消并发时先生效者为准:经验已到账(或已到点)后再取消返回 TRAINING_NOT_CANCELLABLE。推送 PUSH_HERO_STATE reason=training_cancelled 给同账号其他在线连接。 使用建议:取消历练不给经验,只在急用武将时用(比如守城、出征)。想拿满经验就等到点结算。 (协议 op CANCEL_TRAINING,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數heroId

CANCEL_TRUCE

提前解除主动免战(v71,AISLG-190)

提前解除生效中的账号级主动免战(TRUCE 开启的那段):解除后立即恢复可被攻击,也可出兵攻打玩家(SELF_TRUCE_ACTIVE 不再拦你)。本周免费次数不返还,下一次可开启时刻(nextAvailableAt)不变。被动免战(城池被攻破 / 被抢后的 4 小时基准)不能主动解除,主动免战不在时若仍处被动免战返回 PASSIVE_TRUCE_NOT_CANCELLABLE;没有生效中的主动免战返回 TRUCE_NOT_ACTIVE。无参数。 使用建议:主动免战解除后本周次数就用掉了,不要为了「先开着、等要出兵再关」去开关:解除只是应急(比如开错了、想马上反击)。解除后别人的在途部队到达时也不再扑空。 (协议 op CANCEL_TRUCE,文档版本 v92;完整规则可读资源 slg://agent-api.md)

無需輸入參數。

CRAFT_DEFENSE

打造城防器械(v73,AISLG-193)

在城墙里打造四种一次性守城器械(陷阱(trap):开战时对攻方步兵类兵种造成 500 点伤害(固定值,按各兵种总生命比例分摊);单件成本 金/木/粮/石/铁 = 20/60/0/0/40,单件 5s;拒马(chevaux):开战时对攻方骑兵类兵种造成 800 点伤害(固定值,按各兵种总生命比例分摊);单件成本 金/木/粮/石/铁 = 40/200/0/0/80,单件 10s;滚木(rolling_log):攻方近战部队第一次贴到城墙下时,对贴墙的近战兵种造成 400 点伤害;单件成本 金/木/粮/石/铁 = 30/200/0/0/0,单件 8s;擂石(boulder):攻方冲车第一次贴到城墙下时,对冲车造成 1500 点伤害(正好击毁 1 辆冲车);单件成本 金/木/粮/石/铁 = 40/0/0/380/0,单件 12s)。可选带 cityId 指定在哪座城打造,缺省主城(v81,AISLG-204)。发起时立即从该城扣资源,入库在打造完成时(Worker 结算)。库存上限 = 城墙等级 × 60(四种器械共用;城墙 10 级 600、20 级 1200、名城 25 级 1500),校验把在造 + 排队的件数也算进去(超出返回 DEFENSE_STOCK_FULL,附 cap / stock / pending)。队列与征兵同模型:1 条在造 + 2 条排队(队满 DEFENSE_QUEUE_FULL);无在造时立即开工(status=crafting,dueAt 非空),批次总时长 = max(1 秒, floor(单件基准 × 件数 ÷ time_scale));有在造时入队(status=queued,dueAt 为 null)。校验顺序:城墙未建(WALL_NOT_BUILT)→ 库存上限 → 队列 → 资源。守城战开打时器械按需自动使用、用掉就没了(陷阱 / 拒马开战即用,滚木 / 擂石在攻方贴墙时用),用量与杀伤见战报的 defenses 字段。 使用建议:守城器械只在被攻打时自动消耗,不会被掠夺。被打前先补库存:城墙 10 级囤满 600 件约等于守军多两成战力。四种按威胁配比:对手步兵多造陷阱、骑兵多造拒马、带冲车必须备擂石、通用近战压力造滚木。队列满了(1 在造 + 2 排队)先等或取消。 (协议 op CRAFT_DEFENSE,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數kind必填count必填cityId

CANCEL_DEFENSE_CRAFT

取消打造(v73,AISLG-193)

取消排队中(queued)或打造中(crafting)的器械条目:按发起时的成本快照全额返还到该城,库存不变;该城排队的下一条立即开工(同事务激活,推送 craft_started)。与 Worker 到点完成按条件守卫并发,先翻转状态者生效。 使用建议:取消全额返还,但会丢掉这段时间的进度;只是缺资源的话优先等完成,别反复取消重下。 (协议 op CANCEL_DEFENSE_CRAFT,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數craftId必填

DISMISS_ASSIST

召回 / 遣返协防部队(v74,AISLG-194)

让一支驻扎在盟友城里的协防部队回出发城:派出方随时可以召回,城主可以遣返任意一支驻扎在自己城里的协防部队。部队原路返回(行军时长按两地距离与编队速度计算,驿站不加速),到达后并回出发城驻军;途中可以被 RECALL_MARCH 折返(折返仍是回出发城)。每座城最多接收 5 支协防部队,同一账号对同一座城最多 1 支;退盟 / 被踢 / 解散与城主放弃分城时相关协防部队自动遣返(事件 assist_returned,cause = ally_left / city_discarded);分城被占领要求守方全灭,协防部队随城覆灭,派出方收到 assist_returned(cause = wiped,troops 为空、returning 为 null,没有返程行军)。 使用建议:协防部队占派出城的校场出征名额、耗粮由派出城按野外部队 2 倍承担;守城战时与城主驻军合并参战,伤亡按开战时各兵种数量比例分摊(余数归城主)。战斗后派出方会收到一份带 assistLosses 的战报。 (协议 op DISMISS_ASSIST,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數assistId必填

GET_BATTLEFIELD

查询剧本战场(官渡之战,v75,AISLG-198)

周期性的剧本战场,玩家与 Agent 通用。日程:北京时间每周二 20:00 开始报名、周三 20:00 开战、周四 20:00 结束(现实时间,不随全局时间缩放)。每周一场,剧本按周轮换:官渡之战 → 讨伐董卓 → 赤壁之战(循环),本场剧本见 event.script、下一场见 nextScript。官渡之战(script=guandu)是阵营对阵:报名要求主城官府 ≥ 5 级,选袁绍军或曹操军(一方报名人数超过另一方 1.5 倍且多 5 人以上时,人多一方暂停报名)。战场是 30×30 的独立地图,与世界地图完全隔离;中间一条河(x=15)只有 3 处渡口(y=5/15/25)能过。行军每格 60 秒现实时间,不随全局缩放。9 个据点:袁绍大营(2,15,0 分/小时,守军 ×10);曹操大营(27,15,0 分/小时,守军 ×10);白马渡口(15,5,10 分/小时,守军 ×2);延津渡口(15,15,10 分/小时,守军 ×2);官渡渡口(15,25,10 分/小时,守军 ×2);酸枣据点(7,8,10 分/小时,守军 ×2);阳武据点(7,22,10 分/小时,守军 ×2);中牟据点(22,8,10 分/小时,守军 ×2);乌巢粮仓(22,22,30 分/小时,守军 ×4)。守军 = 3 级 NPC 城守军(义兵 100 / 刀盾 30 / 弓箭 40 / 轻骑 12)× 表格倍数 × max(1, 报名人数 ÷ 20);大营按守城战(城墙 10、箭塔 10),其余按野战。报名期从主城带一支部队入场(按人口最多 3000,每人一次,开战后不能追加),入场后可拆成最多 3 队。军功 = 歼灭敌军参考战力 1:1(打 NPC 守军也算),首次打下据点额外 +200;乌巢粮仓让敌方阵营所有部队耗粮翻倍;开战时一方人数少于另一方 70% 时,人少一方据点积分 × min(1.5, 多/少)。结束时按胜负发奖(胜方 3000 金 + 四资源各 15000;败方 1000 金 + 各 5000),个人军功前 10 有额外奖励(个人军功第 1 名 6000 金 + 各 30000;第 2–3 名 4000 金 + 各 20000;第 4–10 名 2500 金 + 各 12000),军功 > 0 才能领;幸存部队回主城。战场商店(军功跨场累积、换季清零):资源包 200 军功(每场限 5);武将经验 300 军功(每场限 3);刀盾兵 600 军功(每场限 2);轻骑兵 600 军功(每场限 2);欺敌令 100 军功(每场限 4);行军令 150 军功(每场限 3);攻心令 250 军功(每场限 2);情报令 150 军功(每场限 2)。讨伐董卓(script=dongzhuo,全服合作):只有讨董联军一方,所有报名玩家都在同一边(报名时 camp 仍要传,服务端统一记为 yuan),对手是 NPC 董卓军。一条推进线 汜水关 → 虎牢关 → 洛阳,前一关打下后下一关才开放(strongholds[].unlocked)。守军 = 3 级 NPC 城守军 × 倍数 × max(1, 报名人数 ÷ 10):汜水关 ×15(城墙 10 / 箭塔 10)、虎牢关 ×40(城墙 15 / 箭塔 15,守将吕布攻击 +20% 、减伤 −20%)、洛阳 ×30(城墙 20 / 箭塔 20)。守军伤亡保留不回血。攻下洛阳即结束(胜);时间到也结束。奖励按全服最远进度领一档(军功 > 0 才能领):破汜水关 1000 金 + 四资源各 5000;破虎牢关 2000 金 + 四资源各 10000;攻下洛阳 4000 金 + 四资源各 20000;个人军功前 10 的额外奖励与官渡相同。没有玩家对抗。 赤壁之战(script=chibi):孙刘联军(yuan)对曹操军(cao),人数限制、人少补偿、胜负判定、奖励表与官渡相同;报名要求爵位大夫及以上(NOBILITY_TOO_LOW,附 required / current)。地图同为 30×30 与河(x=15,3 处渡口),双方各 4 个据点加各 1 座大营(共 10 个,见 strongholds);大营与据点守军、积分产出与官渡对应据点相同(大营守军 ×10,城墙 / 箭塔 10)。风向:开战时随机东南风(se)或西北风(nw),之后每 6 小时交替一次,切换前 30 分钟预告;event.wind = { direction, label, bonusCamp, nextAt, noticeAt }。顺风方(se 利孙刘、nw 利曹操)的远程兵种与床弩射程 +10%(战报可见)。火攻(FIRE_BATTLEFIELD_STRONGHOLD,op 139):孙刘方、东南风期间,花 300

無需輸入參數。

SIGNUP_BATTLEFIELD

报名剧本战场(v75,AISLG-198;v80 讨董 / 赤壁)

在报名期(北京时间每周二 20:00 开始报名、周三 20:00 开战、周四 20:00 结束(现实时间,不随全局时间缩放))报名:主城官府 ≥ 5 级;同一场只能报一次,阵营选定后不能改。官渡 / 赤壁:一方报名人数超过另一方 1.5 倍且多出 5 人以上时,人多的一方暂停报名(返回 BATTLEFIELD_CAMP_FULL,附 count / otherCount / limit);赤壁另需爵位大夫及以上(NOBILITY_TOO_LOW,附 required / current)。讨伐董卓是单阵营合作本,所有报名玩家都记为讨董联军(yuan),不做人数失衡判断。报名只占阵营人数,不带兵;带兵用 ENTER_BATTLEFIELD(开战前)。 使用建议:报名前先 GET_BATTLEFIELD 看双方 signups,选人少的一方通常能吃到人少补偿;报名后记得在开战前 ENTER_BATTLEFIELD 带兵入场,否则开战后无法入场。 (协议 op SIGNUP_BATTLEFIELD,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數camp必填

ENTER_BATTLEFIELD

带部队入场(v75,AISLG-198)

报名后、开战前,从主城带一支部队进入战场:按人口计最多 3000(铁骑兵 3、辎重车 6……),部队从主城驻军扣除,战场结束后幸存部队回到主城。每人每场只能入场一次,开战后不能追加兵力。入场后队伍出现在自己大营旁,可用 SPLIT_BATTLEFIELD_SQUAD 拆成最多 3 队。 使用建议:入场前用 GET_STATE 的 city.army 确认兵够,并算清人口(铁骑兵 3 / 辎重车 6 / 床弩 3 / 冲车 5)。全部兵力一次性带入即可,开战后无法追加;拆队是战术选择,不影响入场上限。 (协议 op ENTER_BATTLEFIELD,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數troops

SPLIT_BATTLEFIELD_SQUAD

拆分战场队伍(v75,AISLG-198)

从一支队伍里分出一支新队伍(位置相同、状态待命),每人最多 3 队;行军中不能拆。新队伍与原队伍都必须至少剩 1 个单位。 使用建议:拆队适合「主力攻据点 + 骑兵绕后抢乌巢 / 渡口」这类分兵。行军中不能拆,先等到达。 (协议 op SPLIT_BATTLEFIELD_SQUAD,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數troopssquadId必填

MARCH_BATTLEFIELD_SQUAD

战场内行军 / 攻打据点(v75,AISLG-198)

给一支待命 / 据守中的队伍下令:目标给 strongholdId(自动取据点坐标)或 x / y;每格 60 秒现实时间,河只能从 3 处渡口(y=5/15/25)通过。到达友方据点 = 入驻据守(合并守军);到达敌方 / 中立据点 = 自动开战(有城墙的据点按守城战),胜方幸存部队留守、据点易手。行军中不能再次下令。讨伐董卓的关卡未解锁(unlocked 为 false)时返回 BATTLEFIELD_STRONGHOLD_LOCKED(附 unlockAfter)。 使用建议:到达结算与战报由服务端在 Worker 里完成,客户端轮询 / 收 PUSH_BATTLEFIELD_STATE 后重查即可。攻打前对比 garrisonPower 与自己的队伍战力;没有把握先打渡口(10 分/小时)或普通据点。战败的幸存部队会退回出发位置。 (协议 op MARCH_BATTLEFIELD_SQUAD,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數xysquadId必填strongholdId

BUY_BATTLEFIELD_ITEM

战场商店兑换(v75,AISLG-198)

用战场军功换东西(军功跨场累积、换季清零;每场限购,见 GET_BATTLEFIELD 的 shop.items):资源包 200 军功(每场限 5);武将经验 300 军功(每场限 3);刀盾兵 600 军功(每场限 2);轻骑兵 600 军功(每场限 2);欺敌令 100 军功(每场限 4);行军令 150 军功(每场限 3);攻心令 250 军功(每场限 2);情报令 150 军功(每场限 2)。赤壁场次另有 铁骑兵 800 军功(直接进主城,每场限 1 次)。兑换即时到账(资源包进主城、兵直接进主城驻军、武将经验给指定武将),不占队列。 使用建议:打得多不如换得准:资源包适合补建造缺口,武将经验给主力将,刀盾 / 轻骑直接补战损。注意每场限购,军功余额跨场保留但换季清零。 (协议 op BUY_BATTLEFIELD_ITEM,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數item必填heroId

GET_NOBILITY

查询声望与爵位(v76,AISLG-197)

累计声望只增不减:世界地图上的每一场战斗(攻守、输赢、NPC / 玩家 / 黄巾)按歼灭敌军的参考战力 1:1 计;剧本战场的军功按 1 军功 = 1 声望再计一次。竞技场与将星塔不计。爵位共 10 级(平民 0 / 公士 100 / 簪袅 500 / 大夫 2000 / 公乘 6000 / 五大夫 15000 / 庶长 35000 / 关内侯 80000 / 列侯 160000 / 王 300000),达到门槛自动升级;升到大夫及以上会全服播报。大夫(3)起可以占领名城(之前只能打外围与掠夺);五大夫 / 列侯各让普通武将上限 +1。每日俸禄(金币 = 爵位序号 × 200 × 全局时间缩放,当前示例 公士 10000 金、簪袅 20000 金、大夫 30000 金、公乘 40000 金)在北京时间每天 0 点后领一次,用 CLAIM_NOBILITY_SALARY。声威与爵位随赛季重置;上一季的最高爵位随名人堂留存。 使用建议:声望是长期累积线:能打就打,不用刻意刷。打名城前先确认 canOccupyFamous;否则先打 NPC 城 / 野地攒到 2000 声望。俸禄每天记得领(claimable 为 true 时),金额随爵位提高。 (协议 op GET_NOBILITY,文档版本 v92;完整规则可读资源 slg://agent-api.md)

無需輸入參數。

CLAIM_NOBILITY_SALARY

领取每日爵位俸禄(v76,AISLG-197)

按北京日领取一次爵位俸禄(金币),直接加到主城。平民没有俸禄(NOBILITY_SALARY_NONE);今日已领返回 NOBILITY_SALARY_CLAIMED(附 nextClaimAt)。金额 = 爵位序号 × 200 × 全局时间缩放。 使用建议:每天上线先领一次(幂等:重复领只会返回已领)。金币直接进主城,可用于建造 / 征兵 / 俸禄。 (协议 op CLAIM_NOBILITY_SALARY,文档版本 v92;完整规则可读资源 slg://agent-api.md)

無需輸入參數。

ALLIANCE_DIPLOMACY_INVITE

发起友好邀请(v77,AISLG-195)

联盟之间有三种关系:**中立**(默认)/ **友好**(一方发邀请、另一方同意,邀请 48 小时过期)/ **敌对**(一方单方面宣布,不需要对方同意)。友盟双方成员互不攻击(掠夺、抢野地、占分城、侦察都返回 ALLY_NOT_ATTACKABLE),可以互相协防;地图上显示友军色。敌对只在地图上标红、来袭预警标出「敌对联盟」,不改变战斗与收益规则(不等于宣战)。上限:每个联盟最多 2 个友盟、5 个敌对。解除友好后 24 小时内双方仍不能互相攻击,72 小时内不能再次结好。管理操作仅限玩家连接的盟主 / 副盟主(Agent 返回 AGENT_FORBIDDEN);关系变化在双方联盟频道发系统消息,结友 / 宣布敌对另发全服播报;换季关系保留、邀请清空。 本协议由盟主 / 副盟主向另一个联盟发出友好邀请(48 小时有效)。双方任一方的友盟已达 2 个返回 DIPLOMACY_LIMIT;已是友盟 / 敌对返回 DIPLOMACY_EXISTS;解除友好 72 小时冷却内返回 DIPLOMACY_COOLDOWN。仅玩家连接。 使用建议:管理操作 Agent 不能做;由玩家的盟主 / 副盟主在联盟面板发起。 (协议 op ALLIANCE_DIPLOMACY_INVITE,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數allianceId

ALLIANCE_DIPLOMACY_RESPOND

同意 / 拒绝友好邀请(v77,AISLG-195)

联盟之间有三种关系:**中立**(默认)/ **友好**(一方发邀请、另一方同意,邀请 48 小时过期)/ **敌对**(一方单方面宣布,不需要对方同意)。友盟双方成员互不攻击(掠夺、抢野地、占分城、侦察都返回 ALLY_NOT_ATTACKABLE),可以互相协防;地图上显示友军色。敌对只在地图上标红、来袭预警标出「敌对联盟」,不改变战斗与收益规则(不等于宣战)。上限:每个联盟最多 2 个友盟、5 个敌对。解除友好后 24 小时内双方仍不能互相攻击,72 小时内不能再次结好。管理操作仅限玩家连接的盟主 / 副盟主(Agent 返回 AGENT_FORBIDDEN);关系变化在双方联盟频道发系统消息,结友 / 宣布敌对另发全服播报;换季关系保留、邀请清空。 本协议由收到邀请一方的盟主 / 副盟主答复(accept=true 同意 / false 拒绝)。同意时双方友盟名额、72 小时冷却都会复核(不通过返回 DIPLOMACY_LIMIT / DIPLOMACY_COOLDOWN),成功后双方联盟频道各写一条系统消息并全服播报。仅玩家连接。 使用建议:同意后双方成员立即不能互相攻击,且可以互相协防;规划军事行动前先确认。 (协议 op ALLIANCE_DIPLOMACY_RESPOND,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數acceptinviteId

ALLIANCE_DIPLOMACY_END

解除友好 / 敌对(v77,AISLG-195)

联盟之间有三种关系:**中立**(默认)/ **友好**(一方发邀请、另一方同意,邀请 48 小时过期)/ **敌对**(一方单方面宣布,不需要对方同意)。友盟双方成员互不攻击(掠夺、抢野地、占分城、侦察都返回 ALLY_NOT_ATTACKABLE),可以互相协防;地图上显示友军色。敌对只在地图上标红、来袭预警标出「敌对联盟」,不改变战斗与收益规则(不等于宣战)。上限:每个联盟最多 2 个友盟、5 个敌对。解除友好后 24 小时内双方仍不能互相攻击,72 小时内不能再次结好。管理操作仅限玩家连接的盟主 / 副盟主(Agent 返回 AGENT_FORBIDDEN);关系变化在双方联盟频道发系统消息,结友 / 宣布敌对另发全服播报;换季关系保留、邀请清空。 本协议由盟主 / 副盟主单方面解除与目标联盟的友好或敌对,回到中立。解除友好会写入 24 小时不可攻击 + 72 小时不可再结好的冷却(防解约偷袭 / 反复横跳)。仅玩家连接。 使用建议:解除友好不等于立刻能打:24 小时冷却内攻击仍会被拒(ALLY_NOT_ATTACKABLE)。 (协议 op ALLIANCE_DIPLOMACY_END,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數allianceId

ALLIANCE_DIPLOMACY_HOSTILE

宣布敌对(v77,AISLG-195)

联盟之间有三种关系:**中立**(默认)/ **友好**(一方发邀请、另一方同意,邀请 48 小时过期)/ **敌对**(一方单方面宣布,不需要对方同意)。友盟双方成员互不攻击(掠夺、抢野地、占分城、侦察都返回 ALLY_NOT_ATTACKABLE),可以互相协防;地图上显示友军色。敌对只在地图上标红、来袭预警标出「敌对联盟」,不改变战斗与收益规则(不等于宣战)。上限:每个联盟最多 2 个友盟、5 个敌对。解除友好后 24 小时内双方仍不能互相攻击,72 小时内不能再次结好。管理操作仅限玩家连接的盟主 / 副盟主(Agent 返回 AGENT_FORBIDDEN);关系变化在双方联盟频道发系统消息,结友 / 宣布敌对另发全服播报;换季关系保留、邀请清空。 本协议由盟主 / 副盟主单方面把目标联盟标为敌对(不需要对方同意,最多 5 个),地图上对方成员的城与野地标红、对方来袭时预警标出「敌对联盟」。若原是友盟,保留 24 小时不可攻击冷却。仅玩家连接。 使用建议:敌对只是标记,不改变战斗与收益;可以随时单方面解除回到中立。 (协议 op ALLIANCE_DIPLOMACY_HOSTILE,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數allianceId

GET_ALLIANCE_DIPLOMACY

查询联盟外交(v77,AISLG-195)

联盟之间有三种关系:**中立**(默认)/ **友好**(一方发邀请、另一方同意,邀请 48 小时过期)/ **敌对**(一方单方面宣布,不需要对方同意)。友盟双方成员互不攻击(掠夺、抢野地、占分城、侦察都返回 ALLY_NOT_ATTACKABLE),可以互相协防;地图上显示友军色。敌对只在地图上标红、来袭预警标出「敌对联盟」,不改变战斗与收益规则(不等于宣战)。上限:每个联盟最多 2 个友盟、5 个敌对。解除友好后 24 小时内双方仍不能互相攻击,72 小时内不能再次结好。管理操作仅限玩家连接的盟主 / 副盟主(Agent 返回 AGENT_FORBIDDEN);关系变化在双方联盟频道发系统消息,结友 / 宣布敌对另发全服播报;换季关系保留、邀请清空。 本协议返回本联盟的友盟名单、敌对名单与待处理邀请(发出 / 收到);玩家与 Agent 通用。没有联盟返回 ALLIANCE_NOT_IN。 使用建议:外交是盟主 / 副盟主的玩家操作,Agent 只能查。友盟成员不能互相攻击,规划进攻前先查 friendships;解除友好有 24 小时不可攻击 + 72 小时不可再结好的冷却。 (协议 op GET_ALLIANCE_DIPLOMACY,文档版本 v92;完整规则可读资源 slg://agent-api.md)

無需輸入參數。

GET_MARKET

查询玩家交易所(v78,AISLG-196)

玩家之间挂单买卖粮 / 木 / 石 / 铁(可收另一种资源或金币)。挂单时卖出的资源立即从挂单城冻结;吃单可整单或部分成交,成交时买家立即扣款,双方各派一支商队送货(每格 15 秒基准 ÷ 全局缩放,出发城驿站与行军科技有效;商队不会被截击,也不占校场名额)。成交双方各扣 5% 手续费。未成交部分随时可撤,48 小时后自动撤单退还。价格:资源之间 0.5–2(每 1 个卖出资源换多少个收取资源),收金币 0.125–0.5;单张最少 1000,每账号最多 5 张。每日成交额度 = 主城官府等级 × 3000 × 全局缩放(按卖出资源数量折算、买卖合计,北京日重置)。门槛:主城官府 ≥ 5 且不在新手保护期。可勾选「只卖给盟友」(同联盟成员才可见 / 可买)。 返回可买挂单(可按卖出 / 收取资源筛选、分页)、我的挂单与成交记录、我的额度与门槛;玩家与 Agent 通用。 使用建议:先 GET_MARKET 看 orders 与 limits:locked 为 true 时不能交易。单价范围见 limits;吃单前确认自己 buyResource 足够。成交后商队要飞一会儿,deliveredAt 为 null 表示还在路上。 (协议 op GET_MARKET,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數pagebuyResourcesellResource

CREATE_MARKET_ORDER

挂单卖出资源(v78,AISLG-196)

玩家之间挂单买卖粮 / 木 / 石 / 铁(可收另一种资源或金币)。挂单时卖出的资源立即从挂单城冻结;吃单可整单或部分成交,成交时买家立即扣款,双方各派一支商队送货(每格 15 秒基准 ÷ 全局缩放,出发城驿站与行军科技有效;商队不会被截击,也不占校场名额)。成交双方各扣 5% 手续费。未成交部分随时可撤,48 小时后自动撤单退还。价格:资源之间 0.5–2(每 1 个卖出资源换多少个收取资源),收金币 0.125–0.5;单张最少 1000,每账号最多 5 张。每日成交额度 = 主城官府等级 × 3000 × 全局缩放(按卖出资源数量折算、买卖合计,北京日重置)。门槛:主城官府 ≥ 5 且不在新手保护期。可勾选「只卖给盟友」(同联盟成员才可见 / 可买)。 卖出资源从当前城(可带 cityId)立即冻结;挂单后可在 GET_MARKET 的 mine.orders 看到。单价超范围返回 PRICE_OUT_OF_RANGE;官府 / 保护期门槛 MARKET_LOCKED;满 5 张 ORDER_LIMIT;sellResource 与 buyResource 相同(卖什么就收什么)返回 INVALID_PARAMS。 使用建议:挂单前算好单价:资源之间参考价 1:1,收金币参考价 0.25。只卖给盟友可减少被陌生人吃掉,但也少买家。 (协议 op CREATE_MARKET_ORDER,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數amount必填allyOnlyunitPrice必填buyResource必填sellResource必填

BUY_MARKET_ORDER

吃单(v78,AISLG-196)

玩家之间挂单买卖粮 / 木 / 石 / 铁(可收另一种资源或金币)。挂单时卖出的资源立即从挂单城冻结;吃单可整单或部分成交,成交时买家立即扣款,双方各派一支商队送货(每格 15 秒基准 ÷ 全局缩放,出发城驿站与行军科技有效;商队不会被截击,也不占校场名额)。成交双方各扣 5% 手续费。未成交部分随时可撤,48 小时后自动撤单退还。价格:资源之间 0.5–2(每 1 个卖出资源换多少个收取资源),收金币 0.125–0.5;单张最少 1000,每账号最多 5 张。每日成交额度 = 主城官府等级 × 3000 × 全局缩放(按卖出资源数量折算、买卖合计,北京日重置)。门槛:主城官府 ≥ 5 且不在新手保护期。可勾选「只卖给盟友」(同联盟成员才可见 / 可买)。 吃单可整单或部分(quantity ≤ remaining)。成交时锁挂单行、扣买家款、按 5% 手续费拆出双方实收并各派一支商队。挂单只卖给盟友时非盟友返回 MARKET_ALLY_ONLY;额度不足 DAILY_TRADE_LIMIT;挂单已被别人吃空返回 ORDER_NOT_FOUND。 使用建议:部分成交可以拆单降低一次性投入;注意 5% 手续费与商队飞行时间。额度按卖出资源数量计,买卖都占额度。 (协议 op BUY_MARKET_ORDER,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數orderId必填quantity必填

CANCEL_MARKET_ORDER

撤单(v78,AISLG-196)

玩家之间挂单买卖粮 / 木 / 石 / 铁(可收另一种资源或金币)。挂单时卖出的资源立即从挂单城冻结;吃单可整单或部分成交,成交时买家立即扣款,双方各派一支商队送货(每格 15 秒基准 ÷ 全局缩放,出发城驿站与行军科技有效;商队不会被截击,也不占校场名额)。成交双方各扣 5% 手续费。未成交部分随时可撤,48 小时后自动撤单退还。价格:资源之间 0.5–2(每 1 个卖出资源换多少个收取资源),收金币 0.125–0.5;单张最少 1000,每账号最多 5 张。每日成交额度 = 主城官府等级 × 3000 × 全局缩放(按卖出资源数量折算、买卖合计,北京日重置)。门槛:主城官府 ≥ 5 且不在新手保护期。可勾选「只卖给盟友」(同联盟成员才可见 / 可买)。 卖家可随时撤回未成交部分,冻结资源立即退还到挂单城;已售罄 / 已过期返回 ORDER_NOT_CANCELLABLE。 使用建议:挂单 48 小时会自动撤单退款,不需要手动撤;急着用资源时再撤。 (协议 op CANCEL_MARKET_ORDER,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數orderId必填

GET_LUOYANG

查询洛阳争夺状态(v79,AISLG-200)

洛阳是 8 座名城之一,仍是占领者的分城;占领者所在联盟成为「洛阳之主」,占领者本人是「洛阳太守」。洛阳被玩家占领后,只在每周六 21:00–23:00(北京时间,现实时间)可以被攻打 / 侦察;窗口外返回 LUOYANG_CLOSED(附 nextOpenAt)。窗口内洛阳没有被动免战、城防值不回涨,每次打赢按现有规则扣城防,归零换主;窗口结束时城防回满并进入保护。洛阳可接收 10 支协防(普通城 5 支),盟友 / 友盟都能协防。洛阳之主联盟全员所有城的粮木石铁产量 +5%(与名城 / 科技 / 城守同一百分比池相加)。盟主每 7 天可以发布一道政令(三选一,持续 7 天):征兵时长 −15% / 行军速度 +10% / 科技研究时长 −15%;洛阳易主时旧政令立即失效。赛季结束时占有洛阳的联盟进入名人堂,结算时在盟成员每人获得 10,000 金币与四资源各 50,000。窗口预告 / 开始 / 结束、洛阳易主、政令发布都有全服播报,并在相关联盟频道发系统消息。 本协议返回洛阳占领者、争夺窗口、洛阳之主联盟加成与当前政令;玩家与 Agent 通用。 使用建议:窗口外不要对洛阳发起掠夺 / 占领 / 侦察(LUOYANG_CLOSED)。窗口内洛阳无被动免战、城防不回涨;攻方要有空分城名额。洛阳之主盟员可享受 +5% 产量,盟主每 7 天可发政令。 (协议 op GET_LUOYANG,文档版本 v92;完整规则可读资源 slg://agent-api.md)

無需輸入參數。

PUBLISH_DECREE

发布洛阳政令(v79,AISLG-200)

洛阳是 8 座名城之一,仍是占领者的分城;占领者所在联盟成为「洛阳之主」,占领者本人是「洛阳太守」。洛阳被玩家占领后,只在每周六 21:00–23:00(北京时间,现实时间)可以被攻打 / 侦察;窗口外返回 LUOYANG_CLOSED(附 nextOpenAt)。窗口内洛阳没有被动免战、城防值不回涨,每次打赢按现有规则扣城防,归零换主;窗口结束时城防回满并进入保护。洛阳可接收 10 支协防(普通城 5 支),盟友 / 友盟都能协防。洛阳之主联盟全员所有城的粮木石铁产量 +5%(与名城 / 科技 / 城守同一百分比池相加)。盟主每 7 天可以发布一道政令(三选一,持续 7 天):征兵时长 −15% / 行军速度 +10% / 科技研究时长 −15%;洛阳易主时旧政令立即失效。赛季结束时占有洛阳的联盟进入名人堂,结算时在盟成员每人获得 10,000 金币与四资源各 50,000。窗口预告 / 开始 / 结束、洛阳易主、政令发布都有全服播报,并在相关联盟频道发系统消息。 仅洛阳之主联盟的盟主(玩家连接)可发布;每 7 天一次,持续 7 天,三选一(recruit / march / research)。发布后全服播报并在联盟频道发系统消息。 使用建议:管理操作需要玩家盟主本人;Agent 只能查询 GET_LUOYANG。政令到期后自动失效,冷却按发布时刻 +7 天。 (协议 op PUBLISH_DECREE,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數kind

FIRE_BATTLEFIELD_STRONGHOLD

赤壁火攻(v80,AISLG-199)

仅赤壁场次、孙刘方(me.camp = yuan)、已入场,并且当前风向为东南风(event.wind.direction = se)时可用:花 300 军功,火攻一座曹方据点(ownerCamp = cao)。目标必须与己方据点相邻(曼哈顿距离 ≤ 10)。效果立即结算:对守军造成总生命 20% 的伤害(目标处于连锁战船期间为 40%);伤害按各兵种生命比例写入据点余伤池,整单位折算阵亡,阵亡按 NPC 守军与据守队伍的占比分摊。同一目标每 2 小时最多被火攻一次(冷却 fireNextAt)。火攻不计军功,也不改变归属,要靠后续攻打夺下据点。 使用建议:火攻前先看 event.wind:只有东南风能用,西北风要等下一次切换(event.wind.nextAt)。挑一个 ownerCamp = cao、fireNextAt 已过的相邻据点;目标处于连锁期时伤害翻倍,所以优先挑没有连锁的目标。每次 300 军功,冷却中的目标别反复尝试。 (协议 op FIRE_BATTLEFIELD_STRONGHOLD,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數strongholdId必填

CHAIN_BATTLEFIELD_STRONGHOLD

赤壁连锁战船(v80,AISLG-199)

仅赤壁场次、曹操军(me.camp = cao)、已入场可用:花 200 军功,给一座己方据点(ownerCamp = cao)连锁 6 小时(chainUntil):该据点守军受到的伤害 −15%,但被火攻时伤害翻倍。连锁期间不能重复连锁(BATTLEFIELD_CHAIN_ACTIVE);据点易手后连锁立即失效。 使用建议:连锁适合在孙刘方准备火攻前先给要守的据点加一层防护:连锁期间正面战斗更耐打,但一旦被火攻伤害会翻倍,所以要结合风向和对面相邻据点判断。 (协议 op CHAIN_BATTLEFIELD_STRONGHOLD,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數strongholdId必填

SET_CAPITAL

设为主城

把一座分城与当前主城对调身份(v82,AISLG-205):被选中的分城成为主城,原主城变为分城。两座城的建筑、资源、驻军、武将、队列、坐标与名字原样保留,只换身份。主城的全部特殊待遇(永不被占领、官府等级决定分城上限、竞技场 / 将星塔金币、任务、剧本战场报名、酒馆候选、联盟与排行榜显示的主城)随身份走。换完后原主城立刻变为可被占领的分城(城防值从 100 满值开始计,没有额外免战),新主城没有城防值(永不被占领,仍可被掠夺)。发起前须满足:目标是本账号的普通分城(非名城)、不是当前主城;本账号距上次设为主城已满 24 小时(冷却按全局时间缩放换算,新号第一次不受限制);本账号任一城或任一块野地没有他人玩家的出征正奔向(掠夺 / 占领);目标城城防值已满 100;换完后分城数不超过新主城的分城上限 = floor(新主城官府等级 ÷ 2)。没有资源消耗。必须显式携带 confirm=true 防误触。 使用建议:发起前先 GET_STATE:读 capitalSwap(cooldownUntil 未空表示冷却中;underAttack 为真表示正在被来袭;blocked[cityId] 给出该分城不可设的原因:FAMOUS_CITY_NOT_CAPITAL / CAPITAL_SWAP_DURABILITY_LOW / BRANCH_LIMIT_EXCEEDED),再对照 branch 与目标城的 level(新上限 = level ÷ 2)。成功后 GET_STATE 的 cities[] 中 isMain 对调、主城排第一。同账号其他在线连接收到 PUSH_CITY_STATE(reason=capital_changed,cityId 为新主城,formerCapitalId 为原主城)推送,事件流新增 capital_changed。设为主城是对调而非拆分,不占也不退任何资源;但它会改变「主城」相关的一切判定,向玩家说明时要讲清原主城从此可以被占领。 (协议 op SET_CAPITAL,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數cityId必填confirm必填

DISBAND_TROOPS

遣散士兵(解散城内驻军并返还一半征兵资源)

把指定城池(缺省主城)的**城内驻军**按兵种解散(v84,AISLG-209):请求 troops = { 兵种: 数量 },**立即生效、没有等待时间**,并返还当初征兵花掉的资源的 50%(金 / 木 / 铁 / 粮 / 石分别计算,石只在冲车等成本里出现,没有就是 0)。每种资源返还 = floor(Σ 单兵征募成本 × 遣散数量 × 50%)——多个兵种**先累加再取整一次**(不按兵种逐个取整)。**不返还人口**:人口是征兵时消耗、随民房自然增长的征兵额度,退人口会让「征兵 → 遣散」循环绕开征兵速度上限。返还直接入账该城,不钳储量上限(与 CANCEL_RECRUIT 同口径)。只认该城的城内驻军:在外部队(行军 / 返程 / 运输 / 侦察)、驻守野地的兵、派去盟友城的协防部队都不受影响,要遣散得先召回。该城或其名下野地正有行军在途指向、或有未结的 NPC 来袭时拒绝(CITY_IN_BATTLE,与放弃分城同一判定),否则会变成「躲战损 + 拿回一半资源」的投机;遣散**不受断粮、欠饷、免战状态限制**(断粮时遣散正好是止损手段)。遣散后 armyFoodUsePerHour 立即下降;遣散前先结算到当前时刻,断粮状态下若因此不再断粮,starveAt / mutinyNextAt 会同时清空。玩家与 Agent 都可以发起。 使用建议:遣散是「止损与调兵种结构」的手段,不是回血:只拿回 50%,换阵容有真实代价。发起前用 GET_STATE 的 city.army 核对各兵种城内数量(city.inBattle 为 true 时先别发,会被 CITY_IN_BATTLE 拒绝);响应直接给遣散后的 city,不必再查。同账号其他在线连接会收到 PUSH_CITY_STATE(reason=troops_disbanded),事件流新增 troops_disbanded(detail = { cityId, troops, refunded })。 (协议 op DISBAND_TROOPS,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數cityIdtroops

RESTORE_TROOPS

治疗伤兵 / 招降俘虏 / 劝回逃兵(立即完成,花征兵资源 × 50% 或 60%)

把指定城池(缺省主城)三个部队池里的兵弄回城内驻军(v85,AISLG-212):**立即完成、没有等待时间**,按 pool 分三种——伤兵(wounded)治疗花该兵种征兵资源的 50%(治好再遣散不赚不亏)、俘虏(captive)招降花 60% 且**扣人口**(与征兵同口径;军营等级不够征募该兵种也能招降,俘虏本来就是现成的兵)、逃兵(deserter)劝回花 50% 不扣人口。费用口径同遣散(v84):每种资源 = floor(Σ 单兵征募成本 × 数量 × 比例%),多个兵种**先累加再取整一次**。**伤兵 / 俘虏 72 小时、逃兵 24 小时不处理就没了**(按全局时间缩放换算,earliestExpireAt 为最早一批的过期时刻);治疗 / 招降 / 劝回**先消耗最早的一批**。人口规则:伤兵治好回来不扣人口(征兵时已扣),逃兵同样不扣,只有招降俘虏扣(俘虏是对方的人)。劝回逃兵要求该城**不在断粮状态**(粮食归零且净产量为负时返回 CITY_STARVING)。三个池子都不吃粮、不参战、不能被掠夺、不占出征名额;城池消失(分城被占 / 放弃 / 合并)时一起消失。玩家与 Agent 都可以发起。 使用建议:发起前用 GET_STATE 的 city.wounded / captives / deserters 核对各兵种数量与 earliestExpireAt(最早一批的过期时刻,快过期就先花掉);资源不足返回 INSUFFICIENT_RESOURCES(附 shortfall 缺口,v22 口径)。治疗与遣散资源口径互补:治好(50%)再遣散(返 50%)净变化为 0,不存在套利;招降多花的 10% 是「俘虏变自己人」的代价。同账号其他在线连接会收到 PUSH_CITY_STATE(reason=troop_pools_changed,附 cityId 与 pool)。 (协议 op RESTORE_TROOPS,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數pool必填cityIdtroops

RELEASE_TROOPS

放弃治疗伤兵 / 释放俘虏(免费,池子消失不返还)

把指定城池(缺省主城)伤兵营 / 俘虏营里的兵直接清掉(v85,AISLG-212):**免费、立即生效、不返还任何东西**——放弃治疗(pool=wounded)等于让这批伤兵死亡,释放俘虏(pool=captive)等于放人。池子快过期、资源不够治疗 / 招降、或兵种结构不想要时用它止损(省下抢人口的顾虑)。逃兵不能释放(deserter 只能 RESTORE_TROOPS 劝回或等 24 小时过期),传 deserter 返回 INVALID_PARAMS。消耗同样按最早一批优先。玩家与 Agent 都可以发起。 使用建议:只在没有更优选择时用:治疗 / 招降能拿回兵,放弃 / 释放什么都拿不到。同账号其他在线连接会收到 PUSH_CITY_STATE(reason=troop_pools_changed,附 cityId 与 pool)。 (协议 op RELEASE_TROOPS,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數pool必填cityIdtroops

GET_STRATAGEMS

查询计谋定义、计谋令与逐武将效果预览(v86,AISLG-211)

返回 8 个计谋的定义(类别、目标类型、所需计谋令、是否可失败、免疫时长)、账号 4 类计谋令的持有数与上限,以及每名武将按自身智力算好的效果预览与冷却状态;请求里再带 target 时额外返回对该目标的判定(成功率、是否免疫、是否受新手保护 / 免战 / 同盟限制)。计谋用「计谋令」施放,令**只能用战场军功在战场商店兑换**(BUY_BATTLEFIELD_ITEM 的 stratagem_* 商品:欺敌令(deception)军功价 100、每场限购 4、持有上限 6;行军令(march)军功价 150、每场限购 3、持有上限 5;攻心令(assault)军功价 250、每场限购 2、持有上限 3;情报令(intel)军功价 150、每场限购 2、持有上限 3),不退金币、不能转让;令与军功一起换季清零。施计不花金币,每次消耗 1 张对应类别的令,**成功失败都扣**;施计后该武将冷却 60 分钟(随全局时间缩放)。8 个计谋:草木皆兵 / 空城计(欺敌,别人侦察你的城时看到倍数换算后的假驻军,侦察方侦察科技每级 5% 概率识破)、焚烧粮草(烧掉对方一座城现存粮食的 min(智力 × 0.1%, 8%))、趁火打劫(该城仓库防掠保护降 min(智力 × 0.5%, 30%) 持续 1 小时)、十面埋伏(该城 min(智力, 60) 分钟不能派任何部队)、金蝉脱壳(自己返程部队剩余时间缩短 min(智力%, 50%),每支一次)、八门金锁(开往你城池 / 野地的敌方部队剩余行军时间延长 min(智力 × 0.5%, 30%))、蛛丝马迹(列出目标玩家全部城池坐标与在外部队去向)。会失败的计谋成功率 = 50% + (施计武将智力 − 目标城城守智力) × 1%,钳 20%..90%(目标无城守按 0);成功后目标对该种计免疫(6 / 24 小时,随缩放)。 使用建议:先 GET_STRATAGEMS(可带 target)确认令够、武将在家且不在冷却、目标不在免疫期与保护中,再发 CAST_STRATAGEM。成功率按施计武将智力与目标城城守智力算出,已在本协议里给出,不用自己算。令只能用剧本战场军功在战场商店兑换,买满一场共 11 张(1,650 军功),要和资源包取舍。 (协议 op GET_STRATAGEMS,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數target

CAST_STRATAGEM

施放计谋(v86,AISLG-211)

派一名**在家的**武将消耗 1 张对应类别的计谋令施计。武将必须在家(不在出征 / 随行、不在历练、不在重伤),施计后冷却 60 分钟(随缩放),冷却中返回 HERO_STRATAGEM_COOLDOWN(附 retryAfterSeconds)。令不够返回 STRATAGEM_TOKEN_SHORT(附 tokenKind / have),此时不扣任何东西;令一旦够就**扣令 + 冷却**,之后免疫或成功率判定失败也照扣(同老游戏)。会失败的计谋(焚烧粮草 / 趁火打劫 / 十面埋伏 / 八门金锁 / 蛛丝马迹)成功率 = 50% + (施计智力 − 目标城城守智力) × 1%,钳 20%..90%;不论成败目标玩家都收到警报(PUSH_STRATAGEM + stratagem_received 事件),欺敌类与金蝉脱壳不通知任何人。成功中计后目标对该种计免疫(焚烧粮草 / 八门金锁 6 小时,趁火打劫 / 十面埋伏 / 蛛丝马迹 24 小时;免疫期内再施直接判失败、照常扣令与冷却)。进攻类计谋(焚烧粮草 / 趁火打劫 / 十面埋伏 / 蛛丝马迹)与 PvP 规则一致:目标在新手保护或免战中返回 TARGET_PROTECTED;自己主动免战中返回 TRUCE_ACTIVE;同盟 / 友盟返回 ALLY_TARGET;自己在新手保护中施进攻类计谋会让新手保护立即失效。欺敌、金蝉脱壳、八门金锁是防守类,任何时候都能用。所有持续时长按全局时间缩放换算。 使用建议:施计前用 GET_STRATAGEMS(带 target)看成功率与限制,别在免疫期或保护目标上白扔令。令很贵:一场剧本战场最多买 11 张,攻心令一场只能买 2 张。焚烧粮草 / 十面埋伏是骚扰手段,真正的收益仍靠出兵掠夺——趁火打劫后 1 小时内做一次掠夺最划算。自己被施计时会收到 PUSH_STRATAGEM 与 stratagem_received 事件;中了十面埋伏期间所有出兵会返回 CITY_AMBUSHED(附 retryAfterSeconds),在外的部队仍可召回。 (协议 op CAST_STRATAGEM,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數heroId必填targetstratagem必填

GET_TROOP_POOLS

查询全账号伤兵营(全部城池的伤兵 / 俘虏 / 逃兵一次拿全)

一次拿回**账号全部城**的伤兵 / 俘虏 / 逃兵三个池子与各城断粮时刻(v88,AISLG-218):无参数、只读、不开事务不加锁,玩家与 Agent 都可以调。cities[] 每项的结构与 GET_STATE 的 city 里那三组完全相同(troops 按兵种合计 + earliestExpireAt 最早一批的过期时刻,已过期的批次不返回),starveAt 与 city.starveAt 同口径(未断粮为 null)。主城在前、其余按创建时间;**三池全空的城也会返回**(troops 全 0、earliestExpireAt 为 null),别人账号的城不可见。本协议不处理任何东西:处理仍逐城带 cityId 调 RESTORE_TROOPS / RELEASE_TROOPS(不新增批量协议,服务端数值与规则不变)。 使用建议:想看全账号的伤兵营就用这一条,**不要对每座城轮询 GET_STATE**(城多时轮次很贵)。处理仍按城发:对每座城的 cityId 调 RESTORE_TROOPS(治疗 50% / 招降 60% 另扣人口 / 劝回 50%)或 RELEASE_TROOPS(免费,放弃 / 释放);服务端不提供批量协议,逐城调的顺序与取舍由你决定(推荐按 earliestExpireAt 从早到晚,先救快过期的)。earliestExpireAt 距现在不足 6 小时就该动手。starveAt 已到(不为 null 且已过去)的城正在断粮,劝回逃兵会返回 CITY_STARVING,先运粮。 (协议 op GET_TROOP_POOLS,文档版本 v92;完整规则可读资源 slg://agent-api.md)

無需輸入參數。

GET_ITEMS

查询道具背包、道具目录与礼金余额(v90,AISLG-222)

返回账号的道具背包 items(每种道具的数量)、全部道具定义 catalog(名称、说明、礼金单价 shopPrice,null 表示不卖,堆叠上限 stackMax)与礼金余额 gift。商店出售的是 shopPrice 非 null 的道具:迁城令(city_order,礼金 50,堆叠上限 99);高级迁城令(city_order_adv,礼金 100,堆叠上限 99)。道具随换季清空,礼金见 GET_STATE 的 gift。 使用建议:买道具前先用本协议看 shopPrice 与 gift,BUY_ITEM 必须带上你看到的单价(expectedPrice)。 (协议 op GET_ITEMS,文档版本 v92;完整规则可读资源 slg://agent-api.md)

無需輸入參數。

BUY_ITEM

礼金购买道具(v90,AISLG-222)

用礼金购买道具:礼金按 单价 × 数量 扣除,道具数量按数量增加,写事件 item_bought。校验顺序:itemId 必须在目录里且可卖(未知或 shopPrice 为 null → INVALID_PARAMS)→ count 为 1..99 的整数 → expectedPrice 必填(缺失或非整数 → INVALID_PARAMS)→ expectedPrice 必须等于当前 shopPrice(不等 → ITEM_PRICE_CHANGED,附当前 price,不扣不改,客户端刷新目录后让玩家重新确认,不自动重试)→ 购买后不超过 stackMax(超出 → ITEM_STACK_FULL,附 stackMax / have / canBuy)→ 礼金不足 → INSUFFICIENT_GIFT(附 balance / cost)。全部在一个事务里,任何一步失败都不扣礼金、不加道具。成功后向该账号其他在线连接推送 PUSH_ACCOUNT_STATE(reason = items_changed)。已买到的道具不因调价而补差价或退款。 使用建议:只在玩家明确要买时调用。收到 ITEM_PRICE_CHANGED 时先 GET_ITEMS 刷新目录,把新单价告诉玩家,等他确认后再带新单价重发,不要用旧价自动重试。 (协议 op BUY_ITEM,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數count必填itemId必填expectedPrice必填

MOVE_CITY

迁城(v91,AISLG-220)

把账号名下的一座城(主城或分城,名城除外)迁到地图上的一块空野地。mode = random 随机迁:消耗 1 张迁城令(city_order),系统按注册落位同一算法选址,不需要坐标;mode = pointing 指定坐标迁:消耗 1 张高级迁城令(city_order_adv),x / y 必填,目标须为无主、无 NPC 的空野地,且离其他账号的城池格(分城、名城含在内)至少 3 格(Chebyshev 距离)。道具用 BUY_ITEM 以礼金购买,GET_ITEMS 查看持有数。 拦截顺序(前四条即 GET_STATE moveCity 的 reasons):名城 MOVE_CITY_FAMOUS → 本城有部队在外(本城发出的行军含返程 / 运输 / 调兵,或派去别人城里的协防)MOVE_CITY_ARMY_OUTSIDE(附 count)→ 盟友协防本城 MOVE_CITY_HAS_ALLY_FORCE(附 count;迁城不会自动遣返,须对方召回或城主 DISMISS_ASSIST)→ 本城或其名下野地有敌情 MOVE_CITY_IN_BATTLE(只看这一座城)→ 目标格不合法 MOVE_CITY_TILE_INVALID / 太近 MOVE_CITY_TOO_CLOSE / 随机选址无空地 MOVE_CITY_NO_SPACE → 道具不足 INSUFFICIENT_ITEM(附 itemId、count)→ 执行时目标被抢先 MOVE_CITY_TILE_TAKEN。以上任何一条失败都不扣道具、不改任何数据。 迁后:新格变成本城(等级 0,同注册落位);城的建筑、驻军、资源、武将、科技、队列、名下野地与城防 / 免战、联盟、爵位、保护状态全部保留。旧格:主城变回空野地(地形不变,等级按世界生成同口径重新抽取);分城回归 NPC 城池(等级 = 来源等级,并写入与放弃分城同口径的占回冷却,冷却内不能再占这一格的 NPC 城)。 指定坐标迁(pointing)后 12 小时内(按时间缩放),这座城只能运输、调兵、召回、增援自己名下的野地;掠夺、占领、侦察、派协防以及其他攻击类出征都返回 MOVE_CITY_ATTACK_LOCK(附 retryAfterSeconds)。随机迁没有这个限制。迁城不中断也不延长新手保护 / 免战,迁后没有额外保护期。 预览:preview = true 时不改任何数据,返回要消耗的道具、已有数量、目标格、距离、旧格去向与出征限制时长;条件不满足时预览同样返回对应错误码(附原因数据),不会只返回 ok。执行必须携带 confirm = true。 使用建议:先 GET_STATE 看 moveCity:reasons 为空且对应道具持有数 ≥ 1 才可迁。指定坐标前先 GET_WORLD_MAP 找空野地(迷雾开启时须是已探索或实时视野内的格,否则返回 MOVE_CITY_TILE_UNEXPLORED),再用 preview = true 预览(看 to、distance、attackLockSeconds),玩家确认后才带 confirm = true 执行。收到 INSUFFICIENT_ITEM 时先 GET_ITEMS,由玩家决定是否 BUY_ITEM。pointing 迁后 12 小时内不要派攻击类部队(会返回 MOVE_CITY_ATTACK_LOCK);运输、调兵与增援自己的野地不受限。 (协议 op MOVE_CITY,文档版本 v92;完整规则可读资源 slg://agent-api.md)

輸入參數xymode必填cityId必填confirmpreview

get_notifications

读取新消息(服务器推送)

读取游戏服务器主动推送的消息(op ≥ 2000:建造完成、来袭预警、战报、资源与地块变化等)与连接状态变化。推送先存在本地缓冲,用本工具增量读取:传入上次返回的 nextSinceId(首次不传 = 从头读),只返回更新的部分。定时轮询本工具即可跟上游戏内发生的事情。

輸入參數limitsinceId

版本歷史

1
  1. v0.2.2最新Nov 5, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分