Pluginy do Rust: jak zainstalować Oxide i Carbon
Krótka odpowiedź: zainstaluj na serwerze Oxide albo Carbon, a potem wrzuć plik .cs pluginu do oxide/plugins/ albo carbon/plugins/. Wczytuje się sam, bez restartu, a jego plik ustawień pojawia się w folderze konfiguracji przy pierwszym wczytaniu.
Plugin do Rust to jeden plik C# (.cs), który framework do modowania kompiluje i uruchamia wewnątrz twojego serwera dedykowanego. Pluginy działają tylko na serwerze, więc gracze niczego nie instalują. Serwer vanilla nie może ich uruchomić: najpierw potrzebujesz na serwerze Oxide albo Carbon.
Oxide czy Carbon
Dział zatytułowany „Oxide czy Carbon”Oba wczytują ten sam rodzaj pluginów i tylko jeden może być na serwerze naraz, bo oba łatają te same pliki gry.
- Oxide (zwany też uMod) to ten od dawna na rynku. Jego pliki leżą w folderze
oxide/serwera. - Carbon jest nowszy i wczytuje też pluginy napisane pod Oxide. Jego pliki leżą w folderze
carbon/.
Crucible Local Server instaluje któryś z nich za ciebie, gdy tworzysz na nim serwer, i zarządza jego pluginami na karcie Mody; zobacz jak zainstalować Carbon albo Oxide na serwerze Rust.
Gdzie idą pliki pluginów
Dział zatytułowany „Gdzie idą pliki pluginów”| Co | Oxide | Carbon |
|---|---|---|
Pluginy (.cs) | oxide/plugins/ | carbon/plugins/ |
Ustawienia każdego pluginu (.json) | oxide/config/ | carbon/configs/ |
| Dane, które zapisuje plugin | oxide/data/ | carbon/data/ |
| Wiadomości pluginu, w każdym języku | oxide/lang/ | carbon/lang/ |
| Logi | oxide/logs/ | carbon/logs/ |
Foldery leżą obok RustDedicated.exe i pojawiają się, gdy serwer po raz pierwszy startuje z zainstalowanym frameworkiem. Plugin zapisuje swój plik konfiguracji przy pierwszym wczytaniu; edytuj go, a potem przeładuj plugin.
Wczytaj, przeładuj i zdejmij plugin
Dział zatytułowany „Wczytaj, przeładuj i zdejmij plugin”Wrzuć plik .cs do folderu pluginów, a framework sam go skompiluje i wczyta, bez restartu. Zmień plik, a przeładuje się; usuń go, a plugin znika z serwera. Konsola serwera pokaże wtedy linię w rodzaju Loaded plugin Hello World v1.0.0 by YourName albo błąd kompilacji, jeśli kod jest zły.
Możesz to też zrobić ręcznie z konsoli serwera albo przez RCON:
- Oxide:
oxide.load Name,oxide.reload Name,oxide.unload Name,oxide.plugins(każda działa też jakoo.load,o.reloadi tak dalej). - Carbon:
c.load Name,c.reload Name,c.unload Name,c.plugins.
Name to nazwa pliku bez .cs. Serwer z Oxide oznacza się jako zmodowany.
Uprawnienia
Dział zatytułowany „Uprawnienia”Większość pluginów zabezpiecza swoje komendy uprawnieniami, nazwanymi od pluginu (hello.use, kits.admin). Oxide startuje z dwiema grupami: default, w której jest każdy gracz, i admin, dla adminów serwera.
oxide.grant user <nazwa albo SteamID> <uprawnienie>daje jednemu graczowi uprawnienie.oxide.grant group default <uprawnienie>daje je wszystkim.oxide.revokezabiera je, w tej samej formie.oxide.usergroup add <nazwa albo SteamID> <grupa>wsadza gracza do grupy, aoxide.group add <grupa>tworzy nową.
Każda komenda Oxide, z opisem, jest na końcu komend konsoli Rust.
Twój pierwszy plugin
Dział zatytułowany „Twój pierwszy plugin”Zapisz to jako HelloWorld.cs w folderze pluginów. Zapisuje linię w konsoli po wczytaniu, jedną dla każdego gracza, który wchodzi, i odpowiada na /hello na czacie.
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}!"); } }}Co robi każda część:
- Nazwa pliku i nazwa klasy muszą się zgadzać (
HelloWorld.cs,class HelloWorld). [Info]podaje tytuł, autora i wersję pluginu, które konsola pokazuje przy wczytaniu.- Metody nazwane od hooka uruchamiają się, gdy to coś zdarza się w grze:
OnServerInitializedgdy serwer skończy startować (albo od razu, jeśli już działa),OnPlayerConnectedgdy gracz wchodzi. Framework znajduje je po nazwie, więc literówka oznacza, że metoda nigdy się nie uruchomi, bez błędu. [ChatCommand("hello")]zamienia metodę w komendę czatu.Putszapisuje do konsoli serwera;SendReplywysyła wiadomość na czacie do jednego gracza.
Ten sam plik działa na Carbon. Pełna lista hooków i tego, co każdy dostaje, jest w dokumentacji Oxide na docs.oxidemod.com.
Nazwy i identyfikatory używane przez pluginy
Dział zatytułowany „Nazwy i identyfikatory używane przez pluginy”Pluginy odwołują się do rzeczy z gry po ich nazwach w grze, które ta strona wypisuje prosto z gry:
- Przedmioty po shortname (
rifle.ak,wood): lista przedmiotów Rust. - Encje po ścieżce prefabu (
assets/prefabs/deployable/large wood storage/box.wooden.large.prefab): strony prefabów w referencji gry Rust. - Ustawienia serwera po nazwie convara (
server.maxplayers): zmienne serwera Rust.
Przetestuj plugin, zanim pójdzie na żywo
Dział zatytułowany „Przetestuj plugin, zanim pójdzie na żywo”Uruchom go najpierw na lokalnej kopii swojego serwera, z tym samym frameworkiem i tą samą mapą, żeby zepsuty plugin nigdy nie spotkał twoich graczy. Crucible Local Server uruchamia taką na twoim własnym PC z Oxide albo Carbon zainstalowanym jednym kliknięciem.
