关于QBCore,为什么称之为QB框架,因为这个框架下面有很多的方法和函数可以直接使用,举个简单的例子,在Yann大佬的论坛有一条是关于创建一个命令,命令是返回一个值
如果用QB框架的方法来写是这样的
我们文件结构是这样的
简单来说也就是一个文件夹,文件夹的名字无所谓,让自己能看懂即可
首先资源文件一定要有的,也就是 fxmanifest.lua
现在我们编辑client.lua也就是我们的客户端函数
上述是通过fivem给的函数触发命令,如果想进阶使用qbcore提供的command命令则需要使用server文件,因为QBcommand的命令通常在服务端触发,所以我们需要修改我们的资源清单
我们在资源清单里添加了一个 server.lua 的文件,但是我们实际上没有这个文件我们可以通过VSCode创建这个文件,也可以通过记事本创建,只需要将文件后缀改为 .lua即可生效
现在我们进入 server.lua 编写代码
-- 引用QBCore
进阶练习,上述内容如果测试无误后我们可以通过QBCore给的 官方文档 来输出更多的消息
我们直接复制代码,并修改他的命令为 Name ,用这个命令来输出玩家在服务器注册的姓名,
好了今天的课程到这,下课!关机!睡觉!
如果用QB框架的方法来写是这样的
我们文件结构是这样的
简单来说也就是一个文件夹,文件夹的名字无所谓,让自己能看懂即可
首先资源文件一定要有的,也就是 fxmanifest.lua
lua:
fx_version 'cerulean'
games { 'gta5' }
client_script "client.lua"
现在我们编辑client.lua也就是我们的客户端函数
lua:
-- 首先我们引用QB核心,以方便我们使用它的方法
local QBCore = exports['qb-core']:GetCoreObject()
-- 定义一个函数,这个函数用于处理玩家输入的消息
-- 如果你不懂 function是什么建议去Bilibili搜索Lua的教程,只要有点编程基础马上就懂了
function msg(text)
-- 函数定义好了,text是一个形参,代表了我们要处理的内容
QBCore.Functions.Notify("封装的函数,您输入的内容为:"..text)
end
RegisterCommand("help", function(source, args) --注册一个命令, 第一个值是命令字符串,第二个值是函数,代表了输入该命令会执行那些内容
-- source 是一个参数,用于表示命令的来源。通常,在注册一个命令时,你可能想知道这个命令是由哪个实体触发的,例如是由玩家输入的还是由某个系统触发的。
-- source 参数在这里用来表示这个来源,以便你可以在命令函数中根据不同的来源采取不同的行动。
-- 在这段代码中,source 参数可能是用来表示命令的来源,比如是由玩家输入的还是由游戏系统触发的。
QBCore.Functions.Notify("您输入的内容为:"..source)
-- 函数中args是玩家输入的内容
-- 将玩家输入的值传入我们封装好的函数里面
msg(args[1])
-- 直接通过QBCore触发
QBCore.Functions.Notify("直接通过QBCore触发,您输入的内容为:"..args[1])
end, false)
上述是通过fivem给的函数触发命令,如果想进阶使用qbcore提供的command命令则需要使用server文件,因为QBcommand的命令通常在服务端触发,所以我们需要修改我们的资源清单
lua:
fx_version 'cerulean'
games { 'gta5' }
client_script "client.lua"
-- 指定当前文件夹下面的server.lua为服务端的代码部分
server_script "server.lua"
我们在资源清单里添加了一个 server.lua 的文件,但是我们实际上没有这个文件我们可以通过VSCode创建这个文件,也可以通过记事本创建,只需要将文件后缀改为 .lua即可生效
现在我们进入 server.lua 编写代码
-- 引用QBCore
lua:
local QBCore = exports['qb-core']:GetCoreObject()
-- 注册一个名为'QBchat'的命令,提供QBCore的命令方式
QBCore.Commands.Add('QBchat', "QBCore提供的命令方式",
-- 定义命令参数的格式,这里是一个消息参数
{
{ name = "QBCore注册命令", help = "输入你想输入的内容" }
},
-- 命令是否只能由玩家触发(false表示不是)
false,
-- 命令的处理函数,接收来源和参数
function(source, args)
-- 因为消息显示消息是一个客户端的命令,因此我们需要触发客户端的方法
TriggerClientEvent('QBCore:Notify', source, "恭喜你通过QBCommand触发命令QBchat,您输入的内容为:"..args[1])
end,
-- 命令的类型(这里标记为'user'表示是由玩家触发的命令)
'user')
进阶练习,上述内容如果测试无误后我们可以通过QBCore给的 官方文档 来输出更多的消息
我们直接复制代码,并修改他的命令为 Name ,用这个命令来输出玩家在服务器注册的姓名,
lua:
-- 引用QBCore
local QBCore = exports['qb-core']:GetCoreObject()
-- 注册一个名为'QBchat'的命令,提供QBCore的命令方式
QBCore.Commands.Add('QBchat', "QBCore提供的命令方式",
-- 定义命令参数的格式,这里是一个消息参数
{
{ name = "QBCore注册命令", help = "输入你想输入的内容" }
},
-- 命令是否只能由玩家触发(false表示不是)
false,
-- 命令的处理函数,接收来源和参数
function(source, args)
-- 因为消息显示消息是一个客户端的命令,因此我们需要触发客户端的方法
TriggerClientEvent('QBCore:Notify', source, "恭喜你通过QBCommand触发命令QBchat,您输入的内容为:" .. args[1])
end,
-- 命令的类型(这里标记为'user'表示是由玩家触发的命令)
'user')
QBCore.Commands.Add('Name', "QBCore提供的命令方式",
-- 定义命令参数的格式,这里是一个消息参数
{
{ name = "获得玩家姓名", help = "" }
},
-- 命令是否只能由玩家触发(false表示不是)
false,
-- 命令的处理函数,接收来源和参数
function(source, args)
-- 首先通过QBCore获取到这个玩家
local Player = QBCore.Functions.GetPlayer(source)
-- 然后通过QBCore获取到这个玩家的名字
local name = Player.PlayerData.charinfo.firstname..Player.PlayerData.charinfo.lastname
-- 因为消息显示消息是一个客户端的命令,因此我们需要触发客户端的方法
TriggerClientEvent('QBCore:Notify', source, "恭喜你通过QBCommand触发命令QBchat,姓名为" .. name)
end,
-- 命令的类型(这里标记为'user'表示是由玩家触发的命令)
'user')
好了今天的课程到这,下课!关机!睡觉!