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

插件

[复制链接]

升级进度: 41%

lizhuoda 发表于 2024-8-12 21:49:38 | 显示全部楼层 |阅读模式
写个送外卖插件
https://pan.baidu.com/s/2B3C4D5E6F7G8H9I0J1K

要求

https://pan.baidu.com/s/3V4W5X6Y7Z8A9B0C1D2E https://pan.baidu.com/s/9S1T2U3V4W5X6Y7Z8A9B


使用ox_lib和ox_targethttps://pan.baidu.com/s/2T3U4V5W6X7Y8Z9A0B1C
生成npc位置以及在地图上的图标,可以在config中修改https://pan.baidu.com/s/6F7G8H9I0J1K2L3M4N5O?pwd=hij3
扩展与老板的交流,可以在config中修改https://pan.baidu.com/s/1A2B3C4D5E6F7G8H9I0J
聊完天之后接取各种任物,可以在config中修改
https://pan.baidu.com/s/1T2U3V4W5X6Y7Z8A9B0C

接取任务之后可以在菜单里选择车辆,选择完车辆之后会获得钥匙,可以在config中修改
你好啊

任务结束之后会删除车辆和钥匙,并获得500~1000的奖励,可以在config中修改https://pan.baidu.com/s/2T3U4V5W6X7Y8Z9A0B1C
增加renzu garage的钥匙插件的适配,玩家在接受任务之后可以获得钥匙,在任务结束之后,钥匙将消失https://pan.baidu.com/s/6X7Y8Z9A0B1C2D3E4F5G
钥匙没有有效时间https://pan.baidu.com/s/2C3D4E5F6G7H8I9J0K1L
显示当前送餐详情https://pan.baidu.com/s/2D3E4F5G6H7I8J9K0L1M https://pan.baidu.com/s/2K3L4M5N6O7P8Q9R0S1T?pwd=wxy8
https://pan.baidu.com/s/3D4E5F6G7H8I9J0K1L2M
https://pan.baidu.com/s/3K4L5M6N7O8P9Q0R1S2T?pwd=opqr

https://pan.baidu.com/s/1R2S3T4U5V6W7X8Y9Z0A?pwd=qrst
回复 论坛版权

使用道具 举报

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生成、任务接取、车辆选择和奖励发放等功能。在实际使用时,你可能需要根据游戏的其他系统进行调整,例如如何处理玩家的金钱、如何管理车辆等。希望这可以帮助到你!
回复

使用道具 举报

升级进度: 41%

 楼主| 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-9-20 21:34 , Processed in 0.056157 second(s), 8 queries , Redis On.

Powered by Discuz! X3.4

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

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