准备工作
在开发 Hacknet Extension 之前,你需要做一些准备以下内容来提高你的扩展开发效率。
- 最新版 Hacknet 与可以运行它的电脑。
- 一个文本编辑器。
NOTE
推荐使用 Visual Studio Code, 因为它不仅可以做到 XML 的高亮与语法检查。 在后期正式进行扩展开发的时候也可以使用 Hacknet-VSCode 的片段补全,或更先进的 HacknetExtensionEditor 来提高扩展开发效率。
创建项目
通过 BlankExtension 创建项目
BlankExtension 是游戏自带的扩展结构模板,我们可以通过复制 BlankExtension 来创建一个新的 Extension 项目。
首先找到 Hacknet 游戏的根目录。如果你不清楚怎么找到它,可以查看 Q: 如何找到 Hacknet 游戏的根目录?。此处用 Hacknet/ 举例。
复制一份 Hacknet/BlankExtension/ 并改名,将副本里面的 EDIT_ME_ExtensionInfo.xml 改为 ExtensionInfo.xml。后面内容以 MyFirstExtension 为例。
; 注:这只是 bash 命令的示例,你可以使用你习惯的电脑操作逻辑来创建项目。
cd Hacknet\Extensions\
cp -r BlankExtension MyFirstExtension
cd MyFirstExtension
rename EDIT_ME_ExtensionInfo.xml ExtensionInfo.xml使用 vscode 打开 Hacknet/MyFirstExtension/ 目录。编辑 ExtensionInfo.xml,修改 Name 元素的内容;然后添加 Language 元素,内容为 zh-cn。这里以 MyFirstExtension 为例。
<ExtensionInfo>
<!-- Max name length is 128 characters -->
<Name>Blank Extension</Name>
<Name>MyFirstExtension</Name>
<Language>zh-cn</Language>
<AllowSaves>true</AllowSaves>
...
</ExtensionInfo>NOTE
扩展的名称不能超过 128 个字符,且必须是英文字符。
(其他内容暂时保持原样)
验证扩展创建成功
启动 Hacknet,点击 Extensions 按钮,在扩展列表中看看是否有 MyFirstExtension 这个扩展。如果有,说明扩展创建成功。
点开 MyFirstExtension,可以看到已经可以启动扩展了。
NOTE
后续 MyFirstExtension 将成为我们的工作目录,在没有特殊说明的情况下,所有操作都在这个目录下进行。
修复一个 BlankExtension 的 bug
如果你在刚刚的扩展页面点击 Run Verfication Tests,会发现扩展报错了。
Errors Found. Writing report to Extensions/MyFirstExtension/report.txt
Load Error:
System.NullReferenceException
Faction introfacnot found for setFaction action!这是因为 BlankExtension 有一个小 bug,会导致扩展报错。我们需要手动修复它。
打开 Actions/StartingActions.xml 文件。编辑第五行,将 introfac 改为 startingfac。
<ConditionalActions>
<Instantly>
<AddAsset FileName="RTSPCrack.exe" FileContents="#RTSP_EXE#" TargetComp="playerComp" TargetFolderpath="bin" />
<RunFunction FunctionName="setFaction:introfac" FunctionValue="0" />
<RunFunction FunctionName="setFaction:startingfac" FunctionValue="0" />
</Instantly>
</ConditionalActions>再次点击 Run Verfication Tests,会发现扩展没有报错了。恭喜你完成了扩展的准备工作。
Testing...
All tests complete
O Errors FoundNOTE
Verfication Tests 是确保扩展正常运行的重要工具。时不时运行 Run Verfication Tests 可以及时知道扩展是否有错误。在扩展开发中,你可能会遇到各种各样的错误,此时不要惊慌,如果有错误提示,请根据它来尝试解决。
完成
到这里,你已经完成了扩展的准备工作。接下来,你可以在 MyFirstExtension 目录下开始编写自己的扩展内容了。
NOTE
后续内容我们将默认将扩展目录作为当前工作目录(教程使用 MyFirstExtension/ 为示例),将 Hacknet/ 目录作为游戏根目录。