| |
|
| |
|
| | local Players = game:GetService("Players")
|
| | local ReplicatedStorage = game:GetService("ReplicatedStorage")
|
| |
|
| | local GameConfig = require(ReplicatedStorage:WaitForChild("Shared"):WaitForChild("GameConfig"))
|
| | local EconomyConfig = require(ReplicatedStorage:WaitForChild("Shared"):WaitForChild("EconomyConfig"))
|
| | local ShopConfig = require(ReplicatedStorage:WaitForChild("Shared"):WaitForChild("ShopConfig"))
|
| | local NotificationEvent = ReplicatedStorage:WaitForChild("Events"):WaitForChild("NotificationEvent")
|
| |
|
| |
|
| | local playerData = {}
|
| |
|
| | local function createLeaderstats(player)
|
| | local leaderstats = Instance.new("Folder")
|
| | leaderstats.Name = "leaderstats"
|
| | leaderstats.Parent = player
|
| |
|
| | local cash = Instance.new("IntValue")
|
| | cash.Name = GameConfig.Stats.Cash
|
| | cash.Value = EconomyConfig.StarterCash
|
| | cash.Parent = leaderstats
|
| |
|
| | local woodChopped = Instance.new("IntValue")
|
| | woodChopped.Name = GameConfig.Stats.WoodChopped
|
| | woodChopped.Value = 0
|
| | woodChopped.Parent = leaderstats
|
| | end
|
| |
|
| | local function initializeInventory(player)
|
| |
|
| | local defaultInventory = {
|
| | Tools = {},
|
| | Machines = {},
|
| | Vehicles = {},
|
| | Automation = {},
|
| | }
|
| |
|
| |
|
| | playerData[player.UserId] = {
|
| | Inventory = defaultInventory,
|
| | EquippedAxe = "",
|
| | QuestProgress = {},
|
| | Achievements = {},
|
| | BiomesVisited = {},
|
| | Resources = { Wood = 0, Stone = 0, GoldOre = 0, Diamond = 0 },
|
| | TotalEarned = 0,
|
| | TotalWoodSold = 0,
|
| | TotalBuilt = 0,
|
| | }
|
| |
|
| |
|
| | player:SetAttribute("EquippedAxe", "")
|
| | end
|
| |
|
| | local function onPlayerAdded(player)
|
| | createLeaderstats(player)
|
| | initializeInventory(player)
|
| |
|
| |
|
| | player.CharacterAdded:Connect(function(character)
|
| | character:SetAttribute("EquippedAxe", playerData[player.UserId].EquippedAxe)
|
| | end)
|
| |
|
| |
|
| | task.delay(3, function()
|
| | if player.Parent then
|
| | NotificationEvent:FireClient(player, "Welcome", "Welcome to Timberbound Expeditions! Punch trees to gather wood, then press C to craft your first axe!")
|
| | end
|
| | end)
|
| | end
|
| |
|
| | local function onPlayerRemoving(player)
|
| | playerData[player.UserId] = nil
|
| | end
|
| |
|
| |
|
| | _G.GetPlayerData = function(player)
|
| | return playerData[player.UserId]
|
| | end
|
| |
|
| | _G.SetPlayerData = function(player, key, value)
|
| | if playerData[player.UserId] then
|
| | playerData[player.UserId][key] = value
|
| | end
|
| | end
|
| |
|
| | _G.AddToInventory = function(player, category, itemId)
|
| | local data = playerData[player.UserId]
|
| | if data and data.Inventory[category] then
|
| | table.insert(data.Inventory[category], itemId)
|
| | return true
|
| | end
|
| | return false
|
| | end
|
| |
|
| | _G.HasInInventory = function(player, category, itemId)
|
| | local data = playerData[player.UserId]
|
| | if data and data.Inventory[category] then
|
| | for _, id in ipairs(data.Inventory[category]) do
|
| | if id == itemId then return true end
|
| | end
|
| | end
|
| | return false
|
| | end
|
| |
|
| | _G.IncrementStat = function(player, statName, amount)
|
| | local data = playerData[player.UserId]
|
| | if not data then return end
|
| |
|
| | if statName == "WoodChopped" then
|
| | local leaderstats = player:FindFirstChild("leaderstats")
|
| | if leaderstats then
|
| | local stat = leaderstats:FindFirstChild(statName)
|
| | if stat then
|
| | stat.Value = stat.Value + amount
|
| | end
|
| | end
|
| | elseif statName == "TotalEarned" then
|
| | data.TotalEarned = (data.TotalEarned or 0) + amount
|
| | elseif statName == "TotalWoodSold" then
|
| | data.TotalWoodSold = (data.TotalWoodSold or 0) + amount
|
| | elseif statName == "TotalBuilt" then
|
| | data.TotalBuilt = (data.TotalBuilt or 0) + amount
|
| | end
|
| | end
|
| |
|
| | Players.PlayerAdded:Connect(onPlayerAdded)
|
| | Players.PlayerRemoving:Connect(onPlayerRemoving)
|
| |
|
| |
|
| | for _, player in ipairs(Players:GetPlayers()) do
|
| | task.spawn(function()
|
| | onPlayerAdded(player)
|
| | end)
|
| | end
|
| |
|