GrandMA3 Plugin ile Dinamik Sequence Yönetimi
GrandMA3 plugin sistemi kullanarak sequence'larınızı programatik olarak nasıl dinamik şekilde yöneteceğinizi öğrenin.
GrandMA3 Plugin ile Dinamik Sequence Yönetimi
GrandMA3'ün güçlü plugin altyapısı, Lua programlama dili sayesinde show dosyanızdaki sequence'ları çalışma anında okuyup değiştirmenize olanak tanır. Manuel müdahale gerektiren tekrarlayan görevleri otomatize etmek ve karmaşık cue akışlarını dinamik olarak yönetmek artık mümkün.
Plugin Ortamını Hazırlama
Başlamadan önce GrandMA3 yazılımında bir Lua plugin dosyası oluşturmanız gerekir. Menu > Plugins yolunu izleyerek yeni bir plugin ekleyin ve aşağıdaki temel yapıyı kullanın:
local function main() -- kodunuz buraya end return main
Plugin fonksiyonunuz her çağrıldığında main() bloğu çalışır. Bu yapıyı doğru kurmazsanız plugin çalışmaz veya hata verir.
Sequence Objelerine Erişmek
GrandMA3 plugin API'sinde sequence'lara erişmek için DataPool üzerinden navigate etmeniz gerekir. Bir sequence'ı isme göre bulmak için şu yöntemi kullanabilirsiniz:
local seq = DataPool().Sequences["MySequence"]
Index numarasıyla da erişebilirsiniz:
local seq = DataPool().Sequences[1]
İpucu: Sequence isimlerini show dosyanızda tutarlı tutun. Plugin'ler isme göre referans verdiğinde, isim değişikliği scriptin çalışmamasına neden olabilir.
Dinamik Cue Yönetimi
Bir sequence'ın cue'larına erişip üzerinde işlem yapmak için aşağıdaki yapıyı kullanabilirsiniz. Örneğin tüm cue'ları listeleyip belirli bir cue'nun adını değiştirmek:
local seq = DataPool().Sequences["MainShow"] if seq then for i = 1, seq.CueList.Count do local cue = seq.CueList[i] Printf("%s: %s", i, cue.Name) end end
Bu döngü, sequence içindeki her cue'yu sırayla okur ve konsol komut satırına yazdırır. Printf() fonksiyonu GrandMA3 plugin ortamında debug için temel araçtır.
Sequence'ı Programatik Olarak Tetikleme
Plugin içinden doğrudan konsol komutlarını çalıştırmak için Cmd() fonksiyonu kullanılır. Bu sayede sequence başlatma, durdurma ve cue atlamaları programatik olarak gerçekleştirilebilir:
Cmd("Go+ Sequence 1")— Sequence'ı ileri alırCmd("Go- Sequence 1")— Sequence'ı geri alırCmd("Goto Sequence 1 Cue 5")— Doğrudan belirli cue'ya atlarCmd("Off Sequence 1")— Sequence'ı kapatır
Pratik Kullanım: Rastgele Cue Seçimi
Aşağıdaki örnek, bir sequence içinden rastgele bir cue seçip oraya atlayan basit ama etkili bir plugin yapısını gösterir:
local function main() local seq = DataPool().Sequences["AmbientLoop"] if seq then local count = seq.CueList.Count local randomCue = math.random(1, count) Cmd("Goto Sequence \"AmbientLoop\" Cue " .. randomCue) end end return main
Bu yaklaşım özellikle ambient aydınlatma senaryolarında, konser aralarında veya loop tabanlı gösterilerde sahneye canlılık katmak için kullanışlıdır.
Senkronizasyon ve Zamanlama
Plugin'lerin cue geçişleriyle senkron çalışması için coroutine yapısından veya GrandMA3'ün yerleşik WaitTime() fonksiyonundan yararlanabilirsiniz:
- Plugin'i bir executor butonuna atayın
WaitTime(saniye)ile bekleme süreleri ekleyin- Döngüsel görevler için
while true doyapısını dikkatli kullanın, mutlaka çıkış koşulu ekleyin
Dikkat: Sonsuz döngüler GrandMA3 konsolunu dondurabilir. Herwhiledöngüsüne mutlaka birWaitTime()çağrısı ekleyin; aksi hâlde konsol yanıt vermez hale gelebilir.