- commit
- e3068f1
- parent
- 56f374f
- author
- FBIK
- date
- 2023-01-19 09:42:47 +0000 UTC
Merge pull request #7 from Asgore-Dreemur/main 新增Missions
3 files changed,
+238,
-3
+0,
-3
1@@ -1,3 +0,0 @@
2-# HackNetOS
3-
4-这里有 HackNetOS 的相关内容, 在制作扩展需要对 HackNetOS 的内容与各种状态有充足的了解.
+3,
-0
1@@ -0,0 +1,3 @@
2+# HacknetOS
3+
4+这里有 HacknetOS 的相关内容, 在制作扩展需要对 HacknetOS 的内容与各种状态有充足的了解.
+235,
-0
1@@ -0,0 +1,235 @@
2+# Missions
3+在Hacknet中,每个邮件都是一个Mission,同时,Entopy和CSEC的任务数据库中的任务和DHS中的任务也是Mission
4+一个Mission的结构大概如下:
5+```xml
6+<?xml version = "1.0" encoding = "UTF-8" ?>
7+<mission id="testMission0" activeCheck="true" shouldIgnoreSenderVerification="false">
8+ <goals>
9+ <goal type="filedeletion" target="advExamplePC" file="asdf.txt" path="home"/>
10+
11+ </goals>
12+
13+ <missionStart val="7" suppress="true">changeSong</missionStart>
14+
15+ <missionEnd val="1">addRank</missionEnd>
16+
17+ <nextMission IsSilent="false">NONE</nextMission>
18+
19+ <branchMissions>
20+ <branch>Missions/BranchExample/TestBranchMission.xml</branch>
21+ </branchMissions>
22+ <posting title="Do the Extension Test Mission" reqs="someCustomFlag" requiredRank="3" >
23+content
24+ </posting>
25+
26+ <email>
27+ <sender>Matt</sender>
28+ <subject>Test Mission Email</subject>
29+ <body>body
30+ </body>
31+ <attachments>
32+ <note title="An example note">note
33+ </note>
34+ <link comp="missionTestNode" />
35+ <account comp="missionTestNode" user="TestUser" pass="testpass" />
36+
37+ </attachments>
38+ </email>
39+</mission>
40+```
41+我们可以看到,Mission由`<mission>`开始,由`</mission>`结束
42+在开始标签中可以定义三个属性:
43+- id 任务id,必须属性
44+- activeCheck 是否自动检查,也就是不需要玩家手动提交
45+- shouldIgnoreSenderVerification 忽略发送者验证
46+
47+
48+一个mission大概有以下几个部分:
49+- goals 任务完成条件
50+- missionStart 任务开始时执行的操作
51+- missionEnd 任务结束时执行的操作
52+- nextMission 下一个任务
53+- branchMissions 分支任务
54+- posting 用于任务数据库和DHS的额外标识
55+- email 给玩家发送的邮件(ps:在DHS中,不会给玩家发邮件)
56+
57+
58+## Goals
59+goals指的是任务完成条件,一个Mission可以有很多个goal,Matt提供的goal类型也有很多
60+goal格式应为:`<goal type=[goal类型] [其余参数]/>`
61+goal共有以下几个类型:
62+
63+### filedeletion
64+类型:删除文件
65+参数:
66+- target 目标节点ID
67+- file 文件名
68+- path 文件所在目录
69+
70+### clearfolder
71+类型:清空文件夹
72+参数:
73+- target 目标节点ID
74+- path 要清空的目录路径
75+
76+### filedownload
77+类型:下载指定文件
78+参数:
79+- target 目标节点ID
80+- file 下载文件名
81+- path 下载文件所在目录
82+
83+### filechange
84+类型:更改文件内容
85+参数:
86+- target 目标节点ID
87+- file 目标文件
88+- path 目标文件所在目录
89+- keyword 目标内容
90+- removal 是否使keyword值在文件中不出现,可选参数,默认false
91+- caseSensitive 区分大小写,可选参数,默认false
92+
93+#### 附加内容
94+由于该类型可能较难理解,附加内容补充,我们将举一个例子
95+```xml
96+<goal type="filechange" target="advExamplePC" file="changeFile.txt" path="home" keyword="extension"/>
97+<goal type="filechange" target="advExamplePC" file="changeFile.txt" path="home" keyword="data" removal="true" caseSensitive="true"/>
98+```
99+这是一个组合goal,第一个goal指的是让关键字extension在changeFile.txt中出现
100+第二个goal指的是让关键字data在文件changeFile.txt中不出现,不区分大小写
101+这个组合goal可以实现:让文件中的data替换为extension
102+
103+### getadmin
104+类型:获取指定电脑的管理员权限
105+参数:
106+- target 目标节点ID
107+
108+### getstring
109+类型:在附加内容中存在指定内容
110+参数:
111+- target 需要与附加内容匹配的字符串
112+
113+### delay
114+类型:仅延迟一段时间
115+参数:
116+- time 延迟时间,单位秒
117+
118+### hasflag
119+类型:获取指定flag
120+参数:
121+- target 目标flag
122+
123+### fileupload
124+类型:上传文件
125+参数:
126+- target 目标节点ID
127+- file 目标文件
128+- path 目标文件所在目录
129+- destTarget 目标文件需要上传到的节点
130+- destPath 目标文件需要上传到的目录
131+- decrypt 是否需要解密,适用于dec加密文件,可选参数,默认false
132+- decryptPass 指定decrypt为true后需要,解密密码,可选参数
133+
134+### AddDegree
135+类型:在国际学术数据库中添加人员学历
136+参数:
137+- owner 目标人名
138+- degree 需要添加的学位名
139+- uni 需要添加的学校名
140+- gpa 绩点
141+
142+### wipedegrees
143+类型:在国际学术数据库中删除人员数据
144+参数:
145+- owner 目标人名
146+
147+### sendemail
148+类型:发送邮件
149+参数:
150+- mailServer 邮件服务器节点ID
151+- recipient 接受者
152+- subject 标题
153+
154+### removeDeathRowRecord
155+类型:删除人员死亡记录
156+参数:
157+- fname 人员First Name(名)
158+- lname 人员Last Name(姓)
159+
160+#### 附加内容
161+该goal可以是一个自闭合标签,也可以在开始和结束标签中添加遗言
162+
163+### getadminpasswordstring(DLC专属)
164+类型:在附加内容中填写了指定节点的管理员密码
165+参数:
166+- target 目标节点ID
167+
168+
169+## missionStart
170+在任务开始时执行的内容
171+可选属性:
172+- val 给内置函数传的参数
173+- suppress 是否在发送邮件时触发,否则在加载任务时触发
174+
175+开始和结束标签中间是具体要执行的function(内置函数)
176+
177+## missionEnd
178+在任务结束时执行的内容
179+可选属性只有一个,val 给内置函数传的参数
180+
181+开始和结束标签中间是具体要执行的function(内置函数)
182+
183+## nextMission
184+下一个任务,也就是完成本任务后自动跳转的任务
185+可选属性只有一个,IsSilent 让这个任务不发邮件安静处理,注意是当前任务不是下一个任务
186+
187+开始和结束标签中间是下一个Mission的相对路径,可以为NONE
188+
189+## branchMissions
190+分支任务
191+解释:如果完成了分支任务中任何一个任务的所有goal,则自动跳转到该分支任务的nextMission
192+branchMissions中可以有多个mission
193+实例格式:
194+```xml
195+<branchMissions>
196+ <branch>Missions/BranchExample/TestBranchMission.xml</branch>
197+</branchMissions>
198+```
199+
200+## posting
201+用于在任务数据库和DHS中添加额外内容
202+属性:
203+- title 显示的标题
204+- reqs 解锁该任务需要的flag
205+- requiredRank 解锁该任务需要的积分
206+
207+开始标签和结束标签中间为显示的该任务大致描述
208+
209+## email
210+给玩家发送的邮件,若为DHS任务则不发送邮件
211+可用标签:
212+- sender 发送者
213+- subject 标题
214+- body 内容,同时也可以是DHS任务中的任务详情
215+
216+### attachments
217+邮件附件
218+可用标签:
219+
220+#### note
221+笔记,属性:
222+- title 在邮件中显示的标题
223+
224+开始标签和结束标签中间为笔记内容
225+
226+#### link
227+节点链接,属性:
228+- comp 目标节点ID
229+
230+这是一个自闭合标签
231+
232+#### account
233+账号,属性:
234+- comp 目标节点ID
235+- user 用户名
236+- pass 密码