Как мне сделать спасбросок счетчика смертных лидеров - PullRequest
1 голос
/ 24 апреля 2020

Итак, я пытаюсь сделать игру, но не могу сохранить статистику. У меня уже есть рабочий счетчик смерти, но я не могу понять, как его сохранить, он сбрасывается каждый раз, когда я возвращаюсь. Вот два кода, которые я пробовал:

1)

local pointsDataStore = game:GetService("DataStoreService"):GetDataStore("Deaths")

game.Players.PlayerAdded:Connect(function(player)
    local playerKey = "Player_" .. player.UserId

    local success, err = pcall(function()
        pointsDataStore:UpdateAsync(playerKey, function(oldValue)
            local newValue = oldValue or 0
            newValue = newValue + 0
            return newValue
        end)
    end)
end)

2)

local DS = game:GetService("DataStoreService"):GetDataStore("Points")

game.Player.PlayerAdded:connect(plr)
    local leaderstats = Instance.new("Model",plr)
    leaderstats.Name = "leaderstats"

    local currency = Instance.new("IntValue", leaderstats)
    currency.Name = "Deaths"
    currency.Value = 1

   while wait(5) do
    DS:SetAsync(plr.userId.."_DS", currency.Value)
  end
end)

1 Ответ

0 голосов
/ 26 апреля 2020

Я бы загружал значение из хранилища данных, когда игрок присоединяется, затем увеличивал его при каждой смерти, а также сохранял его в хранилище данных.

Обратите внимание, что для запуска смерти сценарий использует Humanoid.Died событие.

local deathsStore = game:GetService("DataStoreService"):GetDataStore("Deaths")

function playerAddedHandler(plr)  
    -- key that is used to store the death value
    local playerKey = "Player_" .. plr.UserId 

    -- Add leader board
    local leaderstats = Instance.new("Folder", plr)  
    leaderstats.Name = "leaderstats"

    -- Add "Deaths" column to leader board 
    local deaths = Instance.new("IntValue", leaderstats)
    deaths.Name = "Deaths"

    -- Load Deaths value from previous game
    deaths.Value = deathsStore:GetAsync(playerKey) 

    -- Hook up event handler that is triggered when character dies
    plr.CharacterAdded:Connect(function(char)
        char.Humanoid.Died:Connect(function()

            -- increment death value on the leader board
            plr.leaderstats.Deaths.Value = plr.leaderstats.Deaths.Value + 1

            -- save the value in our deaths datastore
            local success, err = pcall(function()
                deathsStore:SetAsync(playerKey, plr.leaderstats.Deaths.Value)
            end)    
        end)
    end)
end

game.Players.PlayerAdded:Connect(playerAddedHandler) -- call function "playerAddedHandler" every time a player joins the game

Также. Не забудьте включить использование хранилища данных, иначе это приведет к ошибке 403 в ваших выходных данных. Вы делаете это на веб-сайте roblox в настройках вашей игры c:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...