- commit
- cd2d6d3
- parent
- e3068f1
- author
- FBIK
- date
- 2023-01-21 17:00:55 +0000 UTC
Action, Faction与Mission更改内容同步(未完成)
3 files changed,
+115,
-57
+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+这是一个自闭合标签, 可以被延迟
+1,
-1
1@@ -29,4 +29,4 @@ Faction根标签`<CustomFaction>`的属性:
2
3 Action标签`<Action>`:
4 - `ValueRequired`: 激活该Action所需的`Rank`值.
5-- 子标签: 可以为任何Action子标签(不可以是Action触发条件标签).
6+- 子标签: 可以为任何Action的行动标签.
+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>`结束