#DataSaving doesnt work and string value doesnt get added by PetInventory

10 messages · Page 1 of 1 (latest)

drowsy lily
#

Gui client

#

local TweenService = game:GetService("TweenService")

local camera = game.Workspace.Camera
local studio = game.Workspace.Studio

local template = script:WaitForChild("Template")
local scrollingFrame = script.Parent:WaitForChild("Pets"):WaitForChild("ScrollingFrame")

local function addToFrame(petName)
local newTemplate = template:Clone()
newTemplate.Name = petName
newTemplate.PetName.Text = petName
newTemplate.Parent = scrollingFrame

local petModel = game.ReplicatedStorage.Pets:FindFirstChild(petName)
if petModel then
    local newPet = petModel:Clone()
    newPet.Parent = newTemplate.ViewportFrame

    local camera = Instance.new("Camera")
    camera.CFrame = CFrame.new(newPet.PrimaryPart.Position + (newPet.PrimaryPart.CFrame.LookVector * 3), newPet.PrimaryPart.Position)
    camera.Parent = newTemplate.ViewportFrame

    Part 1
#

2newTemplate.ViewportFrame.CurrentCamera = camera
else
warn("Pet model not found in ReplicatedStorage: " .. petName)
end
end

game.ReplicatedStorage.HatchEgg.OnClientEvent:Connect(function(pet)
addToFrame(pet.Name)
camera.CameraType = Enum.CameraType.Scriptable
camera.CFrame = studio.CamPart.CFrame

wait(1.5)

for i = 1, 50, 1 do
    studio.Egg.Size = studio.Egg.Size + Vector3.new(0.1, 0.1, 0.1)
    wait(0.01)
end

local explosion = Instance.new("Explosion")
explosion.BlastRadius = 10
explosion.BlastPressure = 0
explosion.Position = studio.Egg.Position
explosion.ExplosionType = Enum.ExplosionType.NoCraters
explosion.DestroyJointRadiusPercent = 0

explosion.Parent = studio.Egg

studio.Egg.Transparency = 1

local petClone = pet:Clone()

for i, v in pairs(petClone:GetChildren()) do
    if v:IsA("BasePart") then
        v.Anchored = true
    end
end

for i, v in pairs(studio.Confetti:GetChildren()) do
    if v:IsA("ParticleEmitter") then
        v.Enabled = true
    end
end

petClone:SetPrimaryPartCFrame(CFrame.new(studio.Egg.Position, studio.CamPart.Position))
petClone.Parent = studio

local tweenInfo = TweenInfo.new(
    2,
    Enum.EasingStyle.Bounce,
    Enum.EasingDirection.Out,
    0,
    false,
    0
)

local targetCFrame = CFrame.new(petClone.PrimaryPart.Position + (petClone.PrimaryPart.CFrame.LookVector * 5) + Vector3.new(0, 0.75, 0))
local tween = TweenService:Create(camera, tweenInfo, {CFrame = targetCFrame})

tween:Play()

wait(5)

for i, v in pairs(studio.Confetti:GetChildren()) do
    if v:IsA("ParticleEmitter") then
        v.Enabled = false
    end
end

Part 2

#

camera.CameraType = Enum.CameraType.Custom
studio.Egg.Transparency = 0
studio.Egg.Size = Vector3.new(2.914, 5.285, 0.206)
petClone:Destroy()
end)

-- Petlerin envantere eklenmesi
game.Players.PlayerAdded:Connect(function(player)
local petInventory = player:WaitForChild("PetInventory")
petInventory.ChildAdded:Connect(function(pet)
addToFrame(pet.Name)
end)

-- Mevcut petleri ekleyelim
for _, pet in pairs(petInventory:GetChildren()) do
    addToFrame(pet.Name)
end

end) Part 3

#

sorry this was the Gui Client script

#

Main Script (serverscriptservice):

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

local petDataStore = DataStoreService:GetDataStore("PlayerPetData")
local cashDataStore = DataStoreService:GetDataStore("PlayerCashData")
local equippedPetDataStore = DataStoreService:GetDataStore("PlayerEquippedPetData")

local function savePlayerData(player)
local success, errorMessage = pcall(function()
local pets = {}
for _, pet in pairs(player.PetInventory:GetChildren()) do
table.insert(pets, pet.Name)
end
print("Saving pets for player " .. player.Name .. ": " .. table.concat(pets, ", "))
petDataStore:SetAsync(player.UserId, pets)
cashDataStore:SetAsync(player.UserId, player.leaderstats.Cash.Value)
equippedPetDataStore:SetAsync(player.UserId, player.EquippedPet.Value)
end)
if not success then
warn("Error saving data for player " .. player.Name .. ": " .. errorMessage)
end
end

local function loadPlayerData(player)
local success, errorMessage = pcall(function()
local pets = petDataStore:GetAsync(player.UserId)
local cash = cashDataStore:GetAsync(player.UserId)
local equippedPet = equippedPetDataStore:GetAsync(player.UserId)
if pets then
print("Loading pets for player " .. player.Name .. ": " .. table.concat(pets, ", "))
for _, petName in pairs(pets) do
local pet = Instance.new("StringValue")
pet.Name = petName
pet.Value = petName
pet.Parent = player.PetInventory
print("Added pet to inventory: " .. pet.Name)
end
else
print("No pets found for player " .. player.Name)
end
if cash then
player.leaderstats.Cash.Value = cash - part 1

#

else
print("No cash data found for player " .. player.Name)
end
if equippedPet then
player.EquippedPet.Value = equippedPet
else
print("No equipped pet data found for player " .. player.Name)
end
end)
if not success then
warn("Error loading data for player " .. player.Name .. ": " .. errorMessage)
end
end

Players.PlayerAdded:Connect(function(player)
local leaderstats = Instance.new("Folder")
leaderstats.Name = "leaderstats"
leaderstats.Parent = player

local cash = Instance.new("IntValue")
cash.Name = "Cash"
cash.Value = 500
cash.Parent = leaderstats

local inventory = Instance.new("Folder")
inventory.Name = "PetInventory"
inventory.Parent = player

local equippedPet = Instance.new("StringValue")
equippedPet.Name = "EquippedPet"
equippedPet.Parent = player

loadPlayerData(player)

end)

Players.PlayerRemoving:Connect(function(player)
savePlayerData(player)
end)

game:BindToClose(function()
for _, player in pairs(Players:GetPlayers()) do
savePlayerData(player)
end
end)

Part 2

#

i need a string for datasaving the cards but roblox studio wont create it

#

like here