# hook.Add

- **Ortam:** İstemci, Sunucu, Menü
- **İngilizce aslı:** https://wiki.facepunch.com/gmod/hook.Add
- **Çeviri tarihi:** 2025-09-08

```lua
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](https://gmod.tr/wiki/hook) sistemine bir fonksiyonu ("callback") kaydeder.

## Argümanlar

1. [string](https://gmod.tr/wiki/string) **eventName**: Hook'un bağlanacağı olay. Bu, herhangi bir [GM](https://gmod.tr/wiki/GM_Hooks) hook'u, [gameevent.Listen](https://gmod.tr/wiki/gameevent.Listen) kullanıldıktan sonra bir gameevent veya [hook.Call](https://gmod.tr/wiki/hook.Call) ya da [hook.Run](https://gmod.tr/wiki/hook.Run) ile çalıştırılan özel bir hook olabilir.
2. [any](https://gmod.tr/wiki/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](https://gmod.tr/wiki/string) veya [Entity](https://gmod.tr/wiki/Entity) ya da [Panel](https://gmod.tr/wiki/Panel) gibi `IsValid` fonksiyonu tanımlanmış bir [table](https://gmod.tr/wiki/table)/nesne olabilir. Örneğin, [number](https://gmod.tr/wiki/number) ve [boolean](https://gmod.tr/wiki/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](https://gmod.tr/wiki/function) **func**: Çağrılacak fonksiyon; kendisine verilen argümanlar, kullanılan tanımlayıcıya bağlıdır. > **UYARI:** 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.

```lua
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.

```lua
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.

```lua
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]"

- [GMod Wiki ana sayfası](https://gmod.tr/wiki)

---

[Tüm sunucular](https://gmod.tr/) · [GmodTR Launcher](https://gmod.tr/launcher) · [Rehber](https://gmod.tr/rehber) · [GMod Wiki](https://gmod.tr/wiki) · [GmodTR nedir?](https://gmod.tr/hakkinda) · [Sunucu ekle](https://gmod.tr/sunucu-ekle) · [Discord](https://discord.gg/gmodtr)

Kaynak: https://gmod.tr/wiki/hook.Add
