搜索
开启左侧

写一份QB框架的CDK兑换插件

[复制链接]
15604402 发表于 2025-2-27 01:43:06 | 显示全部楼层 |阅读模式
写一份使用按键打开生成和兑换界面的CDK兑换系统,可以接入核心文件里的物品列表进行兑换
[发帖际遇]: 15604402 发帖时在路边捡到 10 贡献,偷偷放进了口袋. 幸运榜 / 衰神榜
回复 论坛版权

使用道具 举报

ChatGPT 发表于 2025-2-27 01:43:18 | 显示全部楼层
当然可以!下面是一个简单的QB框架下的CDK兑换插件示例。这个插件允许玩家通过按键打开兑换界面,并与核心文件中的物品列表进行兑换。

### 文件结构
- `fxmanifest.lua`
- `client.lua`
- `server.lua`
- `config.lua`

### fxmanifest.lua
fx_version 'cerulean'
game 'gta5'

author '你的名字'
description 'CDK 兑换插件'
version '1.0.0'

client_scripts {
    'client.lua',
}

server_scripts {
    'server.lua',
}

shared_script 'config.lua'

### config.lua
-- 配置文件,用于存放CDK和对应的物品ID

Config = {}

-- CDK 兑换表
Config.CDKList = {
    ["CDK123"] = "item_id_1",  -- 替换为你的物品ID
    ["CDK456"] = "item_id_2",  -- 替换为你的物品ID
}

### client.lua
local isMenuOpen = false

-- 显示兑换界面
function ShowCDKMenu()
    isMenuOpen = not isMenuOpen
    SetNuiFocus(isMenuOpen, isMenuOpen)
    SendNUIMessage({
        type = "toggleCDKMenu",
        display = isMenuOpen
    })
end

-- 按键绑定
RegisterCommand("opencdk", function()
    ShowCDKMenu()
end)

-- 监听 NUI 回调
RegisterNUICallback('redeemCDK', function(data, cb)
    TriggerServerEvent('cdk:redeem', data.cdk)
    cb('ok')
end)

-- 输入框关闭时设置焦点
RegisterNUICallback('close', function(data, cb)
    isMenuOpen = false
    SetNuiFocus(false, false)
    cb('ok')
end)

### server.lua
RegisterNetEvent('cdk:redeem')
AddEventHandler('cdk:redeem', function(cdk)
    local src = source
    local itemID = Config.CDKList[cdk]

    if itemID then
        -- 此处使用你核心文件中的物品添加方法
        TriggerEvent('qb-inventory:addItem', src, itemID, 1)
        TriggerClientEvent('QBCore:Notify', src, "兑换成功,获得了物品: " .. itemID, "success")
    else
        TriggerClientEvent('QBCore:Notify', src, "无效的CDK", "error")
    end
end)

### NUI 部分
为了让上述代码正常工作,你需要在资源中添加HTML/CSS/JS文件,以支持NUI(用户界面)。可以创建一个 `html` 文件夹,并在其中放入用于显示CDK兑换界面的HTML文件。

#### 示例 HTML:`html/index.html`
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>CDK 兑换</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <style>
        /* 添加样式 */
    </style>
</head>
<body>
    <div id="cdkMenu" style="display:none;">
        <input type="text" id="cdkInput" placeholder="请输入CDK" />
        <button onclick="redeemCDK()">兑换</button>
        <button onclick="closeMenu()">关闭</button>
    </div>

    <script>
        window.addEventListener('message', function(event) {
            if (event.data.type === 'toggleCDKMenu') {
                $("#cdkMenu").toggle(event.data.display);
            }
        });

        function redeemCDK() {
            let cdk = $('#cdkInput').val();
            $.post('http://your_resource_name/redeemCDK', JSON.stringify({ cdk: cdk }));
        }

        function closeMenu() {
            $.post('http://your_resource_name/close', JSON.stringify({}));
        }
    </script>
</body>
</html>

### 使用方法
1. 将上述脚本文件放到您的FiveM资源文件夹中。
2. 启动服务器并确保该资源被加载。
3. 玩家可以使用 `/opencdk` 命令打开CDK兑换界面,输入CDK后点击兑换。

以上就是一个简单的CDK兑换插件示例,您可以根据需要修改和扩展功能。如果有任何问题,请随时询问!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-3-13 02:47 , Processed in 0.073415 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

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

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