Hacknet-Extension-Tutorial


commit
18f5338
parent
63c3f33
author
BovineBeta
date
2023-07-17 07:56:10 +0000 UTC
docs: [Actions]更正错误, 添加示范, 删除重复项
1 files changed,  +31, -44
M Content/Actions.md
+31, -44
  1@@ -1,7 +1,7 @@
  2 # Actions (行动)
  3 
  4 Actions可以根据特定条件控制游戏内容. 例如DHS中的对话, DLC中Coel的破坏白名单等, 它实现游戏的各种特效, 是一个优秀的扩展不可或缺的一部分.
  5-  
  6+
  7 为了更好的去介绍Action各个标签的功能, 我们在此将Action的标签分为3大类型:
  8 - 根标签
  9 - 条件标签
 10@@ -9,8 +9,18 @@ Actions可以根据特定条件控制游戏内容. 例如DHS中的对话, DLC中
 11 
 12 一个Action的结构大概如下:  
 13 ```xml
 14+<!-- 根标签 -->
 15 <ConditionalActions>
 16-    <!--这里是Action的其他代码-->
 17+
 18+    <!-- 条件标签 -->
 19+    <Instantly needsMissionComplete="false">
 20+
 21+        <!-- 行为标签 -->
 22+        <SaveGame DelayHost="delayNode" Delay="0"/>
 23+        ...
 24+    </Instantly>
 25+
 26+    ...
 27 </ConditionalActions>
 28 ```
 29 # 根标签
 30@@ -25,18 +35,13 @@ Action拥有触发条件功能. 触发条件通过**条件标签**来设置.
 31 
 32 条件标签必须是根标签的下一级标签.
 33 
 34-## 条件标签的通用非必须属性
 35 
 36-这些触发条件都有一些通用的可选属性:  
 37-- `needsMissionComplete` 当完成当前任务时触发
 38-- `requiredFlags` 拥有特定flag触发
 39-
 40-## 所有条件标签及其必须属性
 41+## 所有条件标签及其属性
 42 ~~~xml
 43 <Instantly needsMissionComplete="false"></Instantly>
 44 ~~~
 45 `<Instantly>`: 立即触发.
 46-- `needsMissionComplete`: 是否要在在任务完成后触发. 这是个非必须属性, 默认为`false`
 47+- *`needsMissionComplete`: 是否要在在任务完成后触发. 这是个非必须属性, 默认为`false`
 48 
 49 ~~~xml
 50 <OnConnect target="targetComp"></OnConnect>
 51@@ -80,14 +85,6 @@ Action拥有触发条件功能. 触发条件通过**条件标签**来设置.
 52 
 53 行为标签是条件标签的下一级标签.
 54 
 55-部分行为标签可以被延迟. 延迟情况特殊的行为标签我们将会进行提示, 可延迟的行为标签示范代码块中将带有相关属性. 所有行为标签的默认延迟时间均为0.
 56-不可延迟的行为标签只是其自身没有延迟功能, 可以通过其他方式进行延迟, 比如单独创建一个`Action`, 然后延迟加载该`Action`.
 57-
 58-如果需要延迟, 则应指定两个属性:
 59-- `DelayHost`: DelayHost的ID. 因Hacknet的特性, Action的延迟功能需要一个节点帮助, 这个节点就是DelayHost. DelayHost需要拥有`FastActionHost`守护线程.
 60-- `Delay`: 延迟时间, 单位为秒
 61-
 62-
 63 行为标签可以通过功能大致分为以下部分:
 64 - 加载类 行为标签
 65 - 文件操作类 行为标签
 66@@ -95,6 +92,15 @@ Action拥有触发条件功能. 触发条件通过**条件标签**来设置.
 67 - 节点操作类 行为标签
 68 - HacknetOS操作类 行为标签
 69 
 70+部分行为标签可以被延迟. `Action`的延迟通过DelayHost(延迟主机)实现, 此过程将会在DelayHost的`/runtime`生成缓存文件.
 71+
 72+如果行为标签可以延迟, 并且需要延迟, 则应指定两个属性. 下文将不在逐个说明. 属性如下:
 73+- `DelayHost`: DelayHost的ID. 因Hacknet的特性, Action的延迟功能需要一个节点帮助, 这个节点就是DelayHost. DelayHost需要拥有`FastActionHost`守护线程.
 74+- `Delay`: 延迟时间, 单位为秒
 75+
 76+可延迟行为标签的示范代码块中均包含`DelayHost`与`Delay`属性. 
 77+
 78+不可延迟的行为标签自身没有延迟功能, 但可以通过其他方式进行延迟, 比如使用`<AddConditionalActions>`.
 79 
 80 ***注意! 以下简称自闭和标签(空内容标签)为"空标签". 在所有可以延迟的行为标签中, 所有的`DelayHost`属性和`Delay`均为非必须属性.***
 81 ## 加载类行为标签
 82@@ -109,6 +115,8 @@ Action拥有触发条件功能. 触发条件通过**条件标签**来设置.
 83 | --- | --- |
 84 | 是 | 是 |
 85 
 86+可以通过`<AddConditionalActions>`使得部分不可延迟的行为标签延迟. 
 87+
 88 ~~~xml
 89 <LaunchHackScript Filepath="Scripts/HackerScript.txt" DelayHost="delayNode" Delay="0" SourceComp="SourceComp" TargetComp="TargetComp" RequireLogsOnSource="false" RequireSourceIntact="true"/>
 90 ~~~
 91@@ -131,7 +139,7 @@ Action拥有触发条件功能. 触发条件通过**条件标签**来设置.
 92 
 93 | 空标签 | 延迟 |
 94 | --- | --- |
 95-| 是 | 是 |
 96+| 是 | **否** |
 97 
 98 ~~~xml
 99 <RunFunction FunctionName="FunctionName" FunctionValue="0" DelayHost="delayNode" Delay="0"/>
100@@ -216,7 +224,7 @@ Action拥有触发条件功能. 触发条件通过**条件标签**来设置.
101 - `Delay` 距离该Actions被触发时的延迟
102 - 内容: 消息内容  
103 
104-IRC消息的延迟发送通过服务器的`runtime`目录实现, 无需`DelayHost`. 
105+IRC(DHS)消息的延迟发送通过目标服务器充当"`DelayHost`", 缓存内容将在`runtime`目录生成, 无需`DelayHost`. 
106 - IRC: /IRC/runtime
107 - IRCHub(DHS): /HomeBase/runtime
108 
109@@ -246,7 +254,7 @@ IRC消息的延迟发送通过服务器的`runtime`目录实现, 无需`DelayHos
110 | 是 | 是 |
111 
112 ~~~xml
113-<StartScreenBleedEffect AlertTitle="Sequencer Attack" CompleteAction="Actions/ScreenBleedFailed.xml" TotalDurationSeconds="" DelayHost="delayNode" Delay="">Break into the Moonshine servers
114+<StartScreenBleedEffect AlertTitle="Sequencer Attack" CompleteAction="Actions/ScreenBleedFailed.xml" TotalDurationSeconds="100" DelayHost="delayNode" Delay="0">Break into the Moonshine servers
115 Delete all files and backups
116 Get out of there!</StartScreenBleedEffect>
117 ~~~
118@@ -257,6 +265,8 @@ Get out of there!</StartScreenBleedEffect>
119 
120 两个标签中的内容为红屏后左下角的提示, 最多只能有三行.
121 
122+需要注意的是`AlertTitle`的英文字母小写与大写在游戏中对应的字体不同.
123+
124 | 空标签 | 可延迟 |
125 | --- | --- |
126 | **否** | 是 |
127@@ -279,27 +289,4 @@ Get out of there!</StartScreenBleedEffect>
128 
129 | 空标签 | 可延迟 |
130 | --- | --- |
131-| 是 | 是 |
132-
133-~~~xml
134-<LoadMission MissionName="Missions/SurpriseMission.xml"/>
135-~~~
136-`LoadMission`:加载一个任务  
137-- `MissionName` 任务的相对路径  
138-
139-| 空标签 | 可延迟 |
140-| --- | --- |
141-| 是 | **否** |
142-
143-~~~xml
144-<RunFunction FunctionName="functionName" FunctionValue="0" DelayHost="delayNode" Delay="1.0"/>
145-~~~
146-`RunFunction`: 加载一个function  
147-- `FunctionName`: Function相对路径  
148-- `FunctionValue`: 运行function传递的参数值 (简答理解就类似于 `FunctionName(FunctionValue)`)
149-
150-| 空标签 | 可延迟 |
151-| --- | --- |
152-| 是 | 是 |
153-
154-~~~xml
155+| 是 | 是 |