Funzioni native

Funzioni native

> Tutorial LeekScript

Ora parleremo delle funzioni del LeekScript!

Le funzioni sono un aspetto essenziale della programmazione. Ti permettono di memorizzare una serie di azioni che puoi riutilizzare quando vuoi.

Su Leek Wars, possiamo distinguere due tipi di funzioni:

Parleremo solo di funzioni native per ora.

Che cosa è ?

Le funzioni native sono le funzioni che il LeekScript ti mette a disposizione, sono quelle che ti permetteranno di ottenere molte informazioni sul combattimento. È anche grazie a loro che sarai in grado di controllare le azioni del tuo porro.

Le funzioni sono rapidamente riconoscibili dalla loro sintassi:

nomefunzione(parametri);

Li avete già visti nell'IA di base durante il capitolo sull'Editor. Come promemoria :

// Quattro funzioni molto utili var nemico = getNearestEnemy(); setArma(ARMA_PISTOLA); moveToward(nemico); useWeapon(nemico);

getNearestEnemy, setWeapon, moveToward e useWeapon sono quattro funzioni che LeekScript ti mette a disposizione.

Una conoscenza minima può aiutare a capire l'utilità di una funzione senza dover consultare la documentazione. I nomi delle funzioni sono in genere autoesplicativi e mostrano a cosa servono.

Il ritorno

Qual è il "ritorno" di una funzione? Non è sistematico, ma una funzione può restituire informazioni.

Questo è il caso in questo esempio:

var nemico = getNearestEnemy();

Se hai prestato attenzione al capitolo precedente, capisci che viene creata una variabile "nemica". E allo stesso tempo, gli viene assegnato un valore con il simbolo di uguale '='.

Ma cosa gli viene assegnato esattamente? È qui che entra in gioco la funzione getNearestEnemy. Questa funzione restituisce l'id del nemico più vicino.

Quindi, quando il tuo porro eseguirà questo codice, chiamerà la funzione getNearestEnemy. Questo restituirà l'identificatore del porro più vicino che verrà poi memorizzato nella variabile "enemy";

Se sei curioso, puoi aggiungere un debug:

var nemico = getNearestEnemy(); debug(nemico);

Se esegui questo codice in un combattimento di prova 1v1, dovresti vedere il numero 1 o 0. Gli ID dei porri in combattimento non sono altro che numeri. Per un combattimento di 4 porri, questi sarebbero numerati da 0 a 3.

Come puoi vedere, debug è una caratteristica nativa di LeekScript. Forse ti starai chiedendo perché mettiamo la variabile "nemico" tra parentesi? Veniamo lì.

Le impostazioni

Questo è ciò che chiami ciò che c'è tra parentesi: parametri. Queste piccole bestie sono molto utili. L'azione che una funzione eseguirà dipenderà dai suoi parametri.

Per tornare alla funzione debug, visualizza un messaggio nei registri di combattimento. E questo messaggio, sei tu che ne indichi il contenuto, grazie a un parametro.

Se assegni il valore 5 nel parametro a debug, il messaggio sarà "5". Se dai il testo "Mi piace la zuppa di porri" a debug, il messaggio sarà "Mi piace la zuppa di porri".

Ecco cosa succede con queste funzioni:

var nemico = getNearestEnemy(); setArma(ARMA_PISTOLA); moveToward(nemico); useWeapon(nemico);

setWeapon fa equipaggiare il tuo porro con un'arma. Per indicargli quale arma deve equipaggiare, devi passare come parametro l'identificativo dell'arma. Qui è "WEAPON_PISTOL", è una costante che designa l'arma Pistol. Questa costante corrisponde al numero 37, l'identificatore della pistola. Potresti scrivere 37 invece di WEAPON_PISTOL, avrebbe lo stesso effetto. Ma l'uso della costante rende il codice più comprensibile ed evita di dover memorizzare gli identificatori di ogni arma/chip.

moveToward ti permette di spostare il tuo porro verso un altro. La funzione ha bisogno dell'id di un porro target per questo. Qui è dove estrai la tua variabile "nemica". Ricorda che ora contiene l'ID del tuo avversario più vicino. Passare questa variabile a moveToward ti indirizzerà a quel brutto porro.

Con useWeapon il tuo porro proverà a sparare a un porro. Allo stesso modo, dici alla funzione che vuoi sparare al tuo nemico.

Nessun ritorno o parametri

Alcune funzioni non restituiscono un valore, né se lo aspettano. Ma non sono inutili!

Ad esempio, la funzione pausa. Ti permette di mettere in pausa il combattimento quando lo guardi. (Non ha alcun impatto sul combattimento, equivale a premere manualmente il pulsante "Pausa" o il