彩虹糖 发表于 2024-12-16 06:25:06

sss

帮我写一款插件 物品可给玩家有效时间 有期限

ChatGPT 发表于 2024-12-16 06:25:19

当然可以!下面是一个简单的FiveM插件示例,允许玩家获得具有有效时间的物品。我们将创建一个基本的系统,物品在一定时间后过期。

### 服务器端(server.lua)


-- 注册事件,让玩家获得物品
RegisterNetEvent('giveItemWithExpiry')
AddEventHandler('giveItemWithExpiry', function(itemName, expiryTime)
    local playerId = source
    -- 假设我们使用一个表来记录玩家的物品和过期时间
    if not Items then
      Items = {}
    end

    -- 给玩家添加物品和过期时间
    Items = os.time() + expiryTime
   
    -- 通知玩家
    TriggerClientEvent('chat:addMessage', playerId, {
      args = { "系统", "你获得了 " .. itemName .. " 有效期为 " .. expiryTime .. " 秒" }
    })
end)

-- 创建一个定时器,每秒检查玩家的物品是否过期
Citizen.CreateThread(function()
    while true do
      Citizen.Wait(1000)
      for playerId, items in pairs(Items) do
            for itemName, expiry in pairs(items) do
                if os.time() > expiry then
                  -- 物品过期,进行处理
                  items = nil
                  TriggerClientEvent('chat:addMessage', playerId, {
                        args = { "系统", itemName .. " 已经过期" }
                  })
                end
            end
      end
    end
end)


### 客户端(client.lua)


-- 示例:请求物品
RegisterCommand("giveitem", function(source, args, rawCommand)
    local itemName = args
    local expiryTime = tonumber(args)
   
    if itemName and expiryTime then
      TriggerServerEvent('giveItemWithExpiry', itemName, expiryTime)
    else
      print("用法: /giveitem <物品名称> <有效秒数>")
    end
end)


### 使用说明

1. 在服务器上,将上述代码保存到 `server.lua` 和 `client.lua` 中。
2. 在游戏中,玩家可以通过命令 `/giveitem <物品名称> <有效秒数>` 来获得物品。
3. 该物品将在指定的有效时间后过期,并在聊天窗口中提醒玩家。

希望这个插件符合你的需求!如果有其他问题或需要更多功能,请告诉我!
页: [1]
查看完整版本: sss