VB/VB.Net Probleme 226

  • Auteur de la discussion Anonymous
  • Date de début
A

Anonymous

Invité
#1
Bonjour,
J'ai un petit probleme avec le paquet 226, je voudrais récupérer le nom des persos présents sur la carte donc j'ai pas besoin de tout le reste.
Code:
Public Class MapComplementaryInformationsDataMessage

    Public actors As New List(Of GameRolePlayActorInformations)


    Public Function deserialize(ByVal param1 As DofusReader)
        Dim _loc_17 As GameRolePlayActorInformations = Nothing
        Dim _loc_16 As UInteger = 0

        Dim _loc_4 = param1.ReadUnSignedshort()
        Dim _loc_5 As UInteger = 0

        While _loc_5 < _loc_4

            _loc_16 = param1.ReadUnSignedshort()
            _loc_17 = New GameRolePlayActorInformations
            _loc_17.deserialize(param1)
            Me.actors.add(_loc_17)
            _loc_5 = _loc_5 + 1

        End While

        Return Me
    End Function
End Class
Code:
Public Class GameContextActorInformations

    Public contextualId As Integer = 0
    ' Public look As EntityLook
    'Public disposition As EntityDispositionInformations

    Public Function Deserialize(ByVal param1 As DofusReader)
        Me.contextualId = param1.ReadInt()
        'look = New EntityLook()
        'look.deserialize(param1)
        'Dim _loc_2 = param1.ReadUnSignedshort()
        'disposition = New EntityDispositionInformations
        'disposition.Deserialize(param1)
        Return Me
    End Function

End Class
Voila, j'en suis la et après je suis perdu :'( . Si quelqu'un peux m'aider.
 
A

Anonymous

Invité
#2
Faut mettre aucune ligne en commantaire du code, ensuite quel est ton probleme exactement ?
 
A

Anonymous

Invité
#3
Je comprends plus comment ça fonctionne : ou sont lances les deserialize des classes en inherits,... Moi je veux juste lister les pseudo des joueurs sur la map dans mon dictionary donc je crois aps avoir besoin des House..., etc. Et je vois pas non plus comment on accède aux classe en inherits depuis le dictionary. bref, gros bazar dans ma tete ^^
 
A

Anonymous

Invité
#4
Deja traduit la classe entiere actorinformation, pour les inherits c'est le protocoltypemanager, on te demande des ids.
 
A

Anonymous

Invité
#5
Code:
Public Class EntityDispositionInformations
    Public cellId As Integer = 0
    Public direction As UInteger = 1
    Public protocolId As UInteger = 60

    Public Function getTypeid()
        Return 60
    End Function

    Public Function deserialize(ByVal param1 As DofusReader)

        Me.cellId = param1.ReadShort()
        If Me.cellId < -1 Or Me.cellId > 559 Then

            Throw New Exception("Forbidden value (" + Me.cellId + ") on element of EntityDispositionInformations.cellId.")
        End If
        Me.direction = param1.ReadByte()
        If Me.direction < 0 Then

            Throw New Exception("Forbidden value (" + Me.direction + ") on element of EntityDispositionInformations.direction.")
        End If
        Return Nothing
    End Function
End Class
Code:
Public Class GameRolePlayActorInformations
    Inherits GameContextActorInformations

    Public protocolId As UInteger = 141

    Public Function GameRolePlayActorInformations()
        Return Nothing
    End Function

    Public Function getTypeid()
        Return 141
    End Function
    Public Function initGameRolePlayActorInformations(ByVal param1 As Integer, ByVal param2 As EntityLook, ByVal param3 As EntityDispositionInformations)
        MyBase.initGameContextActorInformations(param1, param2, param3)

        Return Me
    End Function
    Public Overloads Function deserialize(ByVal param1 As DofusReader)
        MyBase.Deserialize(param1)

        Return Me
    End Function
Code:
Public Class GameContextActorInformations

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

    Public Function getTypeid()
        Return 150
    End Function

    Public Function initGameContextActorInformations(ByVal contextualId As Integer, ByVal look As EntityLook, ByVal disposition As EntityDispositionInformations)

        contextualId = contextualId
        look = look
        disposition = disposition
        Me.protocolId = 150
        Return Me
    End Function

    Public Function Deserialize(ByVal param1 As DofusReader)
        Me.contextualId = param1.ReadInt()
        look = New EntityLook()
        look.deserialize(param1)
        Dim _loc_2 = param1.ReadUnSignedshort()
        Me.disposition = New EntityDispositionInformations
        Me.disposition.Deserialize(param1)
        Return Me
    End Function

End Class
ça me semble correcte :/

Sinon convertir ça :
Code:
ProtocolTypeManager.getInstance(EntityDispositionInformations, _loc_2);
en
Code:
New EntityDispositionInformations
est correcte non ?
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
#6
si tu as besoin des houses et tout le bordel sinon comment tu sais ou te placer dans le stream ? Le seul moyen c'est de tout faire dans l'ordre meme (sauf si tu veux juste la 1ere info mais la c'est pas le cas , c'est vers la fin) et tu es obligé de passer par le protocoletypemanager car il renvera pas forcement toujours la meme classe (c'est justement a ca que sert loc_2)
 
A

Anonymous

Invité
#7
Code:
   public static function getInstance(param1:Class, param2:uint)
        {
            var _loc_3:* = _typesTypes[param2];
            if (!_loc_3)
            {
                throw new Error("Type with id " + param2 + " is unknown.");
            }
            var _loc_4:* = new _loc_3;
            if (!(new _loc_3 is param1))
            {
                throw new Error("Type " + param2 + " is not a " + param1 + ".");
            }
            return _loc_4;
        }// end function
Je vois pas l’intérêt vu que si param1 est différent de param 2 ça met une erreur donc param2 correspondra forcement a la bonne class, non ?
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
#8
non car param2 (dans le stream , donc loc_2) aura pas forcement la meme valeur a chaque fois selon quel _typesTypes il faut lire , si c'est un monstre ou un perso qui est sur la map on lit pas les memes classes (en fait pas les memes _typesTypes)
 
A

Anonymous

Invité
#9
Code:
Public Class ProtocolTypeManager
    Public v As Object
    Public Function _typesTypes(ByVal id As UInteger)
        Select Case id
            Case 11
                v = New Version()

            Case 377
                v = New TrustCertificate()

            Case 25
                v = New GameServerInformations()

            Case 55
                v = New EntityLook()

            Case 54
                v = New SubEntity()

            Case 110
                v = New CharacterMinimalInformations()

            Case 163
                v = New CharacterMinimalPlusLookInformations()

            Case 60
                v = New EntityDispositionInformations()

            Case 369
                v = New Shortcut()

            Case 150
                v = New GameContextActorInformations()

            Case 141
                v = New GameRolePlayActorInformations()

            Case 174
                v = New MapCoordinates()

            Case 176
                v = New MapCoordinatesExtended()

            Case Else

                Throw New Exception("No id ProtocolTypeManager" + id)

        End Select

        Return v
    End Function

    Public Function getInstance(ByVal param1 As Object, ByVal param2 As UInteger)

        Dim _loc_3 = _typesTypes(param2)

        Return _loc_3
    End Function

End Class
C'est correct de cette manière ? J'ai ignore une partie qui me semblait pas très importante :D
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
#10
oui ca doit etre correct ca mais pour mieux trouver les prochains a ajouter je conseil de changer ca :
Throw New Exception("No id ProtocolTypeManager" + id)
par un console.writeline ou une msgbox
 
A

Anonymous

Invité
#11
J'ai presque fini de tout traduire, mais il me souligne en vert les fonctions dans les class en inherits... Il faut que je mette overloads ? parce que il me dit que la fonction est surchargeable e
 
A

Anonymous

Invité
#12
Tu n'as pas mis de overides et de overidable dans ta class, c'est une grosse connerie. Tu va avoir un décalage et tu devra tout recommencer.
 
A

Anonymous

Invité
#13
Comment je sais ou je dois les mettre ?
 
A

Anonymous

Invité
#14
Bah la ou tu les a supprimé.

Overides si y'a un inherits autre que networkmesqage
Overidable si y'a pas d'inherits
 
A

Anonymous

Invité
#15
Moi je les ai pas, mais j'ai trouvé ou ils sont. J'utilise Sothink pour decompiler.
 
A

Anonymous

Invité
#16
Bah ya pas des overrides sur ta class ?
 
Inscrit
16 Aout 2011
Messages
184
Reactions
0
#17
Normalement les override sont avant la function ( en AS ). Genre override Public Function deserialize ...
T'as juste à le déplacer ( en VB ) = > Public overrides Function deserialize
Après, soit tu attends que VB te mette les erreurs et qu'ils te proposent de mettre un Overloads sur l'hérité soit tu les mets toi même.
 
A

Anonymous

Invité
#19
J'avais eu le même problème, en fait c'est une class d'un id du protocoltypemanager qu'a changé mais je n'arrive pas a mettre la main dessus.
 
A

Anonymous

Invité
#20
Renvoi nous ton protocolTypeManager, je vais te dire.
 
Haut Bas