从roblox中的dataStore获取数据的问题
Posted
技术标签:
【中文标题】从roblox中的dataStore获取数据的问题【英文标题】:problem with getting data from dataStore in roblox 【发布时间】:2021-06-30 21:27:06 【问题描述】:关于 Roblox 工作室的问题,或者更确切地说,关于 dataStore 的问题。如果在输出 data:GetCurrentPage() 时通过 pointsStore:SetAsync ("Mars", 19) 直接将值保存在脚本中 - 此值将被输出,但如果您通过函数执行此操作,则会保存该值,但不会数据时不出现:GetCurrentPage()。如何保存用户数据?
将值直接保存在脚本中:
PlayerPoints:SetAsync("Mars", 19)
local success, err = pcall(function()
local Data = PlayerPoints:GetSortedAsync(false, 5)
local WinsPage = Data:GetCurrentPage()
print(WinsPage)
end)
将值直接保存在函数中:
local function givePointsPlayer(player, points)
local pointsOld = pointsStore:GetAsync(player.Name.."&"..tostring(player.UserId).."&"..tostring(os.date("*t").month))
if (pointsOld == nil) then
pointsOld = 0
end
print(pointsOld)
local success, err = pcall(function()
pointsStore:SetAsync(
player.Name.."&"..tostring(player.UserId).."&"..tostring(os.date("*t").month),
pointsOld + points
)
end)
end
EventEditPointsPlayer.OnServerEvent:Connect( function(player, points)
givePointsPlayer(player, points)
end)
回答: answer
如何保存用户数据以便通过 :GetCurrentPage() 输出??
【问题讨论】:
【参考方案1】:如果你想从页面中获取数据,你需要编写一些代码来遍历每个条目和页面。这是 DevHub 教程中的一个示例:
-- Sort data into pages of three entries (descending order)
local pages = characterAgeStore:GetSortedAsync(false, 3)
while true do
-- Get the current (first) page
local data = pages:GetCurrentPage()
-- Iterate through all key-value pairs on page
for _, entry in pairs(data) do
print(entry.key .. ":" .. tostring(entry.value))
end
-- Check if last page has been reached
if pages.IsFinished then
break
else
print("----------------")
-- Advance to next page
pages:AdvanceToNextPageAsync()
end
end
有关更多信息,请参阅来自 Roblox DevHub 的本教程:https://developer.roblox.com/en-us/articles/Data-store
【讨论】:
以上是关于从roblox中的dataStore获取数据的问题的主要内容,如果未能解决你的问题,请参考以下文章
Roblox:BindToClose 有效,PlayerRemoving 无效
如何获取 Roblox 中的当前时间(在所有服务器上保持一致)?
Apache Beam/Google Dataflow - 将数据从 Google Datastore 导出到 Cloud Storage 中的文件