Advertisement
giganciprogramowania

9. Roblox Studio - Tajniki budowniczego Robloxa – wstęp do Tycoona - TycoonScript

Mar 9th, 2022 (edited)
536
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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 CanTouch części Button na false spowoduje, że ten przycisk nie będzie reagować na zdarzenie Touched                    
  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.                     DButtons[object.Name].Button.Transparency = 0
  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.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement