hook.Add

  hook.Add( string eventName, any identifier, function func )

Açıklama

Belirli bir olay ("hook") meydana geldiğinde otomatik olarak çağrılması için Hook sistemine bir fonksiyonu ("callback") kaydeder.

Argümanlar

1 string eventName
Hook'un bağlanacağı olay. Bu, herhangi bir GM hook'u, gameevent.Listen kullanıldıktan sonra bir gameevent veya hook.Call ya da hook.Run ile çalıştırılan özel bir hook olabilir.
2 any identifier
Genellikle bir string olan benzersiz tanımlayıcı. Bu, kodun başka bir yerinde hook'u değiştirmek veya kaldırmak için kullanılabilir. Tanımlayıcı, başka bir modun hook'unu yanlışlıkla geçersiz kılmamanız için benzersiz olmalıdır, tabii eğer yapmaya çalıştığınız şey bu değilse.

Tanımlayıcı, bir string veya Entity ya da Panel gibi `IsValid` fonksiyonu tanımlanmış bir table/nesne olabilir. Örneğin, number ve boolean türlerine izin verilmez.

Eğer tanımlayıcı bir tablo/nesne ise, geri çağrıdaki (callback) diğer argümanların önüne eklenir ve geçerli olduğu sürece hook çağrılır. Ancak, `IsValid( identifier )` fonksiyonu herhangi bir `eventName` hook'u çağrıldığında `false` döndürürse, hook kaldırılır.

3 function func
Çağrılacak fonksiyon; kendisine verilen argümanlar, kullanılan tanımlayıcıya bağlıdır.
Hook'un fonksiyonundan `nil` dışında herhangi bir değer döndürmek, döngüdeki aynı olaya ait diğer hook'ların çalışmasını durduracaktır. Yalnızca kesinlikle gerekli olduğunda ve ne yaptığınızı bildiğinizde bir değer döndürün.

Ayrıca, ilgili GM:* hook'unun oyun modunda (gamemode) çağrılmasını da engelleyecektir.

Diğer eklentileri (addon) BOZACAKTIR.

Örnek

Bu, "Think" olayına onThink fonksiyonu ile bağlanacak ve olay her meydana geldiğinde konsola çıktı yazdıracaktır.

local function onThink() print( "onThink has been called" ) end hook.Add( "Think", "Some unique name", onThink )
Çıktı: "onThink has been called" sürekli olarak tekrarlanır.

Örnek

Bu, yukarıdakiyle aynı şekilde çalışır, ancak fonksiyonu üstünde tanımlamak yerine `hook.Add` içinde tanımlar.

hook.Add( "Think", "Another unique name", function() print( "Think has been called" ) end )
Çıktı: "Think has been called" sürekli olarak tekrarlanır.

Örnek

Bu kod, bir sarmalayıcı (wrapper) fonksiyon kullanmadan 'self' argümanına sahip bir tablo fonksiyonunu nasıl ekleyebileceğinizi gösterir.

local myTable = {} function myTable:IsValid() return true end function myTable:PlayerInitialSpawn(ply) print( "CustomHook", self, ply ) end hook.Add( "CustomHook" , myTable , myTable.PlayerInitialSpawn ) hook.Run( "CustomHook" )
Çıktı: "CustomHook table: 0x00000000 Player [1][PotatoMan]"

Tüm sunucular · GmodTR Launcher · Rehber · GMod Wiki · GmodTR nedir? · Sunucu ekle · Discord