circle-info
alpha version all features and options may change dramatically or disappear

CustomPlugin – klasa główna

📄 CustomPlugin.cs – punkt wejścia i rejestrator systemów

Plik CustomPlugin.cs zawiera główną klasę odpowiedzialną za inicjalizację wtyczki, załadunek konfiguracji oraz rejestrację komponentów jako handlerów zdarzeń serwera.


🔍 Opis ogólny

  • Klasa nie dziedziczy bezpośrednio po żadnym typie pluginu, ale jest oznaczona atrybutem [PluginEntryPoint], co jest mechanizmem NWAPI odpowiedzialnym za oznaczenie klasy startowej wtyczki.

  • Rejestracja logiki pluginu odbywa się w metodzie OnLoaded().

  • Obsługa zdarzeń oparta jest o atrybuty PluginEvent.


🧠 Struktura i atrybuty

[PluginEntryPoint("CustomPlugin", "0.0.4-alpha", "Rozbudowany plugin z dodatkowymi funkcjami", "Autor:ttk0721")]
private void OnLoaded()
  • PluginEntryPoint – atrybut wymagany przez NWAPI.

OnLoaded() pełni funkcję analogiczną do OnEnabled() z EXILED – uruchamiana automatycznie po załadowaniu pluginu.


🔐 Inicjalizacja i konfiguracja

string pluginsDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "SCP Secret Laboratory", "PluginAPI", "plugins");
  • Wtyczka tworzy własny folder CustomPlugin w strukturze global, aby przechowywać plik config.yml.

  • Ścieżki są generowane dynamicznie, zgodnie z systemem operacyjnym.

Konfiguracja

  • IsConfigValid.LoadAndValidateConfig() to funkcja użytkownika do walidacji i załadunku pliku YAML.

  • Plugin nie uruchomi się dalej, jeśli IsEnabled == false.


🧩 Rejestracja modułów

Każdy z tych modułów to osobna klasa implementująca zdarzenia NWAPI. Przykładowo:

  • Monetki – rejestruje np. zdarzenia rzucania monet i interakcji

  • LateJoinSystem – zarządza przypisywaniem ról po rozpoczęciu rundy

Każda klasa musi zawierać metody oznaczone [PluginEvent(ServerEventType.X)].

Przykład rejestrowania z kontekstem:

To oznacza, że wszystkie [PluginEvent] w klasie LateJoinSystem zostaną powiązane z systemem zdarzeń NWAPI.


⚙️ Obsługa zdarzeń z poziomu CustomPlugin

OnPlayerJoined

Ten handler używa PluginAPI.Events.PlayerJoinedEvent, który udostępnia obiekt Player.

Wykorzystywane:

  • Logowanie wejścia gracza

OnRoundStart

Działanie:

  • ustawia roundInProgress = true,

  • zapisuje roundStartTime = DateTime.Now,

OnRoundEnd

Resetuje zmienne stanu pluginu:

  • roundInProgress = false

  • spyAssigned = false


🔧 Setup przedmiotów niestandardowych

  • Rejestruje klasę CustomItemHandler jako handler zdarzeń


🧠 Uwagi techniczne

  • Klasa nie korzysta z dziedziczenia po Plugin<T>, co jest dopuszczalne w NWAPI.

  • Plugin nie przechowuje stanu serwera (np. graczy, drużyn) — ogranicza się do eventów NWAPI

  • Architektura jest oparta na systemie komponentowym – każda funkcjonalność (np. monetki, windy) jako osobny komponent

Last updated