Files
Docs/docs/zh/API documentation/Client-Side.md
T
2026-05-14 09:30:57 +00:00

28 KiB
Raw Blame History

目录

MPVehicleGE

MPConfig

MPCoreNetwork

MPGameNetwork

MPHelpers


车辆函数

getGameVehicleID(serverVehicleID)

将 serverVehicleID 解析为 gameVehicleID

参数:

  • serverVehicleID (字符串)- 格式:“X-Y”,其中 X 为玩家 ID,Y 为车辆 ID

返回:

  • (数字)- 游戏内部车辆 ID
  • (编号) -1 - 如果车辆未知

用法:

local gameID = extensions.MPVehicleGE.getGameVehicleID("0-0")

getServerVehicleID(gameVehicleID)

将 gameVehicleID 解析为 serverVehicleID

参数:

  • gameVehicleID (数字)- 游戏内部车辆 ID

返回:

  • (字符串)- 服务器车辆 ID(例如,“0-0”)
  • nil- 如果 gameVehicleID 未知

用法:

local serverID = extensions.MPVehicleGE.getServerVehicleID(11171)

getVehicleByServerID(serverVehicleID)

返回此车辆的完整车辆表

参数:

  • serverVehicleID (字符串)- 格式:“X-Y”

返回:

  • (表)- 车辆信息(名称、游戏车辆 ID、jbeam、所有者 ID、所有者名称、是否本地、是否已生成等)
  • (nil)- 如果服务器车辆 ID 无效

用法:

local vehicle = extensions.MPVehicleGE.getVehicleByServerID("0-0")
if vehicle then
    print("Owner: " .. vehicle.ownerName)
end

getVehicleByGameID(gameVehicleID)

返回此车辆的完整车辆表

参数:

  • gameVehicleID (数字)- 游戏内部车辆 ID

返回:

  • (表)- 车辆信息
  • (nil) - 如果 gameVehicleID 无效

用法:

local vehicle = extensions.MPVehicleGE.getVehicleByGameID(11171)

isOwn(gameVehicleID)

检查给定车辆是否属于此客户端

参数:

  • gameVehicleID (数字)- 游戏内部车辆 ID

返回:

  • (boolean)- 如果车辆属于此客户端,则返回 true

用法:

if extensions.MPVehicleGE.isOwn(11171) then
    print("This is my vehicle")
end

getOwnMap()

返回一个包含此客户端拥有的所有车辆的表。

参数:

返回:

  • (表)- 已拥有车辆地图{[gameVehicleID] = vehicles_subtable}

用法:

local myVehicles = extensions.MPVehicleGE.getOwnMap()

getVehicleMap()

返回一个包含所有已知多人游戏载具的表。

参数:

返回:

  • (表)- 所有车辆的地图{[serverVehicleID] = gameVehicleID}

用法:

local allVehicles = extensions.MPVehicleGE.getVehicleMap()

getDistanceMap()

返回每个多人游戏载具到此客户端视角的距离

参数:

返回:

  • (表)- 距离地图{[gameVehicleID] = distanceInMeters}

用法:

local distances = extensions.MPVehicleGE.getDistanceMap()

getNicknameMap()

返回所有多人游戏车辆 ID 及其所有者名称

参数:

返回:

  • (表)- 昵称映射表{[gameVehicleID] = ownerName}

用法:

local nicknameMap = extensions.MPVehicleGE.getNicknameMap()

getVehicles()

返回完整的车辆表

参数:

返回:

  • (表)- 所有车辆{[serverVehicleID] = vehicles_subtable}

用法:

local vehicles = extensions.MPVehicleGE.getVehicles()
for serverID, vehicle in pairs(vehicles) do
    print("Vehicle: " .. vehicle.jbeam)
end

玩家函数

getPlayerByName(name)

返回该玩家的信息表和 ID

参数:

  • name (字符串)- 玩家名称

返回:

  • (表)- 玩家信息(姓名、玩家ID、角色、载具等)
  • (数字)- 玩家 ID
  • nil- 如果未找到玩家

用法:

local player, playerID = extensions.MPVehicleGE.getPlayerByName("John")
if player then
    print("Player ID: " .. playerID)
end

getPlayers()

返回完整的玩家表

参数:

返回:

  • (表)- 所有玩家{[playerID] = players_subtable}

用法:

local players = extensions.MPVehicleGE.getPlayers()
for playerID, player in pairs(players) do
    print("Player: " .. player.name)
end

昵称标签函数

setPlayerNickPrefix(targetName, tagSource, text)

给玩家的名字标签添加前缀(显示在名字前面)

参数:

  • targetName (字符串)- 玩家名称
  • tagSource (字符串)- 此前缀的唯一标识符
  • text (字符串)- 显示在名称之前的文本

用法:

extensions.MPVehicleGE.setPlayerNickPrefix("John", "RANK", "1st.")
-- Result: "1st. John"

setPlayerNickSuffix(targetName, tagSource, text)

给玩家的名字标签添加后缀(显示在名字后面)

参数:

  • targetName (字符串)- 玩家名称
  • tagSource (字符串)- 此后缀的唯一标识符
  • text (字符串)- 名称后显示的文本

用法:

extensions.MPVehicleGE.setPlayerNickSuffix("John", "STATUS", "[AFK]")
-- Result: "John [AFK]"

hideNicknames(hide)

开启或关闭 BeamMP 的姓名标签绘制功能

参数:

  • hide boolean - True 表示隐藏姓名标签,False 表示显示姓名标签

用法:

extensions.MPVehicleGE.hideNicknames(true)  -- Hide
extensions.MPVehicleGE.hideNicknames(false) -- Show

toggleNicknames()

切换显示姓名标签

参数:

用法:

extensions.MPVehicleGE.toggleNicknames()

角色函数

setPlayerRole(playerID, tag, shorttag, red, green, blue)

为玩家设置自定义角色

参数:

  • playerID (数字)- 玩家的ID
  • tag (字符串)- 角色标签(例如,“VIP”)
  • shorttag (字符串)- 简短版本(例如,“V”)
  • red (数字)- 红色通道(0-255
  • green (数字)- 绿色通道(0-255
  • blue (数字)- 蓝色通道(0-255

返回:

  • (布尔值,字符串)- 如果玩家不存在false, "player not found"
  • (布尔值,字符串)- 如果参数无效,则false, error
  • (无)——关于成功无信息

用法:

local success, error = extensions.MPVehicleGE.setPlayerRole(0, "VIP", "V", 255, 215, 0)
if success == false then
    print("Error: " .. error)
end

clearPlayerRole(playerID)

清除玩家的自定义角色

参数:

  • playerID (数字)- 玩家的ID

返回:

  • (布尔值)- 始终返回false (实现怪癖 - 用于检查玩家是否存在)

用法:

extensions.MPVehicleGE.clearPlayerRole(0)

setVehicleRole(playerIDVehicleID, tag, shorttag, red, green, blue)

为特定车辆设置自定义角色

参数:

  • playerIDVehicleID (字符串)- 车辆 ID(格式:“0-0”)
  • tag (字符串)- 角色标签
  • shorttag (字符串)- 短版本
  • red (数字)- 红色(0-255
  • green (数字)- 绿色(0-255
  • blue (数字)- 蓝色(0-255

返回:

  • (布尔值,字符串)- 如果车辆不存在false, "vehicle not found"
  • (布尔值,字符串)- 如果参数无效,则false, error
  • (无)——关于成功无信息

用法:

local success, error = extensions.MPVehicleGE.setVehicleRole("0-0", "Police", "POL", 0, 0, 255)
if success == false then
    print("Error: " .. error)
end

clearVehicleRole(playerIDVehicleID)

清除车辆的自定义角色

参数:

  • playerIDVehicleID (字符串)- 车辆 ID(格式:“0-0”)

返回:

  • (布尔值)- 始终返回false (实现特性 - 用于检查车辆是否存在)

用法:

extensions.MPVehicleGE.clearVehicleRole("0-0")

导航函数

groundmarkerToPlayer(targetName)

设置一条通往目标玩家位置的地面标记路线(静态)

参数:

  • targetName (字符串)- 玩家名称,如果为 nil 则清除

用法:

extensions.MPVehicleGE.groundmarkerToPlayer("John")  -- Set
extensions.MPVehicleGE.groundmarkerToPlayer(nil)     -- Clear

groundmarkerFollowPlayer(targetName, dontfollow)

设置跟随目标玩家的地面标记路线

参数:

  • targetName (字符串)- 玩家名称,如果为 nil 则停止
  • dontfollow (布尔值)- 如果为true,则创建静态标记

用法:

extensions.MPVehicleGE.groundmarkerFollowPlayer("John")       -- Follow
extensions.MPVehicleGE.groundmarkerFollowPlayer("John", true) -- Static
extensions.MPVehicleGE.groundmarkerFollowPlayer(nil)          -- Stop

queryRoadNodeToPosition(targetPosition, owner)

查找距离目标位置最近的道路节点

参数:

  • targetPosition (vec3 或表)- 目标位置,包含 x、y、z 坐标
  • owner (字符串)- 可选标识符(默认值:“target”)

返回:

  • (布尔值)- 成功状态
  • (数字)- 节点 ID(如果成功)

用法:

local pos = vec3(100, 200, 50)
local success, nodeID = extensions.MPVehicleGE.queryRoadNodeToPosition(pos)

对象方法

玩家对象方法

player:setNickPrefix(tagSource, text)

设置该玩家名称标签的前缀

参数:

  • tagSource (字符串)- 唯一标识符
  • text (字符串)- 要显示的文本(或 nil 表示不显示)

用法:

local player = extensions.MPVehicleGE.getPlayerByName("John")
if player then
    player:setNickPrefix("STATUS", "[AFK]")
end

player:setNickSuffix(tagSource, text)

为该玩家的姓名标签设置后缀

参数:

  • tagSource (字符串)- 唯一标识符
  • text (字符串)- 要显示的文本(或 nil 表示不显示)

用法:

local player = extensions.MPVehicleGE.getPlayerByName("John")
if player then
    player:setNickSuffix("MISSION", "[In Mission]")
end

player:setCustomRole(role)

为该玩家设置自定义角色

参数:

  • role (表)- 角色表: {backcolor = {r, g, b}, tag = string, shorttag = string}

用法:

local player = extensions.MPVehicleGE.getPlayerByName("John")
if player then
    player:setCustomRole({
        backcolor = {r = 255, g = 0, b = 0},
        tag = " [VIP]",
        shorttag = " [V]"
    })
end

player:clearCustomRole()

清除该玩家的自定义角色

用法:

local player = extensions.MPVehicleGE.getPlayerByName("John")
if player then
    player:clearCustomRole()
end

车辆对象方法

vehicle:getOwner()

返回此车辆的所有者

返回:

  • (表)- 玩家对象
  • (数字)- 玩家 ID

用法:

local vehicle = extensions.MPVehicleGE.getVehicleByServerID("0-0")
if vehicle then
    local owner, ownerID = vehicle:getOwner()
    print("Owner: " .. owner.name)
end

vehicle:setCustomRole(role)

为这辆车设置自定义角色

参数:

  • role (表)- 角色表: {backcolor = {r, g, b}, tag = string, shorttag = string}

用法:

local vehicle = extensions.MPVehicleGE.getVehicleByServerID("0-0")
if vehicle then
    vehicle:setCustomRole({
        backcolor = {r = 0, g = 0, b = 255},
        tag = " [Police]",
        shorttag = " [POL]"
    })
end

vehicle:clearCustomRole()

清除此车辆的自定义角色

用法:

local vehicle = extensions.MPVehicleGE.getVehicleByServerID("0-0")
if vehicle then
    vehicle:clearCustomRole()
end

vehicle:setDisplayName(displayName)

为这辆车设置自定义显示名称

参数:

  • displayName (字符串)- 要显示的自定义名称

用法:

local vehicle = extensions.MPVehicleGE.getVehicleByServerID("0-0")
if vehicle then
    vehicle:setDisplayName("Patrol Car #1")
end

事件钩子

BeamMP 提供事件钩子,您可以重写这些钩子以在特定事件发生时执行自定义代码。请勿直接调用这些函数,而应在保留原始功能的前提下对其进行重写。

钩子模式

重写函数时,务必保留原函数:

-- Save the original function
local originalCallback = MPVehicleGE.onVehicleSpawned

-- Override with your custom logic
MPVehicleGE.onVehicleSpawned = function(gameVehicleID)
    -- Call the original first
    originalCallback(gameVehicleID)
    
    -- Your custom code here
    print("Vehicle spawned: " .. gameVehicleID)
end

可用的事件钩子

onUpdate(dt)

连接到多人游戏时,每一帧都会被调用

参数:

  • dt (数值)- 自上一帧以来的时间间隔(秒)。

用法:

local originalOnUpdate = MPVehicleGE.onUpdate
MPVehicleGE.onUpdate = function(dt)
    originalOnUpdate(dt)
    -- Your frame-by-frame logic here
end

onPreRender(dt)

在渲染每一帧之前调用

参数:

  • dt (数值)- 时间差(秒)

**注意:**此功能在内部处理名称标签渲染、距离计算和地面标记。

用法:

local originalOnPreRender = MPVehicleGE.onPreRender
MPVehicleGE.onPreRender = function(dt)
    originalOnPreRender(dt)
    -- Your pre-render logic here
end

onVehicleSpawned(gameVehicleID)

当车辆生成时调用(包括本地和远程车辆)

参数:

  • gameVehicleID (数字)- 游戏内部车辆 ID

用法:

local originalOnVehicleSpawned = MPVehicleGE.onVehicleSpawned
MPVehicleGE.onVehicleSpawned = function(gameVehicleID)
    originalOnVehicleSpawned(gameVehicleID)
    
    local vehicle = extensions.MPVehicleGE.getVehicleByGameID(gameVehicleID)
    if vehicle then
        print(vehicle.ownerName .. " spawned a " .. vehicle.jbeam)
    end
end

onVehicleDestroyed(gameVehicleID)

车辆被销毁/移除时调用

参数:

  • gameVehicleID (数字)- 游戏内部车辆 ID

用法:

local originalOnVehicleDestroyed = MPVehicleGE.onVehicleDestroyed
MPVehicleGE.onVehicleDestroyed = function(gameVehicleID)
    local vehicle = extensions.MPVehicleGE.getVehicleByGameID(gameVehicleID)
    if vehicle then
        print("Vehicle " .. vehicle.jbeam .. " was destroyed")
    end
    
    originalOnVehicleDestroyed(gameVehicleID)
end

onVehicleSwitched(oldGameVehicleID, newGameVehicleID)

当玩家切换车辆时调用

参数:

  • oldGameVehicleID (数字)- 先前的车辆 ID(或 -1)
  • newGameVehicleID (数字)- 新车辆 ID(或 -1

用法:

local originalOnVehicleSwitched = MPVehicleGE.onVehicleSwitched
MPVehicleGE.onVehicleSwitched = function(oldID, newID)
    originalOnVehicleSwitched(oldID, newID)
    
    print("Switched from vehicle " .. oldID .. " to " .. newID)
end

onVehicleResetted(gameVehicleID)

车辆重置时调用(仅限本地车辆)

参数:

  • gameVehicleID (数字)- 游戏内部车辆 ID

用法:

local originalOnVehicleResetted = MPVehicleGE.onVehicleResetted
MPVehicleGE.onVehicleResetted = function(gameVehicleID)
    originalOnVehicleResetted(gameVehicleID)
    
    print("Vehicle " .. gameVehicleID .. " was reset")
end

onVehicleColorChanged(gameVehicleID, index, paint)

当车辆的涂装颜色发生变化时调用

参数:

  • gameVehicleID (数字)- 游戏内部车辆 ID
  • index (数字)- 涂装槽索引(0、1 或 2)
  • paint (表) - 包含颜色信息的油漆数据

用法:

local originalOnVehicleColorChanged = MPVehicleGE.onVehicleColorChanged
MPVehicleGE.onVehicleColorChanged = function(gameVehicleID, index, paint)
    originalOnVehicleColorChanged(gameVehicleID, index, paint)
    
    print("Vehicle " .. gameVehicleID .. " changed paint slot " .. index)
end

onVehicleReady(gameVehicleID)

当车辆的扩展设备加载完毕且车辆完全准备就绪时,就会发出此通知。

参数:

  • gameVehicleID (数字)- 游戏内部车辆 ID

**注意:**如果需要加载车辆扩展,请使用此方法代替onVehicleSpawned

用法:

local originalOnVehicleReady = MPVehicleGE.onVehicleReady
MPVehicleGE.onVehicleReady = function(gameVehicleID)
    originalOnVehicleReady(gameVehicleID)
    
    -- Safe to interact with vehicle extensions here
    local veh = be:getObjectByID(gameVehicleID)
    if veh then
        veh:queueLuaCommand("print('Vehicle is ready!')")
    end
end

onUIInitialised()

在 BeamMP 用户界面初始化时调用

用法:

local originalOnUIInitialised = MPVehicleGE.onUIInitialised
MPVehicleGE.onUIInitialised = function()
    originalOnUIInitialised()
    
    print("BeamMP UI initialized")
end

onSettingsChanged()

当 BeamMP 设置更改时调用

用法:

local originalOnSettingsChanged = MPVehicleGE.onSettingsChanged
MPVehicleGE.onSettingsChanged = function()
    originalOnSettingsChanged()
    
    print("BeamMP settings changed")
end

MPConfig 函数

MPConfig.getPlayerServerID()

返回本地玩家的服务器分配 ID

返回:

  • (数字)- 玩家的服务器 ID(如果未设置则为 -1)

用法:

local myID = extensions.MPConfig.getPlayerServerID()

MPConfig.getNickname()

返回本地玩家的昵称

返回:

  • (字符串)- 玩家当前的昵称

用法:

local name = extensions.MPConfig.getNickname()

MPConfig.getConfig()

返回 BeamMP 配置设置

返回:

  • (表)- 包含所有 BeamMP 设置的配置表
  • nil- 如果配置文件不存在

用法:

local config = extensions.MPConfig.getConfig()

MPConfig.setConfig(settingName, settingVal)

设置特定配置值

参数:

  • settingName (字符串)- 设置的名称
  • settingVal (任意值) - 要设置的值

用法:

extensions.MPConfig.setConfig("myCustomSetting", true)

MPCoreNetwork 函数

MPCoreNetwork.getCurrentServer()

返回有关当前连接服务器的信息

返回:

  • (表)- 服务器数据(IP 地址、端口、名称、映射)
  • nil- 如果未连接

用法:

local server = extensions.MPCoreNetwork.getCurrentServer()
if server then
    print("Server: " .. server.name)
    print("IP: " .. server.ip .. ":" .. server.port)
end

事件系统功能

TriggerServerEvent(name, data)

向服务器发送事件

参数:

  • name (字符串)- 事件名称
  • data (字符串)- 要发送的数据

**注意:**这是一个全局函数。服务器必须已注册此事件的处理程序。

用法:

TriggerServerEvent("playerReady", "ready")

-- With JSON
local data = {position = {x=100, y=200, z=50}}
TriggerServerEvent("updatePlayer", jsonEncode(data))

TriggerClientEvent(name, data)

触发本地客户端事件

参数:

  • name (字符串)- 事件名称
  • data (字符串)- 要发送的数据

**注意:**全局函数。在本地触发,无需发送到服务器。

用法:

TriggerClientEvent("localUpdate", "data")

AddEventHandler(event_name, func, name)

注册一个用于处理特定事件的函数

参数:

  • event_name (字符串)- 要处理的事件的名称
  • func (函数)- 处理函数(接收事件数据)
  • name (字符串)- 可选的内部名称

**注意:**全局函数。

用法:

AddEventHandler("playerDamage", function(data)
    print("Damage: " .. data)
end)

-- With JSON
AddEventHandler("vehicleSpawned", function(data)
    local vehData = jsonDecode(data)
    print("Spawned: " .. vehData.model)
end)

RemoveEventHandler(event_name, name)

移除事件处理程序

参数:

  • event_name (字符串)- 事件名称
  • name (字符串)- 可选的内部名称

**注意:**全局函数。

用法:

RemoveEventHandler("playerDamage")

按键功能

onKeyPressed(keyname, func)

注册一个按键按下时要调用的函数

参数:

  • keyname (字符串)- 按键的名称(例如,“NUMPAD1”、“F1”)
  • func (函数)- 要调用的函数(接收布尔值)

**注意:**全局函数。

用法:

onKeyPressed("NUMPAD1", function(state)
    print("NUMPAD1 pressed!")
end)

onKeyReleased(keyname, func)

注册一个在按键释放时要调用的函数

参数:

  • keyname (字符串)- 键的名称
  • func (函数)- 要调用的函数(接收布尔值)

**注意:**全局函数。

用法:

onKeyReleased("NUMPAD1", function(state)
    print("NUMPAD1 released!")
end)

addKeyEventListener(keyname, func, type)

注册一个具有可自定义触发类型的按键事件监听器

参数:

  • keyname (字符串)- 键的名称
  • func (函数)- 要调用的函数
  • type (字符串)- 事件类型:“向下”、“向上”或“两者”(默认值:“两者”)

**注意:**全局函数。

用法:

addKeyEventListener("F1", function(isPressed)
    if isPressed then
        print("F1 pressed")
    else
        print("F1 released")
    end
end, "both")

getKeyState(keyname)

返回键的当前状态

参数:

  • keyname (字符串)- 按键名称

返回:

  • (布尔值)- 按下时为true,否则为false

**注意:**全局函数。仅适用于通过 addKeyEventListener 注册的键。

用法:

local isPressed = getKeyState("NUMPAD1")
if isPressed then
    print("NUMPAD1 is held down")
end

UI 函数

MPGameNetwork.spawnUiDialog(dialogInfo)

创建自定义交互式对话框

参数:

  • dialogInfo (表)- 对话框配置:
    • title (字符串)- 对话框标题(可选)
    • body (字符串)- 对话框消息(可选)
    • buttons (表) - 按钮配置(可选)
    • class (字符串)- “experimental” 用于危险警示线(可选)
    • interactionID (字符串)- 交互标识符(可选)
    • reportToServer (布尔值)- 发送到服务器(可选,默认值:false)
    • reportToExtensions (布尔值)- 触发本地事件(可选,默认值:false)

用法:

-- Simple dialog
extensions.MPGameNetwork.spawnUiDialog({
    title = "Welcome",
    body = "Welcome to the server!"
})

-- Choice dialog
extensions.MPGameNetwork.spawnUiDialog({
    title = "Choose Team",
    body = "Which team?",
    buttons = {
        {label = "Red", key = "joinRed"},
        {label = "Blue", key = "joinBlue"}
    },
    interactionID = "teamSelection",
    reportToServer = true
})

MPGameNetwork 回调

MPGameNetwork.onUpdate(dt)

连接到多人游戏时,每一帧都会被调用

参数:

  • dt (数值)- 时间差(秒)

用法:

local originalOnUpdate = MPGameNetwork.onUpdate
MPGameNetwork.onUpdate = function(dt)
    originalOnUpdate(dt)
    -- Your code here
end

MPGameNetwork.onVehicleReady(gameVehicleID)

当车辆准备就绪且扩展设备已加载完毕时,会发出呼叫。

参数:

  • gameVehicleID (数字)- 游戏内部车辆 ID

用法:

local originalOnVehicleReady = MPGameNetwork.onVehicleReady
MPGameNetwork.onVehicleReady = function(gameVehicleID)
    originalOnVehicleReady(gameVehicleID)
    -- Your code here
end

编码函数

MPHelpers.b64encode(string)

将字符串编码为 Base64RFC 2045

参数:

  • string (字符串)- 要编码的字符串

返回:

  • (字符串)- Base64 编码的字符串

用法:

local encoded = extensions.MPHelpers.b64encode("Hello World")

-- Encoding JSON
local data = {name = "Player", score = 100}
local encoded = extensions.MPHelpers.b64encode(jsonEncode(data))
TriggerServerEvent("sendData", encoded)

MPHelpers.b64decode(string)

解码 Base64 字符串(RFC 2045

参数:

  • string string- Base64 编码的字符串

返回:

  • (字符串)- 解码后的字符串

用法:

local decoded = extensions.MPHelpers.b64decode("SGVsbG8gV29ybGQ=")

-- Decoding JSON
AddEventHandler("receiveData", function(data)
    local decoded = extensions.MPHelpers.b64decode(data)
    local jsonData = jsonDecode(decoded)
end)

颜色函数

MPHelpers.hex2rgb(hex)

将十六进制颜色代码转换为 RGB 值

参数:

  • hex (字符串)- 十六进制颜色代码(例如,“#FF5733”或“#F57”)

返回:

  • (表)- RGB 值{r, g, b}范围为 0-1
  • (表)- 如果无效则为{0, 0, 0}

**注意:**支持 3 位和 6 位十六进制代码。

用法:

local rgb = extensions.MPHelpers.hex2rgb("#FF5733")
print(rgb[1], rgb[2], rgb[3]) -- 1.0, 0.341, 0.2

-- Short format
local rgb = extensions.MPHelpers.hex2rgb("#F57")

字符串函数

MPHelpers.splitStringToTable(string, delimiter, convert_into)

按分隔符拆分字符串,并可选择转换值

参数:

  • string (字符串)- 要拆分的字符串
  • delimiter (字符串) - 用于分割的分隔符
  • convert_into (number) - 转换类型(可选):
    • nil0 - 保留为字符串(默认值)
    • 1 - 转换为数字
    • 2 - 转换为布尔值

返回:

  • (表)- 分割值的数组

用法:

-- Strings
local parts = extensions.MPHelpers.splitStringToTable("Hello,World", ",")
-- {"Hello", "World"}

-- Numbers
local nums = extensions.MPHelpers.splitStringToTable("10,20,30", ",", 1)
-- {10, 20, 30}

-- Parse coordinates
local coords = extensions.MPHelpers.splitStringToTable("100,200,50", ",", 1)
local x, y, z = coords[1], coords[2], coords[3]

表函数

MPHelpers.tableDiff(old, new)

比较两个表并返回它们的差异

参数:

  • old表 - 要比较的第一个表
  • new (表)——第二个用于比较的表

返回:

  • (表) diff - 所有不同的键
  • (表) o - 与旧值不同的值
  • (表) n - 与新值不同的数值

用法:

local oldConfig = {speed = 100, damage = 50, armor = 30}
local newConfig = {speed = 120, damage = 50, armor = 40}

local diff, oldVals, newVals = extensions.MPHelpers.tableDiff(oldConfig, newConfig)
-- diff = {speed = 120, armor = 40}

for key, value in pairs(diff) do
    print(key .. " changed from " .. oldVals[key] .. " to " .. newVals[key])
end

调试函数

MPHelpers.simpletraces(level)

返回格式化的调用者信息字符串。

参数:

  • level (数字)- 堆栈层级(可选,默认值:2)

返回:

  • (字符串)- 格式化字符串: "source:line, namewhat name"
  • (字符串)- 如果信息不可用,则为"unknown"

用法:

local function myFunction()
    local caller = extensions.MPHelpers.simpletraces()
    print("Called from: " .. caller)
end

MPHelpers.simpletrace(level)

将调用者信息记录到控制台

参数:

  • level (数字)- 堆栈层级(可选,默认值:1)

**注意:**将调用位置记录到控制台。

用法:

local function myFunction()
    extensions.MPHelpers.simpletrace()
    -- Logs: "Code was called from: lua/ge/extensions/mymod.lua:42"
end

最后更新日期:2026年1月1日