duplicator.RegisterConstraint

  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 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 callback
Bu kısıtlama oluşturulduğunda çağrılacak fonksiyon.

Başka bir şey yapmadan önce constraint.CanConstrain fonksiyonunu kontrol etmek iyi bir fikirdir.

Özel kısıtlama varlıkları (entity) oluşturuyorsanız constraint.AddConstraintTable fonksiyonunu da çağırmalısınız.

  • Bu, kısıtlamanın duplicator tarafından kaydedilip yüklenmesini ve 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).
  • İlk varlık, Sandbox modunda oyuncunun varlık sayısına eklenir (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 customData
Kısıtlama duplicator.CreateConstraintFromTable aracılığıyla oluşturulduğunda callback fonksiyonuna iletilecek argümanlar.

Veri, constraint.AddConstraintTable ile eklenen kısıtlama varlığı tablosundan alınır. Tüm 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.

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" )

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