Skip to content

Commit 495f7d8

Browse files
committed
Atualiza alterações locais
1 parent a57376d commit 495f7d8

9 files changed

Lines changed: 2547 additions & 0 deletions

File tree

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
---
2+
title: OnNPCChangeNode
3+
sidebar_label: OnNPCChangeNode
4+
description: Este callback é chamado quando um NPC tenta mudar de um nó de navegação para outro durante a movimentação baseada em nós.
5+
tags: ["npc", "node", "navigation"]
6+
---
7+
8+
<VersionWarn version='omp v1.5.8.3079' />
9+
10+
## Descrição
11+
12+
Este callback é chamado quando um NPC tenta mudar de um nó de navegação para outro durante a movimentação baseada em nós. Isso permite que você controle se a mudança de nó deve ser permitida ou negada.
13+
14+
| Nome | Descrição |
15+
| --------- | ------------------------------------------------- |
16+
| npcid | O ID do NPC tentando mudar de nó |
17+
| newnodeid | O ID do novo nó para o qual o NPC quer se mover |
18+
| oldnodeid | O ID do nó atual onde o NPC está |
19+
20+
## Retornos
21+
22+
Retorne `true` para permitir a mudança de nó, ou `false` para negá-la.
23+
24+
## Exemplos
25+
26+
```c
27+
public OnNPCChangeNode(npcid, newnodeid, oldnodeid)
28+
{
29+
printf("[NPC] NPC %d mudou do nó %d para o nó %d", npcid, oldnodeid, newnodeid);
30+
31+
// Notificar jogadores que estão rastreando este NPC
32+
for (new playerid = 0; playerid < MAX_PLAYERS; playerid++)
33+
{
34+
if (!IsPlayerConnected(playerid))
35+
continue;
36+
37+
if (PlayerNPC[playerid] == npcid)
38+
{
39+
SendClientMessage(playerid, 0x00FF00FF, "NPC %d mudou do nó %d para o nó %d", npcid, oldnodeid, newnodeid);
40+
}
41+
}
42+
return 1;
43+
}
44+
```
45+
46+
## Notas
47+
48+
- Este callback só é chamado quando NPCs estão usando navegação baseada em nós via `NPC_PlayNode`
49+
- Retornar `false` impedirá o NPC de mudar de nó e pode fazer com que ele pare de navegar
50+
- Os arquivos de nós devem ser carregados usando `NPC_OpenNode` antes que os NPCs possam navegar entre eles
51+
52+
## Funções Relacionadas
53+
54+
As seguintes funções podem ser úteis, pois estão relacionadas a este callback de uma forma ou outra.
55+
56+
- [NPC_PlayNode](../functions/NPC_PlayNode): Iniciar navegação baseada em nós do NPC
57+
- [NPC_OpenNode](../functions/NPC_OpenNode): Abrir um arquivo de nó de navegação
58+
- [NPC_CloseNode](../functions/NPC_CloseNode): Fechar um arquivo de nó de navegação
59+
- [NPC_StopPlayingNode](../functions/NPC_StopPlayingNode): Parar navegação de nó do NPC
60+
61+
## Callbacks Relacionados
62+
63+
- [OnNPCFinishNode](OnNPCFinishNode): Chamado quando o NPC termina de navegar um nó completo
64+
- [OnNPCFinishNodePoint](OnNPCFinishNodePoint): Chamado quando o NPC alcança um ponto específico em um nó

frontend/i18n/pt-BR/docusaurus-plugin-content-docs/current/scripting/language/reference/06-General-syntax.md

Lines changed: 331 additions & 0 deletions
Large diffs are not rendered by default.

frontend/i18n/pt-BR/docusaurus-plugin-content-docs/current/scripting/language/reference/07-Operators-and-expressions.md

Lines changed: 238 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 257 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,257 @@
1+
# Instruções
2+
3+
---
4+
5+
Uma instrução pode ocupar uma ou mais linhas, enquanto uma linha pode conter duas ou
6+
mais instruções.
7+
8+
Instruções de controle de fluxo (if, if–else, for, while, do–while e switch) podem ser aninhadas.
9+
10+
**Rótulo de instrução**
11+
12+
Um rótulo consiste em um identificador seguido por dois pontos (":").
13+
Um rótulo é um "alvo de salto" para a instrução goto.
14+
15+
Cada instrução pode ser precedida por um rótulo.
16+
Deve haver uma instrução após o rótulo; uma instrução vazia é permitida.
17+
18+
O escopo de um rótulo é a função na qual ele é declarado
19+
(uma instrução goto não pode, portanto, saltar para fora da função atual para outra função).
20+
21+
**Instrução composta**
22+
23+
Uma instrução composta é uma série de zero ou mais instruções
24+
cercadas por chaves (`{` e `}`). A chave final (`}`) não deve ser seguida por um ponto e vírgula.
25+
Qualquer instrução pode ser substituída por uma instrução composta.
26+
Uma instrução composta também é chamada de bloco.
27+
Uma instrução composta com zero instruções é um caso especial,
28+
e é chamada de "instrução vazia".
29+
30+
**Instrução de expressão**
31+
32+
Qualquer expressão se torna uma instrução quando um ponto e vírgula (";") é anexado a ela.
33+
Uma expressão também se torna uma instrução quando apenas espaço em branco
34+
a segue na linha e a expressão não pode ser estendida para a próxima linha.
35+
36+
**Instrução vazia**
37+
38+
Uma instrução vazia não realiza nenhuma operação e consiste em um
39+
bloco composto com zero instruções; ou seja, consiste nos tokens "{ }".
40+
Instruções vazias são usadas em instruções de controle de fluxo
41+
se não houver ação (por exemplo, while (!iskey()) {}) ou ao definir um rótulo logo
42+
antes da chave de fechamento de uma instrução composta.
43+
Uma instrução vazia não termina com um ponto e vírgula.
44+
45+
**assert** _expressão_
46+
47+
Aborta o programa com um erro em tempo de execução
48+
se a expressão resultar logicamente em "falso".
49+
50+
**break**
51+
52+
Termina e sai da menor instrução do, for ou while
53+
que a contém de qualquer ponto dentro do loop
54+
que não seja o final lógico. A instrução break move o controle do programa
55+
para a próxima instrução fora do loop.
56+
57+
**continue**
58+
59+
Termina a iteração atual da menor instrução do, for ou while
60+
que a contém e move o controle do programa para a parte de condição do loop.
61+
Se a instrução de loop for uma instrução for,
62+
o controle move para a terceira expressão na instrução for
63+
(e depois para a segunda expressão).
64+
65+
**do** _instrução_ **while** ( _expressão_ )
66+
67+
Executa uma instrução antes da parte de condição (a cláusula while) ser avaliada.
68+
A instrução é repetida enquanto a condição for logicamente "verdadeira".
69+
A instrução é executada pelo menos uma vez.
70+
71+
**exit** _expressão_
72+
73+
Aborta o programa. A expressão é opcional, mas deve começar
74+
na mesma linha que a instrução exit se estiver presente.
75+
A instrução exit retorna o valor da expressão (mais a tag da expressão)
76+
ao aplicativo host, ou zero se nenhuma expressão exit estiver presente.
77+
O significado e propósito dos códigos de saída é definido pela implementação.
78+
79+
**for** ( _expressão 1_ ; _expressão 2_ ; _expressão 3_ ) _instrução_
80+
81+
Todas as três expressões são opcionais.
82+
83+
*expressão 1*
84+
Avaliada apenas uma vez, e antes de entrar no loop.
85+
Esta expressão pode ser usada para inicializar uma variável.
86+
Esta expressão também pode conter uma declaração de variável, usando a sintaxe new.
87+
Uma variável declarada nesta expressão existe apenas no loop for.
88+
89+
*expressão 2*
90+
Avaliada antes de cada iteração do loop e
91+
termina o loop se a expressão resultar logicamente em "falso".
92+
Se omitida, o resultado da expressão 2 é assumido como logicamente "verdadeiro".
93+
94+
*expressão 3*
95+
Avaliada após cada execução da instrução.
96+
O controle do programa move da expressão 3 para a expressão 2
97+
para a próxima iteração (condicional) do loop.
98+
A instrução for( ; ; ) é equivalente a while (true).
99+
100+
**goto** _rótulo_
101+
102+
Move o controle do programa (incondicionalmente) para a instrução que segue o rótulo especificado.
103+
O rótulo deve estar dentro da mesma função que a
104+
instrução goto (uma instrução goto não pode saltar para fora de uma função).
105+
106+
**if** ( _expressão_ ) _instrução 1_ **else** _instrução 2_
107+
108+
Executa a instrução 1 se a expressão resultar logicamente em "verdadeiro".
109+
A cláusula else da instrução if é opcional.
110+
Se a expressão resultar logicamente em "falso" e uma cláusula else existir,
111+
a instrução associada à cláusula else (instrução 2) é executada.
112+
113+
Quando instruções if são aninhadas e cláusulas else estão presentes,
114+
um dado else é associado à instrução if precedente mais próxima no mesmo bloco.
115+
116+
**return** _expressão_
117+
118+
Termina a função atual e move o controle do programa
119+
para a instrução que segue a instrução de chamada.
120+
O valor da expressão é retornado como o resultado da função.
121+
A expressão pode ser uma variável de array ou um array literal.
122+
123+
A expressão é opcional, mas deve começar na mesma linha
124+
que a instrução return se estiver presente.
125+
Se ausente, o valor da função é zero.
126+
127+
**sleep** _expressão_
128+
129+
Aborta o programa, mas o deixa em um estado reiniciável.
130+
A expressão é opcional. Se incluída, a instrução sleep
131+
retorna o valor da expressão (mais a tag da expressão)
132+
ao aplicativo host. O significado e propósito
133+
dos códigos/tags de saída é definido pela implementação;
134+
tipicamente, um aplicativo usa a instrução sleep para permitir
135+
multitarefa leve de vários programas pawn concorrentes,
136+
ou para implementar funções "latentes".
137+
138+
**state** ( _expressão_ ) **automaton** :_nome_
139+
140+
Muda o estado atual no autômato especificado.
141+
A expressão entre parênteses é opcional; se ausente,
142+
os parênteses devem ser omitidos também.
143+
O nome do autômato também é opcional,
144+
ao mudar o estado do autômato padrão, anônimo;
145+
se o nome do autômato estiver ausente, os dois pontos (":") devem ser omitidos também.
146+
147+
Abaixo estão dois exemplos de mudanças de estado incondicionais. O primeiro é para o autômato padrão:
148+
149+
```
150+
151+
state handshake
152+
153+
```
154+
155+
e o segundo para um autômato específico:
156+
157+
```
158+
159+
state gps:handshake
160+
161+
```
162+
163+
Frequentemente, se um estado muda ou não depende dos parâmetros do evento ou da condição do autômato como um todo.
164+
Como mudanças de estado condicionais são tão frequentes,
165+
a condição pode estar na própria instrução state.
166+
∗ A condição segue a palavra-chave state, entre parênteses.
167+
O estado só mudará se a condição for logicamente "verdadeira".
168+
169+
A instrução state causa uma chamada implícita para a
170+
função entry para o estado indicado — se tal função entry existir.
171+
172+
**switch** ( _expressão_ ) \{ _lista de cases_ \}
173+
174+
Transfere o controle para diferentes instruções dentro do corpo do switch dependendo
175+
do valor da expressão do switch.
176+
O corpo da instrução switch é uma instrução composta,
177+
que contém uma série de "cláusulas case".
178+
179+
Cada "cláusula case" começa com a palavra-chave case seguida por uma lista de constantes e uma instrução.
180+
A lista de constantes é uma série de expressões, separadas por vírgulas,
181+
que cada uma resulta em um valor constante.
182+
A lista de constantes termina com dois pontos. Para especificar um "intervalo" na lista de constantes,
183+
separe os limites inferior e superior do intervalo com um período duplo ("..").
184+
Um exemplo de intervalo é: "case 1..9:".
185+
186+
A instrução switch move o controle para uma "cláusula case" se o valor de uma das
187+
expressões na lista de constantes for igual ao resultado da expressão do switch.
188+
189+
A "cláusula default" consiste na palavra-chave default e dois pontos.
190+
A cláusula default é opcional, mas se for incluída, deve ser a última cláusula no corpo do switch.
191+
A instrução switch move o controle para a "cláusula default" se
192+
nenhuma das cláusulas case corresponder ao resultado da expressão.
193+
194+
Exemplo:
195+
196+
---
197+
198+
###### ∗ A alternativa é incluir mudanças de estado incondicionais na construção comum if–else.
199+
200+
---
201+
202+
```c
203+
204+
switch (weekday(12,31,1999))
205+
{
206+
case 0, 1: /* 0 == Sábado, 1 == Domingo */
207+
print("fim de semana")
208+
case 2:
209+
print("Segunda-feira")
210+
case 3:
211+
print("Terça-feira")
212+
case 4:
213+
print("Quarta-feira")
214+
case 5:
215+
print("Quinta-feira")
216+
case 6:
217+
print("Sexta-feira")
218+
default:
219+
print("dia da semana inválido")
220+
}
221+
222+
```
223+
224+
**while** ( _expressão_ ) _instrução_
225+
226+
Avalia a expressão e executa a instrução
227+
se o resultado da expressão for logicamente "verdadeiro".
228+
Após a instrução ter sido executada, o controle do programa retorna à expressão novamente.
229+
A instrução é assim executada enquanto a expressão for verdadeira.
230+
231+
---
232+
233+
`Identificadores: 97`
234+
235+
`Exemplo: 11 (assert)`
236+
237+
`Exemplo: 21 (break)`
238+
239+
`Exemplo: 27 (do while)`
240+
241+
`Exemplos: 9, 11, 21 (for)`
242+
243+
`Declarações de variáveis: 62 (for)`
244+
245+
`Exemplo: 7 (if else)`
246+
247+
`Exemplos: 11, 21 (return)`
248+
249+
`Veja página 40 para exemplos de mudanças de estado condicionais (state automaton)`
250+
251+
`funções "entry": 44 (state automaton)`
252+
253+
`Exemplos: 7, 21, 26 (while)`
254+
255+
---
256+
257+
[Voltar ao Índice](00-Contents)

0 commit comments

Comments
 (0)