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)

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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