Hook Kütüphanesi Kullanımı
Hook kütüphanesi nedir?
Hook kütüphanesi, betiklerin oyun veya kullanıcı tarafından oluşturulan olaylarla (event) etkileşime girmesine olanak tanır. hook.Run veya hook.Call ile oluşturulan bir olaya bir fonksiyonu "takmanıza" (hook) ve bu olay gerçekleştiğinde bağımsız olarak çalışan veya olayın argümanlarını değiştiren bir kod çalıştırmanıza izin verir. Bu yöntem, kendi kodunuzu eklemek için fonksiyonları geçersiz kılmak (override) yerine tercih edilen yöntemdir.
Hook kütüphanesini kullanma
Hook ekleme
hook.Add fonksiyonunu kullanarak bir hook ekleyebilirsiniz. Bu fonksiyon aşağıdaki argümanları alır:
- Olay Adı (Event Name) - Hook'unuzu çalıştıracağınız olayın adıdır.
- Hook ID - Eklediğiniz hook'a özgü bir tanımlayıcıdır ve daha sonra hook'u kaldırmak için kullanılabilir.
- Hook Fonksiyonu (Hook Function) - Olay gerçekleştiğinde çalıştırılan fonksiyondur.
Aşağıda, bir oyuncu her doğduğunda konsola yazı yazdırmak için bir hook ekleme örneği bulunmaktadır:
Bu şekilde de yazılabilir:
Bu, bir oyuncu her doğduğunda konsola "{OyuncuAdı} doğdu!" yazdıracaktır.
Hook fonksiyonları
Bir hook çağrıldığında, olayına özgü argümanlar verilir. Her hook hakkındaki bilgilere bu wiki'de ve adreslerinde bulunabilir. Bazı hook'lara ise hiçbir argüman verilmez.
Oyun Modları ve hook'lar
GM (veya GAMEMODE) tablosu altındaki fonksiyonlar da hook olarak kabul edilir. Bir olay çalıştırıldığında, hook.Add kullanılarak tanımlanan tüm hook'lar, Oyun Modu (Gamemode) fonksiyonundan önce çağrılır.
Bu, bir oyun modu içindeki aşağıdaki kodun da bir oyuncu her doğduğunda konsola yazı yazdıracağı anlamına gelir:
Hook'lardan değer döndürme
Bir hook'tan bir değer döndürüldüğünde, aynı olay için olan diğer hook'lar çalışmaz. Bu, diğer hook'ları ve oyun modu fonksiyonlarını geçersiz kılabileceğiniz (override) anlamına gelir.
return ve return false farklıdır.Hook'tan döndürülen değerin onu etkileyip etkilemeyeceğini görmek için, o hook'un wiki sayfasında Returns bölümü olmalıdır.
Bu örnek, SANDBOX:PlayerSpawnProp olayının kullanımını gösterir. Bu olay, oyuncunun bir prop oluşturmasına izin veriliyorsa hook'ların true, aksi takdirde false döndürmesini bekler. Hiçbir şey döndürülmezse, bir sonraki hook'u çalıştırır.
Bu kod yalnızca adminlerin prop oluşturmasına izin verecektir. Her zaman bir değer döndürdüğü için diğer hook'ları geçersiz kılar.
Kendi olaylarınızı ekleme
Sadece hook.Run veya hook.Call'u çağırarak kendi olaylarınızı ekleyebilirsiniz. Eklentilerinizde meydana gelen her olay için bir hook oluşturmanıza gerek yoktur çünkü bu gereksiz olur; ancak bir oyun modunun harita değişikliğini kontrol etmesi gibi önemli şeyler veya harici betiklerin düzenlemesini istediğiniz olaylar için hook'lar olmalıdır.
Aşağıdaki örnek, "PerformMultiplication" olayına takılı olan tüm hook'ları çağırır ve her hook'a bir argüman sağlar.
Bu örnek 12 çıktısı verecektir.
Tüm sunucular · GmodTR Launcher · Rehber · GMod Wiki · GmodTR nedir? · Sunucu ekle · Discord