更新日志
v1.4.0.2779 (最新版)
我们很高兴宣布最新服务器版本的发布!
本次更新带来了多项重要修复,并引入激动人心的新功能:open.mp 数据包加密。
完整更新日志请查阅此处。
新增功能:
- 实现与 open.mp 启动器配套使用的加密功能(需在
config.json
中启用network.use_omp_encryption
) - 通过IsPlayerUsingOmp原生函数检测 open.mp 玩家
- 递归加载文件夹中的组件
- 优先加载以$开头的组件(Linux 系统使用 RTLD_GLOBAL 加载)
功能调整:
- 优化视角模式有效性检查
- 禁用 AMX 运行时的动态 DLL 加载(特别是用户安装 Compuphase 官网默认 Pawn 时)
问题修复:
- 修复移动端玩家设置皮肤的小问题
- 修正 Windows 系统 GetTickCount 返回值
- 修复特定事件和 Pawn 回调中销毁车辆导致的崩溃
- 修正 GetVehicleLandingGearState 返回值反转问题
- 修复玩家退出后启动器列表残留问题
- 增强拖车和拖车同步的校验机制
- 修复移动物体相关的崩溃问题
- 修正 OnPlayerDeath 回调前玩家车辆数据重置问题
v1.3.1.2748
点击展开
新版 open.mp 服务器终于发布!本次更新包含大量修复、多项性能改进和新增功能。
启动器已同步更新,打开启动器即可通过更新对话框获取新版。完整更新日志请查阅:https://github.com/openmultiplayer/launcher/releases/tag/v1.4.0
服务器端
新增功能:
- 在config.json中添加服务器 Logo 配置项,可在启动器和 Discord 状态显示
- 增强对话框响应的数据校验
- 新增菜单行的有效性检查
- 添加人性化 HTTP 错误提示
- 新增 SA-MP API 兼容性定义(
#define SAMP_COMPAT
) - 新增旧版脚本 API 警告静默定义(
#define LEGACY_SCRIPTING_API
)
功能调整:
- 移除侧脚本加载/卸载时不必要的 OnPlayerConnect/OnPlayerDisconnect 回调,改用OnScriptLoadPlayer和OnScriptUnloadPlayer
- 移除 Pawn 原生函数的废弃警告
- 校验 CDN 链接有效性
- 停止广播观战者同步数据
- 调整生命值和护甲默认值
- 优化 Scores And Pings RPC 响应性能(计分板)
- 无效武器槽位返回
-1
问题修复:
- 修复长期存在的 RakNet 崩溃问题
- 修复罕见情况下格式化字符串显示异常
- 解决多个脚本加载时 crashdetect 无法定位文件行号的问题
- 修复多个 RakNet 崩溃问题,优化内存管理
- 修复若干连接问题和玩家池清理机制
- 修正GetGameText返回值异常
- 修复非 ASCII 系统语言环境下 Windows 版加载失败问题
- 修正
qawno/filterscript.new
和qawno/gamemode.new
回调头信息
v1.2.0.2670
点击展开
我们强烈建议所有 open.mp 服务器升级至此版本。本次更新不仅显著提升性能,还包含关键安全修复。
服务器端
新增功能:
- 新增横幅和 Discord 邀请链接配置项(显示于open.mp 启动器)
- 新增连接消息日志开关(
logging.log_connection_messages
) - 新增动画验证配置项(
game.validate_animations
) - 新增混合拼写函数兼容定义(
#define MIXED_SPELLINGS
)
问题修复:
- 多项安全修复
- 公告系统默认使用 IPv4(原 IPv6 优先问题)
- 修正
Get(Player)ObjectMaterial(Text)
返回颜色格式和模型 ID 错误 - 修正
Get(Player)Gravity
返回整型而非浮点型问题 - 完善多处伤害原因(武器)验证机制
- 同步封禁操作以支持批量处理
v1.1.0.2612
点击展开
open.mp 现已结束 RC 阶段,正式进入稳定开发周期。v1.1.0.2612 修复了大量问题并统一了多项行为差异,建议及时更新以获得最佳体验。
open.mp 官方启动器正式发布!您现在可以:
- 可靠地浏览服务器列表
- 选择心仪服务器
- 一键加入游戏
相较于传统启动器,新版带来诸多改进,访问地址:https://github.com/openmultiplayer/launcher/releases
服务器端
新增功能:
- 发布 omp-server x64 版本
- 自动为插件名添加
.so
扩展
功能调整:
- 在
Move(Player)Object
函数中返回estimatedTime
问题修复:
- 修正
GetVehicleLastDriver
参数无效时返回 0 的问题
RC2
点击展开
open.mp 服务器第二候选发布版(RC2)
服务器端
新增函数:
废弃函数:
- GetPlayer3DTextLabelVirtualW
- SetPlayer3DTextLabelDrawDist
- GetPlayer3DTextLabelDrawDist
- SendClientMessagef
- GameTextForPlayerf
- SendPlayerMessageToPlayerf
- SendClientMessageToAllf
- GameTextForAllf
- SendPlayerMessageToAllf
- SendRconCommandf
- AllowAdminTeleport
- GetPlayerPoolSize
- GetVehiclePoolSize
- GetActorPoolSize
- GetServerVarAsString
- GetServerVarAsFloat
- TextDrawColor
- TextDrawBoxColor
- TextDrawBackgroundColor
- TextDrawSetPreviewVehCol
- PlayerTextDrawColor
- PlayerTextDrawBoxColor
- PlayerTextDrawBackgroundColor
- PlayerTextDrawSetPreviewVehCol
- TextDrawGetColor
- TextDrawGetBoxColor
- TextDrawGetBackgroundColor
- TextDrawGetPreviewVehCol
- PlayerTextDrawGetColor
- PlayerTextDrawGetBoxColor
- PlayerTextDrawGetBackgroundCol
- PlayerTextDrawGetPreviewVehCol
- db_num_rows
- db_get_mem_handle
- db_get_result_mem_handle
- SelectObject
- EditObject
- EditPlayerObject
- CancelEdit
- SetObjectsDefaultCameraCol
- SetObjectNoCameraCol
- IsObjectNoCameraCol
- SetPlayerObjectNoCameraCol
- IsPlayerObjectNoCameraCol
- GetPlayerCameraTargetPlayerObj
- GetObjectTarget
- GetPlayerObjectTarget
- GetPlayerDialog
- fmkdir
- dcreate
- GetVehicleTower
- ChangeVehicleColor
问题修复:
- 修复 Linux 旧版插件需要
.so
的问题 - 正确显示附加物体给其他玩家
- 修复加载无效 Pawn 内存导致的崩溃
RC1
点击展开
第一候选发布版(RC1)!我们已结束测试阶段。
服务器端
新增功能:
- 为
AddMenuItem
,Create3DTextLabel
,CreateMenu
,CreatePlayer3DTextLabel
,CreatePlayerTextDraw
,GameTextForAll
,GameTextForPlayer
,PlayerTextDrawSetString
,SendClientMessage
,SendClientMessageToAll
,SendRconCommand
,SetMenuColumnHeader
,SetObjectMaterialText
,SetPlayerObjectMaterialText
,SetPVarString
,SetSVarString
,ShowPlayerDialog
,TextDrawCreate
,TextDrawSetString
,Update3DTextLabelText
,UpdatePlayer3DTextLabelText
函数添加\{Float, _\}:...
格式化支持
问题修复:
- 内存优化
Beta v0.0.11.2331
点击展开
服务器端
新增函数:
- TogglePlayerWidescreen
- IsPlayerWidescreenToggled
- GetSpawnInfo
- GetPlayerSkillLevel
- GetPlayerWeather
- IsPlayerCheckpointActive
- GetPlayerCheckpoint
- IsPlayerRaceCheckpointActive
- GetPlayerRaceCheckpoint
- GetPlayerWorldBounds
- IsPlayerInModShop
- GetPlayerSirenState
- GetPlayerLandingGearState
- GetPlayerHydraReactorAngle
- GetPlayerTrainSpeed
- GetPlayerZAim
- GetPlayerSurfingOffsets
- GetPlayerRotationQuat
- GetPlayerDialogID
- GetPlayerSpectateID
- GetPlayerSpectateType
- GetPlayerRawIp
- SetPlayerGravity
- GetPlayerGravity
- SetPlayerAdmin
- IsPlayerSpawned
- IsPlayerControllable
- IsPlayerCameraTargetEnabled
- TogglePlayerGhostMode
- GetPlayerGhostMode
- GetPlayerBuildingsRemoved
- GetPlayerAttachedObject
- SendClientMessagef
- GameTextForPlayerf
- SendPlayerMessageToPlayerf
- RemovePlayerWeapon
- HidePlayerDialog
- IsPlayerUsingOfficialClient
- AllowPlayerTeleport
- IsPlayerTeleportAllowed
- AllowPlayerWeapons
- ArePlayerWeaponsAllowed
- IsValidTextDraw
- IsTextDrawVisibleForPlayer
- TextDrawGetString
- TextDrawSetPos
- TextDrawGetLetterSize
- TextDrawGetTextSize
- TextDrawGetPos
- TextDrawGetColor
- TextDrawGetBoxColor
- TextDrawGetBackgroundColor
- TextDrawGetShadow
- TextDrawGetOutline
- TextDrawGetFont
- TextDrawIsBox
- TextDrawIsProportional
- TextDrawIsSelectable
- TextDrawGetAlignment
- TextDrawGetPreviewModel
- TextDrawGetPreviewRot
- TextDrawGetPreviewVehCol
- TextDrawSetStringForPlayer
- IsValidPlayerTextDraw
- IsPlayerTextDrawVisible
- PlayerTextDrawGetString
- PlayerTextDrawSetPos
- PlayerTextDrawGetLetterSize
- PlayerTextDrawGetTextSize
- PlayerTextDrawGetPos
- PlayerTextDrawGetColor
- PlayerTextDrawGetBoxColor
- PlayerTextDrawGetBackgroundCol
- PlayerTextDrawGetShadow
- PlayerTextDrawGetOutline
- PlayerTextDrawGetFont
- PlayerTextDrawIsBox
- PlayerTextDrawIsProportional
- PlayerTextDrawIsSelectable
- PlayerTextDrawGetAlignment
- PlayerTextDrawGetPreviewModel
- PlayerTextDrawGetPreviewRot
- PlayerTextDrawGetPreviewVehCol
- IsValidGangZone
- IsPlayerInGangZone
- IsGangZoneVisibleForPlayer
- GangZoneGetColorForPlayer
- GangZoneGetFlashColorForPlayer
- IsGangZoneFlashingForPlayer
- GangZoneGetPos
- UseGangZoneCheck
- CreatePlayerGangZone
- PlayerGangZoneDestroy
- PlayerGangZoneShow
- PlayerGangZoneHide
- PlayerGangZoneFlash
- PlayerGangZoneStopFlash
- IsValidPlayerGangZone
- IsPlayerInPlayerGangZone
- IsPlayerGangZoneVisible
- PlayerGangZoneGetColor
- PlayerGangZoneGetFlashColor
- IsPlayerGangZoneFlashing
- PlayerGangZoneGetPos
- UsePlayerGangZoneCheck
- GetObjectDrawDistance
- GetObjectMoveSpeed
- GetObjectTarget
- GetObjectMovingTargetPos
- GetObjectMovingTargetRot
- GetObjectAttachedData
- GetObjectAttachedOffset
- GetObjectSyncRotation
- IsObjectMaterialSlotUsed
- GetObjectMaterial
- GetObjectMaterialText
- IsObjectNoCameraCol
- GetPlayerObjectDrawDistance
- SetPlayerObjectMoveSpeed
- GetPlayerObjectMoveSpeed
- GetPlayerObjectTarget
- GetPlayerObjectMovingTargetPos
- GetPlayerObjectMovingTargetRot
- GetPlayerObjectAttachedData
- GetPlayerObjectAttachedOffset
- GetPlayerObjectSyncRotation
- IsPlayerObjectMaterialSlotUsed
- GetPlayerObjectMaterial
- GetPlayerObjectMaterialText
- IsPlayerObjectNoCameraCol
- GetPlayerSurfingPlayerObjectID
- GetPlayerCameraTargetPlayerObj
- GetObjectType
- IsValidPickup
- IsPickupStreamedIn
- GetPickupPos
- GetPickupModel
- GetPickupType
- GetPickupVirtualWorld
- SetPickupPos
- SetPickupModel
- SetPickupType
- SetPickupVirtualWorld
- ShowPickupForPlayer
- HidePickupForPlayer
- IsPickupHiddenForPlayer
- IsMenuDisabled
- IsMenuRowDisabled
- GetMenuColumns
- GetMenuItems
- GetMenuPos
- GetMenuColumnWidth
- GetMenuColumnHeader
- GetMenuItem
- IsValid3DTextLabel
- Is3DTextLabelStreamedIn
- Get3DTextLabelText
- Get3DTextLabelColor
- Get3DTextLabelPos
- Set3DTextLabelDrawDistance
- Get3DTextLabelDrawDistance
- Get3DTextLabelLOS
- Set3DTextLabelLOS
- Set3DTextLabelVirtualWorld
- Get3DTextLabelVirtualWorld
- Get3DTextLabelAttachedData
- IsValidPlayer3DTextLabel
- GetPlayer3DTextLabelText
- GetPlayer3DTextLabelColor
- GetPlayer3DTextLabelPos
- SetPlayer3DTextLabelDrawDist
- GetPlayer3DTextLabelDrawDist
- GetPlayer3DTextLabelLOS
- SetPlayer3DTextLabelLOS
- GetPlayer3DTextLabelVirtualW
- GetPlayer3DTextLabelAttached
- GetVehicleSpawnInfo
- SetVehicleSpawnInfo
- GetVehicleColor
- GetVehiclePaintjob
- GetVehicleInterior
- GetVehicleNumberPlate
- SetVehicleRespawnDelay
- GetVehicleRespawnDelay
- GetVehicleTower
- GetVehicleCab
- GetVehicleOccupiedTick
- HasVehicleBeenOccupied
- IsVehicleOccupied
- GetVehicleRespawnTick
- IsVehicleDead
- ToggleVehicleSirenEnabled
- IsVehicleSirenEnabled
- GetVehicleModelCount
- GetVehicleLastDriver
- GetVehicleDriver
- GetVehicleModelsUsed
- GetVehicleSirenState
- GetVehicleLandingGearState
- GetVehicleHydraReactorAngle
- GetVehicleTrainSpeed
- GetVehicleMatrix
- GetActorSkin
- SetActorSkin
- GetActorSpawnInfo
- GetActorAnimation
- ToggleChatTextReplacement
- ChatTextReplacementToggled
- GetAvailableClasses
- GetPlayerClass
- EditPlayerClass
- GetWeaponSlot
- ClearBanList
- IsBanned
- IsValidNickName
- AllowNickNameCharacter
- IsNickNameCharacterAllowed
- AddServerRule
- SetServerRule
- IsValidServerRule
- RemoveServerRule
- SendClientMessageToAllf
- GameTextForAllf
- SendPlayerMessageToAllf
- SendRconCommandf
- GetRunningTimers
- GetVehicles
- GetPlayers
- GetActors
- AllowAdminTeleport
- IsAdminTeleportAllowed
- AllowInteriorWeapons
- AreInteriorWeaponsAllowed
- AreAllAnimationsEnabled
- EnableAllAnimations
- GetWeather
新增回调: