Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите пожалуйста найти ошибку в скрипте Roblox Studio

Пельменеварка Мастер (1718), закрыт 5 дней назад
-- Серверный скрипт
local DataStoreService = game:GetService("DataStoreService")
local KillsDataStore = DataStoreService:GetDataStore("KillsDataStore")
local MoneyDataStore = DataStoreService:GetDataStore("MoneyDataStore")

game.Players.PlayerAdded:Connect(function(player)
-- Создаем лидерборды для игрока
local leaderstats = Instance.new ("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player

local kills = Instance.new ("IntValue")
kills.Name = "Kills"
kills.Value = 0
kills.Parent = leaderstats

local money = Instance.new ("IntValue")
money.Name = "Money"
money.Value = 0
money.Parent = leaderstats

-- Загружаем сохраненные данные
local killsSaved = KillsDataStore:GetAsync(player.UserId)
if killsSaved then
kills.Value = killsSaved
end

local moneySaved = MoneyDataStore:GetAsync(player.UserId)
if moneySaved then
money.Value = moneySaved
end
end)

game.Players.PlayerRemoving:Connect(function(player)
-- Сохраняем данные при выходе игрока
KillsDataStore:SetAsync(player.UserId, player.leaderstats.Kills.Value)
MoneyDataStore:SetAsync(player.UserId, player.leaderstats.Money .Value)
end)

-- Скрипт для начисления очков и денег
local function onPlayerKilled(victim, killer)
if killer and killer:IsA("Player") then
killer.leaderstats.Kills.Value = killer.leaderstats.Kills.Value + 1
killer.leaderstats.Money .Value = killer.leaderstats.Money .Value + 10
end
end

game.Players.PlayerAdded:Connect(function(player)
player.CharacterAdded:Connect(function(character)
character:WaitForChild("Humanoid").Died:Connect(function()
local tag = character.Humanoid:FindFirstChild("creator")
if tag and tag:IsA("ObjectValue") and tag.Value then
onPlayerKilled(player, tag.Value)
end
end)
end)
end)

Спасибо тем, кто поможет!
Лучший ответ
- Профи (744) 1 неделю назад
-- Серверный скрипт
local DataStoreService = game:GetService("DataStoreService")
local KillsDataStore = DataStoreService:GetDataStore("KillsDataStore")
local MoneyDataStore = DataStoreService:GetDataStore("MoneyDataStore")

local function onPlayerAdded(player)
-- Создаем лидерборды для игрока
local leaderstats = Instance.new ("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player

local kills = Instance.new ("IntValue")
kills.Name = "Kills"
kills.Value = 0
kills.Parent = leaderstats

local money = Instance.new ("IntValue")
money.Name = "Money"
money.Value = 0
money.Parent = leaderstats

-- Загружаем сохраненные данные
local success, killsSaved = pcall(function() return KillsDataStore:GetAsync(player.UserId) end)
if success and killsSaved then
kills.Value = killsSaved
end

local success, moneySaved = pcall(function() return MoneyDataStore:GetAsync(player.UserId) end)
if success and moneySaved then
money.Value = moneySaved
end

player.CharacterAdded:Connect(function(character)
character:WaitForChild("Humanoid").Died:Connect(function()
local tag = character.Humanoid:FindFirstChild("creator")
if tag and tag:IsA("ObjectValue") and tag.Value then
onPlayerKilled(player, tag.Value)
end
end)
end)
end

game.Players.PlayerAdded:Connect(onPlayerAdded)

game.Players.PlayerRemoving:Connect(function(player)
-- Сохраняем данные при выходе игрока
if player:FindFirstChild("leaderstats") then
local success, errorMessage = pcall(function()
KillsDataStore:SetAsync(player.UserId, player.leaderstats.Kills.Value)
MoneyDataStore:SetAsync(player.UserId, player.leaderstats.Money .Value)
end)
if not success then
warn("Failed to save data: " .. errorMessage)
end
end
end)

-- Скрипт для начисления очков и денег
local function onPlayerKilled(victim, killer)
if killer and killer:IsA("Player") then
local leaderstats = killer:FindFirstChild("leaderstats")
if leaderstats then
local kills = leaderstats:FindFirstChild("Kills")
local money = leaderstats:FindFirstChild("Money")
if kills and money then
kills.Value = kills.Value + 1
money.Value = money.Value + 10
end
end
end
end
Остальные ответы
Григорий Крюков Мыслитель (5884) 1 неделю назад
Ваш скрипт выглядит довольно хорошо, но я заметил несколько мелких ошибок и участков, которые могут быть улучшены для большей надежности. Вот исправленный вариант вашего скрипта с комментариями:

```lua
-- Серверный скрипт
local DataStoreService = game:GetService("DataStoreService")
local KillsDataStore = DataStoreService:GetDataStore("KillsDataStore")
local MoneyDataStore = DataStoreService:GetDataStore("MoneyDataStore")

game.Players.PlayerAdded:Connect(function(player)
-- Создаем лидерборды для игрока
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player

local kills = Instance.new("IntValue")
kills.Name = "Kills"
kills.Value = 0
kills.Parent = leaderstats

local money = Instance.new("IntValue")
money.Name = "Money"
money.Value = 0
money.Parent = leaderstats

-- Загружаем сохраненные данные
local success, killsSaved = pcall(function()
return KillsDataStore:GetAsync(player.UserId)
end)
if success and killsSaved then
kills.Value = killsSaved
end

local success, moneySaved = pcall(function()
return MoneyDataStore:GetAsync(player.UserId)
end)
if success and moneySaved then
money.Value = moneySaved
end
end)

game.Players.PlayerRemoving:Connect(function(player)
-- Сохраняем данные при выходе игрока
local success1, err1 = pcall(function()
KillsDataStore:SetAsync(player.UserId, player.leaderstats.Kills.Value)
end)
if not success1 then
warn("Не удалось сохранить данные Kill: " .. err1)
end

local success2, err2 = pcall(function()
MoneyDataStore:SetAsync(player.UserId, player.leaderstats.Money.Value)
end)
if not success2 then
warn("Не удалось сохранить данные Money: " .. err2)
end
end)

-- Скрипт для начисления очков и денег
local function onPlayerKilled(victim, killer)
if killer and killer:IsA("Player") then
killer.leaderstats.Kills.Value = killer.leaderstats.Kills.Value + 1
killer.leaderstats.Money.Value = killer.leaderstats.Money.Value + 10
end
end

game.Players.PlayerAdded:Connect(function(player)
player.CharacterAdded:Connect(function(character)
character:WaitForChild("Humanoid").Died:Connect(function()
local tag = character.Humanoid:FindFirstChild("creator")
if tag and tag:IsA("ObjectValue") and tag.Value then
onPlayerKilled(player, tag.Value)
end
end)
end)
end)
```

Основные улучшения:
1. **Использование pcall для работы с DataStore**: Это позволяет избежать ошибок, связанных с отказами сети или другими проблемами.
2. **Добавление отладочных сообщений**: Они помогут при отладке, если что-то пойдет не так.
3. **Мелкие исправления синтаксиса**: Убедитесь, что нет лишних пробелов перед точками (например, `Money .Value` -> `Money.Value`).

Попробуйте этот обновленный скрипт, и он должен работать более стабильно.
Похожие вопросы