【发布时间】:2018-07-28 07:16:23
【问题描述】:
我如何将数据保存在排行榜上,例如积分数量,这样当玩家重新加入时,他们仍然拥有之前获得的积分数量。在我的游戏中,我在我的 playermanager 脚本中创建了一个排行榜,其中我有代码说明玩家加入游戏时会发生什么(夺旗游戏),以及当他们夺取旗帜时会发生什么以及它在排行榜上的显示方式。我必须在代码中编辑什么以确保玩家在游戏中进行的捕获量保存在排行榜上,这样当他们重新加入时,他们的捕获量数据仍然保存在排行榜上。
我的玩家管理器脚本/排行榜脚本
local PlayerManager = {}
-- ROBLOX Services
local Players = game.Players
local PointsService = game:GetService('PointsService')
-- Game services
local Configurations = require(game.ServerStorage.Configurations)
local Events = game.ReplicatedStorage.Events
local ResetMouseIcon = Events.ResetMouseIcon
local TeamManager = require(script.Parent.TeamManager)
local DisplayManager = require(script.Parent.DisplayManager)
-- Local variables
local PlayersCanSpawn = false
local GameRunning = false
-- Local Functions
local function OnPlayerAdded(player)
-- Setup leaderboard stats
local leaderstats = Instance.new('Model', player)
leaderstats.Name = 'leaderstats'
local Captures = Instance.new('IntValue', leaderstats)
Captures.Name = 'Captures'
Captures.Value = 0
-- Add player to team
TeamManager:AssignPlayerToTeam(player)
player.CharacterAdded:connect(function(character)
character:WaitForChild('Humanoid').Died:connect(function()
wait(Configurations.RESPAWN_TIME)
if GameRunning then
player:LoadCharacter()
end
end)
end)
-- Check if player should be spawned
if PlayersCanSpawn then
player:LoadCharacter()
else
DisplayManager:StartIntermission(player)
end
end
local function OnPlayerRemoving(player)
TeamManager:RemovePlayer(player)
end
-- Public Functions
function PlayerManager:SetGameRunning(running)
GameRunning = running
end
function PlayerManager:ClearPlayerScores()
for _, player in ipairs(Players:GetPlayers()) do
local leaderstats = player:FindFirstChild('leaderstats')
if leaderstats then
local Captures = leaderstats:FindFirstChild('Captures')
if Captures then
Captures.Value = 0
end
end
end
end
function PlayerManager:LoadPlayers()
for _, player in ipairs(Players:GetPlayers()) do
player:LoadCharacter()
end
end
function PlayerManager:AllowPlayerSpawn(allow)
PlayersCanSpawn = allow
end
function PlayerManager:DestroyPlayers()
for _, player in ipairs(Players:GetPlayers()) do
player.Character:Destroy()
for _, item in ipairs(player.Backpack:GetChildren()) do
item:Destroy()
end
end
ResetMouseIcon:FireAllClients()
end
function PlayerManager:AddPlayerScore(player, score)
player.leaderstats.Captures.Value = player.leaderstats.Captures.Value + score
local success, message = pcall(function() spawn(function() PointsService:AwardPoints(player.userId, score) end) end)
end
-- Event binding
Players.PlayerAdded:connect(OnPlayerAdded)
Players.PlayerRemoving:connect(OnPlayerRemoving)
return PlayerManager
我尝试在不同的脚本上添加一个单独的数据存储,但它不起作用,所以我希望我可以在这个脚本中添加一些代码,以确保玩家进行的捕获量被保存在上面,以便玩家可以使用它的捕获来购买游戏中的东西等。
感谢您的帮助
【问题讨论】: