-
Notifications
You must be signed in to change notification settings - Fork 76
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
docs: Added Getting-Started-IT (Italian language) #412
base: master
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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! | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "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!" => "Inoltre, gli sviluppatori di plugin non devono modificare il proprio codice dopo ogni aggiornamento di Exiled o di SCP:SL. Anzi, in molti casi, non è nemmeno necessario aggiornare i loro plugin!", changed the phrase to look more professional and removed some redundant use of connectors |
||
|
||
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! | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "Questa documentazione vi guiderà attraverso le basi della creazione di un plugin per Exiled." => "Questa documentazione vi guiderà attraverso le basi della creazione di un plugin per Exiled." or other forms that could match a more appropriate language |
||
|
||
### 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 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "Ci sono un paio di cose importanti" => "Ci sono alcuni aspetti importanti" or other forms that could match a more appropriate language There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "realizzarli" => "implementarli" this could be a better translation from the english to italian There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "e ne parliamo" => "di cui parleremo" or other forms that could match a more formal usage of the language to match the english counterpart |
||
#### 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: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "che ha un comando Reload" => "che include il comando Reload" sounds more professional There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "che può essere usato per ricaricare tutti i plugin e ottenerne di nuovi" => "il quale permette di ricaricare tutti i plugin e caricarne di nuovi" sounds more professional and overall sounds better in italian for me and translated better from english to italian. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "Questo significa che" => "Ciò significa che" more formal There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "ogni variabile, evento, coroutine, ecc. deve essere assegnata quando è abilitata e annullata quando è disabilitata" => "ogni variabile, evento, coroutine, ecc. deve essere inizializzata quando il plugin viene abilitato e annullata quando viene disabilitato" in the context of developing "Assegnare" is incorrect a better approach to a technical level of the subject is "inizializzata", and added some small clarification for the dumb people :3 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "Il metodo On Enable dovrebbe abilitare tutto e il metodo On Disable dovrebbe disabilitare tutto." => "Il metodo OnEnable dovrebbe attivare tutto, mentre il metodo OnDisable dovrebbe disattivare tutto.", attached the OnEnable and OnDisabled, made a formal approach of the usage of enable and disable and removed that connector not really needed There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "Ma ci si potrebbe chiedere: e On Reload?" => "Ma sorge una domanda: e OnReload?" There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "Questo void ha lo scopo di trasportare le variabili statiche" => "Questo metodo ha lo scopo di gestire le variabili statiche" There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "in quanto ogni costante statica creata non sarà cancellata" => "poiché le costanti statiche non vengono rimosse durante il reload" More natural sounding, redundancy removed and better clarified. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "Quindi si potrebbe fare qualcosa del genere" => "Pertanto, si potrebbe implementare qualcosa di simile:" Sounds wrong for me the usage and so i made it sound more professional and less like a "uso di lingua di uno scappato di casa" |
||
```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 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Traduci. |
||
1 | ||
# Reload command | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Traduci |
||
# On Disable fires | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Traduci |
||
2 | ||
# On Reload fires | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Traduci |
||
# On Enable fires again | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Traduci |
||
3 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Cazzo ci fa sto 3 qui? |
||
|
||
``` | ||
(Ovviamente escludendo tutto ciò che non sia le risposte effettive). | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "che non sia le risposte effettive" => "che non riguarda le risposte effettive" |
||
Senza questo, si sarebbe semplicemente passati a 1 e poi di nuovo a 2. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "Si sarebbe semplicemente passati" => "Si passerebbe semplicemente" Ahia inzi. Ho un italiano di merda ma non penso che questo suona bene :3 |
||
|
||
### 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! | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "Ora che abbiamo finito di rendere" => "Ora che abbiamo reso" There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "possiamo concentrarci sul tentativo di interagire con i giocatori con gli eventi" => "possiamo concentrarci sull'interazione con i giocatori tramite gli eventi" More clear sounding and better sounds for me |
||
|
||
Un evento è piuttosto interessante: permette a SCP:SL di comunicare con Exiled e poi con Exiled a tutti i plugin! | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "Un evento è piuttosto interessante" => "Gli eventi sono particolarmente interessanti" There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "permette a SCP:SL di comunicare con Exiled e poi con Exiled a tutti i plugin" => "permettono a SCP:SL di comunicare con Exiled, che a sua volta trasmette le informazioni a tutti i plugin" More clear. |
||
|
||
Potete ascoltare gli eventi per il vostro plugin aggiungendo questo in cima al file sorgente del vostro plugin principale: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "Potete ascoltare gli eventi per il vostro plugin aggiungendo questo in cima al file sorgente del vostro plugin principale" => "Per ascoltare gli eventi nel vostro plugin, aggiungete questa riga all'inizio del file sorgente del vostro plugin principale" More clear. |
||
|
||
```csharp | ||
using EXILED; | ||
``` | ||
E poi si deve fare riferimento al file `Exiled.Events.dll` per ottenere effettivamente gli eventi. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "E poi si deve fare riferimento" => "Successivamente, è necessario fare riferimento" Sounds wrong for me the usage and so i made it sound more professional and less like a "uso di lingua di uno scappato di casa" |
||
|
||
Per fare riferimento a un evento, utilizzeremo una nuova classe creata, chiamata “EventHandlers”. Il gestore di eventi non è fornito di default; è necessario crearlo. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "Per fare riferimento a un evento, utilizzeremo una nuova classe creata, chiamata 'EventHandlers'" => "Per gestire un evento, creeremo una nuova classe chiamata EventHandlers." Better translation from english to italian is managing in this case and removed some redundancy There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "Il gestore di eventi non è fornito di default; è necessario crearlo." => "Il gestore di eventi non è fornito di default, quindi deve essere creato manualmente." More natural sounding from english to italian :3 |
||
|
||
|
||
Possiamo fare riferimento ad esso nelle void OnEnable e OnDisable in questo modo: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "Possiamo fare riferimento ad esso nelle void OnEnable e OnDisable in questo modo" => "Possiamo quindi fare riferimento a questa classe all'interno dei metodi OnEnable e OnDisable nel seguente modo:" More clear and use the more technical side of the language |
||
|
||
`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. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "Rendiamolo aggiornabile dinamicamente" => "Rendiamolo dinamicamente aggiornabile" More natural sounding. |
||
// Lo facciamo rimuovendo l'ascoltatore dell'evento e poi annullando il gestore dell'evento. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "Lo facciamo rimuovendo" => "Per farlo, rimuoviamo" Idk sounds better like this, idk why its too long and doesn't sound right for my brain There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "e poi annullando" => "e poi annulliamo" Ahia inzi, i verbi cazzo. il tempo verbale non è Gerundio ma Presente dato dal rimuovendo :3 |
||
// 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. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "preso un evento player verified" => "intercettato l'evento PlayerVerified". Allora se dobbiamo farlo italiano, la mia sarebbe corretta per significato ma cazzo stiamo lavorando per un progetto di scappati di casa. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "ogni evento ha diversi argomenti, e ogni tipo di argomento ha diverse proprietà associate" => "ogni evento dispone di diversi argomenti e che ogni tipo di argomento ha proprietà specifiche" More formal and clarified |
||
|
||
EXILED fornisce già una funzione di broadcast, quindi usiamola nel nostro evento: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "quindi usiamola nel nostro evento" => "quindi utilizziamola nel nostro evento" Sounds better and probably more appropriate from the english translation |
||
|
||
```csharp | ||
public class EventHandlers | ||
{ | ||
public void PlayerVerified(VerifiedEventArgs ev) | ||
{ | ||
ev.Player.Broadcast(5, "<color=lime>Benvenuti nel mio server cool!</color>"); | ||
} | ||
} | ||
``` | ||
|
||
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. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "un evento diverso" => "un esempio di un evento" Bro your providing another event that's nothing different from the other is just another example. |
||
|
||
`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) { | ||
// 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; | ||
} | ||
} | ||
} | ||
``` | ||
|
||
|
||
### 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. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "contiene delle configurazioni" => "include delle configurazioni" Ok so its not totally your fault but someone didn't put "includes" but "contains" so i understand why you translated in "contiene" but i find in this case to be better to use "includes" than "contains" There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "modificare i plugin a loro piacimento" => "personalizzare i plugin a loro piacimento" Same as before, i think this sounds better in italian that the literal translation There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "anche se questo è limitato alla configurazione fornita dallo sviluppatore del plugin" => "sebbene ciò sia limitato alle opzioni fornite dallo sviluppatore del plugin" I think it sounds more professional and used a different term for "config" that could be translated as both "config" and "option" in italian depending the context |
||
|
||
Per prima cosa, creare una classe `config.cs` e cambiare l'ereditarietà dei plugin da `Plugin<>` a `Plugin<Config>`. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "cambiare l'ereditarietà dei plugin" => "modifica l'ereditarietà del plugin" Sounds better ngl |
||
|
||
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: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "aggiungere alla classe una proprietà intitolata" => "aggiungi alla classe due proprietà" Specified the 2 types of proprieties needed :3 |
||
|
||
```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: | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "in questo modo" => "nel seguente modo" idk it sounds more professional |
||
|
||
`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). | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "E poi congratulazioni!" => "E infine, congratulazioni!" Sounds more professional and natural There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "consente ai proprietari del server di attivare e disattivare il plugin a loro piacimento" => "permette ai proprietari del server di attivare o disattivare il plugin a loro piacimento" Better use of the language from "consente" to "permette" There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "La configurazione IsEnabled sarà letta" => "La configurazione IsEnabled verrà letta" More formal way to say the same thing There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "controllare" => "verificare" Sounds more professional again something that is missing from all of this doc |
||
|
||
### E ora? | ||
Se volete maggiori informazioni dovreste unirvi al nostro [discord!](https://discord.gg/PyUkWTg) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "Se volete maggiori informazioni dovreste unirvi" => "Se desiderate maggiori informazioni, vi invitiamo a unirvi" Sounds more professional, shit someone needs to do a count of how many times i said "Sounds more professional" |
||
|
||
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. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "così come collaboratori di Exiled e sviluppatori di plugin" => "insieme a collaboratori di Exiled e sviluppatori di plugin" Idk sounds better and probably better translated from the original There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "che sarebbero disposti ad assistervi" => "disposti ad assistervi" This is real bloatware not the "API bloatware" |
||
|
||
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) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "Oppure puoi leggere tutti gli eventi che abbiamo!" => "In alternativa, potete esplorare tutti gli eventi che abbiamo!" Yea sounds better |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"senza bisogno di un mucchio di API bloatware" => "senza dover ricorrere a un insieme di API pesanti e ridondanti" seems for me a more correct approach to the language and not to use words that people could not know or have a double meaning