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
服务器身份
主机名
| 键 | 类型 | 默认值 | 只读 | 规则 | 效果 |
|---|---|---|---|---|---|
| name | string | open.mp server | ❌ | ❌ | 将在服务器浏览器中以及玩家连接到服务器时显示的名称。 |
语言
| 键 | 类型 | 默认值 | 只读 | 规则 | 效果 |
|---|---|---|---|---|---|
| language | string | ❌ | ❌ | 服务器浏览器中显示的语言。玩家可以在服务器浏览器中按语言筛选服务器。 |
公告
| 键 | 类型 | 默认值 | 只读 | 规则 | 效果 |
|---|---|---|---|---|---|
| announce | bool | true | ❌ | ❌ | 切换是否向 open.mp 主列表公告服务器。设为 'true' 启用,'false' 禁用。 |
网站 URL
| 键 | 类型 | 默认值 | 只读 | 规则 | 效果 |
|---|---|---|---|---|---|
| website | string | open.mp | ✅ | ✅ | 玩家可以访问以获取有关服务器更多信息的网站。 |
Discord
| 键 | 类型 | 默认值 | 只读 | 规则 | 效果 |
|---|---|---|---|---|---|
| discord.invite | string | https://discord.gg/samp | ❌ | ❌ | 在 omp 启动器中显示的服务器 Discord 地址。 |

横幅
| 键 | 类型 | 默认值 | 只读 | 规则 | 效果 |
|---|---|---|---|---|---|
| banners.light | string | ❌ | ❌ | 在 omp 启动器中显示的服务器浅色横幅 URL 地址。 | |
| banners.dark | string | ❌ | ❌ | 在 omp 启动器中显示的服务器深色横幅 URL 地址。 |

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

连接与网络
网络
| 键 | 类型 | 默认值 | 只读 | 规则 | 效果 |
|---|---|---|---|---|---|
| network.acks_limit | int | 3000 | ❌ | ❌ | |
| network.aiming_sync_rate* | int | 30 | ✅ | ❌ | 客户端在射击武器时应向服务器更新新数据的毫秒数。 |
| network.allow_037_clients | bool | true | ❌ | ❌ | 切换是否允许使用 0.3.7 客户端的玩家加入服务器。 |
| network.use_omp_encryption | bool | false | ❌ | ❌ | 切换 open.mp 数据包加密以提供额外保护(默认协议仍可同时工作)。 |
| network.bind | string | ✅ | ❌ | 服务器应使用的 IP 地址。服务器将强制使用此 IP 地址,而不是自动选择空闲的 IP 地址。此 IP 地址必须与服务器上网卡分配的地址之一匹配。这对于在同一台机器上的同一端口运行多个服务器非常有用。 | |
| network.cookie_reseed_time | int | 300000 | ❌ | ❌ | 连接 Cookie 种子值更新的毫秒数。 |
| network.grace_period | int | 5000 | ❌ | ❌ | 这是服务器启动后允许来自同一 IP 的无限连接的宽限期,主要用于 NPC。 默认:5 秒 |
| network.http_threads | int | 50 | ❌ | ❌ | |
| network.in_vehicle_sync_rate* | int | 30 | ✅ | ❌ | 客户端在车辆内时应向服务器更新新数据的毫秒数。 |
| network.limits_ban_time | int | 60000 | ❌ | ❌ | 设置达到错误连接数据包限制(当达到 acks/消息限制时)的 raknet 封禁时间(毫秒)。 |
| network.message_hole_limit | int | 3000 | ❌ | ❌ | 用于处理 DoS 攻击的网络级别设置。 |
| network.messages_limit | int | 500 | ❌ | ❌ | 用户每秒可以发送的最大消息数。 |
| network.minimum_connection_time | int | 0 | ❌ | ❌ | 服务器在接受另一个传入连接之前将等待的毫秒数。除非你的服务器受到连接洪水攻击,否则不建议使用此变量。 |
| network.mtu | int | 576 | ✅ | ❌ | 保持默认值,如果你不知道这是什么,你真的不需要也不应该更改它,因为如果你不知道,那么你的服务器上没有任何东西需要更高的 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.multiplier | int | 10 | ❌ | ❌ | |
| network.on_foot_sync_rate* | int | 30 | ✅ | ❌ | 客户端在步行时应向服务器更新新数据的毫秒数。 |
| network.player_marker_sync_rate | int | 2500 | ✅ | ❌ | 客户端在移动时应向服务器更新新数据的毫秒数。 |
| network.player_timeout | int | 10000 | ❌ | ❌ | 玩家在未向服务器发送任何数据后超时的毫秒数。 |
| network.port | int | 7777 | ✅ | ❌ | 服务器应使用的端口。你需要端口转发才能让玩家从你的局域网外部加入你的服务器。 |
| network.public_addr | string | ✅ | ❌ | 运行服务器的某些机器可能具有不同的 IP,此设置用于在 bind 配置中设置的地址不同时设置一个新地址。此配置变量仅用于 DL 服务器,因为在 open.mp 中,它将托管一个用于下载模型的 Web 服务器。 | |
| network.stream_radius | float | 200.0 | ❌ | ❌ | 玩家将在 X,Y 平面上流式加载服务器实体的距离。最大值为 400.0,最小值为 50.0。较高的值使玩家可以在更远的距离看到服务器实体,但需要更多的客户端处理能力和潜在的更多带宽。 |
| network.stream_rate | int | 1000 | ❌ | ❌ | 为每个玩家重新测试服务器实体流式加载前的毫秒数。最大值为 5000,最小值为 500。较低的值会增加服务器处理量,因为它必须更频繁地为每个玩家重新检查流式条件。 |
| network.time_sync_rate | int | 30000 | ❌ | ❌ | 玩家游戏时间更新的速率(毫秒)。 |
| network.use_lan_mode | bool | false | ❌ | ❌ | 已弃用的变量,无效。 |
[*] 降低
aiming_sync_rate、in_vehicle_sync_rate和on_foot_sync_rate的值会提高同步性能,但会使用更多带宽。
服务器锁定
| 键 | 类型 | 默认值 | 只读 | 规则 | 效果 |
|---|---|---|---|---|---|
| password | string | ❌ | ❌ | 用于锁定服务器的密码。使用此密码后,只有知道此密码的玩家才能加入服务器。 |
查询服务器信息
| 键 | 类型 | 默认值 | 只读 | 规则 | 效果 |
|---|---|---|---|---|---|
| enable_query | bool | true | ❌ | ❌ | 切换是否应在服务器浏览器中显示服务器信息。设为 'true' 启用或 'false' 禁用。玩家仍然可以加入已禁用查询的服务器,但服务器浏览器将不显示任何信息。 |
玩家与 NPC
玩家和 NPC 限制
| 键 | 类型 | 默认值 | 只读 | 规则 | 效果 |
|---|---|---|---|---|---|
| max_bots | int | 0 | ❌ | ❌ | 你的服务器可以容纳的 NPC 最大数量。通过更改此数字,你可以改变有多少玩家插槽可由 NPC 使用。 |
| max_players | int | 50 | ✅ | ❌ | 你的服务器可以容纳的玩家最大数量。通过更改此数字,你可以改变可以进入服务器的玩家数量。最大为 1000,最小为 1。 |
NPC 更新速率
| 键 | 类型 | 默认值 | 只读 | 规则 | 效果 |
|---|---|---|---|---|---|
| npc.aiming_sync_rate | int | network.aiming_sync_rate | ❌ | ❌ | NPC 瞄准同步速率(毫秒)。如果未设置,则默认为 network.aiming_sync_rate。 |
| npc.in_vehicle_sync_rate | int | network.in_vehicle_sync_rate | ❌ | ❌ | NPC 车辆内同步速率(毫秒)。如果未设置,则默认为 network.in_vehicle_sync_rate。 |
| npc.on_foot_sync_rate | int | network.on_foot_sync_rate | ❌ | ❌ | NPC 步行同步速率(毫秒)。如果未设置,则默认为 network.on_foot_sync_rate。 |
| npc.process_update_rate | int | 50 | ❌ | ❌ | 通用 NPC 处理更新速率(毫秒)。 |
NPC 同步跳过更新限制
| 键 | 类型 | 默认值 | 只读 | 规则 | 效果 |
|---|---|---|---|---|---|
| npc.aim_sync_skip_update_limit | int | 15 | ❌ | ❌ | 空闲 NPC 在瞄准时跳过的同步更新次数,超过此限制后强制同步。 |
| npc.in_vehicle_sync_skip_update_limit | int | 15 | ❌ | ❌ | 空闲 NPC 在车辆内跳过的同步更新次数,超过此限制后强制同步。 |
| npc.on_foot_sync_skip_update_limit | int | 15 | ❌ | ❌ | 空闲 NPC 在步行时跳过的同步更新次数,超过此限制后强制同步。 |
游戏设置
| 键 | 类型 | 默认值 | 只读 | 规则 | 效果 |
|---|---|---|---|---|---|
| game.allow_interior_weapons | bool | true | ❌ | ❌ | 切换是否允许在室内使用武器。'true' 允许在室内使用武器,'false' 禁用。 |
| game.chat_radius | float | 200.0 | ❌ | ❌ | 设置聊天的半径限制。只有距离玩家一定距离内的玩家才能在聊天中看到他们的消息。同时改变玩家在地图上看到其他玩家的距离。 |
| game.death_drop_amount | int | 0 | ❌ | ❌ | |
| game.gravity | float | 0.008 | ❌ | ✅ | 服务器使用的全局重力。 |
| game.group_player_objects | bool | false | ❌ | ❌ | 在 SA:MP 中,每个玩家对象和全局对象共享一个 ID 池。如果一个 ID 被"分配"给玩家,每个玩家都可以拥有一个具有该 ID 的唯一对象,但如果你创建了最大数量的全局对象,那么你就无法再创建任何每个玩家对象。 如果启用了玩家对象分组,服务器将尝试查找另一个玩家已使用的玩家对象插槽。 |
| game.lag_compensation_mode | int | 1 | ✅ | ✅ | 0:完全禁用延迟补偿。 1:完全启用延迟补偿。 2:仅启用位置延迟补偿。这意味着玩家旋转将不会进行延迟补偿。 |
| game.map | string | ❌ | ✅ | 服务器浏览器中显示的地图名称。可以是任何内容,例如 My Stunt Map。 | |
| game.mode | string | ❌ | ❌ | 服务器浏览器中显示的模式。使用 SetGameModeText 具有相同的效果,并覆盖 config.json 中使用的值。如果你有多个需要不同游戏模式文本的游戏模式,请使用此函数。 | |
| game.nametag_draw_radius | float | 70.0 | ❌ | ❌ | 设置显示玩家名称的最大距离。 |
| game.player_marker_draw_radius | float | 250.0 | ❌ | ❌ | 为所有玩家设置标记半径。 |
| game.player_marker_mode | int | 1 | ❌ | ❌ | 0:标记模式关闭 1:标记模式全局 2:标记模式流式 标记模式 |
| game.time | int | 12 | ❌ | ✅ | 服务器使用的全局世界时间,并将在服务器浏览器中显示。 |
| game.use_all_animations | bool | false | ✅ | ❌ | 允许使用某些版本中缺失的动画。'true' 启用所有动画,'false' 禁用。 |
| game.use_chat_radius | bool | false | ❌ | ❌ | 启用/禁用聊天半径。 |
| game.use_entry_exit_markers | bool | true | ✅ | ❌ | 启用/禁用游戏中所有的室内入口和出口(门处的黄色箭头)。 |
| game.use_instagib | bool | false | ❌ | ❌ | instagib 是一个旧的配置变量,在 sa-mp 客户端中已不可用,名称可能来自 Quake 游戏,instagib 基本上是瞬间击杀或一击必杀,在游戏中启用一击必杀功能(目前不可用,因为 sa-mp 在客户端移除了此功能) |
| game.use_manual_engine_and_lights | bool | false | ❌ | ❌ | 控制车辆引擎和灯光。false:防止游戏在玩家进入/退出车辆时自动打开/关闭引擎,以及在天黑时自动打开前灯。 |
| game.use_nametag_los | bool | true | ❌ | ❌ | 切换玩家上方名称标签、生命条和护甲条的视线(Line-Of-Sight)。 |
| game.use_nametags | bool | true | ❌ | ❌ | 切换玩家上方名称标签、生命条和护甲条的绘制。 |
| game.use_player_marker_draw_radius | bool | false | ❌ | ❌ | 切换玩家标记(雷达上的光点)。 |
| game.use_player_ped_anims | bool | false | ❌ | ❌ | 使用标准玩家行走动画(CJ 皮肤的动画)而不是每个皮肤的自定义动画(例如滑板皮肤的滑行动画)。 |
| game.use_stunt_bonuses | bool | true | ❌ | ❌ | 为所有玩家启用或禁用特技奖励。如果启用,玩家在车辆中表演特技(例如翘轮)时将获得金钱奖励。 |
| game.use_vehicle_friendly_fire | bool | false | ❌ | ❌ | 为团队车辆启用友军伤害。玩家将无法损坏队友的车辆。 |
| game.use_zone_names | bool | false | ❌ | ❌ | 允许开启区域名称,例如玩家进入区域时屏幕右下角显示的 "Vinewood" 或 "Doherty" 文本。 |
| game.validate_animations | bool | true | ❌ | ❌ | 验证玩家的动画。 |
| game.vehicle_respawn_time | int | 10000 | ❌ | ❌ | 设置车辆重生时间(毫秒)。(默认 10 秒) |
| game.weather | int | 10 | ❌ | ✅ | 服务器使用的全局天气,并将在服务器浏览器中显示。 |
聊天
| 键 | 类型 | 默认值 | 只读 | 规则 | 效果 |
|---|---|---|---|---|---|
| chat_input_filter | bool | true | ❌ | ❌ | 切换聊天输入过滤器。禁用它以在聊天中使用像 % 这样的字符。你也可以使用 ToggleChatTextReplacement 函数。 |
自定义模型(艺术作品)
| 键 | 类型 | 默认值 | 只读 | 规则 | 效果 |
|---|---|---|---|---|---|
| artwork.cdn | string | ✅ | ❌ | 远程模型服务器的 http 地址。 | |
| artwork.enable | bool | true | ✅ | ✅ | 切换服务器是否使用 /models 文件夹中的自定义模型。设为 'true' 启用或 'false' 禁用。 |
| artwork.models_path | string | models | ✅ | ❌ | 自定义模型所在的路径。 |
| artwork.port | int | 7777 | ✅ | ❌ | |
| artwork.web_server_bind | string | ✅ | ❌ |
Pawn
| 键 | 类型 | 默认值 | 只读 | 规则 | 效果 |
|---|---|---|---|---|---|
| pawn.legacy_plugins | list, string | [] | ✅ | ❌ | /plugins 文件夹中的 .dll 或 .so 文件,服务器应将其作为插件运行。插件是旨在增强游戏模式和过滤器脚本的脚本。 示例: ["mysql", "streamer"] |
| pawn.main_scripts | list, string | ["test 1"] | ✅ | ❌ | /gamemodes 文件夹中的 .amx 文件,服务器应将其作为游戏模式运行。 |
| pawn.side_scripts | list, string | [] | ✅ | ❌ | /filterscripts 文件夹中的 .amx 文件,服务器应将其作为过滤器脚本运行。过滤器脚本是在游戏模式后台运行的脚本。它们用于向服务器添加额外功能而无需编辑游戏模式。如果你想将特定属性应用于多个游戏模式,这将非常有用。 示例: ["filterscripts/Race_System"] |
RCON
| 键 | 类型 | 默认值 | 只读 | 规则 | 效果 |
|---|---|---|---|---|---|
| rcon.allow_teleport | bool | false | ✅ | ❌ | 确定 RCON 管理员在设置路径点时是否会被传送至该处。设为 'true' 启用或 'false' 禁用。 |
| rcon.enable | bool | false | ✅ | ❌ | 切换是否应使用远程控制台功能。设为 'true' 启用或 'false' 禁用。 |
| rcon.password | string | changeme | ❌ | ❌ | 用于管理服务器和使用远程控制台(rcon)的密码。你必须确保将其更改为难以破解的密码,以免他人控制你的服务器。如果 RCON 密码是 changeme,你的服务器将无法启动! |
日志记录
| 键 | 类型 | 默认值 | 只读 | 规则 | 效果 |
|---|---|---|---|---|---|
| logging.enable | bool | true | ❌ | ❌ | 启用/禁用日志记录。 |
| logging.file | string | log.txt | ✅ | ❌ | 保存服务器日志的路径和文件名。 |
| logging.log_chat | bool | true | ❌ | ❌ | 切换是否应在服务器控制台中显示玩家聊天。有助于防止日志变得臃肿,或者如果你有另一个脚本化的聊天记录解决方案。设为 'true' 启用或 'false' 禁用。 |
| logging.log_connection_messages | bool | true | ❌ | ❌ | 启用/禁用玩家和 NPC 加入消息。 |
| logging.log_cookies | bool | false | ❌ | ❌ | 切换记录新连接玩家请求的连接 Cookie。设为 'true' 启用或 'false' 禁用。 |
| logging.log_deaths | bool | true | ❌ | ❌ | 切换是否应在服务器控制台中显示玩家死亡。设为 'true' 启用或 'false' 禁用。 |
| logging.log_queries | bool | false | ❌ | ❌ | 切换是否应记录玩家发送到服务器的所有查询。设为 'true' 启用或 'false' 禁用。这在 DDoS 攻击期间非常有用。 |
| logging.log_sqlite | bool | false | ❌ | ❌ | 在服务器控制台中记录 sqlite DB_* 函数错误。 |
| logging.log_sqlite_queries | bool | false | ❌ | ❌ | 记录所有 sqlite DB_Query 调用,包括查询字符串。 |
| logging.timestamp_format | string | [%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_prefix | bool | true | ❌ | ❌ | 切换是否应在每条控制台消息中打印前缀,例如 [Info]。设为 'true' 启用或 'false' 禁用。 |
| logging.use_timestamp | bool | true | ❌ | ❌ | 切换是否应在每条控制台消息中打印时间戳。设为 'true' 启用或 'false' 禁用。 |
性能
休眠与时钟周期
| 键 | 类型 | 默认值 | 只读 | 规则 | 效果 |
|---|---|---|---|---|---|
| sleep | float | 5.0 | ❌ | ❌ | 主 open.mp 和 raknet 网络线程在每个同步周期内将"休眠"空闲的毫秒数。较高的值会降低服务器处理量,但会降低同步质量。较低的值会增加服务器处理量,但会提高同步质量。除非你的玩家数量非常高并且服务器 FPS 稳定性有问题,否则不建议更改此值。 |
| use_dyn_ticks | bool | true | ✅ | ❌ | dynticks 配置基本上是为了通过使用更多 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 或通过服务器控制台(临时)更改。
-
标记为"规则"的值显示在服务器浏览器的"规则"部分中。