VB/VB.Net Selection personnage

Inscrit
18 Septembre 2010
Messages
8
Reactions
0
#21
essaye sa dans ta case tu remplace
Dim Message As New Messages.Game.Character.Choice.CharacterSelectionMessage
Message.initCharacterSelectionMessage(Characters(0).CharacterMinimalInfo.Id) 'J'ai verifier le level et le nom ici et ils sont bien trasmis
Message.pack()

par
dim idperso = Message.initCharacterSelectionMessage(Characters(0).CharacterMinimalInfo.Id)
Dim writter as new dofusWritter
writter.writeuint32(idperso)
dofuswritter.Send(152)
 
A

Anonymous

Invité
#22
Merci d'essayer de m'aider.
@tifoux : pourquoi veut-tu absolument voir mon code ? ...
@lolodu92 : Tkt j'ai essayer mais tout se passe bien du début à la fin ... C'est surement un problème d'adaptation car c'est juste le serveur qui m'indique qu'il y a une erreur. Il y a pas d'erreur de code ...
@habbi : Je vais essayer mais c'est comme de réécrire le pack dans mon TreatPacket, ça rend le code plus crade ...
 
Inscrit
29 Septembre 2011
Messages
393
Reactions
3
#23
totolef a dit:
Merci d'essayer de m'aider.
@tifoux : pourquoi veut-tu absolument voir mon code ? ...
ben pour pouvoir voir ton code en debugée avec un point d'arête voir mieux mais je vois que tu na pas confiance c'est pas comme si je leech une selection personnage hein.
 
A

Anonymous

Invité
#24
Ben c'est gentil mais je ne pense pas que tu puisses plus m'aider que ça. J'ai une fenêtre qui m'affiche les paquet que je reçoit et envoie et voila. En plus ça aidera pas les prochains qui auront ce problème si on fait ça en privé.
Donc je préfère pas mais merci quand même.
 
Inscrit
29 Septembre 2011
Messages
393
Reactions
3
#25
non mais au cas ou trouve la solution on la poste ici mais c'est pg...
 
Inscrit
29 Septembre 2011
Messages
393
Reactions
3
#26
non mais au cas ou trouve la solution on la poste ici mais c'est pg...
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
#27
totolef a dit:
Ben c'est gentil mais je ne pense pas que tu puisses plus m'aider que ça. J'ai une fenêtre qui m'affiche les paquet que je reçoit et envoie et voila. En plus ça aidera pas les prochains qui auront ce problème si on fait ça en privé.
Donc je préfère pas mais merci quand même.
tu as verifier que cette fenetre contient bien l'id du perso ?
 
A

Anonymous

Invité
#29
Tu sais on ne leech pas sur se fofo, si tu nous donne le code et qu'on s'y met tous on trouvera la solution.
Tifoux, ToOnS et moi meme avons deja depuis longtemps la selection du personnage pas d'inquietude.
 
A

Anonymous

Invité
#30
Ben je veux bien vous donner du code mais dites moi ce que vous voudriez parce que je vous ait tout donné au dessus.
Je vais récapituler ce que j'ai et le problème :
J'ai la fenêtre de mon compte qui s'ouvre bien en même temps qu'une fenêtre de debugguage qui m’affiche les paquets reçu et envoyé sous la forme : [recu] id : id_du_packet | taille : taile_du_packet
Je lance donc la connexion et je reçoit et envoie bien tout les packets. Arrivé au TreatPacket dont j'ai partagé la case 151 :
Code:
            Case 151
                Dim CharactersList As New Messages.Game.Character.Choice.CharactersListMessage
                CharactersList.unpack(reader)
                Dim Characters As List(Of Types.Game.Character.Choice.CharactersBaseInformation) = CharactersList.Characters
                Dim Message As New Messages.Game.Character.Choice.CharacterSelectionMessage
                Message.initCharacterSelectionMessage(Characters(0).CharacterMinimalInfo.Id_perso)
                Message.pack()
Il crée et unpack bien mon packet :
Code:
Namespace Messages.Game.Character.Choice
    Public Class CharactersListMessage
        Private _isInitialized As Boolean = False
        Public HasStartupActions As Boolean = False
        Public Characters As New List(Of Types.Game.Character.Choice.CharactersBaseInformation)
        Public ProtocolId As UInteger = 151
        Public Function CharactersListMessage()
            Return Me
        End Function
        Public Function get_isInitialized() As Boolean
            Return Me._isInitialized
        End Function
        Public Function getMessageId() As UInteger
            Return ProtocolId
        End Function
        Public Function unpack(ByVal param1 As DataReader)
            Me.deserializeAs_CharactersListMessage(param1)
            Return Me
        End Function
        Public Function deserializeAs_CharactersListMessage(ByVal param1 As DataReader)
            Dim _loc_4 As Integer
            Dim _loc_5 As Types.Game.Character.Choice.CharactersBaseInformation
            Me.HasStartupActions = param1.ReadBoolean()
            Dim _loc_2 = param1.ReadUnSignedshort()
            Dim _loc_3 As Integer = 0
            Do While (_loc_3 < _loc_2)
                _loc_4 = param1.ReadUnSignedshort()
                _loc_5 = New Types.Game.Character.Choice.CharactersBaseInformation
                _loc_5.Deserialize(param1)
                Me.Characters.Add(_loc_5)
                _loc_3 = _loc_3 + 1
            Loop
            Return Me
        End Function
    End Class
End Namespace
On voit que dans ce packet il en crée un autre, CharactersBaseInformation qui contient les infos de chaque personnages :
Code:
Namespace Types.Game.Character.Choice
    Public Class CharactersBaseInformation
        Public Sex As Boolean = False
        Public Breed As Integer = 0
        Public ProtocolId As UInteger = 45
        Public CharacterMinimalInfo As New Types.Game.Character.CharacterMinimalInformations
        Public Function CharactersBaseInformation()
            Return Me
        End Function
        Public Function getTypeId() As UInteger
            Return ProtocolId
        End Function
        Public Function deserialize(ByVal param1 As DataReader)
            Me.deserializeAs_CharactersBaseInformation(param1)
            Return Me
        End Function
        Function deserializeAs_CharactersBaseInformation(ByVal param1 As DataReader)
            Me.Id_perso = param1.ReadInt()
            Me.Level = param1.ReadUnsignedByte()
            Me.Name = param1.ReadUTF()
            Me.Breed = param1.ReadByte()
            Me.Sex = param1.ReadBoolean()
            Return Me
        End Function
    End Class
End Namespace
J'ai un peu modifier ce code par rapport à la dernière fois mais ça ne règle pas le problème.
J'ai transférer la lecture des infos dans ce packet pour éviter de faire un autre sous packet.

Et donc quand j'initialise le packet à envoyer tout se passe bien mais dans ma fenêtre de debugguage j'ai ça :
[Reçu] ID = 151 | Taille du contenu = 59
[Envoie] ID = 152, Taille = 4
[Reçu] ID = 5836 | Taille du contenu = 0
[Reçu] ID = 176 | Taille du contenu = 0

Voila j’espère que j'ai mieux expliqué.
Merci de votre aide.
 
Inscrit
29 Septembre 2011
Messages
393
Reactions
3
#31
Totolef je te conseil de refait toute t'est class depuis CharacterListMessage avec Les Inherits qui va avec car j'ai refait ma connexion a ta façon de procéder et sa fonctionne très bien mais contrairement a toi j'ai utiliser les Inherits.

voici les Inherits
Code:
    Public Class CharacterBaseInformations
        Inherits CharacterMinimalPlusLookInformations
Code:
Public Class CharacterMinimalPlusLookInformations
    Inherits CharacterMinimalInformations
    Public Overrides Property protocolId As UInteger = 163

    Public Overrides Sub deserialize(_reader As Dofus.DofusReader)
        MyBase.deserialize(_reader)
    End Sub
End Class

Code:
   Case ****.Packet.Jeux.Game.Character.CharactersListMessage.ProtocolId
                Dim CLM As New ****.Packet.Jeux.Game.Character.CharactersListMessage
                Mylog.WriteStatut("Reception de la liste des personnages.")
                CLM.deserialize(PacketData)
                Dim CSM As New *****.Packet.Jeux.Game.Character.Request.CharacterSelectionMessage
                CSM.initCharacterSelectionMessage(CLM.characters(0).id)
                CSM.pack(_socket_Jeu)
Ma class CharacterSelectionMessage

Code:
Imports System.Net.Sockets

Namespace ****.Packet.Jeux.Game.Character.Request
    Public Class CharacterSelectionMessage
        Public id As Integer = 0
        Public Const protocolId As UInteger = 152

        Public Sub initCharacterSelectionMessage(_id As Integer)
            Me.id = _id
        End Sub

        Public Sub pack(sock As Socket)
            Dim _Writer As New Dofus.DofusWriter(sock)
            Me.Serialize(_Writer)
            Dofus.DofusWriter.Send(CharacterSelectionMessage.protocolId)
        End Sub

        Private Sub Serialize(writer As Dofus.DofusWriter)
            writer.WriteInt(id)
        End Sub
    End Class
End Namespace
Mais Logs
Code:
(Reçus) : ID = 151 | Taille  = 66
000001002D005A94D411000C456173792D4772697A7A6C7900010004005A00F2007C052A000505FA950F02E1710E0459331001FFC867035864000001008C00000900
000001002D005A94D411000C456173792D4772697A7A6C7900010004005A00F2007C052A000505FA950F02E1710E0459331001FFC867035864000001008C00000900

[Send] ID = 152 | Taille  = 4
0x005A94D4
(Reçus) : ID = 176 | Taille  = 0

(Reçus) : ID = 6087 | Taille  = 6
000100C3BFFE
000100C3BFFE

(Reçus) : ID = 153 | Taille  = 61
005A94D411000C456173792D4772697A7A6C7900010004005A00F2007C052A000505FA950F02E1710E0459331001FFC867035864000001008C00000900
005A94D411000C456173792D4772697A7A6C7900010004005A00F2007C052A000505FA950F02E1710E0459331001FFC867035864000001008C00000900
On a pas eux de nouvel si ton sujet résolue etc.

Ps : après avoir résolue sa si tu lis pas les entityLook de ton premier personnage tu ne pourra pas lire les information du desième personnage nom,id, level etc :p! il aura un decalage obligatoirement ci-dessous

Code:
Me.Id_perso = param1.ReadInt()
Me.Level = param1.ReadUnsignedByte()
Me.Name = param1.ReadUTF()
Me.Breed = param1.ReadByte()
Me.Sex = param1.ReadBoolean()
 
A

Anonymous

Invité
#32
Merci tifoux d'essayer de m'aider mais j'ai beau faire avec les Inherits et toujours pareil ...
Mais j'ai peut-être une piste :
Je crois que ça vient de la lecture de mon id. Même si plusieurs compte de test sortait une id sans problème particulier, j'ai trouvé un compte où le programme s’arrête sans message d'erreur à la lecture de cette ligne :
Code:
Return CInt((ReadByte() << 24) + (ReadByte() << 16) + (ReadByte() << 8) + ReadByte())
(quand j'avance en point d’arrêt) qui est mon ReadInt dans mon DataReader
Ce qui est étrange c'est que pour mes autres compte il n'y a pas eu de problème ...
 
Inscrit
29 Septembre 2011
Messages
393
Reactions
3
#33
tien je t'envoi mon reader pour lire l'id :

Code:
      Public Function ReadInt()
            Return ReadInt32()
        End Function

        Public Overrides Function ReadInt32() As Integer
            Dim Value As UInteger = ReadUInt32()
            If Value > Integer.MaxValue Then
                Dim Value2 As Integer = -(UInteger.MaxValue - Value) - 1
                Return Value2
            End If
            Return Value
        End Function

        Public Overrides Function ReadUInt32() As UInteger
            Return (CUInt(ReadByte()) << 24) + (CUInt(ReadByte()) << 16) + (CUInt(ReadByte()) << 8) + ReadByte()
        End Function
Merci ToOnS <3

Ps : j'ai tester se code
Code:
Return CInt((ReadByte() << 24) + (ReadByte() << 16) + (ReadByte() << 8) + ReadByte())
c'est totalement faux ^^
 
A

Anonymous

Invité
#34
Ah ben merci beaucoup ça marche enfin. Je sais pas pourquoi mais ça marchai bien avant pour d'autre cas ...
Et regarde ton ReadUInt32, il es presque identique au miens. C'est que j'y était presque :p Merci encore pour l'aide
J'espère que ça pourra servir à d'autre.
 
Inscrit
29 Septembre 2011
Messages
393
Reactions
3
#35
Pas de problème totolef surtout n'oublie pas se que je t'est dit avant sa si tu conte lire tous les autres personnages du compte tu devra lire les entityLook autrement tu aura pas les bonnes informations :p
Ps: ravie de t'avoir aidée.
 
Haut Bas