ESX和QBCORE说到底就是函数的转换,例如:
qb中给予玩家金钱使用下面的代码
ESX写法
上面的案例是一个简单示例,所以不难看出,如果我们要进行转换需要把ESX官方的函数转换为QBCORE的函数,所以各位在转换的时候可以根据下面这张表进行函数的转换,通常插件中会涉及到一个文件用于获得玩家金钱扣除金钱以及库存的操作,各位可以去文件里面查看,上述代码中我直接使用的ESX通常在代码的资源清单文件里面
fxmanifest.lua
ESX 和 qb 对应函数
QBCore 特殊数据字段
现在的库存通常是 ox库存所以关于物品之间的转换通常是 ox_inv的物品转换到 qbcore/shared/item.lua
当然这样说很笼统,各位可以在下面写一些基础的插件的链接给我我可以用链接的文件进行演示,太长的不行!
上述代码是我直接去git找的,因为之前的草稿丢了,也算是一个简单的敲门砖
qb中给予玩家金钱使用下面的代码
lua:
-- 使用QBCore提供的函数
local QBCore = exports['qb-core']:GetCoreObject()
-- 获得玩家,source是触发的事务,通常是玩家的ID,各位可以自己创建线程 print打印出来查看
local src = source
-- 通过QB提供的函数获得当前玩家的信息
local player = QBCore.Functions.GetPlayer(src)
-- qb官方写好的金钱给予方式 player.Functions.AddMoney(moneytype, amount, reason)
player.Functions.AddMoney('cash', '100000', '测试')
ESX写法
lua:
-- 使用ESX的共享对象
local src = source
local xPlayer = ESX.GetPlayerFromId(src)
xPlayer.addAccountMoney('bank', 1000)
上面的案例是一个简单示例,所以不难看出,如果我们要进行转换需要把ESX官方的函数转换为QBCORE的函数,所以各位在转换的时候可以根据下面这张表进行函数的转换,通常插件中会涉及到一个文件用于获得玩家金钱扣除金钱以及库存的操作,各位可以去文件里面查看,上述代码中我直接使用的ESX通常在代码的资源清单文件里面
fxmanifest.lua
lua:
shared_scripts({
"@es_extended/imports.lua",
"@es_extended/locale.lua",
"shared/config.lua",
"shared/main.lua",
"locales/*.lua",
})
ESX 和 qb 对应函数
ESX 函数 | QBCore 等效函数 | 备注 |
esxnPlayerDeath | hospital:server:SetDeathStatus | 设置玩家的死亡状态 |
esxlayerLoaded | QBCore:Client:OnPlayerLoaded | 设置变量以确认玩家已准备好 |
esx:showAdvancedNotification | QBCore:Notify | 显示高级通知 |
esx:showHelpNotification | QBCore:Notify | 显示帮助通知 |
esx:showNotification | QBCore:Notify | 显示简单通知 |
ESX.GetPlayerData | QBCore.Functions.GetPlayerData | 获取玩家的相关数据 |
ESX.IsPlayerLoaded | 无 | 检查玩家是否已加载,通常不再需要 |
ESX.SetPlayerData | QBCorelayer:SetPlayerData | 设置玩家数据 |
ESX.TriggerServerCallback | QBCore.Functions.TriggerCallback | 触发服务器端的回调函数 |
ESX.Game.DeleteObject | 无(可用FiveM原生DeleteEntity) | 删除对象 |
ESX.Game.DeleteVehicle | QBCore.Functions.DeleteVehicle | 删除车辆 |
ESX.Game.GetClosestObject | 无(可用FiveM原生GetClosestObjectOfType) | 获取最近的对象 |
ESX.Game.GetClosestPed | QBCore.Functions.GetClosestPed | 获取最近的NPC |
ESX.Game.GetClosestPlayer | QBCore.Functions.GetClosestPlayer | 获取最近的玩家 |
ESX.Game.GetClosestVehicle | QBCore.Functions.GetClosestVehicle | 获取最近的车辆 |
ESX.Game.GetObjects | 无(使用枚举) | 获取所有对象列表 |
ESX.Game.GetPedMugshot | 无(可用FiveM原生RegisterPedheadshot) | 获取NPC头像 |
ESX.Game.GetPeds | 无(使用枚举) | 获取所有NPC列表 |
ESX.Game.GetPlayers | QBCore.Functions.GetPlayers | 获取所有玩家列表 |
ESX.Game.GetPlayersInArea | 无(使用枚举) | 获取特定区域内的玩家列表 |
ESX.Game.GetVehicleInDirection | 无(使用射线) | 获取指定方向上的车辆 |
ESX.Game.GetVehicles | QBCore.Functions.GetVehicles | 获取所有车辆列表 |
ESX.Game.GetVehiclesInArea | 无(使用枚举) | 获取特定区域内的车辆列表 |
ESX.Game.IsSpawnPointClear | 无(使用getvehiclesinarea) | 检查出生点是否清空 |
ESX.Game.SetVehicleProperties | QBCore.Functions.SetVehicleProperties | 设置车辆属性 |
ESX.Game.SpawnLocalObject | 无(不推荐使用) | 生成本地对象 |
ESX.Game.SpawnLocalVehicle | 无(不推荐使用) | 生成本地车辆 |
ESX.Game.SpawnObject | 无(可用FiveM原生CreateObject) | 生成对象 |
ESX.Game.SpawnVehicle | QBCore.Functions.SpawnVehicle | 生成车辆 |
ESX.Game.Teleport | 无(使用SetEntityCoords和SetEntityHeading) | 传送玩家位置 |
ESX.Game.Utils.DrawText3D | QBCore.Functions.DrawText3D | 显示3D文字 |
ESX = {} | local QBCore = exports['qb-core']:GetCoreObject() | 初始化QBCore对象(直接访问QBCore核心对象) |
esx:getSharedObject | QBCore:GetObject | 获取QBCore核心对象 |
esx:setJob | QBCore:Client:OnJobUpdate | 更新玩家职业信息 |
esxnPlayerSpawn | QBCore:Client:OnPlayerLoaded | 玩家重生时触发 |
esx:addInventoryItem | QBCore:Server:AddItem | 添加物品到玩家的库存 |
esx:removeInventoryItem | QBCore:Server:RemoveItem | 从玩家的库存中移除物品 |
esx:useItem | QBCore:Server:UseItem | 使用玩家的指定物品 |
ESX.GetItemLabel | 无(直接返回物品标签) | 获取物品标签 |
ESX.GetPlayerFromId | QBCore.Functions.GetPlayer | 通过ID获取玩家对象 |
ESX.GetPlayerFromIdentifier | QBCore.Functions.GetPlayerByCitizenId | 通过Citizen ID获取玩家对象 |
ESX.GetPlayers | QBCore.Functions.GetPlayers | 获取所有玩家对象 |
ESX.RegisterServerCallback | QBCore.Functions.CreateCallback | 注册服务器端回调函数 |
ESX.RegisterUsableItem | QBCore.Functions.CreateUseableItem | 注册可用物品 |
ESX.SavePlayer | QBCore.Player.Save | 保存玩家数据 |
ESX.SavePlayers | 无 | 保存所有玩家数据 |
ESX.Trace | QBCore.Debug | 调试信息输出 |
ESX.UseItem | QBCore.Functions.UseItem | 使用指定物品 |
xPlayer.removeWeaponComponent | xPlayer.Functions.RemoveItem | 移除武器组件 |
xPlayer.setAccountMoney | xPlayer.Functions.SetMoney(账户) | 设置账户金额 |
xPlayer.setCoords | 无 | 设置玩家坐标(可直接使用FiveM原生方法) |
xPlayer.setInventoryItem | xPlayer.Functions.AddItem(物品名称) | 设置库存中的物品 |
xPlayer.setJob | xPlayer.Functions.SetJob | 设置玩家职业 |
xPlayer.setMaxWeight | 无(在QBCore配置中设置) | 设置最大承重限制 |
xPlayer.setMoney | xPlayer.Functions.SetMoney | 设置玩家现金余额 |
xPlayer.setName | 无 | 设置玩家名称 |
xPlayer.setWeaponTint | 无(由qb-weapons处理) | 设置武器颜色 |
xPlayer.showHelpNotification | TriggerClientEvent('QBCore:Notify') | 显示帮助通知 |
xPlayer.showNotification | TriggerClientEvent('QBCore:Notify') | 显示简单通知 |
xPlayer.triggerEvent | 无 | 触发玩家事件 |
xPlayer.updateCoords | 无 | 更新玩家坐标 |
QBCore 特殊数据字段
字段 | 功能描述 |
PlayerData.citizenid | 返回玩家的Citizen ID |
PlayerData.steam | 返回玩家的Steam ID |
PlayerData.license | 返回玩家的Rockstar ID |
PlayerData.name | 返回玩家的名字 |
PlayerData.cid | 返回玩家的游戏内ID |
PlayerData.money['cash'] | 返回玩家的现金余额 |
PlayerData.money['bank'] | 返回玩家的银行余额 |
PlayerData.metadata["hunger"] | 返回玩家的饥饿度 |
PlayerData.metadata["thirst"] | 返回玩家的口渴度 |
PlayerData.metadata["isdead"] | 返回玩家的死亡状态 |
PlayerData.metadata["injail"] | 返回玩家的监禁状态 |
PlayerData.job | 返回玩家的职业信息 |
PlayerData.gang | 返回玩家的帮派信息 |
PlayerData.position | 返回玩家的当前位置 |
现在的库存通常是 ox库存所以关于物品之间的转换通常是 ox_inv的物品转换到 qbcore/shared/item.lua
当然这样说很笼统,各位可以在下面写一些基础的插件的链接给我我可以用链接的文件进行演示,太长的不行!
上述代码是我直接去git找的,因为之前的草稿丢了,也算是一个简单的敲门砖