Skip to content

Commit 84c5d50

Browse files
docs: rephrase PT-BR documentation (#798)
1 parent a33b419 commit 84c5d50

2 files changed

Lines changed: 147 additions & 121 deletions

File tree

Lines changed: 76 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,28 @@
1-
# Documento de Baixo Nível do Exiled
2-
*(Escrito por [KadeDev](https://github.com/KadeDev) para a comunidade) (Traduzido por [Firething](https://github.com/Firething))*
1+
# Tutorial do EXILED
2+
*(Escrito por [KadeDev](https://github.com/KadeDev) para a comunidade, revisado e traduzido por [Unbistrackted](https://github.com/Unbistrackted) e [Firething](https://github.com/Firething))*
33

44
## Manual de Instruções
55
### Introdução
6-
Exiled é uma API de baixo nível, o que significa que você pode chamar funções do jogo sem precisar de vários bloatwares de API.
6+
Como dito anteriormente, o EXILED é um framework de alto nível que nos permite chamar funções do jogo sem ter nenhum tipo de complicação ou quase nenhuma perda de performance.
77

8-
Isso permite com que o Exiled atualize-se facilmente, e ele pode ser atualizado antes mesmo da atualização chegar ao jogo.
8+
Isso permite que o projeto seja atualizado de forma mais simples, sem precisar que desenvolvedores atualizem seus plugins toda vez que o jogo atualizar. (Isso se não houver códigos que foram alterados/tornados obsoletos em versões majors do EXILED)
99

10-
Isso também permite que desenvolvedores de plug-in não precisem atualizar seus códigos sempre que houver uma atualização do Exiled ou SCP:SL. Na realidade, eles nem precisarão atualizar seus plug-ins!
10+
O guia a seguir irá te ensinar o básico de como criar seu primeiro plugin!
1111

12-
Esse documento mostrará a você os básicos de como se fazer um Plug-in para o Exiled. A partir daqui, você poderá mostrar ao mundo as coisas criativas que você pode criar com essa framework!
12+
### Guia
13+
O [Plug-in de Exemplo](https://github.com/ExMod-Team/EXILED/tree/master/EXILED/Exiled.Example) mostra o que são eventos e como criar eles de forma correta. Usar esse exemplo ajudará você a aprender a como usar o Exiled apropriadamente. Dentro desse existem elementos que são importantes, portanto acompanhe o código durante o tutorial.
1314

14-
### Exemplo de Plug-in
15-
Um [Exemplo de Plug-in](https://github.com/ExMod-Team/EXILED/tree/master/EXILED/Exiled.Example) que é um plug-in simples que mostra eventos e como fazer eles adequadamente. Usar esse exemplo ajudará você a aprender a como usar o Exiled apropriadamente. Há alguns aspectos nesse plug-in que são importantes, falaremos sobre eles.
15+
#### ``OnEnable`` e ``OnDisable``+ Atualizações Dinâmicas
16+
O EXILED possuí um comando chamado **Reload**, que recarrega todos os plug-ins instalados.
1617

17-
#### Atualizações Dinâmicas em On Enable + On Disable
18-
Exiled é uma framework que tem um comando de **Reload** que pode ser usado para recarregar todos os plug-ins e obter novos. Isso significa que você deve fazer com que seus plug-ins sejam **Dinamicamente Atualizáveis.** Isso significa que toda variável, evento, corrotina, etc *deve* ser atribuída quando ativada e anulada quando desativada. O método **On Enable** deve ativar todos, e o método **On Disable** deve desativar todos. Mas talvez você esteja se perguntando 'E o **On Reload**'? Essa função tem como objetivo carregar variáveis estáticas para que toda constante estática que você fizer não seja apagada. Então você poderia fazer algo assim:
18+
Ele funciona desativando o plugin e ativando-o novamente, além de chamar a função ``OnReload`` que entraremos em detalhes abaixo.
19+
20+
Lembrando que toda variável, evento, corrotina, etc. *deve* ser atribuído ou criado quando o plugin é ativado e anulada quando o mesmo é desativado.
21+
22+
> [!IMPORTANT]
23+
> Você **DEVE** usar o método ``OnEnable`` para ativar o Plug-in, e ``OnDisable`` desativa-lo.
24+
25+
Mas talvez você deve estar se perguntando: "Mas então para que serve o ``OnReload``?" Essa função tem como objetivo recarregar as variáveis estáticas de dentro do seu plugin. Então você poderia fazer algo assim:
1926
```csharp
2027
public static int StaticCount = 0;
2128
public int counter = 0;
@@ -24,13 +31,13 @@ public override void OnEnable()
2431
{
2532
counter = StaticCount;
2633
counter++;
27-
Info(counter);
34+
Log.Info(counter);
2835
}
2936

3037
public override void OnDisable()
3138
{
3239
counter++;
33-
Info(counter);
40+
Log.Info(counter);
3441
}
3542

3643
public override void OnReload()
@@ -41,101 +48,100 @@ public override void OnReload()
4148

4249
E o resultado seria:
4350
```bash
44-
# On enable fires
51+
# O servidor é iniciado...
52+
# OnEnable é chamado.
4553
1
46-
# Reload command
47-
# On Disable fires
54+
# Comando Reload é executado por alguém...
55+
# OnDisable é chamado.
4856
2
49-
# On Reload fires
50-
# On Enable fires again
57+
# OnReload é chamado.
58+
"counter" é guardado dentro de "StaticCount"
59+
# E então OnEnabled é chamado novamente.
5160
3
5261

5362
```
54-
(Claro, excluindo qualquer coisa além das respostas reais)
55-
Sem fazer isso, teria ido apenas para o 1 e então para o 2 novamente.
63+
Sem fazer isso, teria apenas mostrado no console ``1`` e então para o ``2`` novamente.
5664

5765
### Jogadores + Eventos
58-
Agora que terminamos de fazer com que nossos plug-ins sejam **Dinamicamente Atualizáveis**, podemos focar em tentar interagir com jogadores por meio de eventos!
66+
Agora que entendemos como os métodos de entrada/inicializaçãos dos plug-ins funcionam, podemos focar em como interagir com jogadores por meio de eventos!
67+
68+
Um evento é uma forma do jogo notificar seu plug-in quando algo acontece, por exemplo quando um jogador entrar, tomar dano, morrer, etc.
5969

60-
Um evento é bem interessante, ele permite com que o SCP:SL se comunique com o Exiled e depois com o Exiled para todos os plug-ins!
70+
> [!IMPORTANT]
71+
> Você **PRECISA** referenciar o arquivo `Exiled.Events.dll` para que você consiga usar os eventos. (Ou apenas baixe o pacote [Nuget do Exiled](https://www.nuget.org/packages/ExMod.Exiled)!)
72+
73+
Para começar a ouvir um evento, iremos utilizar uma nova classe chamada "EventHandlers", que irá gerenciar nossos eventos.
74+
75+
Na classe EventHandlers:
6176

62-
Você pode ouvir os eventos do seu plug-in adicionando isso à parte superior do arquivo de origem do plug-in principal:
6377
```csharp
64-
using EXILED;
78+
public class EventHandlers
79+
{
80+
public void PlayerVerified(VerifiedEventArgs ev)
81+
{
82+
// Códigos 1
83+
// Códigos 2
84+
// Códigos 3
85+
}
86+
}
6587
```
66-
E então você precisa referenciar o arquivo `Exiled.Events.dll` para que você realmente obtenha eventos.
6788

68-
Para referenciar um evento, nós estaremos utilizando uma nova classe que criamos; denominada "EventHandlers". O gerenciador de eventos não é fornecido por padrão; você deve criá-lo.
6989

70-
71-
Nós podemos referenciá-lo no void OnEnable e OnDisable assim:
90+
E depois nós podemos referenciá-lo no ``OnEnable`` e ``OnDisable`` desse jeito:
7291

7392
`MainClass.cs`
7493
```csharp
7594
using Player = Exiled.Events.Handlers.Player;
7695

7796
public EventHandlers EventHandler;
7897

79-
public override OnEnable()
98+
public override void OnEnable()
8099
{
81-
// Registre a classe de gerenciador de evento. E adicione o evento
82-
// ao ouvinte de eventos 'EXILED_Events' para que obtenhamos o evento.
83100
EventHandler = new EventHandlers();
101+
// += significa que você vai estar se atribuindo ao evento, que nesse caso você vai ouvir toda vez que ele for chamado.
84102
Player.Verified += EventHandler.PlayerVerified;
85103
}
86104

87-
public override OnDisable()
105+
public override void OnDisable()
88106
{
89-
// Torne-o dinamicamente atualizável.
90-
// Fazemos isso ao remover o ouvinte para o evento e então anulando o gerenciador de eventos.
91-
// Esse processo deve ser repetido para cada evento.
107+
// Precisamos desatribuir o evento e depois, anular o gerenciador de eventos.
108+
// A linha abaixo deve ser repetida para cada evento.
92109
Player.Verified -= EventHandler.PlayerVerified;
93110
EventHandler = null;
94111
}
95112
```
96113

97-
E na classe EventHandlers, faríamos:
114+
Agora toda vez que um jogador é autenticado após entrar no servidor podemos executar nosso código customizado! É importante destacar que todos eventos têm diferentes argumentos, e cada tipo tem propriedades diferentes associadas.
98115

99-
```csharp
100-
public class EventHandlers
101-
{
102-
public void PlayerVerified(VerifiedEventArgs ev)
103-
{
104-
105-
}
106-
}
107-
```
108-
Agora conseguimos nos conectar a um evento de jogador verificado que é executado sempre que um jogador é autenticado após entrar no servidor! É importante destacar que todos eventos têm diferentes argumentos de evento, e cada tipo de argumento de evento tem propriedades diferentes associadas.
109-
110-
O EXILED já fornece uma função de aviso (broadcast), então a usaremos em nosso evento:
116+
O EXILED já fornece uma função para enviar um broadcast, então a usaremos em nosso exemplo:
111117

112118
```csharp
113119
public class EventHandlers
114120
{
115121
public void PlayerVerified(VerifiedEventArgs ev)
116122
{
117-
ev.Player.Broadcast(5, "<color=lime>Bem-vindo ao meu servidor maneiro!</color>");
123+
ev.Player.Broadcast(5, "<color=lime>Bem-vindo(a) ao meu servidor!</color>");
118124
}
119125
}
120126
```
121127

122-
Como destacado acima, todo evento tem diferentes argumentos. Abaixo há um evento diferente que desliga os portões de Tesla para jogadores da Nine-Tailed Fox.
128+
Outro exemplo seria um evento que desliga as Teslas para todos os MTFs. (Incluindo guardas)
123129

124130
`MainClass.cs`
125131
```csharp
126132
using Player = Exiled.Events.Handlers.Player;
127133

128134
public EventHandlers EventHandler;
129135

130-
public override OnEnable()
136+
public override void OnEnable()
131137
{
132138
EventHandler = new EventHandlers();
133139
Player.TriggeringTesla += EventHandler.TriggeringTesla;
134140
}
135141

136-
public override OnDisable()
142+
public override void OnDisable()
137143
{
138-
// Não se esqueça, eventos devem ser desconectados e anulados no metódo Disable.
144+
// Não se esqueça, eventos devem ser desatribuídos e anulados nesse metódo!
139145
Player.TriggeringTesla -= EventHandler.TriggeringTesla;
140146
EventHandler = null;
141147
}
@@ -150,10 +156,10 @@ public class EventHandlers
150156
public void TriggeringTesla(TriggeringTeslaEventArgs ev)
151157
{
152158
// Desativa o evento para jogadores da equipe da Fundação.
153-
// Isso pode ser feito ao verificar o lado (side) do jogador.
159+
// Isso pode ser feito ao verificar o lado da classe (Player::Role.Side) do jogador.
154160
if (ev.Player.Role.Side == Side.Mtf) {
155-
// Desative o acionamento da Tesla ao definir o ev.IsTriggerable para 'false'.
156-
// Jogadores que tiverem uma patente na FTM não irão mais ativar portões de Tesla.
161+
// Desative o acionamento da Tesla mudando o valor de 'ev.IsTriggerable' para 'false'.
162+
// Lembrando que isso desabilita para todos os MTFs, incluindo Guardas!
157163
ev.IsTriggerable = false;
158164
}
159165
}
@@ -162,45 +168,49 @@ public class EventHandlers
162168

163169

164170
### Configurações
165-
A maioria dos plug-ins do Exiled contém configurações. As configurações permitem que os gerentes de servidor modifiquem os plug-ins livremente, embora sejam limitadas à configuração que o desenvolvedor do plug-in fornece.
171+
Grande partes dos plug-ins precisam de configurações, isso permite que os donos de servidores modifiquem-os livremente.
166172

167-
Primeiro crie uma classe `config.cs` e mude a herança do seu plug-in de `Plugin<>` para `Plugin<Config>`
173+
Primeiro crie uma classe chmada `Config` e mude a herança do seu plug-in de `Plugin<>` para `Plugin<Config>`
168174

169-
Agora você precisa fazer essa configuração herdar `IConfig`. Após herdar de `IConfig`, adicione uma propriedade para a classe titulada como `IsEnabled` e `Debug`. Sua classe de Configuração agora deve se assemelhar a isso:
175+
Agora você precisa fazer essa classe herdar `IConfig`, e depois implementar o contrato dela criando `IsEnabled` e `Debug`. Sua classe de Configuração agora deve se assemelhar a isso:
170176

171177
```csharp
172178
public class Config : IConfig
173179
{
174-
public bool IsEnabled { get; set; }
180+
public bool IsEnabled { get; set; } = true; // Se você não colocar "= true", o seu plugin não sera habilitado quando o servidor iniciar!
175181
public bool Debug { get; set; }
176182
}
177183
```
178184

179-
Você pode adicionar qualquer opção de configuração ali e referenciá-la assim:
185+
Você pode adicionar qualquer opção de configuração e referenciá-la assim:
180186

181187
`Config.cs`
182188
```csharp
183189
public class Config : IConfig
184190
{
185-
public bool IsEnabled { get; set; }
191+
public bool IsEnabled { get; set; } = true;
186192
public bool Debug { get; set; }
187-
public string TextThatINeed { get; set; } = "esse é o padrão";
193+
public string TextThatINeed { get; set; } = "Texto para testes";
188194
}
189195
```
190196

197+
> [!NOTE]
198+
> Você não precisa verificar se `IsEnabled == true` ou não, o Loader do Exiled já faz isso automaticamente.
199+
191200
`MainClass.cs`
201+
192202
```csharp
193203
public override OnEnabled()
194204
{
195205
Log.Info(Config.TextThatINeed);
196206
}
197207
```
198208

199-
E parabéns! Você fez o seu primeiro Plug-in para o Exiled! É importante destacar que todos os plug-ins **devem** ter uma configuração IsEnabled. Essa configuração permite que donos de servidor ativem e desativem o plug-in quando quiserem. A configuração IsEnabled será lida pelo carregador do Exiled (seu plug-in não precisa verificar se `IsEnabled == true` ou não).
209+
Pronto, você está preparado para fazer Plug-ins usando o Exiled!
200210

201211
### E agora?
202-
Se você quiser mais informações, você deve entrar no nosso [discord!](https://discord.gg/PyUkWTg)
212+
Se você quiser mais informações, entre no nosso [Servidor do Discord!](https://discord.gg/PyUkWTg)
203213

204-
Nós temos um canal de #resources que você pode considerar útil, assim como colaboradores do EXILED e desenvolvedores de plug-in que estariam dispostos a ajudá-lo na criação de seus plug-ins.
214+
Nós temos um canal de recursos chamado ``#resources`` que você pode considerar útil, assim como vários outros desenvolvedores que iram te ajudar a desenvolver seus plug-ins!
205215

206-
Ou você poderia ler sobre todos os eventos que nós temos! Se você deseja verificá-los, veja [aqui!](https://github.com/ExMod-Team/EXILED/tree/master/EXILED/Exiled.Events/EventArgs)
216+
Ou você poderia ler sobre todos os eventos que nós temos! Bem [aqui](https://github.com/ExMod-Team/EXILED/tree/master/EXILED/Exiled.Events/EventArgs)!

0 commit comments

Comments
 (0)