Aller au contenu
Afficher dans l'application

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

Asterobot

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

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

Protocole Dofus

Le protocole Dofus actuellement pris en charge par Asterobot
Stop following a party member's position.
Kind request · Area Game.Party
Stop following a party member (their compass flag goes away).
HOW TO SEND IT
1. Set PartyStopFollowMemberRequest.party_id to your party's id and PartyStopFollowMemberRequest.player_id to the followed member's character id. 2. Leave the other declared members at their defaults: the client never writes them.
When you may send it
Requires context_ready inferred Raised by: a user action: Stop following in a member's player menu (OnStopFollowingThisMember / OnStopAllFollowingThisMember) or removing their map flag proven Related messages
Reply not yet recovered: the server answers with a follow-status event (ihc on 3.7.12.12), not signed yet. Fields
#FieldTypeMeaningYou set it 3party_idint32Your party's id.
PartyJoinEvent.party_id.always 4player_idint64The member you stop following.
A character id.always
  • summary: Stop following a party member's position.
  • area: Game.Party
  • 17 vues
Normal party or arena team.
Kind enum · Area Game.Party
The kind of party.
- PartyType.PARTY_TYPE_CLASSICAL: a normal party. - PartyType.PARTY_TYPE_ARENA: an arena team.
The third value (beta: UNDEFINED, 0) is not used by the client.
Not sent on its own — an enum carried by PartyJoinEvent.party_type and PartyInvitationRequest.party_type, never sent on its own. inferred
Used by
PartyInvitationEvent PartyInvitationRequest PartyJoinEvent Values
ValueNumberMeaning PARTY_TYPE_CLASSICAL1A normal party.
Beta's name is CLASSICAL; prefixed because ServerType's CLASSICAL shares the proto scope. PARTY_TYPE_ARENA2An arena team.
Beta's name is ARENA; prefixed because Channel's ARENA shares the proto scope.
  • summary: Normal party or arena team.
  • area: Game.Party
  • 16 vues
An NPC of your map plays a named animation.
Kind event · Area Game.Npc
Make an NPC of the map play an animation given by name, without going through an emote.
WHAT TO DO WHEN YOU RECEIVE IT
1. Find the NPC PlayAnimationOnNpcEvent.npc_id on the map. The official client waits until that NPC is on the map before going on. 2. Play PlayAnimationOnNpcEvent.animation on it. 3. SEND NOTHING BACK.
When you may send it
Requires context_ready inferred Related messages
Unsolicited - nothing you send causes this scripted NPC behaviour broadcast by the server; nothing requests it Fields
#FieldTypeMeaningYou set it 1animationstringName of the animation to play.
Name invented from the client parameter it fills (SetAnimationAction's animation).never 2npc_idint32The NPC that plays the animation.
An actor id of the current map (an NPC's); the client resolves it to the map entity and waits for it.never
  • summary: An NPC of your map plays a named animation.
  • area: Game.Npc
  • 15 vues
An NPC of your map plays an emote.
Kind event · Area Game.Npc
Make an NPC of the map play an emote, as EmotePlayEvent does for players.
WHAT TO DO WHEN YOU RECEIVE IT
1. Find the NPC PlayEmoteOnNpcEvent.npc_id on the map. The official client waits until that NPC is on the map before going on, so the message may arrive before the NPC. 2. If PlayEmoteOnNpcEvent.emote_id is 0, return the NPC to its normal animation. 3. Otherwise look the emote up in the emoticons game data and play its animation on the NPC. 4. SEND NOTHING BACK.
Two more int32 members are declared and never read by the client. Ignore them.
When you may send it
Requires context_ready inferred Related messages
Unsolicited - nothing you send causes this scripted NPC behaviour broadcast by the server; nothing requests it Fields
#FieldTypeMeaningYou set it 1npc_idint32The NPC that plays the emote.
An actor id of the current map (an NPC's); the client resolves it to the map entity and waits for it.never 4emote_idint32The emote to play; 0 returns the NPC to its normal animation. (emote id)
An id of the emoticons game data; the client plays that emote's animation.never
  • summary: An NPC of your map plays an emote.
  • area: Game.Npc
  • 17 vues
A player's part of a fight result line: its level and its experience or PvP data.
Kind struct · Area Game.Fight
The player-specific part of a fight result line.
HOW TO READ IT
1. PlayerListEntry.level is the character level. Above 200 it is an omega level: display level - 200 with the omega mark, as the result screen does. 2. Walk PlayerListEntry.additional: each element carries either the experience data (ExperienceData) or the arena data (PvpData).
Not sent on its own — it is only ever FighterListEntry.player_list_entry. proven
Used by
FighterListEntry Fields
#FieldTypeMeaningYou set it 1additionalrepeated FightResultAdditionalDataThe experience and/or arena data of the line.
Elements are FightResultAdditionalData.never 2levelint32The character level; above 200, an omega level.
Shown as level - 200 with the omega mark.never
  • summary: A player's part of a fight result line: its level and its experience or PvP data.
  • area: Game.Fight
  • 18 vues
Names a player, by character name or by account.
Kind struct · Area Game.Common
Names a player for a request. Set exactly one member of PlayerSearch.player_search:
- PlayerSearch.search_by_character_name: by character name (what the party invitations use); - PlayerSearch.search_by_account: by account.
Not sent on its own — a record carried by requests that target a player (PartyInvitationRequest.target). proven
Used by
IgnoreRequest PartyInvitationRequest WhoIsNoMatchEvent WhoIsRequest Fields
#FieldTypeMeaningYou set it 1search_by_accounttype not documented yetSearch by account.always 2search_by_character_nametype not documented yetSearch by character name.always
  • summary: Names a player, by character name or by account.
  • area: Game.Common
  • 22 vues
A player and the craft skills they offer.
Kind struct · Area Game.Job
One crafter offer:
- PlayerSkills.player_id: the player (an actor id of the current map); - PlayerSkills.skills: the craft skill ids they offer (skill game data).
Not sent on its own — a record carried by JobMultiCraftStateEvent.player_skills. proven
Used by
JobMultiCraftStateEvent Fields
#FieldTypeMeaningYou set it 1player_idint64The player offering to craft.
An actor id of the current map; the key of the client's crafter list.never 2skillsrepeated int32The craft skills offered.
Skill ids of the game data.never
  • summary: A player and the craft skills they offer.
  • area: Game.Job
  • 20 vues
A dimension portal on the map: which portal and which area it leads to.
Kind struct · Area Game.Common
1. PortalInformation.area_id: the area the portal leads to (area id of the game data). 2. PortalInformation.portal_id: the portal. 3. Ignore the third int32: the client never reads it.
Not sent on its own — a record carried by RolePlayActor.portal_actor, never sent on its own. proven
Used by
RolePlayActor Fields
#FieldTypeMeaningYou set it 1portal_idint32The portal.never 3area_idint32The area the portal leads to, as an area id of the game data.never
  • summary: A dimension portal on the map: which portal and which area it leads to.
  • area: Game.Common
  • 19 vues
A player's arena data in a fight result: the arena league.
Kind struct · Area Game.Fight
The arena part of a player's fight result.
PvpData.league_id is the arena league: look it up in the arena league game data (its name and icon); 0 means no league. The five other declared int32 are not used by the client (one is copied and never read): ignore them.
Not sent on its own — it is only ever FightResultAdditionalData.pvp_data. proven
Used by
FightResultAdditionalData Fields
#FieldTypeMeaningYou set it 5league_idint32The arena league reached; 0 for none.
Name ours. The client looks it up with ArenaLeaguesDataRoot.GetArenaLeagueById.never
  • summary: A player's arena data in a fight result: the arena league.
  • area: Game.Fight
  • 20 vues
A fight shown on the current map is gone: forget it.
Kind event · Area Game.Roleplay
A fight that was shown on the current map is gone: it ended, or it can no longer be joined or watched.
WHAT TO DO WHEN YOU RECEIVE IT
1. Remove the fight RemoveChallengeEvent.fight_id from the fights you track on the map (the ones ShowChallengeEvent announced and FightTeamUpdateEvent kept up to date): its swords marker disappears. 2. Stop offering to join or spectate it. The official client also closes the party notification about it (a party member fighting there), if one is open. 3. SEND NOTHING BACK.
The declared optional int64 is never read by the client: ignore it.
When you may send it
Requires context_ready inferred Related messages
Unsolicited - nothing you send causes this the server sends it when a fight on the map ends or can no longer be joined Fields
#FieldTypeMeaningYou set it 2fight_idint32The fight that is gone.
The id ShowChallengeEvent announced the fight with.
The client removes the fight from the map and closes the 'partyFight_<id>' party notification.never
  • summary: A fight shown on the current map is gone: forget it.
  • area: Game.Roleplay
  • 17 vues
One thing a character on the map may not do or undergo.
Kind enum · Area Game.Common
Carried by Humanoid.restrictions. Values are not named: the client tests each value against the list without naming it. Beta's enum has the same 19 values, in this order: CANNOT_BE_ATTACKED, CANNOT_BE_CHALLENGED, CANNOT_TRADE, CANNOT_BE_ATTACKED_BY_MUTANT, CANNOT_RUN, FORCE_SLOW_WALK, CANNOT_MINIMIZE, CANNOT_MOVE, CANNOT_ATTACK, CANNOT_CHALLENGE, CANNOT_EXCHANGE, CANNOT_ATTACK_AS_MUTANT, CANNOT_CHAT, CANNOT_USE_OBJECT, CANNOT_USE_TAX_COLLECTOR, CANNOT_USE_INTERACTIVE, CANNOT_SPEAK_TO_NPC, CANNOT_CHANGE_ZONE, CANNOT_ATTACK_MONSTER (0..18); nothing proves 3.7 kept that numbering.
Not sent on its own — a record carried by Humanoid.restrictions, never sent on its own. proven
Used by
Humanoid No fields you may set.
  • summary: One thing a character on the map may not do or undergo.
  • area: Game.Common
  • 21 vues
The answer to your mood change: the result and the smiley.
Kind event · Area Game.Social
The server's answer to SetMoodRequest.
WHAT TO DO WHEN YOU RECEIVE IT
1. Read SetMoodEvent.result. In the capture it was absent (0) on a successful change. Its values are not named yet (beta: OK, ERROR_UNKNOWN, ERROR_FLOOD). 2. Store SetMoodEvent.smiley_id as your mood smiley. 3. SEND NOTHING BACK.
The declared int64 is never read by the client.
When you may send it
Requires context_ready inferred Related messages
Arrives after SetMoodRequest Fields
#FieldTypeMeaningYou set it 1smiley_idint32Your mood smiley now.
An id of the smileys game data.never 2resulttype not documented yetWhether the change succeeded.
A nested enum; 0 on success in the capture. Values not named yet.never
  • summary: The answer to your mood change: the result and the smiley.
  • area: Game.Social
  • 18 vues
Set (or reset) your mood smiley, shown to your contacts.
Kind request · Area Game.Social
Choose your mood smiley: the smiley your friends and spouse see next to your name.
HOW TO SEND IT
1. Set SetMoodRequest.smiley_id to the smiley's id in the smileys game data. The declared nested record is never written by the client: leave it unset. 2. Wait for SetMoodEvent: it confirms the change (or reports an error).
In the capture the official client then also played the new mood smiley once (SmileyRequest with the same id).
When you may send it
Requires context_ready inferred Raised by: a user action in the smiley picker: right-clicking a smiley (SmileyUISmileyTab.OnSmileyItemRightClicked), dropping one on the mood slot (ConsumeDrag) or resetting the mood (ResetMood) proven Related messages
You will then receive SetMoodEvent observed — about 28ms later with the same smiley id; 1 observation Fields
#FieldTypeMeaningYou set it 1smiley_idint32The new mood smiley.
An id of the smileys game data.always
  • summary: Set (or reset) your mood smiley, shown to your contacts.
  • area: Game.Social
  • 16 vues
The content of a shortcut-bar slot holding an emote.
Kind struct · Area Game.Common
The emote branch of Shortcut: the slot holds an emote id (EmotesEvent).
HOW TO READ IT
1. ShortcutEmote.emote_id is the emote on the slot. Using the slot is the same as picking that emote from its picker. 2. The client fills the same record when you put one on the bar.
Not sent on its own — a record inside Shortcut, never sent alone. inferred
Used by
Shortcut Fields
#FieldTypeMeaningYou set it 2emote_idint32The emote on the slot.
An emote id (EmotesEvent).required
  • summary: The content of a shortcut-bar slot holding an emote.
  • area: Game.Common
  • 18 vues
The content of a shortcut-bar slot holding a smiley.
Kind struct · Area Game.Common
The smiley branch of Shortcut: the slot holds a smiley id (the smileys game data, SmileyRequest).
HOW TO READ IT
1. ShortcutSmiley.smiley_id is the smiley on the slot. Using the slot is the same as picking that smiley from its picker. 2. The client fills the same record when you put one on the bar.
Not sent on its own — a record inside Shortcut, never sent alone. inferred
Used by
Shortcut Fields
#FieldTypeMeaningYou set it 1smiley_idint32The smiley on the slot.
A smiley id (the smileys game data, SmileyRequest).required
  • summary: The content of a shortcut-bar slot holding a smiley.
  • area: Game.Common
  • 18 vues
An interactive element a character is busy using, with which skill and until when.
Kind struct · Area Game.Common
The snapshot of an interactive use in progress, for a character you see arriving.
1. Treat it like an InteractiveUsedEvent for that actor: SkillUseOption.element_id is the map element, SkillUseOption.skill_id the skill. 2. SkillUseOption.skill_end_time: when the use ends (a date string). 3. Ignore the other int32: the client never reads it.
Not sent on its own — a record carried by HumanOption.skill_use_option, never sent on its own. proven
Used by
HumanOption Fields
#FieldTypeMeaningYou set it 1skill_end_timestringWhen the use ends.
A date string; the client parses it.never 3element_idint32The interactive element being used (a map element id).never 4skill_idint32The skill being used on it (a skill id of the game data).never
  • summary: An interactive element a character is busy using, with which skill and until when.
  • area: Game.Common
  • 18 vues
A character on your map played a smiley: show it above them.
Kind event · Area Game.Social
A character played a smiley: show it in a bubble above them. It arrives for your own smileys (after SmileyRequest) and for other characters on the map.
WHAT TO DO WHEN YOU RECEIVE IT
1. Find the character SmileyEvent.entity_id among the map's actors; ignore the message if it is not shown. 2. Look SmileyEvent.smiley_id up in the smileys game data and show it above that character. The official client also records the smiley as known. 3. SEND NOTHING BACK.
Three more members are declared and never read by the client: an optional int64 (it carried the sender's account id, 187563653, in the capture 2026-10-22 13:11; beta: account_id), an optional int32 (beta: cell_id) and a string. Ignore them.
When you may send it
Requires context_ready inferred Related messages
Arrives after SmileyRequest Fields
#FieldTypeMeaningYou set it 2entity_idint64The character who played the smiley.
An actor id of the current map; your own character id for your smileys.never 3smiley_idint32The smiley.
An id of the smileys game data (SmileysDataRoot.GetSmileyById).never
  • summary: A character on your map played a smiley: show it above them.
  • area: Game.Social
  • 20 vues
Show a smiley in a bubble above your character, for everyone around.
Kind request · Area Game.Social
Play a smiley: it pops up in a bubble above your character for everyone on the map.
HOW TO SEND IT
1. Set SmileyRequest.smiley_id to the smiley's id in the smileys game data (SmileysDataRoot). Leave the other declared int32 at 0: the client never writes it. 2. Send it ONCE. Wait at least one second before the next smiley: the official client blocks smileys for 1s after each one, and the server may drop smileys sent faster. 3. React to SmileyEvent when it arrives; do not wait for it.
THE OFFICIAL CLIENT SENDS IT TWICE. A click in the smiley picker sends this request two times, about 3ms apart, with the same smiley id. This is a client quirk, not a protocol rule: the picker's click handler sends it, then calls its 'add to recently used' routine, which sends it a second time before setting the 1s cooldown. The server answered each pair with a single SmileyEvent in the capture. A smiley played from the shortcut bar, or right after a mood change, was sent once. Do not treat a doubled request in a capture as a malformed exchange, and do not imitate it: one request is enough.
When you may send it
Requires context_ready inferred Raised by: a user action: clicking a smiley in the smiley picker (SmileyUISmileyTab.OnSmileyItemClicked, which then calls AddToHistory: see the description), a smiley element's click callback, or a smiley placed on the shortcut bar (UIActionBar.UseItem) proven Related messages
You will then receive SmileyEvent observed — about 25ms later, the smiley shown above your own character (entity_id = your character id); at most one per request pair, and one pair sent 1.5s after the previous one got none; 4 pairs observed in one session Fields
#FieldTypeMeaningYou set it 1smiley_idint32The smiley to play.
An id of the smileys game data (SmileysDataRoot); the same id comes back in SmileyEvent.smiley_id.always
  • summary: Show a smiley in a bubble above your character, for everyone around.
  • area: Game.Social
  • 18 vues
A tax collector on the map: who it is (identification) and its attack state.
Kind struct · Area Game.Common
1. TaxCollectorActor.identification: the tax collector's identity (uid, names, alliance, who placed it). 2. TaxCollectorActor.attack: its attack state. 3. Ignore the second identification-typed member, the enum and the decoy_3Type member: the client never reads them.
Not sent on its own — a record carried by RolePlayActor.tax_collector_actor, never sent on its own. proven
Used by
RolePlayActor Fields
#FieldTypeMeaningYou set it 2identificationtype not documented yetThe tax collector's identity: uid, names, alliance, who placed it.never 4attackint32The tax collector's attack state.never
  • summary: A tax collector on the map: who it is (identification) and its attack state.
  • area: Game.Common
  • 21 vues
A tax collector's part of a fight result line: the alliance it belongs to.
Kind struct · Area Game.Fight
The tax-collector-specific part of a fight result line.
TaxCollectorListEntry.alliance_information is the alliance of the tax collector. When the client does not know the tax collector as an entity, it names the line after that alliance.
Not sent on its own — it is only ever FighterListEntry.tax_collector_list_entry. proven
Used by
FighterListEntry Fields
#FieldTypeMeaningYou set it 1alliance_informationAllianceInformationThe alliance the tax collector belongs to.
Used to name the line when the tax collector is not known locally.never
  • summary: A tax collector's part of a fight result line: the alliance it belongs to.
  • area: Game.Fight
  • 18 vues
The title a character shows with its name, and the title's text parameter.
Kind struct · Area Game.Common
1. TitleOption.title_id: a title id of the game data (titles). 2. TitleOption.title_parameter, when set, fills the title's text placeholder. 3. Ignore the decoy_3Type member.
Not sent on its own — a record carried by HumanOption.title_option, never sent on its own. proven
Used by
HumanOption Fields
#FieldTypeMeaningYou set it 2title_idint32The title shown, as a title id of the game data.
Explicit presence: absent is not the same as zero.
Observed: 158never 3title_parameterstringText substituted into the title, when it has a placeholder.
Explicit presence: absent is not the same as zero.never
  • summary: The title a character shows with its name, and the title's text parameter.
  • area: Game.Common
  • 19 vues
The player you looked up with /whois does not exist or is not connected.
Kind event · Area Game.Basic
The negative answer to a /whois lookup: nobody matches the name or account tag you searched for.
TO SHOW IT
1. Read WhoIsNoMatchEvent.target: the search you sent, echoed back. 2. Print the name (or account tag) it holds in the "player not found" line. The client writes the character name or the account name and tag, whichever branch of PlayerSearch is set.
Ignore every other member: the client never reads it.
When you may send it
Requires character_loaded inferred Related messages
Answers WhoIsRequest Fields
#FieldTypeMeaningYou set it 2targetPlayerSearchThe search you sent, echoed back: the name or account tag nobody matches.
The same PlayerSearch a /whois sends; named after beta's WhoIsRequest.target.never
  • summary: The player you looked up with /whois does not exist or is not connected.
  • area: Game.Basic
  • 24 vues
Look a player up by name (the /whois chat command).
Kind request · Area Game.Basic
The /whois chat command: ask the server who a player is.
TO SEND IT
1. Put the player to look up in WhoIsRequest.target, a PlayerSearch: the character name typed after /whois goes in its by-name branch. 2. Set WhoIsRequest.verbose to ask for the detailed answer. 3. Leave every other member unset.
The server answers with the player's details, or WhoIsNoMatchEvent when nobody matches.
When you may send it
Requires character_loaded inferred Related messages
You must then send WhoIsNoMatchEvent inferred — nobody matches the search Fields
#FieldTypeMeaningYou set it 2verboseboolAsk for the detailed answer.
Copied from the client's whois action.required 3targetPlayerSearchThe player to look up.
A PlayerSearch; the client fills its by-name branch with the name typed after /whois.required
  • summary: Look a player up by name (the /whois chat command).
  • area: Game.Basic
  • 19 vues
The failed branch of a character selection. It carries no payload at all.
Kind struct · Area Game.Character.Management
THE BRANCH ITSELF IS THE WHOLE MESSAGE. It carries nothing: no code, no reason, no text. The client only observes that this branch was taken and runs its selection-error path.
So there is nothing to inspect and nothing to report to a user beyond "the server refused". Do not go looking for an error code that is not there, and do not read the success branch to find out why - see CharacterSelectionEvent.
Not sent on its own — it is only ever the error branch of CharacterSelectionEvent. inferred
Used by
CharacterSelectionEvent
  • summary: The failed branch of a character selection. It carries no payload at all.
  • area: Game.Character.Management
  • 20 vues
Why a chat line was refused.
Kind enum · Area Game.Chat
Carried by ChatErrorEvent.error. Eight values are named. The other five are not: 0, 5 and 9 print the generic chat error in the official client (beta: UNKNOWN, ALLIANCE, MALFORMED_CONTENT, indistinguishable by behaviour), and 11 and 12 are newer than beta (12 prints its own text, ui.chat.error.12).
Not sent on its own — an enum carried by ChatErrorEvent.error, never sent on its own. inferred
Used by
ChatErrorEvent Values
ValueNumberMeaning RECEIVER_NOT_FOUND1The private message's recipient was not found (unknown, or not connected). INTERIOR_MONOLOGUE2You sent a private message to yourself. NO_GUILD3You wrote in the guild channel without a guild. NO_PARTY4You wrote in the party channel without a party. INVALID_MAP6The channel cannot be used on this map. NO_PARTY_ARENA7You wrote in the arena team channel without an arena team. NO_TEAM8You wrote in the fight team channel outside a fight team. NO_EXCHANGE10You wrote in the exchange channel outside an exchange.
  • summary: Why a chat line was refused.
  • area: Game.Chat
  • 21 vues

Compte

Navigation

Recherche

Recherche

Configurer les notifications push du navigateur

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