# Actions

Nous allons voir à travers cette partie le contenu des fonctions vues précédemment, à savoir les **déplacements** et **actions**.

## **Déplacements simples**

Tout d’abord, nous allons réaliser un déplacement simple.

```lua
{ map = "4,-19", path = "top" },
```

Comme vous pouvez le voir la ligne contient deux informations.

*   `map` représentant les coordonnées de la carte sur laquelle nous souhaitons réaliser une action. Cette indication peut être exprimée en coordonnées ou en mapids.

    > &#x20;Les « mapids » peuvent être obtenues en tapant « /mapid » sur le chat de Dofus. Elles doivent être obligatoirement utilisées lorsque plusieurs cartes possèdent les mêmes coordonnées, comme les intérieurs des bâtiments.
* `path` représentant la direction de changement de carte. Il existe plusieurs valeurs que vous pouvez mettre dans path: « top » pour aller en haut. « bottom » pour aller en bas. « right » pour aller à droite. « left » pour aller à gauche.

Par défaut, lorsque vous donnez une direction (top/bottom/right/left), votre personnage changera de carte par n’importe quelle cellule disponible. Vous pouvez alors accompagner la direction par une cellule précise de changement de carte. Il vous suffit d’ajouter des parenthèses qui contiennent la cellid après la direction: `bottom(454)`. Cette technique est utilisée dans des cartes qui se divisent en deux parties, comme à Pandala.

Enfin, les directions peuvent être aléatoires en ajoutant des barres verticales (|): « top|bottom »

Vous avez aussi la possibilité d’ajouter une cellule id (aussi appelé « cellid »). Il s’agit du numéro de la case sur Dofus. « 125 » demandera à votre personnage de marcher sur la cellule 125 pour changer de carte. Ce sont généralement des soleils qui permettent de changer de carte à l’aide d’une cellule.

De même que pour les directions, vous pouvez ajouter des barres verticales pour faire de l’aléatoire: « 256|45|489 »

Ainsi, dans notre exemple ci-dessous, le personnage réalisera les actions suivantes:

* sur la carte de coordonnées 1,1, il changera de carte par la droite.
* sur la carte de coordonnées 2,1, il changera de carte par le bas via la cellule 452.
* sur la carte de coordonnées 2,2, il changera de carte par la gauche.
* sur la carte de coordonnées 1,2, il marchera sur la cellule 350 pour changer de carte.

```lua
function move()
    return {
        { map="1,1", path = "right" },
        { map="2,1", path = "bottom(452)" },
        { map="2,2", path = "left" },
        { map="1,2", path = "350" },
    }
end
```

## **Récoltes et combats**

Nous savons faire des déplacements simples, nous allons désormais ordonner à notre personnage de récolter et/ou combattre sur une carte.

```lua
{ map = "4,-20", path = "right" , fight = true },
{ map = "5,-20", path = "bottom", gather = true },
{ map = "5,-19", path = "left", fight = true, gather = true },
{ map = "7,12", forcefight = true },
{ map = "7,12", forcegather = true },
```

Je me suis contenté d’ajouter `fight = true` et `gather = true` afin de dire au personnage de combattre et/ou récolter. Pour information, `true` veut dire vrai et `false` veut dire faux. Il est logique que lorsque vous mettez `fight = true` sur une carte, c'est que vous voulez combattre sur celle-ci.

Si on traduit en français, ça donne:

* Le personnage sur la carte de coordonnées 4,-20 combattra puis changera de carte par la droite, et sera ensuite en 5,-20.
* Le personnage sur la carte de coordonnées 5,-20 récoltera puis changera de carte par le bas, et sera ensuite en 5,-19.
* Le personnage sur la carte de coordonnées 5,-19 combattra et récoltera puis changera de carte par la gauche, et sera ensuite en 4,-19.
* Le personnage sur la carte de coordonnées 7,12 combattra dès que possible sur la carte. (utile en donjon par exemple)

**Attention :** Si vous souhaitez combattre sur une seule et unique map ou récolter sur une seule et unique map utilisez **forcefight** et **forcegather**. Ici le bot récoltera et attendra que des ressources soit de nouveau disponible sur la map.

```lua
{ map = "7,12", forcefight = true },
{ map = "7,12", forcegather = true },
```



{% hint style="info" %}
Chose à savoir, les fonctions gather et fight ne fonctionnent pas dans les fonctions bank et phenix.
{% endhint %}

## **Régénération**

La régénération se fait automatiquement avant le début d’un combat si le personnage est inférieur à la vie minimale attendue prédéfinie sur l’interface.

Vous pouvez cependant forcer cette régénération pour d’autres actions comme une récolte ou une action customisée.

```lua
{ map = "5,-20", path = "bottom", gather = true, regeneration = true },
```

J’ai ajouté `regeneration = true` afin de dire au personnage de se régénérer avant le début de son action.

Si on traduit en français, ça donne:

* Le personnage sur la carte de coordonnées 5,-20 se régénéra puis récoltera, et enfin changera de carte par le bas.

{% hint style="info" %}
Cette méthode fonctionne uniquement en fonction move. N’oubliez pas que cette méthode est inutile pour les combats car le processus est **automatique**.
{% endhint %}

## **Objets interactifs**

Un objet interactif est un objet qui nécessite que le joueur clique dessus pour l’utiliser. C’est le cas des portes, de certains escaliers, de leviers, etc... Il est possible d’utiliser des objets interactifs avec SnowBot.

Il faut **remplacer path par door**.

```lua
{ map = "4,-20", door = "254" },
```

Dans cet exemple, le personnage sur la carte de coordonnées 4,-20 utilisera l'objet interactif de cellule id 254.

{% hint style="info" %}
**Celulle kwa ?** Il s’agit du numéro de la case sur Dofus. Regarde l’explication de l’onglet « Carte » dans la partie « Interface » de la documentation si tu souhaites savoir comment l'obtenir.
{% endhint %}

Tu peux par la même occasion ajouter path et door sur la même ligne, le personnage utilisera d’abord l’objet interactif puis changera de carte. C’est très utile pour les cartes qui comportent un levier ou alors pour utiliser des puits.

## **Zaap, Zaapi & Havre-Sac**

Nous allons voir comment utiliser les zaaps, zaapis et havre-sac.

Tout se déroule dans la fonction path, dans laquelle il suffit de mettre les syntaxes ci-dessous.

* `zaap(mapid)` permettant d’utiliser un zaap. mapid représente la mapid de destination.
* `zaapi(mapid)` permettant d’utiliser un zaapi. mapid représente la mapid de destination.
* `havenbag` permettant de rejoindre ou quitter l’havre-sac.

J’ai l’impression que le petit loup a besoin d’un exemple.

```lua
{ map = "-2,0", path = "zaap(1588964)" },
{ map = "-29,-50", path = "zaapi(5486545)" },
{ map = "5,-11", path = "havenbag" },
```

Ce qui donne en français:

* Le personnage sur la carte de coordonnées -2,0 utilisera le zaap de la carte pour aller sur la mapid « 1588964 ».
* Le personnage sur la carte de coordonnées -29,-50 utilisera le zaapi de la carte pour aller sur la mapid « 5486545 ».
* Le personnage sur la carte de coordonnées 5,-11 entrera dans l’havresac.

## **Retour en banque**

Vous pouvez mettre en banque vos objets de manière automatique. Lorsque npcBank (avec le B majuscule !) est en true, le personnage comprendra qu’il devra parler au banquier pour déposer tous ses objets.

```lua
{ map = "9856523", npcBank = true, path "406" },
```

* Sur la carte de coordonnées « 9856523 », le personnage utilisera la banque pour déposer tous ses objets et sortira de la banque sur le cellid 406.

{% hint style="info" %}
Si vous souhaitez effectuer des actions dans la banque, comme par exemple récupérer un objet, vous devez utiliser une fonction customisée pour ouvrir la banque. Vous verrez cela plus tard. c:
{% endhint %}

## **Retour en maison**

Vous avez aussi la possibilité de déposer les objets de votre personnage dans une maison à l’aide de `lockedHouse` et `lockedStorage` comme ci-dessous.

```lua
{ map = "4548789", lockedHouse = "133|12345678|d4rkmonster" },
{ map = "1845631", lockedStorage = "458|12345678" },
```

Il suffit d’ajouter `lockedHouse = "cellid|motdepasse|pseudo_propriétaire"` ainsi que `lockedStorage = "cellid|motdepasse"`.

Cependant petit loup, tu dois savoir qu’il faut obligatoirement utiliser des mapids et non des coordonnées sur ces cartes car l’extérieur et l’intérieur de la maison ont les mêmes coordonnées ce qui provoquerait un bug !

> &#x20;Si le personnage est le propriétaire de la maison, utilisez « -1 » comme mot de passe.

En français ça donne:

* Le personnage sur la carte de mapid 4548789 utilisera la porte de d4rkmonster de cellid 133 avec le mot de passe 12345678.
* Le personnage sur la carte de mapid 1845631 utilisera la porte de cellid 458 avec le mot de passe 12345678.

{% hint style="warning" %}
Si votre serveur n’est pas encore fusionné, n’ajoutez pas « |pseudo\_propriétaire » dans lockedHouse.
{% endhint %}

![](https://1897411253-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LYC02Mjds5_jLWaP5p7%2F-LYC3JnFESqcbWw8yXP5%2F-LYC4nR8eT6ZE-NXx8zU%2F3.png?alt=media\&token=07d6f5f9-0ca6-42ec-9188-fc5e2a8e183e)

Félicitation mon petit loup, tu as suivi jusqu’ici ! Tu es digne de devenir un grand et beau loup. Dernière petite chose à savoir: les priorités des actions.

Récolte < Combat < Door < Custom < Changement de carte

Il te faudra jouer sur ses priorités pour faire ce que tu veux.

Maintenant que tu sais quoi mettre dans les trois fonctions move, bank et phenix, on peut passer à autre chose. Le prochain chapitre portera sur les paramètres.
