VB/VB.Net Problème avec le "GameFightMinimalStats"[RÉSOLU]

the-gamer

Contributeur
Inscrit
6 Juin 2012
Messages
41
Reactions
0
#1
Bonjour,
j'ai un problème avec ce packet mais pas toujours il y a des combat qui sont lancer tranquillement mais d'autre ou je trouve l'erreur avec des mob non charger en combat , le packet est traiter lors de chargement des informations de combat.
Code:
Public Overrides Sub Deserialize(ByVal reader As DofusReader)
            Me._LifePoints = reader.ReadVaruhint
            Me._MaxLifePoints = reader.ReadVaruhint
            Me._BaseMaxLifePoints = reader.ReadVaruhint
            Me._PermanentDamagePercent = reader.ReadVaruhint
            Me._ShieldPoints = reader.ReadVaruhint
            Me._ActionPoints = reader.ReadVarshort
            Me._MaxActionPoints = reader.ReadVarshort
            Me._MovementPoints = reader.ReadVarshort
            Me._MaxMovementPoints = reader.ReadVarshort
            Me._Summoner = reader.ReadInt32
            Me._Summoned = reader.ReadBoolean
            Me._NeutralElementResistPercent = reader.ReadVarshort
            Me._EarthElementResistPercent = reader.ReadVarshort
            Me._WaterElementResistPercent = reader.ReadVarshort
            Me._AirElementResistPercent = reader.ReadVarshort
            Me._FireElementResistPercent = reader.ReadVarshort
            Me._NeutralElementReduction = reader.ReadVarshort
            Me._EarthElementReduction = reader.ReadVarshort
            Me._WaterElementReduction = reader.ReadVarshort
            Me._AirElementReduction = reader.ReadVarshort
            Me._FireElementReduction = reader.ReadVarshort
            Me._CriticalDamageFixedResist = reader.ReadVarshort
            Me._PushDamageFixedResist = reader.ReadVarshort
            Me._DodgePALostProbability = reader.ReadVaruhshort
            Me._DodgePMLostProbability = reader.ReadVaruhshort
            Me._TackleBlock = reader.ReadVarshort
            Me._TackleEvade = reader.ReadVarshort
            Me._InvisibilityState = reader.ReadByte
        End Sub
Code:
Public Overrides Sub Serialize(ByVal writer As DofusMessage)
            writer.WriteVarint(Me._LifePoints)
            writer.WriteVarint(Me._MaxLifePoints)
            writer.WriteVarint(Me._BaseMaxLifePoints)
            writer.WriteVarint(Me._PermanentDamagePercent)
            writer.WriteVarint(Me._ShieldPoints)
            writer.WriteVarshort(Me._ActionPoints)
            writer.WriteVarshort(Me._MaxActionPoints)
            writer.WriteVarshort(Me._MovementPoints)
            writer.WriteVarshort(Me._MaxMovementPoints)
            writer.WriteInt32(Me._Summoner)
            writer.WriteBoolean(Me._Summoned)
            writer.WriteVarshort(Me._NeutralElementResistPercent)
            writer.WriteVarshort(Me._EarthElementResistPercent)
            writer.WriteVarshort(Me._WaterElementResistPercent)
            writer.WriteVarshort(Me._AirElementResistPercent)
            writer.WriteVarshort(Me._FireElementResistPercent)
            writer.WriteVarshort(Me._NeutralElementReduction)
            writer.WriteVarshort(Me._EarthElementReduction)
            writer.WriteVarshort(Me._WaterElementReduction)
            writer.WriteVarshort(Me._AirElementReduction)
            writer.WriteVarshort(Me._FireElementReduction)
            writer.WriteVarshort(Me._CriticalDamageFixedResist)
            writer.WriteVarshort(Me._PushDamageFixedResist)
            writer.WriteVarshort(Me._DodgePALostProbability)
            writer.WriteVarshort(Me._DodgePMLostProbability)
            writer.WriteVarshort(Me._TackleBlock)
            writer.WriteVarshort(Me._TackleEvade)
            writer.WriteByte(Me._InvisibilityState)
        End Sub
Code:
Private _ProtocolID As UInt32
        Private _LifePoints As UInteger = 0
        Private _MaxLifePoints As UInteger = 0
        Private _BaseMaxLifePoints As UInteger = 0
        Private _PermanentDamagePercent As UInteger = 0
        Private _ShieldPoints As UInteger = 0
        Private _ActionPoints As Integer = 0
        Private _MaxActionPoints As Integer = 0
        Private _MovementPoints As Integer = 0
        Private _MaxMovementPoints As Integer = 0
        Private _Summoner As Integer = 0
        Private _Summoned As Boolean = False
        Private _NeutralElementResistPercent As Integer = 0
        Private _EarthElementResistPercent As Integer = 0
        Private _WaterElementResistPercent As Integer = 0
        Private _AirElementResistPercent As Integer = 0
        Private _FireElementResistPercent As Integer = 0
        Private _NeutralElementReduction As Integer = 0
        Private _EarthElementReduction As Integer = 0
        Private _WaterElementReduction As Integer = 0
        Private _AirElementReduction As Integer = 0
        Private _FireElementReduction As Integer = 0
        Private _CriticalDamageFixedResist As Integer = 0
        Private _PushDamageFixedResist As Integer = 0
        Private _DodgePALostProbability As UInteger = 0
        Private _DodgePMLostProbability As UInteger = 0
        Private _TackleBlock As Integer = 0
        Private _TackleEvade As Integer = 0
        Private _InvisibilityState As Integer = 0
+ les props ...

pour les fonctions de lecture et écriture sont déjà vérifier et il n y a aucun problème.SI vous avez des propositions des théories .. et Merci
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#2
Re: Problème avec le "GameFightMinimalStats"

Ton code est bon. Merci de nous renseigner ton erreur et ou exactement elle a lieu.
Et j'aimerais tout de même jeter un coup d’œil a ton reader car cela ne peut pas venir de 20 000 endroits. Si ton code est bon, c'est le reader qui pose problème.
 

the-gamer

Contributeur
Inscrit
6 Juin 2012
Messages
41
Reactions
0
#3
Re: Problème avec le "GameFightMinimalStats"

le moment exact du problème est le moment de chargement d'information des mobs dans un groupe de 3 par exemple je peux avoir le message d'erreur (qui ne dit pas grande chose juste que erreur sur le packet X) 2 fois sur les mobs non charger
Code:
Public Function ReadVarshort() As Int16
            Dim _loc4_ As Byte = 0
            Dim _loc1_ As Int16 = 0
            Dim _loc2_ As Integer = 0
            Dim _loc3_ As Boolean = False
            While _loc2_ < SHORT_SIZE
                _loc4_ = Me.ReadByte()
                _loc3_ = (_loc4_ And MASK_10000000) = MASK_10000000
                If _loc2_ > 0 Then
                    _loc1_ = _loc1_ + ((_loc4_ And MASK_01111111) << _loc2_)
                Else
                    _loc1_ = _loc1_ + (_loc4_ And MASK_01111111)
                End If
                _loc2_ = _loc2_ + CHUNCK_BIT_SIZE
                If Not _loc3_ Then
                    If _loc1_ > SHORT_MAX_VALUE Then
                        _loc1_ = _loc1_ - UNSIGNED_SHORT_MAX_VALUE
                    End If
                    Return _loc1_
                End If
            End While
            Throw New Exception("Too much data")
        End Function

        Public Function ReadVaruhshort() As UInt16
            Return CUShort(Me.ReadVarshort())
        End Function
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#4
Re: Problème avec le "GameFightMinimalStats"

Eh bien moi j'aimerais l'erreur exacte, sinon je ne peux pas t'aider.
Modifie le Try qui affiche l'erreur.
 

neross

Membre Actif
Inscrit
20 Decembre 2014
Messages
150
Reactions
0
#5
Re: Problème avec le "GameFightMinimalStats"

Modifie tes private en dim. :)
 

BlueDream

Administrateur
Membre du personnel
Inscrit
8 Decembre 2012
Messages
2 010
Reactions
149
#6
Re: Problème avec le "GameFightMinimalStats"

Ah oui aussi :p
 

the-gamer

Contributeur
Inscrit
6 Juin 2012
Messages
41
Reactions
0
#7
Re: Problème avec le "GameFightMinimalStats"

Salut merci pour votre interaction.
@neross private ou dim ... aucun changement
@BlueDream "L'opération arithmétique a provoqué un dépassement de capacité." voila le code exact
 
Dernière édition par un modérateur:

the-gamer

Contributeur
Inscrit
6 Juin 2012
Messages
41
Reactions
0
#8
Re: Problème avec le "GameFightMinimalStats"

Code:
Public Function ReadVarshort() As Int16
            Dim _loc_1 As Integer = 0
            Dim _loc_2 As Integer = 0
            Dim _loc_3 As Boolean = False
            Do While _loc_2 < SHORT_SIZE
                Dim tempon As Byte = Me.ReadByte()
                _loc_3 = (tempon And MASK_10000000) = MASK_10000000
                If _loc_2 > 0 Then
                    _loc_1 = _loc_1 + ((tempon And MASK_01111111) << _loc_2)
                Else
                    _loc_1 = _loc_1 + (tempon And MASK_01111111)
                End If
                _loc_2 = _loc_2 + CHUNCK_BIT_SIZE
                If Not _loc_3 Then
                    If _loc_1 > SHORT_MAX_VALUE Then
                        _loc_1 = _loc_1 - UNSIGNED_SHORT_MAX_VALUE
                    End If
                    Return CShort(_loc_1)
                End If
            Loop
            Throw New Exception("Too much data")
        End Function
Problème totalement réglé sur la nouvelle fonction merci pour votre aide.
Cordialement
 
Haut Bas