# duplicator.RegisterConstraint

- **Ortam:** İstemci, Sunucu
- **İngilizce aslı:** https://wiki.facepunch.com/gmod/duplicator.RegisterConstraint
- **Çeviri tarihi:** 2025-12-01

```lua
duplicator.RegisterConstraint( string name, function callback, ... )
```

## Açıklama

Duplicator tarafından desteklenen bir kısıtlama oluşturmak için kullanılan bir fonksiyonu kaydeder.

## Argümanlar

1. [string](https://gmod.tr/wiki/string) **name**: Yeni kısıtlamanın benzersiz adı. Duplicator yüklemesinde hangi kısıtlamanın uygulanacağını belirlemek için kullanılır.
2. [function](https://gmod.tr/wiki/function) **callback**: Bu kısıtlama oluşturulduğunda çağrılacak fonksiyon. Başka bir şey yapmadan önce [constraint.CanConstrain](https://gmod.tr/wiki/constraint.CanConstrain) fonksiyonunu kontrol etmek iyi bir fikirdir. Özel kısıtlama varlıkları (entity) oluşturuyorsanız [constraint.AddConstraintTable](https://gmod.tr/wiki/constraint.AddConstraintTable) fonksiyonunu da çağırmalısınız. - Bu, kısıtlamanın duplicator tarafından kaydedilip yüklenmesini ve [constraint.GetTable](https://gmod.tr/wiki/constraint.GetTable) tarafından kullanılmasını sağlayan yapıdır. - Kısıtlama varlığının üzerinde `Type` anahtarı olmalıdır. Bu, tek bir varlığın yalnızca bir kısıtlamayı temsil edebileceği anlamına gelir. İsteğe bağlı olarak, callback fonksiyonu "kısıtlama" varlıkları olarak kabul edilen en fazla 4 varlık döndürebilir. - Bunların her biri, varlığın sınıf adına (classname) göre `"ropeconstraints"` veya `"constraints"` temizleme listesine eklenir ([Player:AddCleanup](https://gmod.tr/wiki/Player:AddCleanup)). - İlk varlık, Sandbox modunda oyuncunun varlık sayısına eklenir ([Player:AddCount](https://gmod.tr/wiki/Player:AddCount)). - Bu varlıkların hiçbiri kısıtlanan 2 varlık (örneğin bir `prop_physics`) **olmamalıdır**, ancak ne yaptığınızı biliyorsanız bunlardan biri olabilir.
3. [vararg](https://gmod.tr/wiki/vararg) **customData**: Kısıtlama [duplicator.CreateConstraintFromTable](https://gmod.tr/wiki/duplicator.CreateConstraintFromTable) aracılığıyla oluşturulduğunda callback fonksiyonuna iletilecek argümanlar. Veri, [constraint.AddConstraintTable](https://gmod.tr/wiki/constraint.AddConstraintTable) ile eklenen kısıtlama varlığı tablosundan alınır. Tüm [constraint](https://gmod.tr/wiki/constraint) kütüphanesi kısıtlamaları, bunu sizin için uygun varlık üzerinde çağırır. (Genellikle bu, callback tarafından döndürülen ilk varlıktır)

### Örnek

Özel bir kısıtlamanın nasıl tanımlanacağına dair bir örnek. Kısıtlamayı özel `constraint_MyCustomConstraint` fonksiyonu aracılığıyla uygularsınız ve bu, duplicator'ı otomatik olarak destekleyecektir.

```lua
function constraint_MyCustomConstraint( Ent1, Ent2, MyCoolData )
	if ( !IsValid( Ent1 ) ) then return end
	if ( !IsValid( Ent2 ) ) then return end

	-- Özel kısıtlama kodunuz buraya, burada "MyCoolData" ve diğer özel argümanları kullanabilirsiniz
	-- Sadece her özel argümanı aşağıdaki Ent2 tablosuna kaydettiğinizden emin olun,
	-- ve bunları aşağıdaki duplicator.RegisterConstraint'e de ekleyin

	constraint.AddConstraintTable( Ent1, Ent2, Ent2 )

	Ent2:SetTable( {
		Type = "MyCustomConstraint",
		Ent1 = Ent1,
		Ent2 = Ent2,
		MyCoolData = MyCoolData
	} )

	return Ent2
end
duplicator.RegisterConstraint( "MyCustomConstraint", constraint_MyCustomConstraint, "Ent1", "Ent2", "MyCoolData" )
```

- [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/duplicator.RegisterConstraint
