View difference between Paste ID: gSScVmMG and ZvUwRqd0
SHOW: | | - or go back to the newest paste.
1
local runService = game:GetService("RunService")
2
local replicatedStorage = game:WaitForChild("ReplicatedStorage")
3
local replicatedFirst = game:WaitForChild("ReplicatedFirst")
4
5
local remotes = replicatedStorage:WaitForChild("Remotes")
6
7
local eggs = workspace:WaitForChild("Eggs")
8
9
local pets = replicatedFirst:WaitForChild("Pets")
10
11
local tweenService = game:GetService("TweenService")
12
13
local player = game.Players.LocalPlayer
14
local playerGui = player:WaitForChild("PlayerGui")
15
local screenGui = playerGui:WaitForChild("ScreenGui")
16
local center = screenGui:WaitForChild("Center")
17
local petInventory = center:WaitForChild("PetInventory")
18
local scrollingFrame = petInventory:WaitForChild("ScrollingFrame")
19
local template = scrollingFrame:WaitForChild("Template")
20
21
local module3D = require(replicatedStorage:WaitForChild("Module3D"))
22
23
local maxSelectedPets = 10
24
25
local selectedPets = 0
26
27
local function onTemplateClick(clickedTemplate, id)
28
29
	local equipped = clickedTemplate.Equipped.Value
30
31
	if not equipped and selectedPets < maxSelectedPets then
32
		clickedTemplate.Equipped.Value = true
33
		tweenService:Create(
34
			clickedTemplate, 
35
			TweenInfo.new(0.4), 
36
			{
37
				BackgroundColor3 = Color3.fromRGB(96,235,36)
38
			}
39
		):Play()
40
		selectedPets = selectedPets + 1
41
		remotes.EquipPet:FireServer(clickedTemplate.Name, id)
42
	elseif equipped then
43
		clickedTemplate.Equipped.Value = false
44
		tweenService:Create(clickedTemplate,
45
			TweenInfo.new(0.4), 
46
			{
47
				BackgroundColor3 = Color3.fromRGB(46,189,255)
48
			}
49
		):Play()
50
		selectedPets = selectedPets - 1
51
		remotes.UnequipPet:FireServer(clickedTemplate.Name, id)
52
	end
53
end
54
55
local function createTemplate(petName, id)
56
	local newTemplate = template:Clone()
57
	newTemplate.Name = petName
58
	newTemplate.Visible = true
59
	newTemplate.Parent = scrollingFrame
60
61
	local petModel3D = module3D:Attach3D(
62
		newTemplate:WaitForChild("Viewport"),
63
		pets:WaitForChild(petName):Clone())
64
	
65
	petModel3D:SetDepthMultiplier(2)
66
	petModel3D.CurrentCamera.FieldOfView = 5
67
	petModel3D.Visible = true
68
69
	runService.RenderStepped:Connect(function()
70
		petModel3D:SetCFrame(
71
			CFrame.Angles(
72
				0, 
73
				tick() % (math.pi * 2), 0) * CFrame.Angles(math.rad(-10), 0, 0))
74
	end)
75
76
	newTemplate.MouseButton1Click:Connect(function()
77
		onTemplateClick(newTemplate, id)
78
	end)
79
end
80
81
remotes:WaitForChild("CreateTemplate").OnClientEvent:Connect(function(name, id)
82
	createTemplate(name, id)
83
end)
84
85
86
local function Opening(pet, id, egg)
87
	local eggMesh = eggs:FindFirstChild(egg)
88
	eggMesh.ProximityPrompt.Enabled = false
89
	eggMesh.Transparency = 1
90
	local petModel = pets:FindFirstChild(pet):Clone()
91
	petModel.PrimaryPart.Position = eggMesh.Position
92
	petModel.Parent = workspace
93
	wait(5)
94
	petModel:Destroy()
95
	eggMesh.Transparency = 0
96
	eggMesh.ProximityPrompt.Enabled = true
97
	createTemplate(pet, id)
98
end
99
100
101
remotes:WaitForChild("Egg").OnClientEvent:Connect(Opening)