weapon-defs注册新的武器类型(名称/伤害类型/距离/攻速),供物品或其他内容引用;不能修改或覆盖已有武器。
作者声明:只影响本地表现
《骑马与砍杀V0.3.3》创意工坊
收藏用于稍后查找;“开启”决定下次启动时加载哪些 Mod。所有已开启 Mod 会一起进入游戏。
推荐方式 · 不需要懂编程
Prompt 只注入作品、能力、依赖和你的 Mod ID,并要求 Agent 实时读取唯一官方 Skill;固定命令与规则不再复制到任务文本中。
发布 Mod 时必须声明使用哪些能力。以下内容是作者约定,平台不会扫描或限制 Mod 代码;只安装你信任的内容。
联机策略:游戏进入联机前应禁用全部 Mod
weapon-defs注册新的武器类型(名称/伤害类型/距离/攻速),供物品或其他内容引用;不能修改或覆盖已有武器。
作者声明:只影响本地表现
item-defs注册新装备(武器/身甲/头盔/坐骑),进入市场、军械商、战利品与装备栏;同 id 已被占用时拒绝。
作者声明:只影响本地表现
troop-defs注册新兵种(属性/分支/武器/远程/骑行/持盾),可参与招募、驻军、坐镇与守城;不能修改已有兵种。
作者声明:只影响本地表现
troop-upgrade-tree把新兵种通过 upgrades 接入已有兵种升级链;不能改变既有兵种之间的升级路径。
作者声明:只影响本地表现
appearance覆盖玩家部队披挂颜色(布料/饰边十六进制色值),只影响本地视觉表现。
作者声明:只影响本地表现
battle-events订阅战斗开始/结束/单位阵亡的只读快照(人数、战果、坐标与派系),不能控制战斗过程。
作者声明:只影响本地表现
world-events订阅每日结算、占领城镇、玩家升级的只读快照;不能改写世界状态。
作者声明:只影响本地表现
read-player-state通过 getPlayerInfo 查询等级/金币/天数/兵力和领地数量;只读,无写入接口。
作者声明:只影响本地表现
mod-meta声明自身名称与版本,用于冲突诊断;不提供游戏内功能。
作者声明:只影响本地表现
Agent 会同时收到下面这份本游戏专属规范。
本文件是作者与 Mod 创作者之间的开发契约,不是安全沙箱。平台不会扫描或限制 Mod 代码, Mod 作者必须自律遵守这里的边界;若引用本契约之外的游戏内部对象,作者不承诺兼容。
| 对象 | 位置 | 说明 |
|---|---|---|
| window.IronAndBannerModApi | 启动前已挂载 | 唯一官方 Mod 接口(见下节) |
| window.VibeHubWorkshop | 官方 Loader 提供 | beforeStart / markGameReady() / afterStart / getEnabledMods();不要修改其任何内部属性 |
游戏不对外暴露 G(游戏状态单例)、DOM 节点、渲染对象或内部函数;访问它们不算接口,随时可能破坏。
所有注册返回 { ok: true } 或 { ok: false, reason };reason 取值示例:invalid id / invalid def / duplicate / unknown weapon ref / invalid slot。
id 规则:仅小写字母/数字/点/横线/下划线,1-48 字符,以字母数字开头。同 id 重复注册返回 duplicate 且不覆盖已有内容。
const api = window.IronAndBannerModApi
// 1. 声明自己(元信息,用于冲突诊断;可省略)
api.registerMod('my_mod', { name: '我的旗帜', version: '1.0.0' })
// 2. 新武器基准(weapon ref)
api.registerWeapon('my_mod', 'war_scythe', {
name: '战镰', type: 'cut', damage: 30, reach: 3.1, speed: 0.9
})
// 3. 新装备(weapon 槽引用上面注册的 ref;armor/速度按槽位)
api.registerItem('my_mod', 'w_war_scythe', {
name: '战镰', slot: 'weapon', ref: 'war_scythe', price: 260
})
api.registerItem('my_mod', 'a_scale', { name: '鳞甲', slot: 'body', armor: 26, price: 420 })
// 4. 新兵种(weapon 引用已存在武器;upgrades 指向已存在或本 Mod 内后续注册的兵种 id)
api.registerTroop('my_mod', 'black_guard', {
name: '黑曜卫兵', branch: 'inf', tier: 5, hp: 118, speed: 4.4, armor: 48,
weapon: 'greatblade', shield: true, cost: 360, wage: 16
})
// 5. 玩家外观(只影响本地表现;传十六进制整数)
api.registerAppearance('my_mod', { playerClothHex: 0x14141a, playerTrimHex: 0xd8b45a })
// 6. 事件订阅(可随时调用;返回 { ok, off })
api.on('battle_finished', e => console.log('战斗结算', e.outcome, e.killedEnemies))
// 7. 只读查询(启动后可用)
if (api.getPlayerInfo()) console.log(api.getPlayerInfo().day)
参数表
| 注册函数 | 参数 | 说明 |
|---|---|---|
| registerMod(modId, {name, version}) | modId 唯一 | 声明元信息 |
| registerWeapon(modId, refId, {name, type, damage, reach, speed, projectile?}) | type ∈ cut/pierce/blunt | 新武器基准 |
| registerItem(modId, itemId, {name, slot, ref?, armor?, speed?, price}) | slot ∈ weapon/body/helmet/horse | 新装备;weapon 槽必填 ref |
| registerTroop(modId, troopId, {name, branch, tier, hp, speed, armor, weapon, ranged?, mounted?, mountSpeed?, shield?, upgrades[], cost, wage}) | branch ∈ inf/arc/cav;tier 1-5 | 新兵种 |
| registerAppearance(modId, {playerClothHex?, playerTrimHex?}) | — | 玩家配色 |
| on(event, handler) / off(event, handler) | 见事件表 | 事件订阅 |
| getPlayerInfo() | — | {level, gold, day, partySize, morale, towns} 只读快照(启动前为 null) |
| 事件 | 时机 | payload(只读快照) |
|---|---|---|
| battle_started | 战斗场景就绪 | { siege, defend, tournament, allyCount, enemyTotal } |
| battle_finished | 战斗分出胜负 | { outcome, killedEnemies, lostAllies, siege, defend, tournament } |
| unit_killed | 任意单位阵亡 | { faction, troop, isPlayer, isGarrison, x, z } |
| day_passed | 每日结算 | { day, weather, gold, taxes, wages } |
| town_captured | 玩家占领据点 | { townId, name } |
| player_level_up | 玩家升级 | { level, attrPoints } |
处理器异常会被捕获并打印,不影响游戏。事件 payload 是快照——修改 payload 不会影响游戏。
// my-first-mod.js —— 在创意工坊中作为已启用 Mod 加载
const api = window.IronAndBannerModApi
if (!api) { console.warn('Mod API 未就绪'); return }
api.registerMod('demo_black_armor', { name: '黑甲军团', version: '1.0.0' })
api.registerItem('demo_black_armor', 'a_black_plate', {
name: '黑曜板甲', slot: 'body', armor: 46, price: 1200
})
api.registerTroop('demo_black_armor', 'black_guard', {
name: '黑曜卫兵', branch: 'inf', tier: 5, hp: 118, speed: 4.4, armor: 48,
weapon: 'greatblade', shield: true, cost: 360, wage: 16
})
api.registerAppearance('demo_black_armor', { playerClothHex: 0x14141a })
api.on('battle_finished', e => {
console.log('[黑甲军团] 战斗结束:', e.outcome) // 只记录,不控制
})
本游戏为纯单机;工坊联机策略为 mods-disabled(联机前拒绝任何已启用 Mod)。能力声明仅用于展示,不是安全沙箱。
登录后可以上传完整 Mod 包或单脚本。
登录反馈渠道
有任何问题、建议或反馈,请加 VibeHub 官方支持群:
QQ 752883513
进群后请直接在群里提反馈,我们会及时关注并处理。