Structure de base

La structure de base d'un script sur AnkaBot PC.

Définition - Fonction

Une fonction est un terme générique qui désigne une partie d'un programme indépendant qui peut être appelée par un autre programme ou par elle-même. ( dans ce cas, on dit qu'il y a récursivité )

Une fonction ( aussi appelé "routine" ), est une portion de code représentant un bloc et contenant un sous programme.

Suivant le langage utilisé et plus généralement en POO, on parlera aussi de méthode.( voir § suivant )

Mais pour ce qui nous intéresse ici, le langage LUA, nous parlerons tout simplement de fonction.

  • On envoie à une fonction des "paramètres". (param)

  • Cette fonction va recevoir et traiter des "arguments". (arg)

  • Et cette fonction va retourner ( ou pas ), des "résultats". (return)

La syntaxe pour définir une fonction est :

function leNomDeMaFonction(argument1,argument2,argument3)
    -- Le contenu de notre fonction
end

Voici un exemple de fonction appliquée à AnkaBot :

function envoyerMessage(argument)
    global:printMessage(argument)
end

-- Simplification :

function sendText(arg)
    global:printMessage(arg)
end

AnkabotPC nécessite une structure de base, de la même manière que la structure de base d’une maison.

Cette structure est la suivante:

AUTO_DELETE = {}
GATHER = {}
MIN_MONSTERS = 1
MAX_MONSTERS = 8


function move()
    return {
        -- Les déplacements, récoltes, combats
    }
end

function bank()
    return {
        -- Le retour en banque lorsque le personnage est en surpoids
    }
end

function phenix()
    return {
        -- La chemin vers le phenix si le personnage est mort
    }
end

function stopped()
    -- Lorsque le script est arrêté brusquement
end

function banned()
    -- Lorsque votre compte subi un bannissement
end

function mule_lost(bossMapId)
    -- Lorsqu'une mule ne se trouve pas dans la meme carte du chef
    global:printSuccess(bossMapId)
end

Les trois première fonctions sont appelées par AnkaBot à chaque changement de carte.

La fonction stopped() est appelée lorsque le script est arrêté brusquement.

La fonction banned() est appelée lorsque votre compte subi un bannissement.

Fonction « Move »

La fonction move contient plusieurs types d’actions.

  • Les déplacements sans action.

  • Les déplacements avec récolte.

  • Les déplacements avec combat.

  • Les déplacements avec récolte et combat.

  • Les actions customisées.

C’est cette fonction qui est la plupart du temps appelée à chaque changement de carte.

Fonction « Bank »

La fonction bank ne contient que trois types d’actions.

  • Les déplacements sans action en direction de la banque.

  • Le dialogue avec le banquier pour vider son inventaire.

  • L’accès au coffre d’une maison.

  • Les actions customisées.

Elle est appelée lorsque le pourcentage de retour en banque est atteint. Si le pourcentage est à 90%, alors lorsque le personnage atteindra 90% ou plus dans son inventaire, AnkaBot appellera la fonction bank à la place de la fonction move.

Fonction « Phenix »

La fonction phenix ne contient, elle aussi, que trois types d’actions.

  • Les déplacements sans action en direction du phenix.

  • L’utilisation du phœnix pour se réanimer.

  • Les actions customisées.

Elle est appelée lorsque le personnage est un fantôme. La fonction move sera ensuite rappelée lorsque le personnage se sera réanimé avec un phœnix.

Fonction « Mule_lost »

Cette fonction est exécutée si une mule n'a pas rejoint le chef dans le temps requis (ce temps est contrôlé par la variable global ANKABOT_TIMEOUT), et sera exécutée à chaque changement de carte jusqu'à ce que la mule arrive chez le chef.

Pour Dofus 2.0 qui contient l'auto-pilotage, la manière la plus simple est de faire ça :

function mule_lost(bossMapId)
    map:moveToward(bossMapId)
end

Selon vos script, le bout de script ci-dessus peut ne pas marcher (peut etre il faut passer par un Zaap, havre sac etc ...) et donc c'est à vous dans ce cas de choisir soigneusement les actions à faire pour rejoindre le chef.

La syntaxe :

return {

{ map = "X", path = "Y" },

}

Ne marche pas pour la fonction mule_lost(), elle est réservée seulement pour move(), bank() et phenix().

Exemple :

function mule_lost(bossMapId)
    if map:onMap("4,-3") then
        map:changeMap("top")
    elseif map:onMap("4,-4") then 
        map:moveToCell(516)
    elseif map:onMap("4,-5") then
        map:door(200)
    end
end

Dernière mise à jour