Repository navigation
Expand file tree
/
Copy pathconfig.ini
More file actions
315 lines (240 loc) · 11.8 KB
/
Copy pathconfig.ini
File metadata and controls
315 lines (240 loc) · 11.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
###############################################################################
# FluffOS 运行时配置文件
###############################################################################
# 默认值参考 2026 年的 FluffOS 源码。
# LPC 路径以游戏库根目录为基准。
# mudlib directory 是操作系统路径,. 表示驱动启动目录。
# log directory 相对启动目录解析,开头的 / 会被忽略。
# 行内遇到 # 即开始注释,空行会被忽略。
# 省略的整数配置使用驱动编译时确定的默认值。
###############################################################################
# 游戏名称
name : 炎黃群俠傳
# 监听的 IP 地址;多网卡服务器可用此项指定地址。
# 替代编译时的 SERVER_IP 定义。
# mud ip : 0.0.0.0
# external_port_1 的旧式别名,请勿与 external_port_1 同时启用。
# port number : 3160
# 对外监听端口,支持 telnet、binary、ascii、MUD 和 websocket 协议。
external_port_1 : telnet 5566
external_port_2 : telnet 6666
# external_port_2_tls : cert=cert.crt key=cert.key
external_port_3 : websocket 8888
# external_port_3_tls : cert=cert.crt key=cert.key
# external_port_4 : binary 4000
# external_port_5 : ascii 4001
# 游戏库的操作系统路径;. 表示驱动启动目录。
mudlib directory : .
# WebSocket 服务提供的 HTTP 静态文件目录。
websocket http dir : www
# 可调用的外部程序,最多可配置 100 项。
external_cmd_1 : /usr/bin/curl
external_cmd_2 : C:\ProgramData\chocolatey\bin\curl.exe
external_cmd_3 : /usr/bin/python3
###############################################################################
# 以下为游戏库基础配置,请确认用途后再修改。
###############################################################################
# 驱动调试日志及统计文件目录。
# 相对启动目录解析,路径开头的 / 会被忽略。
log directory : /log
# #include <...> 查找头文件的目录,多个目录用冒号分隔。
include directories : /include:/mudcore/include
# 定义主对象的文件。
master file : /adm/single/master
# 定义全局模拟 efun 的文件。
simulated efun file : /adm/single/simul_efun
# 驱动调试日志文件名,保存在 log directory 指定的目录中。
debug log file : debug.log
# 编译 LPC 文件时自动引入的全局头文件。
global include file : <globals.h>
# 没有匹配到指令动作时,向玩家显示的默认提示。
default fail message : [35m指令错误,请输入 help 查看游戏帮助。[0m
# 发生 error() 时,向玩家显示的默认提示;此项可选。
default error message : [31m你发现事情不大对了,但是又说不上来。[0m
###############################################################################
# 运行时配置
###############################################################################
# 对象闲置达到指定秒数后,调用其 clean_up() 函数。
# 该函数可自行清理或销毁对象;未定义时不执行清理。
# time to clean up : 600
# 对象两次 reset() 调用之间的间隔,单位为秒。
# time to reset : 900
# 保留的兼容项,当前驱动不再将对象程序换出到磁盘。
# time to swap : 300
# 保留的兼容项,虚拟机执行栈大小由编译选项决定。
# 实际使用 CFG_EVALUATOR_STACK_SIZE,修改此项不会调整执行栈。
# evaluator stack size : 65536
# 对象继承链的最大深度。
# inherit chain size : 30
# 单次 LPC 执行的最大耗时预算,单位为微秒。
# 超过预算时终止本次执行。
# maximum evaluation cost : 30000000
# 保留的兼容项,函数调用深度由编译选项决定。
# 实际使用 CFG_MAX_CALL_DEPTH,不受此运行时配置控制。
# maximum call depth : 150
# 单个数组允许包含的最大元素数量。
maximum array size : 30000 # 默认值:15000
# 单个 buffer 变量的最大容量,单位为字节。
# maximum buffer size : 1048576
# 单个映射允许包含的最大键值对数量。
# maximum mapping size : 150000
# 单个字符串的最大长度,单位为字节。
# maximum string length : 1048576
# 位字段允许包含的最大位数。
# 位字段存储在可打印字符串中,每个字节保存 6 位。
# maximum bits in a bitfield : 12000
# 单次 read_bytes() 或 write_bytes() 允许传输的最大字节数。
# maximum byte transfer : 262144
# read_file() 允许读取的最大文件大小,单位为字节。
# maximum read file size : 262144
# 共享字符串哈希表大小,最小为 7001。
# 驱动会向上取整为 2 的幂,最大不超过 2^30。
# hash table size : 65536
# 保留的兼容项,当前驱动的对象表会自动扩容。
# object table size : 4096
# find_living() 使用的生物对象哈希表大小,最小为 256。
# 驱动会向上取整为 2 的幂,当前配置 2048 有效。
living hash table size : 2048 # 默认值:256
# 游戏时间刻度,即游戏内可见的最短时间间隔,单位为毫秒。
# gametick msec : 1000
# 心跳调用间隔,单位为毫秒。
# heartbeat interval msec : 1000
# 异步执行限制,以下配置使用驱动默认值。
# 最多允许同时挂起的异步函数帧数,0 表示不限制。
# max suspended async functions : 10000
# 每轮事件循环处理 Promise 回调的耗时预算,单位为微秒。
# 0 表示使用内置的 1 毫秒预算,并非取消调度限制。
# async drain eval budget : 0
# 等待执行的 Promise 回调及 async_yield() 操作数量上限。
# 0 表示不限制。
# max pending promise deliveries : 100000
# explode() 的分隔符处理规则:
# 旧行为会移除开头的所有分隔符,以及末尾的一个分隔符。
# 例如 explode("..x.y..z..", ".") 得到:
# ({ "x", "y", "", "z", "" })
#
# 启用 sane explode string 后,最多移除首尾各一个分隔符。
# 上例的结果为:
# ({ "", "x", "y", "", "z", "" })
# sane explode string : 1
# 启用后优先于 sane explode string,保留分隔产生的所有空项。
# 保证 implode(explode(x, y), y) 的结果始终等于 x。
# 上例的结果为:
# ({ "", "", "x", "y", "", "z", "", "" })
# reversible explode string : 0
# 包括 sort_array() 在内的排序使用系统提供的排序实现。
# 旧版内部排序可能容忍只返回 -1 和 0 的比较函数,例如:
# sort_array(({4,3,2,1}), (: -($1<$2) :));
#
# 请勿依赖这种行为。比较函数应按两项的大小关系,
# 分别返回负数、0 或正数,以兼容不同排序实现。
# 可搜索 sort_array() 调用,检查旧代码中的比较函数。
# sane sorting : 1
# 对 call_other() 及对象的 -> 调用启用类型检查。
# call other type check : 0
# 将上述类型检查发现的问题报告为警告,而非错误。
# call other warn : 0
# 将运行时错误交给主对象的 error_handler() 处理。
# 驱动会关闭出错对象的心跳,并用映射传递错误信息。
# 处理函数的返回内容写入 debug.log。
# 可参考驱动测试库或其他游戏库中的错误处理实现。
# mudlib error handler : 1
# 完全禁用周期性的 reset() 调用。
# no resets : 0
# 启用延迟重置:达到重置时间后,仅在对象被
# call_other() 或 move_object() 访问时调用 reset()。
# 可避免对不再被访问的对象执行重置,减少不必要的加载。
# 关闭时按常规方式调度 reset()。
# lazy resets : 0
# 随机安排 reset() 的调用间隔。
# 启用时,间隔为 time to reset 的一半至其值减 1,单位为秒。
# 关闭时使用 time to reset 指定的固定间隔。
# randomized resets : 1
# 过滤玩家指令中的 ANSI 转义字符。
# 在执行 add_action() 注册的动作前,将 ESC(ASCII 27)替换为空格。
# no ansi : 1
# 控制 ANSI 转义字符的过滤时机。
# 启用时,process_input() 收到的输入已经过过滤。
# 关闭时,先交给 process_input(),再在动作处理前过滤。
# 若编译时禁用 add_action,仅启用 no ansi 无法完成该过滤。
# strip before process input : 1
# 允许在 call_out() 回调中使用 this_player()。
# this_player in call_out : 1
# 启用 trace() 和 traceprefix() 跟踪函数,关闭可减少运行开销。
# trace : 1
# 启用代码跟踪,在报错时输出此前执行的代码行。
# 此功能会增加执行开销。
# trace code : 0
# 除 NPC 外,也对交互对象调用 catch_tell()。
# 启用后,玩家对象需在 catch_tell(msg) 中调用 receive(msg) 接收消息。
# interactive catch tell : 0
# 将监听文本交给监听者对象的 receive_snoop(),
# 替代通过 add_message() 直接发送,便于定制监听消息处理。
# receive snoop : 1
# 即使玩家的 catch_tell() 被影子对象覆盖,也报告发送给玩家的内容。
# 此类监听消息以 $$ 为前缀,玩家本人可能未看到这些内容。
# snoop shadowed : 0
# 控制 defer() 注册函数的执行顺序。
# 0 表示后注册的先执行,1 表示先注册的先执行。
# reverse defer : 0
# 允许通过驱动参数 -C 启用交互控制台。
# 在控制台输入 help 可查看可用命令。
# 驱动进入后台时会关闭控制台,SIGTTIN 信号可将其重新启用。
# 控制台可用于检查游戏内部不便查看的驱动状态。
# has console : 1
# 将发送给非交互对象的消息写入标准错误输出。
# 消息以 ] 为前缀,用于兼容旧行为。
# noninteractive stderr write : 0
# 收到通常会导致驱动崩溃的信号时,
# 先调用主对象的 crash(),再关闭驱动。
# trap crashes : 1
# 启用旧版类型检查行为,仅用于兼容旧代码。
# 该行为会恢复历史缺陷,削弱编译期类型检查。
# old type behavior : 0
# 兼容旧版字符串和 buffer 范围读取行为:
# 将 x[-2..-1] 这类表达式中的负数索引解释为从末尾计数。
# 仅影响读取,不适用于 x[-2..-1] = value 这样的赋值。
# old range behavior : 0
# 对可能依赖旧版范围索引行为的代码发出警告。
# warn old range behavior : 1
# 不警告未使用的函数参数,仅警告未使用的局部变量。
# 可减少旧代码因必须声明参数名而产生的警告。
# suppress argument warnings : 1
# 让 enable_commands() 总是重新调用 init()。
# 效果等同于调用 enable_commands(1)。
# enable_commands call init : 1
# sprintf() 处理 %10s 等对齐格式时,
# 忽略客户端不可见的 ANSI 转义序列所占长度。
# sprintf add_justified ignore ANSI colors : 1
# 同一游戏周期内,零延时 call_out() 调用链的嵌套层数上限。
# 用于防止 call_out(0) 不断调度形成循环。
# call_out(0) nest level : 1000
# 进行 LPC 跟踪时,记录执行上下文。
# trace lpc execution context : 0
# 进行 LPC 跟踪时,记录具体指令。
# trace lpc instructions : 0
# 驱动启动时,在调试日志中输出正在预加载的文件名。
# display preload progress : 1
# Telnet 扩展协议支持。
# enable mxp : 0
enable gmcp : 1 # 默认值:0
# enable zmp : 0
# enable mssp : 1
# enable msp : 1
# enable msdp : 0
###############################################################################
# 可选访问控制
###############################################################################
# package_ffi:ffi_load() 允许加载的共享库路径,使用冒号分隔。
# 默认留空,不额外限制库路径。
# 每次 FFI 操作仍由主对象的 valid_ffi() 决定是否允许。
# ffi allowed libraries :
# package_contrib:允许 LPC get_os_env() 读取的环境变量名。
# 多个名称使用冒号分隔;可写变量也自动具有读取权限。
# 默认留空,不额外授予读取权限。
# allowed os environment variables :
# 允许 LPC set_os_env() 修改的环境变量名,使用冒号分隔。
# 列出的变量也可读取,默认留空则禁止写入。
# 这些列表仅控制 LPC 访问,不配置 Python 服务,
# 也不改变进程环境变量与 .env 的优先级。
# writable os environment variables :