İçeriğe geç

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ı.

İ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.

NeOxideCarbon
Eklentiler (.cs)oxide/plugins/carbon/plugins/
Her eklentinin ayarları (.json)oxide/config/carbon/configs/
Bir eklentinin kaydettiği verioxide/data/carbon/data/
Bir eklentinin mesajları, dile göreoxide/lang/carbon/lang/
Günlükleroxide/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.

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 biri o.load, o.reload ve 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.

Ç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.revoke aynı biçimde geri alır.
  • oxide.usergroup add <ad ya da SteamID> <grup> bir oyuncuyu bir gruba koyar ve oxide.group add <grup> yeni bir tane yapar.

Her Oxide komutu, ne yaptığıyla birlikte, Rust konsol komutları sayfasının sonunda.

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ınca OnPlayerConnected. Altyapı onları adıyla bulur, yani bir yazım hatası metodun hata vermeden hiç çalışmaması demek.
  • [ChatCommand("hello")] bir metodu sohbet komutuna çevirir. Puts sunucu konsoluna yazar; SendReply tek 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.

Eklentiler oyun şeylerine oyun içi adlarıyla başvurur, bu site onları doğrudan oyundan listeler:

Ö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.