首页 > 解决方案 > Roblox 数据存储的问题

问题描述

情况

我正在尝试一项简单的任务来更新玩家的历史总获胜总数。这是我根据我看过的教程使用的代码:

 local DataStoreService = game:GetService("DataStoreService")
 local myDataStore = DataStoreService:GetDataStore("myDataStore")

 game.Players.PlayerAdded:Connect(function(player)
     local leaderstats = Instance.new("Folder")
     leaderstats.Name = "leaderstats"
     leaderstats.Parent = player

     local wins = Instance.new("IntValue")
     wins.Name = "Wins"
     wins.Parent = leaderstats
    
     local data
     local success, errormessage = pcall(function()
     data = myDataStore:GetAsync(player.UserId.."-wins")
     end)

     if success then
         wins.Value = data
     else
         print("There was an error while getting your data")
         warn(errormessage)
     end
 end)

 game.Players.PlayerRemoving:Connect(function(player)

     local success, errormessage = pcall(function()
         myDataStore:SetAsync(player.UserId.."-wins",player.leaderstats.Wins.Value)
     end)

     if success then
         print("Player Data successfully saved")
     else
         print("There was an error when saving data")
         warn(errormessage)
     end
 end)

当一个玩家在我的游戏中赢得一轮时,我可以通过一个名为“获胜玩家”的变量来识别获胜者。所以我尝试更新玩家获胜总数的命令如下:

 game.Players.winningplayer.leaderstats.Wins.Value = game.Players.winningplayer.leaderstats.Wins.Value + 1

问题

不幸的是,当这种情况发生时,我收到一条错误消息:winingplayer is not a valid member of Player "Players"

真的很想帮忙。非常感谢!

标签: roblox

解决方案


当您使用game.Players.winningplayer不解压缩变量的行来正确找到播放器时。

尝试使用方括号而不是句点。

local winner = game.Players[winningplayer]
local wins = winner.leaderstats.Wins
wins.Value = wins.Value + 1

推荐阅读