In-Game Error:
When I’m Inside Of Studio It Works, But When I’m In The Published Game I Get Errors
When E Activated Script:
local cost = 500
local petModule = require(game.ServerScriptService.Modules:WaitForChild("PetModule"))
script.Parent.ProximityPrompt.Triggered:Connect(function(player)
if player.leaderstats.Coins.Value >= cost then
player.leaderstats.Coins.Value = player.leaderstats.Coins.Value - cost
print(player.Name.."Purchased This Egg")
local pet = petModule.chooseRandomPet2ndEgg()
print(pet.Name.." selected")
game.ReplicatedStorage.HatchEgg:FireClient(player,pet)
local petVal = Instance.new("StringValue")
petVal.Name = pet.Name
petVal.Parent = player.PetInventory
end
end)
Module:
local petModule = {}
petModule.petsBasic = {
["Legendary"] = {
game.ReplicatedStorage.Pets.Bee;
};
["Rare"] = {
game.ReplicatedStorage.Pets.Bear;
};
["Uncommon"] = {
game.ReplicatedStorage.Pets["Lava Lord"];
};
["Common"] = {
game.ReplicatedStorage.Pets.Monkey;
game.ReplicatedStorage.Pets.TV;
};
}
petModule.pets2ndEgg = {
["Legendary"] = {
game.ReplicatedStorage.Pets.Bee;
};
["Rare"] = {
game.ReplicatedStorage.Pets.Bear;
};
["Uncommon"] = {
game.ReplicatedStorage.Pets["Lava Lord"];
};
["Common"] = {
game.ReplicatedStorage.Pets.Monkey;
game.ReplicatedStorage.Pets.TV;
};
}
-- 100 total weight
petModule.raritiesBasic = {
["Legendary"] = 5;
["Rare"] = 15;
["Uncommon"] = 30;
["Common"] = 50;
}
petModule.rarities2ndEgg = {
["Legendary"] = 5;
["Rare"] = 15;
["Uncommon"] = 30;
["Common"] = 50;
}
petModule.chooseRandomPetBasicEgg = function()
local randomNumber = math.random(1,100)
local counter = 0
for rarity, weight in pairs(petModule.raritiesBasic) do
counter = counter + weight
if randomNumber <= counter then
local rarityTable = petModule.petsBasic[rarity]
local chosenPet = rarityTable[math.random(1,#rarityTable)]
return chosenPet
end
end
end
petModule.chooseRandomPet2ndEgg = function()
local randomNumber = math.random(1,100)
local counter = 0
for rarity, weight in pairs(petModule.rarities2ndEgg) do
counter = counter + weight
if randomNumber <= counter then
local rarityTable = petModule.pets2ndEgg[rarity]
local chosenPet = rarityTable[math.random(1,#rarityTable)]
return chosenPet
end
end
end
return petModule
GuiClient:
local TweenService = game:GetService("TweenService")
local camera = game.Workspace.Camera
local studio = game.Workspace.PetSystem.Studio
local template = script:WaitForChild("Template")
local scrollingFrame = script.Parent:WaitForChild("ScrollingFrame")
local buttonConnections = {}
local function setTemplateEquipped(template)
for i, v in pairs(scrollingFrame:GetChildren()) do
if v:FindFirstChild("Equipped") then
v.Equipped.Text = "UNEQUIPPED"
v.Equipped.TextColor3 = Color3.fromRGB(255,0,0)
end
end
template.Equipped.Text = "EQUIPPED"
template.Equipped.TextColor3 = Color3.fromRGB(0,255,0)
end
local function addToFrame(pet)
local newTemplate = template:Clone()
newTemplate.Name = pet.Name
newTemplate.PetName.Text = pet.Name
newTemplate.Parent = scrollingFrame
local newPet = pet: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
newTemplate.ViewportFrame.CurrentCamera = camera
buttonConnections[#buttonConnections + 1] = newTemplate.MouseButton1Click:Connect(function()
if newTemplate.Equipped.Text == "EQUIPPED" then
-- We know that as it is already equipped they want to unequip it
game.ReplicatedStorage.UnequipPet:FireServer()
newTemplate.Equipped.Text = "UNEQUIPPED"
newTemplate.Equipped.TextColor3 = Color3.fromRGB(255,0,0)
else
-- We know that it is already UNEQUIPPEd and they want to equip it
game.ReplicatedStorage.EquipPet:FireServer(pet.Name)
setTemplateEquipped(newTemplate)
end
end)
end
game.ReplicatedStorage.SendData.OnClientEvent:Connect(function(petNames)
print("picked up on the client")
for i, petName in pairs(petNames) do
if game.ReplicatedStorage.Pets:FindFirstChild(petName) then
addToFrame(game.ReplicatedStorage.Pets:FindFirstChild(petName))
end
end
end)
game.ReplicatedStorage.SetEquippedPet.OnClientEvent:Connect(function(petName)
if scrollingFrame:FindFirstChild(petName) then -- Double checking that the pet template has been crated
setTemplateEquipped(scrollingFrame[petName])
end
end)
game.ReplicatedStorage.HatchEgg.OnClientEvent:Connect(function(pet)
addToFrame(pet)
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
-- By now the egg is huge
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 tween = TweenService:Create(camera, tweenInfo, {CFrame = CFrame.new(petClone.PrimaryPart.Position + (petClone.PrimaryPart.CFrame.lookVector * 5) + Vector3.new(0,0.75,0), petClone.PrimaryPart.Position)})
tween:Play()
wait(5)
for i,v in pairs(studio.Confetti:GetChildren()) do
if v:IsA("ParticleEmitter") then
v.Enabled = false
end
end
camera.CameraType = Enum.CameraType.Custom
studio.Egg.Transparency = 0
studio.Egg.Size = Vector3.new(4.732, 6, 4.732)
petClone:Destroy()
end)