Lớp công cụ
MemoryStoreSortedMap
*Nội dung này được dịch bằng AI (Beta) và có thể có lỗi. Để xem trang này bằng tiếng Anh, hãy nhấp vào đây.
Tóm Tắt
Phương Pháp
GetRangeAsync(direction: Enum.SortDirection,count: number,exclusiveLowerBound: Variant,exclusiveUpperBound: Variant):{any} |
RemoveAsync(key: string):() |
UpdateAsync(key: string,transformFunction: function,expiration: number):Tuple |
Tài Liệu Tham Khảo API
Phương Pháp
GetRangeAsync
MemoryStoreSortedMap:GetRangeAsync(
direction:Enum.SortDirection, count:number, exclusiveLowerBound:Variant, exclusiveUpperBound:Variant
Tham Số
exclusiveLowerBound:Variant |
exclusiveUpperBound:Variant |
Lợi Nhuận
Mẫu mã
Lấy khóa MemoryStore
local MemoryStoreService = game:GetService("MemoryStoreService")
local myMap = MemoryStoreService:GetSortedMap("MySortedMap")
function printAllKeys(map)
-- ranh giới dưới ban đầu là nil có nghĩa là bắt đầu từ mục đầu tiên
local exclusiveLowerBound = nil
-- vòng lặp này tiếp tục cho đến khi đạt đến cuối bản đồ
while true do
-- lấy tối đa một trăm mục bắt đầu từ ranh giới dưới hiện tại
local items = map:GetRangeAsync(Enum.SortDirection.Ascending, 100, exclusiveLowerBound)
for _, item in ipairs(items) do
print(item.key)
print(item.sortKey)
end
-- nếu lời gọi trả về ít hơn một trăm mục có nghĩa là chúng ta đã đạt đến cuối bản đồ
if #items < 100 then
break
end
-- khóa vừa lấy được cuối cùng là ranh giới dưới đặc biệt cho lần lặp tiếp theo
exclusiveLowerBound = {}
exclusiveLowerBound["key"] = items[#items].key
exclusiveLowerBound["sortKey"] = items[#items].sortKey
end
end
printAllKeys(myMap)SetAsync
UpdateAsync
Lợi Nhuận
Mẫu mã
Cập nhật một Bản đồ Đã sắp xếp của MemoryStore
local MemoryStoreService = game:GetService("MemoryStoreService")
local map = MemoryStoreService:GetSortedMap("Leaderboard")
local Players = game:GetService("Players")
function updateLeaderboard(itemKey, killsToAdd, deathsToAdd)
local success, newStats, newScore = pcall(function()
return map:UpdateAsync(itemKey, function(playerStats, playerScore)
playerStats = playerStats or { kills = 0, deaths = 0 }
playerStats.kills += killsToAdd
playerStats.deaths += deathsToAdd
if playerStats then
-- `playerScore` là sortKey đang được sử dụng để sắp xếp các mục trong bản đồ
playerScore = playerStats.kills / math.max(playerStats.deaths, 1)
return playerStats, playerScore
end
return nil
end, 30)
end)
end
-- Thêm một lần giết cho tất cả người chơi
for i, player in pairs(Players:GetPlayers()) do
updateLeaderboard(player.UserId, 1, 0)
end
-- Thêm 5 lần giết và 1 lần chết cho người chơi có userId 12345
updateLeaderboard(12345, 5, 1)