Aller au contenu
Afficher dans l'application

Une meilleure façon de naviguer. En savoir plus.

Asterobot

Une application plein écran sur votre écran d'accueil avec notifications push, badges et plus encore.

Pour installer cette application sur iOS et iPadOS
  1. Appuyez sur Icône de partage dans Safari
  2. Faites défiler le menu et appuyez sur Ajouter à l'écran d'accueil.
  3. Appuyez sur Ajouter dans le coin supérieur droit.
Pour installer cette application sur Android
  1. Appuyez sur le menu à trois points (⋮) dans le coin supérieur droit du navigateur.
  2. Appuyez sur Ajouter à l'écran d'accueil ou Installer l'application.
  3. Confirmez en appuyant sur Installer.

Scripts

Des réponses courtes pour les auteurs de scripts sur TypeScript, npm, les minuteurs, l'accès à internet et aux fichiers, les noms des messages, le débogage et les déplacements.

Les questions qu'on se pose en écrivant des paquets. La documentation développeur couvre chaque sujet en détail.

Dans quel langage les scripts sont-ils écrits ?

En JavaScript. Chaque fichier d'un paquet est un module ES, et les scripts peuvent utiliser la syntaxe JavaScript jusqu'à ES2022, à trois constructions près : les générateurs asynchrones, for await et import() appelé comme une fonction. Consultez Prise en charge de JavaScript.

Puis-je écrire mes scripts en TypeScript ?

Non. Les fichiers d'un paquet doivent se terminer par .js ou .mjs. Vous avez quand même des types : l'éditeur vérifie votre JavaScript comme TypeScript le ferait, et des commentaires JSDoc comme /** @type {BehaviorParameters} */ apportent complétion et vérifications à votre propre code. Consultez Prise en charge de JavaScript.

Puis-je utiliser des paquets npm ?

Non. Il n'y a ni npm ni require(), et un import comme "lodash" est lu comme une dépendance que votre paquet n'a pas déclarée, donc le script ne se charge pas. Pour réutiliser du code, importez vos propres fichiers avec des chemins commençant par ./, ou faites de ce code un paquet à vous et déclarez-le comme dépendance. Consultez Modules et imports et Dépendances.

Existe-t-il setTimeout ou setInterval ?

Non. sleep() de asterobot:timers est le seul minuteur : await sleep(1500) met votre fonction en pause pendant 1,5 seconde sans bloquer le bot. Pour une tâche qui se répète, écrivez une boucle contenant await sleep() et lancez-la depuis la fonction d'entrée sans l'attendre. Pour tout ce que le jeu annonce, un gestionnaire de message vaut mieux qu'une boucle. Consultez Asynchrone et délais.

Un script peut-il utiliser internet ?

Non. Il n'y a ni fetch(), ni WebSocket, ni aucune autre connexion en dehors de la connexion au jeu du bot. Consultez Ce que peuvent faire les scripts.

Un script peut-il lire ou écrire des fichiers ?

Non. Un script n'atteint que les modules de son propre paquet et des paquets dont il dépend. Il n'a nulle part où garder des données pour sa prochaine exécution non plus : chaque démarrage repart de zéro, et values est en lecture seule. Ce dont un script a de nouveau besoin doit venir du jeu, ou d'un réglage que quelqu'un remplit. Consultez Lancer, arrêter et recharger.

Deux bots peuvent-ils partager des données ?

Non. Chaque bot fait tourner sa propre copie du script, et deux copies ne partagent aucune variable. Un script ne peut pas non plus voir ni contrôler un autre bot. Consultez Ce que peuvent faire les scripts.

Où trouver les noms et les champs des messages ?

À trois endroits :

  • La référence du protocole Dofus décrit chaque message et la signification de ses champs.
  • L'éditeur de paquets complète les noms de messages et les champs du contenu pendant la saisie, et signale un champ qu'un message n'a pas.
  • Outils > Réseau, sur un bot, montre les messages que le jeu échange réellement, avec leurs valeurs. Sur un bot MITM (de l'anglais man-in-the-middle, « homme du milieu »), faites l'action dans Dofus et regardez ce qui passe.

Les scripts lisent les noms de champs en camelCase, comme senderName pour sender_name. Consultez Trouver les messages.

Existe-t-il des fonctions pour se déplacer, combattre ou récolter ?

Pour marcher et pour utiliser, oui. move() fait marcher le personnage jusqu'à une cellule de sa carte, changeMap() l'emmène sur la carte suivante par un côté, et useElement() utilise une porte, un zaap, une ressource (pour la récolter), un atelier ou une sortie, en marchant d'abord à portée. Elles marchent sur les bots Full socket et MITM, et ce sont les mêmes déplacements que ceux de l'onglet Carte du bot. travel() emmène le personnage sur n'importe quelle carte, aussi loin soit-elle, par les côtés des cartes, les escaliers, les soleils et les portes (pas encore par les zaaps). Il n'y a pas de fonction pour jouer un combat : un script le fait en envoyant les messages du jeu et en réagissant à ce que le serveur répond. Consultez Ce que peuvent faire les scripts et asterobot:movement.

Pourquoi mon script ne fait-il pas entrer mon bot Full socket en jeu ?

Parce qu'un script Full socket doit identifier le bot lui-même. Son premier message sur une nouvelle connexion doit être IdentificationRequest, envoyé quand launch.reason vaut "initial", et choisir un personnage puis entrer en jeu sont aussi à la charge des scripts. Identifier et lancer montre les lignes qu'utilisent tous les exemples de cette documentation.

Note

Dépendez de @asterobot:base. Le paquet officiel fait l'identification pour vous : un paquet qui l'importe n'a plus à s'occuper de la connexion, sur un bot Full socket comme sur un bot MITM. Pour la faire vous-même, reprenez les lignes que montre Identifier et lancer.

Sur quel bot tester mes scripts ?

Un bot MITM sur votre propre client Dofus. Vous provoquez vous-même les événements en jeu et regardez le script réagir, et aucun compte Ankama n'a besoin d'être enregistré. Gardez à l'esprit que tout ce que le script envoie part au nom de votre personnage. Consultez Identifier et lancer.

Comment relancer un script après avoir modifié son code ?

Cliquez sur Lancer dans l'éditeur, ou sur Arrêter puis Lancer sur la page du bot. Il n'y a pas de bouton Recharger. Enregistrer ne suffit pas à modifier un script déjà en cours : c'est le prochain démarrage qui charge ce que vous avez enregistré. Consultez Lancer, arrêter et recharger.

Comment déboguer un script ?

Commencez par la console du bot :

  1. Vérifiez le badge d'erreur de l'éditeur avant de lancer le script.
  2. Écrivez dans la Console du bot avec botInfo() et les autres fonctions de asterobot:bot, et décochez Asterobot sous Canaux, à gauche de la zone de chat.
  3. Quand le script s'arrête sur une erreur, Le comportement s'est arrêté sur une erreur apparaît en haut de la page du bot, avec le texte complet et un bouton Copier.
  4. Quand un gestionnaire ne semble jamais s'exécuter, regardez ce qui arrive vraiment dans l'outil Réseau.

Journalisation et débogage passe en revue toute la démarche.

Pourquoi mon journal affiche-t-il map[] au lieu de l'erreur ?

Parce qu'Asterobot convertit lui-même en texte les valeurs journalisées, et qu'un objet Error en ressort sous la forme map[]. Journalisez plutôt String(error) ou error.message. Les autres objets ressortent aussi sous la forme map[...] : JSON.stringify() est plus lisible, une fois les valeurs BigInt converties, puisqu'il lève une exception sur elles. Consultez Journalisation et débogage.

Pourquoi mon script s'est-il arrêté avec JavaScript execution deadline exceeded ?

Une partie de votre code a tourné plus de 5 secondes sans rien attendre, ce qui est presque toujours une boucle qui ne finit jamais. Cherchez-la, découpez les longs traitements avec un await sleep(0) de temps en temps, et remplacez des milliers d'appels à record() ou text() à la suite par un seul find() ou query(). Consultez Asynchrone et délais.

Pourquoi les textes du jeu et les noms d'objets sont-ils en français ?

Parce que tout script démarré depuis Asteroboard utilise la langue fr, quelle que soit la langue réglée sur le bot. text() et search() répondent dans cette langue. Pour en lire une autre, interrogez la table _names, qui a une colonne language. Consultez Vue d'ensemble des données de jeu.

Un script peut-il modifier ses propres réglages ?

Non. values est en lecture seule : affecter une valeur à l'une de ses propriétés lève une TypeError, et le réglage garde sa valeur. Les réglages changent quand quelqu'un les applique dans l'onglet Réglages du bot. Consultez Lire les réglages.

Mon script cessera-t-il de fonctionner quand Dofus se mettra à jour ?

C'est possible. Tant qu'Asterobot connaît la version de jeu, il conserve des noms de messages lisibles quand les noms brouillés qui circulent sur le réseau changent. Mais un patch peut ajouter, supprimer ou modifier des messages, une mise à jour d'Asterobot peut renommer un message, et les tables et colonnes des données de jeu suivent la version de jeu. Lisez les champs avec ?., donnez un délai maximal à chaque wait(), et vérifiez votre script après chaque mise à jour. Consultez Après une mise à jour du jeu.

Existe-t-il des exemples de scripts ?

Oui. Les tutoriels sont de petits scripts complets à copier et à adapter, et les exemples de toute la documentation développeur fonctionnent aussi bien sur les bots Full socket que sur les bots MITM.

Read this page in English

Compte

Navigation

Recherche

Recherche

Configurer les notifications push du navigateur

Chrome (Android)
  1. Appuyez sur l'icône de cadenas à côté de la barre d'adresse.
  2. Tap Autorisations → Notifications.
  3. Ajustez vos préférences.
Chrome (Desktop)
  1. Cliquez sur l'icône représentant un cadenas dans la barre d'adresse..
  2. Select Paramètres du site.
  3. Find Notifications et ajustez vos préférences.