2.0 Soucis d'envoi du CharactersListMessage

Inscrit
4 Decembre 2016
Messages
30
Reactions
0
#1
Bonjour, je viens vous voir car j'ai un soucis qui m'empêche de continuer sur mon émulateur de test.
J'utilise le client 2.40 modifié de Nightwolf93.

Lors de la réception du CharactersListRequestMessage, je voudrais envoyer un CharactersListMessage vide puisque le compte est vierge.

Code:
    Public Shared Sub HandleCharactersListRequestMessage(Remote As Client, Message As CharactersListRequestMessage)
        SendMessage(Remote.Socket, New CharactersListMessage(New CharacterBaseInformations() {}, False))
    End Sub
En revanche, en procédant ainsi, une erreur apparaît sur Dofus.


Voici les logs :

PHP:
[*][ServerConnection] [server_login] Connection opened.
[*][13:55:26:764] [ServerConnection] [server_login] [RCV] ProtocolRequired @1
[*][13:55:26:764] [ServerConnection] [server_login] [RCV] HelloConnectMessage @2
[*][13:55:26:780] [Worker] Removing frame: [object HandshakeFrame]
[*][13:55:26:783] [AuthentificationFrame] Current version : 2.40.0.118482.4
[*][13:55:26:783] [ServerConnection] [server_login] [SND] > IdentificationMessage @3
[*][13:55:26:794] [ServerConnection] [server_login] [RCV] IdentificationSuccessMessage @4
[*][13:55:26:795] [ServerConnection] [server_login] [RCV] ServersListMessage @5
[*][13:55:26:801] [AuthentificationFrame] Timestamp subscription end date : 42195168000000 ( 11/02/3307 01:00 )
[*][13:55:26:826] [StoreUserDataManager] Data already saved.
[*][13:55:26:826] [Worker] Removing frame: [object AuthentificationFrame]
[*][13:55:26:826] [Worker] Adding frame: [object ChangeCharacterFrame]
[*][13:55:26:826] [Worker] Adding frame: [object ServerSelectionFrame]
[*][13:55:26:838] [Berilia] login correctly unloaded in 8ms
[*][13:55:26:859] [UiRenderManager] Ankama_Connection::serverTypeSelection rendered in 18 ms (parsing: 0 ms, build: 18 ms, script:0 ms )
[*][13:55:27:240] [TooltipManager] tooltip_standard xml generated in 18ms
[*][13:55:27:246] [UiRenderManager] tooltip_standard rendered in 5 ms (parsing: 1 ms, build: 4 ms, script:0 ms )
[*][13:55:27:862] [UiRenderManager] Ankama_Connection::serverListSelection rendered in 18 ms (parsing: 0 ms, build: 18 ms, script:0 ms )
[*][13:55:27:865] [Berilia] serverTypeSelection correctly unloaded in 1ms
[*][13:55:28:899] [StateContainer] btn_server_m_gd_listServer_0 : No data for state '5' (5 states)
[*][13:55:28:999] [StateContainer] btn_server_m_gd_listServer_0 : No data for state '5' (5 states)
[*][13:55:29:082] [ServerConnection] [server_login] [SND] > ServerSelectionMessage @6
[*][13:55:29:090] [ServerConnection] [server_login] [RCV] SelectedServerDataMessage @7
[*][13:55:29:090] [ServerConnection] [server_login] Connection closed.
[*][13:55:29:101] [DisconnectionHandlerFrame] The connection was closed. Checking reasons.
[*][13:55:29:101] [DisconnectionHandlerFrame] The connection closure was expected (reason: 1). Dispatching the message.
[*][13:55:29:101] [Worker] Removing frame: [object ServerSelectionFrame]
[*][13:55:29:101] [Worker] Adding frame: [object GameServerApproachFrame]
[*][13:55:29:102] [MultiConnection] Adding connection server_game
[*][13:55:29:102] [Worker] Adding frame: [object HandshakeFrame]
[*][13:55:29:102] [ServerConnection] [server_game] Connecting to 127.0.0.1:5556...
[*][13:55:29:103] [Worker] Adding frame: [object MiscFrame]
[*][13:55:29:103] [ServerConnection] [server_game] Connection opened.
[*][13:55:29:111] [ServerConnection] [server_game] [RCV] ProtocolRequired @8
[*][13:55:29:111] [ServerConnection] [server_game] [RCV] HelloGameMessage @9
[*][13:55:29:120] [Worker] Removing frame: [object HandshakeFrame]
[*][13:55:29:127] [ServerConnection] [server_game] [SND] > AuthenticationTicketMessage @10
[*][13:55:29:133] [ServerConnection] [server_game] [RCV] AuthenticationTicketAcceptedMessage @11
[*][13:55:29:660] [ServerConnection] [server_game] [SND] > CharactersListRequestMessage @12
[*][13:55:29:662] [ServerConnection] [server_game] [RCV] CharactersListMessage @13
[*][13:55:34:129] [ServerConnection] [] Failure while opening socket, timeout.
[*][13:55:34:137] [UiRenderManager] Ankama_Common::popup rendered in 6 ms (parsing: 0 ms, build: 3 ms, script:1 ms )
Si quelqu'un pourrait m'aider, je lui en serait très reconnaissant, merci.
Je précise que mes IO sont à jour, les fonctions d'écriture/lectures sont tirées du DofusInvoker.
 
Inscrit
16 Mars 2014
Messages
214
Reactions
30
#2
Pourquoi tu utilises 2 comptes différents tu ma mp avec un autre compte Eliway
 
Inscrit
4 Decembre 2016
Messages
30
Reactions
0
#3
Pourquoi tu utilises 2 comptes différents tu ma mp avec un autre compte Eliway
Le nom était pas bon. Celui-ci est le définitif, je contacterai un admin
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#4
Bonsoir,

Il est normal que le client t'affiche une erreur puisque dans la fonction Serialize() du paquet on écrit d'abord la taille de la liste puis son contenu.
Si ta liste est null, la taille de la liste, même si elle est de 0 ne pourra pas être écrite, le foreach ne pourra pas non plus être parcouru.

C#:
writer.WriteShort((short)characters.Length);
            foreach (var entry in characters)
            {
                 writer.WriteShort(entry.TypeId);
                 entry.Serialize(writer);
            }
Donc il te suffit juste de définir une nouvelle liste sans contenu.
 
Inscrit
4 Decembre 2016
Messages
30
Reactions
0
#5
Bonsoir,

Il est normal que le client t'affiche une erreur puisque dans la fonction Serialize() du paquet on écrit d'abord la taille de la liste puis son contenu.
Si ta liste est null, la taille de la liste, même si elle est de 0 ne pourra pas être écrite, le foreach ne pourra pas non plus être parcouru.

C#:
writer.WriteShort((short)characters.Length);
            foreach (var entry in characters)
            {
                 writer.WriteShort(entry.TypeId);
                 entry.Serialize(writer);
            }
Donc il te suffit juste de définir une nouvelle liste sans contenu.
Voici ce que j'obtient en procédant ainsi:

Code:
    Public Shared Sub HandleCharactersListRequestMessage(Remote As Client, Message As CharactersListRequestMessage)
        Dim L As New List(Of CharacterBaseInformations)
        L.Add(New CharacterBaseInformations)
        SendMessage(Remote.Socket, New CharactersListMessage(L, False))
    End Sub


Même soucis en mettant la valeur par défaut de level à 1
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#6
Pourquoi ajoutes-tu un élément vide ?
Ta liste doit juste être définie sans élément puisque il n'y a pas de joueur.

Code:
Public Shared Sub HandleCharactersListRequestMessage(Remote As Client, Message As CharactersListRequestMessage)
        SendMessage(Remote.Socket, New CharactersListMessage(New List(Of CharacterBaseInformations), False))
    End Sub
 
Inscrit
4 Decembre 2016
Messages
30
Reactions
0
#7
Pourquoi ajoutes-tu un élément vide ?
Ta liste doit juste être définie sans élément puisque il n'y a pas de joueur.

Code:
Public Shared Sub HandleCharactersListRequestMessage(Remote As Client, Message As CharactersListRequestMessage)
        SendMessage(Remote.Socket, New CharactersListMessage(New List(Of CharacterBaseInformations), False))
    End Sub
J'obtient ceci une nouvelle fois :



avec

  • [20:19:27:502] [ServerConnection] [server_game] [RCV] CharactersListMessage @13
  • [20:19:28:422] [UpdaterConnexionHandler] Can't etablish connection with updater
  • [20:19:28:422] [ServerConnection] [] Failure while opening socket.
  • [20:20:11:498] [ServerConnection] [] Failure while opening socket, timeout.
 

neross

Membre Actif
Inscrit
20 Decembre 2014
Messages
150
Reactions
0
#8
A quoi ressemble ta fonction pour serializer ton packet ?
Et cette erreur a beaucoup de chance de venir du fait que ton socket a planter. :)

[*][13:55:29:660] [ServerConnection] [server_game] [SND] > CharactersListRequestMessage @12
[*][13:55:29:662] [ServerConnection] [server_game] [RCV] CharactersListMessage @13
[*][13:55:34:129] [ServerConnection] [] Failure while opening socket, timeout.
[*][13:55:34:137] [UiRenderManager] Ankama_Common::popup rendered in 6 ms (parsing: 0 ms, build: 3 ms, script:1 ms )[/CODE]
 
Inscrit
4 Decembre 2016
Messages
30
Reactions
0
#9
A quoi ressemble ta fonction pour serializer ton packet ?
Et cette erreur a beaucoup de chance de venir du fait que ton socket a planter. :)
Je pense pas que ce soit le socket qui plante, sinon l'émulateur aurait throw une exception, elles sont toutes non handled dans les paramètres d'exception donc ça me l'aurait dit.

Voici mes classes, si vous avez besoin de plus d'informations, dites-le moi.

https://pastebin.com/HVsN0djj
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#10
Je n'arrive pas à trouver ou, mais ça ressemble plus à une erreur dans ton Serialize().
Partages nous tes fonctions Read / Write.
 
Inscrit
4 Decembre 2016
Messages
30
Reactions
0
#13
Oui, j'ai la même classe ici : https://pastebin.com/HVsN0djj

Et pourtant j'ai toujours ce nullreference.

EDIT: J'obtient ceci :

  • [12:39:00:330] [ServerConnection] [server_game] Error while reading socket. Error: Forbidden value (0) on element of CharacterMinimalInformations.level. at com.ankamagames.dofus.network.types.game.character::CharacterMinimalInformations/_levelFunc() at com.ankamagames.dofus.network.types.game.character::CharacterMinimalInformations/deserializeAs_CharacterMinimalInformations() at com.ankamagames.dofus.network.types.game.character::CharacterMinimalInformations/deserialize() at com.ankamagames.dofus.network.types.game.character::CharacterMinimalPlusLookInformations/deserializeAs_CharacterMinimalPlusLookInformations() at com.ankamagames.dofus.network.types.game.character::CharacterMinimalPlusLookInformations/deserialize() at com.ankamagames.dofus.network.types.game.character.choice::CharacterBaseInformations/deserializeAs_CharacterBaseInformations() at com.ankamagames.dofus.network.types.game.character.choice::CharacterBaseInformations/deserialize() at com.ankamagames.dofus.network.messages.game.character.choice::BasicCharactersListMessage/deserializeAs_BasicCharactersListMessage() at com.ankamagames.dofus.network.messages.game.character.choice::BasicCharactersListMessage/deserialize() at com.ankamagames.dofus.network.messages.game.character.choice::CharactersListMessage/deserializeAs_CharactersListMessage() at com.ankamagames.dofus.network.messages.game.character.choice::CharactersListMessage/deserialize() at com.ankamagames.dofus.network.messages.game.character.choice::CharactersListMessage/unpack() at com.ankamagames.dofus.network::MessageReceiver/parse() at com.ankamagames.jerakine.network::ServerConnection/lowReceive() at com.ankamagames.jerakine.network::ServerConnection/receive() at com.ankamagames.jerakine.network::ServerConnection/onSocketData()

Même avec :

 
Dernière édition:

neross

Membre Actif
Inscrit
20 Decembre 2014
Messages
150
Reactions
0
#14
Vérifie CharacterBasicMinimalInformations car s'il lis pas correctement dedans il ne liras pas correctement le level. :)
 
Inscrit
4 Decembre 2016
Messages
30
Reactions
0
#15
Bon, j'ai tout essayé et rien ne marche, toujours ce nullreferenceException.
J'ai même cette fois ci converti les classes de Stump version 2.40, et même problème.

EDIT: En procédant ainsi :

Code:
  Public Shared Sub HandleCharactersListRequestMessage(Remote As Client, Message As CharactersListRequestMessage)

        Dim Characters As New List(Of CharacterBaseInformations)
        Dim SE As New List(Of SubEntity)

        Characters.Add(New CharacterBaseInformations(1, "df", 1, New EntityLook(0, New UShort() {0}, New Integer() {0}, New Short() {0}, SE), 1, False))

        SendMessage(Remote.Socket, New CharactersListMessage(Characters, False))
    End Sub
J'obtient

  • [16:34:46:340] [ServerConnection] [server_game] Error while reading socket. Error: Error #2030: End of file was encountered. at flash.net::Socket/readByte() at com.ankamagames.jerakine.network::CustomDataWrapper/readVarShort() at com.ankamagames.jerakine.network::CustomDataWrapper/readVarUhShort() at com.ankamagames.dofus.network.types.game.look::EntityLook/deserializeAs_EntityLook() at com.ankamagames.dofus.network.types.game.look::EntityLook/deserialize() at com.ankamagames.dofus.network.types.game.character::CharacterMinimalPlusLookInformations/deserializeAs_CharacterMinimalPlusLookInformations() at com.ankamagames.dofus.network.types.game.character::CharacterMinimalPlusLookInformations/deserialize() at com.ankamagames.dofus.network.types.game.character.choice::CharacterBaseInformations/deserializeAs_CharacterBaseInformations() at com.ankamagames.dofus.network.types.game.character.choice::CharacterBaseInformations/deserialize() at com.ankamagames.dofus.network.messages.game.character.choice::BasicCharactersListMessage/deserializeAs_BasicCharactersListMessage() at com.ankamagames.dofus.network.messages.game.character.choice::BasicCharactersListMessage/deserialize() at com.ankamagames.dofus.network.messages.game.character.choice::CharactersListMessage/deserializeAs_CharactersListMessage() at com.ankamagames.dofus.network.messages.game.character.choice::CharactersListMessage/deserialize() at com.ankamagames.dofus.network.messages.game.character.choice::CharactersListMessage/unpack() at com.ankamagames.dofus.network::MessageReceiver/parse() at com.ankamagames.jerakine.network::ServerConnection/lowReceive() at com.ankamagames.jerakine.network::ServerConnection/receive() at com.ankamagames.jerakine.network::ServerConnection/onSocketData()

Dans tous les cas rien ne marche.
 
Dernière édition:

neross

Membre Actif
Inscrit
20 Decembre 2014
Messages
150
Reactions
0
#16
Error: Error #2030: End of file was encountered. at flash.net::Socket/readByte() atcom.ankamagames.jerakine.network::CustomDataWrapper/readVarShort()

Ça c'est qu'il manque des valeurs car il lis trop loin par rapport a ce que tu envois.
 
Inscrit
4 Decembre 2016
Messages
30
Reactions
0
#17
C'est vraiment bizarre, j'ai retraduit les classes et ça marche toujours pas.

Au pire on peux TeamViewer pour que tu jettes un œil parce que je comprend vraiment pas.

EDIT: Bytes envoyés

Décimal :


Hexadécimal :


Officiel :

 
Dernière édition:
Inscrit
4 Decembre 2016
Messages
30
Reactions
0
#18
Problème toujours d'actualité, plusieurs personnes n'ont pas réussi, petite prime pour celui qui réussi :D
 

neross

Membre Actif
Inscrit
20 Decembre 2014
Messages
150
Reactions
0
#19
Problème toujours d'actualité, plusieurs personnes n'ont pas réussi, petite prime pour celui qui réussi :D
Le concept d'aide ce n'est pas de travailler pour toi. On ta donner tout ce qui touche au packet si en retraduisant tout c'est pas bon regarde ton client s'il est bon. La prime elle est pour toi car on est pas ici pour faire ton travail a ta place.
 
Inscrit
4 Decembre 2016
Messages
30
Reactions
0
#20
Le concept d'aide ce n'est pas de travailler pour toi. On ta donner tout ce qui touche au packet si en retraduisant tout c'est pas bon regarde ton client s'il est bon. La prime elle est pour toi car on est pas ici pour faire ton travail a ta place.
C'est vraiment marrant quand tu dises que le concept d'aide n'est pas de travailler pour moi, quand j'y ai passé des heures tous les jours et des semaines à essayer de trouver le problème, quand je n'ai pas réussi, quand même Apokah n'as pas réussi non plus. Tu fais le travail à ma place ? Ah oui, c'est bien nouveau ça. Tu n'as même pas la moindre idée du temps que j'y ai passé dessus. Si je fais ce sujet c'est parce que je suis à bout, et qu'aucune solution n'as été trouvée. Donc si c'est venir dire ça, tu peux retourner à la liste des sujets.

Le client est bon, @nightwolf93 a accès au jeu.
Le packet ainsi que ses dérivés sont bons et traduits.
 
Haut Bas