Hacknet-Extension-Tutorial


Hacknet-Extension-Tutorial / Content
BovineBeta  ·  2023-07-17

Actions.md

Actions (行动)

Actions可以根据特定条件控制游戏内容. 例如DHS中的对话, DLC中Coel的破坏白名单等, 它实现游戏的各种特效, 是一个优秀的扩展不可或缺的一部分.

为了更好的去介绍Action各个标签的功能, 我们在此将Action的标签分为3大类型:

一个Action的结构大概如下:

 1<!-- 根标签 -->
 2<ConditionalActions>
 3
 4    <!-- 条件标签 -->
 5    <Instantly needsMissionComplete="false">
 6
 7        <!-- 行为标签 -->
 8        <SaveGame DelayHost="delayNode" Delay="0"/>
 9        ...
10    </Instantly>
11
12    ...
13</ConditionalActions>

根标签

Action的根标签为<ConditionalActions>, 无属性.

条件标签

Action拥有触发条件功能. 触发条件通过条件标签来设置.

当玩家达成触发条件后, 这个条件标签子标签(行为标签)将会被执行.

条件标签必须是根标签的下一级标签.

所有条件标签及其属性

1<Instantly needsMissionComplete="false"></Instantly>

<Instantly>: 立即触发.

1<OnConnect target="targetComp"></OnConnect>

<OnConnect>: 连接某个节点后触发.

1<OnDisconnect target="targetComp"></OnDisconnect>

<OnDisconnect>: 断开某个节点后触发.

注意:! 由于Hacknet的Bug, 如果targetplayerComp, 即使没有断开玩家节点, <OnDisconnect>都会触发!

1<HasFlags requiredFlags="flag1,flag2"></HasFlags>

<HasFlags>: 拥有某项flag(s)后触发.

1<OnAdminGained target="targerComp"></OnAdminGained>

<OnAdminGained>: 获取某个节点的管理员权限后触发.

1<DoesNotHaveFlags requiredFlags="flag1,flag2">
2    <!-- 没有实装, 一用就报错 -->    
3</DoesNotHaveFlags>

<DoesNotHaveFlags>: 没有某项flag(s)后触发.

没有实装, 但是出现在了官方的教程扩展IntroExtension里面. 一用就报错.

行为标签

行为标签控制游戏内容. Action在触发条件成立后将会执行行为标签.

行为标签是条件标签的下一级标签.

行为标签可以通过功能大致分为以下部分:

部分行为标签可以被延迟. Action的延迟通过DelayHost(延迟主机)实现, 此过程将会在DelayHost的/runtime生成缓存文件.

如果行为标签可以延迟, 并且需要延迟, 则应指定两个属性. 下文将不在逐个说明. 属性如下:

可延迟行为标签的示范代码块中均包含DelayHostDelay属性.

不可延迟的行为标签自身没有延迟功能, 但可以通过其他方式进行延迟, 比如使用<AddConditionalActions>.

注意! 以下简称自闭和标签(空内容标签)为"空标签". 在所有可以延迟的行为标签中, 所有的DelayHost属性和Delay均为非必须属性.

加载类行为标签

1<AddConditionalActions Filepath="Actions/NextAction.xml" DelayHost="delayNode" Delay="0"/>

<AddConditionalActions>: 加载另一个Action

| 空标签 | 可延迟 | | --- | --- | | 是 | 是 |

可以通过<AddConditionalActions>使得部分不可延迟的行为标签延迟.

1<LaunchHackScript Filepath="Scripts/HackerScript.txt" DelayHost="delayNode" Delay="0" SourceComp="SourceComp" TargetComp="TargetComp" RequireLogsOnSource="false" RequireSourceIntact="true"/>

<LaunchHackScript>: 运行HackerScript

| 空标签 | 可延迟 | | --- | --- | | 是 | 是 |

1<LoadMission MissionName="Missions/SurpriseMission.xml"/>

<LoadMission>: 立即加载任务

| 空标签 | 延迟 | | --- | --- | | 是 | |

1<RunFunction FunctionName="FunctionName" FunctionValue="0" DelayHost="delayNode" Delay="0"/>

<RunFunction>: 运行Function

| 空标签 | 可延迟 | | --- | --- | | 是 | 是 |

1<SaveGame DelayHost="delayNode" Delay="0"/>

<SaveGame>: 保存游戏

| 空标签 | 可延迟 | | --- | --- | | 是 | 是 |

文件操作类

1<AddAsset FileName="FileName" FileContents="text" TargetComp="playerComp" TargetFolderpath="home"/>

AddAsset: 向指定节点添加文件

| 空标签 | 可延迟 | | --- | --- | | 是 | |

1<AppendToFile DelayHost="delayNode" Delay="0" TargetComp="companyWhitelist" TargetFolderpath="Whitelist" TargetFilename="list.txt">#PLAYER_IP#</AppendToFile>

<AppendToFile>: 附加内容到文件.

| 空标签 | 可延迟 | | --- | --- | | | 是 |

1<CopyAsset DestFilePath="home" DestComp="playerComp" SourceComp="assetNode" SourceFileName="copycat.txt" SourceFilePath="home/copy"/>

<CopyAsset>: 文件复制

| 空标签 | 可延迟 | | --- | --- | | 是 | |

1<DeleteFile TargetComp="playerComp" FilePath="home" FileName="deleteme.txt" DelayHost="delayNode" Delay="0"/>

<DeleteFile>: 删除文件

| 空标签 | 可延迟 | | --- | --- | | 是 | 是 |

特殊内容操作类

1<AddIRCMessage Author="Kaguya" TargetComp="ircNode" Delay="0">text</AddIRCMessage>

AddIRCMessage: 向IRC中添加消息

IRC(DHS)消息的延迟发送通过目标服务器充当"DelayHost", 缓存内容将在IRC(DHS)的runtime目录生成, 无需DelayHost. 以下为在IRC(DHS)节点的runtime目录位置:

| 空标签 | 可延迟 | | --- | --- | | | 是, 且不需要DelayHost |

1<SwitchToTheme ThemePathOrName="Themes/ExampleTheme.xml" FlickerInDuration="3.0" DelayHost="delayNode" Delay="0"/>

SwitchToTheme: 更改玩家的主题

| 空标签 | 可延迟 | | --- | --- | | 是 | 是 |

1<AddConditionalActions Filepath="Actions/NextAction.xml" DelayHost="delayNode" Delay="0"/>

AddConditionalActions: 在Action中执行另一个Action

| 空标签 | 可延迟 | | --- | --- | | 是 | 是 |

1<StartScreenBleedEffect AlertTitle="Sequencer Attack" CompleteAction="Actions/ScreenBleedFailed.xml" TotalDurationSeconds="100" DelayHost="delayNode" Delay="0">Break into the Moonshine servers
2Delete all files and backups
3Get out of there!</StartScreenBleedEffect>

StartScreenBleedEffect:开启红屏效果, 也就是被追踪, 要ISP改IP时的效果和最后删Entech文件的效果

需要注意的是AlertTitle的英文字母小写与大写在游戏中对应的字体不同.

| 空标签 | 可延迟 | | --- | --- | | | 是 |

1<CancelScreenBleedEffect DelayHost="delayNode" Delay="0"/>

CancelScreenBleedEffect: 关闭红屏效果

| 空标签 | 可延迟 | | --- | --- | | 是 | 是 |

1<KillExe DelayHost="delayNode" Delay="0" ExeName="*"/>

KillExe: 终止某个exe进程

| 空标签 | 可延迟 | | --- | --- | | 是 | 是 |