Hacknet-Extension-Tutorial


commit
690be2c
parent
aa1f399
author
Bit
date
2023-01-19 09:33:29 +0000 UTC
新增Missions
3 files changed,  +238, -3
D Content/HackNetOS.md
+0, -3
1@@ -1,3 +0,0 @@
2-# HackNetOS
3-
4-这里有 HackNetOS 的相关内容, 在制作扩展需要对 HackNetOS 的内容与各种状态有充足的了解.
A Content/HacknetOS.md
+3, -0
1@@ -0,0 +1,3 @@
2+# HacknetOS
3+
4+这里有 HacknetOS 的相关内容, 在制作扩展需要对 HacknetOS 的内容与各种状态有充足的了解.
A Content/Missions.md
+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 密码