Maintenant que nous avons terminé toute la partie précédente sur comment se construit un script, sur comment il est lu et comment AnkaBot réagit, je vais te faire une petite démonstration.
Pour cet exercice, nous allons cibler la Forêt d'Astrub, et faire en sorte que notre personnage tape des monstres de la forêt et revienne à la Banque d'Astrub pour vider son inventaire dans son coffre lorsqu'il est plein.
Si on traduit cela dans le script :
Le fonction move() contiendra les déplacements vers et dans la Forêt d'Astrub
La fonction bank() contiendra les déplacements de la Forêt d'Astrub vers la banque
On part du principe pour cet exemple que notre bot est immortel (rappelles-toi, tu as eu des super-pouvoirs lors de ton arrivée sur mon wiki !), donc il n'y aura pas de fonction phenix().
Voici la zone ciblée :
Nous allons commencer avec une base de script vierge :
Pour rappel, voilà à quoi notre script ressemble pour le moment :
-- DEMONSTRATIONfunctionmove()return { }endfunctionbank()return { }end--[[function phenix() return {}endNous ne l'utiliserons pas pour cet exemple]]
Première étape de notre script, nous allons remplir notre fonction move(), l'objectif est de se déplacer de la Banque d'Astrub, vers la Forêt d'Astrub et y faire une boucle.
Fonction move()
Pour faciliter la compréhension de cet exercice, voici une modélisation de ce que nous cherchons à faire :
Voici donc à quoi notre script ressemble, en ayant indiqué chaque déplacement sur chacune des cartes de notre script :
Très bien, mais il manque un élément dans notre script ! En effet, si nous regardons bien les lignes que nous avons ajouté à notre fonction move, c'est que notre personnage ne fera que des déplacements, aucun combat... De quoi avoir le tournis ! On ajoute donc la mention vue précédemment dans :
Notre fonction move() est fin prête ! Mais nous allons rencontrer un problème lorsque son inventaire sera plein : il s'arrêtera car nous n'avons pas configurer notre fonction bank().
Aller, c'est parti !
Fonction bank()
Déplacements
Voici ce à quoi doit ressembler notre retour en banque :
Et voilà le travail ! Mais nous allons rencontrer un nouveau problème... Là, notre personnage s'arrêtera devant la banque car il s'agit d'une porte !
"LA PORTE !" - Toi
Mais pas d'inquiétude, il y a une solution à tout. Pour ce faire, nous allons récupérer l'identifiant de la carte de l'extérieur de la Banque d'Astrub à l'aide de notre carte interactive depuis le logiciel AnkaBot.
(spoiler : 191104002) et celui de l'intérieur (spoiler : 192415750).
Si nous faisons cela, en récupérant l'identifiant de la carte (que l'on appelle plus communément "mapID") c'est parce que nous ne pouvons pas indiquer deux fois la même position de cartes, alors que l'intérieur de la banque et l'extérieur ont la même position : [4,-18]. Nous allons donc utiliser les mapID de l'intérieur et de l'extérieur qui eux sont différents.
Nous allons donc ajouter ces deux cartes à notre fonction move(). Mais nous ne pourrons pas utiliser les déplacements classiques avec path, car pour entrer dans la banque il faut passer par la porte.
On récupère donc l'identifiant de la cellule de la porte (il s'agit d'un carré bleu sur la carte interactive de AnkaBot) que l'on utilisera avec door.
En ce qui concerne l'intérieur de la banque, nous allons utiliser la fonctionnalité npcBank = true que nous avons vu ensemble au chapitre (Retour en banque) :
Puis nous allons récupérer la cellule du trigger de sortie de la banque comme nous l'avons vu dans le sous-chapitre sur les Déplacements Trigger, dans le chapitre :
A partir de là, tu perds tes super-pouvoirs, tes personnages ne sont plus immortels, il faudra donc faire la fonction phenix !
Essayes de la réaliser pour ce script, ça te fera un bon entrainement !