Tout ce qui a été publié par Smooth
-
BlockListEvent
Your whole block list: every account you have blocked. Kind event · Area Game.Social The full block list. It replaces the one you hold. Blocking lasts: the server keeps the list and sends it again. Ignoring does not: an ignored account is never in this list. The ignore list lives only for the session; the official client starts it empty and only IgnoreEvent adds to it. No message sends an ignore list. TO HANDLE IT 1. Replace your block list with BlockListEvent.blocked: one ContactInformation per blocked account, keyed by its account id. 2. Ignore every other member: no client code reads them. When you may send it Requires character_loaded inferred Related messages Reply not yet recovered: It answers BlockListRequest, which has no signature here yet. The official client sends that empty request, together with FriendListRequest and AcquaintanceListRequest, each time its friends window refreshes its data. Fields #FieldTypeMeaningYou set it 1blockedrepeated ContactInformationEvery blocked account, one entry each. Each entry is a ContactInformation: an account id and its account tag.never
-
AllianceInformation
An alliance's identity and card: the record a character's alliance branch carries. Kind struct · Area Game.Common An alliance, as carried by CharacterInformation.alliance_information. Beta declares it as a uid, a tag, a name, an emblem and a card (creation date, member, subarea and tax-collector counts, recruitment); this build's members are not named yet, so read it by structure only. Not sent on its own — a record carried by CharacterInformation.alliance_information and other alliance messages, never sent on its own. inferred Used by AllianceOption CharacterInformation TaxCollectorListEntry No fields you may set.
-
AddFailureReason
Why the server refused to add an account to one of your contact lists. Kind enum · Area Game.Social Carried by IgnoreEvent.Error.reason. In beta the friend, contact and block failures carry it too; those messages have no signature here yet. All six values are named. The official client shows one fixed text per value (quoted on each value) and the "unknown reason" text for any other number. Not sent on its own — an enum carried by IgnoreEvent.Error.reason, never sent on its own. inferred Used by IgnoreEvent.Error Values ValueNumberMeaning ADD_FAILURE_REASON_UNKNOWN0No specific reason. Beta calls it UNKNOWN. That name would collide with Alignment's UNKNOWN: both enums are top-level in Game.proto, and proto3 puts enum values in the enclosing scope. The official client shows ui.common.unknowReason ("Unknown reason"), the same text it shows for any number it does not know. OVER_QUOTA1The list is full. The official client shows ui.social.friend.addFailureListFull: "This list cannot exceed 200 players (100 if you are not a subscriber)." NOT_FOUND2No character or account of that name was active recently on this server. The official client shows ui.social.friend.addFailureNotFound. EGOCENTRIC3You named yourself. The official client shows ui.social.friend.addFailureEgocentric: "You cannot add yourself to your list." IS_DOUBLE4The account is already in this list. The official client shows ui.social.friend.addFailureAlreadyInList: "Already in your list." IS_CONFLICTING_DOUBLE5The account is already in another of your lists, and the two exclude each other. The official client shows ui.social.friend.addFailureAlreadyInConflictedList: "Already in another list."
-
AccountTag
An Ankama account's public identity: a nickname and its numeric tag, shown as Name#1234. Kind struct · Area Game.Common The public name of an Ankama ACCOUNT, as opposed to one of its characters: a nickname plus a short numeric tag that tells apart accounts sharing a nickname. Players see it as Name#1234. TO READ IT 1. Read AccountTag.nickname and AccountTag.tag. 2. To show it, write the nickname, then #, then the tag. That is exactly how the client prints it in its contact messages. 3. Ignore every other member: no client code reads them. TO SEND IT (for example as ChatPrivateMessageRequest.tag, to whisper an account instead of a character) 1. Put the part before # in AccountTag.nickname. 2. Put the digits after # in AccountTag.tag, without the #. 3. Leave every other member unset. Not sent on its own — it travels inside ChatPrivateMessageRequest.tag, ContactInformation.account_tag and the other contact records. proven Used by ChatPrivateMessageRequest ContactInformation Fields #FieldTypeMeaningYou set it 2nicknamestringThe account's nickname: the part before # in Name#1234. The client prints it first, then #, then AccountTag.tag.conditional 3tagstringThe account's numeric tag: the digits after # in Name#1234. A string of digits, without the #; it tells apart accounts that share a nickname.conditional
-
0.7.0
Vos bots peuvent désormais discuter automatiquement dans le chat du jeu. Créez des profils de chat dans Asteroboard, et vos bots publieront vos annonces, répondront à leurs messages privés comme le ferait un joueur, réagiront aux messages des autres joueurs dans les canaux, conserveront leur statut et obéiront aux commandes envoyées en message privé depuis vos autres comptes, le tout grâce à un système de protection qui garantit le respect des limites imposées par le jeu. Les nouvelles alarmes vous avertissent et agissent à votre place dès qu’un modérateur, un message privé, une mention ou n’importe quel message du jeu que vous avez choisi concerne l’un de vos bots. Les notifications peuvent apparaître dans Asteroboard ou être envoyées vers n’importe quel service Web, y compris votre téléphone. Enfin, l’image Docker d’Asterobot repose désormais sur Docker Hardened Images, fonctionne avec des permissions strictement limitées et ouvre son interface Web dès que vous publiez son port. ✨ AjoutsDes bots qui discutent comme des joueurs : le nouveau module de chat permet à un bot de communiquer dans le jeu à partir des profils de chat que vous lui attribuez. Activez-le depuis le nouvel onglet Chat du bot, choisissez les fonctionnalités à activer (annonces, réponses, déclencheurs, commandes et statut), puis sélectionnez les profils à utiliser dans l’ordre souhaité. Suivez son activité en temps réel : conditions d’attente de chaque annonce, état du système de protection et 200 dernières lignes, commandes et activations de déclencheurs. Le mode Simulation écrit dans la console ce que le bot aurait dit, ce qui permet de tester un profil sans risque. Des annonces automatiques : chaque annonce publie l’un de ses messages dans les canaux que vous choisissez, attend un délai aléatoire défini par vos soins, puis recommence tant que ses conditions sont remplies : heures de la journée et jours de la semaine, carte, sous-zone ou zone, objet dans l’inventaire, kamas, niveau, participation ou non à un combat, déplacement ou non. Une annonce peut s’arrêter après un nombre défini d’envois, une durée déterminée ou à une date précise. Vous pouvez également lui faire jouer une émoticône ou une emote à chaque publication. Des réponses aux messages privés comme le ferait un joueur : le bot répond en appliquant les règles de réponse de ses profils. La première règle correspondante l’emporte, par exemple une règle pour les joueurs demandant un prix et une autre pour les autres messages. Le bot attend le temps nécessaire pour lire le message et saisir sa réponse. Par défaut, un joueur ne reçoit qu’une réponse par heure : le bot répond au début de la conversation, puis reste silencieux. Il ne répond jamais à vos propres bots ni aux membres du staff. Ne manquez aucun acheteur : les déclencheurs réagissent aux messages des autres joueurs dans les canaux, par exemple une recherche dans le canal Commerce concernant un objet vendu par le bot, une mention de son personnage ou un message contenant un lien vers un objet. Un déclencheur peut envoyer un message privé au joueur, publier un message dans un canal, déclencher une alarme, transmettre une information au script, ajouter le joueur à la liste des ignorés, jouer une émoticône ou une emote, inviter le joueur dans le groupe ou mettre le chat en pause. Les actions s’exécutent dans l’ordre que vous choisissez, avec une limite par défaut d’un déclenchement par heure et par joueur. Contrôlez un bot depuis vos autres comptes : envoyez-lui en message privé !stop ou !start pour arrêter ou démarrer son script, !pause ou !resume pour mettre son chat en pause ou le reprendre, !say pour lui faire publier un message dans un canal, !status pour consulter son niveau, sa position, ses kamas et ses pods, ou !disconnect pour le déconnecter et, si vous le souhaitez, le reconnecter plus tard. Vos autres comptes ainsi que les personnages autorisés par un profil sur le serveur du bot peuvent envoyer des commandes. Un !stop envoyé par un inconnu reste un simple message. Un statut qui reste cohérent : un profil de chat peut définir le statut du personnage à chaque connexion : Disponible, Absent avec votre message personnalisé, Privé ou Solo. Si vous modifiez vous-même le statut, votre choix reste prioritaire jusqu’à la prochaine connexion. Si le profil cesse de définir un statut, le statut précédent est rétabli. Discutez sans vous faire réduire au silence : chaque message envoyé par un bot, qu’il provienne de ses profils, de ses scripts ou de la console, passe par le système de protection du chat. Celui-ci envoie les messages un par un, avec une limite de 6 messages par minute par défaut, configurable de 1 à 30 dans l’onglet Chat. Il respecte exactement le délai de récupération imposé par le jeu pour chaque canal avant d’y envoyer un nouveau message. Après le message « Too much spam! », il suspend les envois pendant une durée comprise entre 5 minutes et une heure, et il reste silencieux aussi longtemps que dure une mise au silence. L’option Arrêter les envois interrompt immédiatement les messages du bot, à l’exception de vos propres messages et de ceux des alarmes. Des profils de chat réutilisables : chaque profil est un fichier contenant des annonces, des réponses, des déclencheurs, des commandes et un statut, stocké dans le dossier chatprofiles. Vous pouvez créer, copier, importer et exporter vos profils. Un même profil peut être utilisé par autant de bots que vous le souhaitez, et un bot peut en utiliser plusieurs simultanément. En cas de conflit, les variables du premier profil sont prioritaires. Les packages peuvent intégrer leurs propres profils dans chatprofiles/<name>.json. Chaque profil est vérifié lors de son enregistrement : les erreurs indiquent le champ concerné, et des avertissements signalent les objets, cartes ou zones absents de votre version du jeu, ainsi que les variables qui ne sont définies nulle part. La nouvelle page Profils de chat dans Asteroboard : elle permet de créer et de modifier les profils à l’aide d’un formulaire affiché à côté du JSON, qui se met à jour en temps réel. Chaque message est prévisualisé et vérifié par rapport aux limites du jeu avant que le bot ne l’envoie. Des messages qui ne semblent jamais préfabriqués : utilisez des formulations choisies aléatoirement ({Hi|Hello}), le nom du personnage, son niveau, sa carte, ses kamas ou ses pods, vos propres variables et de véritables liens vers les objets de l’inventaire. Un message auquel il manque un objet ou une valeur requise n’est pas envoyé. Les scripts peuvent communiquer dans le chat grâce au nouveau module asterobot:chat : utilisez say() pour publier un message dans un canal et whisper() pour envoyer un message privé à un joueur. Les deux fonctions passent par le même système de protection et prennent en charge les formulations aléatoires, les variables et les liens vers les objets. Si un message n’est pas envoyé, le script reçoit la raison du refus. Les scripts peuvent piloter le module de chat pendant leur exécution : ils peuvent l’activer avec enable() et le désactiver avec disable(), choisir ses fonctionnalités et ses profils avec setParts() et setProfiles() (y compris un objet profil créé directement par le script), suspendre et reprendre les envois avec pause() et resume(), définir des variables avec setVariable(), modifier les indicateurs utilisés par les conditions des profils avec setFlag() et activer le mode simulation avec setDryRun(). Lors d’une session relayée, seul le paramètre d’activation enregistré permet d’activer ou de désactiver le module. Les scripts peuvent prendre en charge les conversations : onAnswer() permet à un script de répondre lui-même aux messages privés, avec jusqu’à 30 secondes pour produire une réponse asynchrone (async). onChat() reçoit les événements concernant chaque message envoyé, refusé ou traité, chaque annonce terminée ou épuisée de son objet, chaque suspension temporaire des envois et chaque déclencheur transmettant une information au script, avec le message à l’origine du déclenchement. Des alarmes qui surveillent vos bots à votre place : les événements surveillés incluent un membre du staff qui contacte un bot, le prévient, le réduit au silence ou se trouve sur sa carte, un joueur qui lui envoie un message privé et le nom de son personnage mentionné dans un canal. Les règles configurées dans la nouvelle page Alarmes sont centralisées pour tous vos bots et peuvent surveiller chacun d’eux ou seulement certains. Elles déterminent les actions à effectuer : vous notifier, mettre le chat en pause, publier un message ou envoyer un message privé, lancer un package ou le script du bot, arrêter le script, attendre, envoyer un message dans le jeu, écrire dans la console du bot, définir un indicateur utilisé par les profils de chat ou déconnecter le bot pour le reconnecter ultérieurement. Par défaut, une intervention du staff met le chat du bot en pause pendant 30 minutes et vous envoie une notification. Les messages privés et les mentions déclenchent également une notification dans Asteroboard. Les règles sont stockées dans alarms.json. Des alarmes sur votre téléphone : une alarme peut être envoyée vers n’importe quel service Web, y compris une application de messagerie, grâce à une requête HTTP configurable depuis la page Alarmes. Vous définissez sa méthode, son URL, ses en-têtes et son corps. Les informations de l’alarme remplissent automatiquement les champs, avec un échappement adapté à leur emplacement. Le bouton Tester envoie une requête à partir d’un événement d’exemple et affiche la réponse du service. En cas d’échec temporaire, la requête est réessayée après 2, 10 et 30 secondes. En cas d’échec définitif, la raison est affichée dans la console du bot. Des alarmes pour tous les messages du jeu : indiquez le nom de n’importe quel événement envoyé par le jeu à un bot, comme game:CharacterLevelUpEvent, pour accéder à ses champs dans vos règles. Une règle peut tester le contenu d’un événement, par exemple une mise au silence uniquement, un niveau supérieur à 199 ou une ligne contenant « bot », et limiter sa fréquence de déclenchement pour chaque bot. Les messages qui ne correspondent à aucune règle ne génèrent aucun coût de traitement. Les alarmes surveillent également le module de chat : les événements « Too much spam! », les refus d’envoi dans un canal, l’épuisement de l’objet d’une annonce, la fin d’une annonce et les événements déclenchés par les profils de chat sont tous disponibles dans la page Alarmes. Les scripts peuvent déclencher leurs propres alarmes grâce au nouveau module asterobot:alarms : un script peut, par exemple, signaler un objet trouvé à un prix inférieur à un seuil défini pour permettre à vos règles de réagir. Utilisez raise("cheapItem", "Wheat at 8 k"). La fonction onAlarm() reçoit tous les autres événements du bot au moment où ils se produisent, indépendamment des règles configurées. Toutes ces fonctionnalités sont également accessibles via l’API d’Asterobot : GET / PUT /botmanager/{name}/chat/module : lire et enregistrer le module de chat d’un bot. POST .../chat/send : faire envoyer un message par un bot via le système de protection. POST .../chat/pause et .../chat/resume : suspendre et reprendre les envois. /chatprofiles : gérer les profils de chat. POST /chatprofiles/preview : prévisualiser un message avec plusieurs valeurs. GET / PUT /alarms : lire et enregistrer les alarmes. POST /alarms/destinations/test : tester une destination. Les événements botManager.chatModuleUpdated, botManager.chatActivity, chatProfiles.updated, alarms.updated, alarms.fired et alarms.notified signalent les modifications et les déclenchements correspondants. Une nouvelle section Chat dans le guide utilisateur : disponible en anglais et en français, elle présente le module de chat, les profils de chat et les alarmes. La référence des scripts documente asterobot:chat et asterobot:alarms, avec l’ensemble de leurs messages d’erreur. Un nouveau tutoriel, Vendeur de blé, montre comment configurer un bot qui vend du blé dans le canal Commerce au prix de votre choix, publie une annonce, indique son stock aux joueurs qui demandent le prix et envoie un message privé à chaque acheteur. Les scripts peuvent gérer la liste des joueurs ignorés : IgnoreRequest permet d’ajouter un joueur à cette liste, et IgnoreEvent fournit la réponse du serveur : IgnoreEvent.Success si l’ajout a réussi, ou IgnoreEvent.Error avec la raison de l’échec. Parmi les raisons possibles figurent AddFailureReason, notamment lorsque la liste est pleine ou que le joueur est inconnu. BlockListEvent fournit la liste des comptes bloqués, chaque compte étant décrit par un ContactInformation contenant son AccountTag, au format Nom#1234 visible par tous. Les scripts peuvent rechercher et gérer les maisons en vente : HousesToSellRequest et HousesToSellFiltersRequest permettent de rechercher les maisons selon leur prix, leur zone, le nombre de pièces, de coffres et de métiers disponibles, avec un tri défini par RealEstateOrder. HousesToSellEvent renvoie les résultats page par page. HouseBuyRequest permet d’acheter une maison, tandis que HouseSellRequest permet de mettre une maison en vente, de modifier son prix ou de retirer son annonce. Les scripts peuvent limiter l’expérience gagnée par le personnage : PlayerExperienceSetRequest permet de définir le pourcentage d’expérience reçu, de 0 à 100 %. Ils peuvent également consulter les modificateurs appliqués aux attaques de son arme, chacun représenté par un WeaponModifier dans CharacterCharacteristics. Les scripts disposent d’informations plus détaillées sur les personnages rencontrés : les données décrivant un personnage incluent désormais sa guilde, son alliance, sa carte de guilde et son rang (GuildInformation, AllianceInformation, SocialMember et RankInformation), son état en mode épique (CharacterEpicInformation) et son rôle dans un groupe auquel vous appartenez ou dans lequel vous avez été invité (PartyMemberInformation et PartyInvitationMemberInformation). CharacterInformation indique également le début de la session du personnage et la fin de sa dernière session. PartyJoinEvent indique le Dungeon associé au groupe, MoodUpdateEvent identifie le personnage dont l’émoticône d’humeur a changé, CharacterColors indique le nombre d’emplacements de palette de couleurs débloqués et le nombre total disponible, et FightMutantInformation identifie le monstre incarné par un combattant mutant. Configurez les paramètres depuis l’environnement : utilisez notamment docker run -e ou Docker Compose pour définir les variables suivantes : ASTEROBOT_SERVER_LISTEN_ADDRESS : définit l’adresse et le port de l’interface Web. ASTEROBOT_SERVER_SKIP_OPEN_FRONTEND : empêche Asterobot d’ouvrir un navigateur. ASTEROBOT_WEBSITE_SHOW_QR_CODE : affiche le lien de connexion au site sous forme de QR code à scanner avec votre téléphone, directement dans docker logs. Lorsqu’une variable est définie, l’écran des paramètres refuse de modifier le paramètre correspondant et indique le nom de la variable concernée. Le fichier de configuration conserve sa propre valeur, qui sera réutilisée lorsque la variable ne sera plus définie. Sachez exactement ce que vous exécutez : chaque image Docker contient désormais la liste de ses composants et les métadonnées standard, notamment sa version, sa date de publication et son site Web. Docker Hub et les outils d’analyse de sécurité peuvent ainsi afficher ces informations. 🔄 ModificationsLes messages saisis dans la console d’un bot passent désormais par son système de protection du chat, avant tous les autres messages du bot. Lorsque le jeu indique qu’un canal est temporairement indisponible, par exemple avec « You will be able to post again in 37 seconds », le système attend exactement le délai indiqué puis envoie automatiquement votre message. La console affiche également le temps d’attente. La zone de saisie accepte jusqu’à 256 caractères, comme dans le jeu. La console masque les messages des joueurs ignorés par votre personnage, comme le fait le jeu. Cela s’applique aussi bien aux joueurs ignorés par un déclencheur d’un profil de chat qu’à ceux ignorés par votre client de jeu lorsqu’un bot est relayé, et ce jusqu’à ce que le personnage quitte le jeu. Les messages des membres du staff restent toujours visibles. L’interface Web de l’image Docker est accessible dès que son port est publié, sans avoir besoin de modifier un fichier de configuration. L’option -p 127.0.0.1:8080:8080 limite l’accès à votre ordinateur. Si vous aviez défini un autre port dans le fichier de configuration, l’image écoute désormais sur le port 8080 par défaut. Pour choisir une autre adresse ou un autre port, utilisez ASTEROBOT_SERVER_LISTEN_ADDRESS, par exemple 0.0.0.0:9000. Le champ de Character qui contient la classe et l’apparence du personnage s’appelle désormais CharacterInformation, conformément à la terminologie du jeu, au lieu de CharacterLook. Les deux résultats possibles de la sélection d’un personnage portent désormais les noms CharacterSelectionEvent.Success et CharacterSelectionEvent.Error, afin d’éviter toute confusion avec IgnoreEvent.Success et IgnoreEvent.Error. 🗑️ Fonctionnalités suppriméesDocker Hub ne conserve désormais que la dernière version publiée, identifiée par son numéro de version et par le tag latest. Les anciennes versions sont supprimées lors de chaque nouvelle publication. L’image asterobot/asterobot permet ainsi de récupérer systématiquement la dernière version d’Asterobot. 🐛 CorrectionsL’image Docker n’affiche plus l’erreur « Failed to open frontend » à chaque démarrage : aucun navigateur n’a besoin d’être ouvert à l’intérieur d’un conteneur. Les journaux de docker logs et les fichiers de log ne contiennent plus de codes de couleur inutiles : les couleurs sont désormais réservées au terminal. La variable NO_COLOR permet également de les désactiver dans celui-ci. 🔒 SécuritéL’image Docker repose désormais sur Docker Hardened Images. Elle ne contient ni shell ni gestionnaire de paquets : uniquement Asterobot et les certificats nécessaires à son fonctionnement. Le programme s’exécute avec un utilisateur non privilégié et son image de base est mise à jour à chaque publication. Le conteneur fonctionne avec un système de fichiers en lecture seule, toutes les capacités Linux supprimées et l’élévation de privilèges bloquée. Les options recommandées sont : --read-only --tmpfs /tmp --cap-drop ALL --security-opt no-new-privileges
-
0.6.0
Vos bots parlent désormais d’eux-mêmes. Rédigez vos profils de chat une seule fois : ils publient vos annonces, répondent aux messages privés qu’ils reçoivent, réagissent aux messages des autres joueurs et obéissent aux commandes que vous leur envoyez en chuchotant, tout en respectant les limites imposées par le jeu. La nouvelle page Alarmes vous prévient dès qu’un modérateur, un message privé ou une mention concerne l’un de vos bots, ici ou sur votre téléphone, et déclenche les actions que vous avez définies. Enfin, Asteroboard adopte désormais les couleurs d’Asterobot, avec 13 thèmes et 12 polices pour personnaliser l’interface à votre goût. Le chat et les alarmes nécessitent la dernière version d’Asterobot : pensez également à le mettre à jour. ✨ AjoutsProfils de chat : une nouvelle page dans le menu. Retrouvez tous les profils de chat utilisables par vos bots, qu’ils vous appartiennent ou proviennent de vos packages, avec leur contenu, leur provenance et leur état : Prêt, Inutilisable ou accompagné d’avertissements. Créez un profil avec Nouveau profil, importez-en un partagé par quelqu’un d’autre avec Importer, ou utilisez son menu pour le Copier, l’Exporter ou le Supprimer. Les profils provenant des packages sont en lecture seule : copiez-en un pour pouvoir le modifier. La liste se met à jour automatiquement. Des annonces qui se publient toutes seules. Une annonce envoie l’un de ses messages dans les canaux que vous choisissez, avec le nom et la couleur du personnage tels qu’ils apparaissent dans le jeu. Elle attend ensuite un délai aléatoire compris entre les deux intervalles que vous avez définis avant de recommencer. Définissez précisément les conditions d’envoi : certaines heures ou certains jours, une carte, une sous-zone ou une zone, la présence d’un objet dans l’inventaire, un montant de kamas ou un niveau donné, la participation ou non à un combat, ou encore le fait d’être en déplacement. Programmez l’arrêt après un certain nombre d’envois, une durée déterminée ou à une date précise. Vous pouvez également ajouter une émoticône ou une emote à chaque envoi. Des messages rédigés une fois, formulés de plusieurs façons. La syntaxe {Hi|Hello} sélectionne aléatoirement une formulation. {item:289} insère un lien vers le véritable objet de l’inventaire, {name} indique le nom du personnage et vos propres variables, comme {price}, permettent de compléter le message. Chaque message dispose d’un aperçu en temps réel qui montre son rendu final et sa longueur par rapport aux limites du jeu, notamment celles concernant la longueur des messages et les liens vers les objets. Réponses aux messages privés. Les règles de réponse permettent à vos bots de répondre aux messages privés qu’ils reçoivent. La première règle dont les conditions sont remplies est appliquée, avec une réponse choisie aléatoirement parmi celles qu’elle contient. Vous pouvez, par exemple, prévoir une réponse pour un acheteur qui demande un prix et une autre pour toutes les autres demandes. Par défaut, un joueur ne reçoit qu’une réponse par heure : le bot répond ainsi au début de la conversation, puis reste silencieux. Vos propres bots ne reçoivent jamais de réponse automatique. Le paramètre Délai définit le temps d’attente avant la réponse, comme le ferait un joueur : un instant pour lire, puis le temps nécessaire pour taper. Déclencheurs basés sur les messages des joueurs. Un déclencheur surveille les canaux pour repérer les messages pertinents : un joueur qui recherche en commerce un objet vendu par votre bot, une ligne mentionnant votre personnage ou contenant un lien vers un objet. La détection peut s’effectuer par mots-clés (sans tenir compte de la casse ni des accents), par texte ou par expression régulière (regex). Le déclencheur peut ensuite envoyer un message privé au joueur, écrire dans un canal, l’inviter dans le groupe, jouer une émoticône ou une emote, l’ajouter à la liste des ignorés, mettre le chat en pause, transmettre une information au script ou déclencher une alarme. Vous choisissez l’ordre des actions. Par défaut, chaque joueur ne peut déclencher ces actions qu’une fois par heure. Commandes envoyées depuis vos autres comptes. Envoyez à un bot les commandes suivantes en message privé : !stop ou !start pour arrêter ou démarrer son script, !pause et !resume pour mettre son chat en pause ou le reprendre, !say pour lui faire envoyer un message dans un canal, !status pour obtenir son niveau, sa position, ses kamas et ses pods, ou !disconnect pour le déconnecter temporairement. Seuls vos autres bots et les noms que vous avez autorisés peuvent exécuter ces commandes, en utilisant le préfixe de votre choix. Pour les autres joueurs, une commande n’est qu’un simple message. Un statut défini automatiquement. À chaque connexion, un profil peut définir le statut du personnage comme dans le menu du jeu : Disponible, Absent avec votre propre message d’absence, Privé ou Solo. Un éditeur de profils clair et pratique. Chaque profil se modifie dans un formulaire organisé par sections, affiché à côté de son JSON. Les deux restent synchronisés pendant la saisie. Les délais se renseignent en secondes, en minutes ou en heures. Lorsqu’une erreur empêche l’enregistrement, le champ concerné est directement mis en évidence. La section Bon à savoir signale les objets, cartes ou zones absents de votre version du jeu, ainsi que les variables qui ne sont définies nulle part. Vous pouvez renommer librement un profil : tous les bots qui l’utilisent adoptent automatiquement son nouveau nom. Intégrez des profils de chat à vos packages. L’éditeur de packages permet d’ouvrir les fichiers .json du dossier chatprofiles d’un package. L’option Ajouter un fichier permet d’ajouter un fichier à partir d’un chemin tel que chatprofiles/seller.json. Un onglet Chat pour chaque bot. Activez le module Chat, puis choisissez les fonctionnalités à utiliser : Annonces, Réponses, Déclencheurs, Commandes et Statut. Sélectionnez les profils de chat du bot dans l’ordre souhaité, testez-les sans risque avec Simulation, qui écrit les messages dans la console au lieu de les envoyer dans le jeu, et définissez sa limite de Messages par minute. L’onglet affiche également les modifications apportées par le script du bot pendant son exécution. Visualisez précisément les messages envoyés par votre bot. La section Annonces indique la date du prochain envoi de chaque annonce, ce qu’elle attend et combien de fois elle a été envoyée. La section Activité conserve les 200 dernières lignes d’activité : messages, commandes, déclencheurs, fins d’annonces et périodes de ralentissement, avec les informations sur l’expéditeur, le destinataire et le canal ou l’emplacement concernés. Respect des limites du jeu pour chaque message. Les messages sont envoyés un par un, en respectant le délai de récupération propre à chaque canal et une fréquence de quelques messages par minute au maximum. Lorsque le jeu répond « Too much spam! » ou réduit au silence le personnage, le chat se met en attente. L’onglet Chat indique jusqu’à quand cette attente dure. Arrêtez tous les envois en un clic. L’option Arrêter les envois bloque tous les messages du module Chat et des scripts jusqu’à ce que vous cliquiez sur Reprendre. Les messages que vous saisissez dans la console et ceux générés par le système d’alarmes continuent d’être envoyés. Alarmes : une nouvelle page dans le menu. Définissez les réactions à déclencher lorsqu’un membre du staff contacte l’un de vos bots, le prévient, le réduit au silence ou se trouve sur sa carte ; lorsqu’un joueur lui envoie un message privé ; lorsque le nom de son personnage est mentionné dans un canal ; ou lorsque le chat rencontre l’erreur « Too much spam! », qu’un message est refusé, ou qu’une annonce est épuisée ou terminée. Le système fonctionne dès le départ : par défaut, l’intervention du staff met le chat du bot en pause pendant 30 minutes, tandis que les interventions du staff, les messages privés et les mentions déclenchent une notification. Comme les profils de chat, les alarmes se configurent dans un formulaire affiché à côté de leur JSON. Des règles qui agissent à votre place. Une règle peut mettre le chat en pause, envoyer un message ou un message privé, lancer un package, arrêter le script, attendre, envoyer un message dans le jeu, écrire dans la console, définir un indicateur exploitable par les profils de chat, déconnecter le bot puis le reconnecter ultérieurement, ou vous envoyer une notification. Les actions sont exécutées dans l’ordre que vous choisissez. Une règle peut s’appliquer à tous les bots ou seulement à certains, vérifier le contenu de l’événement (par exemple, uniquement une mise au silence ou un message contenant le mot « bot ») et limiter sa fréquence de déclenchement. Déclenchez des règles sur n’importe quel événement. Une règle peut également surveiller n’importe quel message émis par le jeu, comme game:CharacterLevelUpEvent, un déclencheur spécifique de vos profils de chat ou un événement généré par votre propre script. Des notifications où que vous soyez. Les alarmes apparaissent sur la page actuellement ouverte. Le bouton Ouvrir permet d’accéder directement au bot concerné. Une notification liée à l’intervention d’un membre du staff reste affichée jusqu’à ce que vous la fermiez. La section Dernières alarmes répertorie les 100 dernières alarmes, avec la règle à l’origine de chacune et le détail des actions exécutées. Recevez les alarmes sur votre téléphone ou ailleurs. Les Destinations permettent d’envoyer les alarmes vers n’importe quel service Web, application de messagerie, service de notifications push ou serveur personnel. Configurez une requête HTTP en précisant la méthode, l’URL, les en-têtes et le corps de la requête. Celui-ci peut intégrer les informations de l’alarme, telles que {bot}, {sender} et {text}. Le bouton Tester envoie une requête avec la configuration actuelle et affiche la réponse du service. Une nouvelle apparence conçue pour Asterobot. Asteroboard adopte désormais les couleurs d’Asterobot par défaut : le dégradé bleu-violet du logo sur les boutons principaux, un bleu nuit profond inspiré des visuels d’Asterobot pour le mode sombre, des nuances de gris subtilement teintées, des badges arrondis en forme de pilule et la police Inter. Thèmes. Dans Préférences > Apparence > Thème, changez l’apparence générale en un clic. Choisissez Asterobot ou l’un des 12 thèmes prédéfinis : Default, Mono, Cobalt, Sky, Mint, Iris, Crimson, Coral, Sunset, Carbon, Bubblegum et Parchment. Chaque thème possède ses propres couleurs, sa police, ses arrondis et son style de boutons, de champs et de cartes. Police. Dans Préférences > Apparence > Police, choisissez la typographie de l’ensemble de l’application parmi 12 polices, chacune présentée avec son propre rendu. Tous les thèmes et toutes les polices fonctionnent hors ligne. Ils sont intégrés à l’application : vous pouvez donc changer d’apparence sans connexion, comme pour le reste d’Asteroboard. 🔄 ModificationsLa console respecte automatiquement les délais de récupération des canaux. Lorsque le jeu indique qu’un canal est temporairement restreint, votre message attend exactement le temps nécessaire, puis est envoyé automatiquement. La zone de saisie de la console accepte jusqu’à 256 caractères, comme dans le jeu. La console masque les joueurs ignorés par votre personnage, comme le fait le jeu, jusqu’à ce que le personnage quitte la partie. Les messages des membres du staff restent toujours visibles. La couleur principale, la couleur neutre et le rayon des arrondis permettent désormais d’affiner le thème. Le choix d’un thème réinitialise ces paramètres pour restituer fidèlement son apparence d’origine. L’option Valeur par défaut rétablit la valeur définie par le thème. 🐛 CorrectionsLa barre de titre de l’application installée adopte immédiatement les nouvelles couleurs. Lorsque vous changez de thème ou de couleur neutre, la barre de titre est désormais mise à jour instantanément, sans attendre le prochain rechargement de l’application ou le changement de mode de couleur.
-
Mapping de message
Hello, merci. je rajoute krl pour la prochaine version 👍
-
Module de combat, gérer combat avec pnj ou autre joueur ?
C'est réparé : https://asterobot.net/changelog/asterobot/062-r12/
-
ChatErrorEvent.Error
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.
-
CharacterSelectionEvent.Error
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
-
0.5.2
Le chat de la console du bot fonctionne désormais comme celui du jeu, avec ses canaux, ses couleurs et ses messages privés. Jouez les smileys et les émotes de votre personnage, définissez son statut comme dans le jeu et retrouvez vos personnages avec les icônes et les portraits de classe propres à Dofus. ✨ AjoutéUne console de chat identique à celle du jeu : chaque ligne s’affiche dans la couleur de son canal, récupérée directement depuis les fichiers de Dofus. Les messages privés indiquent leur expéditeur (« de ») et leur destinataire (« à »). La console affiche également les erreurs de chat du jeu, les lignes d’information, les erreurs liées aux objets, les messages des objets vivants, la date du calendrier et les changements de statut, avec les formulations du jeu et dans la langue du bot. Les liens vers les objets affichent leur nom. Dès l’ouverture de la console, l’historique des messages précédents est disponible, sans avoir besoin d’activer quoi que ce soit. Écrire dans n’importe quel canal : le nouveau bouton de sélection des canaux permet de choisir où envoyer son message. Un message commençant par le raccourci d’un canal, comme /b pour le commerce ou /r pour le recrutement, est envoyé dans ce canal, comme dans le jeu. Envoyez un message privé avec /w Nom, ou cliquez sur un nom dans le chat. Le filtre de chat du jeu : la nouvelle liste Channels, située à gauche de la zone de chat, affiche tous les canaux sous leur nom et leur raccourci officiels. Cochez les canaux souhaités pour y abonner votre personnage, exactement comme avec le filtre du jeu. Les messages d’Asterobot et des scripts peuvent également être affichés ou masqués depuis cette même liste. Définir le statut de votre personnage depuis n’importe quelle page de bot : le menu situé à côté du nom du bot reprend le menu de statut du jeu, avec les options Available (Disponible), Away (Absent), Away… (Absent avec message), Private (Privé) et Solo (Solo). Chaque option reprend le texte, la description et la couleur du point de statut du jeu. Le mode Away… permet de définir un message que le jeu envoie aux personnes qui contactent votre personnage en privé. Le menu affiche toujours le statut confirmé par le jeu, même si vous le modifiez depuis votre client de jeu connecté via un relais. Les smileys et les émotes dans la console : un bouton smiley situé à côté de la zone de chat ouvre la fenêtre Emotes and Emoticons du jeu. Cliquez sur un smiley ou une émote pour le jouer directement en jeu. L’onglet Smilies affiche tous les packs de smileys possédés par votre personnage, avec les images du jeu. L’onglet Emotes répertorie les émotes connues par leur nom et propose une recherche qui ignore les accents. Chaque émote respecte son délai de recharge avant de pouvoir être rejouée. Tous les éléments sont affichés dans la langue du bot. Vos personnages représentés comme dans Dofus : la page du personnage affiche désormais toutes ses caractéristiques, ses éléments, ses résistances et ses points de vie avec les icônes du jeu. Chaque emplacement d’équipement vide reprend également le contour d’origine du jeu. Le portrait de classe de votre personnage, correspondant à son genre, apparaît désormais sur sa page de personnage, en haut de chaque page de bot et dans la liste des bots. 🗑️ SuppriméLe bouton Live chat de la console, la liste Sources et le flux Chat de la section Live data ont été supprimés. Asterobot conserve désormais directement l’historique du chat : il n’est donc plus nécessaire d’activer cette fonctionnalité. 🐛 CorrigéLes notifications ne s’affichent plus plusieurs fois inutilement : la notification de mise à jour ne s’affiche désormais qu’une seule fois, au lieu de réapparaître à chaque navigation entre une page de bot et une autre page. Une notification laissée ouverte reste également ouverte lorsque vous changez de page. Les autres notifications ponctuelles, comme le rappel d’abonnement, ne réapparaissent plus non plus.
-
0.6.2
Le chat de la console du bot, comme dans le jeu, avec ses canaux, ses couleurs et ses messages privés. Jouez les smileys et les émotes de votre personnage, définissez son statut comme dans le jeu et retrouvez vos personnages avec les icônes et les portraits de classe propres à Dofus. Les combats de quête dans lesquels un PNJ combat aux côtés de votre personnage sont désormais gérés comme n’importe quel combat contre des monstres. De plus, un bot Full Socket vous avertit dès le début d’un combat si aucun module ne le prendra en charge. ✨ AjoutéPlus de déconnexions silencieuses pendant les combats : sur un bot Full Socket, la console avertit désormais dès le début d’un combat qu’aucun module ne le prendra en charge lorsque le module de combat est désactivé ou ne gère pas ce type de combat. Cela permet d’être prévenu avant que le serveur ne déconnecte le personnage inactif quelques minutes plus tard. Lorsque le module quitte un combat, la console indique également le type de combat du jeu, ce qui facilite le signalement des combats qu’elle ne reconnaît pas. Le statut de votre personnage, suivi automatiquement : Asterobot connaît le statut de votre personnage dès son entrée en jeu, quel que soit le moyen utilisé pour le modifier, y compris depuis votre client de jeu connecté via un relais. Il sait si votre personnage est disponible, absent (avec son message d’absence), privé ou en mode solo. Le nouveau menu de statut d’Asteroboard affiche ainsi toujours le statut confirmé par le jeu. L’API d’Asterobot et les assistants IA qui y sont connectés peuvent également le consulter. Les smileys et les émotes, comme dans le jeu : Asterobot suit les émotes connues par votre personnage, celles qu’il apprend ou perd, ainsi que ses packs de smileys. Dès que le personnage entre en jeu, la nouvelle fenêtre des smileys d’Asteroboard propose exactement les options disponibles dans le jeu. L’API d’Asterobot et les assistants IA qui y sont connectés peuvent également accéder à ces informations. Le chat du jeu, conservé pour vous : Asterobot suit le chat de chaque bot dès que son personnage entre en jeu, que la fenêtre d’Asteroboard soit ouverte ou non. Les messages des canaux auxquels il est abonné, les messages privés envoyés et reçus, les erreurs de chat et les informations affichées par le jeu sont conservés : expérience gagnée, erreurs liées aux objets, messages des objets vivants, date du jeu et message indiquant un changement de statut du personnage. Les 500 derniers messages sont conservés, avec les canaux auxquels le personnage est abonné. La console d’Asteroboard les affiche à partir de cet historique, auquel l’API d’Asterobot et les assistants IA connectés peuvent également accéder. Les couleurs du jeu : l’extraction d’une version du jeu récupère désormais, depuis sa feuille de style, la couleur de chaque canal de chat ainsi que celle du point associé à chaque statut. Le chat de la console et les points du menu de statut s’affichent ainsi exactement comme dans Dofus. Pour une version déjà présente, utilisez Download more files, puis extrayez-la à nouveau depuis Game Manager. Davantage d’images du jeu lors de l’extraction : l’extraction d’une version récupère également les smileys et les icônes des émotes pour la fenêtre des smileys, ainsi que les icônes de caractéristiques et les portraits de classe de vos personnages. Pour une version déjà présente, utilisez Download more files, puis extrayez-la à nouveau depuis Game Manager. Les scripts peuvent suivre les émotes et les smileys du personnage : EmoteAddedEvent et EmoteRemovedEvent lorsqu’il apprend ou perd une émote. AdditionalSmileyEvent pour connaître les packs de smileys dont il dispose. EmotePlayErrorEvent lorsque le jeu refuse une émote. EmoteMassivePlayEvent lorsque plusieurs personnages jouent une émote simultanément. Les scripts peuvent détecter les animations des PNJ : avec PlayEmoteOnNpcEvent et PlayAnimationOnNpcEvent, lorsqu’un PNJ joue une émote ou une animation. Les scripts peuvent lire les émotes et les smileys placés dans la barre de raccourcis : grâce à ShortcutEmote et ShortcutSmiley. Les scripts peuvent accéder aux informations affichées automatiquement par le jeu dans le chat : ObjectErrorEvent lorsque le jeu refuse une action sur un objet, par exemple lorsque l’inventaire est plein. LivingObjectMessageEvent lorsqu’un objet vivant s’exprime. DateEvent pour récupérer la date du calendrier du jeu. Les scripts peuvent rechercher un joueur : avec WhoIsRequest, et recevoir WhoIsNoMatchEvent lorsqu’aucun joueur ne correspond au nom recherché. Les scripts peuvent lire les groupes de monstres partagés par les joueurs dans le chat : grâce à MonsterGroup. 🔄 ModifiéL’extraction d’une version du jeu ne bloque plus lorsqu’un ensemble d’images est manquant : Asterobot ignore désormais les ensembles non téléchargés, extrait tout le reste et indique dans ses journaux les éléments ignorés. Les versions téléchargées avant une mise à jour ajoutant de nouvelles images peuvent toujours être extraites. Seules les illustrations du serveur, nécessaires à la connexion des bots, restent obligatoires. 🐛 CorrigéLes combats de quête avec un PNJ allié sont désormais pris en charge : par exemple, le combat contre les brutes à l’étape « Vaincre les malfrats » de la quête 1987, avec Vangey comme allié. Le module de combat gère désormais ces affrontements comme n’importe quel combat contre des monstres. Auparavant, il les ignorait, quels que soient les paramètres définis dans Fights it plays, laissant le personnage inactif jusqu’à sa déconnexion par le serveur. Les combats d’alignement contre des monstres sont également pris en charge de la même manière.
-
WhoIsRequest
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
-
WhoIsNoMatchEvent
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
-
TitleOption
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
-
TaxCollectorListEntry
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_informationtype not documented yetThe alliance the tax collector belongs to. Used to name the line when the tax collector is not known locally.never
-
TaxCollectorActor
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
-
SmileyRequest
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
-
SmileyEvent
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
-
SkillUseOption
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
-
ShortcutSmiley
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
-
ShortcutEmote
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
-
SetMoodRequest
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
-
SetMoodEvent
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
-
Restriction
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.