跳到主要内容

什么是软件包

软件包(软件包 / Application)是黑猫助手的功能单元。一个软件包就是 apps/ 目录下的一个文件夹, 文件夹里放上一份 .hm.json 清单,它就被识别为一个软件包。

例如:

apps/
├── 黑猫@基础库/ # 函数库:提供通用能力
├── 黑猫@挂机打怪/ # 任务:带界面、可启动
└── 黑猫@装备打造/ # 任务:带界面、可启动

命名规则​

软件包的目录名就是它的全名(fullName),格式为 作者@名称:

  • 作者:软件包作者,例如 黑猫。
  • 名称:软件包名称,例如 基础库。
  • 中间用 @ 连接,整体作为目录名,例如 黑猫@基础库。
提示

作者 与 名称 都不建议包含 /、\、: 等文件系统保留字符。

两种类型​

软件包通过清单里的 类型 字段区分,目前有两种:

类型值说明
任务"任务"会出现在任务列表中,可以被用户启动运行。通常带界面,入口是 index.lua。
函数库"函数库"不出现在任务列表,只能被其它软件包通过 依赖软件包 引用,用来复用代码。
备注

只有 类型 为 任务 的软件包才会在任务列表中展示。若你希望某个任务不在列表中显示, 可以在清单里设置 "隐藏": true。

软件包之间如何复用代码?​

两类东西让软件包可以组合:

  1. require 模块:函数库根目录下的 .lua 文件可以被 require,例如

    local hmPlayer = require("黑猫@基础库.player")
  2. 依赖注入(inject):函数库 inject/ 目录下的脚本会被注入到游戏客户端的 Lua 环境中, 从而向所有依赖它的任务提供原生函数。

在清单中声明依赖:

apps/黑猫@挂机打怪/.hm.json
{
"依赖软件包": {
"黑猫@基础库": "v1.0"
}
}

声明后,安装该任务时会自动安装它依赖的软件包,运行时也会加载对应的 require 路径与注入脚本。

站在巨人的肩膀上​

绝大多数任务都会依赖 黑猫@基础库,它封装了角色、背包、珍兽、 技能、生活技能、元宝商店等常用操作。写任务时优先复用基础库,能极大减少重复代码。

下一步:目录结构。