Rust sunucularında Oxide/uMod, plugin dosyalarını
plugins/ klasöründe alfabetik sırayla yükler. Bu davranışı değiştirmenin iki temel yolu vardır:- Dosya İsimleriyle Sıralama
AwesomeMod.dll→01_AwesomeMod.dllBetterBuild.dll→02_BetterBuild.dll- Leveled prefix (01–99) ile başlangıç sırasını kesinleştirir.
Avantaj: Hızlı uygulama, ek konfigürasyon gerekmez.
Kısıtlama: Sadece dosya adına dayanır; mod içindekiLoad()çağrıları hâlâ önceden tanımlanır.
priorityAlanı ile Sıralama
Özellik:Kod:// Inside plugin header [Info("MyPlugin", "1.0.0", "Author")] [Priority(Priority.Low)] public class MyPlugin : RustPlugin { }Prioritydeğerleri(Highest, High, Medium, Low, Lowest)olarak tanımlanır.
Avantaj: Mod içinde doğrudan değişiklik yaparak, yükleme sırası bağımsız olarak kontrol edilir.
Kısıtlama: Yalnızca OOP destekleyen pluginlerde çalışır; DLL olmayan modlar için geçerli değildir.
| Yöntem | Uygulanabilirlik | Kontrol Düzeyi | İhtiyaç Duyulan Ayarlar |
|---|---|---|---|
| Dosya İsimleri | Tüm modlar | Düşük | Sade alfabetik tersten düzenleme |
priority | Sadece C# pluginler | Yüksek | Header içinde Priority satırı |
Çakışma Önleme İpuçları
OnServerInitializedyerineOnPlayerInitkullanarak, oyuncu tabanlı event’lerde mod yüklenme sırasını kontrol edin.EventBus.Subscribe<T>(Action<T> callback, Priority)ile event dinleyicilerin önceliklerini ayarlayın.uMod.jsoniçindeAllowed,Deniedlisteleriyle, hangi pluginlerin birbirini çağırabileceğini sınırlayın.
Örnek Senaryo
Bir topluluğa ait bir mod, diğerininMapGen metodunu taklit etmek istiyor.- Dosya Sıralaması:
01_Atlas.dll,02_Procedural.dll→ Atlas önce yüklenir, ardından ProceduralOnMapGençağrısı ile çalışır. - Priority:
Atlas’taPriority.High,Procedural’daPriority.Low→ Zamanlayıcıyı değiştirme ihtiyacı kalmaz.
Sizin sunucunuzda hangi yöntemle mod sırası değiştirmeyi tercih edersiniz ve neden?