Smooth
Administrateurs
-
Adhésion
-
Dernière visite
-
Actuellement
Ajout d'un article de blog dans : c25f89372458901ba5ba2ca865bdbe9d
Tout ce qui a été publié par Smooth
-
The entry function
Every script starts in one function: the default export of the package's index.js. Asterobot calls it each time a bot starts the package, and the way you write it decides whether that start goes through. The default export export default async function behavior(launch) { // ... } Asterobot checks three things before and after calling it: Rule Error when it's broken index.js has a default export behavior module "library/my-first-script/1.0.0/index.js" has no unambiguous default export The default export is a function behavior module "library/my-first-script/1.0.0/index.js" default export is not callable The function returns a promise behavior module "library/my-first-script/1.0.0/index.js" default export must be async and return a Promise Declaring the function async takes care of the last rule. Its name doesn't matter, and an arrow function works as well: export default async (launch) => { ... }. Asterobot calls the function once per start. Only the one in the package the bot plays is called: the default exports of its dependencies never are. The launch object The function receives one argument, launch: Property Type Value launch.reason string Why the script is starting: "initial", "resume" or "reload". launch.generation BigInt 1n for the first script start on the bot's current game connection, then one more for every start on that connection. The same two values can be read anywhere in your code, not only in the entry function: session.launchReason and session.behaviorGeneration, from asterobot:bot. Both start over with a new game connection: when a Full socket bot connects again, or when a Dofus client connects through a MITM bot (man-in-the-middle: the bot relays the game session of a Dofus client someone plays). launch.generation is a BigInt, so compare it with another BigInt, as in launch.generation === 1n. What to do for each launch reason launch.reason When a script starts with it "initial" On a Full socket bot's new game connection, as long as no script has started successfully on that connection yet. "resume" Every later start on the same connection, such as Play after Stop, or Run again. On a MITM bot, every start, the first one included. "reload" When a running script is replaced without being stopped first. No button in Asteroboard does that. Here is what each one asks of your script. "initial" Nothing has been sent on this game connection yet. On a Full socket bot the script identifies first, with the lines from Identify and run. Choosing a character and entering the game are up to scripts too. "resume" The connection is already identified, either by a script that started on it before or, on a MITM bot, by the Dofus client. The character may already be in the game, in a fight or talking to a merchant. Your script didn't receive the messages that arrived while no script was running, so it can't know what happened before it started: work from what arrives from now on. On a MITM bot, someone also plays that character, and session.shared is true. "reload" For the game, this is the same as "resume". The difference is that the previous script was replaced without being stopped, so the messages that arrived during the switch are delivered to the new script instead of being lost. No button in Asteroboard starts a script this way. Handle it like "resume". Most scripts only need to single out "initial": import { session, botInfo } from "asterobot:bot"; import { send } from "asterobot:protocol"; export default async function behavior(launch) { // A new game connection starts with this message. MITM bots never launch // with "initial": the Dofus client has already identified their session. if (launch.reason === "initial") { await send("IdentificationRequest", { ticketKey: session.gameToken, languageCode: session.language, }); } botInfo(`Start ${launch.generation} on this connection (${launch.reason})`); } When a start counts Asterobot waits for the promise the function returns, and the start is complete once the function has returned without an error. Until that happens: The Play button keeps loading, and Run in the editor doesn't show its Running on toast. The script already runs. The handlers you registered receive messages, Stop works, and the package's action buttons can be used. If the function fails before returning, the start doesn't count. On a Full socket connection where no start has succeeded yet, the next start is "initial" again. So set things up and return. Returning doesn't stop the script: the handlers you registered keep working until something stops it. Work that goes on for the whole session belongs in handlers, or in a loop you start without awaiting it, as Async and timing shows. Top-level code The code at the top level of your modules, outside any function, runs before the entry function is called, at every start, in every module index.js reaches. A dependency's top-level code runs before the code of the module that imports it. Top-level await works. Asterobot also runs that code when it reads the package's settings, for the Package settings section of the bot's Settings tab and when a bot starts the package. That reading happens without a bot or a game session, so the built-in modules behave differently while it lasts: During the reading What happens session Holds empty values: gameToken and language are "", and launchReason is "initial". values, from asterobot:parameters Is empty. on(), onTraffic(), intercept(), onChange() Return as usual, but the handler is never called. botInfo() and the other logging functions Do nothing. packages.info() Works as usual. send(), request(), wait(), sleep(), disconnect() and every function of asterobot:gamedata Throw an error ending with not available while reading a package's declarations. A top-level await on something that can't settle during the reading fails with package awaits at import time, which cannot be answered without a Game session. When the reading fails, Package settings shows Couldn't read this package's settings with the reason, and the script starts without its settings: every read from values gives undefined. Keep the top level to imports, constants, declarations and function definitions, and put everything else in the entry function. When the start fails What went wrong What you see The code can't be loaded: a syntax error, an import that doesn't resolve, a module limit exceeded Only a toast: Couldn't start the behavior after Play, or Couldn't run the package after Run. A rule of the default export is broken The toast, and The behavior stopped with an error at the top of the bot's page, with one of the texts above. The top-level code throws The toast, and the alert with a text starting with evaluate behavior module. export const parameters or export const actions isn't an object of objects, or an action has no run function The toast, and the alert with a text starting with read declarations of. The entry function throws, or an await in it rejects without a catch The toast, and the alert with a text starting with initialize behavior module. The top-level code or the function runs for 250 ms without awaiting The toast, and the alert with a text containing JavaScript execution deadline exceeded. When the code can't be loaded, open the bot's Settings tab: reading the settings loads the same code, so Package settings shows Couldn't read this package's settings followed by the reason. That section describes the package the bot is set to play, which is the one Run gave it. It doesn't cover an inline script. Errors covers what can go wrong once the script runs, and Play, stop and reload what each start keeps from the previous one.
-
Package layout
A package is a small set of JavaScript files with a fixed starting point, index.js, and not every file in it runs when a bot starts the package. What a package contains A package with a few files looks like this: index.js asterobot.json lib/chat.js lib/format.mjs File Required What it's for index.js Yes The entry module. Every script starts here. Other .js and .mjs files No Modules that index.js imports, directly or through other modules. They can sit at the root of the package or in folders. asterobot.json No The manifest: dependencies, the Asterobot versions the package works with, and declared permissions. Asterobot reads nothing else. A JSON data file, an image or a README placed in a package is left out: it's not part of the script, and no script can read it. .js and .mjs files are handled the same way, as ES modules. A package you create in Library Manager starts with index.js alone. Create a package shows how to add files in the editor. index.js index.js is always the entry module, at the root of the package. It can't be renamed, and the editor shows no trash icon for it. Asterobot looks for three exports in it. The default export is the function called when a bot starts the package, described in The entry function. export const parameters and export const actions declare the settings and the buttons shown on the bot's Settings tab: see Declare settings and Declare actions. When your package is a dependency of another package, its index.js is also what that package receives when it imports yours. Modules and imports explains how. Only what index.js reaches runs When a bot starts the package, Asterobot begins with index.js, follows its import statements, then the imports of those modules, and so on. A file that isn't reached this way is never loaded: its code doesn't run, and a mistake in it doesn't stop the script. The module limits count the same files, dependencies included: Limit Value Modules reached from index.js 256 Total size of their source code 4 MiB Length of an import chain 64 modules Past any of them the script doesn't start. Limits lists every limit a script runs under. Module paths A module's path is its place inside the package, such as lib/chat.js. Every file you add in the editor follows these rules: Rule Accepted Refused Ends in .js or .mjs lib/chat.js lib/chat.ts, data.json Relative to the root of the package lib/chat.js /lib/chat.js Uses forward slashes lib/chat.js lib\chat.js Stays inside the package lib/chat.js ../chat.js Written without ./ and without doubled slashes lib/chat.js ./lib/chat.js, lib//chat.js The Add a file dialog checks the path while you type: Message Cause A module must be a .js or .mjs file. The path doesn't end in .js or .mjs. A path must stay inside the package. The path starts with /, or contains .. or a backslash. This package already has a file at that path. Another file of the package already has this path. The dialog doesn't check the last rule of the first table. A file added as ./lib/chat.js or lib//chat.js appears in the Files list, but Save then fails with Couldn't save. Remove that file and add it again as lib/chat.js. Zip files and the command line describes how the files of an imported .zip are laid out. How error messages name your files Error messages refer to a module by where its package sits in your library: library/, the package name, the version, then the path. The file lib/chat.js of my-first-script 1.0.0 appears as library/my-first-script/1.0.0/lib/chat.js. A package installed from the marketplace has its name split at the colon: index.js of @alice:mining 1.4.2 is library/@alice/mining/1.4.2/index.js. An inline script, loaded with Inline script, isn't in the library, so its name starts with local/ instead. asterobot.json asterobot.json is optional. A new package doesn't have one, and Asterobot only writes the file once there's something to put in it. You don't edit it in the code editor: open the package's own page and use its Manifest card. Field Written by What it holds dependencies You The other library packages this package imports, and their versions compatibleVersion You The Asterobot versions the package works with, such as >=1.5.0 <2.0.0 permissions You What the package says it needs. Asterobot doesn't enforce them yet: see Permissions. sourceId Asterobot The asterobot.net file the package was installed from integrity Asterobot A checksum of the package's files, for a package installed from the marketplace. Asterobot checks it each time it loads the package. The manifest describes every field, and Dependencies shows how to declare one. Next, The entry function.
-
Share your package
Your package only exists in your own library until you share it. You can send someone a .zip file, or publish the package on the marketplace so anyone with Asterobot can install it. Export a .zip Open Library Manager. Open the menu at the end of your package's row, or right-click the row. Choose Export. Your browser downloads a file named after the package and its version, such as my-first-script-1.0.0.zip. The same menu is also on the package's own page. The archive holds the package's files as they are in your library: index.js, your other modules, and asterobot.json if the package has one. The settings people chose for your package on their bots aren't part of it. Import it on another Asterobot Whoever receives the file installs it from their own Library Manager: Click Import a .zip. Drop the file on Drop a .zip here, or click to choose one, or click that area to pick the file. Type a Name. Version fills in by itself when the file name ends with a version, as in -1.0.0.zip. Click Import. A Package imported toast confirms it. The name and version come from the dialog, not from the archive. If a package with the same name and version is already installed, the dialog warns This replaces the installed my-first-script 1.0.0. and Import replaces it. Archives can't be bigger than 32 MiB. Manage your library covers importing from the player's side, and Zip files and the command line describes the archive in detail. Give each change a new version A package is identified by its name and its version together. Your library can hold my-first-script 1.0.0 and 1.0.1 side by side, and each bot plays one exact version. So when you change a package you've already shared, give the change a new version instead of reusing the old number. Two different packages under the same name and version can't be told apart, and importing one replaces the other. To start a new version from the current one: In Library Manager, open your package's menu and choose Copy to a new version. The Copy this package dialog suggests the same name, with the last number of the version raised by one: 1.0.0 becomes 1.0.1. Change it if you want another number. Click Copy. The editor opens on the new version. Dependencies, permissions and the compatible version are copied along with the code. Your bots keep playing the version they were on until you Run the new one on them. Names and versions explains how to number versions. Publish on asterobot.net The marketplace is the Library category of asterobot.net, and any asterobot.net member can publish a package there by uploading the .zip you exported. Before you publish has a checklist, and Publish on asterobot.net walks you through it. When you publish a new version later, follow Publish an update.
-
Add a setting
The chat bot from Send messages has its trigger and its reply written in the code. Turn them into settings, and anyone who runs your package can change them from the bot's page, without editing code and without stopping the script. Declare the settings A package declares its settings by exporting an object named parameters from index.js. Each key is the name of a setting, and its value describes the setting: export const parameters = { enabled: { type: "bool", label: "Answer in chat", default: true, }, trigger: { type: "string", label: "Trigger", description: "The chat message the bot answers.", default: "!hello", }, reply: { type: "string", label: "Reply", description: "What the bot says back.", default: "Hello from my first script", }, }; Field What it does type bool, string, int, double, array or map. It decides the input shown on the bot's page: a switch for bool, a text box for string, a number box for int and double, a list for array and map. label The name shown next to the input. Without it, the setting's own name is shown. description A line of help shown with the input. default The value the setting has until someone changes it. Without it, the setting starts empty: false, "", 0, an empty list or an empty map, depending on its type. Settings can also have a placeholder, a unit, a min and a max, a list of choices, and, for lists and maps, an of type. Declare settings describes all of them and the rules they follow. Asterobot reads these declarations by running the top level of your modules, without calling your default export. Keep the top level of index.js to imports and declarations: any other code placed there also runs when Asterobot reads the package's settings. Use them in the script This is the script from Send messages, reading its trigger and its reply from the settings: import { session, botInfo, botWarn } from "asterobot:bot"; import { values, onChange } from "asterobot:parameters"; import { on, send, wait } from "asterobot:protocol"; export const parameters = { enabled: { type: "bool", label: "Answer in chat", default: true, }, trigger: { type: "string", label: "Trigger", description: "The chat message the bot answers.", default: "!hello", }, reply: { type: "string", label: "Reply", description: "What the bot says back.", default: "Hello from my first script", }, }; export default async function behavior(launch) { onChange(({ name, value }) => { botInfo(`Setting ${name} is now ${value}`); }); on("ChatChannelMessageEvent", async (traffic) => { // Read on every message, so an applied change counts from the next line. if (!values.enabled || traffic.payload?.content !== values.trigger) return; // Kept for the whole exchange, because the setting can change meanwhile. const reply = values.reply; // A reply equal to the trigger would answer its own echo forever. if (reply === values.trigger) return; try { // The wait starts before the reply goes out, so a quick echo isn't missed. await Promise.all([ wait( (echo) => echo.type === "ChatChannelMessageEvent" && echo.payload?.content === reply, { timeout: 5000 }, ), send("ChatChannelMessageRequest", { channel: "GLOBAL", content: reply }), ]); botInfo("Reply delivered"); } catch (error) { // An error that escapes a handler stops the whole script. botWarn("Reply not delivered:", String(error)); } }); // A new game connection starts with this message. MITM bots never launch // with "initial": the Dofus client has already identified their session. if (launch.reason === "initial") { await send("IdentificationRequest", { ticketKey: session.gameToken, languageCode: session.language, }); } } values, from asterobot:parameters, holds your package's current settings by name, so values.trigger is whatever the Trigger field says. It's live: when someone applies new settings on the bot's page, the running script reads the new values from then on, without restarting. That's why the handler reads values each time a message arrives instead of copying the settings once at the start. values is read-only, so don't assign to it or delete from it: assigning throws a TypeError with 'Set' on a dynamic object returned false, and deleting throws Could not delete property "<name>" of a dynamic object. Either way, the setting keeps the value set on the bot's page. A setting declared as int or double reads as a regular number, not as a BigInt. onChange() is for doing something the moment a setting changes. Its handler runs once for each setting whose value changed, only for your own package's settings, and receives the setting's name and its new value. Like a message handler, an onChange() handler that throws an error stops the script. Change the settings in Asteroboard Run the package on your MITM bot. On the bot's page, open Settings, then Package settings. Your package's section lists Answer in chat, Trigger and Reply with their current values. Change Reply: Not applied appears next to the package's name. Click Apply. A toast says my-first-script settings applied, and the bot's Console shows Setting reply is now followed by your text. Say the trigger in the Dofus chat, and the bot answers with the new reply. Reset throws away the changes you haven't applied. Settings are saved with the bot, even while no script is running, and the next start uses them. Package settings shows the settings of the bot's package, the one that Run or Load a new package gave it, whether or not it's running. A bot without a package shows No package selected. When you change the declarations in the editor, save them and click Refresh in this section to see the new fields, then Run the package again so the running script gets them too. When settings are refused What you see What it means Couldn't read this package's settings, in Package settings A declaration is invalid, for example a default that doesn't match its type. The alert gives the reason, ending with something like parameter "enabled" default: want a bool, got string. Until you fix it, the script starts with no settings at all: every read from values returns undefined. Couldn't apply the settings A value you applied doesn't fit its declaration, for example a number below the setting's min. The toast gives the reason, such as retries: 0 is below the minimum 1, and nothing from that form is saved. A package can also put buttons on the bot's page: see Declare actions. Next, Share your package.
-
Send messages
Reading the game is half of what a script does. Here the chat script learns to answer: when someone says !hello, the bot replies in chat and checks that its reply went through. Warning On a MITM bot (man-in-the-middle: the bot relays the game session of the Dofus client you play), everything the script sends goes out as your character. The reply on this page is a real chat message that other players can see. Try the message by hand first Before writing code, send the message from the Network tool. If it works there, you know the payload is right. On the bot's page, open Tools > Network > Send a game message. Keep To the server selected, and pick ChatChannelMessageRequest in the list of messages. Type some text in content and leave the other fields as they are. Empty fields aren't sent, and a channel left out means GLOBAL, the general channel. Check the payload under This is what will be sent., then click Send ChatChannelMessageRequest. Your line appears in the game. If ChatChannelMessageEvent is selected in Settings, Traffic also shows your request going Out and your line coming back In. send() await send("ChatChannelMessageRequest", { channel: "GLOBAL", content: "Hello" }); send() takes a message name and a payload holding the message's fields. It builds the message and sends it to the game server, and its promise resolves as soon as the message is sent: it doesn't wait for an answer. The promise rejects when the message can't be built or sent: Problem Error A field the message doesn't have ChatChannelMessageRequest.contnt: unknown protobuf field A value of the wrong type ChatChannelMessageRequest.content: expected string A channel name that doesn't exist ChatChannelMessageRequest.channel: unknown enum symbol "GENERAL" A message name Asterobot can't send semantic protobuf message is not mapped: MyMessageRequest Sending takes longer than the timeout The promise rejects after 30 seconds, or after the timeout you pass channel takes a channel's name as a string, such as "GLOBAL", "GUILD" or "PARTY", or the channel's number. The Dofus protocol reference lists every channel. Wait for the answer The game doesn't answer a chat line with a response. It sends the line to everyone on the channel as a ChatChannelMessageEvent, you included. To know your line went through, wait for that event. A wait only sees messages that arrive after wait() is called, and nothing guarantees that send() resolves before the game's answer comes in. So start the wait first, then send, and await both together: await Promise.all([ wait( (traffic) => traffic.type === "ChatChannelMessageEvent" && traffic.payload?.content === "Hello", { timeout: 5000 }, ), send("ChatChannelMessageRequest", { channel: "GLOBAL", content: "Hello" }), ]); wait() is called first, so it's already listening when the line goes out. Promise.all resolves once both have succeeded, and rejects as soon as either one fails. Two other ways of writing this look fine and aren't: a wait started after await send() can miss an answer that came quickly, and a wait kept in a variable to await after send() is left behind when send() fails. Waiting explains both. wait() resolves with the next inbound message that matches, and you choose what matches: a message name, or a function that returns true for the message you want. The function above checks the name and the text, so another player's line doesn't count. wait() has no timeout of its own. A wait that never matches stays open until the script stops, so always pass { timeout }, in milliseconds. When the time runs out, the promise rejects with protocol wait timed out. request() request() sends a message and resolves with the game's response to it. Only a handful of Dofus requests get a response, matched to them by uid, and none of them is something a first script needs to send. For every other message nothing comes back: request() waits until its timeout, 30 seconds unless you pass another one, and then rejects with context deadline exceeded. So for almost everything, wait for the event the game answers with while you send(), as this page does. Sending covers request(), and the to option that sends a message to the Dofus client instead of the server. Timeouts Function Default timeout To change it send() 30 seconds { timeout: milliseconds } as the third argument request() 30 seconds { timeout: milliseconds } as the third argument wait() None: it waits until the script stops { timeout: milliseconds } as the second argument A timeout must be a positive number of milliseconds. Anything else rejects with timeout/milliseconds must be a finite positive Number. The complete script import { session, botInfo, botWarn } from "asterobot:bot"; import { on, send, wait } from "asterobot:protocol"; const TRIGGER = "!hello"; const REPLY = "Hello from my first script"; export default async function behavior(launch) { on("ChatChannelMessageEvent", async (traffic) => { // Only the exact trigger: the game also sends our own reply back to us, // and answering that echo would start a loop. if (traffic.payload?.content !== TRIGGER) return; try { // The wait starts before the reply goes out, so a quick echo isn't missed. await Promise.all([ wait( (echo) => echo.type === "ChatChannelMessageEvent" && echo.payload?.content === REPLY, { timeout: 5000 }, ), send("ChatChannelMessageRequest", { channel: "GLOBAL", content: REPLY }), ]); botInfo("Reply delivered"); } catch (error) { // An error that escapes a handler stops the whole script. botWarn("Reply not delivered:", String(error)); } }); // A new game connection starts with this message. MITM bots never launch // with "initial": the Dofus client has already identified their session. if (launch.reason === "initial") { await send("IdentificationRequest", { ticketKey: session.gameToken, languageCode: session.language, }); } } The handler is async so that it can await. Handlers don't wait for each other: while this one waits for the echo, the bot keeps handling other messages, the echo included, which is how wait() gets to see it. The try/catch keeps a failed reply from ending the script, and String(error) turns the error into text the console can print. Anyone who says !hello on a channel your character receives gets an answer in the general channel, so stop the script when you're done testing. Test it Run the package on your MITM bot. Say !hello in the Dofus chat. The bot answers in the general channel, and its Console shows Reply delivered. If the console shows Reply not delivered: followed by a reason, select ChatChannelMessageRequest and ChatChannelMessageEvent in the Network tool's Settings, try again, and check in Traffic whether the request went out and whether the line came back. Next, Add a setting lets people change the trigger and the reply without editing your code. Waiting covers every way to wait for a message.
-
React to messages
Most of a script's work is reacting to what the game says. Here you'll build the smallest useful example: a script that writes every chat line the bot receives to the bot's console. Test it on a MITM bot (man-in-the-middle: the bot relays the game session of the Dofus client you play). A Full socket bot doesn't get into the game until a connection script takes it there, and chat only starts once a character is in game. Your first bot sets up a MITM bot. Find the message Before you write a handler, you need the message's name and the names of its fields. The Network tool shows both. On your MITM bot's page, open Tools > Network > Settings. Type Chat in the filter box and tick ChatChannelMessageEvent. Click Apply. A toast says Now mirroring 1 message type(s). Open Traffic, then say something in the Dofus chat. A ChatChannelMessageEvent row appears: the server sends your own line back to you, as it sends everyone else's. Click the row to see its fields. The fields have the names a script reads, in camelCase: content is the text, senderName the speaker's character name, and channel the channel it was said on, as a name such as GLOBAL. There's one difference: 64-bit numbers such as senderCharacterId show in quotes here, while a script receives them as BigInt values. The Dofus protocol reference says what every field means. The Live chat switch on the bot's Console tab turns on this same message: both switches are one setting. Write the handler Replace the contents of index.js with: import { session, botInfo } from "asterobot:bot"; import { on, send } from "asterobot:protocol"; export default async function behavior(launch) { on("ChatChannelMessageEvent", (traffic) => { // A message Asterobot couldn't decode has no payload, and an error // thrown in a handler stops the whole script. if (!traffic.payload) return; const { channel, senderName, content } = traffic.payload; botInfo(`[${channel}] ${senderName}: ${content}`); }); // A new game connection starts with this message. MITM bots never launch // with "initial": the Dofus client has already identified their session. if (launch.reason === "initial") { await send("IdentificationRequest", { ticketKey: session.gameToken, languageCode: session.language, }); } } on("ChatChannelMessageEvent", handler) registers handler for every inbound message with that name. It returns immediately, and the handler then runs each time such a message arrives, until the script stops. That's why the default export can finish right after registering it. The handler receives each message as a traffic object, and traffic.payload holds its fields. The check at the top of the handler matters: a handler that throws an error stops the whole script, and a message Asterobot couldn't decode has no payload to read. The handler is registered before the identification on purpose. Registering a handler sends nothing, and while send() is being awaited, the messages that arrive already reach the handlers registered before it. on() also takes "*" to receive every inbound message, or a function that decides which messages to keep. Listening covers those options, the order handlers run in, and off(). Test it In the editor, pick your MITM bot and click Run. On the bot's page, open Console. In Sources, keep only Script. Say something in the Dofus chat. A line such as [GLOBAL] Airelle: hello appears in the console. With Live chat on and Chat in Sources, the same line also shows as a chat line: one comes from Asteroboard's live chat, the other from your script. Your script receives chat lines either way, because what you select in the Network tool only changes what Asteroboard shows. Next, Send messages makes the script answer. Traffic lists every property of a traffic object.
-
Identify and run
A package does nothing until a bot plays it. Start by running the starter package on a bot, then send its output to the bot's page and add the lines that identify a Full socket bot on the game server. Before you start You need a bot whose header shows Connected to game server. The easiest is a MITM bot (man-in-the-middle: the bot relays the game session of the Dofus client you play). There's no Ankama account to store, and you can watch the result in your own game. Your first bot sets one up, and it shows Connected to game server once your Dofus client has connected through it. A Full socket bot works too: see Full socket mode. Run the package Open your package in the editor. In the bot picker, choose your bot. Click Run. Asteroboard saves the package, stops whatever the bot was playing, loads your package on it and starts it. A toast says Running on followed by the bot's name. Run also makes this package the bot's package. The bot's header now shows my-first-script@1.0.0, and Play on the bot's page starts it again later. If the package doesn't start, the toast says Couldn't run the package instead. When something goes wrong explains where to look. Where the output goes The starter code writes with info() from asterobot:console, so its line lands in Server > Console: started (resume) on a MITM bot, or started (initial) the first time it starts on a Full socket bot's connection. Scripts have two sets of output functions, and they write to different places: Functions Module Where the lines appear botDebug(), botInfo(), botWarn(), botError() asterobot:bot The bot's Console tab, as Script lines at that level. Lines of every level show there. debug(), log(), info(), warn(), error(), also available as console.debug(), console.log() and so on asterobot:console Server > Console, and the terminal Asterobot runs in. The lines don't say which bot wrote them. By default debug lines are left out: set Server level to DEBUG on that page to see them there. That console is an object exported by asterobot:console: scripts have no global console, so it has to be imported like the rest. While you write a script, the bot's console is almost always the one you want. Change index.js so its output lands there: import { botInfo } from "asterobot:bot"; export default async function behavior(launch) { botInfo("Started, launch reason:", launch.reason); } Click Run again, then open the bot's Console tab: the line is there. When you pass several values, the console joins them with spaces. Identify a Full socket bot In Full socket mode, Asterobot signs in, picks the game server and opens the game connection, then leaves the rest to the script. The first message on a new game connection has to be IdentificationRequest, carrying the ticket the login server issued for that connection. These are the lines every sample in these docs uses: import { session } from "asterobot:bot"; import { send } from "asterobot:protocol"; export default async function behavior(launch) { // A new game connection starts with this message. MITM bots never launch // with "initial": the Dofus client has already identified their session. if (launch.reason === "initial") { await send("IdentificationRequest", { ticketKey: session.gameToken, languageCode: session.language, }); } } Field Value What it is ticketKey session.gameToken The ticket the login server issued for this game connection, which Asterobot kept while signing in. languageCode session.language The language code the script was started with. The game server uses it for the texts it sends back. Right now that's always fr for a script started from Asteroboard, whatever language the bot itself is set to: nothing Play, Run, Load a new package or Load a package and play it send changes it. The Dofus protocol reference writes these fields ticket_key and language_code. A script can send either spelling, and these docs use camelCase because that's how scripts read fields back. When a script has message handlers, register them above this block, as the next pages do. Registering a handler sends nothing, so the identification is still the first message out, and handlers registered earlier already receive what arrives while send() is awaited. Caution Never log session.gameToken or show it to anyone. It's the ticket to the bot's game session, and a stranger who has it could take that session over. A field the message doesn't have makes send() reject. Sending token instead of ticketKey, for example, fails with IdentificationRequest.token: unknown protobuf field, and the script stops with that error. Identifying doesn't take the bot any further. Choosing a character and entering the game are up to scripts too: Asterobot doesn't do them for a Full socket bot. Note Coming soon. Ready-made basic and full connection scripts will take a Full socket bot into the game. Until they're available, you can learn what the game expects by watching your own Dofus client, as described below. Watch what your Dofus client sends A MITM bot shows the messages your client exchanges with the game server, in the order they happen. To see what logging in to a character takes: Before you launch Dofus, open your MITM bot's page, then Tools > Network > Settings. Tick the messages you want to watch. The select button next to the filter ticks every message the filter shows. Click Apply. Open Traffic, then launch Dofus and log in to a character. Read the list from the top. Out marks what your client sent and In what the server sent. Click a message to see its fields. If Settings then shows a badge such as "12 message(s) dropped - the stream couldn't keep up", select fewer messages and log in again. Why the check is harmless in MITM mode The same package runs on both kinds of bot. On a MITM bot, your Dofus client identifies the session before any script starts, so Asterobot reports the script's first start as "resume", never "initial", and the if skips the identification. Even a script without the check can't identify a relayed session a second time. Asterobot refuses to forward the message and writes Refused to forward a message that would re-authenticate a relayed session in the bot's console. Launch reasons launch.reason is "initial" on a Full socket bot's new game connection, until a script has started successfully on it. Every later start on that connection is "resume", and so is every start on a MITM bot. The entry function lists every reason and what each one asks of your script. A start counts as successful once the default export's function has finished. If a script sends IdentificationRequest and its function then fails before finishing, the next start on that connection is "initial" again, and the script identifies a second time. Handle the errors that can happen after the identification so the first start succeeds. Stop and play again The bot's header has the controls for its package: Control What it does Play Starts the bot's package. It's disabled while the bot isn't connected, with the tooltip Connect the bot to a game before playing a behavior. When the bot has no package yet, it opens the Load a behavior selection dialog instead. Stop Takes the place of Play while a script runs. It stops the script and nothing else: the bot stays connected to the game. The menu next to them Load a new package, Load a package and play it and Unload package. There's no Reload button. To restart a script with your latest code, click Run in the editor, or Stop and then Play on the bot's page: both start the code you last saved. Play, stop and reload explains what's kept between two starts and what starts over. When something goes wrong What you see What it means A number on the editor's error badge The editor found errors, such as a misspelled function or a field a message doesn't have. It doesn't stop you from saving or running, but the script will probably fail. Couldn't run the package after Run, or Couldn't start the behavior after Play The script didn't start, and the toast gives no reason. Open the bot's Settings tab: when the code can't even be loaded, for example because of a syntax error or an import that doesn't resolve, Package settings shows Couldn't read this package's settings with the reason. The editor's error badge usually points at the line too. The behavior stopped with an error, at the top of the bot's page The script started, then threw an error or had an await reject without a catch, while starting or later. The alert shows the complete error text, with Copy and Dismiss. In Bot Manager, the bot's Behavior column says Failed. The error text starts with where the script failed. Sending token instead of ticketKey while the script starts gives: initialize behavior module "library/my-first-script/1.0.0/index.js": Promise rejected: IdentificationRequest.token: unknown protobuf field Dismiss hides the alert. A different error still shows up, even after you've dismissed the previous one. Errors explains what stops a script and what doesn't, and Error messages lists the texts you can meet. Next, React to messages.
-
Create a package
Every script lives in a package. You create one in Library Manager, and Asteroboard opens it in the editor with a few lines of starter code that already run. Create the package In the sidebar, open Library Manager. Click New package. The New local package dialog opens. In Name, type a name for your package, for example my-first-script. Leave Version at 1.0.0. Click Create and edit. The dialog closes and the editor opens on your package, showing index.js. Back in Library Manager, the package has its own row with the Local badge. Field Default Rules Name Empty Required. A package you create is local, so its name can't start with @ and can't contain : or @ anywhere. Version 1.0.0 Required. Names and versions explains how to number versions. The dialog tells you when something is wrong: Message What to do A new package is local, so its name can't start with '@' - those are assigned by the marketplace. Remove the @. Names that start with @ belong to packages installed from the marketplace. A local package name can't contain ':' or '@'. Remove the : or the @. my-first-script 1.0.0 already exists and would be replaced. Your library already has a package with that name and version. Create and edit stays disabled until you change one of them. Couldn't create the package Asterobot didn't create the package. This toast gives no reason. A tour of the editor The top bar Item What it does Box icon Opens the package's own page, with its details and its manifest. Name and version The package you're editing, such as my-first-script @1.0.0. Unsaved Appears while some changes aren't saved. Incompatible Appears when the Asterobot versions the package says it works with don't include the one you run. See Compatibility. Error count A badge such as 2 error(s) when the editor finds errors. It counts every file of the package, not only the open one. IntelliSense Hover it to see how many game messages the editor can complete. If it says Couldn't load the typings - editing works, completion doesn't., you can keep editing, without completion. Bot picker Chooses the bot that Run starts the package on. It only appears when at least one bot is connected to a game. Game Opens a panel next to the code with the map viewer (Atlas) and the game data browser (Datacenter). Save Saves every file of the package. Ctrl+S does the same. The button is disabled while nothing has changed. Run Saves, then starts the package on the bot in the picker. It's disabled when no bot is connected to a game, with the tooltip No bot is connected to a game. Files The Files column lists the package's modules, index.js first. A dot after a file's name means it has unsaved changes, and a number next to it counts its errors. The plus button adds a file. The Add a file dialog asks for a Path, such as lib/helper.js. The path must end in .js or .mjs, stay inside the package and not be taken already, and the file only exists once you save. The trash icon, shown when you hover a file, removes it from the list, and saving deletes it from the package. index.js has no trash icon: it's where every script starts. Saving replaces the package's files with exactly what the editor holds. A bot that's already playing the package keeps running the code it started with until it starts again, which is what Run does. The starter code A new package's index.js contains: import { info } from "asterobot:console"; export default async function behavior(launch) { info(`started (${launch.reason})`); } Line by line: import { info } from "asterobot:console"; brings in the info() function from the built-in asterobot:console module. Everything Asterobot gives scripts comes from an asterobot: module imported this way. export default async function behavior(launch) { declares the function Asterobot calls when a bot starts the script. It has to be the default export of index.js, and it has to be async. Its name doesn't matter. launch is an object Asterobot passes in. launch.reason says why the script is starting: "initial", "resume" or "reload". The next page explains what each value means for your script. info(`started (${launch.reason})`); writes a line such as started (initial) to Asterobot's own log. That log is in Server > Console, not in the bot's Console tab, so don't look for it on the bot's page. The closing } ends the function. Returning from it doesn't stop the script: anything the function set up, such as handlers for game messages, keeps working until the script is stopped. This one sets nothing up, so it has nothing left to do. The starter code doesn't identify the bot on the game server. On a Full socket bot it runs, but nothing happens in the game. Identify and run fixes that, and moves the output to the bot's page.
-
Your toolbox
Everything you need to write scripts is already in Asteroboard, plus one reference on asterobot.net. Here's what each tool is for, so you know where to look when a script doesn't do what you expect. The package editor You write code in the package editor. Open it from Library Manager: New package creates a package and opens it, and Edit code, in a package's menu, opens one you already have. Only local packages can be edited: a package downloaded from the marketplace is read-only. The editor completes the asterobot: functions and the names of game messages as you type, checks the fields you put in a message, and counts errors across every file of the package. Its Game panel shows the map viewer (Atlas) and the game data browser (Datacenter) next to your code. Create a package gives a tour of it, and The editor covers every feature. Run Run, in the editor, saves your package and starts it on a connected bot you pick, replacing whatever that bot was playing. Change a line, click Run, watch the bot: that's the loop you'll repeat most. Identify and run explains it. The bot's Console and Problems On a bot's page, the Console tab shows what your script writes with botDebug(), botInfo(), botWarn() and botError(). Those lines are mixed with Asterobot's own messages about the bot and, when Live chat is on, with the game chat. When the console gets busy, keep only Script in Sources. When a script stops because of an error, The behavior stopped with an error appears at the top of the bot's page, whichever tab is open, with the complete error text and a Copy button. See Console and Logging and debugging. Server > Console What a script writes with asterobot:console doesn't appear on the bot's page. It goes to Asterobot's own log, which you read in Server > Console and in the terminal where Asterobot runs. Those lines don't say which bot wrote them. By default, debug lines are left out: to see them in Server > Console, set Server level to DEBUG. Status and console describes the page. The Network tool On a bot's page, Tools > Network shows the messages going through the bot. It's how you find out which messages the game uses for something, and what they contain. It has three tabs: Tab What it's for Traffic The live list of messages, oldest first. Click a message to see its fields. Send a game message Sends one message by hand, from a form built from the message's fields, the same way send() sends it from a script. Settings Chooses which messages Traffic shows. Nothing is shown until you select some and click Apply. What you select in Settings only changes what Asteroboard shows. A script receives every message, whatever is selected. Network traffic, Send messages by hand and Finding messages go further. Game data and SQL Messages are full of ids: items, monsters, maps. To find out what an id stands for, open the game version's page from Game Manager and go to its Game data tab. Search finds records by name, Tables lets you browse them, and SQL runs read-only queries, the same kind a script runs with query() from asterobot:gamedata. Try a query there before you put it in a script. See Game data, SQL and, for scripts, Game data overview. The Dofus protocol reference The Dofus protocol reference on asterobot.net describes the game's messages and their fields. Keep it open while you write. Inline scripts For a quick test that doesn't deserve a package, a bot can run code you paste: On the bot's page, open the menu next to Play. Choose Load a new package. Select Inline script and paste your code. Click Load a new package at the bottom of the dialog, then click Play. Load a package and play it, in the same menu, opens the same dialog and starts the script as soon as it's loaded. An inline script is a single file that isn't saved anywhere. It can import the asterobot: modules but no other file, it can't be opened in the editor, and its settings don't appear on the bot's Settings tab. Loading one stops whatever script the bot was running. Run a package covers loading in detail. Ready to write something? Start with Create a package.
-
How bots talk to Dofus
Dofus and the game servers talk by exchanging messages, and a bot talks to them the same way. A script is the part that decides what to send and what to do with what arrives. The words introduced here come back throughout the developer docs. Messages, names and fields A message is one piece of data sent between Dofus and a game server: a line of chat, a character moving, the contents of an inventory. Every message has a name and fields. When someone speaks in chat, a script receives something like this: { type: "ChatChannelMessageEvent", direction: "inbound", kind: "event", payload: { channel: "GLOBAL", senderName: "Airelle", senderCharacterId: 123456789012n, content: "Anyone up for a dungeon?", // ...and the other fields of the message }, // ...and a few more properties } type is the message's name and payload holds its fields. The other properties say which way the message travelled and what kind of message it is. The game's definitions write field names with underscores, like sender_name. Scripts read them in camelCase, like senderName, and can use either spelling when they send a message. The Dofus protocol reference lists every message, its fields and what they mean. Requests, events and responses Most names follow Ankama's own convention: what the Dofus client sends ends in Request, and what the server sends ends in Event. The kind of a message tells you the same thing more precisely: kind Sent by What it is request The client Something the client asks for or does event The server Something the server tells the client, on its own or in answer to a request response The server The answer to one of the rare requests that expect one, matched to it by a number called uid unknown Either side A message whose kind Asterobot couldn't read The detail that matters most: the game answers most requests with an event, not a response. When your character says something, the answer is the same ChatChannelMessageEvent that everyone on the channel receives, your own line included. So a script that sends a request usually waits for an event, and starts waiting before it sends. Send messages shows how. Directions A message is inbound when it travels from the game server towards the client, and outbound when it travels from the client towards the server. Handlers registered with on() only receive inbound messages. Handlers registered with onTraffic() receive both. Where your script sits Full socket mode The bot is the Dofus client. Asterobot signs in, chooses the game server and opens the game connection. From there it's up to the script, starting with identifying the bot. Your script ↔ Asterobot Asterobot ↔ Game server (game connection) MITM mode MITM stands for man-in-the-middle. You play Dofus as usual, and the bot relays your game session between your Dofus client and the game server. Your script sits in the middle with it: Your Dofus client ↔ Asterobot and your script Asterobot and your script ↔ Game server A script there sees what your client sends and what the server answers. It can send messages to the server as if your client had sent them, send messages to your client as if the server had, and change or drop messages on their way through. Two things are different for a script on a MITM bot. The session is already identified when the script starts, because your client did it. And you're playing the same character: nothing stops you and the script from acting at the same time, so a script that moves your character competes with you. session.shared is true on such a session, so a script can check. Full socket mode and MITM mode describe both modes from the player's side, and Sessions describes them from the script's side. Readable names On the wire, Dofus 3 doesn't send names like ChatChannelMessageEvent. Its messages carry short scrambled names, and those change between game versions. Asterobot translates them, so scripts work with readable names. In a traffic object, type holds the readable name and wireType the scrambled one. Not every message has a readable name yet. When Asterobot can't name a message, its type is empty. The bot's Network tool marks such a message Schema when its fields can still be read, and Raw when only its bytes can. A script can only send messages that have a readable name. Every property of a traffic object is described in Traffic, and After a game update explains what changes for scripts when Ankama patches the game. Next, see Your toolbox.
-
The JavaScript you need
Scripts are plain JavaScript. These docs don't teach the language, but four ideas come up on almost every page, so each one gets a short explanation here and a link to a proper tutorial. Why JavaScript There's nothing to install and nothing to build. You write a package's code in Asteroboard's editor, which completes Asterobot's functions and the names of game messages as you type, and Asterobot runs the files as they are. Files must end in .js or .mjs, so TypeScript isn't an option. If JavaScript is new to you, javascript.info and the MDN JavaScript Guide are both good places to learn it. Modules Every file of a package is a module. A module brings in what it needs with import and makes things available with export. Asterobot starts a script by calling the function that index.js exports as its default export: import { botInfo } from "asterobot:bot"; export default async function behavior() { botInfo("The script started"); } Imports have to be import statements. Calling import() as a function is refused when the script runs, and require() doesn't exist. MDN explains JavaScript modules in detail. Promises, async and await Anything that involves the game takes time, so most of Asterobot's functions return a promise: sending a message, waiting for one, sleeping, most game data lookups. Inside an async function, await pauses your function until the promise settles. The rest of the bot doesn't pause with it: message handlers keep running while you wait. Code that runs without an await does hold everything up, and Asterobot ends a script whose code runs for more than 250 ms in one go. A promise that rejects without a catch ends the script too, so wrap the awaits that can fail in try/catch. Async and timing has the details. The default export has to be an async function, or a function that returns a promise. MDN has good pages on using promises and async functions. BigInt Some message fields hold 64-bit integers, such as account ids, character ids or kamas. A regular JavaScript number can't store all of those exactly, so scripts receive them as BigInt values, written with an n at the end: const id = traffic.payload.senderCharacterId; // for example 123456789012n if (id === 123456789012n) { // A BigInt compares with another BigInt, not with a number. } You can't mix a BigInt and a number in one calculation: 1n + 1 throws a TypeError. Convert with Number(value) when you know the value is small enough, or keep working in BigInt. When you send a message, a 64-bit field accepts a BigInt, a string of digits, or a whole number no bigger than Number.MAX_SAFE_INTEGER. Settings are the exception: a setting declared as int is a regular number. MDN's page on BigInt covers the rest. Uint8Array Raw bytes come as Uint8Array values: message fields that hold bytes, and traffic.rawAny, the undecoded bytes of any message. A first script rarely needs them. What's different from a browser or Node.js Scripts run inside Asterobot's JavaScript engine. The syntax is modern: classes with private fields, optional chaining (?.), ??=, spread, generators, top-level await and BigInt all work. What surrounds the language is much smaller than in a browser or in Node.js: Elsewhere In a script console.log() botInfo() from asterobot:bot, or log() from asterobot:console setTimeout(), setInterval() await sleep(milliseconds) from asterobot:timers fetch(), sockets Not available window, document Not available require(), process, npm packages Not available import() called as a function Refused when the script runs async function*, for await (... of ...) Not supported. The editor puts a warning on them. JavaScript support has the complete list.
-
What scripts can do
A script is the JavaScript code inside a package. When a bot plays a package, Asterobot runs that code for the bot, right next to the bot's connection to the game. Read this before your first script: it saves you from looking for things that don't exist. One copy per bot Every bot that plays a package runs its own copy of the script. Two bots playing the same package share no variables, a script can't see or control another bot, and stopping one bot's script leaves the others running. The code runs inside Asterobot, on the computer where Asterobot runs. Asteroboard only shows you what happens, so closing it doesn't stop a script. What a script can do Everything a script can do comes from the built-in modules it imports: To Use From React to messages the game server sends on(), wait() asterobot:protocol See every message, in both directions onTraffic() asterobot:protocol Send messages send(), request() asterobot:protocol Change or block messages on their way through intercept() asterobot:protocol Read game data: items, monsters, maps, game texts text(), record(), table(), find(), search(), query() asterobot:gamedata Show settings on the bot's page and read them export const parameters, values, onChange() Your index.js, and asterobot:parameters Show buttons on the bot's page export const actions Your index.js Write to the bot's console botDebug(), botInfo(), botWarn(), botError() asterobot:bot Write to Asterobot's own log debug(), log(), info(), warn(), error() asterobot:console Read the session: game ticket, server, language, why the script started session asterobot:bot Know where the character stands: its map, its cell and the actors around it currentMap() asterobot:bot Find the route the Dofus client would walk to a cell of a map, and how long walking it takes findPath() asterobot:pathfinding Work out a cell's grid position, or the distance and the direction between two cells cellToPoint(), pointToCell(), distance(), direction() asterobot:pathfinding Walk the character to a cell of its map, and wait for the end of the walk move() asterobot:movement Pause for a while sleep() asterobot:timers Close the bot's game connection disconnect() asterobot:bot Read the name, version and permissions of your package or of one of its dependencies packages.info() asterobot:runtime In MITM mode (man-in-the-middle: the bot relays the game session of a Dofus client that someone plays), the same functions work on that session. A script sees what the Dofus client sends and what the server answers. It can send messages to the server as if the client had sent them, or to the client as if the server had, and it can change or drop messages before they reach the other side. The reference describes every function, one page per module. What a script can't do Some things you'd expect from JavaScript elsewhere aren't there, and a package can't add them. Not available Use instead Reading or writing files Nothing. A script only has the modules of its own package and of the packages it depends on. The internet: fetch(), sockets, HTTP requests Nothing. The bot's game connection is the only connection a script talks through. npm packages and require() import from the asterobot: modules, from your package's own files, or from library packages your package declares as dependencies. setTimeout() and setInterval() await sleep(milliseconds) from asterobot:timers. The global console The console functions of asterobot:bot or asterobot:console, imported like anything else. window, document, process and the other browser or Node.js globals Nothing. Scripts also run within limits. For example, code that runs for more than 250 ms without awaiting anything ends the script. Limits lists them all. No built-in moves or fights There's no built-in function that walks to another map, harvests a resource or plays a fight. A script plays Dofus the way the Dofus client does: it sends the messages the client would send and reacts to what the server sends back. The Dofus protocol reference describes those messages, and How bots talk to Dofus explains how they work. Walking inside a map is built in. move() walks the character to a cell of its map and waits for the end of the walk, on both kinds of bot. currentMap() says where the character and the other actors stand, and findPath() gives the route the Dofus client would take and how long the walk lasts. Full socket scripts identify the bot In Full socket mode, Asterobot signs in with the Ankama account, picks the game server and opens the game connection. Then it stops. It doesn't identify the bot on the game server and doesn't choose a character: that's the script's job. Its first message on a new connection must be IdentificationRequest, and Identify and run shows the few lines that send it. Every sample in these docs includes them, so each one works in both modes. A MITM bot doesn't need them. The Dofus client has already identified the session when the script starts, and the same lines skip the identification there. Note Coming soon. Ready-made basic and full connection scripts will take a Full socket bot into the game for you. Until they're available, a Full socket bot goes only as far as your own script takes it. Next, read The JavaScript you need, or go straight to Create a package if you'd rather start typing.
-
asterobot.net
Asterobot se connecte avec votre compte asterobot.net, et c'est aussi sur le site que vous demandez de l'aide. Pourquoi ai-je besoin d'un compte asterobot.net ? Parce qu'Asterobot se connecte avec, et vous ne pouvez pas ajouter de bot tant qu'il n'est pas connecté. Asterobot télécharge aussi les paquets du marché avec ce compte, et il vous en faut un pour écrire sur le forum. Créez-le sur https://asterobot.net. Consultez Créer un compte asterobot.net. Asterobot me demande-t-il mon mot de passe asterobot.net ? Non. Vous ne le saisissez jamais ailleurs que sur asterobot.net. Asterobot obtient un code de connexion, vous confirmez ce code sur le site, et Asterobot garde ensuite sa propre connexion. Consultez Se connecter avec asterobot.net. Où trouver le lien de connexion ? À trois endroits : dans le terminal, sur la ligne qui suit Website sign-in required. Please visit this link to authorize access to your account; the app will continue automatically once authorized. ; dans l'onglet de navigateur qu'Asterobot ouvre tout seul, pour le premier code uniquement ; derrière le bouton de compte en bas de la barre latérale d'Asteroboard, qui affiche alors Connexion en attente. Consultez Se connecter avec asterobot.net. Mon code de connexion a expiré. Que faire ? Attendez quelques minutes : Asterobot demande un nouveau code tout seul. Un code est valable 15 minutes, et une fois qu'il a expiré, le terminal affiche Sign-in was not completed in time; it will be offered again. Le bouton de compte ouvre alors le nouveau lien. Pour obtenir un nouveau code tout de suite, rechargez Asteroboard, et cliquez sur Se connecter si le bouton de compte l'affiche. Consultez Se connecter avec asterobot.net. Où est le code que demande la page Connect a device ? Dans le lien de connexion, après code= : huit caractères, des chiffres et des lettres de A à F. Ouvrir le lien complet le remplit pour vous. La page Connect a device apparaît quand l'adresse a été ouverte sans lui, et sur cette page, les espaces, les tirets et les minuscules n'ont pas d'importance. Consultez Se connecter avec asterobot.net. Que signifie « Too many incorrect codes have been entered » ? Que 20 codes erronés ont été saisis depuis votre connexion en l'espace de 15 minutes. Patientez : vous pourrez de nouveau saisir des codes au plus tard 15 minutes après le dernier code erroné. La prochaine fois, ouvrez le lien depuis le bouton de compte plutôt que de saisir le code, car le lien le contient. Consultez Problèmes de connexion aux comptes. Puis-je me connecter depuis mon téléphone ? Oui. Activez website.showQRCode dans Serveur > Config, attendez le code suivant et scannez le QR code qu'affiche le terminal. C'est pratique quand Asterobot tourne sur une machine sans navigateur. Consultez Se connecter avec asterobot.net. Pourquoi Asterobot me demande-t-il de me reconnecter ? Parce qu'asterobot.net n'accepte plus la connexion d'Asterobot, par exemple parce qu'elle a expiré ou a été révoquée. Asterobot l'oublie alors et lance aussitôt une nouvelle connexion : le terminal affiche un avertissement comme Website rejected the token, et le bouton de compte passe sur Connexion en attente. Confirmez le nouveau code. Consultez Se connecter avec asterobot.net. La connexion est-elle partagée entre mes appareils ? Oui, car elle appartient à Asterobot, pas à votre navigateur. Tous les Asteroboard connectés au même Asterobot affichent le même compte, et se déconnecter depuis l'un d'eux déconnecte Asterobot pour tous. Être connecté à asterobot.net dans votre navigateur ne connecte pas Asterobot. Consultez Votre compte. Comment me déconnecter, ou changer de compte ? Cliquez sur le bouton de compte, puis sur Se déconnecter, et confirmez. Asterobot ne se reconnecte pas tout seul ensuite, pas même quand il redémarre, et s'il démarre alors qu'il est déconnecté, il ignore tous les bots enregistrés. Pour changer de compte, déconnectez Asterobot, vérifiez que votre navigateur est connecté à asterobot.net avec l'autre compte, puis cliquez sur Se connecter sur le bouton de compte et confirmez le nouveau code. Consultez Votre compte. Pourquoi la page Compte affiche-t-elle Non connecté ? Soit Asterobot n'est vraiment pas connecté, et le bouton de compte affiche Se connecter, soit Asteroboard n'a pas pu charger vos informations depuis asterobot.net, et le bouton affiche Connecté sans votre nom. Dans le second cas, l'appareil sur lequel vous utilisez Asteroboard doit pouvoir joindre asterobot.net : vérifiez son accès à internet et la page d'état. Consultez Votre compte. Comment savoir si asterobot.net est en panne ? Regardez la page d'état, https://status.asterobot.net, également accessible depuis la page À propos d'Asteroboard. Vérifiez-la en premier quand les codes de connexion ne passent pas ou que les aperçus du marché échouent. Consultez Messages et mises à jour. Où obtenir de l'aide ? Sur le forum et sur Discord, et des guides sont disponibles sur https://asterobot.net/help. Indiquez vos versions d'Asterobot et d'Asteroboard, la façon dont votre bot se connecte, ce que vous avez fait et le texte exact de l'erreur. Consultez Obtenir de l'aide. Que ne dois-je jamais partager quand je demande de l'aide ? Vos mots de passe, config.toml et le website.token qu'il contient, accounts.toml, les profils de navigateur de connexion, le dossier de données d'Asterobot, le lien que vous copiez pendant une connexion Ankama manuelle et le ticket de jeu d'une session. Quiconque obtient l'un d'eux peut utiliser vos comptes. Consultez Obtenir de l'aide. Où trouver les notes de version d'Asteroboard ? Sur https://asterobot.net/release-note-asteroboard. Le numéro de version en haut de la barre latérale d'Asteroboard y renvoie. Consultez Messages et mises à jour.
-
Asteroboard et réseau
Asteroboard communique avec Asterobot par le réseau, même quand les deux sont sur le même ordinateur. Asteroboard affiche Serveur déconnecté. Que dois-je vérifier ? D'abord, qu'Asterobot est bien lancé : sa fenêtre de terminal doit être ouverte. Ensuite, qu'Asteroboard utilise la bonne adresse. Ouvrez Préférences, regardez URL du serveur, qui vaut http://127.0.0.1:8080 par défaut, et cliquez sur Tester la connexion. Ouvrir l'adresse d'Asterobot lui-même dans le navigateur règle aussi URL du serveur pour vous. En attendant, Asteroboard continue d'essayer de se reconnecter tout seul. Consultez Asteroboard ne se connecte pas. Comment Asteroboard sait-il où se trouve mon Asterobot ? Il garde l'adresse comme URL du serveur, dans votre navigateur. Quand vous ouvrez l'adresse d'Asterobot, comme http://127.0.0.1:8080, Asterobot redirige le navigateur vers https://asteroboard.asterobot.net avec cette adresse jointe, et Asteroboard l'enregistre. Chaque navigateur garde la sienne. Consultez Comment les parties communiquent. Asteroboard a-t-il besoin d'une connexion internet ? Seulement pour se charger la première fois. Ensuite, il s'ouvre sans connexion internet, tant qu'il peut joindre votre Asterobot. Quelques éléments viennent quand même d'internet, comme votre nom et votre avatar asterobot.net sur la page Compte. Consultez Les trois parties. Asterobot a-t-il besoin d'une connexion internet ? Oui, pour tout ce qui implique Ankama ou asterobot.net. Asterobot contacte les serveurs d'Ankama pour télécharger les versions de jeu, connecter les comptes et jouer, et asterobot.net pour se connecter, installer des paquets et confirmer votre compte. Quand il n'a pas pu joindre asterobot.net depuis plus d'une heure, il refuse d'ajouter un bot ou d'en connecter un en mode Full socket, et Connecter affiche this installation is not entitled to start bots. Consultez Comment les parties communiquent et Plusieurs bots. Puis-je utiliser Asteroboard sur mon téléphone ? Oui, sur votre réseau domestique, une fois qu'Asterobot sert du HTTPS derrière un mot de passe. Dans Serveur > Config, renseignez server.basicAuth, activez server.tls et réglez server.listenAddress sur 0.0.0.0:8080, puis redémarrez Asterobot et autorisez le port 8080 dans le pare-feu. Sur le téléphone, ouvrez https:// suivi de l'adresse de l'ordinateur et de :8080, acceptez l'avertissement de certificat et saisissez le mot de passe. Le HTTPS et le mot de passe empêchent le mode MITM (de l'anglais man-in-the-middle, « homme du milieu ») de fonctionner. Consultez Asteroboard sur un autre appareil. Pourquoi mon téléphone n'arrive-t-il pas à joindre http://192.168.1.20:8080 ? Parce que les navigateurs n'autorisent pas la page d'Asteroboard, qui arrive en HTTPS, à envoyer de simples requêtes http://, sauf vers l'appareil sur lequel tourne le navigateur. C'est pour cela que http://127.0.0.1:8080 fonctionne sur l'ordinateur d'Asterobot alors qu'une adresse réseau ne fonctionne pas. Utilisez le HTTPS sur Asterobot, ou un tunnel SSH. Consultez Asteroboard sur un autre appareil. Pourquoi mon navigateur affiche-t-il un avertissement sur le certificat d'Asterobot ? Parce qu'Asterobot génère son propre certificat quand vous activez server.tls. Aucune autorité reconnue par votre navigateur ne l'a signé, et il ne couvre que localhost, 127.0.0.1 et ::1, donc les navigateurs affichent un avertissement la première fois et signalent qu'il ne correspond pas à une adresse comme 192.168.1.20. Vérifiez que l'adresse est bien celle de votre Asterobot, puis continuez vers le site. Le certificat est valable 3 ans et Asterobot ne le renouvelle pas. Consultez Asteroboard sur un autre appareil. Pourquoi Asteroboard reste-t-il déconnecté après que j'ai saisi une adresse https dans Préférences ? Parce que l'avertissement de certificat et la demande de mot de passe n'apparaissent que sur une page que vous ouvrez vous-même, jamais pour les requêtes d'Asteroboard. Ouvrez d'abord l'adresse dans le navigateur, acceptez le certificat et saisissez le mot de passe : Asteroboard se connecte alors. Consultez Asteroboard sur un autre appareil. Pourquoi le mode MITM ne fonctionne-t-il plus depuis que j'ai activé le HTTPS ou un mot de passe ? Parce que le mode MITM ne fonctionne pas tant que server.tls est activé ou que server.basicAuth est renseigné : Dofus ne peut alors plus récupérer ses paramètres de connexion auprès d'Asterobot. Remettez ces deux réglages à leurs valeurs par défaut, redémarrez Asterobot, et accédez-y plutôt depuis les autres appareils par un tunnel SSH. Consultez Mode MITM. Puis-je accéder à mon Asterobot depuis l'extérieur de chez moi ? Oui. Préférez un tunnel SSH : Asterobot continue d'écouter uniquement sur son propre ordinateur, rien de nouveau n'est ouvert sur internet, et le mode MITM continue de fonctionner. Vous pouvez aussi ouvrir le port, avec server.basicAuth et server.tls, mais jamais sans les deux. Consultez Asterobot sur une machine distante. Puis-je faire tourner Asterobot sur un serveur ou un Raspberry Pi ? Oui. Asterobot n'a pas besoin d'écran, et il existe des versions Linux pour les processeurs x86-64 et ARM64. Vous le connectez à asterobot.net avec le lien qu'il affiche ou avec un QR code, vous accédez à Asteroboard par un tunnel SSH, et vous le gardez lancé avec tmux, screen ou un service système. Consultez Asterobot sur une machine distante. Puis-je jouer à Dofus sur un ordinateur et faire tourner Asterobot sur un autre ? Oui, en mode MITM. Sur l'ordinateur qui fait tourner Asterobot, ouvrez ses ports à l'ordinateur de Dofus. Sur l'ordinateur de Dofus, modifiez vous-même la ligne ConfigUrl du fichier version, puisqu'Asterobot ne peut modifier que les fichiers de son propre ordinateur, et remettez-la vous-même en place quand vous avez terminé. Consultez MITM sur plusieurs machines. Quels ports Asterobot utilise-t-il ? Port À quoi il sert 8080 Asteroboard, et en mode MITM, les paramètres de connexion que récupère Dofus 5555 Mode MITM : la connexion de votre jeu. Ouvert seulement pendant qu'un bot attend. 5556 Mode MITM : votre session de jeu. Ouvert seulement pendant qu'un bot attend. Par défaut, tous les trois n'acceptent que les connexions venant de l'ordinateur d'Asterobot lui-même. Consultez Comment les parties communiquent. Et si le port 8080 est déjà utilisé ? Asterobot s'arrête juste après son démarrage, avec An error occurred during the server's initialization process, par exemple parce qu'une autre copie d'Asterobot tourne déjà. Asteroboard ne peut pas changer le port tant qu'Asterobot n'est pas lancé, donc modifiez config.toml : sous [server], réglez listenAddress sur un autre port, comme 127.0.0.1:8081, puis lancez Asterobot et ouvrez cette adresse. Consultez Comment les parties communiquent. Plusieurs appareils peuvent-ils utiliser le même Asterobot ? Oui. Tous les Asteroboard connectés au même Asterobot affichent les mêmes bots, la même bibliothèque et le même compte asterobot.net, puisque tout cela se trouve dans Asterobot. Chaque navigateur garde ses propres préférences et sa propre URL du serveur. Consultez Comment les parties communiquent. Un seul Asteroboard peut-il contrôler plusieurs Asterobot ? Un à la fois. Un navigateur ne garde qu'une seule URL du serveur, donc pour changer, ouvrez l'adresse de l'Asterobot voulu, ou saisissez-la dans Préférences. Consultez Préférences. Qui peut contrôler mon Asterobot ? Toute personne qui atteint son port. Asterobot n'a pas de comptes utilisateur à lui, donc quiconque y accède peut utiliser vos bots et vos comptes Ankama, lire tous les réglages et l'éteindre. Par défaut, seul l'ordinateur d'Asterobot lui-même peut l'atteindre. Lisez Sécurité avant de l'ouvrir à quoi que ce soit d'autre. Asteroboard affiche une ancienne version ou se comporte bizarrement après une mise à jour. Que faire ? Utilisez Réinitialiser les données hors ligne, dans la section Zone dangereuse de Préférences. Cela supprime la copie d'Asteroboard que garde votre navigateur et la télécharge à nouveau, sans toucher à Asterobot. Consultez Préférences.
-
Scripts
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 ? Non. Un script joue comme le client Dofus : il envoie les messages du jeu et réagit à ce que le serveur répond. Les données de jeu aident pour le reste, par exemple pour trouver quelles cartes contiennent une ressource donnée. Consultez Ce que peuvent faire les scripts. 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 Bientôt disponible. Des scripts de connexion prêts à l'emploi seront disponibles pour que vous les lanciez et les réutilisiez, afin qu'un paquet puisse dépendre de l'un d'eux au lieu de faire l'identification lui-même. En attendant, gardez l'identification dans votre propre code, avec 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 : Vérifiez le badge d'erreur de l'éditeur avant de lancer le script. Écrivez dans la Console du bot avec botInfo() et les autres fonctions de asterobot:bot, et ne gardez que Script dans Sources. 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. 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 250 ms sans rien attendre. 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.
-
Paquets et marché
Les paquets sont ce que font tourner les bots. Vous les trouvez sur le marché ou vous les écrivez vous-même. Qu'est-ce qu'un paquet ? Le code qui dit à un bot quoi faire. Un paquet est un petit ensemble de fichiers JavaScript, souvent accompagné de réglages et de boutons qui apparaissent sur la page du bot. Vous installez les paquets dans votre bibliothèque, puis vous en donnez un à chaque bot. Consultez Qu'est-ce qu'un paquet. Un bot a-t-il besoin d'un paquet ? Pour faire quoi que ce soit en jeu, oui. Un bot MITM (de l'anglais man-in-the-middle, « homme du milieu ») se connecte sans paquet, et vous pouvez déjà lire son chat, son inventaire et ses messages dans Asteroboard. Un bot Full socket a besoin d'un script de connexion rien que pour entrer en jeu. Consultez Qu'est-ce qu'un paquet. Où trouver des paquets ? Sur le marché, la catégorie Library d'asterobot.net : https://asterobot.net/files/category/10-library/. Copiez l'adresse de la page d'un fichier, puis dans Gestionnaire de bibliothèque, cliquez sur Télécharger un paquet, collez-la dans ID ou URL du fichier, cliquez sur Prévisualiser, puis sur Installer. Asterobot doit être connecté à asterobot.net. Consultez Installer depuis le marché. Un paquet du marché est-il sûr ? Asterobot ne peut pas vous le dire. Un paquet tourne avec la session de jeu de votre bot et peut faire tout ce que votre personnage peut faire. La vérification d'Asterobot prouve seulement que les fichiers d'un paquet du marché n'ont pas changé depuis que vous les avez téléchargés, pas que son code est sûr. Avant d'en lancer un, lisez sa page de fichier sur asterobot.net, regardez ses dépendances, lisez le code si vous le pouvez, et gardez la console du bot ouverte la première fois. Consultez Faire confiance à un paquet. Que veulent dire Local, Communautaire et Officiel ? Ils indiquent d'où vient le nom d'un paquet : Badge Nom D'où vient le paquet Local Un nom simple, comme my-harvester Vous l'avez créé, copié ou importé. Seuls les paquets locaux peuvent être modifiés. Communautaire @ suivi de l'auteur, : suivi du titre, comme @some-author:auto-harvest Un fichier du marché publié par un membre d'asterobot.net Officiel @asterobot: suivi du titre Un fichier du marché qu'asterobot.net marque comme officiel Le badge dépend uniquement du nom, donc un paquet importé depuis un fichier .zip peut lui aussi afficher Communautaire ou Officiel. Seul un paquet installé depuis le marché a une ligne Source sur sa page. Consultez Qu'est-ce qu'un paquet. Le badge Officiel garantit-il que le code est sûr ? Non. Il vous indique qui a publié le paquet, pas ce que fait son code, et il ne remplace pas la lecture de la page du fichier. Consultez Le marché. Pourquoi ne puis-je pas télécharger un paquet ? Les deux messages que vous pouvez obtenir ne veulent pas dire la même chose : Vous n'avez pas la permission de télécharger ce fichier. sous la carte d'aperçu : les règles du fichier sur asterobot.net ne permettent pas à votre compte de le télécharger. Il n'y a rien à corriger dans Asterobot. Fichier introuvable, ou vous n'avez pas la permission de le voir. après Prévisualiser : le fichier n'existe pas, le compte ne peut pas le voir, ou Asterobot n'a pas pu interroger asterobot.net, par exemple parce qu'il n'est pas connecté. Vérifiez l'adresse, puis le bouton de compte en bas de la barre latérale. Consultez Le marché. Comment mettre à jour un paquet ? Dans Gestionnaire de bibliothèque, cliquez sur Vérifier les mises à jour, puis sur Mettre à jour vers suivi de la version. La nouvelle version s'installe à côté de l'ancienne, et vos bots continuent de lancer l'ancienne jusqu'à ce que vous les passiez sur la nouvelle. Rien n'est vérifié automatiquement, et seuls les paquets installés depuis le marché peuvent être mis à jour de cette façon. Consultez Mettre à jour les paquets. Est-ce que je perds les réglages du paquet en le mettant à jour ? Non. Les réglages du paquet sont enregistrés pour chaque bot sous le nom du paquet, pas sous sa version, donc un bot passé sur la nouvelle version les conserve. Seul un réglage que la nouvelle version a supprimé, renommé ou changé de type repart de sa valeur par défaut. Consultez Mettre à jour les paquets. Pourquoi un paquet est-il marqué Incompatible ? Le paquet indique avec quelles versions d'Asterobot il fonctionne, et la vôtre n'en fait pas partie. Il reste dans votre bibliothèque mais ne démarre pas. Mettez à jour le paquet, ou Asterobot, jusqu'à ce que les deux correspondent. Consultez Qu'est-ce qu'un paquet. Le bouton Lancer affiche seulement Impossible de démarrer le comportement. Où trouver la raison ? Dans l'onglet Réglages du bot, sous Réglages du paquet. Quand le paquet ne peut pas être chargé, par exemple parce qu'il est incompatible ou que ses fichiers échouent au contrôle d'intégrité avec package source integrity mismatch, Impossible de lire les réglages de ce paquet y apparaît avec la raison. Vérifiez d'abord que le bot est Connecté au serveur de jeu : un paquet ne peut pas démarrer sur un bot qui ne l'est pas. Consultez Erreurs de paquet. Puis-je modifier un paquet téléchargé depuis le marché ? Non. Les paquets du marché sont en lecture seule : Modifier le code n'est pas proposé pour eux, et un paquet dont les fichiers ont été modifiés à la main est refusé. Pour en modifier un, exportez-le avec Exporter et réimportez-le avec Importer un .zip sous un nom local. Cette copie est à vous et vous pouvez la modifier, mais elle ne reçoit plus de mises à jour. Consultez L'éditeur. Plusieurs bots peuvent-ils lancer le même paquet ? Oui. Chaque bot fait tourner sa propre copie du script, avec ses propres réglages du paquet. Consultez Ce que peuvent faire les scripts. Comment donner un paquet à un ami ? Exportez-le en .zip depuis son menu dans Gestionnaire de bibliothèque, et demandez à votre ami de l'ajouter avec Importer un .zip. Un paquet partagé de cette façon n'a aucun lien avec le marché, donc il ne reçoit aucune mise à jour. Pour le partager avec tout le monde, publiez-le. Consultez Partager votre paquet. Comment publier un paquet ? Tout membre d'asterobot.net peut le faire. Exportez votre paquet en .zip, puis soumettez un fichier dans la catégorie Library d'asterobot.net, avec ce .zip comme seule pièce jointe, un titre, qui devient une partie du nom du paquet, et la version de votre paquet. Consultez Avant de publier et Publier sur asterobot.net. Où les paquets sont-ils stockés ? Dans le dossier library/packages/ du dossier de données d'Asterobot, avec un dossier par version. Consultez Fichiers et dossiers.
-
Jeu et mises à jour
Asterobot garde sa propre copie de Dofus, distincte de celle à laquelle vous jouez, et ni cette copie ni Asterobot ne se mettent à jour tout seuls. Pourquoi Asterobot télécharge-t-il Dofus alors que je l'ai déjà ? Parce qu'Asterobot travaille à partir de sa propre copie des fichiers du jeu. Les bots, les scripts et la page du jeu lisent tous les données de jeu, les cartes et les textes depuis cette copie, jamais depuis le Dofus auquel vous jouez. Par défaut, il ne télécharge que les fichiers dont un bot a besoin, pas le jeu entier, et toujours la version Windows. Consultez Pourquoi Asterobot télécharge Dofus. De combien d'espace disque a-t-il besoin ? Cela dépend de la version de Dofus, et Asterobot n'indique pas de total. Quelques tailles, toutes approximatives : 545 Mo pour les illustrations de la carte du monde et 450 Mo pour les données des cartes (mesurées sur Dofus 3.6.10.10), toutes deux incluses dans chaque version de jeu que vous téléchargez, et 900 Mo pour la musique du jeu, seulement si vous la téléchargez depuis l'onglet Musique de la page du jeu. Extraire les données de jeu prend de la place en plus des fichiers. Asterobot ne vérifie pas l'espace libre avant un téléchargement. Quand le disque est plein, le téléchargement s'arrête et son statut passe à Échec. Consultez Pourquoi Asterobot télécharge Dofus. Comment libérer de l'espace disque ? Depuis Gestionnaire de jeux. Supprimer tous les chunks supprime les morceaux stockés à partir desquels les versions de jeu sont reconstruites, au prix d'un prochain téléchargement plus lent. Désinstaller supprime les fichiers d'une version et conserve ses données de jeu extraites, et Supprimer retire complètement la version. Ni Désinstaller ni Supprimer ne vérifient si un bot utilise encore la version. Consultez Gérer les versions de jeu. Dofus vient de recevoir un patch. Que faire ? Téléchargez la nouvelle version de jeu, passez vos bots dessus, puis supprimez l'ancienne : Dans Gestionnaire de jeux, cliquez sur Télécharger un jeu, laissez latest dans Version et la case Extraire les données après le téléchargement cochée, puis cliquez sur Télécharger. Gardez Asteroboard ouvert jusqu'à ce que la nouvelle ligne affiche Prêt pour un bot. Sur chaque bot, cliquez sur Déconnecter, choisissez la nouvelle version dans son onglet Réglages, puis cliquez sur Enregistrer. Une fois que plus aucun bot n'utilise l'ancienne version, supprimez-la ou désinstallez-la. C'est surtout important en mode MITM (de l'anglais man-in-the-middle, « homme du milieu »), où la version de jeu de votre bot doit être la version de Dofus à laquelle vous jouez. Consultez Quand Dofus se met à jour. Pourquoi mon bot MITM refuse-t-il de se mettre en attente après un patch ? Parce que le Dofus auquel vous jouez et la version de jeu de votre bot ne sont plus la même version. Asteroboard affiche Impossible de mettre le bot en attente, sans dire pourquoi. Téléchargez la nouvelle version, passez le bot dessus et cliquez à nouveau sur Commencer l'attente. Quand vos bots utilisent des versions de jeu différentes, gardez-les tous sur la version à laquelle vous jouez. Consultez Mode MITM. Que veulent dire Compatible et Version différente ? Compatible signifie que votre version d'Asterobot a été testée avec cette version de Dofus, et Version différente qu'elle ne l'a pas été. Une version différente n'est pas bloquée, mais les messages du jeu changent d'une version à l'autre, donc un bot sur cette version risque de ne pas se connecter, et ses données de jeu peuvent ne pas correspondre à ce que vous attendez. Consultez Pourquoi Asterobot télécharge Dofus. Que se passe-t-il quand Asterobot ne prend pas encore en charge la nouvelle version de Dofus ? Vos bots risquent de ne pas fonctionner dessus. Vous pouvez voir Version différente dans Gestionnaire de jeux, un bot Full socket qui ne se connecte pas et affiche Impossible de connecter ce bot, un jeu en mode MITM déconnecté dès qu'il atteint le bot, et des scripts qui ne démarrent pas, avec une erreur commençant par the game engine is not available:. Quand la raison vous dit de mettre à jour Asterobot, téléchargez sa nouvelle version. Consultez Quand Dofus se met à jour. Asterobot met-il à jour le Dofus auquel je joue ? Non. C'est l'Ankama Launcher qui met à jour votre Dofus. Asterobot ne suit pas non plus les patchs : chaque patch est une nouvelle version de jeu que vous téléchargez dans Gestionnaire de jeux, et les versions déjà présentes restent telles quelles. Consultez Quand Dofus se met à jour. Puis-je garder plusieurs versions de jeu ? Oui. Chaque version a sa propre ligne dans Gestionnaire de jeux, chaque bot utilise la version réglée sur lui, et les contenus que plusieurs versions ont en commun ne sont stockés qu'une fois. Consultez Gérer les versions de jeu. Comment savoir qu'une nouvelle version d'Asterobot est sortie ? Asterobot interroge asterobot.net à chaque démarrage. Quand une version plus récente est publiée, le terminal affiche An Asterobot update is available, et Asteroboard affiche Mise à jour d'Asterobot disponible avec un bouton Voir sur asterobot.net. Une version publiée pendant qu'Asterobot tourne n'est remarquée qu'à son prochain démarrage. Consultez Messages et mises à jour. Comment mettre à jour Asterobot ? Téléchargez la nouvelle archive, arrêtez Asterobot, remplacez le fichier du programme par le nouveau, puis relancez-le. Sous macOS et Linux, rendez d'abord le nouveau fichier exécutable avec chmod +x asterobot. Vos bots, comptes, paquets, versions de jeu et réglages restent en place, car ils se trouvent dans d'autres dossiers. Après la mise à jour, reconnectez vos bots et regardez la colonne Compatibilité de Gestionnaire de jeux. Consultez Mettre à jour Asterobot. Mes paquets fonctionneront-ils encore après une mise à jour ? Ils peuvent cesser de fonctionner dans deux cas. Un paquet qui indique avec quelles versions d'Asterobot il fonctionne peut passer Incompatible après la mise à jour d'Asterobot, et il ne démarre plus alors. Et un patch de Dofus peut changer les messages sur lesquels repose un script, jusqu'à ce que son auteur l'adapte. Les auteurs peuvent lire Après une mise à jour du jeu.
-
Bots
Comment les bots se connectent, combien vous pouvez en faire tourner, et ce qui leur arrive quand quelque chose s'arrête. Dois-je utiliser le mode Full socket ou le mode MITM ? Commencez par le mode MITM (de l'anglais man-in-the-middle, « homme du milieu »). Vous jouez à Dofus comme d'habitude et le bot rejoint votre session : rien à enregistrer dans Asterobot, aucun script de connexion à trouver, et il fonctionne avec les comptes protégés par Ankama Shield ou l'authentification à deux facteurs. Le mode Full socket sert aux bots qui jouent sans vous et sans fenêtre Dofus, mais chaque bot a besoin de son propre compte Ankama et d'un script de connexion pour entrer en jeu. Consultez Full socket et MITM. Pourquoi mon bot Full socket n'entre-t-il pas en jeu ? Parce que le rôle d'Asterobot s'arrête une fois la connexion au serveur de jeu ouverte. Il connecte le compte, choisit un serveur et se connecte, mais il n'identifie pas le bot auprès du serveur de jeu et ne choisit pas de personnage. C'est le travail d'un script de connexion : un paquet que vous démarrez avec Lancer. Connecté au serveur de jeu signifie seulement que la connexion est ouverte, que le bot soit entré en jeu ou non. Note Bientôt disponible. Des scripts de connexion prêts à l'emploi feront entrer un bot Full socket en jeu. En attendant, utilisez le mode MITM, ou écrivez le vôtre en suivant Identifier et lancer. Mode Full socket l'explique en détail, et Le bot ne se connecte pas couvre les erreurs. Puis-je jouer à Dofus pendant qu'un bot utilise mon compte ? En mode MITM, oui : c'est tout l'intérêt de ce mode. Vous continuez à jouer, et un paquet qui tourne sur le bot contrôle le même personnage que vous, sans rien pour vous coordonner tous les deux. En mode Full socket, non. Un compte Ankama n'a qu'une session de jeu à la fois, et un bot qui se connecte alors que le compte est déjà en jeu échoue avec identification was refused: account already connected elsewhere. Consultez Mode MITM, et pour les auteurs de scripts, Sessions. Asterobot modifie-t-il mon installation de Dofus ? Une seule ligne, et seulement en mode MITM. Asterobot modifie la ligne ConfigUrl de Dofus_Data/StreamingAssets/version, dans votre dossier Dofus, pour que votre jeu se connecte en passant par Asterobot. Il remet la ligne d'origine quand plus aucun bot n'attend et quand Asterobot s'arrête normalement, ou au démarrage suivant après un arrêt brutal, à condition que l'un de vos bots revienne à ce démarrage. Il n'installe ni ne met jamais à jour votre Dofus. Consultez Mode MITM. Dofus ne se connecte plus depuis l'arrêt d'Asterobot. Que faire ? Relancez Asterobot. Tant que cette ligne pointe vers Asterobot, Dofus ne peut pas se connecter sans lui, et Asterobot remet la ligne en place au démarrage, à condition que l'un de vos bots revienne avec lui. Si le journal n'affiche pas Restored a game install left pointing at Asterobot by a previous run, remettez la ligne en place à la main. Consultez Problèmes en mode MITM. Pourquoi mon bot MITM reste-t-il sur En attente de votre client de jeu ? Votre jeu n'atteint pas le bot. Les causes habituelles : Dofus était déjà ouvert quand le bot a commencé à attendre. Fermez-le et relancez-le. botmanager.mitmGamePath est vide ou pointe vers le mauvais dossier. Le journal d'Asterobot affiche Pointed the played game at Asterobot quand il a modifié votre dossier Dofus. Le bot est rattaché à un autre compte Ankama. Il ne prend que les sessions du compte auquel il s'est rattaché la première fois. server.tls est activé ou server.basicAuth est renseigné. Le mode MITM ne fonctionne avec aucun des deux. Consultez Mode MITM et Problèmes en mode MITM. Qu'arrive-t-il à mon jeu quand j'arrête un bot ? Cela dépend du bouton. Arrêter n'arrête que le script du bot, et votre jeu continue. Déconnecter sur un bot MITM met fin à la session qu'il relaie, donc votre Dofus est déconnecté si vous êtes en jeu. Arrêter Asterobot fait la même chose à tous les bots. Consultez Déconnecter, supprimer et redémarrer. Que se passe-t-il quand je quitte Dofus en mode MITM ? Le bot repasse sur En attente de votre client de jeu et prend votre prochaine session tout seul. Le script qu'il faisait tourner s'est arrêté, en revanche : appuyez à nouveau sur Lancer une fois votre jeu revenu. Consultez Mode MITM. Combien de bots puis-je faire tourner ? Autant que votre compte asterobot.net le permet. Chaque bot listé dans Gestionnaire de bots compte, connecté ou non, et au-delà de ce nombre, Ajouter un bot échoue avec Impossible d'ajouter le bot. En mode Full socket, chaque bot a aussi besoin de son propre compte Ankama, et en mode MITM, chaque bot relaie un client Dofus. Consultez Plusieurs bots. Deux bots peuvent-ils utiliser le même compte Ankama ? Non. Un compte Ankama ne peut appartenir qu'à un seul bot, puisque Dofus n'autorise qu'une session de jeu par compte. Ajouter un second bot avec ce compte échoue avec Impossible d'ajouter le bot, et le choisir dans l'onglet Réglages d'un bot est refusé avec this account is already associated with a bot. Enregistrez un compte pour chaque bot Full socket. Consultez Plusieurs bots. Un bot peut-il utiliser les deux modes ? Oui, mais pas en même temps. Un bot avec un compte Ankama propose à la fois Connecter et Commencer l'attente, et un bot sans compte ne peut qu'attendre votre jeu. Déconnectez le bot avant de changer de mode. Consultez Full socket et MITM. Mes bots se reconnectent-ils tout seuls ? Non. Asterobot ne connecte jamais un bot et ne lance jamais un script de lui-même. Après un redémarrage d'Asterobot, tous les bots sont à l'état Déconnecté et rien ne joue. Quand la connexion d'un bot Full socket tombe, cliquez sur Déconnecter, puis sur Connecter, puis sur Lancer. Consultez Déconnecter, supprimer et redémarrer. Mes bots sont-ils conservés quand Asterobot redémarre ? Oui. Chaque bot est enregistré dans bots.toml, avec ses réglages, son paquet, les réglages de son paquet et sa sélection de messages, et revient déconnecté au démarrage d'Asterobot. L'historique de sa console ne revient pas, pas plus qu'un script direct chargé dessus. Consultez Déconnecter, supprimer et redémarrer. Pourquoi un bot manque-t-il après le redémarrage d'Asterobot ? Asterobot l'a ignoré. Cela arrive quand le compte Ankama du bot n'est plus dans Gestionnaire de comptes, quand sa version de jeu n'est plus installée, quand Asterobot n'a pas pu préparer les connexions Ankama, ou quand il n'a pas pu confirmer votre compte asterobot.net dans ses premières secondes. Le terminal affiche un avertissement qui commence par skipping bot restore:, suivi de la raison. La configuration du bot est toujours enregistrée : corrigez la cause et redémarrez Asterobot. N'ajoutez pas de nouveau bot du même nom, qui remplacerait définitivement celui qui est enregistré. Consultez Déconnecter, supprimer et redémarrer. Je joue plusieurs comptes en mode MITM. Quel bot prend quel jeu ? Chaque jeu va au bot en attente rattaché à son compte Ankama. La première fois, un bot sans compte se rattache au premier compte dont il prend la session, dans l'ordre alphabétique des bots en attente, et garde ce rattachement pour de bon. Pour décider quel bot relaie quel compte, mettez un seul bot en attente à la fois et connectez-vous avec le compte que vous voulez lui attribuer. Consultez Plusieurs bots. Puis-je utiliser d'autres ordinateurs ? Oui. Asteroboard peut tourner sur un téléphone ou un autre ordinateur, Asterobot sur un serveur ou un ordinateur devant lequel vous n'êtes pas, et en mode MITM, Dofus peut même être sur un troisième ordinateur. Rien de tout cela ne fonctionne avec les réglages par défaut, qui n'acceptent que les connexions venant de l'ordinateur d'Asterobot lui-même. Comment les parties communiquent présente chaque installation, et Asteroboard et réseau répond aux questions fréquentes.
-
Comptes et sécurité
Lisez ces réponses avant d'utiliser Asterobot avec un compte Ankama auquel vous tenez. Mon compte Ankama peut-il être banni ? Oui. Utiliser un bot enfreint les conditions d'utilisation d'Ankama, et Ankama peut sanctionner les comptes concernés à tout moment. C'est vrai en mode Full socket comme en mode MITM (de l'anglais man-in-the-middle, « homme du milieu »), avec un paquet que vous avez écrit comme avec un paquet du marché. Personne ne peut garantir qu'un compte restera en sécurité, et cette documentation ne donne aucun conseil pour éviter la détection. N'utilisez un compte Ankama avec Asterobot que si vous acceptez ce risque. Le mode MITM est-il plus sûr pour mon compte ? Non. Un bot en mode MITM reste un bot, et il enfreint tout autant les conditions d'utilisation d'Ankama. Ce que change le mode MITM, c'est qui détient vos identifiants : vous vous connectez vous-même, dans Dofus, et vous ne donnez jamais à Asterobot votre identifiant ni votre mot de passe Ankama. Consultez Full socket et MITM. Où Asterobot garde-t-il mon mot de passe Ankama ? Dans un fichier nommé accounts.toml, dans le dossier de données d'Asterobot, en clair, et seulement si vous avez choisi d'en enregistrer un. Il n'est pas chiffré, car Asterobot doit le saisir dans la page de connexion d'Ankama. Le même fichier contient l'identifiant de chaque compte et les jetons qu'Ankama a remis à Asterobot. Sous Linux et macOS, Asterobot restreint le fichier pour que seul votre compte utilisateur puisse le lire. Sous Windows, cette restriction n'a aucun effet. Dans tous les cas, quiconque peut ouvrir des fichiers avec votre utilisateur, ou obtient une copie du fichier, peut lire le mot de passe et utiliser les jetons. Asterobot ne renvoie jamais le mot de passe à Asteroboard. Ajouter un compte donne les détails, et Fichiers et dossiers indique où se trouve le dossier de données. Suis-je obligé d'enregistrer mon mot de passe Ankama ? Non. Le mot de passe ne sert qu'à la connexion automatique. Sans lui, vous connectez vous-même le compte depuis Asteroboard chaque fois que sa connexion cesse de fonctionner, comme le montre Connexion manuelle. Le mode MITM ne demande aucun compte enregistré. Qu'est-ce qui d'autre, sur mon ordinateur, donne accès à mes comptes ? Quelques fichiers et dossiers, à protéger chacun comme un mot de passe : Quoi Où Ce à quoi cela donne accès accounts.toml Le dossier de données Vos identifiants Ankama, les mots de passe que vous avez enregistrés et les jetons d'Ankama zaapmanager/browser-profiles/ Le dossier de données Une session Ankama active pour chaque compte qui s'est connecté automatiquement website.token config.toml, dans le dossier des réglages Votre compte asterobot.net, par la connexion d'Asterobot server.basicAuth config.toml Le port d'Asterobot, avec des mots de passe écrits en clair Sous Linux et macOS, seul votre utilisateur peut les lire. Sous Windows, cette protection n'a aucun effet. Ne partagez jamais aucun d'entre eux, pas même pour obtenir de l'aide : Obtenir de l'aide liste ce qui doit rester privé. Puis-je utiliser un compte protégé par Ankama Shield ou l'authentification à deux facteurs ? Seulement en mode MITM. Le mode Full socket ne prend pas en charge ces comptes : Asteroboard n'a aucun champ pour un code de vérification, et la connexion automatique ne saisit que l'identifiant et le mot de passe. En mode MITM, vous vous connectez vous-même dans Dofus, codes compris, et le bot relaie cette session. Consultez Shield et authentification à deux facteurs. Que se passe-t-il quand Ankama affiche un captcha pendant la connexion automatique ? Asterobot abandonne, et une personne doit se connecter. Vous avez deux solutions : Connectez-vous vous-même depuis la fenêtre de connexion. Cela fonctionne toujours, où que tourne Asterobot. Quand Asterobot tourne sur un ordinateur devant lequel vous êtes, désactivez zaapmanager.browserHeadless dans Serveur > Config, relancez la connexion automatique et répondez au défi dans la fenêtre de navigateur qui s'ouvre. Réactivez ensuite le réglage. Consultez Connexion automatique. Pourquoi Asteroboard n'indique-t-il pas la raison de l'échec de la connexion automatique ? Parce que son message est le même quelle que soit l'erreur, et commence par ankama account authorization required. La vraie raison ne figure que dans le journal d'Asterobot. Dans le terminal ou dans Serveur > Console, cherchez l'avertissement Automatic Ankama sign-in failed, a person has to sign in : son erreur indique ce qui s'est passé. Quand vous avez lancé la connexion depuis le bouton de la fenêtre de connexion elle-même, cette fenêtre affiche aussi une image de la page où se trouvait le navigateur, ce qui permet souvent de distinguer un captcha d'un mauvais mot de passe. Consultez Connexion automatique. Que peut faire un paquet avec mon compte ? Tout ce que votre personnage peut faire en jeu. Le script d'un paquet peut envoyer n'importe quel message au serveur de jeu au nom de votre personnage, pour se déplacer, combattre, échanger, vendre ou supprimer des objets. Il lit tout ce que le jeu envoie, peut lire le ticket de jeu de la session et peut fermer la connexion au jeu. Sur un bot MITM, il peut aussi modifier ou bloquer ce que votre Dofus et le serveur s'envoient. Il ne peut pas lire votre identifiant ni votre mot de passe Ankama, ouvrir des fichiers sur votre ordinateur, utiliser internet ou atteindre vos autres bots. Ne lancez que des paquets d'auteurs en qui vous avez confiance. Faire confiance à un paquet liste tout. Les permissions d'un paquet limitent-elles ce qu'il peut faire ? Pas encore. Un paquet peut lister des permissions dans son manifeste, mais Asterobot ne les applique pas : un paquet qui n'en liste aucune peut quand même faire tout ce qui est décrit ci-dessus. Note Bientôt disponible. Asterobot appliquera les permissions listées par un paquet. En attendant, ne comptez pas sur elles pour limiter ce que fait un paquet. Consultez Faire confiance à un paquet. Que faire si je pense que quelqu'un a utilisé mon Asterobot ? Arrêtez Asterobot, ou remettez server.listenAddress sur 127.0.0.1:8080 et redémarrez-le. Changez ensuite les mots de passe basic auth, cliquez sur Déconnecter pour chaque compte Ankama dans Gestionnaire de comptes, changez les mots de passe Ankama que vous aviez enregistrés, et déconnectez Asterobot d'asterobot.net avant de le reconnecter. Sécurité passe en revue chaque étape, et explique qui peut atteindre Asterobot au départ.
-
Questions générales
L'essentiel : ce qu'est Asterobot, où il fonctionne et ce qui continue de tourner quand vous fermez quelque chose. Qu'est-ce qu'Asterobot ? Asterobot est un programme que vous lancez sur votre propre ordinateur pour faire tourner des bots sur Dofus 3. Un bot se connecte et joue tout seul, en mode Full socket, ou rejoint le jeu auquel vous jouez, en mode MITM (de l'anglais man-in-the-middle, « homme du milieu »). Ce que fait un bot en jeu vient d'un paquet : un petit programme JavaScript issu du marché, ou que vous écrivez vous-même. Asterobot vous permet aussi de parcourir les données de jeu, les cartes et les textes du jeu sans aucun bot. Qu'est-ce qu'Asterobot présente tout cela en détail. Quelle est la différence entre Asterobot, Asteroboard et asterobot.net ? Asterobot est le programme qui fait le travail, Asteroboard est l'interface web depuis laquelle vous le pilotez, et asterobot.net est le site web. Asteroboard s'ouvre à l'adresse https://asteroboard.asterobot.net, mais tout ce qu'il affiche vient directement de votre Asterobot. asterobot.net héberge votre compte, les téléchargements, le marché et le forum. Consultez Les trois parties. Sur quels systèmes Asterobot fonctionne-t-il ? Windows, macOS et Linux, chacun sur processeurs x86-64 (Intel ou AMD) et ARM64. Cela fait six versions du programme, dont une pour les Mac à puce Apple silicon et une pour les cartes ARM comme le Raspberry Pi 4 et 5. Les versions x86-64 demandent un processeur doté du jeu d'instructions x86-64-v2, que possèdent tous les processeurs x86-64 fabriqués depuis 2009 environ. Prérequis liste tout ce dont vous avez besoin par ailleurs. Avec quel Dofus fonctionne-t-il ? Dofus 3. Les bots ne jouent qu'à Dofus 3, et Asterobot télécharge toujours la version Windows des fichiers du jeu, même sous macOS ou Linux. Chaque version d'Asterobot est testée avec une version de Dofus, qu'Asteroboard marque comme Compatible. Pourquoi Asterobot télécharge Dofus explique ce qu'est la version testée. Faut-il avoir Dofus installé ? Seulement pour le mode MITM, où vous jouez vous-même à Dofus et où un bot rejoint votre session. Un bot Full socket n'a besoin d'aucun client Dofus. Dans les deux cas, Asterobot télécharge sa propre copie des fichiers du jeu, distincte du Dofus auquel vous jouez. Full socket et MITM compare les deux modes. Faut-il savoir coder ? Non. Faire tourner un bot en mode MITM, installer un paquet depuis le marché et modifier ses réglages, tout cela se fait dans Asteroboard. Le JavaScript vous sert à écrire vos propres paquets et, pour l'instant, à faire entrer en jeu un bot Full socket. Note Bientôt disponible. Des scripts de connexion prêts à l'emploi feront entrer un bot Full socket en jeu sans que vous ayez à écrire de code. En attendant, utilisez le mode MITM, ou écrivez le vôtre avec Identifier et lancer. Puis-je utiliser Asterobot sans faire tourner de bot ? Oui. Avec une version de jeu téléchargée et extraite, la page du jeu vous permet de parcourir la carte du monde, d'inspecter les cartes cellule par cellule, de chercher dans les données de jeu, de les interroger en SQL, de lire les textes du jeu et d'écouter sa musique. Consultez Page du jeu. Puis-je laisser mes bots tourner toute la journée ? Oui, tant qu'Asterobot reste lancé et que la connexion de chaque bot tient. Asteroboard n'a pas besoin de rester ouvert. Gardez à l'esprit que rien ne se reconnecte ni ne redémarre tout seul : quand la connexion d'un bot tombe, ou quand Asterobot redémarre, c'est à vous de reconnecter le bot et d'appuyer sur Lancer. En mode MITM, chaque session commence aussi par quelqu'un qui lance Dofus. Déconnecter, supprimer et redémarrer couvre chaque cas, et Asterobot sur une machine distante montre comment garder Asterobot lancé sur une machine devant laquelle vous n'êtes pas. Que se passe-t-il si je ferme le navigateur ou Asteroboard ? Rien ne s'arrête. Vos bots restent connectés, leurs scripts continuent de tourner et les téléchargements se poursuivent, car tout cela se passe dans Asterobot. Ce qui n'existait que dans la page disparaît avec elle : les messages capturés par le panneau Trafic d'un bot et les lignes de chat que sa console en tirait, le contenu de l'onglet Inventaire d'un bot jusqu'à ce que le personnage entre à nouveau en jeu, les lignes de Serveur > Console, le choix Extraire les données après le téléchargement d'un téléchargement pas encore terminé, et la musique jouée depuis la page du jeu. Consultez Les trois parties. Que se passe-t-il si je ferme la fenêtre de terminal d'Asterobot ? Asterobot s'arrête, et tout le reste avec lui. Tous les bots se déconnectent, y compris un bot qui relaie le jeu auquel vous jouez, donc votre Dofus est déconnecté lui aussi, et les scripts et les téléchargements s'arrêtent. Pour l'arrêter proprement, appuyez sur Ctrl+C dans son terminal ou cliquez sur Éteindre le serveur dans Serveur > État. Asterobot remet alors aussi en place la ligne qu'il avait modifiée dans votre dossier Dofus pour le mode MITM. Après un arrêt brutal, il remet cette ligne en place à son prochain démarrage, à condition que l'un de vos bots revienne avec lui (Problèmes en mode MITM). Consultez Premier lancement. Asteroboard peut-il relancer Asterobot ? Non. Une fois Asterobot arrêté, il vous faut accéder à l'ordinateur sur lequel il tourne pour le relancer. Entre-temps, Asteroboard affiche Serveur déconnecté, et se reconnecte tout seul dès qu'Asterobot est de retour. Consultez Premier lancement. Asterobot se met-il à jour tout seul ? Non. Quand une nouvelle version sort, Asterobot vous le signale au démarrage, et vous remplacez le programme à la main. Vos bots, comptes, paquets, versions de jeu et réglages sont conservés. Asteroboard, en revanche, se met à jour tout seul. Consultez Mettre à jour Asterobot. Existe-t-il une application ? Asterobot n'a pas de fenêtre à lui : sous Windows, il tourne dans une fenêtre de terminal, et sous macOS et Linux, vous le lancez depuis un terminal. Asteroboard peut s'installer comme une application depuis votre navigateur, et s'ouvre alors dans sa propre fenêtre. Consultez Visite d'Asteroboard. Dans quelles langues Asteroboard est-il disponible ? Anglais, français et espagnol. Il suit la langue de votre navigateur, et démarre en français quand votre navigateur en utilise une autre. Pour la changer, ouvrez Préférences et choisissez-en une sous Langue. Consultez Préférences. Où Asterobot range-t-il ses fichiers ? Dans des dossiers de votre profil utilisateur, pas à côté du programme : un pour ses réglages, avec config.toml, un pour ses données, comme les bots, les comptes Ankama et les paquets, et un pour son cache, qui contient les versions de jeu. Fichiers et dossiers indique où ils se trouvent sur chaque système et comment les sauvegarder. Comment réinitialiser Asterobot ou repartir de zéro ? Choisissez la réinitialisation la plus limitée qui règle votre problème, car chacune supprime quelque chose définitivement. Réinitialiser les données hors ligne et Réinitialiser les préférences, dans Préférences, n'effacent que ce qu'Asteroboard garde dans votre navigateur. Tout rétablir, dans Serveur > Config, remet vos réglages à leurs valeurs par défaut et déconnecte Asterobot d'asterobot.net. cache reset supprime toutes les versions de jeu, et conserve vos réglages, vos bots, vos comptes Ankama et votre bibliothèque. Réinitialiser et repartir de zéro vous aide à choisir.
-
Voir ce que votre jeu envoie
Tout ce que vous faites dans Dofus se traduit en messages entre votre jeu et les serveurs d'Ankama. Ce tutoriel en montre quelques-uns en direct sur le bot MITM (« homme du milieu », de l'anglais man-in-the-middle) de Votre premier bot, pendant que vous vous déplacez et discutez. Aucun paquet n'est nécessaire. Caution Ne cochez pas IdentificationRequest pour ce tutoriel. C'est le premier message qu'envoie votre jeu, et il contient le ticket qui ouvre votre session de jeu : ne partagez jamais de capture d'écran ni de copie de ce message. 1. Mettre votre bot en ligne Sur la page de votre bot, cliquez sur Commencer l'attente. Lancez Dofus depuis l'Ankama Launcher, connectez-vous et entrez en jeu avec votre personnage. L'état du bot passe à Connecté au serveur de jeu. 2. Choisir quelques messages Sur la page du bot, cliquez sur Outils. L'outil Réseau s'ouvre sur son panneau Trafic. Cliquez sur Réglages. La liste contient tous les messages qu'Asterobot sait nommer, avec une case à cocher pour chacun. Tapez MapMovement dans Filtrer les messages..., puis cochez MapMovementRequest et MapMovementEvent. Remplacez le filtre par ChatChannelMessage, et cochez ChatChannelMessageEvent. Si vous avez activé Chat en direct dans Votre premier bot, il est déjà coché. Cliquez sur Appliquer. Le bouton indique combien de messages sont cochés, et une notification confirme combien de types de message le bot renvoie désormais. Message Envoyé par Ce qu'il dit MapMovementRequest Votre jeu Votre personnage demande à marcher le long d'un chemin de cellules. MapMovementEvent Le serveur Quelqu'un sur votre carte marche le long d'un chemin : votre personnage ou un autre. ChatChannelMessageEvent Le serveur Un message de chat vous parvient. 3. Jouer et observer Cliquez sur Trafic. Dans Dofus, cliquez sur une cellule pour vous y déplacer. Une ligne MapMovementRequest marquée Sortant apparaît, suivie d'une ligne MapMovementEvent marquée Entrant. Attendez que d'autres joueurs se déplacent sur votre carte : chacun de leurs déplacements ajoute une ligne MapMovementEvent. Quand un message de chat vous parvient, une ligne ChatChannelMessageEvent apparaît, marquée Entrant. Les nouvelles lignes arrivent en bas, et la liste les suit tant que vous êtes en bas. Pause fige la liste, mais les messages qui arrivent pendant la pause ne sont pas conservés. La couleur de chaque ligne indique le type de message : Trafic réseau explique ces couleurs. 4. Lire un message Cliquez sur une ligne MapMovementEvent. Elle s'ouvre et affiche tous les champs du message en JSON. Trouvez cells : le chemin que parcourt le personnage, sous forme de liste de numéros de cellule. Un autre champ contient l'identifiant du personnage qui se déplace, ce qui permet de distinguer vos propres déplacements de ceux des autres joueurs. Cliquez sur une ligne ChatChannelMessageEvent et trouvez content : le texte du message. Les grands nombres, comme les identifiants, s'affichent comme du texte entre guillemets. Pour ne garder qu'un type de message dans la liste, tapez name:MapMovementEvent dans le champ de recherche au-dessus. La référence du protocole Dofus décrit chaque message et chaque champ. 5. Faire le ménage Les messages que vous avez choisis restent sélectionnés sur le bot, et Asterobot continue de les transmettre à Asteroboard jusqu'à ce que vous les décochiez. Quand vous n'en avez plus besoin, décochez-les dans Réglages et cliquez de nouveau sur Appliquer. Vider, dans Trafic, efface la liste, et retire aussi les lignes de chat de l'onglet Console. Quand vous avez terminé, quittez Dofus, et cliquez sur Déconnecter si vous voulez que le bot cesse d'attendre. Pour aller plus loin Trafic réseau, pour la syntaxe de recherche et chaque partie du panneau. Envoyer des messages à la main Réagir aux messages, pour agir sur un message dans votre propre script.
-
Lancer un paquet du marché
Ce tutoriel mène un paquet du marché d'asterobot.net jusqu'à votre bot, puis le lance pendant que vous suivez ce qu'il fait. Il utilise le bot MITM (« homme du milieu », de l'anglais man-in-the-middle) de Votre premier bot : mettez-le en place d'abord si ce n'est pas encore fait. Caution Un paquet agit comme votre personnage : il peut envoyer n'importe quel message au serveur de jeu en votre nom. Lisez Faire confiance à un paquet avant d'en lancer un, et gardez en tête qu'utiliser des bots enfreint les conditions d'utilisation d'Ankama (Comptes et sécurité). 1. Choisir un paquet Ouvrez le marché, https://asterobot.net/files/category/10-library/. Ouvrez la page d'un paquet qui vous intéresse, et lisez ce qu'il fait, ce dont il a besoin selon son auteur, et qui l'a publié. Copiez l'adresse de la page depuis votre navigateur. 2. L'installer Dans Asteroboard, ouvrez le Gestionnaire de bibliothèque et cliquez sur Télécharger un paquet. Collez l'adresse dans ID ou URL du fichier, puis cliquez sur Prévisualiser. Vérifiez la carte. Officiel ou Communautaire indique si asterobot.net marque le fichier comme officiel, et S'installera sous donne le nom et la version que le paquet aura dans votre bibliothèque. Cliquez sur Installer. Paquet installé apparaît, et le paquet obtient une ligne dans le Gestionnaire de bibliothèque, avec ses dépendances s'il en a. Si un message apparaît à la place, Installer depuis le marché l'explique. 3. Le confier à votre bot Mettez votre bot en ligne : sur sa page, cliquez sur Commencer l'attente, puis lancez Dofus, connectez-vous et entrez en jeu avec votre personnage. L'état passe à Connecté au serveur de jeu. Ouvrez l'onglet Réglages du bot. Il s'ouvre sur Configuration du bot. Sous Paquet, choisissez le paquet que vous avez installé, listé sous la forme name@version. Cliquez sur Enregistrer. Asteroboard affiche Réglages enregistrés, et l'en-tête du bot affiche maintenant le paquet. Le bot garde désormais ce paquet, même après un redémarrage. Lancer un paquet montre les autres façons d'en choisir un. 4. Modifier ses réglages Toujours dans Réglages, cliquez sur Réglages du paquet, à côté de Configuration du bot. La première carte appartient à votre paquet, et elle est ouverte. Ses champs et leurs descriptions viennent du paquet. Modifiez une valeur. Non appliqué apparaît sur le titre de la carte. Cliquez sur Appliquer. Une notification confirme que les réglages du paquet sont appliqués. Si la section indique « Ce comportement ne déclare ni réglage ni action. », le paquet n'a rien à ajuster : passez à l'étape suivante. Réglages et actions d'un paquet couvre tous les types de champ, et ce qui se passe quand une valeur est refusée. 5. Lancer et suivre Dans l'en-tête du bot, cliquez sur Lancer. Le bouton devient Arrêter : le script du paquet tourne. Ouvrez l'onglet Console. Les lignes des sources Asterobot et Script apparaissent au fur et à mesure qu'elles sont écrites. Pour ne suivre que le script, ne gardez que Script coché sous Sources. Jouez comme d'habitude, ou laissez le paquet faire son travail, et suivez la console. Les réglages que vous appliquez pendant que le script tourne lui parviennent immédiatement, sans redémarrage. Qu'il en tienne compte tout de suite dépend de la façon dont le paquet est écrit. Si Lancer reste grisé, le bot n'est pas encore connecté à une partie. Si Impossible de démarrer le comportement apparaît, ou si l'alerte Le comportement s'est arrêté sur une erreur s'affiche en haut de la page, voir Lancer un paquet. Quand vous quittez Dofus, la session relayée prend fin et le script s'arrête avec elle, avec Le comportement s'est arrêté sur une erreur. Cliquez de nouveau sur Lancer la prochaine fois que vous êtes en jeu. 6. Arrêter Cliquez sur Arrêter dans l'en-tête du bot. Le script se termine et le bot reste connecté : votre partie continue normalement. Quand vous avez fini de jouer, quittez Dofus. Le bot revient à En attente de votre client de jeu. Pour qu'il cesse d'attendre, cliquez sur Déconnecter. La prochaine fois, cliquez sur Commencer l'attente, entrez en jeu et cliquez sur Lancer : le bot a toujours le paquet et ses réglages. Pour aller plus loin Mettre à jour les paquets, quand l'auteur publie une nouvelle version. Console, pour tout ce que la console permet de filtrer et de copier. Documentation développeur, pour écrire votre propre paquet.
-
Trouver une ressource sur la carte du monde
Ce tutoriel cherche où pousse une ressource à l'aide de la carte du monde d'une version de jeu, puis ouvre les cartes de la région trouvée. Il prend quelques minutes et ne demande aucun bot. Il vous faut seulement une version de Dofus téléchargée et extraite dans le Gestionnaire de jeux : Télécharger une version de jeu explique comment en installer une. 1. Ouvrir la carte du monde Dans la barre latérale, ouvrez le Gestionnaire de jeux. Sur la ligne de votre version de Dofus, cliquez sur le nom du jeu ou sur Inspecter. La page Jeu de la version s'ouvre. Ouvrez l'onglet Cartes. Il s'ouvre sur la vue Monde. Dans l'en-tête de la page, réglez Langue sur la langue dans laquelle vous connaissez le nom de la ressource. 2. Chercher la ressource Cliquez dans le champ de recherche, « Rechercher un monstre, une ressource, un objet... », et tapez le début du nom de la ressource. Chaque mot que vous tapez correspond au début d'un mot du nom. Les résultats apparaissent sous forme de boutons pendant que vous tapez. Une ressource est un objet : son bouton affiche son nom, la table d'où elle vient, items, et son numéro après #. Deux enregistrements peuvent porter le même nom, et le numéro permet de les distinguer. Cliquez sur la ressource. La carte du monde met en évidence les régions où l'on peut trouver la ressource, et un bouton au-dessus de la carte affiche son nom avec le nombre de régions mises en évidence. Plus tard, cliquez sur ce bouton pour retirer la mise en évidence. Deux choses à savoir sur la mise en évidence : Elle couvre les régions où la ressource se récolte, mais aussi les régions des monstres qui la lâchent. L'étape 3 permet de les distinguer. Les régions situées sur une autre carte du monde, ou sans contour, ne peuvent pas être mises en évidence. Elles sont listées après « Également dans : », et cliquer sur l'une d'elles l'affiche dans le panneau de la région. Quand le bouton indique que la ressource « n'apparaît dans aucune région ici », regardez « Également dans : », ou choisissez une autre carte du monde dans la liste en haut à gauche. 3. Examiner une région Cliquez sur un carré mis en évidence. Le panneau de la région, sous la carte, décrit la région correspondante. Regardez Récoltes, avec son nombre. Si la ressource figure dans cette liste, elle pousse dans cette région. Survolez-la pour lire « Récoltée par » et le métier qui la récolte. Si elle n'y est pas, regardez Butins : la région est mise en évidence parce que l'un de ses monstres lâche la ressource. Notez le badge Niveau de la région, et si elle a un bouton Zaap, qui ouvre la carte du zaap qui dessert la région. Les données de jeu listent les ressources par région, et non par carte ou par cellule : le panneau ne peut donc pas dire sur quelles cartes de la région pousse la ressource. Sa note, « Récoltées sur les cartes de cette zone. », le rappelle. 4. Parcourir les cartes de la région Dans le panneau de la région, cliquez sur le bouton qui ouvre ses cartes, par exemple Ouvrir les 12 carte(s). La vue Carte s'ouvre sur la première carte de la région. Sous Vue, gardez Terrain. Les cellules que le jeu marque pour la récolte prennent la couleur Récolte de la légende, et le Résumé, sous la carte, les compte comme Cellules de récolte. Sous Calques, vérifiez que le calque Interactifs est activé : il met un point sur chaque cellule où se trouve un élément interactif. Cliquez sur les flèches sur les côtés de la carte, ou appuyez sur les touches fléchées, pour passer aux cartes voisines. Pour revenir à la carte du monde, cliquez sur le bouton qui affiche les coordonnées de la carte, par exemple Afficher en [4, -19] sur la carte du monde. Ni les couleurs des cellules ni les points ne disent ce qui se trouve sur une cellule : les données de la carte ne nomment pas la ressource de chaque emplacement. Ils vous montrent où regarder, et le jeu vous montre le reste une fois sur place. Tip Cliquez sur Partagé en haut de l'onglet pour garder la carte du monde à côté de la carte que vous parcourez, et activez Suivre la carte pour que la carte du monde reste centrée dessus. Pour aller plus loin Carte du monde et Visionneuse de carte expliquent tout ce que montrent ces vues. Données de jeu montre la fiche complète d'une ressource, que le bouton « Ouvrir dans les données de jeu », à côté de chaque résultat de recherche, permet d'ouvrir.
-
Réinitialiser et repartir de zéro
Quand quelque chose est cassé et que rien d'autre n'aide, une réinitialisation remet une partie d'Asterobot ou d'Asteroboard dans un état propre. Chaque réinitialisation supprime définitivement quelque chose : commencez donc par la plus petite qui peut régler votre problème. Les réinitialisations ci-dessous vont de la plus légère à la plus radicale. Choisir une réinitialisation Problème Réinitialisation Section Asteroboard affiche une ancienne version, ou se comporte bizarrement après une mise à jour Réinitialiser les données hors ligne Réinitialiser les données hors ligne La langue, les couleurs ou la disposition d'Asteroboard ne conviennent pas Réinitialiser les préférences Réinitialiser les préférences Un réglage que vous avez changé a cassé quelque chose La réinitialisation de ce réglage, ou Tout rétablir Les réglages d'Asterobot Asterobot ne démarre pas à cause d'un réglage Modifier config.toml, ou lancer config reset Asterobot ne démarre pas à cause d'un réglage Une version de jeu est cassée, ou le disque est plein Vérifier les fichiers, Réextraire les données, Désinstaller, Supprimer ou Supprimer tous les chunks Versions de jeu Toutes les versions de jeu d'un coup cache reset cache reset Un bot, un compte ou un paquet est cassé, ou Asterobot utilise le mauvais compte asterobot.net Supprimer uniquement cet élément Un élément à la fois Tout, comme sur un nouvel ordinateur Supprimer les dossiers d'Asterobot Repartir complètement de zéro Dans votre navigateur Asteroboard garde quelques données dans chaque navigateur où vous l'utilisez. Les deux boutons suivants se trouvent sur Préférences, dans la section Zone dangereuse, et aucun ne touche à Asterobot : vos bots, comptes, paquets et réglages restent tels quels. Votre navigateur vous demande de confirmer chacun d'eux, puis la page se recharge. Réinitialiser les données hors ligne Supprime la copie d'Asteroboard que votre navigateur garde pour s'ouvrir rapidement et fonctionner hors ligne, puis télécharge de nouveau Asteroboard, ce qui demande une connexion internet. Cliquez sur Réinitialiser les données hors ligne. Confirmez « Cela efface toutes les données hors ligne mises en cache par Asteroboard et recharge la page. Continuer ? » Vos préférences et votre URL du serveur sont conservées. Le bouton est grisé quand votre navigateur ne peut pas du tout faire fonctionner Asteroboard hors ligne. Si la réinitialisation échoue, Asteroboard affiche Impossible de réinitialiser les données hors ligne, avec « Réessayez, ou effacez les données de ce site depuis les paramètres de votre navigateur. » Réinitialiser les préférences Remet la langue, le mode d'affichage, les couleurs, le rayon des angles et la disposition de la barre latérale d'Asteroboard à leurs valeurs par défaut. Sur la page Jeu, la langue des textes du jeu suit de nouveau celle d'Asteroboard. Cliquez sur Réinitialiser les préférences. Confirmez « Cela réinitialise la langue, l'apparence et la disposition du tableau de bord à leurs valeurs par défaut, et recharge la page. Continuer ? » L'URL du serveur est conservée, tout comme les boutons de niveau de Serveur > Console et quelques autres choix, par exemple les calques de la carte du monde et le volume de la musique. Préférences compare les deux boutons. Pour supprimer tout ce qu'Asteroboard a stocké dans un navigateur, URL du serveur comprise, effacez les données du site asteroboard.asterobot.net dans les paramètres de ce navigateur. Ouvrez ensuite l'adresse de votre Asterobot, http://127.0.0.1:8080 par défaut, pour définir de nouveau l'URL du serveur. Les réglages d'Asterobot Sur Serveur > Config, vous pouvez rétablir un réglage avec Rétablir la valeur par défaut au bout de sa ligne, un groupe avec le bouton placé dans l'en-tête de son encadré, ou tous les réglages que vous avez modifiés avec Tout rétablir, qui demande d'abord Rétablir tous les réglages modifiés ? avant d'agir. Une réinitialisation remet la valeur par défaut et retire la valeur de config.toml. Les réglages marqués Redémarrage requis prennent leur valeur par défaut au prochain lancement. Warning Une fois Asterobot connecté à asterobot.net, sa connexion est un réglage modifié : website.token. Tout rétablir, ou la réinitialisation du groupe website, déconnecte Asterobot, et vous devrez confirmer un nouveau code de connexion. Vos bots, comptes Ankama, paquets et versions de jeu sont conservés. La page Config explique chaque bouton. Asterobot ne démarre pas à cause d'un réglage Quand un réglage empêche Asterobot de démarrer, par exemple un server.listenAddress sur lequel il ne peut pas écouter, Asteroboard ne peut pas le joindre pour changer quoi que ce soit. Corrigez plutôt config.toml : Ouvrez config.toml avec un éditeur de texte. Fichiers et dossiers indique où il se trouve. Supprimez la ligne du réglage qui pose problème. Un réglage sans ligne prend sa valeur par défaut. Enregistrez le fichier et lancez Asterobot. Si vous ne savez pas de quel réglage il s'agit, utilisez config reset. config reset config reset vide config.toml et remet tous les réglages à leur valeur par défaut. Arrêtez Asterobot, s'il tourne. Ouvrez un terminal dans le dossier où vous avez placé Asterobot et lancez : ./asterobot config reset Sous Windows, dans PowerShell : .\asterobot.exe config reset Si vous lancez Asterobot avec --config-dir ou ASTEROBOT_CONFIG_DIR, indiquez le même dossier à la commande. Quand elle demande Put every setting back to its default value? [y/N], tapez y et appuyez sur Entrée. Elle affiche Resetting the configuration.. puis All configuration settings have been reset to their default values. Lancez Asterobot, et confirmez le code de connexion asterobot.net qu'il demande. Toute autre réponse à la question arrête la commande, et rien ne change. Elle supprime Elle conserve Tous les réglages que vous avez modifiés Vos bots La connexion à asterobot.net Vos comptes Ankama et leurs connexions server.listenAddress, server.basicAuth et server.tls, qui reviennent à n'accepter que cet ordinateur, sans mot de passe Vos paquets Vos ports, hôtes et dossier Dofus du mode MITM (« homme du milieu », de l'anglais man-in-the-middle), et vos réglages de connexion automatique Vos versions de jeu et leurs données de jeu Si vous aviez cliqué sur Se déconnecter auparavant, ce choix disparaît aussi : Asterobot vous demande de lui-même de vous connecter de nouveau. Ligne de commande en dit plus sur la commande. Versions de jeu Ces actions se trouvent dans le menu de chaque version dans le Gestionnaire de jeux, sauf Supprimer tous les chunks, placé au-dessus du tableau. En commençant par la plus douce : Action Elle supprime Elle conserve Vérifier les fichiers Les fichiers qui ne correspondent pas, qu'elle télécharge de nouveau Tout le reste Réextraire les données Les données de jeu, qu'elle reconstruit à partir des fichiers Les fichiers Supprimer les données extraites Les données de jeu, les images extraites et la musique extraite Les fichiers et la ligne Désinstaller Les fichiers téléchargés La ligne et les données de jeu Supprimer Les fichiers, les données de jeu et la ligne Les chunks partagés Supprimer tous les chunks Tous les chunks stockés, pour toutes les versions Les fichiers et les données de jeu de chaque version Warning Aucune de ces actions ne vérifie si un bot utilise la version. Un bot qui se connecte tout seul ne peut pas se connecter avec une version qui n'est pas prête, et un bot dont la version a été supprimée est ignoré au lancement d'Asterobot. Passez d'abord vos bots sur une autre version, comme le montre Quand Dofus se met à jour. Gérer les versions de jeu explique chaque action. cache reset cache reset supprime tout le dossier de cache d'Asterobot, puis le recrée, vide. Arrêtez Asterobot avec Ctrl+C dans son terminal, ou avec Éteindre le serveur. Il ne doit pas tourner pendant la réinitialisation, et l'arrêter normalement remet en place la ligne qu'il a peut-être modifiée dans votre dossier Dofus, ce qu'il ne peut plus faire une fois sa copie du jeu disparue. Ouvrez un terminal dans le dossier où vous avez placé Asterobot et lancez ./asterobot cache reset, ou .\asterobot.exe cache reset dans PowerShell sous Windows. Si vous lancez Asterobot avec --cache-dir ou ASTEROBOT_CACHE_DIR, indiquez le même dossier à la commande. Quand elle demande Delete <folder> with everything in it? [y/N], vérifiez que <folder> est bien le dossier de cache voulu, puis tapez y et appuyez sur Entrée. Elle affiche Resetting the cache.. puis All cache have been removed. Lancez Asterobot, puis téléchargez et extrayez les versions de jeu qu'utilisent vos bots. Elle supprime Elle conserve Toutes les versions de jeu, avec leurs fichiers et leurs données de jeu Le dossier des réglages : config.toml et la connexion à asterobot.net Tous les chunks stockés Le dossier des données : bots, comptes Ankama et bibliothèque Les listes de téléchargement d'Ankama Les captures d'écran des connexions automatiques échouées Les bots réglés sur une version de jeu supprimée sont ignorés au lancement d'Asterobot, jusqu'à ce que vous téléchargiez et extrayiez de nouveau cette version. Ligne de commande en dit plus sur la commande. Un élément à la fois À supprimer Où Ce qui disparaît Ce qui reste Un bot Supprimer le bot dans le menu du bot, dans le Gestionnaire de bots, puis Oui, supprimer Le bot, ses réglages, les réglages de son paquet, sa sélection de messages, son historique de console et son rattachement MITM Son compte Ankama La connexion d'un compte Ankama Déconnecter dans le menu du compte, dans le Gestionnaire de comptes Ses jetons. Asterobot demande à Ankama de les révoquer, et les oublie dans tous les cas Le compte et son mot de passe enregistré Un compte Ankama Supprimer dans le menu du compte, dans le Gestionnaire de comptes, puis Oui, supprimer Le compte, avec son mot de passe et ses jetons. Rien n'est révoqué auprès d'Ankama Son profil de navigateur, sa dernière capture d'écran d'échec, et les bots qui l'utilisent Une version de paquet Supprimer dans le menu du paquet, dans le Gestionnaire de bibliothèque, puis Oui, supprimer Cette version Les autres versions, les paquets dont elle dépend, et les bots réglés sur elle La connexion à asterobot.net Se déconnecter dans le menu du bouton du compte La connexion d'Asterobot. Il reste déconnecté, même après un redémarrage, jusqu'à ce que vous cliquiez sur Se connecter Tout le reste Ce qui en découle : Un bot qui utilisait un compte supprimé ne peut pas se connecter, et il est ignoré au prochain lancement tant que le compte n'est pas revenu avec le même identifiant. Voir État et actions d'un compte. Un bot réglé sur une version de paquet supprimée ne peut pas démarrer son script tant que vous ne le passez pas sur une autre version. Voir Gérer votre bibliothèque. Tant qu'Asterobot est déconnecté, il ne peut ni ajouter de bots ni télécharger de paquets, et il ignore tous les bots enregistrés à son lancement. Voir Votre compte. Un bot supprimé ne revient que si vous l'ajoutez de nouveau en partant de zéro. Voir Déconnecter, supprimer et redémarrer. Repartir complètement de zéro Supprimer les dossiers d'Asterobot le ramène à son premier lancement. Rien n'est stocké à côté du programme : supprimer ou remplacer le seul fichier du programme ne change donc rien. Caution Ces dossiers contiennent vos mots de passe et jetons Ankama ainsi que votre connexion à asterobot.net. Les supprimer est définitif : sauvegardez d'abord tout ce dont vous pourriez avoir besoin (Fichiers et dossiers). Arrêtez Asterobot avec Ctrl+C dans son terminal, ou avec Éteindre le serveur sur Serveur > État, pour qu'il remette en place la ligne qu'il a peut-être modifiée dans votre dossier Dofus. Une fois son dossier de cache supprimé, il ne peut plus relire la ligne d'origine. Supprimez les dossiers que vous voulez réinitialiser. Fichiers et dossiers indique où se trouve chacun d'eux sur votre système. Lancez Asterobot. Il recrée les dossiers, vides, et vous demande de vous connecter à asterobot.net, comme lors de son premier lancement. Ce que chaque dossier emporte avec lui : Dossier Le supprimer fait perdre Réglages config.toml : tous les réglages que vous avez modifiés, et la connexion à asterobot.net Données bots.toml avec tous les bots, accounts.toml avec vos comptes Ankama, votre bibliothèque de paquets, le certificat HTTPS et les profils de navigateur utilisés pour la connexion Cache Toutes les versions de jeu avec leurs données de jeu, les chunks stockés, les listes de téléchargement d'Ankama et les captures d'écran des connexions échouées Si vous lancez Asterobot avec des options de dossier ou leurs variables d'environnement, les dossiers à supprimer sont ceux qu'elles indiquent (Ligne de commande). L'URL du serveur et les préférences d'Asteroboard sont stockées dans chaque navigateur, pas dans ces dossiers. Effacez-les comme décrit dans Dans votre navigateur si vous voulez aussi vous en débarrasser. Pour aller plus loin Fichiers et dossiers Ligne de commande Obtenir de l'aide
-
Problèmes de téléchargement du jeu
Les bots et la page Jeu ont besoin d'une version de jeu téléchargée et extraite, et chacune des deux étapes peut mal tourner, du téléchargement qui refuse de se mettre en file d'attente jusqu'à l'extraction qui échoue sans dire pourquoi. Télécharger une version de jeu et Extraire les données de jeu expliquent le fonctionnement des deux. Impossible de mettre en file d'attente le téléchargement Asteroboard affiche Impossible de mettre en file d'attente le téléchargement quand vous cliquez sur Télécharger : Asterobot a refusé la demande, ou n'a pas pu être joint. Asteroboard n'est pas connecté. Cherchez un point rouge sur Préférences dans la barre latérale, et consultez Asteroboard ne se connecte pas. latest ne peut pas être résolu, parce que le jeu, la plateforme ou l'environnement que vous avez saisi ne figure pas dans la liste d'Ankama. Choisissez les valeurs parmi les suggestions, ou gardez les valeurs par défaut dofus, windows et dofus3. Asterobot ne peut pas joindre Ankama. Vérifiez la connexion internet de l'ordinateur où tourne Asterobot, puis cliquez sur Vérifier les mises à jour dans la fenêtre. Reste sur En attente Un seul téléchargement ou une seule vérification de fichiers tourne à la fois, quels que soient le jeu et la version. Regardez les autres lignes du Gestionnaire de jeux : quand l'une d'elles affiche Téléchargement ou Vérification, la vôtre démarre après. Les extractions, elles, ne passent pas par cette file. Échec Le téléchargement s'est arrêté. Survolez l'icône d'information à côté d'Échec pour lire la raison. La raison Que faire Parle du réseau ou des serveurs d'Ankama Ouvrez le menu de la version et cliquez sur Réessayer. Le téléchargement reprend là où il s'est arrêté et garde les fichiers terminés. Contient invalid file filter ou invalid fragment filter Un filtre n'est pas une expression régulière valide. Cliquez sur Réessayer et corrigez-le dans la fenêtre, ou remettez le Filtre de fichiers (regex) par défaut. Est download queue is full or the server is shutting down Asterobot était en train de s'arrêter, ou trop de téléchargements attendaient. Cliquez sur Réessayer une fois qu'Asterobot fonctionne normalement. Indique qu'il n'y a plus d'espace sur le disque Asterobot ne vérifie pas l'espace libre avant de télécharger. Libérez de l'espace comme l'explique Libérer de l'espace disque, puis cliquez sur Réessayer. Installé, mais Pas prêt La colonne Statut indique Installé et la colonne Prêt indique Pas prêt. Une version n'est prête pour un bot qu'une fois que les fichiers dont un bot a besoin sont présents et que ses données de jeu sont extraites. Les causes : Asterobot a été arrêté pendant le téléchargement. À son redémarrage, la version affiche Installé alors qu'il manque des fichiers. La version a été téléchargée avec un Filtre de fichiers (regex) plus restrictif que celui par défaut. Elle a été désinstallée. Désinstaller supprime les fichiers et garde le statut Installé. Elle n'est pas extraite. Regardez la colonne Extraction. Ouvrez le menu de la version et cliquez sur Télécharger plus de fichiers. Gardez le Filtre de fichiers (regex) par défaut et confirmez. Seuls les fichiers manquants sont téléchargés. Une fois le téléchargement terminé, si la colonne Extraction n'indique pas Extrait, cliquez sur Extraire les données dans le même menu. Cliquez sur Vérifier si prêt pour un bot. Asteroboard répond Prêt pour un bot ou Pas prêt pour un bot. La page Jeu de la version vous indique quelle moitié manque : son encadré Fichiers requis indique Manquants quand ce sont les fichiers. Voir Prêt pour un bot. Reste Non extrait après le téléchargement C'est Asteroboard qui lance l'extraction quand un téléchargement se termine avec Extraire les données après le téléchargement coché. Si vous avez fermé ou rechargé Asteroboard avant la fin, ou si la case n'était pas cochée, rien n'est extrait. De plus, après un téléchargement lancé, la case est de nouveau décochée la prochaine fois que vous ouvrez la fenêtre de téléchargement. Ouvrez le menu de la version et cliquez sur Extraire les données. Échec de l'extraction Asteroboard n'indique pas pourquoi. La raison se trouve dans le journal d'Asterobot, sur une ligne qui commence par Failed to extract game data, dans le terminal ou sur Serveur > Console. La cause habituelle est un fichier manquant : Ouvrez la page Jeu de la version, avec son nom ou son bouton Inspecter dans le Gestionnaire de jeux. Si l'encadré Fichiers requis indique Manquants, cliquez sur Télécharger les fichiers requis et attendez la fin du téléchargement. De retour dans le Gestionnaire de jeux, cliquez sur Extraire les données dans le menu de la version. L'extraction ne fonctionne que pour Dofus sous Windows. Une version d'un autre jeu ou d'une autre plateforme échoue quel que soit le nombre d'essais. Échec de l'extraction reste affiché jusqu'à ce que vous relanciez l'extraction ou redémarriez Asterobot, qui affiche alors Extrait ou Non extrait selon ce qui se trouve sur le disque. Impossible de démarrer l'extraction La demande n'a pas atteint Asterobot. Vérifiez qu'Asteroboard est connecté, puis réessayez. Extraire les données n'est pas proposé pendant que cette version est déjà en cours d'extraction. La version du jeu du bot n'est pas encore prête Un bot qui se connecte tout seul refuse de se connecter avec une version dont l'état n'est pas Prêt pour un bot, et Ajouter un bot n'accepte pas une telle version. Préparez la version comme décrit dans Installé, mais Pas prêt. Voir aussi Le bot ne se connecte pas. Fichiers requis manquants dans les réglages d'un bot Dans l'onglet Jeu d'Ajouter un bot, ou dans l'onglet Réglages d'un bot, Fichiers requis manquants signifie qu'il manque à la version des fichiers dont un bot a besoin. Cliquez sur Télécharger les fichiers requis juste à côté. Quand le badge passe à Prêt, cliquez sur le badge d'extraction si la version n'est pas extraite. Si le téléchargement ne peut pas démarrer, Asteroboard affiche Impossible de télécharger les fichiers requis. La version la plus récente n'apparaît pas Dans les suggestions du champ Version. Cliquez sur Vérifier les mises à jour en haut de la fenêtre de téléchargement, pour qu'Asterobot récupère de nouveau la liste d'Ankama. latest télécharge une version plus ancienne. Quand Ankama est injoignable, Asterobot résout latest à partir de la dernière liste qu'il a enregistrée. Vérifiez la connexion internet, puis utilisez Vérifier la dernière version dans le menu d'une version. La réponse est À jour ou Une nouvelle version est disponible, avec le numéro de la dernière version chez Ankama. Impossible de vérifier la dernière version signifie qu'Asterobot n'a pas pu poser la question. Une version téléchargée avec la commande gamemanager download n'apparaît dans le Gestionnaire de jeux qu'après Rescanner ou un redémarrage. Si le nouveau scan échoue, Asteroboard affiche Impossible de relancer l'analyse. Cette commande n'extrait jamais : cliquez ensuite sur Extraire les données. Désinstaller, Supprimer et les outils de chunks Message Ce que ça signifie Que faire Impossible de désinstaller ou Impossible de supprimer Asterobot a refusé, par exemple parce qu'un téléchargement ou une vérification de cette version a démarré entre-temps. Attendez qu'il se termine, puis réessayez. Impossible de supprimer les chunks Un téléchargement, une vérification ou un contrôle des chunks a démarré avant que votre clic n'atteigne Asterobot. Supprimer tous les chunks est grisé pendant que l'une de ces opérations tourne. Attendez qu'aucun téléchargement, aucune vérification ni aucun contrôle des chunks ne soit en cours. Impossible de démarrer la vérification des chunks La demande n'a pas atteint Asterobot. Vérifiez qu'Asteroboard est connecté. Échec de la vérification des chunks, avec une raison La vérification s'est arrêtée. Lisez la raison, puis cliquez de nouveau sur Vérifier tous les chunks. Impossible de démarrer la vérification Vérifier les fichiers n'a pas pu être envoyé. Vérifiez qu'Asteroboard est connecté. Vérifier les fichiers n'est pas proposé pour une version en Échec : utilisez Réessayer. Le disque se remplit Asterobot ne vérifie pas l'espace libre avant un téléchargement, et les versions de jeu sont de loin ce qu'il stocke de plus volumineux. De la solution la plus douce à la plus radicale : Supprimer tous les chunks, puis Désinstaller ou Supprimer les versions dont vous ne vous servez pas. Voir Libérer de l'espace disque, et lisez Réinitialiser et repartir de zéro avant de recourir à cache reset. Musique La musique se télécharge à part, depuis l'onglet Musique de la page Jeu. Si le téléchargement ne peut pas démarrer, Asteroboard affiche Impossible de lancer le téléchargement ou Impossible de lancer l'extraction avec la raison, et Impossible de charger la musique quand l'onglet ne peut pas la lire du tout. Voir Musique. Versions qui ne correspondent pas En mode MITM (« homme du milieu », de l'anglais man-in-the-middle), la version du Gestionnaire de jeux doit être exactement celle à laquelle vous jouez, sinon le bot refuse de se mettre en attente : voir Problèmes en mode MITM. Une version marquée Version différente dans la colonne Compatibilité se télécharge et s'extrait normalement, mais les bots ne fonctionnent peut-être pas encore avec elle : voir Quand Dofus se met à jour. Pour aller plus loin Gérer les versions de jeu Réinitialiser et repartir de zéro