Ваш скрипт имеет небольшие ошибки, которые могут вызывать проблемы. Вот исправленный вариант:
```lua
local Players = game:GetService("Players")
local DataStoreService = game:GetService("DataStoreService")
local DataStore = DataStoreService:GetDataStore("MainData")
Players.PlayerAdded:Connect(function(player)
local folder =
Instance.new ("Folder")
folder.Name = "leaderstats"
folder.Parent = player
local CoinsValue =
Instance.new ("IntValue")
CoinsValue.Name = "BoCoins"
CoinsValue.Parent = folder
local data = DataStore:GetAsync(tostring(player.UserId)) -- Используйте player.UserId, а не Player.UserId
if data then
CoinsValue.Value = data["Coins"] or 50
else
CoinsValue.Value = 50
end
end)
Players.PlayerRemoving:Connect(function(player)
local success, res = pcall(function()
DataStore:SetAsync(tostring(player.UserId), {
Coins = player.leaderstats.BoCoins.Value -- Используйте player, а не Player
})
end)
if not success then
warn("Данные не были сохранены:", res)
end
end)
```
### Исправления:
1. **Использование правильного объекта**: В функции `PlayerAdded`, используйте `player.UserId` вместо `Player.UserId`.
2. **Правильное имя ключа**: В `GetAsync` и `SetAsync`, убедитесь, что вы используете правильные ключи. Я изменил `"BoCoins"` на `"Coins"` в соответствии с вашим кодом.
3. **Исправление синтаксиса**: Убедитесь, что вы правильно создаете и присваиваете родителя для объектов `Folder` и `IntValue`.
4. **Типы данных**: `UserId` нужно преобразовать в строку с помощью `tostring`, так как DataStore ключи должны быть строками.
Попробуйте использовать этот исправленный код и проверьте, решает ли он вашу проблему.
local DatastoreService = game:GetService("DataStoreService")
local DataStore = DatastoreService:GetDataStore("MainData")
Player.PlayerAdded:Connect(function(player)
local folder = Instance.new ("Folder",player)
folder.Name = "leaderstats"
local CoinsValue = Instance.new ("IntValue",folder)
CoinsValue.Name = "BoCoins"
local data = DataStore:GetAsync(Player.UserId) -- nil
if data ~= nil then
CoinsValue.Value = data ["BoCoins"]
else
CoinsValue.Value = 50
end
end)
Player.PlayerRemoving:Connect(function(player)
local success, res = pcall(function()
DataStore:SetAsync(player.UserId,{
Coins = Player.leaderstats.BoCoins.Value
})
end)
if not success then
warn("Данные не были сохранены:",res)
end
end)