Tout ce qui a été publié par Smooth
-
PartyJoinErrorEvent
Joining a party failed; the reason says why. Kind event · Area Game.Party Joining a party failed. WHAT TO DO WHEN YOU RECEIVE IT 1. Read PartyJoinErrorEvent.reason to know why (party full, player busy, ...). The official client shows one message per reason. 2. SEND NOTHING BACK. The reason's values are not named yet. The other declared members are never read. When you may send it Requires context_ready inferred Related messages Arrives after PartyInvitationAcceptRequest Fields #FieldTypeMeaningYou set it 3reasontype not documented yetWhy the join failed. A nested enum; its values are not named yet.never
-
PartyInvitationRequest
Invite a player into your party (or arena team). Kind request · Area Game.Party Invite another player into your party. HOW TO SEND IT 1. Fill PartyInvitationRequest.target (PlayerSearch) with the player's character name, in its search_by_character_name arm. 2. Set PartyInvitationRequest.party_type to PartyType.PARTY_TYPE_CLASSICAL for a normal party, PartyType.PARTY_TYPE_ARENA for an arena team. 3. Wait: the party receives PartyNewGuestEvent for the invited player (and you receive PartyJoinEvent if this created the party). When you may send it Requires context_ready inferred Raised by: a user action: the player invites someone from the player menu, the spouse or raid UIs, the lobby applicants list or the /invite command proven Related messages You will then receive PartyJoinEvent observed — about 30ms later, when the invitation created the party; 1 observation You will then receive PartyNewGuestEvent observed — the party is told about the invited player, right after PartyJoinEvent when the invitation created the party; 1 observation You will then receive PartyInvitationRefusedEvent observed — when the invited player refuses: 113 s later in the capture; 1 observation Fields #FieldTypeMeaningYou set it 1party_typePartyTypeNormal party or arena team. A PartyType.always 2targetPlayerSearchWho to invite. A PlayerSearch by character name.always
-
PartyInvitationRefusedEvent
A player invited into your party refused: drop them from the pending guests. Kind event · Area Game.Party A player who was invited into a party refused the invitation. WHAT TO DO WHEN YOU RECEIVE IT 1. Ignore it unless PartyInvitationRefusedEvent.party_id is your party's id (PartyJoinEvent.party_id). 2. Remove the pending guest whose PartyGuest.player_id is PartyInvitationRefusedEvent.guest_id from the party's guests. The official client also prints a chat line saying that player refused (ui.party.invitationRefused). 3. SEND NOTHING BACK. If the party is now empty, PartyDeletedEvent follows. The declared optional int32 is never read by the client: ignore it. When you may send it Requires context_ready inferred Related messages You will then receive PartyDeletedEvent observed — in the same instant, when the refusal left the leader alone in the party; 1 observation Arrives after PartyInvitationRequest Fields #FieldTypeMeaningYou set it 1guest_idint64The invited player who refused. The PartyGuest.player_id of the pending guest to remove.never 3party_idint32The party the invitation was for. Compare with PartyJoinEvent.party_id.never
-
PartyInvitationRefuseRequest
Refuse an invitation into a party. Kind request · Area Game.Party Refuse a party invitation you received. HOW TO SEND IT 1. Set PartyInvitationRefuseRequest.party_id to the invitation's PartyInvitationEvent.party_id. 2. Nothing comes back to you; the inviting party receives PartyInvitationRefusedEvent. When you may send it Requires context_ready inferred Raised by: a user action: the Refuse button of the party invitation popup (JoinPartyUi, btnCancel) or of the invitation notification proven Related messages Nothing answers it - send it and move on the refusal is reported to the inviting party, not to you Fields #FieldTypeMeaningYou set it 1party_idint32The party whose invitation you refuse. PartyInvitationEvent.party_id.always
-
PartyInvitationEvent
Someone invites you into their party. Kind event · Area Game.Party A player invites you into their party (or arena team). WHAT TO DO WHEN YOU RECEIVE IT 1. Remember PartyInvitationEvent.party_id: your answer names the party by it. 2. PartyInvitationEvent.from_player_name / PartyInvitationEvent.from_player_id is who invites you; PartyInvitationEvent.party_type says a normal party or an arena team. 3. To answer, send PartyInvitationAcceptRequest or PartyInvitationRefuseRequest with that party id. Not answering is allowed: the invitation then lapses. Three declared members (an int32, a string and an int64; beta: max_participants, party_name, to_player_id) are never read by the client: ignore them. When you may send it Requires context_ready inferred Related messages Unsolicited - nothing you send causes this another player invited you Fields #FieldTypeMeaningYou set it 1party_typePartyTypeNormal party or arena team. A PartyType.never 3from_player_namestringThe inviter's name.never 5party_idint32The party you are invited into. Answer with it.never 7from_player_idint64Who invites you. A character id.never
-
PartyInvitationCancelledForGuestEvent
An invitation you received was withdrawn. Kind event · Area Game.Party The party that invited you withdrew the invitation. WHAT TO DO WHEN YOU RECEIVE IT 1. Drop the pending invitation of party PartyInvitationCancelledForGuestEvent.party_id (PartyInvitationEvent.party_id); do not answer it any more. 2. SEND NOTHING BACK. The other declared members are never read by the client. When you may send it Requires context_ready inferred Related messages Unsolicited - nothing you send causes this the inviting party withdrew its invitation Fields #FieldTypeMeaningYou set it 5party_idint32The party whose invitation was withdrawn. PartyInvitationEvent.party_id.never
-
PartyInvitationCancelledEvent
A pending invitation of your party was withdrawn. Kind event · Area Game.Party A member of your party withdrew an invitation that was still pending. WHAT TO DO WHEN YOU RECEIVE IT 1. Ignore it unless PartyInvitationCancelledEvent.party_id is your party's id (PartyJoinEvent.party_id). 2. Remove the pending guest PartyInvitationCancelledEvent.guest_id. The official client prints who withdrew it, PartyInvitationCancelledEvent.canceller_id, in the chat (ui.party.invitationCancelled). 3. SEND NOTHING BACK. When you may send it Requires context_ready inferred Related messages Arrives after PartyInvitationCancelRequest Fields #FieldTypeMeaningYou set it 1canceller_idint64Who withdrew the invitation. A character id.never 2party_idint32The party concerned. Compare with PartyJoinEvent.party_id; ignore the message when it differs.never 3guest_idint64The player whose invitation was withdrawn. The PartyGuest.player_id to remove.never
-
PartyInvitationCancelRequest
Withdraw an invitation you sent that is still pending. Kind request · Area Game.Party Withdraw a pending invitation. HOW TO SEND IT 1. Set PartyInvitationCancelRequest.party_id to your party's id and PartyInvitationCancelRequest.guest_id to the guest's PartyGuest.player_id. 2. Wait: the party receives PartyInvitationCancelledEvent; the invited player receives PartyInvitationCancelledForGuestEvent. When you may send it Requires context_ready inferred Raised by: a user action: Cancel invitation in a pending guest's player menu (PlayerMenuMaker.OnCancelPartyInvitation) or companion menu proven Related messages You will then receive PartyInvitationCancelledEvent inferred — the party is told the invitation was withdrawn Fields #FieldTypeMeaningYou set it 1guest_idint64The invited player whose invitation is withdrawn. PartyGuest.player_id.always 2party_idint32Your party's id. PartyJoinEvent.party_id.always
-
PartyInvitationAcceptRequest
Accept an invitation into a party. Kind request · Area Game.Party Accept a party invitation you received. HOW TO SEND IT 1. Set PartyInvitationAcceptRequest.party_id to the invitation's PartyInvitationEvent.party_id. 2. Wait: PartyJoinEvent when you are in, or PartyJoinErrorEvent with the reason. When you may send it Requires context_ready inferred Raised by: a user action: the Accept button of the party invitation popup (JoinPartyUi, btnValidate) or of the invitation notification proven Related messages You will receive one of PartyJoinEvent inferred — you are now in the party You will receive one of PartyJoinErrorEvent inferred — the party could not be joined, with the reason Fields #FieldTypeMeaningYou set it 1party_idint32The party you accept to join. PartyInvitationEvent.party_id.always
-
PartyGuest
A player invited into a party who has not answered yet. Kind struct · Area Game.Party A pending invitation into a party. - PartyGuest.player_id / PartyGuest.name: the invited character. - PartyGuest.host_id: the member who invited them. - PartyGuest.look, PartyGuest.breed, PartyGuest.gender: how to draw them (breed in the game data). - PartyGuest.status: their player status. - PartyGuest.entities: the companions coming with them. Not sent on its own — a record carried by PartyJoinEvent.guests and PartyNewGuestEvent.guest. proven Used by PartyJoinEvent PartyNewGuestEvent Fields #FieldTypeMeaningYou set it 1breedint32The invited character's breed. Look it up in the breed game data.never 2namestringThe invited character's name.never 3lookEntityLookThe invited character's look. An EntityLook.never 4host_idint64The id of the member who sent the invitation.never 5genderGenderThe invited character's gender. A Gender.never 6entitiesrepeated type not documented yetThe companions coming with the invited character.never 7statusCharacterStatusThe invited character's player status. A CharacterStatus.never 8player_idint64The invited character's id.never
-
PartyFollowMemberRequest
Follow a party member's position (compass flag). Kind request · Area Game.Party Follow a party member: their position is shown with a compass flag. HOW TO SEND IT 1. Set PartyFollowMemberRequest.party_id to your party's id and PartyFollowMemberRequest.player_id to the member's character id. 2. Leave the other declared members (an int64 and an optional bool) at their defaults: the client never writes them. When you may send it Requires context_ready inferred Raised by: a user action: Follow in a member's player menu (PlayerMenuMaker.OnFollowMember / OnFollowAllThisMember) proven Related messages Reply not yet recovered: the server answers with a follow-status event (ihc on 3.7.12.12), not signed yet. Fields #FieldTypeMeaningYou set it 1player_idint64The member to follow. A character id.always 3party_idint32Your party's id. PartyJoinEvent.party_id.always
-
PartyDeletedEvent
Your party no longer exists: forget it. Kind event · Area Game.Party The party no longer exists: it was dissolved (in the capture, its only invited player refused, which left the leader alone). WHAT TO DO WHEN YOU RECEIVE IT 1. Ignore it unless PartyDeletedEvent.party_id is your party's (or your arena team's) id, PartyJoinEvent.party_id. 2. Forget that party: its members, pending guests, leader and name. You are in no party until the next PartyJoinEvent. 3. SEND NOTHING BACK. The official client handles PartyLeaveEvent (you left) exactly the same way. When you may send it Requires context_ready inferred Related messages Arrives after PartyInvitationRefusedEvent Fields #FieldTypeMeaningYou set it 1party_idint32The party that was deleted. Compare with PartyJoinEvent.party_id.never
-
PartyAbdicateThroneRequest
Hand the party leadership to another member (leader only). Kind request · Area Game.Party Make another member the party leader. HOW TO SEND IT 1. Set PartyAbdicateThroneRequest.party_id to your party's id and PartyAbdicateThroneRequest.player_id to the new leader's character id. 2. Wait for PartyLeaderUpdateEvent. When you may send it Requires context_ready inferred Raised by: a user action: Promote leader in a member's player menu (PlayerMenuMaker.OnPromoteLeader) proven Related messages You will then receive PartyLeaderUpdateEvent inferred — the party is told who leads now Fields #FieldTypeMeaningYou set it 1player_idint64The member who becomes leader. A character id.always 2party_idint32Your party's id. PartyJoinEvent.party_id.always
-
OrnamentOption
The ornament a character shows, its level, and its arena league and ladder position. Kind struct · Area Game.Common 1. OrnamentOption.ornament_id: an ornament id of the game data. 2. OrnamentOption.player_level: the character's level (always set). 3. OrnamentOption.league_id / OrnamentOption.ladder_position: set for an arena ornament, the league and the rank in it. Not sent on its own — a record carried by HumanOption.ornament_option, never sent on its own. proven Used by HumanOption Fields #FieldTypeMeaningYou set it 1league_idint32The arena league of an arena ornament. Explicit presence: absent is not the same as zero. Unset for other ornaments.never 2ornament_idint32The ornament shown, as an ornament id of the game data. Explicit presence: absent is not the same as zero. Observed: 99never 3ladder_positionint32The character's rank in that league. Explicit presence: absent is not the same as zero. Unset for other ornaments.never 4player_levelint32The character's level. Observed: 131never
-
ObjectUseOption
An item a character is busy using, and until when. Kind struct · Area Game.Common 1. ObjectUseOption.object_gid: the item (generic id of the game data). 2. ObjectUseOption.delayed_action_type (DelayedActionType): the kind of delayed use, as in DelayedActionEvent. 3. ObjectUseOption.end_delay: when the use ends (a date string the client parses). 4. Ignore the decoy_3Type member. Not sent on its own — a record carried by HumanOption.object_use_option, never sent on its own. proven Used by HumanOption Fields #FieldTypeMeaningYou set it 1delayed_action_typeDelayedActionTypeThe kind of delayed use. A DelayedActionType.never 3end_delaystringWhen the use ends. A date string; the client parses it.never 4object_gidint32The item being used, as a generic item id of the game data.never
-
ObjectErrorEvent
The server refused an action on an item, and says why. Kind event · Area Game.Inventory An item action you asked for was refused: equipping, unequipping, dropping, destroying, feeding a living object, and so on. TO HANDLE IT 1. Read ObjectErrorEvent.reason. 2. Show its message. The client prints one chat line per reason, from the ui.objectError.* texts (InventoryFull, CannotEquipTwice, CannotDrop, CannotDropNoPlace, CannotDelete, levelTooLow, cannotUnequip, cannotEquipHere, criterions, LivingObjectRefusedFood). 3. Assume the item did not move: nothing else changes. When you may send it Requires character_loaded inferred Related messages Unsolicited - nothing you send causes this it can follow any item action (equip, drop, destroy, feed a living object); no single request owns it Fields #FieldTypeMeaningYou set it 1reasontype not documented yetWhy the item action was refused. Beta's ObjectError: inventory full, cannot equip twice, not tradable, cannot drop (no place), cannot destroy, level too low, living object refused food, cannot unequip, cannot equip here, criterions, symbiotic object error, evolutive object refused food. The values are not named here yet.never
-
NamedPartyTeamWithOutcome
A named team of the fight and whether it won or lost. Kind struct · Area Game.Fight One named team of the fight and its outcome. NamedPartyTeamWithOutcome.team is the team and its party name; NamedPartyTeamWithOutcome.outcome is how the fight ended for it (FightOutcome). The client shows the party name of the team with RESULT_VICTORY as the winners and the one with RESULT_LOST as the losers; a team with an empty name is skipped. Not sent on its own — it is only ever an element of FightEndEvent.named_party_teams_outcomes. proven Used by FightEndEvent Fields #FieldTypeMeaningYou set it 1teamNamedPartyTeamThe team and the name of its party. See NamedPartyTeam.never 2outcomeFightOutcomeHow the fight ended for this team. A FightOutcome.never
-
NamedPartyTeam
A fight team and the name of the party fighting in it. Kind struct · Area Game.Fight A fight team with the name of its party. NamedPartyTeam.team is the team (Team); NamedPartyTeam.party_name is the name of the party fighting in it, empty when there is none. Not sent on its own — it is only ever NamedPartyTeamWithOutcome.team. proven Used by NamedPartyTeamWithOutcome Fields #FieldTypeMeaningYou set it 1party_namestringThe name of the party fighting in this team; empty for none.never 2teamTeamThe team. A Team.never
-
NamedActor
A named roleplay actor (a player character): its name and what kind of named actor it is. Kind struct · Area Game.Common The named_actor branch of RolePlayActor. HOW TO READ IT 1. NamedActor.name is the name to show above the actor. 2. If NamedActor.humanoid_information is set, the actor is a character: read Humanoid for its account, alignment, gender and look options. 3. The actor oneof has a second branch (beta: mount_information). On 3.7 its record is the type-name table's Ride and the client never reads it: ignore it. 4. Ignore the two members outside the oneof (a second Humanoid-typed record and the decoy_3Type record): the client never reads them. Not sent on its own — a record carried by RolePlayActor.named_actor, never sent on its own. proven Used by RolePlayActor Fields #FieldTypeMeaningYou set it 5namestringThe actor's name, as shown above it. Observed: Maxi-hopnever 1humanoid_informationHumanoidSet for a character: its account, alignment, gender and look options. See Humanoid.never
-
MutantListEntry
A mutant's part of a fight result line: its level. Kind struct · Area Game.Fight The mutant-specific part of a fight result line. MutantListEntry.level is the mutant's level, displayed like a player level (omega above 200). The second declared int32 is never read by the client: ignore it. Not sent on its own — it is only ever FighterListEntry.mutant_list_entry. proven Used by FighterListEntry Fields #FieldTypeMeaningYou set it 2levelint32The mutant's level. Displayed like a player level.never
-
MutantInformation
The monster a transformed character has become, and its power level. Kind struct · Area Game.Common 1. MutantInformation.monster_id: the monster the character is shown as (monster id of the game data). 2. MutantInformation.power_level: its power level, as in FightMutantInformation. Not sent on its own — a record carried by Humanoid.mutant_information, never sent on its own. proven Used by Humanoid Fields #FieldTypeMeaningYou set it 1power_levelint32The transformation's power level.never 2monster_idint32The monster the character is shown as, as a monster id of the game data.never
-
MoodUpdateEvent
A friend's or your spouse's mood smiley changed. Kind event · Area Game.Social Another player changed their mood smiley. The official client updates the matching entry of its contact lists (friends, spouse). WHAT TO DO WHEN YOU RECEIVE IT 1. Find the contact the message names (see below) and store MoodUpdateEvent.smiley_id as their mood. 2. SEND NOTHING BACK. The message declares two int64 (beta: account_id and character_id). The client matches one of them against its contact entries, but which beta member it is has not been proven, so neither is named here. When you may send it Requires context_ready inferred Related messages Unsolicited - nothing you send causes this another player changed their mood Fields #FieldTypeMeaningYou set it 3smiley_idint32The contact's new mood smiley. An id of the smileys game data.never
-
MonsterGroup
A monster group linked into a chat line: where it stands, who leads it and what it holds. Kind struct · Area Game.Chat One monster group a player dropped into a chat line (right-click a group on the map, then "insert link"). The line's words stay in the message's content; this record rides in Metadata.monster_groups beside it. TO SHOW A RECEIVED LINK 1. Read MonsterGroup.coordinates and MonsterGroup.world_map_id: the map position the link points at. The client builds a "localize" link from them. 2. Read MonsterGroup.leader_id (the monster shown as the group's leader) and MonsterGroup.group_infos (the group's make-up as text). The client builds a "show in bestiary" link from them, with MonsterGroup.waves_count and MonsterGroup.scale_mode. 3. MonsterGroup.group_id identifies the group itself; both links carry it. TO SEND ONE 1. Fill every member from the group on your map, as above. 2. Add the record to Metadata.monster_groups of the chat request, beside the text. One record per linked group. Not sent on its own — it only travels inside Metadata.monster_groups, attached to a chat message. inferred Used by Metadata Fields #FieldTypeMeaningYou set it 1waves_countint32How many waves the group fights in. Named after the wavesCount parameter of both link builders.required 2coordinatesMapCoordinatesWhere the group stands on the world map. The client passes its two numbers as x and y of the localize link; read them as MapCoordinates.world_x / MapCoordinates.world_y.required 3world_map_idint32The world map the coordinates belong to. Named after the localize link's worldMapId parameter. When sending, the client takes it from the group's sub-area (SubAreaData.worldmapId).required 4group_idint64The group itself: its actor id on the map. Named after the groupId parameter; both link builders also make a network link from it alone (CreateLinkForNetwork(groupId)).required 5scale_modeint32A display option of the links; the client only tests whether it is non-zero. Named after the scaleMode parameter of both link builders (default 0). Proven by native code only: it is passed on the stack, which Cpp2IL's ISIL prints out of order.required 6group_infosstringThe group's make-up, as text. Named after the groupInfos parameter. The bestiary link parses it into a set of ids when clicked; send it exactly as you received it.required 8leader_idint32The monster shown as the group's leader. (monster id) Named after the leaderId parameter of both link builders.required
-
MagicPoolStatus
How a smithing attempt changed the item's magic pool. Kind enum · Area Game.Exchange Carried by ExchangeCraftResultWithObjectDescription.magic_pool_status. The values keep their obfuscated names. On 3.7.11.11 the smithing window shows 1 as a gain ('+') and the other non-zero value as a loss ('-'); beta names them no change 0, increase 1, loss 2. Not sent on its own — an enum carried by ExchangeCraftResultWithObjectDescription, never sent on its own. inferred Used by ExchangeCraftResultWithObjectDescription No fields you may set.
-
Loot
One looted thing: its id and how many. Kind struct · Area Game.Fight One looted thing. - Loot.id is an item id (in FightLoot.objects) or an alteration id (in FightLoot.alterations). - Loot.quantity is how many of the item. The same item may appear several times: add the quantities, as the client does. The third declared int32 is copied into the client's item and never read: ignore it. Not sent on its own — it is only ever an element of FightLoot.objects or FightLoot.alterations. proven Used by FightLoot Fields #FieldTypeMeaningYou set it 1quantityint32How many of the item. Named after beta's FightLoot.Object.quantity. Duplicates are summed by the client.never 3idint32The item id, or the alteration id in an alteration list. Named after beta's FightLoot.Object.id.never