VB/VB.Net Mes questions

A

Anonymous

Invité
#81
Si tu as un décalage au 5632 il ne se fait pas avant :D
Il se fait au 5632
 
Inscrit
16 Aout 2011
Messages
184
Reactions
0
#82
Voici le code que j'utilise pour introduire ( je répète que c'est pour obtenir le nom du personnage qui entre sur la map que j'ai un problème ) :

Case 5632
ID_Message = New Types.Game.Context.Roleplay.GameRolePlayNamedActorInformations
ID_Message.Deserialize(PacketData)
Dim Flood = ID_Message.name
MsgBox(Flood)
Basebox.Invoke(base_box_infos, Flood)

Voici les class utilisées dans l'ordre :

GameRolePlayActorInformations
Imports client.Types.Game.Look

Namespace Types.Game.Context.Roleplay

Public Class GameRolePlayActorInformations
Inherits GameContextActorInformations

Public Shadows protocolId As UInteger = 141

Public Function GameRolePlayActorInformations()

Return Me
End Function

Public Shadows Function getTypeId() As UInteger

Return protocolId
End Function

Public Function initGameRolePlayActorInformations(ByVal param1 As Integer, ByVal param2 As EntityLook, ByVal param3 As EntityDispositionInformations) As GameRolePlayActorInformations

MyBase.initGameContextActorInformations(param1, param2, param3)
Return Me
End Function

Public Shadows Function reset()

MyBase.reset()
Return Me
End Function

Public Shadows Function deserialize(ByVal param1 As Dofus.DofusReader)

Me.deserializeAs_GameRolePlayActorInformations(param1)
Return Me
End Function

Public Function deserializeAs_GameRolePlayActorInformations(ByVal param1 As Dofus.DofusReader)

MyBase.deserialize(param1)
Return Me
End Function

End Class
End Namespace

GameContextActorInformations
Imports client.Types.Game.Look
Imports client.ProtocolTypeManager

Namespace Types.Game.Context

Public Class GameContextActorInformations

Public contextualId As Integer = 0
Public look As EntityLook
Public disposition As EntityDispositionInformations
Public protocolId As UInteger = 150

Public Function GameContextActorInformations()

Me.look = New EntityLook()
Me.disposition = New EntityDispositionInformations()
Return Me
End Function

Public Function getTypeId() As UInteger

Return protocolId
End Function

Public Function initGameContextActorInformations(ByVal param1 As Integer, ByVal param2 As EntityLook, ByVal param3 As EntityDispositionInformations) As GameContextActorInformations

Me.contextualId = param1
Me.look = param2
Me.disposition = param3
Return Me
End Function

Public Function reset()

Me.contextualId = 0
Me.look = New EntityLook()
Return Me
End Function
Public Function deserialize(ByVal param1 As Dofus.DofusReader)

Me.deserializeAs_GameContextActorInformations(param1)
Return Me
End Function

Public Function deserializeAs_GameContextActorInformations(ByVal param1 As Dofus.DofusReader)

Me.contextualId = param1.ReadInt()
Me.look = New EntityLook()
Me.look.deserialize(param1)
Dim _loc_2 As UShort = param1.ReadUnSignedshort()
Me.disposition = ProtocolTypeManager.GetInstance(_loc_2)
Me.disposition.deserialize(param1)
Return Me
End Function

End Class
End Namespace

EntityLook
Namespace Types.Game.Look


Public Class EntityLook

Public bonesId As UInteger = 0
Public skins As New List(Of UInteger)
Public indexedColors As New List(Of Integer)
Public scales As New List(Of Integer)
Public subentities As New List(Of SubEntity)
Public protocolId As UInteger = 55

Public Function EntityLook()

Me.skins = New List(Of UInteger)
Me.indexedColors = New List(Of Integer)
Me.scales = New List(Of Integer)
Me.subentities = New List(Of SubEntity)
Return Me
End Function

Public Function getTypeId() As UInteger

Return protocolId
End Function

Public Function initEntityLook(ByVal param1 As UInteger, ByVal param2 As List(Of UInteger), ByVal param3 As List(Of Integer), ByVal param4 As List(Of Integer), ByVal param5 As List(Of SubEntity)) As EntityLook

Me.bonesId = param1
Me.skins = param2
Me.indexedColors = param3
Me.scales = param4
Me.subentities = param5
Return Me
End Function

Public Function reset()

Me.bonesId = 0
Me.skins = New List(Of UInteger)
Me.indexedColors = New List(Of Integer)
Me.scales = New List(Of Integer)
Me.subentities = New List(Of SubEntity)
Return Me
End Function

Public Function deserialize(ByVal param1 As Dofus.DofusReader)

Me.deserializeAs_EntityLook(param1)
Return Me
End Function

Public Function deserializeAs_EntityLook(ByVal param1 As Dofus.DofusReader)
Dim _loc_10 As UInteger = 0
Dim _loc_11 As Integer = 0
Dim _loc_12 As Integer = 0
Dim _loc_13 As SubEntity
Me.bonesId = param1.ReadShort()
If (Me.bonesId < 0) Then

Console.WriteLine("Forbidden value (" + Me.bonesId + ") on element of EntityLook.bonesId.")
End If
Dim _loc_2 As UShort = param1.ReadUnSignedshort()
Dim _loc_3 As UInteger = 0
While (_loc_3 < _loc_2)


_loc_10 = param1.ReadShort()
If (_loc_10 < 0) Then

Console.WriteLine("Forbidden value (" + _loc_10 + ") on elements of skins.")
End If
Me.skins.Add(_loc_10)
_loc_3 = _loc_3 + 1
End While
Dim _loc_4 As UShort = param1.ReadUnSignedshort()
Dim _loc_5 As UInteger = 0
While (_loc_5 < _loc_4)


_loc_11 = param1.ReadInt()
Me.indexedColors.Add(_loc_11)
_loc_5 = _loc_5 + 1
End While
Dim _loc_6 As UShort = param1.ReadUnSignedshort()
Dim _loc_7 As UInteger = 0

While (_loc_7 < _loc_6)


_loc_12 = param1.ReadShort()
Me.scales.Add(_loc_12)
_loc_7 = _loc_7 + 1
End While
Dim _loc_8 As UShort = param1.ReadUnSignedshort()
Dim _loc_9 As UInteger = 0
While (_loc_9 < _loc_8)


_loc_13 = New SubEntity()
_loc_13.deserialize(param1)
Me.subentities.Add(_loc_13)
_loc_9 = _loc_9 + 1
End While
Return Me
End Function


End Class
End Namespace

Mon Dofus reader/writer
Namespace Dofus
Public Class DofusReader
Inherits IO.BinaryReader

Sub New(ByVal input As IO.Stream)
MyBase.New(input)
End Sub

Sub New(ByVal input As IO.Stream, ByVal encoding As System.Text.Encoding)
MyBase.New(input, encoding)
End Sub
Public Function readUnsignedByte()
Return ReadByte()
End Function
Public Overrides Function ReadByte() As Byte
Return MyBase.ReadByte()
End Function

Public Function ReadUnSignedshort()
Return ReadUInt16()
End Function

Public Overrides Function ReadUInt16() As UShort
Return (CUShort(ReadByte()) << 8) + ReadByte()
End Function

Public Overrides Function ReadBoolean() As Boolean
Return ReadByte() = 1
End Function

Public Function ReadShort()
Return ReadInt16()
End Function

Public Overrides Function ReadInt16() As Short
Dim Value As UShort = ReadUInt16()
If Value > Short.MaxValue Then
Dim Value2 As Short = -(UShort.MaxValue - Value) - 1
Return Value2
End If
Return Value
End Function

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

Public Overrides Function ReadDouble() As Double
Dim Bytes() As Byte = ReadBytes(8)
Array.Reverse(Bytes)
Return BitConverter.ToDouble(Bytes, 0)
End Function

Public Function ReadUTF()
Return ReadString()
End Function

Public Overrides Function ReadString() As String
Dim ByteArray() As Byte = MyBase.ReadBytes(ReadUInt16())
Return System.Text.Encoding.UTF8.GetString(ByteArray)
End Function

End Class
Public Class DofusWriter
Shared m_Bytes As New List(Of Byte)

Private Shared Function ComputeStaticHeader(ByVal PacketId As Integer, ByVal MessageLenghtType As Integer) As Short
Return (PacketId << 2) Or MessageLenghtType
End Function

Private Shared Function ComputeTypeLen(ByVal MessageLenght As Integer) As Short
Select Case MessageLenght
Case Is > UShort.MaxValue
Return 3
Case Is > Byte.MaxValue
Return 2
Case Is > 0
Return 1
Case Else
Return 0
End Select
End Function

Friend Shared Sub Send(ByVal PacketID As Integer)
Dim MessageLenghtType As Integer = ComputeTypeLen(m_Bytes.Count)
Dim Header As Short = ComputeStaticHeader(PacketID, MessageLenghtType)

Dim BytesToWrite(2 + MessageLenghtType + m_Bytes.Count - 1) As Byte
BytesToWrite(0) = Header >> 8
BytesToWrite(1) = Header - 256 * BytesToWrite(0)

Dim index As Integer

Select Case MessageLenghtType
Case 1
BytesToWrite(2) = m_Bytes.Count
index = 3
Case 2
BytesToWrite(2) = m_Bytes.Count >> 8
BytesToWrite(3) = m_Bytes.Count - 256 * BytesToWrite(2)
index = 4
Case 3
BytesToWrite(2) = m_Bytes.Count >> 16
BytesToWrite(3) = m_Bytes.Count >> 8
BytesToWrite(4) = m_Bytes.Count - 256 * BytesToWrite(3) - 256 * 256 * BytesToWrite(2)
index = 5
End Select
Console.WriteLine("envoie : id = " & PacketID & ", taille = " & m_Bytes.Count) ' on ecrit l'ID et la taille
Console.Write("0x")
For i As Integer = index To m_Bytes.Count + index - 1
BytesToWrite(i) = m_Bytes(i - index)
Console.Write(BytesToWrite(i).ToString("X2"))
Next
Console.WriteLine()
If comptes._socket.Connected Then
comptes._socket.Send(BytesToWrite)
Else
comptes._socket_Jeu.Send(BytesToWrite)
End If

m_Bytes.Clear()

End Sub

Public Sub WriteByte(ByVal Value As Byte)
m_Bytes.Add(Value)
End Sub

Public Sub WriteBoolean(ByVal Value As Boolean)
If Value Then
WriteByte(1)
Else
WriteByte(0)
End If
End Sub
Public Sub WriteShort(ByVal Value As Short)
WriteInt16(Value)
End Sub
Public Sub WriteUShort(ByVal Value As UShort)
WriteByte(CByte(Value >> 8))
WriteByte(CByte(Value And 255))
End Sub
Public Sub WriteUInt32(ByVal Value As UInteger)
WriteByte(CByte(Value >> 24))
Value -= (Value >> 24) << 24
WriteByte(CByte(Value >> 16))
Value -= (Value >> 16) << 16
WriteByte(CByte(Value >> 8))
Value -= (Value >> 8) << 8
WriteByte(CByte(Value))
End Sub
Public Sub WriteDouble(ByVal Value As UInteger)
WriteByte(CByte(Value >> 56))
Value -= (Value >> 56) << 56
WriteByte(CByte(Value >> 48))
Value -= (Value >> 48) << 48
WriteByte(CByte(Value >> 40))
Value -= (Value >> 40) << 40
WriteByte(CByte(Value >> 32))
Value -= (Value >> 32) << 32
WriteByte(CByte(Value >> 24))
Value -= (Value >> 24) << 24
WriteByte(CByte(Value >> 16))
Value -= (Value >> 16) << 16
WriteByte(CByte(Value >> 8))
Value -= (Value >> 8) << 8
WriteByte(CByte(Value))
End Sub
Public Sub WriteString(ByVal Value As String)
WriteUTF(Value)
End Sub
Public Sub WriteUTF(ByVal Value As String)
Dim BytesToWrite() As Byte = System.Text.Encoding.UTF8.GetBytes(Value)
WriteUShort(BytesToWrite.Length)
For Each Bit As Byte In BytesToWrite
WriteByte(Bit)
Next
End Sub

Sub WriteInt32(ByVal Target As Integer)
Dim arr As Byte()
arr = BitConverter.GetBytes(Target)
WriteByte(arr(3))
WriteByte(arr(2))
WriteByte(arr(1))
WriteByte(arr(0))
End Sub

Sub WriteInt16(ByVal Target As Integer)
Dim arr As Byte()
arr = BitConverter.GetBytes(Target)
WriteByte(arr(1))
WriteByte(arr(0))
End Sub

Sub WriteSingle(ByVal Target As Double)
Dim arr As Byte()
arr = BitConverter.GetBytes(Target)
For Each bytte As Byte In arr
WriteByte(bytte)
Next
End Sub

End Class
End Namespace

Si vous pouviez jeter un coup d'oeil parce que là ^^
 
A

Anonymous

Invité
#83
A qui sa sert de nous montrer ton reader/writer ?

Je t'ai déjà dit que cette fois c'est toi qui résous le problème. Tu deviens dépendant de nous.
 
Inscrit
16 Aout 2011
Messages
184
Reactions
0
#84
Juste pour info, lolodu92 t'as trouvé l'erreur ?
 
A

Anonymous

Invité
#85
Oui... Franchement tu vas chercher la ou y faut pas. C'est d'une simplicité !
 
Inscrit
16 Aout 2011
Messages
184
Reactions
0
#86
Ah oui, c'est évident, ça crève les yeux ...
 
Inscrit
16 Aout 2011
Messages
184
Reactions
0
#87
Si on pouvait juste m'apprendre, je ne parle pas de me donner la solution, mais m'expliquer comment, dans ce contexte, on procède pour trouver les erreurs ... 5 jours que je me couche à 1h pour trouver cette foutue erreur.
 
A

Anonymous

Invité
#88
Les point d'arret, tout est dedans, tu regardes les valeurs.
 
Inscrit
16 Aout 2011
Messages
184
Reactions
0
#89
Oui, ça fait 20 fois que je recommence, que je change la taille des read sans pour autant avoir ma loc_4 = 5
Et à quoi ça sert de regarder les variables si je n'ai pas de valeurs de références ... Je ne sais pas si mes variables sont bonnes ou fausses donc :/
 
A

Anonymous

Invité
#90
ajoute moi sur skype : frydman.alexandre
 
A

Anonymous

Invité
#92
On se voit ce soir vers 21h
 
Inscrit
16 Aout 2011
Messages
184
Reactions
0
#93
Dis moi si tu comptes te connecter, je commence tôt demain.
 
Inscrit
16 Aout 2011
Messages
184
Reactions
0
#94
Bonsoir à tous, j'ai encore ce fameux problème de stream ... Je n'en finis pas avec. Je viens de retraduire les classes en rapport avec ce que je cherche à faire ( 3h de traduction intensives ). Je ne vois vraiment pas ce qui ne va pas. Je m'en remet ici à vous, membres expérimentés car je ne peux plus rien faire si on ne m'explique pas mon erreur. Ca me déprime de voir que depuis vendredi dernier je n'ai pas avancé alors que je passe au moins 6 heures de mon temps par jour sur mon programme.
Si vous le voulez bien, une aide par MSN/Skype serait la bienvenue ( j'expliquerais comment faire aux autres pour ne pas priver le forum de ce que j'ai appris ).
[email protected]
anodu94

Merci et bonne nuit à vous, je go me coucher :)
 
A

Anonymous

Invité
#95
Mais t'as un décalage avant car ton index couleur est de 21, pense a index couleur avant ton scales sinon tu vas t'embrouiller.
 
Inscrit
16 Aout 2011
Messages
184
Reactions
0
#96
Donc un décalage dans les class utilisées ( GameRolePlayActorInformations, GameContextActorInformations, EntityLook, GameRolePlayNamedActorInformations ) ou bien d'autres encore ? Je n'utilise que ces class quand je veux récupérer le nom de la personne qui entre sur la map. Je ne vois pas où peut être le décalage et pourquoi il y en a un alors que j'ai tout retraduit o_O
 
A

Anonymous

Invité
#97
Tu sais tu peux retraduire 100foix, tu as fait une erreur de traduction que tu refais à chaque fois.
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
#98
et GameRolePlayActorInformations ?? (sans Named) tu l'utilises pas ?

Code:
Namespace Network.Messages.Game.Context.Roleplay
    Public Class GameRolePlayShowActorMessage

        Public informations As GameRolePlayActorInformations ' <---------------------------------
        Public protocolId As UInteger = 5632

        Public Function deserialize(ByVal param1 As DofusStream.DofusReader)
            Me.informations = ProtocolTypeManager.GetInstance(param1.ReadUnSignedshort())
            Me.informations.deserialize(param1)
            Return Me
        End Function

    End Class
End Namespace
 
Inscrit
16 Aout 2011
Messages
184
Reactions
0
#99
Euh comment ça je l'utilise pas ? Elle est utilisée par GameRolePlayNamedActorInformations, sinon non je ne l'utilise pas quand je reçois un 5632, je devrais ?
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
Public informations As GameRolePlayActorInformations ' <---------------------------------
Public protocolId As UInteger = 5632

regarde le fichier as et c'est c'est pas ca poste le moi , j'ai pas les sources as
 
Haut Bas