Skip to content

Instantly share code, notes, and snippets.

@androksi
Last active July 28, 2023 03:28
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save androksi/1988a2e76513b83f4e69f37c8bc0ccf5 to your computer and use it in GitHub Desktop.
Save androksi/1988a2e76513b83f4e69f37c8bc0ccf5 to your computer and use it in GitHub Desktop.

Entendendo a Wiki do MTA

Irei abordar alguns conceitos sobre a Wiki do MTA. Por mais que você não saiba Inglês, ainda assim acho válido você ler este documento, pois ele será em Português Brasileiro. Embora seja de suma importãncia, só depende de você começar a estudar. Até porque, a Wiki do MTA é em Inglês.

De qualquer forma, o que você realmente precisa saber são as palavras-chave. Como, por exemplo, arguments, parameters, optional arguments, return, syntax, e alguns outros. Essas palavras aparecem bastante na Wiki do MTA e você deve saber o que significam para não se perder.

Neste documento, irei usar a função createBlip para exemplificar, pois ela contém bastante argumentos, tanto opcionais quanto requeridos. Abra o link da função para acompanhar!

Sintaxe (Syntax)

Começando pelo começo, a sintaxe é como a função deveria ser escrita no seu código. Veja ela da forma crua:

blip createBlip ( float x, float y, float z [, int icon = 0, int size = 2, int r = 255, int g = 0, int b = 0, int a = 255, int ordering = 0, float visibleDistance = 16383.0, element visibleTo = getRootElement( ) ] )

Eu não mexi na função ainda, apenas copiei e colei aqui para mostrar. Primeiramente, vamos prestar atenção no começo daquele código. Veja que está escrito blip. Isso significa que a função irá retornar um elemento do tipo blip. Você irá se deparar com isso em diversas outras funções. Algumas retornam números (integer, int), outras retornam strings (string), também há números com decimais (float), entre outras.

O que você precisa ter em mente é que aquela primeira palavra significa o que a função irá retornar para você.

Para agregar, também preste atenção nos tipos dos argumentos. Por exemplo, você percebe que existe uma palavra antes de cada argumento. Isso significa que você deve passar um valor daquele tipo. Antes de x, y, z há a palavra float - então, esses argumentos aceitam apenas valores númericos flutuantes ou inteiros. Diferente do argumento icon, que recebe um valor do tipo int. Sendo assim, apenas números inteiros (1, 2, 3, 4, 5, 6, 7, ...) são aceitos.

Sintaxe OOP (OOP Syntax)

Nós não iremos falar sobre isso aqui, pois o próprio MTA não te encoraja a usar por motivos de baixo desempenho.

Argumentos Requeridos (Required Arguments)

Como o nome já diz, são os argumentos que você precisa fornecer à função para que ela ao menos execute corretamente!

Os argumentos que a função createBlip requer são: x, y, z

Sendo assim, nós precisamos fornecer as posições X, Y e Z. Mesmo você entendendo pouco ainda sobre programação, irei fazer alguns exemplos:

Aqui eu defini as variáveis x, y e z, com suas respectivas posições. Inclusive, código funcional, pois eu forneci os 3 argumentos que a função pede.

local x, y, z = -1252.44, 51.85, 14.55
local myBlip = createBlip(x, y, z)

Você também pode passar os valores diretamente, não tem problema algum. E, também, código funcional.

local myBlip = createBlip(-1252.44, 51.85, 14.55)

Já neste exemplo abaixo, irá retornar um erro no /debugscript 3, pois nós não fornecemos o terceiro argumento (z). Portanto, código inválido!

local myBlip = createBlip(-1252.44, 51.85)

Argumentos Opcionais (Optional Arguments)

Aqui o nome também já explica. São argumentos que, independente se você fornecê-los ou não, a função irá funcionar sem nenhum problema.

Na função que estamos trabalhando, há vários argumentos opcionais, vamos dar uma olhada neles: icon, size, r, g, b, a, ordering, visibleDistance, visibleTo.

Como já dito anteriormente, você não precisa passá-los na função, ela já irá funcionar. Porém, digamos que eu quero outro ícone e também desejo alterar a distância visível dele. É simples! Basta fornecer o ID do ícone, no caso do icon e o valor da distância, no visibleDistance.

Certo... mas aí você talvez se questione: OK... eu consigo definir um novo ícone, pois é o quarto argumento, basta eu adicionar o ID dele ali... mas e o outro? Tem outros argumentos entre eles? É o décimo primeiro argumento!

Beleza, vamos por partes. Começaremos com a troca de ícone. Na página dessa função no qual estamos trabalhando, se você prestar atenção no argumento icon, irá perceber que tem uma breve descrição. Nela, nós temos uma âncora (link) que nos leva até uma outra página, contendo a lista dos IDs disponíveis para os blips. Há vários ícones, irei mostrar apenas alguns para não ficar grande demais.
Localização do link

Irei escolher o ID número 6, aquele com a imagem de uma arma. Vamos adicioná-lo em nosso código.

local myBlip = createBlip(-1252.44, 51.85, 14.55, 6)

Pronto! É fácil. Agora nós temos o ícone da arma, em vez do padrão. Falando em padrão, é válido prestar atenção no que cada argumento executa, se não passado um valor. O nome que nós damos para isso é default. Você pode conferir aqui:
Alguns argumentos não terão o default, mas tenha em mente que argumentos opcionais sempre executam algo por baixo dos panos.

Agora, lembra que nós precisamos definir o décimo primeiro argumento? Como nós fazemos isso? Precisamos definir todos os argumentos antes dele?

Não! Nós não precisamos. Na maioria das linguages de programação, nós usamos underscore (_) para pular argumentos. Em nosso caso, ficaria:

local myBlip = createBlip(-1252.44, 51.85, 14.55, 6, _, _, _, _, _, _, 100)

Agora, a distância visível do nosso blip é de 100 metros. Fora desse alcance, ele não aparece.

Lembrando que quase sempre é possível definir esses argumentos usando funções. A função createBlip, como já bem vimos, retorna o elemento blip. Nós temos funções para manipulá-lo!

Se você descer um pouco a página da função createBlip, irá ver as funções disponíveis para manipular o elemento blip. Irei apresentar um exemplo. Digamos que você deseja alterar o ícone, mas não quer definir no argumento. Para isso, usaremos a função setBlipIcon.

Tenha em mente que essa função é diferente da nossa, ela possui outros argumentos requeridos e opcionais. Nós já aprendemos a identificar!

Alterando o ícone usando aquela função, o código ficaria assim:

local myBlip = createBlip(-1252.44, 51.85, 14.55)
setBlipIcon(myBlip, 6)

Para não deixar este documento incompleto, é claro que nós também podemos definir a distância visível usando função setBlipVisibleDistance

local myBlip = createBlip(-1252.44, 51.85, 14.55)
setBlipIcon(myBlip, 6)
setBlipVisibleDistance(myBlip, 100)

Retorno (Returns)

Por mais que eu já tenha dito sobre o que a função retorna lá na seção Sintaxe (Syntax), vou reforçar:

Toda função retorna alguma coisa, raramente você irá ver uma vazia, sem retorno, ao menos no MTA. Pode ser um valor boleano (true/false), um número inteiro (1, 2, 10, 20, 55), um número real (1.33, 4.5, 10.77), uma tabela, um elemento (vehicle, blip, player, marker), entre diversos outros.

Obrigado por ler!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment