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 |