Hacknet-Extension-Tutorial


commit
cd2d6d3
parent
e3068f1
author
FBIK
date
2023-01-21 17:00:55 +0000 UTC
Action, Faction与Mission更改内容同步(未完成)
3 files changed,  +115, -57
M Content/Actions.md
+93, -26
  1@@ -1,30 +1,97 @@
  2-# Actions  
  3-Actions可以实现例如DHS中的对话,DLC中Coel的破坏白名单等,它实现游戏的各种特效,是一个优秀的扩展不可或缺的一部分  
  4-Actions中可以有多个Action,使用相对路径调用  
  5+# Actions (行动)
  6+
  7+Actions可以根据特定条件控制游戏内容. 例如DHS中的对话, DLC中Coel的破坏白名单等, 它实现游戏的各种特效, 是一个优秀的扩展不可或缺的一部分.
  8+  
  9+为了更好的去介绍Action各个标签的功能, 我们在此将Action的标签分为3大类型:
 10+- 根标签
 11+- 条件标签
 12+- 行为标签
 13+
 14 一个Action的结构大概如下:  
 15 ```xml
 16 <ConditionalActions>
 17     <!--这里是Action的其他代码-->
 18 </ConditionalActions>
 19 ```
 20-我们可以看到,Action由```<ConditionalActions>```开始,由```</ConditionalActions>```结束,这是Action的标准格式  
 21-每个Action都有触发条件,也就是达成什么条件时触发  
 22-触发条件共有以下几种,但先决条件都是这个Action被加载:
 23-- Instantly 立即触发 
 24-- OnConnect 连接某个节点后触发,有一个必须属性target,指的是触发需要连接节点的ID
 25-- HasFlags 拥有某项flag(s)后触发,有一个必须属性requiredFlags,指的是触发需要的flag,多个flag用英文逗号分割
 26-- DoesNotHaveFlags 没有某项flag(s)后触发,所需设定属性与HasFlags相同
 27-- OnDisconnect 断开某个节点后触发,所需设定属性与OnConnect相同
 28-- OnAdminGained 获取某个节点的管理员权限后触发,有一个必须属性target,指的是触发需要获取管理员权限的节点ID
 29+# 根标签
 30+
 31+Action的根标签为`<ConditionalActions>`, 无属性.
 32+
 33+# 条件标签
 34+
 35+Action拥有触发条件功能. 触发条件通过**条件标签**来设置.
 36+
 37+当玩家达成触发条件后, 这个**条件标签**的**子标签**(**行为标签**)将会被执行.
 38+
 39+条件标签必须是根标签的下一级标签.
 40+
 41+## 条件标签的通用非必须属性
 42 
 43 这些触发条件都有一些通用的可选属性:  
 44 - needsMissionComplete 当完成当前任务时触发
 45 - requiredFlags 拥有特定flag触发
 46 
 47-下面开始正式进行Action实现功能的讲解  
 48-首先,一些Action可以被延迟,如果需要延迟,则应指定两个属性:
 49-- DelayHost 因Hacknet的特性,Action延迟需要一个节点帮助,这个节点就是DelayHost,需要有FastActionHost守护线程,该属性为节点ID
 50-- Delay 延迟时间
 51+## 所有条件标签及其必须属性
 52+
 53+`<Instantly>` 立即触发:
 54+- 无必须属性
 55+
 56+`<OnConnect>` 连接某个节点后触发:
 57+- `target`: 需要连接的节点ID
 58+
 59+`<OnDisconnect>` 断开某个节点后触发.
 60+- `target`: 需要断开的节点ID
 61+
 62+`<HasFlags>` 拥有某项flag(s)后触发.
 63+- `requiredFlags`: 需要的flag, 多个flag用英文逗号隔开.
 64+
 65+`<DoesNotHaveFlags>`没有某项flag(s)后触发.
 66+- `requiredFlags`: 需要的flag, 多个flag用英文逗号隔开.
 67+
 68+`<OnAdminGained>` 获取某个节点的管理员权限后触发.
 69+- `target`: 需要获取管理员权限的节点ID
 70+
 71+# 行为标签
 72+
 73+行为标签控制游戏内容. Action在触发条件成立后将会执行行为标签
 74+
 75+行为标签是条件标签的下一级标签.
 76+
 77+部分行为标签可以被延迟. 如果需要延迟, 则应指定两个属性:
 78+- `DelayHost`: DelayHost的ID. 因Hacknet的特性, Action的延迟功能需要一个节点帮助, 这个节点就是DelayHost. DelayHost需要拥有`FastActionHost`守护线程.
 79+- `Delay`: 延迟时间, 单位为秒
 80+
 81+行为标签可以通过功能大致分为以下部分:
 82+- 加载类 行为标签
 83+- 文件操作类 行为标签
 84+- 特殊文件操作类 行为标签
 85+- 节点操作类 行为标签
 86+- HacknetOS操作类 行为标签
 87+
 88+## 加载类行为标签
 89+
 90+`<AddConditionalActions>`: 加载另一个Action.
 91+~~~xml
 92+<AddConditionalActions Filepath="Actions/NextAction.xml" DelayHost="delayNode" Delay="0"/>
 93+~~~
 94+- `Filepath`: Action文件相对路径.
 95+
 96+`<RunFunction>`: 运行Function.
 97+~~~xml
 98+<RunFunction FunctionName="FunctionName" FunctionValue="0" DelayHost="delayNode" Delay="0"/>
 99+~~~
100+- `FunctionName`: Function的名字.
101+- `FunctionValue`: Function运行时的参数值. 部分Function运行需要参数值.
102+
103+`<LaunchHackScript>`: 运行HackerScript.
104+~~~xml
105+<LaunchHackScript Filepath="Scripts/HackerScript.txt" DelayHost="delayNode" Delay="0" SourceComp="SourceComp" TargetComp="TargetComp" RequireLogsOnSource="false" RequireSourceIntact="true"/>
106+~~~
107+- `Filepath`: HackerScript的相对位置
108+- `SourceComp`: 攻击源节点. HackerScript的攻击源节点需要设置为`[TARGET_COMP]`.
109+- `TargetComp`: 目标节点. HackerScript的攻击源节点需要设置为`[SOURCE_COMP]`.
110+- `RequireLogsOnSource`: 目标节点是否需要在攻击源节点上留下日志. 默认为false.
111+- `RequireSourceIntact`: 攻击源节点是否需要系统网络文件
112 
113 ## AddIRCMessage
114 作用:在指定IRC频道发送消息  
115@@ -39,18 +106,18 @@ Actions中可以有多个Action,使用相对路径调用
116 作用:启动黑客脚本  
117 属性:
118 - Filepath 黑客脚本位置
119-- SourceComp 源电脑,也就是执行操作后留下日志的电脑
120-- TargetComp 目标电脑,黑客脚本作用的电脑
121-- RequireLogsOnSource 可选属性,是否目标电脑在源电脑上留下日志的情况下才启动
122-- RequireSourceIntact 可选属性,是否原电脑没有被清空系统文件的情况下才启动
123+- SourceComp 源电脑, 也就是执行操作后留下日志的电脑
124+- TargetComp 目标电脑, 黑客脚本作用的电脑
125+- RequireLogsOnSource 可选属性, 是否目标电脑在源电脑上留下日志的情况下才启动
126+- RequireSourceIntact 可选属性, 是否原电脑没有被清空系统文件的情况下才启动
127 
128-这是一个自闭合标签,可以被延迟  
129+这是一个自闭合标签, 可以被延迟  
130 
131 ## SwitchToTheme
132 作用:更改玩家的主题  
133 属性:
134 - ThemePathOrName 主题的路径或者是名字
135-- FlickerInDuration 当切换主题时,界面闪烁的时间,单位为秒,设定为小于等于0则直接切换不闪烁
136+- FlickerInDuration 当切换主题时, 界面闪烁的时间, 单位为秒, 设定为小于等于0则直接切换不闪烁
137 
138 这是一个自闭合标签
139 
140@@ -72,23 +139,23 @@ Actions中可以有多个Action,使用相对路径调用
141 这是一个自闭合标签  
142 
143 ## StartScreenBleedEffect
144-作用:开启红屏效果,也就是被追踪,要ISP改IP时的效果和最后删Entech文件的效果  
145+作用:开启红屏效果, 也就是被追踪, 要ISP改IP时的效果和最后删Entech文件的效果  
146 属性:
147 - AlertTitle 红屏标题
148 - CompleteAction 完全红屏后执行的Action
149 - TotalDurationSeconds 完全红屏所用时间
150 
151-两个标签中的内容为红屏后左下角的提示,最多只能有三行,可以被延迟  
152+两个标签中的内容为红屏后左下角的提示, 最多只能有三行, 可以被延迟  
153 
154 ## CancelScreenBleedEffect
155 作用:关闭红屏效果  
156 属性:无特殊属性  
157 
158-这是一个自闭合标签,可以被延迟  
159+这是一个自闭合标签, 可以被延迟  
160 
161 ## KillExe
162 作用:终止某个exe进程  
163 属性:
164 - ExeName 要结束的exe名字  
165 
166-这是一个自闭合标签,可以被延迟  
167+这是一个自闭合标签, 可以被延迟  
M Content/Faction.md
+1, -1
1@@ -29,4 +29,4 @@ Faction根标签`<CustomFaction>`的属性:
2 
3 Action标签`<Action>`: 
4 - `ValueRequired`: 激活该Action所需的`Rank`值. 
5-- 子标签: 可以为任何Action子标签(不可以是Action触发条件标签).
6+- 子标签: 可以为任何Action的行动标签.
M Content/Missions.md
+21, -30
 1@@ -4,37 +4,28 @@
 2 ```xml
 3 <?xml version = "1.0" encoding = "UTF-8" ?>
 4 <mission id="testMission0" activeCheck="true" shouldIgnoreSenderVerification="false">
 5-  <goals>
 6-    <goal type="filedeletion" target="advExamplePC" file="asdf.txt" path="home"/>
 7-    
 8-  </goals>
 9-  
10-  <missionStart val="7" suppress="true">changeSong</missionStart>
11-
12-  <missionEnd val="1">addRank</missionEnd>
13-  
14-  <nextMission IsSilent="false">NONE</nextMission>
15-
16-  <branchMissions>
17-    <branch>Missions/BranchExample/TestBranchMission.xml</branch>
18-  </branchMissions>
19-  <posting title="Do the Extension Test Mission" reqs="someCustomFlag" requiredRank="3" >
20+    <goals>
21+        <goal type="filedeletion" target="advExamplePC" file="asdf.txt" path="home"/>
22+    </goals>
23+    <missionStart val="7" suppress="true">changeSong</missionStart>
24+    <missionEnd val="1">addRank</missionEnd>
25+    <nextMission IsSilent="false">NONE</nextMission>
26+    <branchMissions>
27+        <branch>Missions/BranchExample/TestBranchMission.xml</branch>
28+    </branchMissions>
29+    <posting title="Do the Extension Test Mission" reqs="someCustomFlag" requiredRank="3" >
30 content
31-  </posting>
32-  
33-  <email>
34-    <sender>Matt</sender>
35-    <subject>Test Mission Email</subject>
36-    <body>body
37-    </body>
38-    <attachments>
39-      <note title="An example note">note
40-      </note>
41-      <link comp="missionTestNode" />
42-      <account comp="missionTestNode" user="TestUser" pass="testpass" />
43-      
44-    </attachments>
45-  </email>
46+    </posting>
47+    <email>
48+        <sender>Matt</sender>
49+        <subject>Test Mission Email</subject>
50+        <body>body</body>
51+        <attachments>
52+            <note title="An example note">note</note>
53+            <link comp="missionTestNode" />
54+        <account comp="missionTestNode" user="TestUser" pass="testpass" />
55+        </attachments>
56+    </email>
57 </mission>
58 ```  
59 我们可以看到,Mission由`<mission>`开始,由`</mission>`结束