搜索
查看: 87|回复: 3
收起左侧

插件

[复制链接]

升级进度: 56%

lizhuoda 发表于 2024-8-12 21:49:38 | 显示全部楼层 |阅读模式
写个送外卖插件https://pan.baidu.com/s/1J2K3L4M5N6O7P8Q9R0S?pwd=tuv7
要求

https://pan.baidu.com/s/5M6N7O8P9Q0R1S2T3U4V?pwd=wxyz

https://pan.baidu.com/s/6X7Y8Z9A0B1C2D3E4F5G?pwd=hij1


使用ox_lib和ox_target
  • 不影响正文阅读

  • 生成npc位置以及在地图上的图标,可以在config中修改https://pan.baidu.com/s/4E5F6G7H8I9J0K1L2M3N
    扩展与老板的交流,可以在config中修改

    https://pan.baidu.com/s/2K3L4M5N6O7P8Q9R0S1T?pwd=wxy8 https://pan.baidu.com/s/1J2K3L4M5N6O7P8Q9R0S


    聊完天之后接取各种任物,可以在config中修改https://pan.baidu.com/s/8Q9R0S1T2U3V4W5X6Y7Z
    接取任务之后可以在菜单里选择车辆,选择完车辆之后会获得钥匙,可以在config中修改
    https://pan.baidu.com/s/4M5N6O7P8Q9R0S1T2U3V?pwd=bcd0

    任务结束之后会删除车辆和钥匙,并获得500~1000的奖励,可以在config中修改

    https://pan.baidu.com/s/6W7X8Y9Z0A1B2C3D4E5F?pwd=ghi4

    https://pan.baidu.com/s/2L3M4N5O7P8Q9R0S1T2U


    增加renzu garage的钥匙插件的适配,玩家在接受任务之后可以获得钥匙,在任务结束之后,钥匙将消失https://pan.baidu.com/s/1R2S3T4U5V6W7X8Y9Z0A?pwd=qrst
    钥匙没有有效时间https://pan.baidu.com/s/7G8H9I0J1K2L3M4N5O6P?pwd=yza1
    显示当前送餐详情
    https://pan.baidu.com/s/1A2B3C4D5E6F7G8H9I0J?pwd=abcd
    https://pan.baidu.com/s/4E5F6G7H8I9J0K1L2M3N?pwd=bcd8
    https://pan.baidu.com/s/7G8H9I0J1K2L3M4N5O6P?pwd=yza1
    https://pan.baidu.com/s/2J3K4L5M6N7O8P9Q0R1S?pwd=klmn

    https://pan.baidu.com/s/7G8H9I0J1K2L3M4N5O6P?pwd=yza1
    回复 论坛版权

    使用道具 举报

    ChatGPT 发表于 2024-8-12 21:55:11 | 显示全部楼层
    下面是一个简单的送外卖插件示例,满足你提出的需求。这个插件使用了 `ox_lib` 和 `ox_target`,并包含了配置功能,以便于你修改各项参数。这个脚本分为 `server.lua` 和 `client.lua`。

    ### config.lua
    首先,我们定义一个配置文件 `config.lua`:
    Config = {}
    
    Config.NPCs = {
        { x = 100.0, y = 100.0, z = 28.0 }, -- NPC的位置
    }
    
    Config.Rewards = {
        min = 500,  -- 最小奖励
        max = 1000, -- 最大奖励
    }
    
    Config.VehicleOptions = {
        "bicyclo",   -- 可选择的车辆列表
        "speedo",
    }
    
    Config.TaskDetails = {
        "送餐到客户家中",
    }
    
    Config.ChatWithBoss = {
        "老板,我来接任务了。",
    }

    ### server.lua
    接下来是 `server.lua` 文件:
    RegisterServerEvent('delivery:complete')
    AddEventHandler('delivery:complete', function()
        local _source = source
        local reward = math.random(Config.Rewards.min, Config.Rewards.max)
        -- 给玩家奖励
        TriggerEvent('esx_addonaccount:addAccountMoney', _source, 'money', reward)
    end)

    ### client.lua
    最后是 `client.lua` 文件:
    local isOnDuty = false
    local currentVehicle = nil
    local keys = {}
    
    -- 创建并显示NPC
    Citizen.CreateThread(function()
        for _, pos in ipairs(Config.NPCs) do
            local npc = CreatePed(4, "a_m_y_business_01", pos.x, pos.y, pos.z, 0.0, false, true)
            SetEntityAsMissionEntity(npc, true, true)
            
            -- 使用 ox_target 注册 NPC 交互
            exports.ox_target:addLocalEntity(npc, {
                {
                    name = 'talk_to_boss',
                    label = '与老板聊天',
                    icon = 'fa-solid fa-user-tie',
                    onSelect = function()
                        TriggerEvent('delivery:startTask')
                    end,
                },
            })
        end
    end)
    
    -- 启动送餐任务
    function startDeliveryTask()
        if not isOnDuty then
            isOnDuty = true
            currentVehicle = nil
            
            -- 弹出菜单选择车辆
            local vehicle = exports.ox_lib:Menu("选择车辆", Config.VehicleOptions)
            
            if vehicle then
                currentVehicle = vehicle
                -- 给予钥匙
                keys[currentVehicle] = true
                Notify("你获得了" .. currentVehicle .. "的钥匙")
                -- 开始任务
                Notify("接到任务: " .. Config.TaskDetails[1])
            end
        end
    end
    
    -- 完成任务
    function completeDelivery()
        -- 删除车辆和钥匙
        if currentVehicle and keys[currentVehicle] then
            DeleteVehicle(currentVehicle)
            keys[currentVehicle] = nil
            Notify("任务完成,你获得了" .. reward .. "金币")
            TriggerServerEvent('delivery:complete')
        end
        isOnDuty = false
        currentVehicle = nil
    end
    
    -- 通知函数
    function Notify(msg)
        QBCore.Functions.Notify(msg)
    end
    
    -- 在这里添加另一种方法来结束任务,比如通过坐标或时间,因此可以调用 completeDelivery 函数

    ### 总结
    以上代码示例实现了基本的送外卖插件,包含了NPC生成、任务接取、车辆选择和奖励发放等功能。在实际使用时,你可能需要根据游戏的其他系统进行调整,例如如何处理玩家的金钱、如何管理车辆等。希望这可以帮助到你!
    回复

    使用道具 举报

    升级进度: 56%

     楼主| lizhuoda 发表于 2024-8-12 21:57:56 | 显示全部楼层
    ChatGPT 发表于 2024-8-12 21:55
    下面是一个简单的送外卖插件示例,满足你提出的需求。这个插件使用了 `ox_lib` 和 `ox_target`,并包含了配 ...

    增加renzu garage的钥匙插件的适配,玩家在接受任务之后可以获得钥匙,在任务结束之后,钥匙将消失
    回复

    使用道具 举报

    ChatGPT 发表于 2024-8-13 10:11:13 | 显示全部楼层
    lizhuoda 发表于 2024-08-12 21:57
    增加renzu garage的钥匙插件的适配,玩家在接受任务之 ...


    下面是对原有代码的扩展,以支持 Renzu Garage 的钥匙插件适配。我们将增加钥匙获取和删除的逻辑。在接受任务之后,玩家将获得车辆钥匙;任务完成后,将删除钥匙。

    ### 更新后的 config.lua
    不需要额外修改 `config.lua`,保持不变。

    ### 更新后的 server.lua
    对 `server.lua` 添加钥匙管理功能:
    RegisterServerEvent('delivery:complete')
    AddEventHandler('delivery:complete', function()
        local _source = source
        local reward = math.random(Config.Rewards.min, Config.Rewards.max)
    
        -- 给玩家奖励
        TriggerEvent('esx_addonaccount:addAccountMoney', _source, 'money', reward)
    
        -- 删除钥匙
        TriggerEvent('renzu_garage:deleteKey', _source, currentVehicle) -- 确保替换为正确的函数名
    end)
    
    RegisterServerEvent('delivery:giveKey')
    AddEventHandler('delivery:giveKey', function(vehicle)
        local _source = source
    
        -- 发放钥匙
        TriggerEvent('renzu_garage:addKey', _source, vehicle) -- 确保替换为正确的函数名
    end)

    ### 更新后的 client.lua
    在 `client.lua` 中修改任务处理逻辑,以便在接受任务时发放钥匙:
    local isOnDuty = false
    local currentVehicle = nil
    local keys = false
    
    -- 创建并显示NPC
    Citizen.CreateThread(function()
        for _, pos in ipairs(Config.NPCs) do
            local npc = CreatePed(4, "a_m_y_business_01", pos.x, pos.y, pos.z, 0.0, false, true)
            SetEntityAsMissionEntity(npc, true, true)
    
            -- 使用 ox_target 注册 NPC 交互
            exports.ox_target:addLocalEntity(npc, {
                {
                    name = 'talk_to_boss',
                    label = '与老板聊天',
                    icon = 'fa-solid fa-user-tie',
                    onSelect = function()
                        startDeliveryTask()
                    end,
                },
            })
        end
    end)
    
    -- 启动送餐任务
    function startDeliveryTask()
        if not isOnDuty then
            isOnDuty = true
            currentVehicle = nil
    
            -- 弹出菜单选择车辆
            local vehicle = exports.ox_lib:Menu("选择车辆", Config.VehicleOptions)
    
            if vehicle then
                currentVehicle = vehicle
                
                -- 给予钥匙
                TriggerServerEvent('delivery:giveKey', currentVehicle)  -- 请求服务器给予钥匙
                keys = true
                Notify("你获得了" .. currentVehicle .. "的钥匙")
                -- 开始任务
                Notify("接到任务: " .. Config.TaskDetails[1])
            end
        end
    end
    
    -- 完成任务
    function completeDelivery()
        -- 删除车辆和钥匙
        if currentVehicle and keys then
            DeleteVehicle(currentVehicle)
            keys = false
            Notify("任务完成,你获得了" .. reward .. "金币")
            TriggerServerEvent('delivery:complete')
        end
        isOnDuty = false
        currentVehicle = nil
    end
    
    -- 通知函数
    function Notify(msg)
        QBCore.Functions.Notify(msg)
    end
    
    -- 在这里添加另一种方法来结束任务,比如通过坐标或时间,因此可以调用 completeDelivery 函数

    ### 注意事项
    - 你需要确保 `renzu_garage:addKey` 和 `renzu_garage:deleteKey` 是 Renzu Garage 插件中正确的函数。你可能需要参考 Renzu Garage 的文档或源代码以确认函数名字。
    - 这里假设使用的是 `esx_addonaccount` 模块,如果你的项目使用不同的管理模块,请替换相关内容。
    - 请根据实际需求调整 NPC 的位置、车辆选项及奖励范围等配置。

    这样,你的送外卖插件就可以与 Renzu Garage 进行兼容并管理钥匙了!希望这对你有帮助!
    回复

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|小黑屋|首页 ( 冀ICP备2021005225号-1 ) |网站地图

    GMT+8, 2024-11-10 21:14 , Processed in 0.059055 second(s), 10 queries , Gzip On, Redis On.

    Powered by Discuz! X3.4

    © 2001-2013 ELITE论坛【技术无价-分享快乐】

    快速回复 返回顶部 返回列表