Rust eklentileri (plugin): Oxide ve Carbon temelleri
Kısa cevap: sunucuya Oxide ya da Carbon kur, sonra bir eklentinin .cs dosyasını oxide/plugins/ ya da carbon/plugins/ içine at. Kendiliğinden, yeniden başlatmadan yüklenir ve ayar dosyası ilk yüklendiğinde config klasöründe belirir.
Bir Rust eklentisi, bir modlama altyapısının derleyip dedicated sunucunun içinde çalıştırdığı tek bir C# dosyasıdır (.cs). Eklentiler sadece sunucuda çalışır, yani oyuncular hiçbir şey kurmaz. Vanilla bir sunucu onları çalıştıramaz: önce sunucuda Oxide ya da Carbon olmalı.
Oxide mi Carbon mu
Bölüm başlığı “Oxide mi Carbon mu”İkisi de aynı türde eklenti yükler ve bir sunucuda aynı anda sadece biri olabilir, çünkü ikisi de aynı oyun dosyalarını yamalar.
- Oxide (uMod olarak da bilinir) köklü olandır. Dosyaları sunucunun
oxide/klasöründe durur. - Carbon daha yenidir ve Oxide için yazılmış eklentileri de yükler. Dosyaları
carbon/klasöründe durur.
Crucible Local Server, onda bir sunucu oluşturduğunda ikisinden birini senin için kurar ve eklentilerini Modlar sekmesinde yönetir; bkz. Rust sunucusuna Carbon ya da Oxide nasıl kurulur.
Eklenti dosyaları nereye gider
Bölüm başlığı “Eklenti dosyaları nereye gider”| Ne | Oxide | Carbon |
|---|---|---|
Eklentiler (.cs) | oxide/plugins/ | carbon/plugins/ |
Her eklentinin ayarları (.json) | oxide/config/ | carbon/configs/ |
| Bir eklentinin kaydettiği veri | oxide/data/ | carbon/data/ |
| Bir eklentinin mesajları, dile göre | oxide/lang/ | carbon/lang/ |
| Günlükler | oxide/logs/ | carbon/logs/ |
Klasörler RustDedicated.exe’nin yanında durur ve sunucu altyapı kuruluyken ilk açıldığında belirir. Bir eklenti config dosyasını ilk yüklendiğinde yazar; düzenle, sonra eklentiyi yeniden yükle.
Yükle, yeniden yükle ve kaldır
Bölüm başlığı “Yükle, yeniden yükle ve kaldır”Eklentiler klasörüne bir .cs dosyası at, altyapı onu yeniden başlatmadan kendiliğinden derleyip yükler. Dosyayı değiştir, yeniden yüklenir; sil, kaldırılır. Sunucu konsolu sonra Loaded plugin Hello World v1.0.0 by YourName gibi bir satır gösterir, kod yanlışsa da derleme hatasını.
Bunu sunucu konsolundan ya da RCON’dan elle de yapabilirsin:
- Oxide:
oxide.load Name,oxide.reload Name,oxide.unload Name,oxide.plugins(her birio.load,o.reloadve benzeri olarak da çalışır). - Carbon:
c.load Name,c.reload Name,c.unload Name,c.plugins.
Name, .cs olmadan dosya adıdır. Oxide çalıştıran bir sunucu kendini modlu olarak işaretler.
İzinler
Bölüm başlığı “İzinler”Çoğu eklenti komutlarını, eklentinin adını taşıyan izinlerin (hello.use, kits.admin) arkasına koyar. Oxide iki grupla başlar: her oyuncunun içinde olduğu default ve sunucunun adminleri için admin.
oxide.grant user <ad ya da SteamID> <izin>bir oyuncuya bir izin verir.oxide.grant group default <izin>herkese verir.oxide.revokeaynı biçimde geri alır.oxide.usergroup add <ad ya da SteamID> <grup>bir oyuncuyu bir gruba koyar veoxide.group add <grup>yeni bir tane yapar.
Her Oxide komutu, ne yaptığıyla birlikte, Rust konsol komutları sayfasının sonunda.
İlk eklentin
Bölüm başlığı “İlk eklentin”Bunu eklentiler klasörüne HelloWorld.cs olarak kaydet. Yüklendiğinde konsola bir satır yazar, katılan her oyuncu için bir tane yazar ve sohbette /hello’ya yanıt verir.
namespace Oxide.Plugins{ [Info("Hello World", "YourName", "1.0.0")] [Description("Says hello when a player types /hello in chat.")] public class HelloWorld : RustPlugin { private void OnServerInitialized() { Puts("Hello World is running."); }
private void OnPlayerConnected(BasePlayer player) { Puts($"{player.displayName} joined."); }
[ChatCommand("hello")] private void HelloCommand(BasePlayer player, string command, string[] args) { SendReply(player, $"Hello, {player.displayName}!"); } }}Her parça ne yapar:
- Dosya adı ve sınıf adı eşleşmeli (
HelloWorld.cs,class HelloWorld). [Info]eklentinin başlığını, yazarını ve sürümünü verir; konsol bunları yüklenirken gösterir.- Bir hook’un adını taşıyan metotlar, oyunda o şey olunca çalışır: sunucu başlamayı bitirince
OnServerInitialized(zaten çalışıyorsa hemen), bir oyuncu katılıncaOnPlayerConnected. Altyapı onları adıyla bulur, yani bir yazım hatası metodun hata vermeden hiç çalışmaması demek. [ChatCommand("hello")]bir metodu sohbet komutuna çevirir.Putssunucu konsoluna yazar;SendReplytek bir oyuncuya sohbet mesajı gönderir.
Aynı dosya Carbon’da da çalışır. Hook’ların tam listesi ve her birinin ne aldığı docs.oxidemod.com adresindeki Oxide belgelerinde.
Eklentilerin kullandığı adlar ve kimlikler
Bölüm başlığı “Eklentilerin kullandığı adlar ve kimlikler”Eklentiler oyun şeylerine oyun içi adlarıyla başvurur, bu site onları doğrudan oyundan listeler:
- Eşyalar shortname ile (
rifle.ak,wood): Rust eşya listesi. - Entity’ler prefab yoluyla (
assets/prefabs/deployable/large wood storage/box.wooden.large.prefab): Rust oyun referansı altındaki prefab sayfaları. - Sunucu ayarları convar adıyla (
server.maxplayers): Rust sunucu değişkenleri.
Bir eklentiyi yayına girmeden test et
Bölüm başlığı “Bir eklentiyi yayına girmeden test et”Önce sunucunun yerel bir kopyasında, aynı altyapı ve aynı harita ile çalıştır, böylece bozuk bir eklenti oyuncularınla hiç karşılaşmaz. Crucible Local Server, Oxide ya da Carbon bir tıkla kurulu olarak, kendi PC’nde bir tane çalıştırır.
