Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Script ini diletakkan di ServerScriptService
- -- Menggunakan TweenService untuk animasi fade pada Part bernama "Del"
- local Workspace = game:GetService("Workspace")
- local TweenService = game:GetService("TweenService") -- Mengambil layanan TweenService
- local targetName = "Del" -- Nama Part yang akan diberi efek
- local delayReappear = 5 -- Detik sebelum balok muncul kembali
- -- Pengaturan untuk animasi Tween
- local tweenDuration = 0.6 -- Durasi animasi fade dalam detik (bisa diubah)
- local easingStyle = Enum.EasingStyle.Quad -- Gaya animasi (Linear, Quad, Cubic, Sine, Bounce, dll.)
- local easingDirection = Enum.EasingDirection.Out -- Arah animasi (In, Out, InOut)
- -- Membuat objek TweenInfo yang akan digunakan untuk kedua animasi
- local fadeInfo = TweenInfo.new(
- tweenDuration,
- easingStyle,
- easingDirection
- -- Bisa ditambahkan parameter lain jika perlu: delayTime, repeatCount, reverses
- )
- -- Tabel untuk melacak status debounce untuk setiap part secara individual
- local partDebounce = {}
- -- Fungsi untuk membuat Part menghilang dengan transisi TweenService
- local function fadeOut(part)
- if not part or not part.Parent then return end
- -- print("TweenService: Memulai Fade Out untuk", part:GetFullName()) -- DIHAPUS/DIKOMENTARI
- -- Buat Tween untuk mengubah Transparency menjadi 1
- local fadeOutTween = TweenService:Create(part, fadeInfo, {Transparency = 1})
- fadeOutTween:Play() -- Mulai animasi
- -- Tunggu hingga animasi selesai sebelum membuat non-collidable
- fadeOutTween.Completed:Wait()
- -- Cek lagi jika part masih ada setelah menunggu tween
- if part and part.Parent then
- part.CanCollide = false -- Baru nonaktifkan tumbukan setelah benar-benar hilang
- -- print("TweenService: Fade Out Selesai, CanCollide=false untuk", part:GetFullName()) -- DIHAPUS/DIKOMENTARI
- end
- end
- -- Fungsi untuk membuat Part muncul kembali dengan transisi TweenService
- local function fadeIn(part)
- if not part or not part.Parent then return end
- -- print("TweenService: Memulai Fade In untuk", part:GetFullName()) -- DIHAPUS/DIKOMENTARI
- -- Aktifkan kembali tumbukan SEBELUM animasi dimulai
- part.CanCollide = true
- -- Buat Tween untuk mengubah Transparency menjadi 0
- local fadeInTween = TweenService:Create(part, fadeInfo, {Transparency = 0})
- fadeInTween:Play() -- Mulai animasi
- -- Kita tidak perlu menunggu fadeIn selesai di sini, kecuali ada logika lain sesudahnya
- -- fadeInTween.Completed:Wait()
- -- if part and part.Parent then print("TweenService: Fade In Selesai untuk", part:GetFullName()) end -- SUDAH DIKOMENTARI
- end
- -- Fungsi untuk menyiapkan event listener pada sebuah Part
- local function setupPart(part)
- if part:GetAttribute("IsSetup") then return end
- -- print("Menyiapkan efek (TweenService) untuk Part:", part:GetFullName()) -- Pesan Debug -- DIHAPUS/DIKOMENTARI
- part:SetAttribute("IsSetup", true)
- partDebounce[part] = false
- part.Touched:Connect(function(hit)
- if not part or not part.Parent then return end -- Cek cepat jika part masih valid
- local playerCharacter = hit.Parent
- local humanoid = playerCharacter:FindFirstChildWhichIsA("Humanoid")
- if humanoid and not partDebounce[part] then
- partDebounce[part] = true -- Aktifkan debounce
- fadeOut(part) -- Panggil fungsi fadeOut versi TweenService
- -- Cek jika part masih ada sebelum delay dan fadeIn
- if part and part.Parent then
- task.wait(delayReappear) -- Tunggu
- -- Cek lagi setelah delay
- if part and part.Parent then
- fadeIn(part) -- Panggil fungsi fadeIn versi TweenService
- end
- end
- -- Reset debounce setelah proses dimulai (fadeIn tidak ditunggu)
- -- Pastikan part masih ada saat reset
- if part and partDebounce[part] then
- partDebounce[part] = false
- elseif not part and partDebounce[part] ~= nil then
- partDebounce[part] = nil
- end
- end
- end)
- -- Tangani kasus jika Part dihancurkan
- part.Destroying:Connect(function()
- if partDebounce[part] ~= nil then
- partDebounce[part] = nil
- -- print("Membersihkan debounce (TweenService) untuk Part yang dihancurkan:", part.Name) -- DIHAPUS/DIKOMENTARI
- -- Opsional: Kode untuk menghentikan tween
- -- ... (kode tween cancel tetap dikomentari)
- end
- end)
- end
- -- Fungsi utama untuk mencari dan menyiapkan semua Part "Del" yang ada
- local function initializeAllDelParts()
- for _, descendant in ipairs(Workspace:GetDescendants()) do
- if descendant:IsA("BasePart") and descendant.Name == targetName then
- setupPart(descendant)
- end
- end
- end
- -- Menangani Part "Del" yang mungkin ditambahkan ke Workspace SETELAH game dimulai
- Workspace.DescendantAdded:Connect(function(descendant)
- if descendant:IsA("BasePart") and descendant.Name == targetName then
- task.wait()
- setupPart(descendant)
- end
- end)
- -- Jalankan pencarian awal saat script pertama kali dimuat
- initializeAllDelParts()
- -- print("Script Server (TweenService) untuk Part '" .. targetName .. "' telah dimuat dan siap.") -- DIHAPUS/DIKOMENTARI
Advertisement
Advertisement