Funções nativas

Funções nativas

> Tutorial LeekScript

Agora vamos falar sobre as funções do LeekScript!

As funções são um aspecto essencial da programação. Eles permitem que você memorize uma série de ações que você pode reutilizar sempre que quiser.

Em Leek Wars, podemos distinguir dois tipos de funções:

Por enquanto, falaremos apenas sobre funções nativas.

O que é isso ?

As funções nativas são as funções que o LeekScript disponibiliza para você, são elas que vão te permitir obter muitas informações sobre a luta. Também é graças a eles que você poderá controlar as ações do seu alho-poró.

As funções são rapidamente reconhecíveis por sua sintaxe:

functionName(parâmetros);

Você já os viu na IA básica durante o capítulo sobre o Editor. Como lembrete:

// Quatro funções muito úteis var inimigo = getNearestEnemy(); setWeapon(WEAPON_PISTOL); moveToward(inimigo); useArma(inimigo);

getNearestEnemy, setWeapon, moveToward e useWeapon são quatro funções que o LeekScript disponibiliza para você.

Um entendimento mínimo pode ajudar a entender a utilidade de uma função sem precisar consultar a documentação. Os nomes das funções geralmente são autoexplicativos e mostram para que são usados.

O retorno

O que é o "retorno" de uma função? Não é sistemático, mas uma função pode retornar informações.

É o caso deste exemplo:

var inimigo = getNearestEnemy();

Se você prestou atenção no capítulo anterior, você entende que uma variável "inimiga" é criada. E, ao mesmo tempo, é atribuído um valor com o símbolo de igual '='.

Mas o que exatamente é atribuído a ele? É aqui que entra a função getNearestEnemy. Esta função retorna o id do inimigo mais próximo.

Assim, quando seu alho-porro executar este código, ele chamará a função getNearestEnemy. Isso retornará o identificador do alho-poró mais próximo que será armazenado na variável "inimigo";

Se estiver curioso, você pode adicionar um debug:

var inimigo = getNearestEnemy(); debug(inimigo);

Se você executar este código em uma luta de teste 1v1, deverá ver o número 1 ou 0. IDs de alho-poró em combate nada mais são do que números. Para uma luta de 4 alhos-porós, estes seriam numerados de 0 a 3.

Como você pode ver, debug é um recurso nativo do LeekScript. Você pode estar se perguntando por que colocamos a variável "inimigo" entre parênteses? Chegamos lá.

As configurações

É assim que você chama o que está dentro dos parênteses: parâmetros. Esses bichinhos são muito úteis. A ação que uma função executará dependerá de seus parâmetros.

Para retornar à função debug, exibe uma mensagem nos logs de combate. E esta mensagem, é você quem indica seu conteúdo, graças a um parâmetro.

Se você der o valor 5 no parâmetro para debug, a mensagem será "5". Se você der o texto "Eu gosto de sopa de alho-poró" para depurar, a mensagem será "Eu gosto de sopa de alho-poró".

Isso é o que acontece com essas funções:

var inimigo = getNearestEnemy(); setWeapon(WEAPON_PISTOL); moveToward(inimigo); useArma(inimigo);

setWeapon faz seu alho-poró equipar uma arma. Para indicar a ele qual arma ele deve equipar, você deve passar o identificador da arma como parâmetro. Aqui é "WEAPON_PISTOL", é uma constante que designa a arma Pistol. Essa constante corresponde ao número 37, identificador da arma. Você poderia escrever 37 em vez de WEAPON_PISTOL, teria o mesmo efeito. Mas usar a constante torna o código mais compreensível, e evita ter que memorizar os identificadores de cada arma/chip.

moveToward permite que você mova seu alho-poró em direção a outro. A função precisa do ID de um alho-poró alvo para isso. É aqui que você retira sua variável "inimiga". Lembre-se que agora contém o ID do seu oponente mais próximo. Passar esta variável para moveToward irá direcioná-lo para aquele alho-poró desagradável.

Com useWeapon seu alho-poró tentará atirar em um alho-poró. Da mesma forma, você diz à função que deseja atirar em seu inimigo.

Sem retorno ou parâmetros

Algumas funções não retornam um valor, nem esperam um. Mas eles não são inúteis!

Por exemplo, a função pausa. Ele permite que você pause a luta ao assisti-la. (Não tem impacto na luta, é o mesmo que apertar manualmente o botão "Pause" ou o