-- Player data table local playerData = {}
-- Helper: Save player data local function savePlayerData(player) local userId = player.UserId local data = playerData[player] if data then local success, err = pcall(function() dataStore:SetAsync(userId, { Money = data.Money, CurrentHome = data.CurrentHome, Upgrades = data.Upgrades }) end) if not success then warn("Failed to save data for", player.Name, err) end end end ultimate home tycoon script
local upgradeRemote = Instance.new("RemoteEvent") upgradeRemote.Name = "UpgradeHome" upgradeRemote.Parent = remotes -- Player data table local playerData = {}
local function onRequestData(player) local data = playerData[player] if data then return { Money = data.Money, CurrentHome = data.CurrentHome, IncomeMultiplier = data.Upgrades.IncomeMultiplier, Automation = data.Upgrades.Automation } end return nil end err = pcall(function() dataStore:SetAsync(userId
-- Start income generation coroutine.wrap(startIncomeLoop)()
local function onUpgrade(player, upgradeType) if applyUpgrade(player, upgradeType) then local leaderstats = player:FindFirstChild("leaderstats") if leaderstats then local cashStat = leaderstats:FindFirstChild("Cash") if cashStat then cashStat.Value = playerData[player].Money end end else upgradeRemote:FireClient(player, "Upgrade failed: insufficient funds or already owned.") end end
-- Give money to player local function giveMoney(player, amount) local data = playerData[player] if data then data.Money = data.Money + amount -- Update leaderstats local leaderstats = player:FindFirstChild("leaderstats") if leaderstats then local cashStat = leaderstats:FindFirstChild("Cash") if cashStat then cashStat.Value = data.Money end end end end