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.

Smooth

Administrateurs
  • Adhésion

  • Dernière visite

Tout ce qui a été publié par Smooth

  1. Smooth a posté un record dans Events
    Somebody's availability changed - a contact's, or your own echoed back. Kind eventArea Game.SocialNamed by beta, gamemapping Broadcast for any player whose status you can see - friends, guild and alliance members, party members - and for your own character, as the echo of PlayerStatusUpdateRequest. TWO IDS, AND THEY ARE DIFFERENT WIDTHS. player_id is the CHARACTER (int64); account_id is the ACCOUNT behind it (int32). Use the account id to track a person across their characters and the player id to address one character. The differing widths are the only thing separating them on the wire. status carries the state and the player's own free text, which is untrusted input - see CharacterStatus.message. When you may send it Requires character_loaded observed Related messages Arrives after PlayerStatusUpdateRequest Fields #FieldTypeMeaningYou set it 1statusCharacterStatusThe new availability state plus its optional free text. A CharacterStatus. Its message is untrusted player text.never 2player_idint64The character whose status changed. (character id)never 3account_idint32The account behind that character. (account id) 32-bit, where the character id is 64-bit - that width difference is what separates them.never Recovered with score 220, confidence 0.95, margin 220 over the runner-up. A margin close to the score means nothing else came near; a thin margin means a decoy nearly won. Members recovered: 3 of 4.
  2. Smooth a posté un record dans Events
    The set of optional features the server has enabled, replacing any held set. Kind eventArea Game.ConnectionNamed by beta, gamemapping Pushed in the burst after a successful IdentificationRequest. THIS REPLACES, IT DOES NOT MERGE. The client swaps its whole enabled-feature set for this list and re-evaluates what is available; keeping stale ids from an earlier connection would enable features the server has since turned off. When you may send it Requires authenticated observed Related messages Arrives after IdentificationRequest Fields #FieldTypeMeaningYou set it 1featuresrepeated int32Identifiers of the optional features currently enabled. (feature id)never Recovered with score 148, confidence 0.94, margin 146 over the runner-up. A margin close to the score means nothing else came near; a thin margin means a decoy nearly won. Members recovered: 1 of 1.
  3. Smooth a posté un record dans Events
    New absolute quantities for stacks the character already holds, several at once. Kind eventArea Game.InventoryNamed by beta, gamemapping Quantity updates for stacks that are ALREADY in your inventory, batched. EACH ENTRY IS AN ABSOLUTE TOTAL, NOT A DELTA. The client looks the stack up by ObjectUidWithQuantity.object_uid and SETS its size to ObjectUidWithQuantity.quantity; it never adds. Treating it as a delta double-counts every update. THIS MESSAGE NEVER INTRODUCES A STACK. If the uid is not already known the client logs an error and drops the entry -- so a uid you have not seen means you missed an earlier add, not that a new item appeared. Recover by asking for a fresh snapshot rather than inventing the stack. A quantity of zero is a real value here; the stack is emptied but the server still announces removal separately. The singular counterpart carries one entry plus an origin; this one is the bulk form and carries no origin at all. When you may send it Requires character_selected inferred Related messages Unsolicited - nothing you send causes this the server pushes it whenever stack sizes change; no request asks for it Fields #FieldTypeMeaningYou set it 1objectrepeated ObjectUidWithQuantityThe (uid, new quantity) pairs being applied. Ankama names it in the singular although it is repeated. Each element is an ObjectUidWithQuantity whose quantity is the stack's NEW TOTAL.never Recovered with score 195, confidence 0.90, margin 195 over the runner-up. A margin close to the score means nothing else came near; a thin margin means a decoy nearly won. Members recovered: 1 of 1.
  4. Smooth a posté un record dans Types
    A quantity of one item stack, addressed by its unique handle. Reused wherever the protocol acts on part of a stack. Kind structArea Game.CommonNamed by beta Names a stack and an amount. Ankama reuses this one record across the inventory protocol - destroying, dropping, and the server's own quantity-changed event all wrap it - so the record itself carries no intent. THE MEANING IS ENTIRELY IN THE MESSAGE THAT CONTAINS IT. See ObjectDeleteRequest for the destructive one. The uid is ObjectItem.uid, the per-stack handle - never the template gid. The two members are proven to exist and carry these roles, but this signature does not yet name them individually, so they stand with their obfuscated names. Match them by reading the stack you are acting on out of InventoryContentEvent first. Not sent on its own — it is only ever reached as the payload of a request or event. proven Used by ObjectDeleteRequest ObjectQuantityEvent ObjectsQuantityEvent Fields #FieldTypeMeaningYou set it 2quantityint32How many units of that stack the record applies to. On a request this is how many units to act on; on a quantity event it is the stack's new total.required 3object_uidint32Unique id of the stack this record is about. Identifies one existing stack in the inventory, not the item template. The client uses it as the lookup key when applying the record.required Recovered with score 230, confidence 0.94, margin 230 over the runner-up. A margin close to the score means nothing else came near; a thin margin means a decoy nearly won. Members recovered: 2 of 3.
  5. Smooth a posté un record dans Types
    Which of the character's storages a per-item count belongs to: bag, bank, or haven bag. Kind enumArea Game.CommonNamed by invented This name is not Ankama's. It was chosen for this documentation from proven client behaviour, and is a label rather than protocol documentation. THE TYPE NAME AND ALL FOUR VALUE NAMES ARE OURS. Nothing here is attested by any naming oracle. THE NUMBERS ARE THE REAL CONTRACT and are what this signature pins; the labels are descriptions of what each number provably does. Each value was proven by following the count into the tooltip slot the client renders it in, so the meanings are solid even though the spellings are not. Switch on this, never on position. An unrecognised value should be ignored the way the client ignores the unspecified one, not folded into a default bucket. Not sent on its own — an enum is never sent on its own. inferred Used by ObjectStorageQuantity Values ValueNumberMeaning STORAGE_UNSPECIFIED0The proto3 zero value. The client assigns nothing for it and the entry is silently dropped. WE CHOSE THIS NAME. STORAGE_INVENTORY1The character's own bag. WE CHOSE THIS NAME. Proven: this count feeds the tooltip slot captioned 'ui.item.inventoryQuantity'. STORAGE_BANK2The account bank. WE CHOSE THIS NAME. Proven: this count feeds the slot captioned 'ui.item.bankQuantity'. STORAGE_HAVEN_BAG3The haven bag's storage. WE CHOSE THIS NAME. Proven: this count feeds the slot captioned 'ui.item.havenBagQuantity'. Recovered with score 182, confidence 0.83, margin 182 over the runner-up. A margin close to the score means nothing else came near; a thin margin means a decoy nearly won. Members recovered: 4 of 4.
  6. Smooth a posté un record dans Events
    The new quantity of one stack you already hold, and where the change came from. Kind eventArea Game.InventoryNamed by beta, gamemapping The singular form of ObjectsQuantityEvent: one stack, its new quantity, and an origin. THE QUANTITY IS THE NEW TOTAL, NOT A DELTA. The client looks the stack up by ObjectUidWithQuantity.object_uid and SETS its size to ObjectUidWithQuantity.quantity. If you want "how many did I just get", subtract what you held before - which is exactly what the client does for its quest message. IT NEVER INTRODUCES A STACK. It updates one you already hold; an unknown uid means you missed an earlier add. THE ORIGIN SAYS WHY. When it is ObjectOrigin.ORIGIN_QUEST and the stack grew, the client also posts the "item obtained" chat line with the gained amount. With any other origin the update is silent. TWO DECLARED MEMBERS ARE PADDING the client never reads. When you may send it Requires character_selected inferred Related messages Unsolicited - nothing you send causes this the server pushes it whenever one stack's size changes; no request asks for it Fields #FieldTypeMeaningYou set it 1originObjectOriginWhy the quantity changed. ObjectOrigin.ORIGIN_QUEST makes the client announce the gained amount in chat; other values change nothing visible.never 3objectObjectUidWithQuantityThe stack being updated and its new quantity. An ObjectUidWithQuantity whose quantity is the stack's NEW TOTAL, not a delta.never Recovered with score 310, confidence 0.91, margin 310 over the runner-up. A margin close to the score means nothing else came near; a thin margin means a decoy nearly won. Members recovered: 2 of 4.
  7. Smooth a posté un record dans Types
    Why an inventory stack changed; the client only acts on the quest origin. Kind enumArea Game.CommonNamed by beta The origin carried by ObjectQuantityEvent (and by the item-added event). WHAT THE CLIENT DOES WITH IT. Exactly one thing: when the origin is ORIGIN_QUEST it announces the gained amount in chat. Every other value - ORIGIN_UNDEFINED and the two unnamed ones - is treated identically: the inventory is updated silently. TWO VALUES HAVE NO NAME. The protocol has grown: two values in the reference build, a third by 3.2, a fourth by 3.4. No dumped client, string table, type table or descriptor names the two newer ones, so they keep their obfuscated names. If you meet one, treat it like ORIGIN_UNDEFINED; that is what the client does. ORIGIN_UNDEFINED is the default: an update whose origin is absent from the wire arrives as this value. Not sent on its own — an enum is never sent on its own. inferred Used by ObjectQuantityEvent Values ValueNumberMeaning ORIGIN_UNDEFINED0No particular origin; the client updates the inventory silently. Named from beta's numbering, not client behaviour. It is the default when the origin is absent. ORIGIN_QUEST1The stack changed because of a quest; the client announces the gained amount in chat. Recovered with score 115, confidence 0.91, margin 115 over the runner-up. A margin close to the score means nothing else came near; a thin margin means a decoy nearly won. Members recovered: 2 of 4.
  8. Smooth a posté un record dans Types
    One item as it sits in the inventory: the item itself, where it is, and how the player tagged it. Kind structArea Game.InventoryNamed by beta The element type of InventoryContentEvent.objects. It wraps an ObjectItem with the three things that are true of the item HERE rather than of the item in general. position IS NOT A BAG INDEX. It is the equipment slot when the item is worn, and a bag marker otherwise. Do not treat it as an ordinal you can iterate: two unequipped items can carry the same position, and the value only becomes meaningful once you know whether the item is equipped. tag_storage_uuids is the player's own tagging, not a server concept. It is a set of opaque strings; compare them, do not parse them. Not sent on its own — it is only ever reached as an element of InventoryContentEvent.objects. proven Used by InventoryContentEvent Fields #FieldTypeMeaningYou set it 3positionint32The equipment slot when the item is worn, and a bag marker otherwise. Not an inventory ordinal. Unequipped items share values.never 4tag_storage_uuidsrepeated stringThe player's own storage tags for this item, as opaque identifiers. The client loads them into a set; order carries no meaning.never 5itemObjectItemThe item itself. The current build declares this type twice in the record and only this copy is ever populated.never 6favoriteboolWhether the player marked this item as a favourite.never Recovered with score 280, confidence 0.90, margin 280 over the runner-up. A margin close to the score means nothing else came near; a thin margin means a decoy nearly won. Members recovered: 4 of 6.
  9. Smooth a posté un record dans Types
    One item stack: which item it is, how many, its unique handle, and the effects rolled onto it. Kind structArea Game.InventoryNamed by beta One item instance. The same record is reused across the inventory, exchange and storage protocols, so everything below applies wherever it appears. THE TWO IDS ARE BOTH INT32 AND ARE TRIVIAL TO SWAP. THIS IS THE EASIEST BUG TO WRITE AGAINST THIS PROTOCOL. gid the TEMPLATE id - WHAT KIND of item this is. Every copy of the same item in the game shares one gid. Use it to look the item up in your own data. uid the handle for THIS stack, unique within the character. This is the value a destroy, drop, move or exchange request wants. Send a gid where a uid belongs and you address a different stack or none at all. Nothing in the declaration separates them: on the current build both are int32 and the field numbers were shuffled, so read by NAME, never by position. effects is the roll on this instance - see ObjectEffect. It is a oneof: branch on which member is set, never read positionally. storage_quantities is not an Ankama name - see ObjectStorageQuantity. Not sent on its own — it is only ever reached as a member of another message. proven Used by Metadata ObjectItemInventory Fields #FieldTypeMeaningYou set it 1uidint32The unique handle for this stack, and the value later requests address it by. (item instance id) Unique within one character's storages, not globally. This is what ObjectUidWithQuantity.uid wants.never 2quantityint32How many units are in this stack. Range: 1 or more for a stack that existsnever 3effectsrepeated ObjectEffectThe effects rolled onto this particular instance. Element type ObjectEffect, a oneof - branch on it.never 4storage_quantitiesrepeated ObjectStorageQuantityHow this stack is split across the character's storages, counted per storage. WE CHOSE THIS NAME. The beta build predates the field, so there is no Ankama name to check it against. See ObjectStorageQuantity for what the element actually carries.never 5gidint32The item template id: what kind of item this is. (item template id) Declared int64 in the beta build and int32 here; the value is the same id. Shared by every instance of that item. NOT a handle - see uid.never Recovered with score 325, confidence 0.93, margin 325 over the runner-up. A margin close to the score means nothing else came near; a thin margin means a decoy nearly won. Members recovered: 5 of 5.
  10. Smooth a posté un record dans Events
    You just harvested this many of an item; the client shows the amount with the item's icon. Kind eventArea Game.InventoryNamed by beta, gamemapping A harvest finished and produced items. object_gid is the item (an id from the items table) and quantity is how many this harvest gave. IT IS A NOTIFICATION, NOT AN INVENTORY UPDATE. The client only displays it: it looks the item up for its icon and shows the gained amount over your character. The stack itself changes through the inventory messages - for an item you already hold that is ObjectQuantityEvent, whose quantity is the new total. Do not add this quantity to your inventory as well, or you will count the harvest twice. A harvest that also produced bonus items arrives as the "with bonus" variant instead, which carries a third number the client shows in a second colour. When you may send it Requires character_selected inferred Related messages Unsolicited - nothing you send causes this it arrives when a harvest completes; the client does not ask for it Fields #FieldTypeMeaningYou set it 1object_gidint32The item that was harvested, as an id from the items table. The client resolves it with the items table to show the item's icon.never 2quantityint32How many of the item this harvest produced. A gain, not a stack total; the inventory change arrives in its own message.never Recovered with score 265, confidence 0.90, margin 265 over the runner-up. A margin close to the score means nothing else came near; a thin margin means a decoy nearly won. Members recovered: 2 of 2.
  11. Smooth a posté un record dans Types
    The low and high bounds of an effect that rolls within a range. Kind structArea Game.InventoryNamed by beta The min_max branch of ObjectEffect. Two numbers, in semantic order: the lower bound first. The order is recovered from where the client copies each value, not from the field numbers, so read by name. Nothing guarantees min <= max on the wire; the server has never been observed sending them inverted, but a script that subtracts them should not assume a non-negative result. Not sent on its own — it is only ever reached as the min_max branch of ObjectEffect. inferred Used by ObjectEffect Fields #FieldTypeMeaningYou set it 1maxint32The upper bound of the effect's range.never 2minint32The lower bound of the effect's range.never Recovered with score 140, confidence 0.97, margin 140 over the runner-up. A margin close to the score means nothing else came near; a thin margin means a decoy nearly won. Members recovered: 2 of 3.
  12. Smooth a posté un record dans Types
    An effect expressed as a dice roll: how many dice, how many sides, plus a flat constant. Kind structArea Game.InventoryNamed by beta The dice branch of ObjectEffect, read as num dice of side sides plus const. num IS DECLARED 64-BIT ON THIS BUILD even though the client stores it in a narrower slot. Read the declared width, not the client's. The record declares a fourth integer that neither direction of the client's own conversion touches. It has no recovered meaning - it may be a decoy or a field the game has not started using. It stands with its obfuscated name; do not guess at it. Not sent on its own — it is only ever reached as the dice branch of ObjectEffect. inferred Used by ObjectEffect Fields #FieldTypeMeaningYou set it 1numint64How many dice are rolled. Declared 64-bit here; the client narrows it on the way in.never 2sideint32How many sides each die has.never 3constint32A flat value added to the roll.never Recovered with score 140, confidence 0.97, margin 140 over the runner-up. A margin close to the score means nothing else came near; a thin margin means a decoy nearly won. Members recovered: 3 of 4.
  13. Smooth a posté un record dans Types
    One effect on an item, as a oneof over every shape an effect's value can take. Kind structArea Game.InventoryNamed by beta One rolled or intrinsic effect. action says WHICH effect this is; the oneof says what its value looks like. BRANCH ON THE ONEOF. NEVER READ A MEMBER POSITIONALLY. In protobuf an unset branch reads back as a zero, not as an absence, so a script that reads value_int unconditionally sees 0 for every string, dice and date effect and cannot tell that apart from a genuine zero. Ask which branch is set first. action IS AN OPAQUE EFFECT ID, NOT AN ENUM IN THIS SCHEMA. Its meaning lives in the game's own data centre, not in the protocol; the same number carries the same meaning across builds, but nothing here tells you what it is. Look it up in your own data. The branches, and what each is for: value_int a single number - the ordinary case value_string a text value min_max a range - see ObjectEffectMinMaxValue dice a roll - see ObjectEffectDiceValue date a point in time duration_minute a duration, counted in minutes creature_family a creature family id monster_count a creature family plus a count TWO OF THESE HAVE CHANGED SINCE THE 2.x PROTOCOL AND OLD NOTES WILL MISLEAD YOU. date is now a structured five-integer message, not a string. The historical mount branch is gone from the current build entirely. Not sent on its own — it is only ever reached as an element of an item or an action. inferred Used by ItemMinimalInformation ObjectItem SetUpdateEvent Fields #FieldTypeMeaningYou set it 1actionint32Which effect this is: an opaque effect id resolved against the game's data centre. (effect id) Present on every branch. It is the only member you can read without first checking the oneof.never 2creature_familyint32The effect's value when it is a creature family. The branch is only meaningful when it is the one that is set; reading it otherwise yields a zero value, not an absent one. (creature family id)never 3monster_countMonsterCountThe effect's value when it is a creature family together with a count. The branch is only meaningful when it is the one that is set; reading it otherwise yields a zero value, not an absent one.never 4diceObjectEffectDiceValueThe effect's value when it is a dice roll. The branch is only meaningful when it is the one that is set; reading it otherwise yields a zero value, not an absent one. See ObjectEffectDiceValue.never 6duration_minuteint64The effect's value when it is a duration. The branch is only meaningful when it is the one that is set; reading it otherwise yields a zero value, not an absent one. (minutes) The client converts it through a minute-valued time span in both directions, which is what fixes the unit.never 8min_maxObjectEffectMinMaxValueThe effect's value when it is a range. The branch is only meaningful when it is the one that is set; reading it otherwise yields a zero value, not an absent one. See ObjectEffectMinMaxValue.never 9value_stringstringThe effect's value when it is text. The branch is only meaningful when it is the one that is set; reading it otherwise yields a zero value, not an absent one.never 10value_intint32The effect's value when it is a single number. The branch is only meaningful when it is the one that is set; reading it otherwise yields a zero value, not an absent one.never 12datetype not documented yetThe effect's value when it is a point in time, as five integer components. The branch is only meaningful when it is the one that is set; reading it otherwise yields a zero value, not an absent one. A STRUCTURED MESSAGE ON THIS BUILD. The 2.x protocol carried a string here; notes written against that schema are wrong.never Recovered with score 270, confidence 0.99, margin 270 over the runner-up. A margin close to the score means nothing else came near; a thin margin means a decoy nearly won. Members recovered: 9 of 12.
  14. Smooth a posté un record dans Events
    The market average price of every tradeable item, as one list of item-and-price pairs. Kind eventArea Game.ExchangeNamed by beta, gamemapping The answer to ObjectAveragePricesRequest: one entry per tradeable item, carrying the item's template gid and its average market price. It is what the client shows in item tooltips and in the auction house. IT ARRIVES AS AN EVENT, NOT A RESPONSE. There is no correlation id to match on - match it by arrival after your request. THE LIST IS HUGE. The observed reply carried 9711 entries with gids running consecutively from 16384, i.e. the whole catalogue. Build a lookup table once and keep it; do not scan the list per item. Prices are 64-bit and genuinely exceed the 32-bit range. See ObjectAveragePrice. When you may send it Requires character_loaded inferred Related messages Arrives after ObjectAveragePricesRequest Fields #FieldTypeMeaningYou set it 1objects_average_pricesrepeated ObjectAveragePriceEvery tradeable item's average market price, as item-and-price pairs. Element type ObjectAveragePrice. Observed at 9711 entries in one 3.6.10.10 capture.never Recovered with score 165, confidence 0.91, margin 165 over the runner-up. A margin close to the score means nothing else came near; a thin margin means a decoy nearly won. Members recovered: 1 of 2.
  15. Smooth a posté un record dans Types
    One item and what it currently sells for on average. Kind structArea Game.ExchangeNamed by beta One entry of ObjectAveragePricesEvent, declared nested inside it. READ BOTH MEMBERS BY NAME. Their field numbers and their declared types move between builds: across the seven dumped builds the gid is number 1, 2 or 3 and the price is 1, 2 or 3, and on four of them a decoy of the SAME scalar type sits next to the real member. Position, number and type are all worthless here; only the recovered names are stable. The gid is the same template id as ObjectItem.gid, so this list joins directly onto inventory contents. Not sent on its own — it is only ever reached as an element of ObjectAveragePricesEvent.objects_average_prices. inferred Used by ObjectAveragePricesEvent Fields #FieldTypeMeaningYou set it 3object_gidint32The item's template id, as used everywhere else in the protocol. (item template id) Observed: 16384 - the lowest gid in the observed cataloguenever 5average_priceint64The item's average market price. (kamas) 64-bit because prices exceed the 32-bit range. Do not narrow it.never Recovered with score 140, confidence 0.91, margin 140 over the runner-up. A margin close to the score means nothing else came near; a thin margin means a decoy nearly won. Members recovered: 2 of 5.
  16. Smooth a posté un record dans Events
    Your NPC action was refused. It carries no reason. Kind eventArea Game.NpcNamed by gamemapping THE NEGATIVE ANSWER TO NpcGenericActionRequest, AND IT IS EMPTY. It tells you THAT the action was refused and never why. There is no code, no reason string and no echo of what you asked for - so if you have more than one NPC action outstanding you cannot tell which one this refers to. SEND THEM ONE AT A TIME and treat this as the answer to the outstanding request. WHY IT MATTERS THAT IT IS EMPTY The success path does not answer this message at all: it answers with the action itself - a dialogue's own messages, a shop's own messages. So this event is your ONLY negative signal. Without it a refused action is indistinguishable from a slow one, which is why you should arm a timeout on the request and treat this event as the early, definitive failure. Common causes, none of them reported: the NPC is not on your current map, the action is not one that NPC offers, or the map id you sent is stale. When you may send it Requires character_loaded inferred Related messages Arrives after NpcGenericActionRequest Recovered with score 235, confidence 0.89, margin 235 over the runner-up. A margin close to the score means nothing else came near; a thin margin means a decoy nearly won. Members recovered: 0 of 0.
  17. Smooth a posté un record dans Events
    The player's complete set of notification flags - the markers behind the interface's "new" badges. Kind eventArea Game.NotificationNamed by beta, gamemapping The persisted markers behind the little "new" badges on menus, tabs and features. IT IS THE COMPLETE SET, NOT AN ADDITION - REPLACE, DO NOT MERGE. A flag missing from this message is a flag the player no longer has. There is a separate canonical sibling that REMOVES notifications and it carries an identical payload shape, so if you are matching messages by shape rather than by type you will confuse the two and accumulate badges forever. The flag values are opaque identifiers into the client's own notification data; the protocol says nothing about what each one means. Low value for most scripts - it drives interface decoration, and nothing depends on it. When you may send it Requires character_loaded observed Related messages Unsolicited - nothing you send causes this sent in the connection burst and again whenever the server resynchronises the whole set Fields #FieldTypeMeaningYou set it 1flagsrepeated int32The player's complete set of notification flags. Opaque identifiers into the client's notification data. COMPLETE, not additive.never Recovered with score 265, confidence 0.91, margin 265 over the runner-up. A margin close to the score means nothing else came near; a thin margin means a decoy nearly won. Members recovered: 1 of 2.
  18. Smooth a posté un record dans Types
    Why a character name was refused. Kind enumArea Game.Character.ManagementNamed by beta WHY THE NAME WAS REFUSED, when CharacterCreationResult says the name was the problem. NAME_OK means the name itself is fine - so seeing it here does NOT mean the creation succeeded; read the result first and only consult this when the result blames the name. Most of these are client-checkable before you ever send: length, alphabet, forbidden characters, dash placement, capitalisation, runs of identical letters. Checking locally saves a round trip. Two are not checkable and must come from the server - the name is already taken, and the name is reserved - and one, SERVICE_UNAVAILABLE, means name validation itself is down and the same name may work later. Not sent on its own — it is a member type of CharacterCreationResultEvent, never sent alone. proven Used by CharacterCreationResultEvent Values ValueNumberMeaning NAME_OK0The name is acceptable. The name is the reference build's, matched by NUMBER. Beta 2.73.7.7 and every dumped build from 3.2.7.15 to 3.6.10.11 declare exactly twelve values, so the set has not moved in four years - but no dumped client distinguishes one value from another, so only the NUMBER is proven here. NAME_ERROR_SERVICE_UNAVAILABLE1Name checking is down; the server could not validate it. The name is the reference build's, matched by NUMBER. Beta 2.73.7.7 and every dumped build from 3.2.7.15 to 3.6.10.11 declare exactly twelve values, so the set has not moved in four years - but no dumped client distinguishes one value from another, so only the NUMBER is proven here. NAME_ERROR_ALREADY_EXISTS2Another character already has this name. The name is the reference build's, matched by NUMBER. Beta 2.73.7.7 and every dumped build from 3.2.7.15 to 3.6.10.11 declare exactly twelve values, so the set has not moved in four years - but no dumped client distinguishes one value from another, so only the NUMBER is proven here. NAME_ERROR_BAD_ALPHABET3The name uses characters from a disallowed alphabet. The name is the reference build's, matched by NUMBER. Beta 2.73.7.7 and every dumped build from 3.2.7.15 to 3.6.10.11 declare exactly twelve values, so the set has not moved in four years - but no dumped client distinguishes one value from another, so only the NUMBER is proven here. NAME_ERROR_BAD_LENGTH4The name is too short or too long. The name is the reference build's, matched by NUMBER. Beta 2.73.7.7 and every dumped build from 3.2.7.15 to 3.6.10.11 declare exactly twelve values, so the set has not moved in four years - but no dumped client distinguishes one value from another, so only the NUMBER is proven here. NAME_ERROR_BAD_CHAR5The name contains a character that is not allowed. The name is the reference build's, matched by NUMBER. Beta 2.73.7.7 and every dumped build from 3.2.7.15 to 3.6.10.11 declare exactly twelve values, so the set has not moved in four years - but no dumped client distinguishes one value from another, so only the NUMBER is proven here. NAME_ERROR_INVALID_DASH_POSITION6A dash is in a position the rules forbid - leading, trailing or doubled. The name is the reference build's, matched by NUMBER. Beta 2.73.7.7 and every dumped build from 3.2.7.15 to 3.6.10.11 declare exactly twelve values, so the set has not moved in four years - but no dumped client distinguishes one value from another, so only the NUMBER is proven here. NAME_ERROR_NAME_WITH_BAD_CASE7The name's capitalisation is wrong. The name is the reference build's, matched by NUMBER. Beta 2.73.7.7 and every dumped build from 3.2.7.15 to 3.6.10.11 declare exactly twelve values, so the set has not moved in four years - but no dumped client distinguishes one value from another, so only the NUMBER is proven here. NAME_ERROR_TOO_MANY_CONSECUTIVE_IDENTICAL8Too many identical characters in a row. The name is the reference build's, matched by NUMBER. Beta 2.73.7.7 and every dumped build from 3.2.7.15 to 3.6.10.11 declare exactly twelve values, so the set has not moved in four years - but no dumped client distinguishes one value from another, so only the NUMBER is proven here. NAME_ERROR_TOO_MANY_SPECIAL9Too many special characters. The name is the reference build's, matched by NUMBER. Beta 2.73.7.7 and every dumped build from 3.2.7.15 to 3.6.10.11 declare exactly twelve values, so the set has not moved in four years - but no dumped client distinguishes one value from another, so only the NUMBER is proven here. NAME_ERROR_FORBIDDEN10The name is on the forbidden list. The name is the reference build's, matched by NUMBER. Beta 2.73.7.7 and every dumped build from 3.2.7.15 to 3.6.10.11 declare exactly twelve values, so the set has not moved in four years - but no dumped client distinguishes one value from another, so only the NUMBER is proven here. NAME_ERROR_RESERVED11The name is reserved and cannot be taken. The name is the reference build's, matched by NUMBER. Beta 2.73.7.7 and every dumped build from 3.2.7.15 to 3.6.10.11 declare exactly twelve values, so the set has not moved in four years - but no dumped client distinguishes one value from another, so only the NUMBER is proven here. Recovered with score 235, confidence 0.85, margin 235 over the runner-up. A margin close to the score means nothing else came near; a thin margin means a decoy nearly won. Members recovered: 12 of 12.
  19. Smooth a posté un record dans Types
    One monster inside a group: what it is, its grade, an optional level override, and its appearance. Kind structArea Game.CommonNamed by beta The compact per-monster entry inside a monster group - the record a script reads to decide whether a group on the map is worth fighting. grade IS ONE-BASED. The client subtracts one before indexing its grade list, so grade 1 is the first grade, not the second. Off-by-one here silently reads the wrong difficulty. level IS AN OVERRIDE, NOT ALWAYS THE LEVEL. The client tests it for a positive value and only then uses it in its experience calculation; a non-positive value means "use the monster's own level from the data centre" rather than "level zero". gid identifies WHAT the monster is; resolve it against your own monster data. look is a full EntityLook. Not sent on its own — it is only ever an element of a monster-group payload. inferred Fields #FieldTypeMeaningYou set it 1gradeint32The monster's grade. ONE-BASED. The client subtracts one before indexing its grade list.never 2gidint32Which monster this is. (monster id)never 3levelint32A level override for this monster. Only used when positive; otherwise the monster's own level applies.never 4lookEntityLookThe monster's appearance. An EntityLook.never Recovered with score 190, confidence 0.96, margin 190 over the runner-up. A margin close to the score means nothing else came near; a thin margin means a decoy nearly won. Members recovered: 4 of 4.
  20. Smooth a posté un record dans Types
    A creature family together with a count, as the monster-count branch of an item effect. Kind structArea Game.InventoryNamed by beta Two integers: which creature family, and how many. It is easy to confuse with ObjectEffectMinMaxValue - both are two-integer messages in the same oneof - so branch on which member of ObjectEffect is set rather than on shape. Not sent on its own — it is only ever the monster_count branch of ObjectEffect. inferred Used by ObjectEffect Fields #FieldTypeMeaningYou set it 1countint32How many.never 2creature_familyint32Which creature family the count applies to. (creature family id)never Recovered with score 140, confidence 0.97, margin 140 over the runner-up. A margin close to the score means nothing else came near; a thin margin means a decoy nearly won. Members recovered: 2 of 2.
  21. Smooth a posté un record dans Types
    The structured links attached to a chat line - items and monster groups - as opposed to the line's words. Kind structArea Game.ChatNamed by gamemapping What rides ALONGSIDE a chat line's text. When a player shift-clicks an item or a monster group into chat, the visible words stay in the message's content and the structured link data comes here, so the recipient's client can render the link and show a tooltip on hover. It is referenced by the four chat messages that can carry a link, and it is normally PRESENT BUT EMPTY - an ordinary text line still carries the carrier. Treat an empty one as the common case, not as an anomaly. Its members are not individually recovered and stand with their obfuscated names. If you only need the words, read content and ignore this. Not sent on its own — it is only ever carried by a chat message. proven Used by ChatChannelMessageEvent ChatChannelMessageRequest ChatPrivateMessageRequest No fields you may set. Recovered with score 155, confidence 0.90, margin 155 over the runner-up. A margin close to the score means nothing else came near; a thin margin means a decoy nearly won. Members recovered: 0 of 3.
  22. Smooth a posté un record dans Events
    The path an actor will actually walk, broadcast to everyone on the map. Kind eventArea Game.GamemapNamed by beta, gamemapping The server granting a movement. THIS IS THE AUTHORITATIVE PATH - walk cells, not what you requested. It may be shorter. CHECK character_id AGAINST YOUR OWN BEFORE ACTING ON IT. The event is broadcast for every actor that moves on the map, so most of the ones you receive are other players and monsters. A script that treats every arrival as its own move will walk phantom paths. For an actor that is not you, this is how you keep a live world model: apply the path to that actor's position and facing. When the granted path is YOURS and you have finished walking it, close the handshake with MapMovementConfirmRequest. Until you do, the server considers you still in motion. direction is the facing the walk starts in, as a Direction ordinal. It is the only member of this message with explicit presence on the wire, so absent and zero are genuinely different: absent means unchanged, zero means east. When you may send it Requires context_ready inferred Related messages You must then send MapMovementConfirmRequest inferred — the movement handshake stays open until the client reports that the walk finished Arrives after MapMovementRequest Fields #FieldTypeMeaningYou set it 2cellsrepeated int32The authoritative path the actor will walk, as ordered map cell ids. (map cell ids) May be shorter than the path that was requested. Walk this one.never 3character_idint64Which actor is moving. (actor id) Broadcast for other actors too - compare against your own id first.never 4directionint32The facing the walk starts in. Explicit presence: absent is not the same as zero. A Direction ordinal. Absent means unchanged; 0 means east. Do not conflate them.never 5cautiousboolWhether the actor is walking in cautious mode.never Recovered with score 210, confidence 0.87, margin 210 over the runner-up. A margin close to the score means nothing else came near; a thin margin means a decoy nearly won. Members recovered: 4 of 5.
  23. Smooth a posté un record dans Responses
    The server agreeing that the character has stopped moving. Closes the movement handshake. Kind responseArea Game.GamemapNamed by gamemapping Acknowledges MapMovementConfirmRequest. Receiving it means the server has you standing still. READ ITS PAYLOAD DEFENSIVELY. It was empty from the earliest dumped build through to the mid-3.4 ones; the current build declares a six-value enum. Unlike its request - where the client's own writer provably populates nothing - an INBOUND message offers no such proof, so whether that enum is a decoy or a genuine status has NOT been established. Do not assume it is always zero, and do not build logic on a specific value. This is one of the few genuine Responses in the map area: the whole Gamemap file declares thirty-one messages and exactly one of them is a Response, which is a large part of why the identification holds. When you may send it Requires context_ready inferred Related messages Arrives after MapMovementConfirmRequest Recovered with score 210, confidence 0.83, margin 210 over the runner-up. A margin close to the score means nothing else came near; a thin margin means a decoy nearly won. Members recovered: 0 of 0.
  24. Everything on the map the character just loaded: actors, interactive and stated elements, running fights and the map's complement. Kind eventArea Game.GamemapNamed by beta, gamemapping The contents of the map the character is on: who stands on it, its interactive and stated elements, the fights running on it, and one complement saying what kind of place it is. IT ARRIVES AFTER EVERY MAP LOAD. The client asks for it with MapInformationRequest each time a map finishes loading - teleport, zaap, map change, fight exit - and the map is not usable until it arrives. TREAT IT AS A SNAPSHOT OF THE NEW MAP. It replaces what you knew about the previous one. Changes after that arrive separately: actors who walk in through GameRolePlayShowActorsEvent, element changes through InteractiveElementUpdatedEvent and StatedElementUpdatedEvent. THE CLIENT REPUBLISHES TWO OF ITS LISTS. It copies interactive_elements into an InteractiveMapUpdateEvent and stated_elements into a StatedMapUpdateEvent, so code that already handles those two events can reuse that path for the initial state. map_id IS AN INT64 HERE while MapInformationRequest asks with an int32: same map, different width. specific_complementary_information carries at most one complement saying what kind of place the map is: a haven bag (with its owner), the house you are inside, the map's world coordinates, an open anomaly, or your guild hall. SOME NAMES ARE CONDITIONAL. houses, in_house_information, anomaly_information, coordinates, guild_hall_information and colored_cells are named only while the client code that proves them can be traced; on a client where it cannot, those members keep obfuscated names while the rest of the message is still recovered. guild_hall_information and colored_cells are invented names - no Ankama dump names those two fields. STILL OBFUSCATED ON PURPOSE: the obstacles list (the client hands each obstacle to its cell service through an interface the dumps cannot follow) and a boolean the client never reads. They carry real data; their names cannot be proven. When you may send it Requires context_ready inferred Related messages Arrives after MapInformationRequest Fields #FieldTypeMeaningYou set it 2housesrepeated type not documented yetThe houses standing on this map. Element type is House, not yet recovered; each entry becomes the client's house object, including its door cells on this map. Named only while the client's house UI can be traced; otherwise left obfuscated.never 5colored_cellsrepeated type not documented yetCells of this map the client paints in a colour. NAME INVENTED - no dump names this field. The client's type table calls the element type ColoredCell, with a nested CellColor. Each entry pairs a cell id with a colour the client turns into an RGBA Color32.never 6map_idint64The map these contents describe. (map id) Observed: 153879299 The same map MapInformationRequest asked for, carried here as int64. The client checks it against the haven-bag map table.never 7subarea_idint32The subarea the map belongs to. (subarea id) Observed: 450 The client looks it up in the subarea table, for example for the area level shown with an anomaly.never 8interactive_elementsrepeated InteractiveElementEvery interactive element on the map, with the skills it offers now. Element type InteractiveElement. The client republishes this list as an InteractiveMapUpdateEvent.never 9actorsrepeated ActorPositionInformationEvery actor already standing on the map when it loads. Element type ActorPositionInformation. Actors who arrive later come through GameRolePlayShowActorsEvent instead.never 11fightsrepeated type not documented yetThe fights currently running on the map. Element type is FightCommonInformation, not yet recovered. The client creates a map fight entry per element and lists party members' fights from it.never 15stated_elementsrepeated StatedElementThe current state of every stated element on the map. Element type StatedElement. The client republishes this list as a StatedMapUpdateEvent.never 1coordinatestype not documented yetSet when the server sends the map's world coordinates. The client stores both coordinates with the map id as the current map position. One of the complement branches; named only while the map renderer can be traced.never 3anomaly_informationtype not documented yetSet when the map belongs to an open anomaly. Carries the anomaly's closing time; the client shows the anomaly panel with the subarea's level. One of the complement branches; named only while the client's anomaly UI can be traced.never 4guild_hall_informationtype not documented yetSet when the map is the player's guild hall. NAME INVENTED - no dump names this field. The client's type table calls its theme part MyGuildHall.ThemeSelectionInfo. The client reads the hall's current theme and the themes available to it. One of the complement branches; named only while the client's guild-hall UI can be traced.never 13in_house_informationtype not documented yetSet when the character is inside a house: the house being visited. The client compares the house's account tag with the player's to tell whether it is the player's own house, then opens the house panel. One of the complement branches; named only while the client's house UI can be traced.never 14haven_bag_informationtype not documented yetSet when the map is a haven bag; names the haven bag's owner. The owner is a Character; the client reads the owner's id and name. One of the complement branches; at most one is set.never Recovered with score 448, confidence 0.92, margin 448 over the runner-up. A margin close to the score means nothing else came near; a thin margin means a decoy nearly won. Members recovered: 13 of 15.
  25. Smooth a posté un record dans Events
    An actor on the current map has turned to face a new direction. Kind eventArea Game.GamemapNamed by beta, gamemapping Broadcast whenever any actor in your current roleplay context changes orientation - including your own character, echoing back your MapChangeOrientationRequest. IT IS A FIRE-AND-FORGET STATE PATCH. No timestamp, no throttling, no correlation. Apply it straight to your entity table: set that actor's facing and move on. There is nothing to acknowledge. Track other actors' facing if you care about line of sight or backstab positioning - that is the whole reason this is broadcast rather than private. The client reads exactly two members off it and passes both, unchanged, into a single call on its own entity service. Nothing else in the message is used. When you may send it Requires context_ready inferred Related messages Arrives after MapChangeOrientationRequest Fields #FieldTypeMeaningYou set it 1directionDirectionThe facing the actor now has. A Direction value.never 2actor_idint64Which actor turned. (actor id) Includes your own character when the server echoes your request back.never Recovered with score 155, confidence 0.94, margin 155 over the runner-up. A margin close to the score means nothing else came near; a thin margin means a decoy nearly won. Members recovered: 2 of 2.

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.