Advertisement
HanzerCopy

Script balok menghilang dan muncul kembali

Apr 2nd, 2025
187
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.93 KB | Source Code | 0 0
  1. -- Script ini diletakkan di ServerScriptService
  2. -- Menggunakan TweenService untuk animasi fade pada Part bernama "Del"
  3.  
  4. local Workspace = game:GetService("Workspace")
  5. local TweenService = game:GetService("TweenService") -- Mengambil layanan TweenService
  6.  
  7. local targetName = "Del" -- Nama Part yang akan diberi efek
  8. local delayReappear = 5    -- Detik sebelum balok muncul kembali
  9.  
  10. -- Pengaturan untuk animasi Tween
  11. local tweenDuration = 0.6 -- Durasi animasi fade dalam detik (bisa diubah)
  12. local easingStyle = Enum.EasingStyle.Quad -- Gaya animasi (Linear, Quad, Cubic, Sine, Bounce, dll.)
  13. local easingDirection = Enum.EasingDirection.Out -- Arah animasi (In, Out, InOut)
  14.  
  15. -- Membuat objek TweenInfo yang akan digunakan untuk kedua animasi
  16. local fadeInfo = TweenInfo.new(
  17.     tweenDuration,
  18.     easingStyle,
  19.     easingDirection
  20.     -- Bisa ditambahkan parameter lain jika perlu: delayTime, repeatCount, reverses
  21. )
  22.  
  23. -- Tabel untuk melacak status debounce untuk setiap part secara individual
  24. local partDebounce = {}
  25.  
  26. -- Fungsi untuk membuat Part menghilang dengan transisi TweenService
  27. local function fadeOut(part)
  28.     if not part or not part.Parent then return end
  29.     -- print("TweenService: Memulai Fade Out untuk", part:GetFullName()) -- DIHAPUS/DIKOMENTARI
  30.  
  31.     -- Buat Tween untuk mengubah Transparency menjadi 1
  32.     local fadeOutTween = TweenService:Create(part, fadeInfo, {Transparency = 1})
  33.     fadeOutTween:Play() -- Mulai animasi
  34.  
  35.     -- Tunggu hingga animasi selesai sebelum membuat non-collidable
  36.     fadeOutTween.Completed:Wait()
  37.  
  38.     -- Cek lagi jika part masih ada setelah menunggu tween
  39.     if part and part.Parent then
  40.         part.CanCollide = false -- Baru nonaktifkan tumbukan setelah benar-benar hilang
  41.         -- print("TweenService: Fade Out Selesai, CanCollide=false untuk", part:GetFullName()) -- DIHAPUS/DIKOMENTARI
  42.     end
  43. end
  44.  
  45. -- Fungsi untuk membuat Part muncul kembali dengan transisi TweenService
  46. local function fadeIn(part)
  47.     if not part or not part.Parent then return end
  48.     -- print("TweenService: Memulai Fade In untuk", part:GetFullName()) -- DIHAPUS/DIKOMENTARI
  49.  
  50.     -- Aktifkan kembali tumbukan SEBELUM animasi dimulai
  51.     part.CanCollide = true
  52.  
  53.     -- Buat Tween untuk mengubah Transparency menjadi 0
  54.     local fadeInTween = TweenService:Create(part, fadeInfo, {Transparency = 0})
  55.     fadeInTween:Play() -- Mulai animasi
  56.  
  57.     -- Kita tidak perlu menunggu fadeIn selesai di sini, kecuali ada logika lain sesudahnya
  58.     -- fadeInTween.Completed:Wait()
  59.     -- if part and part.Parent then print("TweenService: Fade In Selesai untuk", part:GetFullName()) end -- SUDAH DIKOMENTARI
  60. end
  61.  
  62. -- Fungsi untuk menyiapkan event listener pada sebuah Part
  63. local function setupPart(part)
  64.     if part:GetAttribute("IsSetup") then return end
  65.  
  66.     -- print("Menyiapkan efek (TweenService) untuk Part:", part:GetFullName()) -- Pesan Debug -- DIHAPUS/DIKOMENTARI
  67.  
  68.     part:SetAttribute("IsSetup", true)
  69.     partDebounce[part] = false
  70.  
  71.     part.Touched:Connect(function(hit)
  72.         if not part or not part.Parent then return end -- Cek cepat jika part masih valid
  73.  
  74.         local playerCharacter = hit.Parent
  75.         local humanoid = playerCharacter:FindFirstChildWhichIsA("Humanoid")
  76.  
  77.         if humanoid and not partDebounce[part] then
  78.             partDebounce[part] = true -- Aktifkan debounce
  79.  
  80.             fadeOut(part) -- Panggil fungsi fadeOut versi TweenService
  81.  
  82.             -- Cek jika part masih ada sebelum delay dan fadeIn
  83.             if part and part.Parent then
  84.                 task.wait(delayReappear) -- Tunggu
  85.  
  86.                 -- Cek lagi setelah delay
  87.                 if part and part.Parent then
  88.                     fadeIn(part) -- Panggil fungsi fadeIn versi TweenService
  89.                 end
  90.             end
  91.  
  92.             -- Reset debounce setelah proses dimulai (fadeIn tidak ditunggu)
  93.             -- Pastikan part masih ada saat reset
  94.             if part and partDebounce[part] then
  95.                 partDebounce[part] = false
  96.             elseif not part and partDebounce[part] ~= nil then
  97.                 partDebounce[part] = nil
  98.             end
  99.         end
  100.     end)
  101.  
  102.     -- Tangani kasus jika Part dihancurkan
  103.     part.Destroying:Connect(function()
  104.         if partDebounce[part] ~= nil then
  105.             partDebounce[part] = nil
  106.             -- print("Membersihkan debounce (TweenService) untuk Part yang dihancurkan:", part.Name) -- DIHAPUS/DIKOMENTARI
  107.             -- Opsional: Kode untuk menghentikan tween
  108.             -- ... (kode tween cancel tetap dikomentari)
  109.         end
  110.     end)
  111. end
  112.  
  113. -- Fungsi utama untuk mencari dan menyiapkan semua Part "Del" yang ada
  114. local function initializeAllDelParts()
  115.     for _, descendant in ipairs(Workspace:GetDescendants()) do
  116.         if descendant:IsA("BasePart") and descendant.Name == targetName then
  117.             setupPart(descendant)
  118.         end
  119.     end
  120. end
  121.  
  122. -- Menangani Part "Del" yang mungkin ditambahkan ke Workspace SETELAH game dimulai
  123. Workspace.DescendantAdded:Connect(function(descendant)
  124.     if descendant:IsA("BasePart") and descendant.Name == targetName then
  125.         task.wait()
  126.         setupPart(descendant)
  127.     end
  128. end)
  129.  
  130. -- Jalankan pencarian awal saat script pertama kali dimuat
  131. initializeAllDelParts()
  132.  
  133. -- print("Script Server (TweenService) untuk Part '" .. targetName .. "' telah dimuat dan siap.") -- DIHAPUS/DIKOMENTARI
  134.  
  135.  
Advertisement
Comments
Add Comment
Please, Sign In to add comment
Advertisement