From 3969511814f7eb167a12826c140b0accc98ce491 Mon Sep 17 00:00:00 2001 From: Inzi <98975836+InziDeveloperMode@users.noreply.github.com> Date: Tue, 21 Jan 2025 00:04:16 +0100 Subject: [PATCH 1/3] Create GettingStarted-IT.md --- .../localization/GettingStarted-IT.md | 207 ++++++++++++++++++ 1 file changed, 207 insertions(+) create mode 100644 .github/documentation/localization/GettingStarted-IT.md diff --git a/.github/documentation/localization/GettingStarted-IT.md b/.github/documentation/localization/GettingStarted-IT.md new file mode 100644 index 000000000..af61bb7a4 --- /dev/null +++ b/.github/documentation/localization/GettingStarted-IT.md @@ -0,0 +1,207 @@ +# Exiled Low-Level Documentation +**(Scritto da [KadeDev](https://github.com/KadeDev) per la community) (tradotto da [Inzi](https://github.com/InziDeveloperMode))** + +## Getting Started +### Intro +Exiled è un'API di basso livello, il che significa che è possibile richiamare funzioni dal gioco senza bisogno di un mucchio di API bloatware. + +Ciò consente di aggiornare Exiled con estrema facilità e di aggiornarlo anche prima che l'aggiornamento arrivi al gioco. + +Inoltre, consente agli sviluppatori di plugin di non dover modificare il proprio codice dopo ogni aggiornamento di Exiled o di SCP:SL. In effetti, non devono nemmeno aggiornare i loro plugin! + +Questa documentazione vi mostrerà le basi della creazione di un plugin per Exiled. Da qui potrete iniziare a mostrare al mondo quali cose creative potete realizzare con questo framework! + +### Plugin di esempio +Il [Plugin di esempio](https://github.com/ExMod-Team/EXILED/tree/master/EXILED/Exiled.Example) è un semplice plugin che mostra gli eventi e come realizzarli correttamente. L'uso di questo esempio vi aiuterà a imparare a usare correttamente Exiled. Ci sono un paio di cose importanti in questo plugin, e ne parliamo +#### On Enable + On Disable Dynamic Updates +Exiled è un framework che ha un comando **Reload** che può essere usato per ricaricare tutti i plugin e ottenerne di nuovi. Ciò significa che i plugin devono essere **aggiornabili dinamicamente**. Questo significa che ogni variabile, evento, coroutine, ecc. *deve* essere assegnata quando è abilitata e annullata quando è disabilitata. Il metodo **On Enable** dovrebbe abilitare tutto e il metodo **On Disable** dovrebbe disabilitare tutto. Ma ci si potrebbe chiedere: e **On Reload**? Questo void ha lo scopo di trasportare le variabili statiche, in quanto ogni costante statica creata non sarà cancellata. Quindi si potrebbe fare qualcosa del genere: +```csharp +public static int StaticCount = 0; +public int counter = 0; + +public override void OnEnable() +{ + counter = StaticCount; + counter++; + Info(counter); +} + +public override void OnDisable() +{ + counter++; + Info(counter); +} + +public override void OnReload() +{ + StaticCount = counter; +} +``` + +E l'output sarebbe: +```bash +# On enable fires +1 +# Reload command +# On Disable fires +2 +# On Reload fires +# On Enable fires again +3 + +``` +(Ovviamente escludendo tutto ciò che non sia le risposte effettive). +Senza questo, si sarebbe semplicemente passati a 1 e poi di nuovo a 2. + +### Giocatori + Eventi +Ora che abbiamo finito di rendere i nostri plugin **dinamicamente aggiornabili** possiamo concentrarci sul tentativo di interagire con i giocatori con gli eventi! + +Un evento è piuttosto interessante: permette a SCP:SL di comunicare con Exiled e poi con Exiled a tutti i plugin! + +Potete ascoltare gli eventi per il vostro plugin aggiungendo questo in cima al file sorgente del vostro plugin principale: + +```csharp +using EXILED; +``` +E poi si deve fare riferimento al file `Exiled.Events.dll` per ottenere effettivamente gli eventi. + +Per fare riferimento a un evento, utilizzeremo una nuova classe creata, chiamata “EventHandlers”. Il gestore di eventi non è fornito di default; è necessario crearlo. + + +Possiamo fare riferimento ad esso nelle void OnEnable e OnDisable in questo modo: + +`MainClass.cs` +```csharp +using Player = Exiled.Events.Handlers.Player; + +public EventHandlers EventHandler; + +public override OnEnable() +{ + // Registriamo la classe del gestore di eventi. E aggiungere l'evento, + // all'ascoltatore di eventi EXILED_Events, in modo da ricevere l'evento. + EventHandler = new EventHandlers(); + Player.Verified += EventHandler.PlayerVerified; +} + +public override OnDisable() +{ + // Rendiamolo aggiornabile dinamicamente. + // Lo facciamo rimuovendo l'ascoltatore dell'evento e poi annullando il gestore dell'evento. + // Questo processo deve essere ripetuto per ogni evento. + Player.Verified -= EventHandler.PlayerVerified; + EventHandler = null; +} +``` + + +E nella classe EventHandlers si fa: + +```csharp +public class EventHandlers +{ + public void PlayerVerified(VerifiedEventArgs ev) + { + + } +} +``` +Ora abbiamo preso un evento player verified, che si attiva quando un giocatore viene autenticato dopo essersi unito al server! È importante notare che ogni evento ha diversi argomenti, e ogni tipo di argomento ha diverse proprietà associate. + +EXILED fornisce già una funzione di broadcast, quindi usiamola nel nostro evento: + +```csharp +public class EventHandlers +{ + public void PlayerVerified(VerifiedEventArgs ev) + { + ev.Player.Broadcast(5, "Benvenuti nel mio server cool!"); + } +} +``` + +Come detto in precedenza, ogni evento ha argomenti diversi. Di seguito è riportato un evento diverso che disattiva i tesla gate per i giocatori della NineTailedFox. + +`MainClass.cs` +```csharp +using Player = Exiled.Events.Handlers.Player; + +public EventHandlers EventHandler; + +public override OnEnable() +{ + EventHandler = new EventHandlers(); + Player.TriggeringTesla += EventHandler.TriggeringTesla; +} + +public override OnDisable() +{ + // Non dimenticate che gli eventi devono essere disconnessi e annullati con il metodo disable. + Player.TriggeringTesla -= EventHandler.TriggeringTesla; + EventHandler = null; +} +``` + +E nella classe EventHandlers. + +`EventHandlers.cs` +```csharp +public class EventHandlers +{ + public void TriggeringTesla(TriggeringTeslaEventArgs ev) + { + // Disattivare l'evento per i giocatori del personale della fondazione. + // Questo può essere fatto controllando il lato del giocatore. + if (ev.Player.Role.Side == Side.Mtf) { + // Disable the tesla trigger by setting ev.IsTriggerable to false. + // Players who have a MTF ranking will no longer trigger tesla gates. + ev.IsTriggerable = false; + } + } +} +``` + + +### Configs +La maggior parte dei plugin di Exiled contiene delle configurazioni. Le configurazioni permettono ai manutentori del server di modificare i plugin a loro piacimento, anche se questo è limitato alla configurazione fornita dallo sviluppatore del plugin. + +Per prima cosa, creare una classe `config.cs` e cambiare l'ereditarietà dei plugin da `Plugin<>` a `Plugin`. + +Ora è necessario fare in modo che la configurazione erediti da `IConfig`. Dopo aver ereditato da `IConfig`, aggiungere alla classe una proprietà intitolata `IsEnabled` e `Debug`. La classe Config dovrebbe ora avere questo aspetto: + +```csharp + public class Config : IConfig + { + public bool IsEnabled { get; set; } + public bool Debug { get; set; } + } +``` + +È possibile aggiungere qualsiasi opzione di configurazione e fare riferimento ad essa in questo modo: + +`Config.cs` +```csharp + public class Config : IConfig + { + public bool IsEnabled { get; set; } + public bool Debug { get; set; } + public string TextThatINeed { get; set; } = "this is the default"; + } +``` + +`MainClass.cs` +```csharp + public override OnEnabled() + { + Log.Info(Config.TextThatINeed); + } +``` + +E poi congratulazioni! Avete creato il vostro primo plugin Exiled! È importante notare che tutti i plugin **devono** avere una configurazione IsEnabled. Questa configurazione consente ai proprietari del server di attivare e disattivare il plugin a loro piacimento. La configurazione IsEnabled sarà letta dal Loader di Exiled (il vostro plugin non ha bisogno di controllare se `IsEnabled == true` o meno). + +### E ora? +Se volete maggiori informazioni dovreste unirvi al nostro [discord!](https://discord.gg/PyUkWTg) + +Abbiamo un canale #resources che potreste trovare utile, così come collaboratori di Exiled e sviluppatori di plugin che sarebbero disposti ad assistervi nella creazione dei vostri plugin. + +Oppure puoi leggere tutti gli eventi che abbiamo! Se vuoi darci un'occhiata [qui!](https://github.com/ExMod-Team/EXILED/tree/master/EXILED/Exiled.Events/EventArgs) From 1425019b000c2600e0a1296a079c359306de4350 Mon Sep 17 00:00:00 2001 From: Inzi <98975836+InziDeveloperMode@users.noreply.github.com> Date: Tue, 21 Jan 2025 14:09:27 +0100 Subject: [PATCH 2/3] Update GettingStarted-IT.md --- .github/documentation/localization/GettingStarted-IT.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/documentation/localization/GettingStarted-IT.md b/.github/documentation/localization/GettingStarted-IT.md index af61bb7a4..1dc8aa123 100644 --- a/.github/documentation/localization/GettingStarted-IT.md +++ b/.github/documentation/localization/GettingStarted-IT.md @@ -153,8 +153,8 @@ public class EventHandlers // Disattivare l'evento per i giocatori del personale della fondazione. // Questo può essere fatto controllando il lato del giocatore. if (ev.Player.Role.Side == Side.Mtf) { - // Disable the tesla trigger by setting ev.IsTriggerable to false. - // Players who have a MTF ranking will no longer trigger tesla gates. + // Disattiva il trigger Tesla impostando ev.IsTriggerable su false. + // I giocatori che faranno parte della MTF non attiveranno più i Tesla Gate. ev.IsTriggerable = false; } } From b097fe8f9531806e06fa650d422c095476f12640 Mon Sep 17 00:00:00 2001 From: Inzi <98975836+InziDeveloperMode@users.noreply.github.com> Date: Tue, 21 Jan 2025 14:10:16 +0100 Subject: [PATCH 3/3] Update README-IT.md --- .github/documentation/localization/README-IT.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/documentation/localization/README-IT.md b/.github/documentation/localization/README-IT.md index 8099a9519..68cd36a84 100644 --- a/.github/documentation/localization/README-IT.md +++ b/.github/documentation/localization/README-IT.md @@ -81,7 +81,7 @@ Tuttavia, alcuni plugin possono ottenere le loro impostazioni di configurazione # Per gli Sviluppatori -Se desideri creare un Plugin per EXILED, è piuttosto semplice farlo. Se vuoi un tutorial più dettagliato, visita la nostra [Pagina di Inizio](GettingStarted.md). +Se desideri creare un Plugin per EXILED, è piuttosto semplice farlo. Se vuoi un tutorial più dettagliato, visita la nostra [Pagina di Inizio](GettingStarted-IT.md). Per tutorial più completi e costantemente aggiornati, consulta [il sito web di EXILED](https://exmod-team.github.io/EXILED/).