Résolu Meilleure manière de s'y prendre pour lire un gros paquet

Inscrit
1 Octobre 2019
Messages
30
Reactions
6
#1
Salut !

Je suis en train de "décomposer" le paquet MapComplementaryInformationsDataMessage et je me rends compte qu'il est énorme, dans le sens où il y a pleins de cas possibles en fonction de ce qui se trouve sur la map : personnages -> monstres -> npc -> modes marchands -> etc etc etc etc........ contrairement au ChatServerMessage qui est assez court à décomposer.

Ma question : Faut il vraiment reproduire tous les cas possible (ou les imaginer) et décomposer entièrement toutes les possibilités pour lire ce protocole ? Ça me semble la solution la plus correcte mais ça me paraît si long, sachant qu'au moindre oubli tous les octets sont décalés et ça fausse la suite, donc qu'il faut vraiment TOUT prendre en compte.
J'imagine qu'il est impossible de sauter des étapes pour arriver à ce qui nous intéresse, je me trompe ?
Faire un script pour décomposer le tout me semble la meilleure option, surtout pour les gros paquets, mais ça me paraît vachement compliqué non ?
Y a-t-il des idées auxquelles je n'aurais pas pensé ?

Merci pour vos réponses
 
Inscrit
7 Avril 2018
Messages
14
Reactions
3
#2
Suffit de regarder dans le client:
MapComplementaryInformationsDataMessage.as:
public function deserializeAs_MapComplementaryInformationsDataMessage(input:ICustomDataInput) : void
      {
         var _id3:uint = 0;
         var _item3:HouseInformations = null;
         var _id4:uint = 0;
         var _item4:GameRolePlayActorInformations = null;
         var _id5:uint = 0;
         var _item5:InteractiveElement = null;
         var _item6:StatedElement = null;
         var _item7:MapObstacle = null;
         var _item8:FightCommonInformations = null;
         this._subAreaIdFunc(input);
         this._mapIdFunc(input);
         var _housesLen:uint = input.readUnsignedShort();
         for(var _i3:uint = 0; _i3 < _housesLen; _i3++)
         {
            _id3 = input.readUnsignedShort();
            _item3 = ProtocolTypeManager.getInstance(HouseInformations,_id3);
            _item3.deserialize(input);
            this.houses.push(_item3);
         }
         var _actorsLen:uint = input.readUnsignedShort();
         for(var _i4:uint = 0; _i4 < _actorsLen; _i4++)
         {
            _id4 = input.readUnsignedShort();
            _item4 = ProtocolTypeManager.getInstance(GameRolePlayActorInformations,_id4);
            _item4.deserialize(input);
            this.actors.push(_item4);
         }
         var _interactiveElementsLen:uint = input.readUnsignedShort();
         for(var _i5:uint = 0; _i5 < _interactiveElementsLen; _i5++)
         {
            _id5 = input.readUnsignedShort();
            _item5 = ProtocolTypeManager.getInstance(InteractiveElement,_id5);
            _item5.deserialize(input);
            this.interactiveElements.push(_item5);
         }
         var _statedElementsLen:uint = input.readUnsignedShort();
         for(var _i6:uint = 0; _i6 < _statedElementsLen; _i6++)
         {
            _item6 = new StatedElement();
            _item6.deserialize(input);
            this.statedElements.push(_item6);
         }
         var _obstaclesLen:uint = input.readUnsignedShort();
         for(var _i7:uint = 0; _i7 < _obstaclesLen; _i7++)
         {
            _item7 = new MapObstacle();
            _item7.deserialize(input);
            this.obstacles.push(_item7);
         }
         var _fightsLen:uint = input.readUnsignedShort();
         for(var _i8:uint = 0; _i8 < _fightsLen; _i8++)
         {
            _item8 = new FightCommonInformations();
            _item8.deserialize(input);
            this.fights.push(_item8);
         }
         this._hasAggressiveMonstersFunc(input);
         this.fightStartPositions = new FightStartingPositions();
         this.fightStartPositions.deserialize(input);
      }
Au final y'a pas tant que ça à lire
 
Inscrit
12 Aout 2021
Messages
35
Reactions
6
#3
Ouais c'est necessaire, enfin tu peux toujours t'amuser a Skip le nombre de bytes totaux par type et par mesqage mais bon, autant recuperer les infos
 
Inscrit
1 Octobre 2019
Messages
30
Reactions
6
#4
Ok je vois, merci !

Suffit de regarder dans le client:
MapComplementaryInformationsDataMessage.as:
public function deserializeAs_MapComplementaryInformationsDataMessage(input:ICustomDataInput) : void
      {
         var _id3:uint = 0;
         var _item3:HouseInformations = null;
         var _id4:uint = 0;
         var _item4:GameRolePlayActorInformations = null;
         var _id5:uint = 0;
         var _item5:InteractiveElement = null;
         var _item6:StatedElement = null;
         var _item7:MapObstacle = null;
         var _item8:FightCommonInformations = null;
         this._subAreaIdFunc(input);
         this._mapIdFunc(input);
         var _housesLen:uint = input.readUnsignedShort();
         for(var _i3:uint = 0; _i3 < _housesLen; _i3++)
         {
            _id3 = input.readUnsignedShort();
            _item3 = ProtocolTypeManager.getInstance(HouseInformations,_id3);
            _item3.deserialize(input);
            this.houses.push(_item3);
         }
         var _actorsLen:uint = input.readUnsignedShort();
         for(var _i4:uint = 0; _i4 < _actorsLen; _i4++)
         {
            _id4 = input.readUnsignedShort();
            _item4 = ProtocolTypeManager.getInstance(GameRolePlayActorInformations,_id4);
            _item4.deserialize(input);
            this.actors.push(_item4);
         }
         var _interactiveElementsLen:uint = input.readUnsignedShort();
         for(var _i5:uint = 0; _i5 < _interactiveElementsLen; _i5++)
         {
            _id5 = input.readUnsignedShort();
            _item5 = ProtocolTypeManager.getInstance(InteractiveElement,_id5);
            _item5.deserialize(input);
            this.interactiveElements.push(_item5);
         }
         var _statedElementsLen:uint = input.readUnsignedShort();
         for(var _i6:uint = 0; _i6 < _statedElementsLen; _i6++)
         {
            _item6 = new StatedElement();
            _item6.deserialize(input);
            this.statedElements.push(_item6);
         }
         var _obstaclesLen:uint = input.readUnsignedShort();
         for(var _i7:uint = 0; _i7 < _obstaclesLen; _i7++)
         {
            _item7 = new MapObstacle();
            _item7.deserialize(input);
            this.obstacles.push(_item7);
         }
         var _fightsLen:uint = input.readUnsignedShort();
         for(var _i8:uint = 0; _i8 < _fightsLen; _i8++)
         {
            _item8 = new FightCommonInformations();
            _item8.deserialize(input);
            this.fights.push(_item8);
         }
         this._hasAggressiveMonstersFunc(input);
         this.fightStartPositions = new FightStartingPositions();
         this.fightStartPositions.deserialize(input);
      }
Au final y'a pas tant que ça à lire
D'ici on dirait pas, mais il me semble qu'il y a quand même une bonne partie de
Code:
         _typesTypes[1956] = CharacterMinimalPlusLookInformations;
         _typesTypes[7196] = CharacterBaseInformations;
         _typesTypes[3956] = PartyMemberInformations;
         _typesTypes[358] = PartyMemberArenaInformations;
         _typesTypes[6670] = PartyInvitationMemberInformations;
         _typesTypes[9632] = CharacterHardcoreOrEpicInformations;
         _typesTypes[2440] = CharacterMinimalGuildInformations;
         _typesTypes[5854] = CharacterMinimalAllianceInformations;
         _typesTypes[889] = CharacterMinimalPlusLookAndGradeInformations;
         _typesTypes[7196] = CharacterBaseInformations;
         _typesTypes[3956] = PartyMemberInformations;
         _typesTypes[358] = PartyMemberArenaInformations;
         _typesTypes[6670] = PartyInvitationMemberInformations;
         _typesTypes[9632] = CharacterHardcoreOrEpicInformations;
         _typesTypes[2799] = EntityDispositionInformations;
         _typesTypes[9489] = IdentifiedEntityDispositionInformations;
         _typesTypes[2973] = FightEntityDispositionInformations;
         _typesTypes[6558] = AbstractSocialGroupInfos;
         _typesTypes[5973] = BasicGuildInformations;
         _typesTypes[6465] = GuildInformations;
         _typesTypes[8504] = GuildFactSheetInformations;
         _typesTypes[473] = GuildInsiderFactSheetInformations;
         _typesTypes[3579] = GuildInAllianceInformations;
         _typesTypes[1184] = AlliancedGuildFactSheetInformations;
         _typesTypes[3126] = BasicAllianceInformations;
         _typesTypes[56] = BasicNamedAllianceInformations;
         _typesTypes[1398] = AllianceInformations;
         _typesTypes[7735] = AllianceFactSheetInformations;
         _typesTypes[9761] = GuildVersatileInformations;
         _typesTypes[2686] = GuildInAllianceVersatileInformations;
         _typesTypes[8504] = GuildFactSheetInformations;
         _typesTypes[473] = GuildInsiderFactSheetInformations;
         _typesTypes[7735] = AllianceFactSheetInformations;
         _typesTypes[4789] = PrismSubareaEmptyInfo;
         _typesTypes[3408] = PrismGeolocalizedInformation;
         _typesTypes[1753] = PrismInformation;
         _typesTypes[4043] = AlliancePrismInformation;
         _typesTypes[9390] = AllianceInsiderPrismInformation;
         _typesTypes[2983] = CharacterCharacteristic;
         _typesTypes[651] = CharacterCharacteristicDetailed;
         _typesTypes[4252] = CharacterCharacteristicValue;
         _typesTypes[7292] = FightTeamMemberInformations;
         _typesTypes[3311] = FightTeamMemberCharacterInformations;
         _typesTypes[3733] = FightTeamMemberWithAllianceCharacterInformations;
         _typesTypes[9221] = FightTeamMemberTaxCollectorInformations;
         _typesTypes[8655] = FightTeamMemberMonsterInformations;
         _typesTypes[4737] = FightTeamMemberEntityInformation;
         _typesTypes[4316] = FightTeamInformations;
         _typesTypes[2474] = FightAllianceTeamInformations;
         _typesTypes[6094] = GameFightCharacteristics;
         _typesTypes[4588] = FightResultListEntry;
         _typesTypes[2947] = FightResultFighterListEntry;
         _typesTypes[7131] = FightResultTaxCollectorListEntry;
         _typesTypes[7134] = FightResultPlayerListEntry;
         _typesTypes[2372] = FightResultMutantListEntry;
         _typesTypes[2515] = FightResultAdditionalData;
         _typesTypes[4466] = FightResultPvpData;
         _typesTypes[9775] = FightResultExperienceData;
         _typesTypes[1188] = AbstractFightDispellableEffect;
         _typesTypes[320] = FightTemporaryBoostEffect;
         _typesTypes[3474] = FightTemporaryBoostStateEffect;
         _typesTypes[8477] = FightTemporarySpellBoostEffect;
         _typesTypes[7744] = FightTemporaryBoostWeaponDamagesEffect;
         _typesTypes[2214] = FightTemporarySpellImmunityEffect;
         _typesTypes[977] = FightTriggeredEffect;
         _typesTypes[2671] = ObjectEffect;
         _typesTypes[624] = ObjectEffectInteger;
         _typesTypes[222] = ObjectEffectCreature;
         _typesTypes[2694] = ObjectEffectLadder;
         _typesTypes[6930] = ObjectEffectMinMax;
         _typesTypes[1342] = ObjectEffectDuration;
         _typesTypes[3066] = ObjectEffectString;
         _typesTypes[7506] = ObjectEffectDice;
         _typesTypes[6498] = ObjectEffectDate;
         _typesTypes[5871] = ObjectEffectMount;
         _typesTypes[5898] = UpdateMountCharacteristic;
         _typesTypes[1327] = UpdateMountBooleanCharacteristic;
         _typesTypes[4747] = UpdateMountIntegerCharacteristic;
         _typesTypes[3614] = Shortcut;
         _typesTypes[2748] = ShortcutObject;
         _typesTypes[3086] = ShortcutObjectPreset;
         _typesTypes[8219] = ShortcutObjectIdolsPreset;
         _typesTypes[3792] = ShortcutObjectItem;
         _typesTypes[8389] = ShortcutSpell;
         _typesTypes[6309] = ShortcutSmiley;
         _typesTypes[2084] = ShortcutEmote;
         _typesTypes[5484] = ShortcutEntitiesPreset;
         _typesTypes[5210] = Idol;
         _typesTypes[1785] = PartyIdol;
         _typesTypes[1785] = PartyIdol;
         _typesTypes[8790] = AchievementAchieved;
         _typesTypes[676] = AchievementAchievedRewardable;
         _typesTypes[4223] = IgnoredInformations;
         _typesTypes[2860] = IgnoredOnlineInformations;
         _typesTypes[9750] = FriendInformations;
         _typesTypes[6842] = FriendOnlineInformations;
         _typesTypes[1] = AcquaintanceInformation;
         _typesTypes[6947] = AcquaintanceOnlineInformation;
         _typesTypes[9186] = FriendSpouseInformations;
         _typesTypes[6899] = FriendSpouseOnlineInformations;
         _typesTypes[4345] = InteractiveElementSkill;
         _typesTypes[8215] = InteractiveElementNamedSkill;
         _typesTypes[8429] = InteractiveElement;
         _typesTypes[7651] = InteractiveElementWithAgeBonus;
         _typesTypes[3956] = PartyMemberInformations;
         _typesTypes[358] = PartyMemberArenaInformations;
         _typesTypes[6670] = PartyInvitationMemberInformations;
         _typesTypes[8446] = PartyEntityBaseInformation;
         _typesTypes[3958] = PartyEntityMemberInformation;
         _typesTypes[9402] = SkillActionDescription;
         _typesTypes[4668] = SkillActionDescriptionTimed;
         _typesTypes[9547] = SkillActionDescriptionCollect;
         _typesTypes[4065] = SkillActionDescriptionCraft;
         _typesTypes[3662] = HouseInformations;
         _typesTypes[5019] = AccountHouseInformations;
         _typesTypes[261] = HouseInformationsInside;
         _typesTypes[9540] = HouseInformationsForGuild;
         _typesTypes[2155] = HouseOnMapInformations;
         _typesTypes[4670] = HouseInstanceInformations;
         _typesTypes[7631] = HouseGuildedInformations;
         _typesTypes[4586] = PaddockBuyableInformations;
         _typesTypes[5746] = PaddockGuildedInformations;
         _typesTypes[8832] = GameContextActorPositionInformations;
         _typesTypes[3338] = GameContextActorInformations;
         _typesTypes[8684] = GameFightFighterInformations;
         _typesTypes[3226] = GameFightAIInformations;
         _typesTypes[975] = GameFightMonsterInformations;
         _typesTypes[9829] = GameFightMonsterWithAlignmentInformations;
         _typesTypes[8023] = GameFightTaxCollectorInformations;
         _typesTypes[3910] = GameFightFighterNamedInformations;
         _typesTypes[5141] = GameFightCharacterInformations;
         _typesTypes[3991] = GameFightMutantInformations;
         _typesTypes[3550] = GameFightEntityInformation;
         _typesTypes[5720] = GameRolePlayActorInformations;
         _typesTypes[4623] = GameRolePlayNamedActorInformations;
         _typesTypes[1484] = GameRolePlayHumanoidInformations;
         _typesTypes[5654] = GameRolePlayMutantInformations;
         _typesTypes[8148] = GameRolePlayCharacterInformations;
         _typesTypes[2326] = GameRolePlayMountInformations;
         _typesTypes[2992] = GameRolePlayMerchantInformations;
         _typesTypes[5203] = GameRolePlayNpcInformations;
         _typesTypes[7842] = GameRolePlayNpcWithQuestInformations;
         _typesTypes[475] = GameRolePlayGroupMonsterInformations;
         _typesTypes[5020] = GameRolePlayGroupMonsterWaveInformations;
         _typesTypes[3649] = GameRolePlayTreasureHintInformations;
         _typesTypes[1656] = GameRolePlayTaxCollectorInformations;
         _typesTypes[7793] = GameRolePlayPrismInformations;
         _typesTypes[4028] = GameRolePlayPortalInformations;
         _typesTypes[3338] = GameContextActorInformations;
         _typesTypes[8684] = GameFightFighterInformations;
         _typesTypes[3226] = GameFightAIInformations;
         _typesTypes[975] = GameFightMonsterInformations;
         _typesTypes[9829] = GameFightMonsterWithAlignmentInformations;
         _typesTypes[8023] = GameFightTaxCollectorInformations;
         _typesTypes[3910] = GameFightFighterNamedInformations;
         _typesTypes[5141] = GameFightCharacterInformations;
         _typesTypes[3991] = GameFightMutantInformations;
         _typesTypes[3550] = GameFightEntityInformation;
         _typesTypes[5720] = GameRolePlayActorInformations;
         _typesTypes[4623] = GameRolePlayNamedActorInformations;
         _typesTypes[1484] = GameRolePlayHumanoidInformations;
         _typesTypes[5654] = GameRolePlayMutantInformations;
         _typesTypes[8148] = GameRolePlayCharacterInformations;
         _typesTypes[2326] = GameRolePlayMountInformations;
         _typesTypes[2992] = GameRolePlayMerchantInformations;
         _typesTypes[5203] = GameRolePlayNpcInformations;
         _typesTypes[7842] = GameRolePlayNpcWithQuestInformations;
         _typesTypes[475] = GameRolePlayGroupMonsterInformations;
         _typesTypes[5020] = GameRolePlayGroupMonsterWaveInformations;
         _typesTypes[3649] = GameRolePlayTreasureHintInformations;
         _typesTypes[1656] = GameRolePlayTaxCollectorInformations;
         _typesTypes[7793] = GameRolePlayPrismInformations;
         _typesTypes[4028] = GameRolePlayPortalInformations;
         _typesTypes[5720] = GameRolePlayActorInformations;
         _typesTypes[4623] = GameRolePlayNamedActorInformations;
         _typesTypes[1484] = GameRolePlayHumanoidInformations;
         _typesTypes[5654] = GameRolePlayMutantInformations;
         _typesTypes[8148] = GameRolePlayCharacterInformations;
         _typesTypes[2326] = GameRolePlayMountInformations;
         _typesTypes[2992] = GameRolePlayMerchantInformations;
         _typesTypes[5203] = GameRolePlayNpcInformations;
         _typesTypes[7842] = GameRolePlayNpcWithQuestInformations;
         _typesTypes[475] = GameRolePlayGroupMonsterInformations;
         _typesTypes[5020] = GameRolePlayGroupMonsterWaveInformations;
         _typesTypes[3649] = GameRolePlayTreasureHintInformations;
         _typesTypes[1656] = GameRolePlayTaxCollectorInformations;
         _typesTypes[7793] = GameRolePlayPrismInformations;
         _typesTypes[4028] = GameRolePlayPortalInformations;
         _typesTypes[4572] = HumanInformations;
         _typesTypes[3247] = HumanOption;
         _typesTypes[8293] = HumanOptionObjectUse;
         _typesTypes[1332] = HumanOptionAlliance;
         _typesTypes[7748] = HumanOptionGuild;
         _typesTypes[6314] = HumanOptionOrnament;
         _typesTypes[5644] = HumanOptionEmote;
         _typesTypes[5299] = HumanOptionTitle;
         _typesTypes[1691] = HumanOptionSkillUse;
         _typesTypes[2314] = HumanOptionFollowers;
         _typesTypes[1042] = TaxCollectorStaticInformations;
         _typesTypes[6146] = TaxCollectorStaticExtendedInformations;
         _typesTypes[6718] = TaxCollectorInformations;
         _typesTypes[1676] = TaxCollectorComplementaryInformations;
         _typesTypes[8602] = TaxCollectorGuildInformations;
         _typesTypes[9341] = TaxCollectorLootInformations;
         _typesTypes[9165] = TaxCollectorWaitingForHelpInformations;
         _typesTypes[954] = GroupMonsterStaticInformations;
         _typesTypes[822] = GroupMonsterStaticInformationsWithAlternatives;
         _typesTypes[3840] = QuestActiveInformations;
         _typesTypes[109] = QuestActiveDetailedInformations;
         _typesTypes[1560] = QuestObjectiveInformations;
         _typesTypes[9237] = QuestObjectiveInformationsWithCompletion;
         _typesTypes[9403] = SpawnInformation;
         _typesTypes[5895] = BaseSpawnMonsterInformation;
         _typesTypes[9707] = SpawnScaledMonsterInformation;
         _typesTypes[3997] = SpawnMonsterInformation;
         _typesTypes[5438] = SpawnCharacterInformation;
         _typesTypes[1867] = SpawnCompanionInformation;
         _typesTypes[3043] = GameContextBasicSpawnInformation;
         _typesTypes[9597] = GameContextSummonsInformation;
         _typesTypes[8684] = GameFightFighterInformations;
         _typesTypes[3226] = GameFightAIInformations;
         _typesTypes[975] = GameFightMonsterInformations;
         _typesTypes[9829] = GameFightMonsterWithAlignmentInformations;
         _typesTypes[8023] = GameFightTaxCollectorInformations;
         _typesTypes[3910] = GameFightFighterNamedInformations;
         _typesTypes[5141] = GameFightCharacterInformations;
         _typesTypes[3991] = GameFightMutantInformations;
         _typesTypes[3550] = GameFightEntityInformation;
         _typesTypes[1156] = GameFightFighterLightInformations;
         _typesTypes[7050] = GameFightFighterMonsterLightInformations;
         _typesTypes[4418] = GameFightFighterNamedLightInformations;
         _typesTypes[4311] = GameFightFighterTaxCollectorLightInformations;
         _typesTypes[5084] = GameFightFighterEntityLightInformation;
         _typesTypes[4951] = MapCoordinates;
         _typesTypes[992] = MapCoordinatesAndId;
         _typesTypes[1133] = MapCoordinatesExtended;
         _typesTypes[6748] = Preset;
         _typesTypes[4064] = PresetsContainerPreset;
         _typesTypes[7031] = IconNamedPreset;
         _typesTypes[3330] = SpellsPreset;
         _typesTypes[8969] = ForgettableSpellsPreset;
         _typesTypes[4860] = StatsPreset;
         _typesTypes[5155] = IdolsPreset;
         _typesTypes[8645] = EntitiesPreset;
         _typesTypes[3276] = FullStatsPreset;
         _typesTypes[5347] = ItemsPreset;
         _typesTypes[9693] = TreasureHuntStep;
         _typesTypes[6674] = TreasureHuntStepFollowDirectionToPOI;
         _typesTypes[1976] = TreasureHuntStepDig;
         _typesTypes[7124] = TreasureHuntStepFight;
         _typesTypes[9304] = TreasureHuntStepFollowDirectionToHint;
         _typesTypes[3436] = TreasureHuntStepFollowDirection;
         _typesTypes[8949] = AbstractPlayerSearchInformation;
         _typesTypes[7105] = PlayerSearchTagInformation;
         _typesTypes[1326] = PlayerSearchCharacterNameInformation;
         _typesTypes[2566] = PortalInformation;
         _typesTypes[9905] = BreachBranch;
         _typesTypes[5225] = ExtendedBreachBranch;
         _typesTypes[1195] = ExtendedLockedBreachBranch;
         _typesTypes[5225] = ExtendedBreachBranch;
         _typesTypes[1195] = ExtendedLockedBreachBranch;
         _typesTypes[223] = PlayerStatus;
         _typesTypes[4104] = PlayerStatusExtended;
         _typesTypes[2772] = ServerSessionConstant;
         _typesTypes[9726] = ServerSessionConstantString;
         _typesTypes[1273] = ServerSessionConstantInteger;
         _typesTypes[1271] = ServerSessionConstantLong;
         _typesTypes[2111] = StatisticData;
         _typesTypes[9200] = StatisticDataInt;
         _typesTypes[9792] = StatisticDataBoolean;
         _typesTypes[8387] = StatisticDataShort;
         _typesTypes[5723] = StatisticDataString;
         _typesTypes[7726] = StatisticDataByte;
         _typesTypes[7005] = DebtInformation;
         _typesTypes[6700] = KamaDebtInformation;
à désérialiser, tous les ActorTypeID, OptionTypeID, HouseTypeID, et j'en passe... et dans chacune de ces fonctions, il y a des arborescences plus ou moins longues à désérialiser.

Après je ne me rend peut-être pas compte de ce qui m'attend encore, je suis peut-être quand même sur la fin finalement.
Mais j'me dis que s'il y a tout ça à faire pour 1 seul protocole, qu'est-ce que ça doit être sur un bot qui utilise plusieurs protocoles.
Aussi, le fait que je sois sur un vraiment petit écran doit pas mal jouer en ma défaveur.
Et j'imagine que ce paquet de chargement de map doit être particulièrement grand.
 
Inscrit
12 Aout 2021
Messages
35
Reactions
6
#5
Ok je vois, merci !



D'ici on dirait pas, mais il me semble qu'il y a quand même une bonne partie de
Code:
         _typesTypes[1956] = CharacterMinimalPlusLookInformations;
         _typesTypes[7196] = CharacterBaseInformations;
         _typesTypes[3956] = PartyMemberInformations;
         _typesTypes[358] = PartyMemberArenaInformations;
         _typesTypes[6670] = PartyInvitationMemberInformations;
         _typesTypes[9632] = CharacterHardcoreOrEpicInformations;
         _typesTypes[2440] = CharacterMinimalGuildInformations;
         _typesTypes[5854] = CharacterMinimalAllianceInformations;
         _typesTypes[889] = CharacterMinimalPlusLookAndGradeInformations;
         _typesTypes[7196] = CharacterBaseInformations;
         _typesTypes[3956] = PartyMemberInformations;
         _typesTypes[358] = PartyMemberArenaInformations;
         _typesTypes[6670] = PartyInvitationMemberInformations;
         _typesTypes[9632] = CharacterHardcoreOrEpicInformations;
         _typesTypes[2799] = EntityDispositionInformations;
         _typesTypes[9489] = IdentifiedEntityDispositionInformations;
         _typesTypes[2973] = FightEntityDispositionInformations;
         _typesTypes[6558] = AbstractSocialGroupInfos;
         _typesTypes[5973] = BasicGuildInformations;
         _typesTypes[6465] = GuildInformations;
         _typesTypes[8504] = GuildFactSheetInformations;
         _typesTypes[473] = GuildInsiderFactSheetInformations;
         _typesTypes[3579] = GuildInAllianceInformations;
         _typesTypes[1184] = AlliancedGuildFactSheetInformations;
         _typesTypes[3126] = BasicAllianceInformations;
         _typesTypes[56] = BasicNamedAllianceInformations;
         _typesTypes[1398] = AllianceInformations;
         _typesTypes[7735] = AllianceFactSheetInformations;
         _typesTypes[9761] = GuildVersatileInformations;
         _typesTypes[2686] = GuildInAllianceVersatileInformations;
         _typesTypes[8504] = GuildFactSheetInformations;
         _typesTypes[473] = GuildInsiderFactSheetInformations;
         _typesTypes[7735] = AllianceFactSheetInformations;
         _typesTypes[4789] = PrismSubareaEmptyInfo;
         _typesTypes[3408] = PrismGeolocalizedInformation;
         _typesTypes[1753] = PrismInformation;
         _typesTypes[4043] = AlliancePrismInformation;
         _typesTypes[9390] = AllianceInsiderPrismInformation;
         _typesTypes[2983] = CharacterCharacteristic;
         _typesTypes[651] = CharacterCharacteristicDetailed;
         _typesTypes[4252] = CharacterCharacteristicValue;
         _typesTypes[7292] = FightTeamMemberInformations;
         _typesTypes[3311] = FightTeamMemberCharacterInformations;
         _typesTypes[3733] = FightTeamMemberWithAllianceCharacterInformations;
         _typesTypes[9221] = FightTeamMemberTaxCollectorInformations;
         _typesTypes[8655] = FightTeamMemberMonsterInformations;
         _typesTypes[4737] = FightTeamMemberEntityInformation;
         _typesTypes[4316] = FightTeamInformations;
         _typesTypes[2474] = FightAllianceTeamInformations;
         _typesTypes[6094] = GameFightCharacteristics;
         _typesTypes[4588] = FightResultListEntry;
         _typesTypes[2947] = FightResultFighterListEntry;
         _typesTypes[7131] = FightResultTaxCollectorListEntry;
         _typesTypes[7134] = FightResultPlayerListEntry;
         _typesTypes[2372] = FightResultMutantListEntry;
         _typesTypes[2515] = FightResultAdditionalData;
         _typesTypes[4466] = FightResultPvpData;
         _typesTypes[9775] = FightResultExperienceData;
         _typesTypes[1188] = AbstractFightDispellableEffect;
         _typesTypes[320] = FightTemporaryBoostEffect;
         _typesTypes[3474] = FightTemporaryBoostStateEffect;
         _typesTypes[8477] = FightTemporarySpellBoostEffect;
         _typesTypes[7744] = FightTemporaryBoostWeaponDamagesEffect;
         _typesTypes[2214] = FightTemporarySpellImmunityEffect;
         _typesTypes[977] = FightTriggeredEffect;
         _typesTypes[2671] = ObjectEffect;
         _typesTypes[624] = ObjectEffectInteger;
         _typesTypes[222] = ObjectEffectCreature;
         _typesTypes[2694] = ObjectEffectLadder;
         _typesTypes[6930] = ObjectEffectMinMax;
         _typesTypes[1342] = ObjectEffectDuration;
         _typesTypes[3066] = ObjectEffectString;
         _typesTypes[7506] = ObjectEffectDice;
         _typesTypes[6498] = ObjectEffectDate;
         _typesTypes[5871] = ObjectEffectMount;
         _typesTypes[5898] = UpdateMountCharacteristic;
         _typesTypes[1327] = UpdateMountBooleanCharacteristic;
         _typesTypes[4747] = UpdateMountIntegerCharacteristic;
         _typesTypes[3614] = Shortcut;
         _typesTypes[2748] = ShortcutObject;
         _typesTypes[3086] = ShortcutObjectPreset;
         _typesTypes[8219] = ShortcutObjectIdolsPreset;
         _typesTypes[3792] = ShortcutObjectItem;
         _typesTypes[8389] = ShortcutSpell;
         _typesTypes[6309] = ShortcutSmiley;
         _typesTypes[2084] = ShortcutEmote;
         _typesTypes[5484] = ShortcutEntitiesPreset;
         _typesTypes[5210] = Idol;
         _typesTypes[1785] = PartyIdol;
         _typesTypes[1785] = PartyIdol;
         _typesTypes[8790] = AchievementAchieved;
         _typesTypes[676] = AchievementAchievedRewardable;
         _typesTypes[4223] = IgnoredInformations;
         _typesTypes[2860] = IgnoredOnlineInformations;
         _typesTypes[9750] = FriendInformations;
         _typesTypes[6842] = FriendOnlineInformations;
         _typesTypes[1] = AcquaintanceInformation;
         _typesTypes[6947] = AcquaintanceOnlineInformation;
         _typesTypes[9186] = FriendSpouseInformations;
         _typesTypes[6899] = FriendSpouseOnlineInformations;
         _typesTypes[4345] = InteractiveElementSkill;
         _typesTypes[8215] = InteractiveElementNamedSkill;
         _typesTypes[8429] = InteractiveElement;
         _typesTypes[7651] = InteractiveElementWithAgeBonus;
         _typesTypes[3956] = PartyMemberInformations;
         _typesTypes[358] = PartyMemberArenaInformations;
         _typesTypes[6670] = PartyInvitationMemberInformations;
         _typesTypes[8446] = PartyEntityBaseInformation;
         _typesTypes[3958] = PartyEntityMemberInformation;
         _typesTypes[9402] = SkillActionDescription;
         _typesTypes[4668] = SkillActionDescriptionTimed;
         _typesTypes[9547] = SkillActionDescriptionCollect;
         _typesTypes[4065] = SkillActionDescriptionCraft;
         _typesTypes[3662] = HouseInformations;
         _typesTypes[5019] = AccountHouseInformations;
         _typesTypes[261] = HouseInformationsInside;
         _typesTypes[9540] = HouseInformationsForGuild;
         _typesTypes[2155] = HouseOnMapInformations;
         _typesTypes[4670] = HouseInstanceInformations;
         _typesTypes[7631] = HouseGuildedInformations;
         _typesTypes[4586] = PaddockBuyableInformations;
         _typesTypes[5746] = PaddockGuildedInformations;
         _typesTypes[8832] = GameContextActorPositionInformations;
         _typesTypes[3338] = GameContextActorInformations;
         _typesTypes[8684] = GameFightFighterInformations;
         _typesTypes[3226] = GameFightAIInformations;
         _typesTypes[975] = GameFightMonsterInformations;
         _typesTypes[9829] = GameFightMonsterWithAlignmentInformations;
         _typesTypes[8023] = GameFightTaxCollectorInformations;
         _typesTypes[3910] = GameFightFighterNamedInformations;
         _typesTypes[5141] = GameFightCharacterInformations;
         _typesTypes[3991] = GameFightMutantInformations;
         _typesTypes[3550] = GameFightEntityInformation;
         _typesTypes[5720] = GameRolePlayActorInformations;
         _typesTypes[4623] = GameRolePlayNamedActorInformations;
         _typesTypes[1484] = GameRolePlayHumanoidInformations;
         _typesTypes[5654] = GameRolePlayMutantInformations;
         _typesTypes[8148] = GameRolePlayCharacterInformations;
         _typesTypes[2326] = GameRolePlayMountInformations;
         _typesTypes[2992] = GameRolePlayMerchantInformations;
         _typesTypes[5203] = GameRolePlayNpcInformations;
         _typesTypes[7842] = GameRolePlayNpcWithQuestInformations;
         _typesTypes[475] = GameRolePlayGroupMonsterInformations;
         _typesTypes[5020] = GameRolePlayGroupMonsterWaveInformations;
         _typesTypes[3649] = GameRolePlayTreasureHintInformations;
         _typesTypes[1656] = GameRolePlayTaxCollectorInformations;
         _typesTypes[7793] = GameRolePlayPrismInformations;
         _typesTypes[4028] = GameRolePlayPortalInformations;
         _typesTypes[3338] = GameContextActorInformations;
         _typesTypes[8684] = GameFightFighterInformations;
         _typesTypes[3226] = GameFightAIInformations;
         _typesTypes[975] = GameFightMonsterInformations;
         _typesTypes[9829] = GameFightMonsterWithAlignmentInformations;
         _typesTypes[8023] = GameFightTaxCollectorInformations;
         _typesTypes[3910] = GameFightFighterNamedInformations;
         _typesTypes[5141] = GameFightCharacterInformations;
         _typesTypes[3991] = GameFightMutantInformations;
         _typesTypes[3550] = GameFightEntityInformation;
         _typesTypes[5720] = GameRolePlayActorInformations;
         _typesTypes[4623] = GameRolePlayNamedActorInformations;
         _typesTypes[1484] = GameRolePlayHumanoidInformations;
         _typesTypes[5654] = GameRolePlayMutantInformations;
         _typesTypes[8148] = GameRolePlayCharacterInformations;
         _typesTypes[2326] = GameRolePlayMountInformations;
         _typesTypes[2992] = GameRolePlayMerchantInformations;
         _typesTypes[5203] = GameRolePlayNpcInformations;
         _typesTypes[7842] = GameRolePlayNpcWithQuestInformations;
         _typesTypes[475] = GameRolePlayGroupMonsterInformations;
         _typesTypes[5020] = GameRolePlayGroupMonsterWaveInformations;
         _typesTypes[3649] = GameRolePlayTreasureHintInformations;
         _typesTypes[1656] = GameRolePlayTaxCollectorInformations;
         _typesTypes[7793] = GameRolePlayPrismInformations;
         _typesTypes[4028] = GameRolePlayPortalInformations;
         _typesTypes[5720] = GameRolePlayActorInformations;
         _typesTypes[4623] = GameRolePlayNamedActorInformations;
         _typesTypes[1484] = GameRolePlayHumanoidInformations;
         _typesTypes[5654] = GameRolePlayMutantInformations;
         _typesTypes[8148] = GameRolePlayCharacterInformations;
         _typesTypes[2326] = GameRolePlayMountInformations;
         _typesTypes[2992] = GameRolePlayMerchantInformations;
         _typesTypes[5203] = GameRolePlayNpcInformations;
         _typesTypes[7842] = GameRolePlayNpcWithQuestInformations;
         _typesTypes[475] = GameRolePlayGroupMonsterInformations;
         _typesTypes[5020] = GameRolePlayGroupMonsterWaveInformations;
         _typesTypes[3649] = GameRolePlayTreasureHintInformations;
         _typesTypes[1656] = GameRolePlayTaxCollectorInformations;
         _typesTypes[7793] = GameRolePlayPrismInformations;
         _typesTypes[4028] = GameRolePlayPortalInformations;
         _typesTypes[4572] = HumanInformations;
         _typesTypes[3247] = HumanOption;
         _typesTypes[8293] = HumanOptionObjectUse;
         _typesTypes[1332] = HumanOptionAlliance;
         _typesTypes[7748] = HumanOptionGuild;
         _typesTypes[6314] = HumanOptionOrnament;
         _typesTypes[5644] = HumanOptionEmote;
         _typesTypes[5299] = HumanOptionTitle;
         _typesTypes[1691] = HumanOptionSkillUse;
         _typesTypes[2314] = HumanOptionFollowers;
         _typesTypes[1042] = TaxCollectorStaticInformations;
         _typesTypes[6146] = TaxCollectorStaticExtendedInformations;
         _typesTypes[6718] = TaxCollectorInformations;
         _typesTypes[1676] = TaxCollectorComplementaryInformations;
         _typesTypes[8602] = TaxCollectorGuildInformations;
         _typesTypes[9341] = TaxCollectorLootInformations;
         _typesTypes[9165] = TaxCollectorWaitingForHelpInformations;
         _typesTypes[954] = GroupMonsterStaticInformations;
         _typesTypes[822] = GroupMonsterStaticInformationsWithAlternatives;
         _typesTypes[3840] = QuestActiveInformations;
         _typesTypes[109] = QuestActiveDetailedInformations;
         _typesTypes[1560] = QuestObjectiveInformations;
         _typesTypes[9237] = QuestObjectiveInformationsWithCompletion;
         _typesTypes[9403] = SpawnInformation;
         _typesTypes[5895] = BaseSpawnMonsterInformation;
         _typesTypes[9707] = SpawnScaledMonsterInformation;
         _typesTypes[3997] = SpawnMonsterInformation;
         _typesTypes[5438] = SpawnCharacterInformation;
         _typesTypes[1867] = SpawnCompanionInformation;
         _typesTypes[3043] = GameContextBasicSpawnInformation;
         _typesTypes[9597] = GameContextSummonsInformation;
         _typesTypes[8684] = GameFightFighterInformations;
         _typesTypes[3226] = GameFightAIInformations;
         _typesTypes[975] = GameFightMonsterInformations;
         _typesTypes[9829] = GameFightMonsterWithAlignmentInformations;
         _typesTypes[8023] = GameFightTaxCollectorInformations;
         _typesTypes[3910] = GameFightFighterNamedInformations;
         _typesTypes[5141] = GameFightCharacterInformations;
         _typesTypes[3991] = GameFightMutantInformations;
         _typesTypes[3550] = GameFightEntityInformation;
         _typesTypes[1156] = GameFightFighterLightInformations;
         _typesTypes[7050] = GameFightFighterMonsterLightInformations;
         _typesTypes[4418] = GameFightFighterNamedLightInformations;
         _typesTypes[4311] = GameFightFighterTaxCollectorLightInformations;
         _typesTypes[5084] = GameFightFighterEntityLightInformation;
         _typesTypes[4951] = MapCoordinates;
         _typesTypes[992] = MapCoordinatesAndId;
         _typesTypes[1133] = MapCoordinatesExtended;
         _typesTypes[6748] = Preset;
         _typesTypes[4064] = PresetsContainerPreset;
         _typesTypes[7031] = IconNamedPreset;
         _typesTypes[3330] = SpellsPreset;
         _typesTypes[8969] = ForgettableSpellsPreset;
         _typesTypes[4860] = StatsPreset;
         _typesTypes[5155] = IdolsPreset;
         _typesTypes[8645] = EntitiesPreset;
         _typesTypes[3276] = FullStatsPreset;
         _typesTypes[5347] = ItemsPreset;
         _typesTypes[9693] = TreasureHuntStep;
         _typesTypes[6674] = TreasureHuntStepFollowDirectionToPOI;
         _typesTypes[1976] = TreasureHuntStepDig;
         _typesTypes[7124] = TreasureHuntStepFight;
         _typesTypes[9304] = TreasureHuntStepFollowDirectionToHint;
         _typesTypes[3436] = TreasureHuntStepFollowDirection;
         _typesTypes[8949] = AbstractPlayerSearchInformation;
         _typesTypes[7105] = PlayerSearchTagInformation;
         _typesTypes[1326] = PlayerSearchCharacterNameInformation;
         _typesTypes[2566] = PortalInformation;
         _typesTypes[9905] = BreachBranch;
         _typesTypes[5225] = ExtendedBreachBranch;
         _typesTypes[1195] = ExtendedLockedBreachBranch;
         _typesTypes[5225] = ExtendedBreachBranch;
         _typesTypes[1195] = ExtendedLockedBreachBranch;
         _typesTypes[223] = PlayerStatus;
         _typesTypes[4104] = PlayerStatusExtended;
         _typesTypes[2772] = ServerSessionConstant;
         _typesTypes[9726] = ServerSessionConstantString;
         _typesTypes[1273] = ServerSessionConstantInteger;
         _typesTypes[1271] = ServerSessionConstantLong;
         _typesTypes[2111] = StatisticData;
         _typesTypes[9200] = StatisticDataInt;
         _typesTypes[9792] = StatisticDataBoolean;
         _typesTypes[8387] = StatisticDataShort;
         _typesTypes[5723] = StatisticDataString;
         _typesTypes[7726] = StatisticDataByte;
         _typesTypes[7005] = DebtInformation;
         _typesTypes[6700] = KamaDebtInformation;
à désérialiser, tous les ActorTypeID, OptionTypeID, HouseTypeID, et j'en passe... et dans chacune de ces fonctions, il y a des arborescences plus ou moins longues à désérialiser.

Après je ne me rend peut-être pas compte de ce qui m'attend encore, je suis peut-être quand même sur la fin finalement.
Mais j'me dis que s'il y a tout ça à faire pour 1 seul protocole, qu'est-ce que ça doit être sur un bot qui utilise plusieurs protocoles.
Aussi, le fait que je sois sur un vraiment petit écran doit pas mal jouer en ma défaveur.
Et j'imagine que ce paquet de chargement de map doit être particulièrement grand.
S'il est split en 2 paquet tu te doutes bien qu'ils y sont forcés, j'pense pas que ça soit par plaisir x)

Après dans ton cas, tu n'es pas obligé de continuer après la désirialization des Actors, donc bon, te fais pas trop peur non plus
 
Inscrit
1 Octobre 2019
Messages
30
Reactions
6
#6
S'il est split en 2 paquet tu te doutes bien qu'ils y sont forcés, j'pense pas que ça soit par plaisir x)

Après dans ton cas, tu n'es pas obligé de continuer après la désirialization des Actors, donc bon, te fais pas trop peur non plus
En effet j'y avais pas pensé à m'arrêter là, mais je serais frustré de pas le désérialiser complètement même si ça me sert à rien
 
Inscrit
12 Aout 2021
Messages
35
Reactions
6
#7
En effet j'y avais pas pensé à m'arrêter là, mais je serais frustré de pas le désérialiser complètement même si ça me sert à rien
ça c'est toi qui voit, ce que je sais c'est que de mon côté ça sue à grosse goute, j'dois rebosser completement la façon de lire mes paquets, parce que pour la chasse y'a souvent l'Interactive Used Message qui vient se mettre dans le paquet de la chasse du coup bah.. tu vois, sauf que même après avoir fait la verification des bytes restant, j'arrive quand même à me retrouver avec des erreur de flux comme quoi y'a pas assez de byte dans le paquet pour lire, d'autant plus que j'suis casiment sur d'avoir fait nimp puis-ce que dans certains paquet (Pas forcément les chasses) je dois Skip 4 bytes pour pouvoir lire le message et dans d'autre non, donc.. j'ai envie de mourir :D
 
Inscrit
1 Octobre 2019
Messages
30
Reactions
6
#8
ça c'est toi qui voit, ce que je sais c'est que de mon côté ça sue à grosse goute, j'dois rebosser completement la façon de lire mes paquets, parce que pour la chasse y'a souvent l'Interactive Used Message qui vient se mettre dans le paquet de la chasse du coup bah.. tu vois, sauf que même après avoir fait la verification des bytes restant, j'arrive quand même à me retrouver avec des erreur de flux comme quoi y'a pas assez de byte dans le paquet pour lire, d'autant plus que j'suis casiment sur d'avoir fait nimp puis-ce que dans certains paquet (Pas forcément les chasses) je dois Skip 4 bytes pour pouvoir lire le message et dans d'autre non, donc.. j'ai envie de mourir :D
Haha bon courage, c'est pour éviter ça que j'essaie de bien faire les choses, mais j'ai l'impression de re-coder tout le client en JS là ...
 
Inscrit
12 Aout 2021
Messages
35
Reactions
6
#9
Haha bon courage, c'est pour éviter ça que j'essaie de bien faire les choses, mais j'ai l'impression de re-coder tout le client en JS là ...
Ouais ça m'a fait ça aussi pour la lecture des fichiers D2o x) Je compatis
 
Inscrit
1 Octobre 2019
Messages
30
Reactions
6
#11
Ah ok je crois que c'était ce genre de truc que je cherchais. Mais bon vu là où j'en suis je vais continuer, et j'apprends pas mal de choses c'est cool. Merci
 
Inscrit
1 Octobre 2019
Messages
30
Reactions
6
#12
Finalement c'était un peu long mais tranquille, c'était juste un gros bout à traiter, les autres messages sont moins gros
 
Haut Bas