什么是软件包
软件包(软件包 / Application)是黑猫助手的功能单元。一个软件包就是 apps/ 目录下的一个文件夹,
文件夹里放上一份 .hm.json 清单,它就被识别为一个软件包。
例如:
apps/
├── 黑猫@基础库/ # 函数库:提供通用能力
├── 黑猫@挂机打怪/ # 任务:带界面、可启动
└── 黑猫@装备打造/ # 任务:带界面、可启动
命名规则
软件包的目录名就是它的全名(fullName),格式为 作者@名称:
作者:软件包作者,例如黑猫。名称:软件包名称,例如基础库。- 中间用
@连接,整体作为目录名,例如黑猫@基础库。
提示
作者 与 名称 都不建议包含 /、\、: 等文件系统保留字符。
两种类型
软件包通过清单里的 类型 字段区分,目前有两种:
| 类型 | 值 | 说明 |
|---|---|---|
| 任务 | "任务" | 会出现在任务列表中,可以被用户启动运行。通常带界面,入口是 index.lua。 |
| 函数库 | "函数库" | 不出现在任务列表,只能被其它软件包通过 依赖软件包 引用,用来复用代码。 |
备注
只有 类型 为 任务 的软件包才会在任务列表中展示。若你希望某个任务不在列表中显示,
可以在清单里设置 "隐藏": true。
软件包之间如何复用代码?
两类东西让软件包可以组合:
-
require模块:函数库根目录下的.lua文件可以被require,例如local hmPlayer = require("黑猫@基础库.player") -
依赖注入(inject):函数库
inject/目录下的脚本会被注入到游戏客户端的 Lua 环境中, 从而向所有依赖它的任务提供原生函数。
在清单中声明依赖:
apps/黑猫@挂机打怪/.hm.json
{
"依赖软件包": {
"黑猫@基础库": "v1.0"
}
}
声明后,安装该任务时会自动安装它依赖的软件包,运行时也会加载对应的 require 路径与注入脚本。
站在巨人的肩膀上
绝大多数任务都会依赖 黑猫@基础库,它封装了角色、背包、珍兽、 技能、生活技能、元宝商店等常用操作。写任务时优先复用基础库,能极大减少重复代码。
下一步:目录结构。