跳到主要内容

config.json

描述

  • config.json是用于配置 open.mp 服务器各项参数的配置文件
  • 你仍然可以在 open.mp 服务器中使用 server.cfg 文件,但建议使用 config.json,因为它有更多设置!



技巧

你可以简单地将你的 server.cfg 转换为 config.json。

在服务器目录中打开命令提示符,输入以下命令,然后按回车:

# Windows
omp-server --dump-config

# Linux
./omp-server --dump-config

注意: 如果目录中有 config.json 文件,你可能需要在执行上述命令前删除它。


技巧

要生成默认的 config.json,请输入以下命令:

# Windows
omp-server --default-config

# Linux
./omp-server --default-config

服务器身份

主机名

类型默认值只读规则效果
namestringopen.mp server将在服务器浏览器中以及玩家连接到服务器时显示的名称。

语言

类型默认值只读规则效果
languagestring服务器浏览器中显示的语言。玩家可以在服务器浏览器中按语言筛选服务器。

公告

类型默认值只读规则效果
announcebooltrue切换是否向 open.mp 主列表公告服务器。设为 'true' 启用,'false' 禁用。

网站 URL

类型默认值只读规则效果
websitestringopen.mp玩家可以访问以获取有关服务器更多信息的网站。

Discord

类型默认值只读规则效果
discord.invitestringhttps://discord.gg/samp在 omp 启动器中显示的服务器 Discord 地址。

横幅

类型默认值只读规则效果
banners.lightstring在 omp 启动器中显示的服务器浅色横幅 URL 地址。
banners.darkstring在 omp 启动器中显示的服务器深色横幅 URL 地址。

服务器徽标

类型默认值只读规则效果
logostring在 omp 启动器和 Discord 状态中显示的服务器徽标 URL 地址。

连接与网络

网络

类型默认值只读规则效果
network.acks_limitint3000
network.aiming_sync_rate*int30客户端在射击武器时应向服务器更新新数据的毫秒数。
network.allow_037_clientsbooltrue切换是否允许使用 0.3.7 客户端的玩家加入服务器。
network.use_omp_encryptionboolfalse切换 open.mp 数据包加密以提供额外保护(默认协议仍可同时工作)。
network.bindstring服务器应使用的 IP 地址。服务器将强制使用此 IP 地址,而不是自动选择空闲的 IP 地址。此 IP 地址必须与服务器上网卡分配的地址之一匹配。这对于在同一台机器上的同一端口运行多个服务器非常有用。
network.cookie_reseed_timeint300000连接 Cookie 种子值更新的毫秒数。
network.grace_periodint5000这是服务器启动后允许来自同一 IP 的无限连接的宽限期,主要用于 NPC。
默认:5 秒
network.http_threadsint50
network.in_vehicle_sync_rate*int30客户端在车辆内时应向服务器更新新数据的毫秒数。
network.limits_ban_timeint60000设置达到错误连接数据包限制(当达到 acks/消息限制时)的 raknet 封禁时间(毫秒)。
network.message_hole_limitint3000用于处理 DoS 攻击的网络级别设置。
network.messages_limitint500用户每秒可以发送的最大消息数。
network.minimum_connection_timeint0服务器在接受另一个传入连接之前将等待的毫秒数。除非你的服务器受到连接洪水攻击,否则不建议使用此变量。
network.mtuint576保持默认值,如果你不知道这是什么,你真的不需要也不应该更改它,因为如果你不知道,那么你的服务器上没有任何东西需要更高的 MTU,但如果你仍然感兴趣:https://zh.wikipedia.org/wiki/%E6%9C%80%E5%A4%A7%E4%BC%A0%E8%BE%93%E5%8D%95%E5%85%83
network.multiplierint10
network.on_foot_sync_rate*int30客户端在步行时应向服务器更新新数据的毫秒数。
network.player_marker_sync_rateint2500客户端在移动时应向服务器更新新数据的毫秒数。
network.player_timeoutint10000玩家在未向服务器发送任何数据后超时的毫秒数。
network.portint7777服务器应使用的端口。你需要端口转发才能让玩家从你的局域网外部加入你的服务器。
network.public_addrstring运行服务器的某些机器可能具有不同的 IP,此设置用于在 bind 配置中设置的地址不同时设置一个新地址。此配置变量仅用于 DL 服务器,因为在 open.mp 中,它将托管一个用于下载模型的 Web 服务器。
network.stream_radiusfloat200.0玩家将在 X,Y 平面上流式加载服务器实体的距离。最大值为 400.0,最小值为 50.0。较高的值使玩家可以在更远的距离看到服务器实体,但需要更多的客户端处理能力和潜在的更多带宽。
network.stream_rateint1000为每个玩家重新测试服务器实体流式加载前的毫秒数。最大值为 5000,最小值为 500。较低的值会增加服务器处理量,因为它必须更频繁地为每个玩家重新检查流式条件。
network.time_sync_rateint30000玩家游戏时间更新的速率(毫秒)。
network.use_lan_modeboolfalse已弃用的变量,无效。

[*] 降低 aiming_sync_ratein_vehicle_sync_rateon_foot_sync_rate 的值会提高同步性能,但会使用更多带宽。

服务器锁定

类型默认值只读规则效果
passwordstring用于锁定服务器的密码。使用此密码后,只有知道此密码的玩家才能加入服务器。

查询服务器信息

类型默认值只读规则效果
enable_querybooltrue切换是否应在服务器浏览器中显示服务器信息。设为 'true' 启用或 'false' 禁用。玩家仍然可以加入已禁用查询的服务器,但服务器浏览器将不显示任何信息。

玩家与 NPC

玩家和 NPC 限制

类型默认值只读规则效果
max_botsint0你的服务器可以容纳的 NPC 最大数量。通过更改此数字,你可以改变有多少玩家插槽可由 NPC 使用。
max_playersint50你的服务器可以容纳的玩家最大数量。通过更改此数字,你可以改变可以进入服务器的玩家数量。最大为 1000,最小为 1。

NPC 更新速率

类型默认值只读规则效果
npc.aiming_sync_rateintnetwork.aiming_sync_rateNPC 瞄准同步速率(毫秒)。如果未设置,则默认为 network.aiming_sync_rate。
npc.in_vehicle_sync_rateintnetwork.in_vehicle_sync_rateNPC 车辆内同步速率(毫秒)。如果未设置,则默认为 network.in_vehicle_sync_rate。
npc.on_foot_sync_rateintnetwork.on_foot_sync_rateNPC 步行同步速率(毫秒)。如果未设置,则默认为 network.on_foot_sync_rate。
npc.process_update_rateint50通用 NPC 处理更新速率(毫秒)。

NPC 同步跳过更新限制

类型默认值只读规则效果
npc.aim_sync_skip_update_limitint15空闲 NPC 在瞄准时跳过的同步更新次数,超过此限制后强制同步。
npc.in_vehicle_sync_skip_update_limitint15空闲 NPC 在车辆内跳过的同步更新次数,超过此限制后强制同步。
npc.on_foot_sync_skip_update_limitint15空闲 NPC 在步行时跳过的同步更新次数,超过此限制后强制同步。

游戏设置

类型默认值只读规则效果
game.allow_interior_weaponsbooltrue切换是否允许在室内使用武器。'true' 允许在室内使用武器,'false' 禁用。
game.chat_radiusfloat200.0设置聊天的半径限制。只有距离玩家一定距离内的玩家才能在聊天中看到他们的消息。同时改变玩家在地图上看到其他玩家的距离。
game.death_drop_amountint0
game.gravityfloat0.008服务器使用的全局重力。
game.group_player_objectsboolfalse在 SA:MP 中,每个玩家对象和全局对象共享一个 ID 池。如果一个 ID 被"分配"给玩家,每个玩家都可以拥有一个具有该 ID 的唯一对象,但如果你创建了最大数量的全局对象,那么你就无法再创建任何每个玩家对象。
如果启用了玩家对象分组,服务器将尝试查找另一个玩家已使用的玩家对象插槽。
game.lag_compensation_modeint10:完全禁用延迟补偿。

1:完全启用延迟补偿。

2:仅启用位置延迟补偿。这意味着玩家旋转将不会进行延迟补偿。
game.mapstring服务器浏览器中显示的地图名称。可以是任何内容,例如 My Stunt Map。
game.modestring服务器浏览器中显示的模式。使用 SetGameModeText 具有相同的效果,并覆盖 config.json 中使用的值。如果你有多个需要不同游戏模式文本的游戏模式,请使用此函数。
game.nametag_draw_radiusfloat70.0设置显示玩家名称的最大距离。
game.player_marker_draw_radiusfloat250.0为所有玩家设置标记半径。
game.player_marker_modeint10:标记模式关闭

1:标记模式全局

2:标记模式流式

标记模式
game.timeint12服务器使用的全局世界时间,并将在服务器浏览器中显示。
game.use_all_animationsboolfalse允许使用某些版本中缺失的动画。'true' 启用所有动画,'false' 禁用。
game.use_chat_radiusboolfalse启用/禁用聊天半径。
game.use_entry_exit_markersbooltrue启用/禁用游戏中所有的室内入口和出口(门处的黄色箭头)。
game.use_instagibboolfalseinstagib 是一个旧的配置变量,在 sa-mp 客户端中已不可用,名称可能来自 Quake 游戏,instagib 基本上是瞬间击杀或一击必杀,在游戏中启用一击必杀功能(目前不可用,因为 sa-mp 在客户端移除了此功能)
game.use_manual_engine_and_lightsboolfalse控制车辆引擎和灯光。false:防止游戏在玩家进入/退出车辆时自动打开/关闭引擎,以及在天黑时自动打开前灯。
game.use_nametag_losbooltrue切换玩家上方名称标签、生命条和护甲条的视线(Line-Of-Sight)。
game.use_nametagsbooltrue切换玩家上方名称标签、生命条和护甲条的绘制。
game.use_player_marker_draw_radiusboolfalse切换玩家标记(雷达上的光点)。
game.use_player_ped_animsboolfalse使用标准玩家行走动画(CJ 皮肤的动画)而不是每个皮肤的自定义动画(例如滑板皮肤的滑行动画)。
game.use_stunt_bonusesbooltrue为所有玩家启用或禁用特技奖励。如果启用,玩家在车辆中表演特技(例如翘轮)时将获得金钱奖励。
game.use_vehicle_friendly_fireboolfalse为团队车辆启用友军伤害。玩家将无法损坏队友的车辆。
game.use_zone_namesboolfalse允许开启区域名称,例如玩家进入区域时屏幕右下角显示的 "Vinewood" 或 "Doherty" 文本。
game.validate_animationsbooltrue验证玩家的动画。
game.vehicle_respawn_timeint10000设置车辆重生时间(毫秒)。(默认 10 秒)
game.weatherint10服务器使用的全局天气,并将在服务器浏览器中显示。

聊天

类型默认值只读规则效果
chat_input_filterbooltrue切换聊天输入过滤器。禁用它以在聊天中使用像 % 这样的字符。你也可以使用 ToggleChatTextReplacement 函数。

自定义模型(艺术作品)

类型默认值只读规则效果
artwork.cdnstring远程模型服务器的 http 地址。
artwork.enablebooltrue切换服务器是否使用 /models 文件夹中的自定义模型。设为 'true' 启用或 'false' 禁用。
artwork.models_pathstringmodels自定义模型所在的路径。
artwork.portint7777
artwork.web_server_bindstring

Pawn

类型默认值只读规则效果
pawn.legacy_pluginslist, string[]/plugins 文件夹中的 .dll 或 .so 文件,服务器应将其作为插件运行。插件是旨在增强游戏模式和过滤器脚本的脚本。
示例:["mysql", "streamer"]
pawn.main_scriptslist, string["test 1"]/gamemodes 文件夹中的 .amx 文件,服务器应将其作为游戏模式运行。
pawn.side_scriptslist, string[]/filterscripts 文件夹中的 .amx 文件,服务器应将其作为过滤器脚本运行。过滤器脚本是在游戏模式后台运行的脚本。它们用于向服务器添加额外功能而无需编辑游戏模式。如果你想将特定属性应用于多个游戏模式,这将非常有用。
示例:["filterscripts/Race_System"]

RCON

类型默认值只读规则效果
rcon.allow_teleportboolfalse确定 RCON 管理员在设置路径点时是否会被传送至该处。设为 'true' 启用或 'false' 禁用。
rcon.enableboolfalse切换是否应使用远程控制台功能。设为 'true' 启用或 'false' 禁用。
rcon.passwordstringchangeme用于管理服务器和使用远程控制台(rcon)的密码。你必须确保将其更改为难以破解的密码,以免他人控制你的服务器。如果 RCON 密码是 changeme,你的服务器将无法启动!

日志记录

类型默认值只读规则效果
logging.enablebooltrue启用/禁用日志记录。
logging.filestringlog.txt保存服务器日志的路径和文件名。
logging.log_chatbooltrue切换是否应在服务器控制台中显示玩家聊天。有助于防止日志变得臃肿,或者如果你有另一个脚本化的聊天记录解决方案。设为 'true' 启用或 'false' 禁用。
logging.log_connection_messagesbooltrue启用/禁用玩家和 NPC 加入消息。
logging.log_cookiesboolfalse切换记录新连接玩家请求的连接 Cookie。设为 'true' 启用或 'false' 禁用。
logging.log_deathsbooltrue切换是否应在服务器控制台中显示玩家死亡。设为 'true' 启用或 'false' 禁用。
logging.log_queriesboolfalse切换是否应记录玩家发送到服务器的所有查询。设为 'true' 启用或 'false' 禁用。这在 DDoS 攻击期间非常有用。
logging.log_sqliteboolfalse在服务器控制台中记录 sqlite DB_* 函数错误。
logging.log_sqlite_queriesboolfalse记录所有 sqlite DB_Query 调用,包括查询字符串。
logging.timestamp_formatstring[%Y-%m-%dT%H:%M:%S%z]应使用的时间戳格式。该格式基于 C/C++ 中的 strftime 格式。以下是一些示例:

[%H:%M:%S] 仅显示时间。

[%d/%m/%Y %H:%M:%S] 这将以 dd/mm/yyyy 格式显示日期,后跟 hour:minute:second 格式的时间。
logging.use_prefixbooltrue切换是否应在每条控制台消息中打印前缀,例如 [Info]。设为 'true' 启用或 'false' 禁用。
logging.use_timestampbooltrue切换是否应在每条控制台消息中打印时间戳。设为 'true' 启用或 'false' 禁用。

性能

休眠与时钟周期

类型默认值只读规则效果
sleepfloat5.0主 open.mp 和 raknet 网络线程在每个同步周期内将"休眠"空闲的毫秒数。较高的值会降低服务器处理量,但会降低同步质量。较低的值会增加服务器处理量,但会提高同步质量。除非你的玩家数量非常高并且服务器 FPS 稳定性有问题,否则不建议更改此值。
use_dyn_ticksbooltruedynticks 配置基本上是为了通过使用更多 CPU 来弥补任何下降,从而将服务器的时钟周期保持在恒定计数。
它是使用提供的 sleep 值计算的,因此如果 sleep 为 5,则恒定时钟周期计数为 1000 / 5 = 200 ticks/秒。
open.mp 根据每个时钟周期的代码执行时间动态修改内部 sleep 值,只是为了将其稳定在 200 ticks,较低的 sleep 意味着更多的 CPU 使用(如果服务器代码编写良好,则差异不大)

环境变量扩展

config.json 字符串可以使用 ${VAR} 从环境变量中提取值。服务器在启动期间解析它们,open.mp 内部没有 .env 解析器,因此请确保环境已预先填充(shell export、Docker env_file、systemd Environment= 等)。

示例:

{
"password": "${SERVER_PASSWORD}",
"logging": {
"enable": "${LOG_TOGGLE}:-true" // 这默认为 true
},
"banners": {
"dark": "${BANNER_DARK}:-", // 这默认为横幅上无图像
"light": "${BANNER_LIGHT}"
}
}
  • ${VAR} 默认变量语法
  • ${VAR:-default} 在变量缺失时提供回退值
  • $${VAR} 转义以在配置中将 ${VAR} 保留为文本

备注
  • 标记为"只读"的值在运行时无法更改。所有其他值可以通过将它们传递给 SendRconCommand 或通过服务器控制台(临时)更改。

  • 标记为"规则"的值显示在服务器浏览器的"规则"部分中。