open.mp 服务器
托管你自己的《侠盗猎车手:圣安地列斯》多人联机服务器。
v1.5.8.3079最新
发布于 December 17, 2025
亮点
- 内置的、完全可由服务器控制的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原生函数进行了多次小修复,提高了正确性和可用性。
文档与社区
- 新的和更新的NPC脚本API(Pawn原生函数) 已在官方文档中提供:https://open.mp/docs
- 加入社区并在Discord上获取支持:https://discord.gg/samp
- 通过OpenCollective支持开发:https://opencollective.com/openmultiplayer
- 官方网站:https://open.mp/
按合并的拉取请求整理的更新日志
- Fix for non-bullet guns returned as 0 in weapon data by @NexiusTailer in https://github.com/openmultiplayer/open.mp/pull/1046
- Update gitignore for CLion && macOS by @povargek in https://github.com/openmultiplayer/open.mp/pull/1049
- fix ci by @AmyrAhmady in https://github.com/openmultiplayer/open.mp/pull/1054
- Fix apple silicon build by @AmyrAhmady in https://github.com/openmultiplayer/open.mp/pull/1062
- Fixes for a couple of issues by @NexiusTailer in https://github.com/openmultiplayer/open.mp/pull/999
- Fixed: legacy config variable 'chatlogging' does not control death logging by @uifdev in https://github.com/openmultiplayer/open.mp/pull/1057
- Pack Vehicle and StreamInVehicle more tightly by @PTemuri in https://github.com/openmultiplayer/open.mp/pull/1091
- Fixed: train passenger sync by @uifdev in https://github.com/openmultiplayer/open.mp/pull/1100
- Fixed
logging.log_connection_messagesoption check by @Northn in https://github.com/openmultiplayer/open.mp/pull/1094 - Fixed "reverse search for NPC id in player pool" by @NoPressF in https://github.com/openmultiplayer/open.mp/pull/1088
- Return string length for some natives by @NexiusTailer in https://github.com/openmultiplayer/open.mp/pull/1098
- Check provided mtu value against max allowed per client version by @ksenonadv in https://github.com/openmultiplayer/open.mp/pull/1111
- Reverse search for NPC id in player pool by @ksenonadv in https://github.com/openmultiplayer/open.mp/pull/1075
- add NPC_HasPathPointInRadius by @NoPressF in https://github.com/openmultiplayer/open.mp/pull/1115
- One big beautiful pull request by @NexiusTailer in https://github.com/openmultiplayer/open.mp/pull/1113
- Create FUNDING.yml by @AmyrAhmady in https://github.com/openmultiplayer/open.mp/pull/1121
- Store natives globally & ability to call them from using SDK by @AmyrAhmady in https://github.com/openmultiplayer/open.mp/pull/1128
- fix sdtin lock from getline when shutting down by @AmyrAhmady in https://github.com/openmultiplayer/open.mp/pull/1131
- NPC Component by @AmyrAhmady in https://github.com/openmultiplayer/open.mp/pull/916
- Update FCNPC deprecation message by @NexiusTailer in https://github.com/openmultiplayer/open.mp/pull/1132
- add capi component and submodule by @AmyrAhmady in https://github.com/openmultiplayer/open.mp/pull/1125
- Some fixes and changes by @AmyrAhmady in https://github.com/openmultiplayer/open.mp/pull/1133
- upgrade openssl version from 1.1.1 to 3.0.13 by @AmyrAhmady in https://github.com/openmultiplayer/open.mp/pull/1096
- Some NPC fixes and changes by @AmyrAhmady in https://github.com/openmultiplayer/open.mp/pull/1135
- Add trams where they are missed by @NexiusTailer in https://github.com/openmultiplayer/open.mp/pull/1140
- Force train to be 4 consecutive ids by @AmyrAhmady in https://github.com/openmultiplayer/open.mp/pull/1139
- Fix event handling by @0x617374726F in https://github.com/openmultiplayer/open.mp/pull/1144
- Use entry create for dialog data creation by @AmyrAhmady in https://github.com/openmultiplayer/open.mp/pull/1145
- Add environment variable support in config.json by @itsneufox in https://github.com/openmultiplayer/open.mp/pull/1142
- network, npcs, and docker script changes by @AmyrAhmady in https://github.com/openmultiplayer/open.mp/pull/1148
- fix TextDraw_SetProportional by @AmyrAhmady in https://github.com/openmultiplayer/open.mp/pull/1149
- fix slot reserving for players outside of raknet by @AmyrAhmady in https://github.com/openmultiplayer/open.mp/pull/1150
- Fix Kick Issue by @Tiaansu in https://github.com/openmultiplayer/open.mp/pull/1151
- fix: clear checkingList when component is reseted by @nidi21 in https://github.com/openmultiplayer/open.mp/pull/1152
- bump version by @AmyrAhmady in https://github.com/openmultiplayer/open.mp/pull/1153
- update sdk module to the right ref by @AmyrAhmady in https://github.com/openmultiplayer/open.mp/pull/1154
- Couple of fixes for NPC component by @NexiusTailer in https://github.com/openmultiplayer/open.mp/pull/1156
- Fix for random occurrence of player state none by @NexiusTailer in https://github.com/openmultiplayer/open.mp/pull/1146
新贡献者
- @povargek 在 https://github.com/openmultiplayer/open.mp/pull/1049 首次贡献
- @PTemuri 在 https://github.com/openmultiplayer/open.mp/pull/1091 首次贡献
- @Northn 在 https://github.com/openmultiplayer/open.mp/pull/1094 首次贡献
- @NoPressF 在 https://github.com/openmultiplayer/open.mp/pull/1088 首次贡献
- @0x617374726F 在 https://github.com/openmultiplayer/open.mp/pull/1144 首次贡献
- @itsneufox 在 https://github.com/openmultiplayer/open.mp/pull/1142 首次贡献
- @Tiaansu 在 https://github.com/openmultiplayer/open.mp/pull/1151 首次贡献
- @nidi21 在 https://github.com/openmultiplayer/open.mp/pull/1152 首次贡献
完整更新日志:https://github.com/openmultiplayer/open.mp/compare/v1.4.0.2779...v1.5.8.3079
* DynSSL 版本要求你的 Linux 发行版中已安装 libssl。
v1.4.0.2779
发布于 January 12, 2025
亮点
- 为受支持的客户端提供的可选 open.mp 协议加密
- 递归加载组件,并改进了 Linux 链接器的行为
- 修复了车辆和物体相关的多处崩溃与同步问题
- 新增用于检测 open.mp 客户端的原生函数 `IsPlayerUsingOmp`
查看完整更新日志
变更内容
- 实现了用于 open.mp 启动器的加密协议,需先在
config.json中启用(network.use_omp_encryption)。 - 修复了在移动客户端上使用
SetPlayerSkin的一个小问题。 - 新增了相机模式的有效性检查。
- 修复了 Windows 系统中
GetTickCount的返回值。 - 修复了在某些事件和 Pawn 回调中销毁车辆时导致的崩溃。
- 禁用了 AMX 运行时的动态 DLL 加载功能,尤其适用于从 CompuPhase 网站安装了默认 Pawn 的用户。
- 修复了
GetVehicleLandingGearState返回值反转的问题。 - 修复了玩家离开服务器后,其信息仍会随机保留在启动器玩家列表中的问题。
- 为拖车和拖车同步添加了更多的有效性检查。
- 支持递归加载文件夹中的组件。
- 在 Linux 系统上,优先加载以
$开头的组件,并使用RTLD_GLOBAL标志加载它们。 - 修复了与移动物体相关的崩溃问题。
- 修复了玩家车辆数据在
OnPlayerDeath事件被调用前被重置的问题。 - 新增了通过原生函数
IsPlayerUsingOmp检测玩家是否使用 open.mp 客户端的功能。
按合并的拉取请求整理的更新日志
- Fix SetPlayerSkin (add custom skin without DL client) for mobile clients by @f0Re3t in https://github.com/openmultiplayer/open.mp/pull/978
- Validate camera modes better by @NexiusTailer in https://github.com/openmultiplayer/open.mp/pull/975
- fix vehicle release in events called in driver sync by @AmyrAhmady in https://github.com/openmultiplayer/open.mp/pull/983
- GetTickCount on Windows to return tick count of server instead of system by @Hual in https://github.com/openmultiplayer/open.mp/pull/987
- Disable dynamic DLL loading for AMX runtime by @Hual in https://github.com/openmultiplayer/open.mp/pull/988
- Main script config fixes by @Hual in https://github.com/openmultiplayer/open.mp/pull/989
- Fix inverted GetVehicleLandingGearState value by @Hual in https://github.com/openmultiplayer/open.mp/pull/990
- Fix issues with reallocating bitstreams in sendRPC/sendPacket by @Hual in https://github.com/openmultiplayer/open.mp/pull/997
- More validity checks for vehicles (mainly trailers) by @NexiusTailer in https://github.com/openmultiplayer/open.mp/pull/985
- Fix player teleport natives and query player list by @AmyrAhmady in https://github.com/openmultiplayer/open.mp/pull/1003
- Recursively load components by @myudev in https://github.com/openmultiplayer/open.mp/pull/920
- Fix moving player objects crash due to out-of-order destruction by @Hual in https://github.com/openmultiplayer/open.mp/pull/1016
- load comps starting with
$sooner and with RTLD_GLOBAL on linux by @AmyrAhmady in https://github.com/openmultiplayer/open.mp/pull/1020 - call state change event after death event, to prevent unwanted cleanups by @AmyrAhmady in https://github.com/openmultiplayer/open.mp/pull/1035
- omp user detection & server to client encryption for omp users by @AmyrAhmady in https://github.com/openmultiplayer/open.mp/pull/1026
- remove rivershell from main repository and move it to a separate one by @AmyrAhmady in https://github.com/openmultiplayer/open.mp/pull/1038
- revert state change, dont handle in vehicle's event, use death event ... by @AmyrAhmady in https://github.com/openmultiplayer/open.mp/pull/1037
- all my homies hate linux (not the kernel btw, the ecosystem btw) (btw) by @AmyrAhmady in https://github.com/openmultiplayer/open.mp/pull/1040
- bump version by @AmyrAhmady in https://github.com/openmultiplayer/open.mp/pull/1041
新贡献者
- @f0Re3t 在 https://github.com/openmultiplayer/open.mp/pull/978 首次贡献
完整更新日志:https://github.com/openmultiplayer/open.mp/compare/v1.3.1.2744...v1.4.0.2779
* DynSSL 版本要求你的 Linux 发行版中已安装 libssl。