跳到主要内容

open.mp 服务器

托管你自己的《侠盗猎车手:圣安地列斯》多人联机服务器。

v1.6.7.3218最新

亮点

  • 新增 NPC 车辆位置与旋转相关原生函数,并改进 NPC 车辆的移动表现
  • 修复封禁重载、连接、广播与服务器关闭等网络问题
  • 修复 Pawn、组件与 C API 相关问题,并支持 Conan 2 与 macOS ARM 构建
查看完整更新日志

变更内容(自 v1.5.8.3079 起)

服务器运行与网络

  • 新增 artwork.show_crc_logs 配置项,可在需要时开启 TXD 与 DFF 文件的 CRC 日志记录;该选项默认关闭。#1164
  • 修复了服务器配置中的环境变量替换问题,数值型与布尔型配置项也不例外。#1195
  • 修复了 reloadbans:重新载入的封禁现在会重新由网络层执行,命中的在线玩家也会一并被移除。#1276
  • 修复了踢出玩家后误报“服务器已满”的问题,拒绝无效的连接丢失(connection lost)数据包,并对无效的连接尝试施以临时封禁,以减少日志刷屏。#1209, #1173
  • 修复了服务器刚启动时发起的连接因无效的网络 cookie 而被拒绝的问题。#1213
  • 修复了插件在发送前读取广播 RPC 载荷时该载荷被截短的问题,此问题会影响天气切换、消息发送与游戏文本等功能。#1215
  • 修复了 Linux 服务器在无终端环境下(例如通过 nohup 运行)关闭时卡死或崩溃的问题。#1203
  • 车辆重生时现在会重置喷漆(paintjob)。#1213

脚本与组件

  • 修复了 Pawn format() 中 %q 的转义问题、以字符串方式读取不存在的控制台变量时的崩溃,以及由非法 SetTimerEx 参数引发的崩溃。#1159, #1171, #1223
  • 修复了退出观战模式后无法重生的问题,并让 TogglePlayerSpectating 能可靠地重新开启观战。#1187, #1092
  • 调整了主脚本的卸载流程:组件现在会在脚本卸载完成后再行重置,避免回调与计时器仍引用已卸载的脚本。#1190
  • 为未指定文件名便调用脚本加载类控制台命令的情况补充了用法提示,并为缺失旧版插件的情况给出了更明确的错误信息。#1032, #1273
  • 新增了对物体与附着物体编辑状态的独立校验,并会依据当前生效的编辑模式校验客户端返回的编辑结果。#1188
  • 修复了 AttachPlayerObjectToObject(含其 C API 调用路径)忽略 syncRotation 参数的问题。#1163
  • 修复了 C API 中销毁帮派区域(gang zone)与拾取物(pickup)时未释放其旧版 ID、导致这些 ID 无法复用的问题。#1231
  • 更新了 Pawn,修复其对打包字符串(packed string)执行 memcpy 与 fwrite 的问题,并修正了旧版服务器端游戏文本组件中的预设值。#1180

NPC 相关改进

  • 新增 NPC_SetVehiclePos、NPC_SetVehicleRot、NPC_GetVehiclePos 与 NPC_GetVehicleRot 原生函数。行为变更: NPC_SetPos 现在会将 NPC 从所在车辆中移出;若要在 NPC 乘坐时调整其位置,请改用车辆专用函数。#1182, #1237
  • 修复了 NPC 车辆在坡道上行驶时显得扁平或出现瞬移的问题,并改进了车辆移动的同步。#1249, #1280
  • 修复了 NPC_PutInVehicle 将 NPC 放入船只后,其外观仍停留在徒步状态的问题。#1236
  • 修复了已死亡的 NPC 在流式加载(stream in)时仍呈站立姿态的问题;NPC_Respawn 现在会清除其死亡状态。#1238, #1184
  • 修复了未调用 NPC_SetAmmo 时 NPC 弹药无限的问题,修正了 NPC_GetSkin 的返回值,并修复了 NPC_SetAngleToPos 计算出的角度。#1165, #1182, #1252
  • 改进了 NPC 在路径节点间距较短时的移动表现,并避免零时长(zero-time)的节点切换在同一 tick 内反复执行。移动逻辑调整、切换次数限制
  • 修复了 NPC 的清理流程,以及可选组件缺失或正在卸载时的若干崩溃问题。#1175, #1182

构建与部署

  • 构建系统迁移至 Conan 2,并新增了面向 Windows、Linux 与 macOS 的专门构建指南。#1233, #998
  • 新增 macOS ARM 构建支持,并修复了在新版微软工具链下的 Windows 兼容性问题。#1234, #1235, #1166
  • 修复了 32 位 Docker 运行镜像缺少启动 omp-server 所需库文件的问题。#1263

按合并的拉取请求整理的更新日志

新贡献者

完整更新日志:https://github.com/openmultiplayer/open.mp/compare/v1.5.8.3079...v1.6.7.3218

* DynSSL 版本要求你的 Linux 发行版中已安装 libssl。

v1.5.8.3079

亮点

  • 内置的、完全可由服务器控制的NPC(非玩家角色)功能
  • 新增C API / C API SDK,并增强了Pawn与SDK之间的互操作性
  • 通过更强的同步验证检查,实现了显著的网络性能提升
  • 升级至OpenSSL 3.0.13
查看完整更新日志

变更内容

核心功能

  • 引入了作为内置服务器功能的完全可控NPC,无需外部NPC插件,从而实现更深层的服务器端AI和自动化。
  • 新增了C API和C API SDK,允许开发者将open.mp直接与原生代码和外部工具集成。
  • 新增了从open.mp C++ SDK调用Pawn原生函数的能力,显著提升了脚本与原生模块之间的互操作性。

网络与性能

  • 实现了显著的网络性能提升,带来了更快的同步和更流畅的游戏体验。
  • 添加了多项同步验证检查,以防止无效数据、欺骗性的状态和畸形的网络数据包。
  • 现在会根据客户端版本的最大允许值来验证MTU(最大传输单元),防止配置错误和系统不稳定。

平台与兼容性

  • 将OpenSSL从1.1.1升级至3.0.13,正式弃用了对旧版Linux发行版的支持,确保了对现代系统的妥善支持。
  • 为config.json添加了环境变量支持,使容器化部署、CI/CD流程和生产环境部署更加灵活方便。

NPC与游戏性改进

  • NPC的ID分配现在采用从高到低的顺序,防止冲突并提高可预测性。
  • 弃用了ConnectNPC函数,推荐使用新的内置NPC系统。
  • 强制火车在创建时使用4个连续的ID,修复了长期存在的游戏不一致性问题。
  • 修复了火车乘客的同步问题。

稳定性与错误修复

  • 修复了一个关于重生数据的棘手问题。
  • 修复了与踢出玩家相关的延迟问题。
  • 修复了在服务器重启期间检查列表中与游戏区域相关的崩溃问题。
  • 修复了玩家在观战后状态被随机设置为None的问题。
  • 修复了Linux服务器关闭时stdin被锁定的问题。
  • 修复了chatlogging配置变量不影响死亡信息的问题。
  • 移除了旧的Fixes组件,因其不稳定、冗余且功能已被新系统取代。
  • 针对Pawn原生函数进行了多次小修复,提高了正确性和可用性。

文档与社区

按合并的拉取请求整理的更新日志

新贡献者

完整更新日志:https://github.com/openmultiplayer/open.mp/compare/v1.4.0.2779...v1.5.8.3079

* DynSSL 版本要求你的 Linux 发行版中已安装 libssl。

所有发布均为开源。从源代码编译,或直接从 GitHub 下载。