如何在Roblox Lua中将表添加到数据存储中?

问题描述 投票:0回答:1

目标:为帽子制作一个可以节省的库存系统,因此,当您购买帽子时,会将其添加到您的库存中。

我目前拥有的东西:现在我有一个IntValue,当他们加入时,它会添加到玩家(不是角色)中。此IntValue名为“ CurrentHat”,并设置为玩家上次保存的帽子所戴的值。在此之后,它将等待角色加载,并通过从ServerStorage获取使用CurrentHat的值将该帽子添加到玩家的头部。然后,如果CurrentHat的值发生更改,它将连接它以添加播放器功能,并将其连接到数据存储。以下是代码部分,其中将数据添加到游戏中,我认为应该将库存数据添加到游戏中。所有被注释掉的东西都是我已经尝试过的(失败了)。

function playeradded(player)
    print("hello")
    player:LoadCharacter()
    local leaderstats = Instance.new("IntValue")
    leaderstats.Name = "leaderstats"
    local hat = Instance.new("StringValue")
    hat.Name = ("CurrentHat")
    local coins = Instance.new("IntValue")
    coins.Name = "Coins"
    coins.Parent = leaderstats
    leaderstats.Parent = player
    hat.Parent = player
    hat.Value = ds2:GetAsync(player.UserId) or math.floor(math.random(0,1))
    --table.insert(hattable, hat.Value)
--  ds3:SetAsync(player.UserId,hat.Value)
    --for index,value in pairs (hattable) do
   -- ds3:UpdateAsync(index, function() return value end)
    --end
    --print(hattable[1])
    --print(ds3)
    local playerHat = hat.value
    hat.Changed:connect(function()
    ds2:SetAsync(player.UserId,hat.Value)
    --ds3:SetAsync(player.UserId,table.insert(hat.Value))
    --print(ds3)
    end)
    coins.Value = ds1:GetAsync(player.UserId) or 0
    ds1:SetAsync(player.UserId,coins.Value)

[我想做的一个很好的例子是流行的Roblox游戏SwordBurst的库存系统,只穿衣服。

我希望能够调用玩家数据存储区,并且如果帽子包括在数据存储区中,请在其库存中显示帽子以允许他们戴上它。如果有人可以帮助我,那就太好了!

lua roblox
1个回答
0
投票

您不能在:SetAsync()内保存表,但可以在:UpdateAsync()内保存,因此,如果您仅执行以下操作,它就可以工作:

local clothing = {"Hat1","Shirt1","etc"}

local datastore = game:GetService("DataStoreService"):GetDataStore("Clothing")

datastore:UpdateAsync("A_key",function()
    return clothing
end)

这些变量只是示例。请相应地更改一些内容

© www.soinside.com 2019 - 2024. All rights reserved.