View difference between Paste ID: Ay3BzseW and A8Vsy2e8
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 czyli moment kiedy zostanie dotknięty przez inny obiekt w grze będzie ignorowany
29-
        v.Button.CanCollide = false
29+
        v.Button.CanTouch = false
30
        -- wyłączenie widoczności BillboardGui
31
        v.Button.BillboardGui.Enabled = false
32
        -- umieszczenie przycisku w tablicy (pod nazwą obiektu po którym ma się pojawić)
33
        DButtons[v.Dependency.Value] = v
34
    end
35
 
36
    -- dodanie zdarzenia do każdego przycisku
37
    v.Button.Touched:Connect(function(Hit)
38
        -- sprawdzenie czy obiekt, który dotknął przycisk jest właścicielem tego Tycoona
39
        if ValidateHitByOwner(Hit) then
40
            -- jeżeli ten przycisk ma przezroczystość równą 0
41
            if v.Button.Transparency == 0 then
42
                -- do zmiennej object przypisz obiekt, który miał być zakupiony przez ten przycisk
43
                local object = Objects[v.Object.Value]
44
                -- przypisz object do folderu Purchases
45
                object.Parent = Purchases
46
                -- zniszcz przycisk
47
                v:Destroy()
48
 
49
   -- jeżeli przycisk zależny istnieje (co oznacza, że ma się pojawić gdy dany obiekt zostanie kupiony)
50
                if DButtons[object.Name] then   
51
   -- ustawienie przezroczystości części Button na 0 (spowoduje to, że przycisk pojawi się)
52
                    DButtons[object.Name].Button.Transparency = 0 
53-
   -- ustawienie właściwości CanCollide części Button na true spowoduje, że kolizje będą go dotyczyć.
53+
   -- ustawienie właściwości CanTouch części Button na true spowoduje, że zdarzenie Touched będzie go dotyczyć czyli moment kiedy zostanie dotknięty przez inny obiekt w grze będzie wykryty
54-
                    DButtons[object.Name].Button.CanCollide = true
54+
                    DButtons[object.Name].Button.CanTouch = true
55
                    -- włączenie widoczności BillboardGui
56
                    DButtons[object.Name].Button.BillboardGui.Enabled = true
57
                end
58
            end
59
        end
60
    end)
61
end
62
 
63
-- funkcja sprawdzająca właściciela Tycoona
64
function ValidateHitByOwner(Hit)
65
    -- sprawdź czy istnieje obiekt Hit i czy ma rodzica i czy znajduje się w nim Humanoid 
66
    if Hit and Hit.Parent and Hit.Parent:FindFirstChild("Humanoid") then
67
        -- pobierz gracza z characteru
68
        local Player = game.Players:GetPlayerFromCharacter(Hit.Parent)
69
        -- jeżeli gracz został znaleziony i gracz jest właścicielem Tycoona
70
        if Player and Player == Owner.Value then
71
            -- zwróć true
72
            return true
73
        end
74
    end
75
 
76
    -- jeżeli, któraś z powyższych instrukcji nie wykonała się, zwróć false
77
    return false
78
end
79