VB/VB.Net Selection personnage

A

Anonymous

Invité
#1
Bonjour,
Je bloque sur la selection du personnage.
Quand j'envoie le paquet 152, je reçoit le 5836. Qui veut dire qu'il y a une erreur.
Mais je ne sais pas vraiment comment traiter le 152
J'ai fait :
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(1)
                Message.pack()
Pour tester mais ça ne marche pas. Il demande d'envoyer un id. Hors on obtient une liste de personnage avec juste leurs sexe et leur classe ( enfin si j'ai bien compris) dans CharactersBaseInformation.
Je tourne en rond mais je ne sais pas où m'orienter. Si vous voulez d'autres bout de code demandez moi.
Merci d'avance
Totolef
 
A

Anonymous

Invité
#2
Tu as une variable id:
Bot_Name = ID_Message.characters(0).characterminimalpluslookinformations.characterminimalinformations.name
Bot_Niveau = ID_Message.characters(0).characterminimalpluslookinformations.characterminimalinformations.level
Bot_Id = ID_Message.characters(0).characterminimalpluslookinformations.characterminimalinformations.id

Dim param1 As New Dofus.DofusWriter
param1.WriteUInt32(Bot_Id)
Dofus.DofusWriter.Send(152, _socket_Jeu)
 
A

Anonymous

Invité
#3
Je n'ai pas compris et je ne trouve vraiment pas.
Je reçoit le paquet 151 qui est CharactersListMessage alors je suis aller le voir et il contient les variables HasStartupActions qui est un boolean et Characters qui est une liste de CharactersBaseInformation
Donc je suis aller voir ce type et il contient une variables breed qui correspond à la classe d'après les enums et qui est un Integer
Et une variable sex qui est un boolean.
Donc je vois pas où tu trouve ton id ...
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
#4
il les trouve dans les sous classes (ou sous objets) tu oublis un bloc de variableS : characterminimalpluslookinformations et la dedans y'a encore un bloc de variableS : characterminimalinformations et ladedans y'a ... ce que tu cherches
 
A

Anonymous

Invité
#5
Ah d'accord je viens de trouver le paquet 110. Je le voyait pas. Faut que je trouve maintenant ou il est deserialize car je le reçoit pas. Je regarde ça après manger et je vous dit. Merci.
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
#6
heu en fait le 110 dans ce cas il est deserialisé avec le unpack du 151 , le 151 a besoin du 110
 
A

Anonymous

Invité
#7
D'accord merci. Je vais essayer.
Je vois d'où viens mon erreur. J'avais pas interpréter le super.deserialize(arg1) qui je suppose correspond au deserialize de characterminimalpluslookinformations.
Comment on l'interprète exactement le super. Je vois pas trop à quoi ça correspond.
Donc je vais me lancer dans la traduction de ce paquet ;)
 
Inscrit
18 Septembre 2010
Messages
8
Reactions
0
#8
Si je me souviens moi les super je les transformé en mybase et faut que ta classe characterbaseinformation herite de la classe characterminimalpluslookinformations
tu le fait avec inherits characterminimalpluslookinformations
ensuite le super tu le déclare en Mybase.deserialize(arg1)
et moi perso pour résoudre les conflit je passe mes fonctions et variables qui ont le même nom en shadows
ex : public shadows function deseralise (byval param1 as dofusreader)
shadows permet de supprimer l'heritage alors que override le redéfini si j'ai bien compris
sinon bah je me remet au membre de ce forum
 
A

Anonymous

Invité
#9
Exact, l'inhrits se trouve a coté de Public class ****

Mais si tu utilise shadow tu en subira les consequence :)
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
#10
oui , remplace shadows par override
 
A

Anonymous

Invité
#11
Ben j'ai utilisé une autre technique qui est peut-être un peu plus crade mais qui me sors un id. Ce que je comprends pas c'est que j'ai beau l'envoyer au serialize du paquet suivant à envoyé et je reçoit le paquet d'erreur ...
Ca vient surement du deserialize de mon CharacterMinimalInformations en faite.
Je dois pas traiter le paquet correctement en faite ...

Function deserializeAs_CharacterMinimalInformations(ByVal param1 As DataReader)
Me.Id = param1.ReadInt()
Me.Level = param1.ReadByte()
Me.Name = param1.ReadUTF()
Return Me
End Function
 
A

Anonymous

Invité
#12
Return mybase non ?
Au depart c'etait pas super ?
This = me
Super = mybase
 
A

Anonymous

Invité
#13
Je vois pas de quoi tu parles là. Je suis dans mon sous paquet.
En faite je déclare dans mon packet CharacterBaseInformation la sous classe pour ensuite aller chercher ses infos dedans.
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
#14
si Me.Name est bien le pseudo de ton perso alors l'id est bon aussi sinon oui y'a une erreur ( bon je t'apprend rien y'a une erreur ca c'est sur sinon ca marcherait :p maintenant faut trouver ou et c'est ca le plus marrant)
 
A

Anonymous

Invité
#15
Ben je comprends vraiment pas là ... J'obtiens le bon level, bon nom, donc je pense bon Id et quoi que je fasse ça marche pas ...
 
Inscrit
18 Septembre 2010
Messages
8
Reactions
0
#16
T'obtien le bon level ?
Parceque un byte peut être un nombre negatif notre reader peut le lire negatif si j'ai tout compris alors que le level est un unsignedbyte donc obligatoirement positif et donc plus grand donc si tu le lit en byte et tu l'envoie au serveur en byte donc ton level peut être négatif ou pas le bon et le seveur attend un usigned donc plus grand et il va surement y avoir un décalage donc il va te renvoyé une erreur
 
A

Anonymous

Invité
#17
Passe nous ton case et tes classes. C'est difficile d'y aller à l'aveuglette.
 
A

Anonymous

Invité
#18
Ben oui c'est le bon level donc le problème vient pas de mon reader unsignedbytes.
Voici mes codes : (Attention la vue ça peut piquer ;) )
Code:
            Case 151 ' Quand je reçoit la liste des joueurs
                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) 'J'ai verifier le level et le nom ici et ils sont bien trasmis
                Message.pack()
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
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)
            CharacterMinimalInfo.deserialize(param1)
            Me.Breed = param1.ReadByte()
            Me.Sex = param1.ReadBoolean()
            Return Me
        End Function
    End Class
End Namespace
Code:
Namespace Types.Game.Character
    Public Class CharacterMinimalInformations
        Public Id As Integer = 0
        Public Level As Byte = 0
        Public Name As String = ""
        Public ProtocolId As UInteger = 110
        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_CharacterMinimalInformations(param1)
            Return Me
        End Function
        Function deserializeAs_CharacterMinimalInformations(ByVal param1 As DataReader)
            Me.Id = param1.ReadInt()
            Me.Level = param1.ReadUnsignedByte()
            Me.Name = param1.ReadUTF()
            MsgBox(Id & " " & Level & " " & Name) ' Verification : j'otiends les bon level et nom qui sont bien transmis au treatpacket
            Return Me
        End Function
    End Class
End Namespace
Code:
Namespace Messages.Game.Character.Choice
    Public Class CharacterSelectionMessage
        Private _isInitialized As Boolean = False
        Public id As Integer = 0
        Public protocolId As UInteger = 152
        Public Function CharacterSelectionMessage()
            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 initCharacterSelectionMessage(ByVal param1 As Integer) As CharacterSelectionMessage
            Me.id = param1
            Me._isInitialized = True
            Return Me
        End Function
        Public Function pack()
            Dim _loc_2 As New DataWriter
            Me.serializeAs_CharacterSelectionMessage(_loc_2)
            DataWriter.Send(protocolId)
            Return Me
        End Function
        Public Function serializeAs_CharacterSelectionMessage(ByVal param1 As DataWriter)
            param1.WriteInt(id)
            Return Me
        End Function
    End Class
End Namespace
Erreur : Je reçoit le paquet 5836 qui s'appelle : CharacterSelectedErrorMessage et qui ne donne pas plus d'infos.

Bonne chance car la je sèche total ... ;)

PS: Je sens que ça va être le truc le plus bête qui existe ... Essayez de pas trop vous foutre de moi :)
 
Inscrit
29 Septembre 2011
Messages
393
Reactions
3
#19
totolef quand tu sera connecte je pourrait venir tv voir sa ?
 
A

Anonymous

Invité
#20
Faut voir sa avec un point d'arret.
 
Haut Bas