View difference between Paste ID: Hj4rbKma and W7Sr4Ee5
SHOW: | | - or go back to the newest paste.
1
local Buttons = script.Parent:WaitForChild("Buttons")
2
local Essentials = script.Parent:WaitForChild("Essentials")
3
local Purchases = script.Parent:WaitForChild("Purchases")
4
local TycoonInfo = script.Parent:WaitForChild("TycoonInfo")
5
local Owner = TycoonInfo:WaitForChild("Owner")
6
7
local Objects = {}
8
local DButtons = {}
9
10
for i, v in pairs (Buttons:GetChildren()) do
11
12
	-- zmienna Object do której zostanie przypisany obiekt do zakupu,
13
	-- jego nazwa została określona w Object danego przycisku (dany obiekt musi znajdować się w folderze Purchases).
14
	local Object = Purchases:FindFirstChild(v.Object.Value)
15
16
	-- jeżeli obiekt został znaleziony
17
	if Object then
18
		-- zostaje on sklonowany do tablicy Objects
19
		Objects[Object.Name] = Object:Clone()
20
		-- następnie jest niszczony
21
		Object:Destroy()
22
	end
23
24
	-- jeżeli w przycisku zostanie znaleziony obiekt o nazwie Dependency 
25
	if v:FindFirstChild("Dependency") then
26
		-- ustawienie przezroczystości części Button na 1 (spowoduje to, że przycisk zniknie)
27
		v.Button.Transparency = 1
28-
		-- ustawienie właściwości CanCollide części Button na false spowoduje, że kolizje nie będą go dotyczyć.
28+
		-- ustawienie właściwości CanTouch części Button na false spowoduje, że ten przycisk nie będzie reagować na zdarzenie Touched 					 
29-
		v.Button.CanCollide = false
29+
      	-- czyli moment kiedy zostanie dotknięty przez inny obiekt w grze będzie ignorowany
30
		v.Button.CanTouch = false
31
		-- umieszczenie przycisku w tablicy (pod nazwą obiektu po którym ma się pojawić)
32
		DButtons[v.Dependency.Value] = v
33
	end
34
35
	-- dodanie zdarzenia do każdego przycisku
36
	v.Button.Touched:Connect(function(Hit)
37
		-- sprawdzenie czy obiekt, który dotknął przycisk jest właścicielem tego Tycoona
38
		if ValidateHitByOwner(Hit) then
39
			-- jeżeli ten przycisk ma przezroczystość równą 0
40
			if v.Button.Transparency == 0 then
41
				-- do zmiennej object przypisz obiekt, który miał być zakupiony przez ten przycisk
42
				local object = Objects[v.Object.Value]
43
				-- przypisz object do folderu Purchases
44
				object.Parent = Purchases
45
				-- zniszcz przycisk
46
				v:Destroy()
47
48
				-- jeżeli przycisk zależny istnieje (co oznacza, że ma się pojawić gdy dany obiekt zostanie kupiony)
49
				if DButtons[object.Name] then	
50
					-- ustawienie przezroczystości części Button na 0 (spowoduje to, że przycisk pojawi się)
51-
					-- ustawienie właściwości CanCollide części Button na true spowoduje, że kolizje będą go dotyczyć.
51+
52-
					DButtons[object.Name].Button.CanCollide = true
52+
					-- ustawienie właściwości CanTouch części Button na true spowoduje, że zdarzenie Touched będzie go dotyczyć czyli 	 
53
  					--moment kiedy zostanie dotknięty przez inny obiekt w grze będzie wykryty
54
                    DButtons[object.Name].Button.CanTouch = true
55
				end
56
			end
57
		end
58
	end)
59
end
60
61
-- funkcja sprawdzająca właściciela Tycoona
62
function ValidateHitByOwner(Hit)
63
	-- sprawdź czy istnieje obiekt Hit i czy ma rodzica i czy znajduje się w nim Humanoid 
64
	if Hit and Hit.Parent and Hit.Parent:FindFirstChild("Humanoid") then
65
		-- pobierz gracza z characteru
66
		local Player = game.Players:GetPlayerFromCharacter(Hit.Parent)
67
		-- jeżeli gracz został znaleziony i gracz jest właścicielem Tycoona
68
		if Player and Player == Owner.Value then
69
			-- zwróć true
70
			return true
71
		end
72
	end
73
74
	-- jeżeli, któraś z powyższych instrukcji nie wykonała się, zwróć false
75
	return false
76
end
77
78
79