Skip to content

Hack for Roblox. #8837

Description

@aymanjr356-lgtm

--[[
DataStoreManager.lua
Creado por: TuNombre/TuUsuarioGitHub
Descripción: Un sistema seguro de guardado de datos para monedas y niveles en Roblox.
Colocación en Roblox: ServerScriptService
--]]

local DataStoreService = game:GetService("DataStoreService")
local Players = game:GetService("Players")

-- Cambia "MiJuegoDatos_v1" por el nombre que quieras para tu base de datos
local playerDataStore = DataStoreService:GetDataStore("MiJuegoDatos_v1")

-- Función para cargar los datos del jugador
local function onPlayerAdded(player)
-- Crear la carpeta "leaderstats" para que se muestre en la tabla de puntuación
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player

-- Crear el valor de Monedas (Coins)
local coins = Instance.new("IntValue")
coins.Name = "Coins"
coins.Value = 0 -- Valor por defecto
coins.Parent = leaderstats

-- Crear el valor de Nivel (Level)
local level = Instance.new("IntValue")
level.Name = "Level"
level.Value = 1 -- Valor por defecto
level.Parent = leaderstats

-- Intentar cargar los datos guardados desde el DataStore
local playerKey = "Player_" .. player.UserId
local success, savedData = pcall(function()
	return playerDataStore:GetAsync(playerKey)
end)

if success and savedData then
	-- Si se encontraron datos, se los asignamos al jugador
	coins.Value = savedData.Coins or 0
	level.Value = savedData.Level or 1
	print("Datos cargados con éxito para: " .. player.Name)
else
	print("No se encontraron datos previos para: " .. player.Name .. ". Creando nuevos.")
end

end

-- Función para guardar los datos del jugador
local function onPlayerRemoving(player)
local leaderstats = player:FindFirstChild("leaderstats")
if not leaderstats then return end

local playerKey = "Player_" .. player.UserId```


-- Creamos una tabla con los datos actuales
local dataToSave = {
	Coins = leaderstats.Coins.Value,
	Level = leaderstats.Level.Value
}

-- Intentamos guardar en la base de datos (usamos pcall por si falla la conexión)
local success, err = pcall(function()
	playerDataStore:SetAsync(playerKey, dataToSave)
end)

if success then
	print("Datos guardados correctamente para: " .. player.Name)
else
	warn("Error al guardar datos de " .. player.Name .. ": " .. tostring(err))
end

end

-- Conectar las funciones a los eventos del juego
Players.PlayerAdded:Connect(onPlayerAdded)
Players.PlayerRemoving:Connect(onPlayerRemoving)

-- Guardado preventivo por si el servidor se cierra de golpe (BindToClose)
game:BindToClose(function()
for _, player in ipairs(Players:GetPlayers()) do
onPlayerRemoving(player)
end
end)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions