写一份QB框架的CDK兑换插件
写一份使用按键打开生成和兑换界面的CDK兑换系统,可以接入核心文件里的物品列表进行兑换当然可以!下面是一个简单的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
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兑换插件示例,您可以根据需要修改和扩展功能。如果有任何问题,请随时询问!
页:
[1]