example
example

教程 创建你的第一个QB脚本资源

Phoenix

吊吊
论坛元老
高级用户
认证用户
关于QBCore,为什么称之为QB框架,因为这个框架下面有很多的方法和函数可以直接使用,举个简单的例子,在Yann大佬的论坛有一条是关于创建一个命令,命令是返回一个值

如果用QB框架的方法来写是这样的

我们文件结构是这样的

1713772478544.png

简单来说也就是一个文件夹,文件夹的名字无所谓,让自己能看懂即可

首先资源文件一定要有的,也就是 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即可生效

1713772980909.png

现在我们进入 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')

好了今天的课程到这,下课!关机!睡觉!
 

Yann

站长
管理成员
GTAOS管理组
认证卖家
认证用户
本 月 名 人 榜 最 佳
感谢分享
 
顶部