Smooth
Administrateurs
-
Adhésion
-
Dernière visite
-
Actuellement
Ajout d'un article de blog dans : c25f89372458901ba5ba2ca865bdbe9d
Tout ce qui a été publié par Smooth
-
How the parts connect
Asteroboard, Asterobot and your Dofus client can each run on a different machine. Before you split them up, it helps to know which part talks to which, and on what address. Every connection Your browser → Asterobot (port 8080) Your browser → asteroboard.asterobot.net Your browser → asterobot.net Your Dofus client, in MITM mode → Asterobot (ports 8080, 5555, 5556) Your Dofus client, in MITM mode → Ankama's servers Asterobot → Ankama's servers Asterobot → asterobot.net From To Default address What it carries Your browser Asterobot 127.0.0.1:8080 Everything Asteroboard shows and does, and its live updates. Your browser asteroboard.asterobot.net The internet The Asteroboard page itself, and its new versions. Your browser asterobot.net The internet Your asterobot.net name and avatar, shown on the account button and the Account page. Your Dofus client Asterobot 127.0.0.1:8080 MITM mode only. The connection settings Dofus fetches before it signs in. Your Dofus client Asterobot 127.0.0.1:5555 MITM mode only. The sign-in, which Asterobot passes on to Ankama. Your Dofus client Asterobot 127.0.0.1:5556 MITM mode only. The game session, which Asterobot passes on to the game server. Your Dofus client Ankama's servers The internet Everything else Dofus uses. Asterobot only changes where it signs in and where its game session goes. Asterobot Ankama's servers The internet Game downloads, Ankama sign-ins, and the game servers your bots play on. Asterobot asterobot.net The internet Your asterobot.net sign-in, marketplace downloads, the update check and announcements from the Asterobot team. In MITM mode, where a bot relays the game you play (man-in-the-middle), port 8080 has two jobs: it's Asteroboard's port, and it's where Dofus fetches its connection settings. That's why the line Asterobot writes in your Dofus folder uses the port of server.listenAddress (MITM mode). What Asterobot accepts by default 127.0.0.1 is the address a computer uses to reach itself. Asterobot listens on it by default, for all three ports, so no other machine can connect: not a phone on your Wi-Fi, not another PC, not anything on the internet. Programs running on the same computer can, and so can the other people who use that computer. The sign-in and session ports aren't even open most of the time. Asterobot opens them when a bot starts waiting for your game, and closes them once no bot is waiting. There's no password and no HTTPS by default either. As long as only this computer can reach Asterobot's ports, neither is needed. Security explains what changes once other machines can reach Asterobot. These settings decide all of it. They're on Server > Config, and each one takes effect when Asterobot restarts. Setting Default What it decides server.listenAddress 127.0.0.1:8080 The address and port Asteroboard connects to, and Dofus fetches its connection settings from. server.tls Off Whether that port speaks HTTPS instead of HTTP. server.basicAuth Empty The user names and passwords that port asks for. Empty asks for none. botmanager.mitmBindHost 127.0.0.1 The network interface the sign-in and session ports listen on. botmanager.mitmAdvertiseHost Empty The address Dofus is told to connect to. Empty uses botmanager.mitmBindHost. botmanager.mitmSignInPort 5555 The sign-in port. botmanager.mitmSessionPort 5556 The session port. Settings reference describes each setting in full, and The Config page shows how to change one. Important MITM mode stops working while server.tls is on or server.basicAuth is set, even on the computer Asterobot runs on, as MITM mode explains. When you need MITM mode and access from another machine, use an SSH tunnel: see Asterobot on a remote machine. How Asteroboard finds your Asterobot Asteroboard is the same page for everybody, so each browser has to be told where its Asterobot is. It keeps that address as its Server URL, in the browser. The quickest way to set it is to open Asterobot's own address in the browser. Asterobot shows no page there: it sends the browser on to https://asteroboard.asterobot.net, adding the address, the port and the scheme (http or https) the browser used to reach it. Asteroboard saves them as its Server URL, removes them from the address bar and connects. So Asteroboard uses exactly the address you opened. Open http://127.0.0.1:8080 on the computer where Asterobot runs, and that browser uses 127.0.0.1. Open https://192.168.1.20:8080 on a phone, and the phone uses 192.168.1.20. Each browser keeps its own Server URL, and only one at a time. You can also type the address in Preferences, under Server URL. See Preferences. When a port is already in use Port 8080. Asterobot stops right after starting, with An error occurred during the server's initialization process. Since Asterobot isn't running, Asteroboard can't change the setting for you: edit config.toml instead (Files and folders shows where it is). Add these lines, or change the value if a [server] section is already there: [server] listenAddress = "127.0.0.1:8081" Start Asterobot again and open http://127.0.0.1:8081. In MITM mode, the line Asterobot writes in your Dofus folder follows the new port by itself. Ports 5555 and 5556. A bot can't start waiting, and Asteroboard shows Couldn't put the bot into waiting. On Server > Config, change botmanager.mitmSignInPort or botmanager.mitmSessionPort, keep the two values different, and restart Asterobot. See MITM mode. Pick your setup What you want Where to go Use Asteroboard on a phone, a tablet or another computer at home Asteroboard on another device Run Asterobot on a server, or on a computer you don't sit at Asterobot on a remote machine Play Dofus on one computer while Asterobot runs on another MITM across machines Whatever you choose, read Security first. Anyone who reaches Asterobot's port can do everything you do in Asteroboard. Where to go next Security, before you open anything.
-
Getting help
When something doesn't work and these docs don't solve it, other players and the Asterobot team can help. Tell them what you did and what you saw, and keep a few files and values to yourself. Where to ask Where Address What it's for Help https://asterobot.net/help Guides and answers for using Asterobot. The forum https://asterobot.net/forums/ Asking for help and talking with other players, in threads others can find later. Discord https://discord.asterobot.net Joining the community to ask questions and chat. The status page https://status.asterobot.net Checking whether asterobot.net has an outage before you report one. Asteroboard's About page has a card for Help, Discord and the status page. When Asteroboard shows Page not found or Something went wrong, its Get help button opens that page too. Before you ask Check the status page. A sign-in code that won't go through or a marketplace preview that fails is often an outage on asterobot.net. Look for the exact message you got in the troubleshooting pages and in the FAQ. Make sure you run the latest Asterobot. When a newer version is out, Asterobot says so as it starts (Messages and updates). What to put in your message The more of this you give, the faster someone can help: Your Asterobot version. It's on Server > Status, in the Version row, and on the first line Asterobot prints when it starts, right after the word Asterobot. Your Asteroboard version: the number at the top of the sidebar, also written on the About page after "Asteroboard version". Your system and processor: the name of the archive you downloaded, such as Asterobot_1.4.0_windows_amd64.7z, or the OS and Architecture values on Server > Status. The game version of the bot, as Game Manager shows it, and whether its Compatibility column says Compatible or Different version. How the bot connects: Full socket mode or MITM mode, and the package it plays with its version, if any. What you did, what you expected, and what happened instead, step by step. The exact error text, copied rather than retyped. A screenshot of the notification or the dialog helps too. The log lines around the problem, from the terminal or from Server > Console. If someone asks for more detail, set the log level to DEBUG, do the same thing again and copy the new lines. Status and console shows how. The bot's console, when the problem is about one bot: Copy what's shown on its Console tab copies the lines you see (Console). If Asteroboard showed Page not found or Something went wrong, open its Technical details panel and include the Status and the Requested address. What you must never share Caution Nobody helping you needs any of the following, whatever they say. Anyone who gets one of them can use your accounts. Never share Why Your Ankama password and your asterobot.net password They give full access to those accounts. config.toml It holds website.token, the sign-in Asterobot uses on asterobot.net, and the logins and passwords of server.basicAuth in plain text. The value of website.token It gives access to your asterobot.net account without your password. accounts.toml It holds your Ankama Login IDs, the passwords you stored in plain text, and the tokens Ankama gave Asterobot. The zaapmanager/browser-profiles folder Each profile holds a live Ankama session. Asterobot's data folder, or a copy of it It contains accounts.toml, the browser profiles and your bots. The link you copy during a manual Ankama sign-in It carries a one-time code that Asterobot trades for the account's sign-in. A session's game ticket, session.gameToken, if a script prints it It's what a stranger would need to take over the game session. Files and folders shows where these files are. A few habits keep screenshots and pasted logs safe: On Server > Config, the values of website.token and server.basicAuth are hidden. Don't click the eye button next to website.token, or Edit as JSON on server.basicAuth, while you take a screenshot: both show the real values. Read log lines before you post them, and remove anything that looks like a password, a token or a link carrying a code. Where to go next Asteroboard can't connect Status and console Files and folders
-
Messages and updates
Asterobot and Asteroboard keep you informed in a few ways: announcements from the Asterobot team, a notice when a newer Asterobot is published, and Asteroboard's own updates. When asterobot.net itself seems to be down, a status page tells you. Announcements from the Asterobot team The Asterobot team can send a short message to Asterobot installations, for example to warn about a problem or a change. Asterobot listens for these messages as long as it runs, and gets connected again a few seconds after the connection drops. When a message arrives: Every Asteroboard open at that moment shows it as a notification with a megaphone icon and the message as its text. The notification closes by itself after a few seconds. Asterobot writes the text to its log, as an INFO line. You'll find it in the terminal, and on Server > Console if Asteroboard was open, as long as the log level lets INFO lines through (Status and console). Neither Asterobot nor Asteroboard keeps a list of past announcements. If no Asteroboard was open when a message arrived, no notification ever shows for it: look at the terminal, which still has the line. When a new Asterobot is out Each time Asterobot starts, it asks asterobot.net for the version of the Asterobot file published there, and compares it with its own. When the published version is higher: The terminal prints An Asterobot update is available, followed by the new version number and the link to the file. Asteroboard shows Asterobot update available, with a line such as "Version 1.4.0 is available on asterobot.net." Its View on asterobot.net button opens the file's page. The notification stays until you close it. Asteroboard shows that notification once each time it loads, including when you open it long after Asterobot started: it asks Asterobot for the result as soon as it connects. The check happens only when Asterobot starts. A version published while Asterobot runs isn't noticed until the next start. If the check itself fails, for example because asterobot.net can't be reached, the terminal prints the warning Failed to check for an Asterobot update and Asteroboard shows nothing. Asterobot never downloads or installs an update by itself. Updating Asterobot shows how to replace it with the new version. Asteroboard updates itself Asteroboard is a web page, so there's nothing to download or install for it. It checks for a new version every 30 minutes while it's open and the device is online. When a new version is ready, it shows Update available: "A new version of Asteroboard is ready. Refresh whenever you like to switch to it." That notification stays until you close it. Click Refresh now, or reload the page whenever it suits you: Asteroboard switches to the new version on the next load. Your bots don't notice, since they run in Asterobot. The reload only clears what lived in the page itself, such as the lines on Server > Console and the messages a bot's Traffic panel had captured. What changed in each version of Asteroboard is listed in its release notes, at https://asterobot.net/release-note-asteroboard. The version number at the top of the sidebar links there. Asterobot and Asteroboard update separately. A new Asteroboard doesn't mean a new Asterobot, and the other way round. A few things can go wrong with Asteroboard's offline copy: Offline mode unavailable: "This device couldn't get everything ready for offline use. Some features may need an internet connection." Asteroboard still works, but some features may then need an internet connection. Asteroboard keeps showing an old version, or behaves oddly after an update: use Reset offline data in Preferences (Preferences). Check whether asterobot.net is up The status page at https://status.asterobot.net gives live uptime and the history of incidents. Asteroboard links to it from the About page, on the Status card. Look there first when something that depends on the website stops working: sign-in codes that won't go through, marketplace previews that fail, the Account page stuck on Not signed in, or an update check that fails. When an incident is under way, nothing on your side will fix it: wait until it's resolved, then try again. Where to go next Updating Asterobot Getting help
-
The marketplace
The marketplace is the Library category of asterobot.net, at https://asterobot.net/files/category/10-library/, where asterobot.net members share packages. You browse it on the website, and Asterobot never browses it for you: once you've found a package, you give its link to Asteroboard and Asterobot downloads it. Browse the Library category Open https://asterobot.net/files/category/10-library/ in your browser. The download forms in Asteroboard also have a Browse packages on asterobot.net link that opens it. Each package is a file with a page of its own, where its author presents it and publishes its versions. The page's address follows this pattern: https://asterobot.net/files/file/6-testscript5/ The number at the start of the last part, 6 here, is the file's ID. Asteroboard accepts either the whole address or the ID alone. Read a file's page before you install it: who published it and what it says the package does. A package runs with your bot's game session, and Trusting a package explains what that allows. Official and Community Asterobot sorts marketplace files into two kinds, and shows the difference as a badge in Library Manager: Official Community Which files Files the Asterobot team marks as official on asterobot.net Every other file, published by an asterobot.net member Name in your library @asterobot: followed by the file's title, such as @asterobot:auto-harvest @, the author's name, : and the file's title, such as @some-author:auto-harvest Asterobot reads the official mark on the file itself, whatever category the file is in. The author's name and the title are both written in lowercase, with hyphens. A package keeps the name it got the first time you installed it, even if the author renames the file later. What is a package explains the badges in your library, and authors will find the naming rules in How your package is named. The Official badge tells you who published a package. It isn't a promise about what the code does, and neither badge replaces reading the file's page. From the website to your library Asterobot must be signed in to asterobot.net, since it downloads files with that account. Then: Copy the address of the file's page, or note its ID. In Asteroboard, open Library Manager and click Download package, or click Download one wherever you choose a package for a bot. Paste the address or the ID in File ID or URL, then click Preview. Asteroboard shows what the file will install as. A preview doesn't count as a download on asterobot.net. Click Install. Asterobot downloads the package and every package it depends on that isn't in your library yet. Install from the marketplace goes through each step, the preview card and every error. You can also download a package's file from its page yourself and add it with Import a .zip. A package added that way has no link to its marketplace file: no updates, no Source row, and no check that its files stay as they were downloaded. Install through Download package whenever you can. See Manage your library. Who can see and download a file asterobot.net decides who can see a file and who can download it. Asterobot asks with the account it's signed in with, the one on its Account page, which isn't necessarily the account your browser uses on the website. Two messages come from those rules: Message When What it means File not found, or you don't have permission to view it. Under File ID or URL, after Preview The file doesn't exist, the account Asterobot uses can't see it, or Asterobot couldn't ask asterobot.net, for example because it isn't signed in. You don't have permission to download this file. Under the preview card The account can see the file but isn't allowed to download it. Install stays greyed out. For the first one, check the address, then the account button at the bottom of Asteroboard's sidebar: it should show your name. For the second, there's nothing to fix in Asterobot: the file's rules on asterobot.net don't allow your account to download it. Updates An author publishes a new version of a package on the same file page. Nothing changes in your library when that happens: Asterobot doesn't look for new versions by itself. To get them, click Check for updates in Library Manager. Asterobot compares each package installed from the marketplace with the version on its file page, and installs a new version next to the one you have when you ask for it, so your bots keep playing the old one until you move them. Update packages walks through it. Publish your own package Any asterobot.net member can publish a package in the Library category. The author's side, from preparing the package to publishing new versions, is in the developer docs: start with Before you publish, then Publish on asterobot.net. Where to go next Install from the marketplace Trusting a package The tutorial Run a marketplace package
-
Your account
Asterobot works with one asterobot.net account at a time, and the account button at the bottom of the sidebar shows which. Signing in for the first time is explained in Sign in with asterobot.net. The sign-in belongs to Asterobot The asterobot.net sign-in is stored in Asterobot, not in your browser. Every Asteroboard connected to the same Asterobot, on any device, shows the same account, and signing out from one of them signs Asterobot out for all of them. It also works the other way round: being signed in to asterobot.net in your browser doesn't sign Asterobot in. Asterobot needs its own sign-in, which you give it once by confirming a code on the website. The account button The account button sits at the bottom of Asteroboard's sidebar. Once Asterobot is signed in, it shows your asterobot.net avatar and name, and a click opens a menu: Menu item What it does Account Opens the Account page, described below. It's the only way to reach that page: it isn't listed in the sidebar. Online Profile Opens your profile on asterobot.net in a new tab. It only appears once Asteroboard has loaded your profile. Log out Disconnects Asterobot from your account. See Disconnect Asterobot. The other states of the button, Sign in and the pending sign-in, are explained in Sign in with asterobot.net. The Account page The page shows your avatar and your member name at the top, with your member title under the name when you have one. A card below lists the details asterobot.net gives about your account: Row What it shows Email The email address of your asterobot.net account. Joined The date you joined asterobot.net. Primary group Your main member group on asterobot.net, as a badge. A row only appears when asterobot.net returns a value for it. Under the cards, View on asterobot.net opens your profile on the website in a new tab, and Disconnect signs Asterobot out. When the page says Not signed in Asteroboard loads these details straight from asterobot.net, in your browser, using Asterobot's sign-in. So the device you open Asteroboard on needs to reach asterobot.net too. The page shows Not signed in, with "Sign in from the sidebar to see your asterobot.net account here.", in two cases: Asterobot really isn't signed in. The account button then reads Sign in: click it and follow Sign in with asterobot.net. Asterobot is signed in, but Asteroboard couldn't load your details from asterobot.net, for example because this device has no internet access or the website is down. The account button then reads Signed in, without your avatar or name. In the second case, Asteroboard tries again each time it reconnects to Asterobot, and when you reload the page. If it keeps failing, check whether asterobot.net is up on its status page, as Messages and updates explains. Disconnect Asterobot Click Disconnect on the Account page, or open the account button's menu and click Log out. Both do the same thing. Your browser asks: "This disconnects Asterobot from your asterobot.net account. You'll need to sign in again to reconnect. Continue?" Confirm. Asterobot forgets its sign-in and the account button reads Sign in again, with a red dot. If something goes wrong, Asteroboard shows Couldn't disconnect and nothing changes. Behind the scenes, Asterobot empties the website.token setting and turns on website.signedOut, both in config.toml. The second one is what keeps it signed out: Asterobot doesn't start a new sign-in by itself afterwards, not even when it restarts. Asterobot uses its sign-in to add bots and to download packages from the marketplace, so sign in again before you do either. If Asterobot starts while it's signed out, it also skips every saved bot, as Disconnect, delete and restart explains. Your bots stay saved and come back at the next start once Asterobot is signed in again. Sign back in Click Sign in on the account button. Asterobot asks asterobot.net for a new code, opens the link in a browser tab on the computer where it runs, and the account button opens the same link. Confirm the code as described in Sign in with asterobot.net. Switch to another asterobot.net account Disconnect Asterobot as described above. In your browser, make sure you're signed in to asterobot.net with the account you want Asterobot to use. Sign out of the website first if it's still on the other account. Click Sign in on the account button and confirm the new code. The code is confirmed for whichever account your browser is signed in with on asterobot.net at that moment. Check the name on the account button once it's done. Keep the sign-in private The sign-in Asterobot stores in website.token gives access to your asterobot.net account. Never share it, or the config.toml file that holds it. Getting help lists everything that must stay private. Where to go next The marketplace Getting help
-
Music
Dofus ships several hundred pieces of music. Asterobot doesn't download them with the game files, since no bot ever plays a sound, but the Music tab of a Game page fetches them for you and plays them in Asteroboard. Get the music Until there's something to play, the tab shows No music yet and tells you which step is missing. 1. Download When nothing is downloaded, the tab says "This version's audio banks aren't downloaded yet." Click Download. Asteroboard shows Download started, with "The audio banks download in the background." Wait for the download. A progress bar shows "Downloading..." with a percentage. Asterobot downloads the four sound banks that hold the music, about 900 MB. The game's other sound banks, mostly combat and interface sounds, stay out: the whole set is about 2 GB. This is an ordinary download of more files for the version. It waits in the same queue as the other downloads, and the version's row in Game Manager shows Downloading in the meantime (Download a game version). If it can't start, Asteroboard shows Couldn't start the download with the reason. 2. Extract Once the banks are downloaded, the tab says "The audio banks are downloaded but not extracted yet." and how many banks there are to extract. Click Extract the music. The button reads Extracting... while it runs. When it's done, the player and the track list appear. This extracts the music and nothing else: the version's game data isn't rebuilt, and its Extracted and Ready columns don't change. If it can't start, Asteroboard shows Couldn't start the extraction with the reason. Later on, Extract data or Re-extract data on the version extracts the music too, and Remove extracted data deletes it (Extract game data). When the tab can't read the version's music at all, it shows Couldn't load the music. Play Click a track in the list to play it. The player above the list has, from left to right: play and pause; stop; previous track and next track; loop, which repeats the current track while it's on; the title and album of the track playing, or "Nothing playing"; the volume. Under them, a bar shows the position in the track and its length. Drag it to move through the track. The play queue is the track list as it stands when you pick a track: filtered, sorted, and across every page. After the last track, next track starts again from the first one. Previous track restarts the current track when you're more than 3 seconds into it. Play, with nothing loaded yet, starts the first track of the list. The track list Control What it does Album list Shows All albums, or one album with its number of tracks in parentheses. Each album is one sound bank. Filter tracks... Keeps the tracks whose title, album or size contains what you type. Columns Hides or shows the Track, Album and Size columns. Column titles Sort the list by that column. A badge on the right counts the tracks shown, with their total size. The list shows 25 tracks per page, and says "No track matches this filter." when the filter leaves nothing. Keep listening while you browse The music keeps playing when you leave the tab. On every other page, a small player appears in the top bar, with play and pause, the track's title, which takes you back to the Music tab, and a button that stops the music. Stopping forgets the queue, and the small player goes away. Asteroboard remembers the volume and the loop setting in this browser, but not the queue: after reloading the page, pick a track again. The music plays in your browser from your Asterobot, so it stops when you close Asteroboard. Where to go next Game page Manage game versions
-
Game texts
Dofus keeps every text it shows, from item names to quest dialogue, in one text file per language, and the game data points to those texts by number. The Text tab of a Game page reads these files directly. It gives statistics on the file of a language, and it looks up one text exactly as a script's text() would find it. Choose a language The tab follows the Language selector in the Game page's header: Français, English, Deutsch, Español or Português. Changing the language reloads the statistics and clears the last lookup. Unlike Maps and Game data, this tab reads the downloaded text files rather than the extracted game data, so it works as soon as the files are there. A default download includes the text files of every language. Localization table statistics The Localization table statistics card describes the text file of the selected language: Line Meaning File size (bytes) The size of the file. Integer keys How many texts have a numeric ID, with the lowest and the highest ID in parentheses. Text keys How many texts have a text key, such as ui.common.classic. Unique strings How many different texts the file holds, with the number of empty ones in parentheses. Text bytes The total size of the texts. Longest text (bytes) The size of the longest text. Invalid UTF-8 and Unreadable Texts with a broken encoding, and entries that couldn't be read. These two lines only appear, in red, when one of them isn't zero. Refresh reads the file again. When the language's file isn't downloaded, the card says "No localization table installed for this language yet." Get it with Download needed files on the Information tab, or with Download more files (Manage game versions). Look up a text In the Text lookup card, choose Integer ID or Text key. Type the ID, such as the value of a name_id column found in Game data, or the text key. Click Look up, or press Enter. The text appears under the field, in the selected language, with its line breaks. "No entry for this id/key." means the file has no text with that ID or key. The lookup reads the same file as text() in a script (Lookups), which makes it a quick way to check what a script will get. Find what uses a text The text files only go from a number to a text. To find the records behind a name or a sentence, click Find what uses this at the bottom of the Text lookup card. It opens the Game data tab, where Search finds records by name, or any text with In game text (Game data).
-
SQL
The SQL tab runs your own queries on a game version's game data, for the questions the other tabs can't answer: a join between tables, a count, a sort. Queries are written in SQLite's dialect of SQL. The game data is opened read-only, so nothing you run can change or break it. Open it On the version's Game page, open Game data, then SQL. The editor already holds the first example query, ready to run. Run a query Type a query in the editor, or change the one that's there. Click Run, or press Ctrl+Enter (Cmd+Enter on a Mac). The editor colours the SQL and suggests completions as you type: the columns of the tables your query already names; every table name; common SQL keywords and functions; inside single quotes, the names of records in the Language chosen in the Game page's header: typing 'Bouf suggests Bouftou. Read the results Next to the buttons, the tab shows the number of rows, stopped at the limit when the query had more rows than the tab displays, and how long the query took, in milliseconds. The results table has one column per selected column, in the query's order, and two columns can share a name. Nested values show as JSON. Long values are cut: point at a cell to read it in full. A query that finds nothing shows "The query returned no rows." The tab displays up to 500 rows. To see further rows, narrow the query with WHERE, or page through it with LIMIT and OFFSET. Examples Examples opens a menu of example queries grouped by topic. Picking one replaces what's in the editor, and the notes about that topic appear under the editor: which tables hold what, and the traps to avoid. Topic What its queries cover explore What the game data holds: every table, its size, and which tables are derived names Finding records by name through the _names table monsters Monsters, how strong they are, and where they live items Items, what they do, and where they come from harvesting What grows where, and which skill gathers it navigation Coordinates, zaaps and the world travel graph crafting Recipes, ingredients and the jobs that make them maps Cells, walkability and what stands on the maps quests Quests, their steps, and dungeons text Every text the game can show, in five languages Several examples look for French names, with conditions such as n.language = 'fr'. Change fr to en, de, es or pt for another language. Writing your own queries _catalog lists every table, with its number of rows and whether it's derived: SELECT name, row_count, derived FROM _catalog ORDER BY row_count DESC; Names go through _names, with the columns record_table, record_id, name_id, name, language and ordinal. A record can have several names, and ordinal 0 is its main one. The texts of one language are in the table text_ followed by the language code, such as text_fr, with an id and a text column. In a derived table, whose name contains two underscores, each row points to its parent row with _parent_id. Put text between single quotes, as in 'monsters'. Double quotes only name a table or a column. To search names or texts, the full-text indexes _names_fts and text_fr_fts (one per language) are much faster than LIKE '%...%'. The names and text examples show how to use them. The Tables tab of Game data shows every table's columns and their types, which helps while you write. Read-only and limits INSERT, UPDATE, DELETE, CREATE and every other statement that writes fail, and ATTACH is refused too, so a query can't reach any other database file. When the editor holds several statements separated by semicolons, all of them run, and the tab shows the result of the last one. Limit Value Past it Rows displayed 500 The other rows are left out, and stopped at the limit appears. Time 10 seconds per query The query is interrupted and fails. Length of the query 64 KiB The query fails with a text such as datacenter: query is 70000 bytes, over the 65536 byte limit. Size of one value the query builds 16 MiB The query fails. Queries at once 4 on one game version, shared by every open SQL tab and every bot's scripts Other queries wait for their turn. When a query fails A red alert shows the reason as SQLite gives it: a text starting with datacenter: that names the problem, such as no such column: nmae for a mistyped column name. When Asterobot gave no reason, the alert says The query failed. Fix the query and run it again. Use a query in a script A script runs the same kind of query with query() from asterobot:gamedata, on the game data of its bot's game version. The SQL tab is the quickest place to get a query right before putting it in a script: SQL queries explains the rest, including parameters.
-
Game data
The Game data tab of a Game page is a browser for everything Asterobot extracted from a game version: items, monsters, spells, maps, quests, texts and much more. You don't need SQL for it, and it's the easiest place to find a table or a column name before using it in a script or in the SQL tab. Open it Open the version's Game page from Game Manager, then its Game data tab. It has three tabs of its own: Search, Tables and SQL. Above them, badges sum up the game data: the number of tables that mirror the game's files (table(s)), the number of tables Asterobot derived from them (derived), the total number of rows, and the codes of the languages it holds texts for, such as de · en · es · fr · pt. When the version has no extracted game data, the tab shows No extracted data for this version and "Extract this game version's data to browse it here." See Extract game data. The tab you're on, the table and the record you open are all in the page's address, so you can bookmark them or reopen them from your browser's history. Raw and derived tables Most tables mirror the game's own data, one table per kind of record. Others are derived by Asterobot to answer questions the game's files can't answer directly, such as every name in every language, or which maps hold which interactive elements. A derived table's name contains two underscores, like maps__interactive_elements, and each of its rows points to its parent row with _parent_id. The _names table links every name to its record, in every extracted language. Search Search finds records by what they're called, which the game's own files can't do: they map a number to a text, and nothing goes the other way. On the Search tab, type in Query, for example Bouftou Royal. Choose the Search mode: By name, the default, or In game text. With By name, you can narrow the search with Table, or leave it on Any table. Results appear as you type, up to 100 of them. Mode What it searches Results By name The names of records, in the tables that have names. Each word matches as the start of a word, and the best matches come first. The table, the name and the record's number after #. Click a result to open the record. In game text Every text the game can show, not only names. The text's number after #, and the text. These results don't open anything. The Table list only offers tables whose records have names. Names and texts are searched in the Language chosen in the Game page's header. When the game data has no text in that language, a warning under the field names the language it used instead. Nothing found means there was no match, and The search failed means Asterobot couldn't run the search. Tables The Tables tab lists every table on the left, with its number of rows. Derived tables are greyed. Filter tables... keeps the tables whose name contains what you type. Show derived, on by default, hides the derived tables when you turn it off. Click a table to browse it. Until you do, the right side says "Pick a table to browse it." Browse a table Above the rows, you see the table's name, a Derived badge on derived tables, and a line starting with "Derived from" that names the part of the game data the table comes from, followed by the kind of record when the table has one. The number of rows is on the right. Rows come 25 per page, with page buttons under the table when there are more. Each column shows its name and its type, such as INTEGER for whole numbers. When the table's records have names, a first Name column shows each row's name in the page's language. Long values are cut: point at a cell to read it in full. Filter the rows Under each column's name, a column = value field keeps only the rows where that column holds exactly the value you type. Filters on several columns add up, and the table goes back to its first page. The value is read the way the column stores it, so letters in a column of whole numbers give an error such as column "level" is an integer, but "abc" is not. On tables whose records have names, Find by name... lists the rows whose name matches what you type, up to 25, best first. The count then reads "matching rows" and the page buttons go away. Empty the field to see the whole table again. When no row matches, the table says "This table is empty." When the rows can't be loaded, a red alert shows the reason, or Couldn't load the rows. Open a record Click a row to open its record. Rows of some derived tables can't be opened, because they have no _id of their own. The record view A record shows each column that holds a value, one per line, with the column's type. Columns without a value are left out. The top line has a button with the table's name, which takes you back to the rows, the record's number after #, and its name when it has one. Links. When a column points at records of another table, and Asterobot checked during extraction that it really does, its values are buttons showing the name of the record they point at. Pointing at one shows "Open" followed by the table and the record's number, and clicking it opens that record. A value that leads to no existing record stays a plain number, and so do the values of a very long list past its first 500. Nested values, such as a list of effects or the cells of a map, unfold one level at a time. not in the catalog marks a field the table's description doesn't list. It shouldn't happen, and it's shown rather than hidden. When a record can't be displayed, the view shows "isn't a valid record id." after an address that isn't a number, the reason Asterobot gave, such as datacenter: no such record, or Couldn't load the record. Other ways in On the Maps tab, each search result of the world map and each monster or item of the region panel links to its record. See World map. On the Text tab, Find what uses this opens this tab. See Game texts. For script authors The table and column names shown here are the ones scripts use with record(), table(), find() and query(). Lookups and SQL queries explain how. The package editor also has this browser beside your code, under Datacenter in its Game panel (The editor).
-
Map viewer
The map viewer draws one map from a game version's extracted game data: the same cells a bot walks on. It shows what each cell allows, where the exits are and where they lead, and it lets you walk from map to map. It's the Map view of the Maps tab on a Game page, and the world map opens it too (World map). Open a map On the Maps tab of the Game page, click Map at the top. In Map ID, type a map ID, such as 39845888, or in-game coordinates, such as 4,-19. Coordinates can also be written 4 -19 or 4;-19. Click Show, or press Enter. Until you open a map, the frame says "Enter a map ID to display it." Show stays greyed out while the field holds neither an ID nor coordinates. Several maps often share the same coordinates, such as an outdoor map and the buildings that open off it. The viewer opens the first one and lists the others (Other maps at the same coordinates). When no map has the coordinates you typed, it says "No map at" followed by them, such as "No map at [4,-19]." What the map allows and where it leads Once a map is open, a bar above the Map ID field sums it up. What stands out Badges show which of these the map has: PvP aggression, Monster fights, Underwater, Monster aggression, Outdoor, Prisms, Transition map and Public paddock. The other things a map can allow are set on nearly every map, so they aren't listed. Exits Exits come from the world travel graph, the one the game uses to plan trips from map to map. The bar reads Exits, followed by one badge per kind of exit with its count: Walk, Scroll, Door, Interactive or Other. Other badges can follow: a number followed by conditional, when some exits have a condition; a number followed by zones, when the map's walkable ground is split into parts you can't walk between, each exit leaving from one of them; Not all exits shown, when the list was cut short. Under the badges, each exit has a button with its destination map ID, the destination's coordinates in parentheses when it has some, and how you take the exit: the name of the action, in the game's language, or the kind of exit. Click a button to open that map. A conditional exit has an outlined button: point at it to read "Requires:" and the condition, written the way the game writes it. Instead of the exits, the bar can say "This map isn't in the travel graph." or "In the graph, but nothing leads out." The map's place in the world Under the controls, a row tells where the map is, when the game data knows it: its coordinates, such as [4,-19], or No world position when the map isn't on any world map; the names of its sub-area and its area, and the map's own name when it has one; Level and the sub-area's level; Zaap when the map has a zaap, the dungeon's name when the map belongs to a dungeon, and the points of interest on the map. Maps without any world information, such as haven bags and some instances, don't show this row. Other maps at the same coordinates When other maps share the open map's coordinates, a line such as "3 other maps at these coordinates:" lists their IDs as buttons, up to 12, followed by the number of maps left out, such as "and 40 more". Click an ID to open that map. A very large number usually means instances share these coordinates rather than a real place. Quest objectives When quests have objectives on the map, a switch appears with their number, such as "4 quest objective(s) here". It's off at first. Turn it on to list each quest step: the quest's name, the step's name, and the objectives under them. Past 500 objectives, the count ends with a plus sign, as in "500+ quest objectives here", and the list stops there. Interactive exits Interactive exits lists the exits that leave from a cell inside the map rather than from an edge, such as doors, stairs, cellars and teleporters, one entry per cell, up to 12. Each entry has two buttons: the first, named after the action, selects that cell on the map so you can see where it is; the second opens the destination and shows its coordinates or its map ID. When the cell leads to several maps, it shows how many, such as "3 destination(s)", and opens the first. These cells are also marked on the map with an orange diamond. The map On the map itself: At the top left, the map's ID, such as "Map 39845888", then the number of the cell under the pointer or selected, such as "Cell 245". At the top right, Save as PNG and Fullscreen (Save a picture and go fullscreen). On each side where a map exists next to this one, an arrow. A solid arrow means the game has a route that way, and its tooltip reads "Go to map" with the ID. An outlined arrow means the map exists but no route leads there from this one, and its tooltip says so, as in "Map 39846400 exists, but nothing leads there from here". Click an arrow to open that map either way. The arrow keys of your keyboard do the same, except while you're typing in a field. Point at a cell to inspect it, and click it to keep it selected after the pointer leaves. When you move to another map, the previous one stays on screen until the new one is loaded, with a small spinner in the bottom right corner. Views View decides what the cell colours mean. Your choice applies to every map and is remembered in this browser. View What the colours show Legend entries Terrain (at first) Where you can walk outside fights Walkable, Harvest, Haven bag, Blocked outside fight, Obstacle Fight Placement and movement during fights Red team, Blue team, Blocked in fight, Walkable, Obstacle Line of sight Which cells block sight Blocks sight, Walkable, Obstacle Zones Which zone each cell belongs to Zone with its number, for up to 6 zones, and Movement zone Height How high each cell is Height with the lowest and the highest value of the map Exits Cells that take you to another map Exit, Arrow cell The legend only lists what the open map contains. With the Interactive layer on, it also shows Interactive when the map has interactive elements. Layers Layers turns each part of the drawing on or off. All of them are on at first, and your choices are remembered in this browser. Layer What it draws Cells The coloured cells. Grid The grid of cells. Elevation A lighter or darker shade on each cell, depending on its height compared with the rest of the map. Outline A line around the walkable area of the map. Shadow A shadow under the walkable area, which lifts it off the background. Interactive A dot on each cell where an interactive element stands. Markers Marks placed on cells, such as the orange diamonds of interactive exits. Cell numbers The number of the cell under the pointer and of its four neighbours. Legend The colour legend of the view. Tooltip A box next to the pointer with the cell's number and what's set on it. Summary and cell details Under the map, Summary counts the map's cells by kind: Walkable cells, Blocked in fight, Block line of sight, Placement (red / blue), Harvest cells, Exit cells, Linked zones and Interactive elements. Next to it, Cell details shows the record of the inspected cell as it was extracted from the game. It reads "Point at a cell to see its extracted record." until you point at one. Then you see the cell's number, its position in the map's grid as x and y, and the flags and numbers set on it, with the names the game data uses, such as mov or los. When interactive elements stand on the cell, "Interactions:" lists each one's interaction ID, with its graphic ID in parentheses. The map data holds no name for them. Save a picture and go fullscreen Save as PNG, the camera button at the top right of the map, downloads the map as it's drawn, with the current view and layers, in a file named map- followed by the map ID, such as map-39845888.png. The legend, the tooltip, the cell numbers and the badges shown over the map aren't part of the picture. Fullscreen fills the screen with the map. Click Exit fullscreen, or press Esc, to come back. When a map doesn't show Message Meaning "Loading map..." The map is on its way. "No such map in this version's extracted data. Check the ID, or extract this version's data first." No map has this ID in the version's game data, or the version isn't extracted. "Couldn't read this map from the server." Asterobot couldn't send the map. Check that Asteroboard is connected to Asterobot, then click Show again. Where to go next World map Game data
-
World map
The Maps tab of a Game page draws Dofus's world maps from the game version's extracted game data, with regions, zaaps, dungeons and points of interest on top. It's where you look up where a monster lives or where a resource grows, before opening the maps of that region. The version must be extracted first (Extract game data). Open the world map Open the version's Game page from Game Manager. Open the Maps tab. The tab opens on the World view. Three buttons at the top switch views: View What it shows World The world map, with the region panel under it. Map One map, in the map viewer. Split Both side by side. The world map gets less room and the region panel is hidden. In Split, drag the line between the two sides to share the room: Asteroboard remembers the position in this browser. The Follow the map switch keeps the world map centred on the map open beside it. On a narrow screen, the two sides stack. Move around Drag the map to move it, and turn the mouse wheel to zoom. The buttons at the top right zoom out, zoom in, go back to the whole map, and switch to fullscreen. The top left corner shows the coordinates under the pointer, with the name of the region or point of interest there. When the pointer is off the map, it reads "Click a square to open the maps there." Click a square to select it. The line under the map then lists the IDs of the maps at those coordinates, up to 50, as buttons: click one to open that map. The line reads "Looking up..." while it searches, and "No map at these coordinates." when there's none. Double-click a square to open the first map there right away. Choose a world map The list at the top left holds the world maps shown in the game, and starts on world map 1, the World of Twelve. A world map with no name shows as "World map" followed by its number. When you open a map in the Map view, the world map switches to the one that map belongs to. If the chosen world map shows "This world map has no artwork extracted.", extract the version again. When the world maps can't be read at all, for example on a version that isn't extracted, the tab shows Couldn't load the world map with the reason. Switches Switch At first What it draws Outlines On The borders of the regions. Points of interest On The icons the game places on its map. Under the map, one button per category, with its count, hides or shows that category. Grid Off The squares of the coordinates. Zaaps Off Every zaap, with its name. Dungeons Off Every dungeon, with its name. Level heat map Off The regions, coloured by level. The number of connections, such as 4 connection(s) Off Where the routes of the map open in the Map view lead: blue squares for the ones you walk, orange diamonds for doors, stairs and other routes you take through something on the map. Only offered while an open map has such routes. With Level heat map on, a legend under the map reads "Low level to high level" with five bands: 1-20, 21-50, 51-100, 101-150 and 151+. Regions without an outline or without a level stay uncoloured, and the legend says how many. The switches go back to these defaults when you reload the page. Search The search box, "Search for a monster, resource, item...", understands three kinds of input: Coordinates, such as 4,-19, 4;-19 or 4 -19. A map ID. A number is offered as a map ID, and searched as a name too. A name: of a region, a dungeon, a point of interest, a monster or an item, in the Language chosen in the Game page's header. Each word matches the start of a word. Results appear as buttons while you type, up to 6 for each kind of record. Each shows the name, the level range for a monster, the table the record comes from and its number after #. Names aren't unique, and the number tells records with the same name apart. The small button next to a result, "Open in game data", opens its record on the Game data tab. Clicking a result What happens Coordinates The world map centres on that square and selects it. Map ID The map opens in the Map view. Region The world map centres on the region. When the region isn't drawn on this world map, its first map opens instead. Dungeon Its entrance map opens. Point of interest The map it stands on opens. Monster or item The world map highlights the regions where it appears. Filter by monster or item Picking a monster highlights the regions where it lives. Picking an item highlights the regions where it's gathered, and the regions where monsters that drop it live. A button then appears above the map, with the name and the number of regions highlighted on this world map, such as "Bouftou Royal · 3 region(s)". Click it to remove the filter. When the record appears nowhere, the button reads the name followed by "appears on no region here". Some regions can't be highlighted, because they're on another world map or have no outline. They're listed after "Also in:", and clicking one shows it in the region panel. The game data records monsters and resources per region, not per map or per cell, so the filter can't show the exact spot where a resource grows. The region panel In the World view, the region panel under the map describes the region of the selected square, or the region you picked after "Also in:". The region's name, and badges: Level, the number of maps, and Dungeon, Capturable or Conquest village when they apply. Zaap, when the region has one, opens the zaap's map. That zaap can stand outside the region it serves. A button such as Open the 12 map(s) opens the region's first map. Monsters, with their count: each monster with its level range and its number. A monster in a warning colour is aggressive from further than 3 cells. Pointing at a monster shows "Aggressive within" with its range in cells, or Passive. Harvestables, with their count: each resource with its level and its number. Pointing at one shows "Gathered with" and the job. The note "Gathered on the maps of this area." is a reminder that the game data doesn't say which map. Drops, with their count: the items the region's monsters drop. Every monster, resource and item in the panel links to its record on the Game data tab. The panel shows "Loading the area..." while it loads, and Couldn't load this area with the reason when it fails. Open a map Each of these opens a map in the Map view, or beside the world map in Split: double-click a square; select a square, then click one of the map IDs under the world map; click Zaap or the button that opens the region's maps in the region panel; in the search, click a map ID, a region, a dungeon or a point of interest. In the Map view, a button such as "Show at [4, -19] on the world map" goes back to the world map, centred on the open map. It's hidden while Follow the map is on. Map viewer explains everything the Map view shows. Where to go next Map viewer Find a resource on the world map
-
Game page
Every downloaded Dofus version has a page of its own in Asteroboard. From there you explore what Asterobot downloaded and extracted for it: the world map and each map, the game data, the game texts and the music. None of it needs a bot. The first tab, Information, also gathers every action on the version in one place. Open it Open Game Manager. On the version's row, click the game's name or Inspect. Both only appear on Dofus versions for Windows whose Status is Installed. Versions of other games or platforms have no Game page. The page's address names the version and the tab you're on, so you can bookmark a tab or keep its link. When a link names a version your Asterobot doesn't have, the page offers to download it (see A version that isn't installed). The header and the tabs The header shows the game's icon and name, and the version number. On the Text, Maps and Game data tabs, a Language selector on the right sets the language of game texts and names: Français, English, Deutsch, Español or Português. It starts on the language Asteroboard is in. Your choice is remembered in this browser, for every Game page. Tab What it's for Information The version's statuses and every action on it, described below. Text Statistics on the game's text file of a language, and the lookup of one text. See Game texts. Maps The world map and the map viewer. See World map and Map viewer. Game data Search, browse and query the game data. See Game data and SQL. Music Download, extract and play the game's music. See Music. Maps and Game data read the extracted game data, so they have nothing to show until the version is extracted (Extract game data). Text reads the downloaded text files directly. If a tab runs into an error while it's displayed, it's replaced by Couldn't load this panel with the error's text. Switch to another tab and back, or reload the page. The Information tab Statuses The first row repeats what Game Manager shows for the version, with two buttons: The download Status, such as Installed, with a progress bar while downloading or verifying, and an info icon with the reason when it's Failed. Ready for bot or Not ready, followed by Check if ready for bot, which checks again on disk. Compatible or Different version, only for the environment dofus3, followed by Check for latest version, which asks Ankama's download servers whether a newer version is out. Required files This card tells whether the files a bot needs are on disk, for every language at once: Badge Meaning Present Every file a bot needs is downloaded. Missing At least one is missing, and Download needed files appears next to the badge. Unknown Asteroboard couldn't ask Asterobot. Download needed files downloads only the missing files, in the same queue as other downloads, and Asteroboard shows Download queued. It doesn't start an extraction: once the download is done, extract the version if it isn't Extracted yet. At the bottom of the card, Verify files, Download more files (Retry on a failed version) and Uninstall work as in the version's menu in Game Manager (Manage game versions). Point at a button to read what it does. Extracted data This card shows the extraction status, with a progress bar while it runs, and two buttons: Extract data, which reads Re-extract data once the version is extracted, and Remove extracted data. Extract game data explains both. Delete Delete, at the bottom of the tab, removes the version's files, its extracted game data and its row, once you confirm. Manage game versions compares it with Uninstall. A version that isn't installed When the page's version isn't in Game Manager, for example after you deleted it, the tabs make way for a card saying the version isn't installed, such as Dofus 3.6.11.13 isn't installed. Download this version downloads the files a bot needs for that version and extracts them once the download finishes, as long as Asteroboard stays open. The version then appears in Game Manager and the tabs come back. If the download can't be queued, Asteroboard shows Couldn't queue the download. Where to go next World map Game data Find a resource on the world map
-
Map
The Map tab of a bot page is meant to show where the bot is in the game. Note Coming soon. The Map tab will show the map your bot is on and the cell it stands on. Asterobot doesn't report a bot's position yet, so for now the tab always says "This bot hasn't reported a map yet." What the tab shows today A badge with the bot's name, and an empty map area with the message "This bot hasn't reported a map yet." It looks the same whatever the bot is doing, connected or not, and there's nothing to click. Look at maps in the meantime Every map of the game is on the Game page of the bot's game version: In the sidebar, open Game Manager. Open the game version the bot uses: its name, or its Inspect button. Click the Maps tab. There you can browse the world map, search for a monster, a resource or a zaap, and open any map by its id or its coordinates to see its cells, exits and interactive elements. See World map and Map viewer. Where to go next Game page Bot page
-
Send messages by hand
The Send a game message panel of the Network tool builds one message from its fields and sends it on the bot's game connection, the same way a script's send() does. Use it to test: see how the server answers a request, or try a message before a script sends it. Before you send Caution A message sent to the server comes from your character, exactly as if your Dofus client had sent it, and the server acts on it. A wrong message can move your character, spend kamas or destroy items, and there's no undo. The bot must be Connected to game server. Only messages Asterobot can name can be sent. Send a message On the bot's page, click Tools, then Send a game message in the Network tool. Under Direction, keep To the server or choose To the client. See the table below. Pick the message from the list, "Pick a request to send..." or "Pick an event to inject...". Type to search in it. Fill in the fields you need, and leave the others empty. Check the JSON under "This is what will be sent." Click Send followed by the message's name. A notification with the message's name followed by "sent" confirms it went out. The panel shows no answer: to see how the server reacts, tick the messages you expect in Settings and watch Traffic. See Network traffic. Direction Direction Messages offered What happens To the server Requests, whose names end in Request "Goes to Ankama as a request, exactly as the real client would have sent it." To the client Events, whose names end in Event The message is delivered as if the server had sent it. On a MITM bot, your Dofus client receives it and acts on it. On a Full socket bot there's no client: only the bot's own script receives it. Changing the direction empties the message you picked, since the two lists have no message in common. Responses can't be sent at all: a response answers one precise request. Fields When you pick a message, its fields appear, each labelled with its name and, under it, its type, such as int32, string · optional or message · repeated followed by the type of message it holds. Field type Field in the panel What to enter bool A checkbox Tick it for true. A list of named values A dropdown One of the names. int32, uint32, sint32, fixed32, sfixed32, float, double A number box A number. int64 and the other 64-bit numbers A text box A whole number. It's kept as text so that large ids aren't rounded. string, bytes and other single values A text box The value. Lists, and fields that hold another message A JSON box, starting with [] or {} JSON. An empty field is left out of the message, and so is an unticked checkbox: the game then uses the field's default value. A message without fields says "This message has no fields to fill in." When a value can't be used, the preview is replaced by the reason in red, and the send button stays greyed out: Reason, for example What to fix mapId: abc is not a number Type a number in that field. characterId: 12.5 is not a whole number Type a whole number in that 64-bit field. The field's name followed by a JSON error from your browser Fix the JSON in that field. The Dofus protocol reference describes each message and its fields. Script authors can also read Finding messages and Sending. When sending fails The alert Couldn't send the message appears above the form with the reason: Reason What it means bot has no game connection: "<bot>" The bot isn't connected to a game. Connect it and try again. Starts with message could not be built from the given payload: A value doesn't fit the message: a wrong type, an unknown value in a list, JSON of the wrong shape. The rest of the text says which. Starts with unknown game protocol message names: Asterobot doesn't know this message, for example after a game update. Starts with send, the message's name, and to server: or to client: The message couldn't be written on the connection, often because the connection closed a moment before. Starts with the game engine is not available: Asterobot couldn't load its list of game messages. The chat box of the Console tab and Destroy on the Inventory tab send their messages the same way, and fail with the same reasons. Where to go next Network traffic Map
-
Network traffic
The Network tool shows the messages going between a bot and the game: what the server sends, and what the bot or your Dofus client sends back. Open it from the bot's Tools tab. It has three panels: Traffic lists the messages, Settings chooses which ones, and Send a game message sends one by hand, which Send messages by hand covers. Why Traffic starts empty A bot exchanges a lot of messages. Asterobot sends none of them to Asteroboard until you choose which ones you want, so on a new bot Traffic says "No message mirrored yet. Pick some in Settings." What you choose only changes what Asteroboard shows. The bot's script receives every message either way, and the game plays the same. Live chat on the Console tab and Live inventory on the Inventory tab are shortcuts: they tick messages in the same list. Choose the messages The Settings panel holds every message Asterobot can name, with a box to tick for each. Caution On a MITM bot, where the bot relays the game session of your Dofus client (man-in-the-middle), ticking IdentificationRequest shows the first message your client sends. It contains the ticket that opens your game session. Never share a screenshot or a copy of that message. On the bot's page, click Tools, then Settings in the Network tool. Type part of a message name in Filter messages... to narrow the list. Tick the messages you want. The Select the button, which shows how many messages the filter lets through (such as Select the 12 shown), ticks all of them, and Deselect the shown unticks them. Click Apply. The button shows how many messages are ticked, such as Apply (3). A notification confirms how many message types the bot now mirrors, and the line next to the button shows how many are selected out of how many exist. Apply stays greyed out while nothing has changed, and Revert, which appears as soon as you change something, puts the list back as it was last applied. The selection belongs to the bot. It's saved with it, stays after Asterobot restarts, and is the same in every browser that opens this bot. After a game update, messages that Asterobot no longer knows by name are removed from the selection the next time Asterobot starts. When the list can't be loaded, or Apply fails, the alert Couldn't load the message catalog appears with the reason, such as unknown game protocol message names: [...] for names Asterobot doesn't know. Also mirror unrecovered messages Some messages have no name Asterobot knows yet, so they can't be ticked one by one. The Also mirror unrecovered messages switch covers all of them at once: "They arrive under their obfuscated name, decoded from the schema when it describes them." Apply it like the list. Expect many of them. Dropped messages When messages come faster than Asterobot can pass them on to Asteroboard, it skips some rather than slow the bot down. A badge next to Apply then shows how many, such as "12 message(s) dropped - the stream couldn't keep up". The count covers this bot since Asterobot started, and nothing is lost for the bot or its script. If it keeps growing, tick fewer messages. Watch the messages Open Traffic. The messages you chose appear as they pass, the oldest at the top. Each row shows, from left to right: Part Meaning Colored bar and icon The kind of message: green for an event the server announces, red for a request, blue for a response to a request, grey when the kind is unknown. Time When the bot's connection saw the message, in UTC, down to the millisecond. Name The message's name. A message without a known name shows its obfuscated name in italics. Schema or Raw Only for messages without a known name. Schema: its fields could still be read, under obfuscated names. Raw: nothing could be read but its bytes. In or Out In comes from the game server. Out goes to it, from the bot or from your Dofus client. # and a number The message's sequence number on this connection. uid and a number Shown for requests and responses, to match an answer with its request. Decode error Asterobot couldn't fully read the message. Under that, a one-line preview of the message's content. Click a row, or the arrow at its start, to open it: you get all its fields as JSON, the decode error if there's one, and for a message nothing could read, its raw bytes. Fields with a default value are shown too, and large numbers appear as text in quotes. The Dofus protocol reference explains what the fields mean. Named requests and events also have a paper plane button, Send this message again. It's meant to copy the message into Send a game message, but in this version that panel opens without it: open Send a game message, choose the same message and copy its fields from here. Follow, pause and clear While you're at the bottom, the list scrolls with each new message. Scroll up and it stops; the Follow button takes you back to the newest message. Pause freezes the list for this bot. Messages that arrive while it's on are not kept, even though the notice says "Paused - new messages are still recorded.": they don't show up when you turn it off. Chat lines on the Console tab stop too. Clear empties the list for this bot, including the chat lines on the Console tab. What's kept Asteroboard collects the messages as soon as it opens, whichever page you're on, and keeps about the last 2,000 per bot. They're lost when you reload or close Asteroboard: Asterobot keeps no history of them. On a MITM bot, the relay of your game can also skip messages when it can't pass them on fast enough. Your game isn't affected, but a badge above the list then says how many messages the bot's session discarded and that the list is incomplete. Search The box "Search, or filter with name:Ping direction:inbound" filters the list as you type. The count next to it shows how many messages match out of how many. Separate words with spaces: a message must match all of them. Case doesn't matter, and part of a word is enough. field:value looks in one field only: name, wirename, kind, direction, bot, uid, sequence, error or payload. The kinds are event, request, response and unspecified, the directions inbound and outbound. A - in front of a word or a field:value excludes what matches it. A number alone finds it in any field, such as a character's id, without knowing which field holds it. Search Shows Chat Every message with "chat" anywhere in it. name:ChatChannelMessageEvent Only that message. kind:request The requests. direction:inbound -kind:event What the server sent, except events. When nothing matches, the list says "No message matches this search." To go further with messages, script authors can read Finding messages and Traffic. Where to go next Send messages by hand The tutorial See what your game sends
-
Inventory
The Inventory tab shows what the bot's character carries: its items, its kamas and its pods, kept up to date while the bot plays. It works the same for a Full socket bot and for a MITM bot following the game you play. Turn on live inventory Nothing reaches the tab until you ask for it. On the bot's page, click Inventory. The tab says "Inventory not followed". Click Turn on live inventory, or turn on the Live inventory switch at the top right. The switch ticks five messages in the Network tool's Settings: InventoryContentEvent, ObjectsQuantityEvent, ObjectQuantityEvent, KamasUpdateEvent and InventoryWeightEvent. It only shows as on while all five are ticked, and turning it on ticks any that are missing. The choice is saved with the bot and stays after a restart. If the change fails, Couldn't turn live inventory on or off appears with the reason. Like every message selection, it only changes what Asteroboard shows. A script receives these messages either way. Why it waits After you turn it on, the tab can say "Waiting for the inventory". The game sends the full inventory only once, when the character enters the game, and Asterobot keeps no copy of it. The tab fills in the next time the character enters the game: on a MITM bot, go back to character selection in Dofus and choose your character again; on a Full socket bot, reconnect it. To avoid waiting next time, leave Live inventory on. The summary The line at the top of the tab shows: The kamas the character carries. A pods bar with the weight and the maximum, such as 1,250 / 3,000 pods. The bar turns orange from 90% of the maximum, and red with an Overloaded badge once the character carries more than it can. Last known inventory, bot not connected when the bot isn't Connected to game server: what you see is the last inventory received, not a live one. "Updated" followed by the time of the last change. Hover it to see when the full inventory was received. What stays live, and what doesn't Quantities, kamas and pods change as you play. New stacks don't: an item you loot, buy or craft that you didn't have before only appears the next time the game sends the full inventory, when the character enters the game again. A stack that leaves the inventory completely can also stay listed until then. Asteroboard keeps the last inventory of each bot while it's open. Reloading or closing Asteroboard empties the tab until the character enters the game again. When you delete a bot, its inventory goes with it. Categories Under the summary, a strip of categories filters the table: All, then Equipment, Consumables, Resources, Quest items, Cosmetic Items and Miscellaneous. Each shows how many stacks it holds, and only categories with something in them appear. An item the game data doesn't know has no category and only shows under All. The item table Column What it shows Item The item's picture and name, a star for items marked favourite, and an Equipped badge for items the character wears. Type The item's type. On a narrow screen it moves under the name. Level The item's level. Quantity How many the stack holds. Weight The pods of the whole stack. Hidden on a narrow screen. Click a column heading to sort by it. The Columns menu hides or shows Type, Level, Quantity and Weight. The table shows 25 stacks per page. The search box, "Search names, types, effects...", looks for your text in the item's name, type, description and effects, and in its ids. While you search, it shows how many stacks match out of how many. With no match it says "No item matches the search.", and an empty category says "Nothing in this category." Item details Rows with a description or effects have an arrow at their start. Click it to open the row: The item's description. The effects of this very stack, with the values the game rolled for it, in green for bonuses and in red for penalties. An effect Asteroboard can't put into words is shown in its raw form, in grey. The stack's uid, the item's id (item) and its position, with Open in game data, which opens the item's record on the Game page. Right-clicking a row opens a menu with Show details or Hide details, Copy UID, Copy item ID, Open in game data when the game data knows the item, and Destroy. Names and pictures Names, types, descriptions and effects come from the game data of the bot's game version. Their language is the one chosen on the Game page's Language selector, or Asteroboard's own language when you never chose one there. See Game page. An item the game data doesn't know shows as Item # followed by its id, in grey. When the game data can't be read at all, for example because the version isn't extracted, Item names unavailable appears with the reason, and the stacks are still listed by id. A game version extracted before item pictures were part of the extraction shows a box instead of each picture. Destroy an item Warning Destroying sends the game's own delete request, as your character. The game destroys the items for good, and nothing can bring them back. Right-click the item's row and choose Destroy. It's greyed out with "Needs a connected bot" while the bot isn't connected, and with "Destroy sent" when you already sent a destroy for that stack. The dialog Destroy followed by the item's name opens: "The game destroys it for good. This can't be undone." For a stack of more than one, choose the Quantity. It starts at the whole stack, and can't go above what the stack holds. Click Destroy. A notification such as Destroy sent: 3 × Wheat confirms the request left. The row stays in the table, dimmed, with a Destroy sent badge, or Destroy sent ×3 when you destroyed part of the stack. The request leaving doesn't mean the game accepted it. When only part of a stack was destroyed, the quantity update from the game settles it. A whole stack stays marked until the game sends the full inventory again. If the request can't be sent, Couldn't send the destroy request appears in the dialog with the reason. When the bot isn't connected, the dialog says "This bot isn't connected to the game, so nothing can be destroyed right now." Where to go next Network traffic The tutorial Inventory watcher builds a script on the same messages.
-
Information
The Information tab shows what the bot's game session says about the Ankama account and about the server it's on. It fills in once the bot has signed in: after Connect for a Full socket bot, or once your Dofus client has joined a MITM bot. Before that, the tab only has a short text pointing you to the Connect button in the header. Disconnect empties it again. When a later connection attempt fails, the tab keeps showing the last session until the next successful connection or Disconnect. Login session The Login session card lists the account as Ankama reports it: Row What it shows Account ID The Ankama account's number. Nickname The account's nickname. Tag The tag that goes with the nickname. Subscription ends When the account's Dofus subscription ends, exactly as Ankama sends it: a date and time in the ISO 8601 format. Under the rows, badges show the rights Ankama gives the account, when it gives any: Badge Meaning Show account override A right Ankama sets on the account, shown as received. Show console A right Ankama sets on the account, shown as received. Unlimited access The account can join a server even when that server is in maintenance or not open to it. Infinite subscription The account's subscription doesn't end. Subscription ends means nothing then. Current server Under Current server, a tile shows the server the bot's session is on: its picture, its name and number, its status (Online or Maintenance) as it was when the bot signed in, its server type, Mono-account for a mono-account server, and how many characters the account has there. The information icon next to the name shows the server's description. Server names, pictures and descriptions come from the game data of the bot's game version, in the bot's language. When that game data can't be read, the tile shows the server's number, such as #312, instead of its name. When a bot waits for you to choose a server, the choice isn't made here: the Pick a server card appears in the header, on every tab. See Bot page. Where to go next Inventory Full socket mode
-
Console
The Console tab is where you follow a bot minute by minute. It puts three sources in one timeline, ordered by time: what Asterobot does with the bot, what the bot's script writes, and the game chat. Your first bot turns on the chat for the first time; this page covers the rest. What the console shows Source Lines Asterobot What Asterobot does with the bot: connecting, changes of state, errors. For example Relaying a game session when a MITM bot picks up your game. Script What the bot's script writes with botDebug(), botInfo(), botWarn() and botError(). Chat The game chat the bot receives, while Live chat is on. Every line starts with the time of day, in your browser's time zone. Asterobot and script lines then show their level, DEBUG, INFO, WARN or ERROR, and their text. Chat lines show the speaker's character name, then what they said. A script can also write with asterobot:console. Those lines don't appear here: they go to Server > Console, without saying which bot wrote them. See Status and console, and, for script authors, Logging and debugging. What's kept Asterobot keeps the last 200 Asterobot and script lines of each bot. When you open the tab, the console starts with those lines, then new ones arrive as they happen. Asterobot keeps them in memory only, so they're gone after it restarts. Asteroboard shows up to 500 lines per bot while it stays open. Chat is different: Asterobot keeps none of it. Asteroboard collects chat lines while it's open, as long as Live chat is on, and loses them when you reload or close it. They also come from the same place as the messages of the Network tool's Traffic panel, which has three consequences: While Pause is on in Traffic, chat lines stop arriving in the console too. Clear in Traffic also removes the chat lines from the console. Once that panel holds about 2,000 messages for the bot, the oldest ones go, and their chat lines with them. See Network traffic. Live chat The Live chat switch, at the top right, turns the game chat on for this bot. It's the same setting as the ChatChannelMessageEvent message in the Network tool's Settings: turning one on turns the other on. The choice is saved with the bot, so it stays as you left it after a restart, and everyone who opens this bot sees the same. Only chat that arrives while the switch is on shows up: messages from before don't appear afterwards. The switch only changes what Asteroboard shows. A script receives the chat whether it's on or not. Filter and search Sources chooses which sources are shown: tick or untick Asterobot, Script and Chat. When a script writes a lot, keeping only Script makes it easier to follow. Filter keeps the lines that contain what you type, ignoring upper and lower case. For a chat line, it looks at both the speaker and the message. The cross in the box clears it. While anything is hidden, the top of the console shows how many lines you see out of how many, such as 12 of 340. When nothing matches, the console says "Nothing matches the filter." An empty console says "No log messages yet." Copy The copy button, Copy what's shown, copies the lines you see as text, one per line, such as 14:03:12 [info] Relaying a game session or 14:05:40 Sender-Name: hello. A notification confirms how many lines were copied. Follow the newest lines While you're at the bottom, the console scrolls down with each new line. Scroll up to read something, and it stops following so the lines don't move under your eyes. A Follow button then appears at the bottom right: click it to jump back to the newest line and follow again. The dot next to the bot's name, at the top left, pulses green while Asteroboard is connected to Asterobot. If the connection drops and comes back while the tab is open, the console loads the kept lines again. Send a chat message The box at the bottom of the console sends a message in the game chat. Warning This really sends the message in the game, as your character, on the general channel (GLOBAL), where the players around your character can read it. Type your message in "Say something in the game chat...". Press Enter, or click the send button next to the box. The box empties once the message has gone out. It can only use the general channel. To talk on another channel, send ChatChannelMessageRequest from the Network tool and set its channel field: see Send messages by hand. The bot must be connected to a game. If the message can't be sent, the alert Couldn't send the message appears above the lines with the reason, such as bot has no game connection: "my-bot". Where to go next Information Network traffic
-
Bot page
Each bot has a page where you watch it and control it. Open Bot Manager and click the bot's name: the page opens on the Console tab. Every tab shares the same header, so the controls and the alerts described here are always in reach. The header The bot's name sits on the left. On the right are two groups of controls: one for the bot's connection, one for its package. Connection The first group shows the bot's connection state, next to the buttons that change it. State Buttons Disconnected Connect, which signs the bot in with its Ankama account, and Start waiting, which makes it wait for your Dofus client. Connect is greyed out for a bot without an account, with the tooltip "This bot has no Ankama account to sign in with." Any other state: Connecting…, Connected to login server, Awaiting your answer, Waiting for your game client or Connected to game server Disconnect, which ends whatever the bot is doing. States and controls explains each state. Full socket mode and MITM mode explain the two ways to connect. When one of these buttons fails, a notification says so: Couldn't connect the bot with the reason, Bot's game version isn't ready yet, Couldn't put the bot into waiting or Couldn't disconnect the bot. See The bot doesn't connect. Package The second group is about the bot's package: The package the bot is set to play, as name@version, Inline script or No package selected. When several versions of that package are installed, it's a menu to switch between them; otherwise it opens the package's page. It turns orange when the version is incompatible with your Asterobot. Play, which becomes Stop while the script runs. Play is greyed out until the bot is Connected to game server, with the tooltip "Connect the bot to a game before playing a behavior." A menu with Load a new package, Load a package and play it and Unload package. Run a package explains each of them. Tabs Tab What it's for Console What Asterobot says about the bot, what its script writes, and the game chat. See Console. Information The Ankama account and the server of the bot's session. Its name turns orange while the bot waits for you to pick a server. See Information. Map Not ready yet. See Map. Inventory The character's items, kamas and pods. See Inventory. Tools The Network tool, to watch the bot's messages and send messages by hand. See Network traffic and Send messages by hand. Settings Bot configuration, the bot's own settings (see Bot settings), and Package settings (see Package settings and actions). Each tab has its own address, so reloading the page keeps you on the same tab. Pick a server A bot's connection sometimes stops to ask you which game server to join: when the bot is set to ask every time, or when it can't choose by itself because its forced server isn't available or no server is online and open to the account. The state then reads Awaiting your answer, and a Pick a server card appears under the tabs, whichever tab is open, with "This bot is set to always ask - choose which server to connect to below." The card shows one tile per server, with its picture, name and number, a status badge (Online or Maintenance), its server type, Mono-account for mono-account servers and, where the account has characters, how many. The information icon next to a name shows the server's description. Only the servers you can join right now can be clicked; the others are greyed out. Click a server, and the connection carries on. If your answer can't be sent, Couldn't send your answer appears. When a bot starts waiting for an answer while you're somewhere else in Asteroboard, a notification tells you, such as Bot "my-bot" needs your input, with a Go to bot button. Server selection itself is explained in Full socket mode. Problems Red alerts under the tabs report what went wrong, on every tab: Alert What it reports Couldn't connect this bot The bot's last connection attempt failed. The text is the reason. The behavior stopped with an error The bot's script failed. The text is the error it stopped with. Each alert shows the complete text in a box you can select, with a Copy button and a Dismiss button. Dismiss hides that exact message. It comes back after you reload the page, and a different message always shows. Not every failure reaches this area. When a package can't even start, because it's missing, incompatible or has an error in one of its files, you only get a Couldn't start the behavior notification without a reason. The bot's Settings tab, under Package settings, then shows the reason. Package errors covers each error, and script authors will find more in Errors. When the bot doesn't exist If the bot was deleted, or Asteroboard can't reach the Asterobot it belongs to, the page says "This bot isn't registered (or was removed)." with "It may have been removed, or the server it lives on isn't reachable." Where to go next Console States and controls
-
Trusting a package
A package is code someone else wrote, running with your bot's game session. Before you play a package you didn't write, know what it can reach. What a package can do When a bot plays a package, its script can do the following. Everything here also applies to the packages it depends on, since their code runs in the same script. It can What that means for you Send any message to the game server It acts as your character: move, fight, talk in chat, trade, sell, delete items. Anything the Dofus client can ask the server for, the script can ask for too. Read what the game sends Your chat, your inventory, the players and monsters around you, and everything else the server sends to the bot. Change or block messages on a MITM bot In MITM mode, short for man-in-the-middle, the bot sits between your Dofus client and the server. The script can change or drop what your client sends before the server gets it, and what the server sends before your client shows it. It can also send messages to your client as if they came from the server. Read the session's game ticket That ticket is what a stranger would need to take over the game session. Close the game connection On a MITM bot, that disconnects the game you're playing. Read game data Items, monsters, maps and texts of the bot's game version. Write to the bot's console and to Asterobot's own log Lines you read on the bot's Console tab or on Server > Console. Add settings and actions Fields and buttons on the bot's Settings tab. Caution Whatever a package does in the game, it does with your Ankama account. Only play packages from authors you trust, and remember that using bots breaks Ankama's terms of use. See Accounts and safety. What a package can't do It can't Details Use files A script can't read or write anything on your computer: not your settings, not your stored Ankama accounts, not other packages. The only code it can load is its own package's and that of the packages it depends on. Use the internet No web requests and no connections of its own. The bot's game connection is the only one it talks through. Reach other bots Each bot runs its own copy of the script. A script can't see or control another bot. Read your Ankama login A script gets the game session, not the account. It never receives the login or password stored in Account Manager. Control Asterobot It can't install packages, change the bot's settings or package settings, or connect and disconnect other bots. Installing a package runs none of its code. The package runs when a bot plays it. Its top-level code also runs, without any access to the game, each time Asterobot reads the package's settings: in Add a bot, on a bot's Settings tab, and when a bot starts it. A script also runs within limits. For example, code that works for more than 250 ms without pausing ends the script. Authors will find the list in Limits and the details of what scripts can reach in What scripts can do. How Asterobot checks marketplace packages When Asterobot installs a package from the marketplace, it records a fingerprint of the package's files. Each time the package is loaded after that, when a bot starts it, when you load it, when its settings are read and when a package that depends on it is loaded, Asterobot compares the files with that fingerprint. If anything changed, it refuses the package with package source integrity mismatch. So a marketplace package on your computer stays exactly as it was downloaded. Changing its files by hand makes it unusable, and Asteroboard doesn't let you edit it either: Edit code and Copy to a new version aren't offered for it. When the check fails, Play only says Couldn't start the behavior. The bot's Settings tab, under Package settings, shows the full error. To fix it, remove the package and install it again from the marketplace. The check proves the files are the ones you downloaded. It says nothing about whether the author's code is safe. Packages you create, copy or import from a .zip file have no fingerprint. Permissions are listed, not enforced A package can list permissions in its manifest, such as gamedata. They appear on the package's page, under Permissions in the Manifest card, or "No permissions declared." when there are none. For now they're the author's own description of what the package uses. Asterobot doesn't enforce them: a package that lists no permission can still do everything in the table above. Note Coming soon. Asterobot will enforce the permissions a package lists. Until then, don't rely on them to limit what a package does. Authors can read Permissions. Official and community Official packages come from marketplace files that asterobot.net marks as official, and install under a name that starts with @asterobot:. Community packages come from files published by asterobot.net members, under a name made of the author's name and the file's title. Both badges come from the package's name, and a package imported from a .zip file gets the name you type. Such a package can show Official or Community without ever coming from the marketplace. To be sure where a package comes from, open its page: only a package installed from the marketplace has a Source row, and its View on asterobot.net button opens the file it was downloaded from. Before you play a package Read the file's page on asterobot.net: who published it and what it says the package does. On the package's page in Library Manager, look at its Dependencies. Their code runs too. Read the code if you can. Edit code opens a local package, and Export gives you the files of any package as a .zip. Play it while you watch: keep the bot's Console open, and click Stop as soon as the bot does something you didn't expect. Where to go next Install from the marketplace Console
-
Manage your library
Library Manager lists every package installed in your Asterobot. From there you install, create, import, copy, export and remove packages, and each package has a page of its own with its details. The Library Manager page The buttons at the top are Check for updates on the left, and Import a .zip, Download package and New package on the right. Under them, a Filter... box narrows the table to the rows that contain what you type. Click the Name, Version or Provenance heading to sort by that column. The table shows 10 rows per page, and says "No scripts installed yet." while the library is empty. Column What it shows Name The package's name. Click it to open the package's page. Version The installed version. Each version of a package has its own row. Provenance Local, Community or Official. See What is a package. Compatibility Compatible or Incompatible, only for a package that states which versions of Asterobot it works with. Dependencies How many packages this one depends on. Hover the number for their names. Empty when there are none. Update An Update to button, once a check for updates found a newer version. See Update packages. Last column The row's menu. Right-clicking anywhere on a row opens the same menu. Row actions Action Offered for What it does Edit code Local packages Opens the package in the editor. See The editor. Copy to a new version Local packages Opens the Copy this package dialog. See Copy a package. Export Every package Downloads the package as a .zip file. See Export. Remove Every package Opens the Remove this script? dialog. See Remove a package. Only Local packages can be edited or copied. A package with a Community or Official badge stays as it was installed. A package's page Click a package's name in the table to open its page. The top of the page shows the name, the version, the provenance badge and, when the package states it, the compatibility badge. On the right: Update to once a check found a newer version, Edit code for a local package, and the same menu as in the table. The details card has a row for each fact that applies: Row Shown for What it says Publisher Marketplace packages The publisher part of the package's name. Compatible with Packages that state it The versions of Asterobot the package works with, such as >=1.5.0 <2.0.0. Source Packages installed from the marketplace View on asterobot.net opens the file the package came from. Updates Packages installed from the marketplace The update check for this package. See Update packages. The Manifest card lists what the package declares about itself: its Dependencies, with the version of each, its Permissions, and Compatible with. For a local package, the card is a form where you add and remove dependencies and permissions, then click Save manifest, or Reset to undo your changes. For any other package it's read-only and says "Published by someone else, so this is read-only". Editing a manifest is explained for authors in The manifest. Other versions installed appears when your library holds other versions of the same package, with a button to open each one. Bots playing this version lists the bots set to this exact version, whether their script runs or not. Click a bot to open its page. With none, it says "No bot is set to play this version." If the package doesn't exist any more, for example because it was removed in another tab, the page says "This package isn't installed (or was removed)." Create a package New package opens the New local package dialog: type a Name, keep or change the Version (1.0.0 by default) and click Create and edit. Asteroboard creates a package with starter code and opens it in the editor. Create a package walks through it for script authors. When that name and version are already installed, a warning appears saying they already exist and would be replaced, but Create and edit stays greyed out: unlike importing or copying, creating a new package never replaces one that's already there. Change the name or the version to go on. Import a .zip A .zip file is how packages travel outside the marketplace: what Export produces, and what you get when you download a package's file from asterobot.net yourself. Click Import a .zip. The Import a package from a .zip dialog opens. Drop the file on "Drop a .zip here, or click to choose one", or click that area to pick it. Type a Name. A plain name, such as my-harvester, makes a local package you can edit. A name in the form @publisher:name is allowed too, and makes a Community package, or an Official one with @asterobot:, which can't be edited. Check the Version. When the file's name ends with a version, as in my-harvester-1.2.0.zip, Asteroboard fills the field in for you, unless you already typed something. Click Import. Package imported appears with the package's name and version. The name and version always come from the dialog, never from the file. The archive holds the package's .js or .mjs files and its asterobot.json if it has one, with index.js at its root, the way Export builds it. It can't be larger than 32 MiB. Important Compress the package's files, not the folder that holds them. Asterobot accepts an archive of a single folder only when it lists nothing but that folder's contents, and many archiving tools also add an entry for the folder itself: the import then fails. Zip files and the command line gives the exact rules. Importing doesn't install the packages this one depends on. Install them first, or the package won't start. An imported package has no link to the marketplace, even when its files came from there: no Source row, no updates, and no check that its files stay as they were (see Trusting a package). To keep those, install from the marketplace instead. Message What to do This replaces the installed <name> <version>. A package with that name and version is already installed. Importing replaces its files. Change the name or the version to keep both. A local package name can't contain ':' or '@'. A plain name can't contain those characters. A marketplace name looks like @publisher:name. A name that starts with @ needs a publisher, a : and a name. A marketplace name has exactly one ':' and one leading '@'. Remove the extra : or @. Couldn't import the package The import failed. The notification gives no reason: the file may not be a .zip, have no index.js at its root (often because a folder was compressed instead of its files), be larger than 32 MiB, or contain an invalid asterobot.json. Export Choose Export in a package's menu. Your browser downloads the package as a .zip file named after the package and its version, without the @ and with - in place of the :: version 1.0.0 of @alice:mining becomes alice-mining-1.0.0.zip. The file holds the package's code, and its asterobot.json when it has one. Use it as a backup, to move the package to another Asterobot with Import a .zip, to read a package's code, or to publish your own package: see Share it. Copy a package Copying a local package is how you carry it forward to a new version, or start a variant under another name. In the package's menu, choose Copy to a new version. The Copy this package dialog opens, with the same Name and a Version whose last number is one higher: 1.0.0 becomes 1.0.1. Change the name or the version if you like. Click Copy. A notification says Copied to followed by the new name and version, and the editor opens on the copy. The code, the dependencies, the permissions and the compatible versions come along. The original package isn't touched, and bots keep playing it until you move them. Message What to do That's the package you're copying. Change the name or the version. Copy stays greyed out until the name or the version differs. This replaces the installed <name> <version>. That name and version already exist, and copying replaces them. Change the version to keep both. A new package is local, so its name can't start with '@' - those are assigned by the marketplace. A copy is always local. Remove the @. Couldn't copy the package, with a reason The copy failed. The reason is shown in the dialog. Remove a package In the package's menu, choose Remove. The Remove this script? dialog opens. It names the version it removes from the local library, and reminds you that a bot running it keeps running until its script is stopped. Read the warnings, if there are any. One says how many installed packages depend on this one and lists them with their versions. The other says how many bots are set to this package and lists their names. Click Yes, remove. Neither warning blocks the removal. Once the package is gone, a script that's running keeps running, but its next start fails with Couldn't start the behavior, and so does the next start of any package that depended on it. Bots stay set to the removed version, with their package settings, until you give them another package. If removing fails, Couldn't remove the script appears. From the command line Asterobot has three commands for the library: library install installs a package from a folder, library list lists every installed version with its provenance and publisher, and library remove removes one version. See Command line, and Zip files and the command line for authors. Where to go next Trusting a package Files and folders, to find where the library is stored
-
Update packages
When an author publishes a new version of a package on asterobot.net, nothing changes in your library until you ask. You check for updates, install the new version next to the one you have, move your bots to it when it suits you, then remove the old version. Only packages installed from the marketplace can be updated this way. 1. Check for updates In Library Manager, click Check for updates, at the top left of the page. Asterobot asks asterobot.net for the current version of every package you installed from the marketplace. Update check complete then says how many updates it found, and each package with a newer version gets a button in the Update column: Update to followed by the version. Good to know about the check: Nothing is checked automatically. The buttons show the result of your last check until you check again or reload Asteroboard. A version counts as newer when its number is higher: 1.10.0 is newer than 1.9.0. When a version number doesn't follow that usual form, any different version counts as an update. When the version on asterobot.net is lower than yours, for example because the author took a release back, no update is offered. A package whose file can't be read on asterobot.net any more, because it was deleted or hidden, is skipped without a message. Local packages are never checked, since they have no file on asterobot.net. If the check fails, Couldn't check for updates appears. The page of a marketplace package has the same check in its Updates row: Check for updates, then "Up to date" or a line such as "Version 1.3.0 is available", and a Check again button. 2. Install the new version Click Update to followed by the version, on the package's row or at the top of its page. Asterobot downloads the new version, with any dependency you don't have yet, and installs it next to the version you have. Update installed confirms it with a line such as "@some-author:auto-harvest 1.3.0 is installed alongside 1.2.0. Point a bot at it to use it." The old version is untouched, and every bot keeps playing it. Its Update to button goes away. If the new version is already in your library, for example because you already updated from another row, nothing is downloaded again. If the installation fails, Couldn't install the update appears, without a reason. The causes are the same as for a first installation: see Install from the marketplace. 3. Move your bots Each bot is set to an exact version, so you move them one at a time: On the bot's page, click the package name in the header and pick the new version. See Switch to another version. Or on the bot's Settings tab, under Bot configuration, pick the new version under Package and click Save settings. A script that's already running keeps the old version until you click Stop, then Play. To see which bots still use the old version, open that version's page from Library Manager. Bots playing this version lists every bot set to it, running or not. What happens to package settings Package settings are saved per bot under the package's name, not its version. A bot you move to the new version keeps the values you gave it. If the new version removed a setting, renamed it or changed its type, the old value doesn't carry over to it, and the setting starts from the new version's default. Look at the bot's Package settings after moving it. If you move the bot back to the old version, its old values come back, unless you applied new values to the same settings in the meantime. 4. Remove the old version Keep the old version as long as you might want to go back: moving a bot back is instant and needs no download. When no bot needs it any more: In Library Manager, open the menu at the end of the old version's row and choose Remove. Read the dialog. It warns you when bots are still set to that version, or when other packages depend on it. These warnings don't block anything. Click Yes, remove. A bot still set to a removed version can't start its script until you move it to another version. Dependencies installed with the old version stay in your library: remove them the same way once nothing needs them. See Remove a package. If you publish packages yourself, Publish an update covers the author's side. Where to go next Manage your library Trusting a package
-
Package settings and actions
Many packages let you adjust what they do without touching their code: which resource to gather, how long to wait, a list of names to answer. Those options are the package settings, and the buttons a package adds are its actions. Both are on the bot's Settings tab, and both come from the package the bot is set to play. Open them On the bot's page, click Settings. Click Package settings, next to Bot configuration. The section starts with the package the settings belong to, as name@version, and a Refresh button that reads them again, for example after you changed the bot's package from another tab. Below come the cards, one for each package of the bot's script that declares at least one setting or action: the package the bot is set to play, and the packages it uses. A card's title shows the package name, its version and a count such as "3 setting(s) · 1 action(s)". The first card is open and the others are closed; click a title to open or close a card. The cards come in no fixed order, so the bot's own package isn't always the first one: check the names. These are the settings of the package the bot is set to play, whether a script runs or not. You can change them while the bot is stopped: the script uses them at its next start. The section can also show one of these instead: What you see Why No package selected, with "Settings come from the package a bot plays. Load one from the bot's quick actions, then come back." The bot isn't set to any package. An inline script has no settings either. See Run a package. "This behavior declares no settings and no actions." Neither the package nor any package it uses has anything to set. Couldn't read this package's settings, followed by a reason Asterobot couldn't read the package: it was removed, it's incompatible with your Asterobot, one of its files has an error, or its files changed after it was installed from the marketplace. The text under the title is the exact error. See Package errors. The fields Each field's label, description and default value come from the package. The kind of field depends on the type of the setting: Setting Field On or off A switch. One value from a fixed list A dropdown with the choices the package offers. Text A text box, sometimes with an example in grey. Whole number A number box whose arrows move by 1. The package can set a minimum, a maximum, and a unit shown in the box, such as seconds. Decimal number A number box, with the same optional minimum, maximum and unit. List One row per item, numbered from 0, each with a button to remove it, and Add under the rows. An empty list says "Empty list." All the items have the same type: on or off, text, whole numbers or decimal numbers. Map One row per entry, with a Key box, the value and a button to remove it, and Add an entry under the rows. An empty map says "No entries." A row whose key is empty is left out. A few details save surprises. Clearing a number box doesn't store an empty value: the field keeps the last number you typed. The minimum and maximum only guide the arrows, and Asterobot checks them when you apply. A new list item starts off, empty or at 0, depending on its type. Apply your changes What you change stays in the page until you apply it, so a running script never sees a value you're still typing. Change one or more fields in a package's card. Not applied appears on the card's title. Click Apply, under the fields. Asterobot checks every value against what the package declares, saves the card for this bot, and passes the new values to the running script if there is one, without restarting it. A notification confirms it with the package name, such as my-harvester settings applied. Whether the script acts on a change right away depends on how its author wrote it. Reset puts the card back to its saved values. Apply and Reset stay greyed out while nothing has changed. Each card is applied on its own, and none of this goes through Save settings on Bot configuration. When a value is refused, Couldn't apply the settings appears with the reason, and nothing from the card is saved: Reason, for example What's wrong delay: 5 is below the minimum 10 The number is under the minimum the package set. delay: 900 is above the maximum 600 The number is over the maximum. count: want a whole number, got 2.5 A decimal number in a whole-number setting. package "my-harvester" declares no parameter "delay" The package changed while the page was open. Click Refresh and try again. Where settings are kept Package settings are saved per bot, under the package's name. Another bot playing the same package has values of its own. A bot keeps its values when its script stops, when Asterobot restarts, and when you switch it to another version of the same package. When a newer version drops a setting or changes its type, the saved value no longer applies and the setting shows the package's default again. A dependency's card holds that dependency's own settings. On one bot, every package that uses the same dependency shares those values. Settings in the Add a bot dialog When you pick a library package on the Behavior / Script tab of Add a bot, its settings appear right under the picker, under Settings, so the bot starts with your values. There's no Apply there and no actions, since the bot doesn't exist yet: Asterobot saves the values right after adding the bot, before connecting it. If that fails, Couldn't apply the settings appears with the package name. The bot is added anyway, with the package's defaults, and you can set the values again on its Settings tab. Actions A package's actions are buttons under Actions in its card, each with a lightning bolt. Hover one to read what it does. An action runs inside the bot's script, so it only works while the bot plays one. Otherwise the buttons are greyed out, and hovering one says "The bot has to be playing a behavior before an action can run." Click the action. If it needs values from you, a dialog opens with the action's name as its title and one field per value, filled with the package's defaults every time it opens. Fill them in and click Run, or Cancel. Action started appears: the action has been handed to the script. When the script is done, a notification gives the action's name followed by finished, or by failed with the error. The name is the one the package uses in its code, which can differ from the button's label. A failure notice stays on screen until you close it. A failed action doesn't stop the script: the bot keeps playing. When an action can't be handed to the script at all, Couldn't start the action appears with the reason: Reason What happened no behavior is running on this bot The script stopped before you clicked. the running behavior declares no action "<action>" on package "<package>" The script that runs isn't the one this page describes: an inline script, or a version that was running before you switched. Click Stop, then Play. The value's name followed by a reason A value from the dialog was refused, for the same reasons as settings. If you write packages, Declare settings, Read settings and Declare actions explain the other side. Where to go next Update packages Bot settings, for the Bot configuration section of the same tab
-
Run a package
A bot plays one package at a time. You choose which one and the bot remembers it; its script then runs each time you press Play, as long as the bot is connected to a game. Script authors will find what happens inside the script in Play, stop and reload. Set, and running What a bot is set to play and whether it plays it are two separate things. The bot's page shows the package it's set to play in its header: name@version, Inline script or No package selected. That stays when the script stops. After Asterobot restarts, the package stays too, but an inline script is gone. Play turns into Stop while the script runs. In Bot Manager, the Behavior column says Running, Stopped or Failed. So a bot can be set to a package without running it. You can also change a bot's package while its script runs: the script carries on, and the change applies at its next start. Load a new package is the exception, since it stops the script first. Choose a package Where How When it takes effect Add a bot On Behavior / Script, select Library package and pick it under Package. It's saved with the new bot. When the bot signs in right away (Sign in now), Play behavior directly starts it as soon as the bot is connected. See Add a bot. The bot's Settings tab Under Bot configuration, pick it under Package, then click Save settings. At the next Play. A running script isn't touched. The menu next to Play Load a new package, below. Right away: the running script is stopped. Each picker lists every package in your library as name@version, and offers Download one to install a package from the marketplace on the spot. See Install from the marketplace. Load a new package On the bot's page, open the menu next to Play and choose Load a new package. The Load a behavior selection dialog opens. Leave Library package selected and pick the package under Select an installed package. Click Load a new package at the bottom of the dialog. Asteroboard first stops the script the bot is running, then sets the bot to the package you picked, as if you had chosen it on the Settings tab. The dialog's description says loading doesn't affect anything already running, but it does stop the current script. Nothing starts until you click Play. Note Loading from this dialog also sets the bot's Language to French, whatever it was before. If the bot uses another language, pick it again on its Settings tab. Load a package and play it, in the same menu, opens the same dialog and presses Play for you once the package is loaded. If the bot isn't connected to a game, the package is loaded but Couldn't start the behavior appears. In Bot Manager, each bot's row menu also has Load a new package, which opens the same dialog. When loading fails, Couldn't load the selection appears, without a reason. Unload package Unload package, in the same menu, stops the running script and clears the bot's package. The header then reads No package selected, and Play opens Load a behavior selection instead of starting anything. The package settings you saved for that package stay with the bot, ready if you load it again. In the Bot Manager row menu, Unload package is greyed out while the bot has nothing loaded. If unloading fails, Couldn't unload the package appears. Play and Stop Play starts the package the bot is set to play. It stays greyed out until the bot is Connected to game server, with the tooltip "Connect the bot to a game before playing a behavior." A Full socket bot gets there after Connect, a MITM bot once your Dofus client has joined it. See Full socket mode and MITM mode. When the bot has nothing to play yet, Play opens the Load a behavior selection dialog instead. Each start reads the package's files as they are in your library at that moment. There's no Reload button: to restart a script, click Stop, then Play. Stop ends the script. The bot stays connected to the game. The same Play and Stop are in each bot's row menu in Bot Manager. When it doesn't start What you see What it means Couldn't start the behavior The script couldn't even start. The notification gives no reason. Common causes: the package was removed, it's incompatible with your Asterobot, one of its files has an error, a dependency is missing, or its files were changed after it was installed from the marketplace. The behavior stopped with an error, at the top of the bot's page The script started, then failed. The alert shows the complete error with a Copy button. See Bot page. Couldn't stop the behavior Stopping failed. Tip When Couldn't start the behavior gives you nothing to go on, open the bot's Settings tab and click Package settings. When the package can't be read, the alert Couldn't read this package's settings there shows the actual reason. Package errors lists the errors and their fixes. Switch to another version When your library holds several versions of the package a bot plays, the package name in the bot's header becomes a menu. Click the package name in the header. The menu lists every installed version of it, newest first. The current one has a check mark, and versions incompatible with your Asterobot are shown in orange. Click the version you want. Now set to version followed by the version confirms it. If a script is running, the notification adds "The running behavior keeps going until you play or reload.": the script keeps running the version it started with until you click Stop and Play. The same menu has View this package, which opens the package's page. With only one version installed, the package name is a link to that page instead of a menu. If switching fails, Couldn't switch version appears, without a reason. The name in the header turns orange when the version the bot is set to is incompatible. Run a quick inline script For a quick test that doesn't deserve a package, a bot can run code you paste. This is mostly useful when you write scripts: see Your toolbox. Open the menu next to Play and choose Load a new package. Select Inline script and paste the code into the box. Click Load a new package, then Play. An inline script is a single file that's never saved. It goes away when you load something else, when you click Unload package and when Asterobot restarts. It has no package settings. Loading an inline script doesn't change the package the bot is set to. When the bot already had one, its header keeps showing that package, but Play runs the inline script until one of the events above clears it. The header shows Inline script only for a bot that has no package set. After a restart When Asterobot starts again, every bot comes back disconnected, with no script running. Nothing connects or plays by itself. Each bot is still set to its package and version, with its package settings, so connect it and click Play. An inline script isn't kept: load it again. The same goes when a bot's connection drops: the script stops with it, and it doesn't start again when the bot reconnects. See Disconnect, delete and restart. Where to go next Package settings and actions Console, to watch what the script does
-
Install from the marketplace
The marketplace is the Library category of asterobot.net, where players share packages. You browse it on the website, then paste a file's link or ID into Asteroboard, and Asterobot downloads the package into your library, with the packages it depends on. Asterobot downloads files with your asterobot.net account, so it must be signed in first. See Sign in with asterobot.net. 1. Find a package on asterobot.net Open https://asterobot.net/files/category/10-library/. The download forms in Asteroboard also have a Browse packages on asterobot.net link that opens it. Open the page of the file you're interested in. Read what it does and who published it before you go further: Trusting a package explains what a package can do with your bot. Copy the page's address from your browser, for example https://asterobot.net/files/file/6-testscript5/. The number at the start of the last part, 6 here, is the file's ID. Either one works. The marketplace describes the website side. 2. Preview it In the sidebar, open Library Manager and click Download package. The Download a package from asterobot.net dialog opens. Paste the address or the ID in File ID or URL. Asteroboard accepts a number alone, or an address that contains /file/ followed by the number and a hyphen, like the one above. Click Preview. Asteroboard asks asterobot.net what the file is and shows it on a card. Nothing is downloaded yet, and a preview doesn't count as a download for the author. On the card What it tells you The title The file's title on asterobot.net. Official or Community Whether asterobot.net marks the file as official. See What is a package. Author The publisher part of the package's name: the author's name in lowercase with hyphens, or asterobot for an official file. Will install as The exact name and version the package will have in your library, such as @some-author:auto-harvest@1.2.0. A line can appear under the card: "This version is already in your library": that exact name and version is installed. There's nothing to download, so you can close the dialog. You don't have permission to download this file. in red: Install stays greyed out. Who can download a file is decided on its page on asterobot.net, and your account isn't allowed to download this one. To try another link, click Change, then paste the new one. 3. Install Click Install. Asterobot downloads the file and installs it, then downloads every package it depends on that isn't in your library yet. When everything is in, the dialog closes and Package installed appears. The package has its own row in Library Manager, and so does each dependency that was downloaded with it. The installation happens inside Asterobot. Closing the dialog or Asteroboard while it runs doesn't stop it. Next, give the package to a bot: Run a package. Install from a package picker When you're choosing a package for a bot, you don't have to leave for Library Manager. The package picker has a Download one button next to its list in three places: the Behavior / Script tab of Add a bot, the Load a behavior selection dialog, and Bot configuration on a bot's Settings tab. Click Download one. A small form opens under the list, saying it "Downloads it into your library, then selects it here." Paste the address or the ID in File ID or URL and click Preview. The same card appears. Click Install. When the package is already in your library, the button reads Use it instead, and selects the installed copy without downloading anything. The form closes and the package is selected in the picker. Cancel closes the form and leaves the selection as it was. What can go wrong Message Where What to do Not a valid file ID or asterobot.net file URL. Under the field The text is neither a number nor the address of a file page. Copy the address of the file's own page, not of the category. Preview stays greyed out until it's fixed. File not found, or you don't have permission to view it. Under the field, after Preview The file doesn't exist, your account can't see it, or Asterobot couldn't ask asterobot.net, for example because it isn't signed in. Check the address, then the account button at the bottom of the sidebar. You don't have permission to download this file. Under the card Your account isn't allowed to download this file. The file's page on asterobot.net decides who is. Couldn't install the package Notification The download or the installation failed. The notification gives no reason. It happens when Asterobot can't find the package's index.js in the file, when the file has more than one attachment, when it's larger than 32 MiB, when asterobot.net refuses the download, or when one of its dependencies can't be installed. When a dependency is what failed, the package itself may already be in your library without it, and it won't start. Try the installation again later, or remove the package. Package errors covers problems with packages you've already installed. Where to go next Run a package The tutorial Run a marketplace package goes from the website to a running bot.