VB/VB.Net [Requete] Connaître la Cellid ?

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

Anonymous

Invité
#1
Bonjour,
donc première question de ma part, donc la voici : lorsque votre bot socket arrive en jeu comment obtenir la cellid sur laquelle il se trouve ?

J'ai fait quelque recherche et je pense qu'il s'agirait du packet 226 qui contiendrait différents List de tous se qui s'affiche sur la map (ex : obstacle, maison, personnage, ....)

Donc je voudrais savoir si quelqu'un aurait éventuellement une autre solution
 
A

Anonymous

Invité
#2
De memoire ca viens d'un objet EntityDisposition un truc du genre.
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
#3
non c'est bien dans 226 MapComplementaryInformationsDataMessage qui appelle GameRolePlayActorInformations
 
A

Anonymous

Invité
#4
Ouep c'est bien dans le 226 mais j'ai plus d'erreur mais un overflow lorsque j'arrive sur le packet 226, je pense le même que toi ToOns mais je n'arrive pas à récupérer la cellid ....
 
A

Anonymous

Invité
#5
Bon alors question simple quelqu'un sait il comment recevoir la cellid de son personnage ou qui a deja réussi a faire le packet 226 ?
 

4R7Y

Contributeur
Inscrit
6 Mars 2011
Messages
213
Reactions
0
#6
J'ai aussi un overflow
 

4R7Y

Contributeur
Inscrit
6 Mars 2011
Messages
213
Reactions
0
#8
Euh, je regarde ca
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
#9
loc_10 est declaré en Uinteger et est lu en short , un des 2 est faux
 
A

Anonymous

Invité
#10
J'ai jouer a l'apprenti sorcier ^^en testant différentes valeurs de lecture ou de déclarations et sa ne change rien sa me génère de nouvelles exceptions.

- Soit dépassement de lecture de flux dans DofusStream, pour ReadByte.
- Soit la valeur de "Console.Write(" ne peut être convertit en Double.
- Soit _loc_10 a effectuer une action entrainant un dépassement de capacité.

Donc voila si quelqu'un à une idée ?

Car la je patoge, mon problême c'est que la lecture du 226 créer des nouveaux objets OK, mais en créant ces objets et en s'en servant ^^ pour différentes lectures de valeurs, cela génére des exceptions dans les fichiers déjà codés comme EntityLook ou encore mieux dans DofusStream function DofusReader .

Enfin voila
 
A

Anonymous

Invité
#11
Quelqu'un est motivé pour se faire le 226 avec moi ?
 
A

Anonymous

Invité
#12
Le 226 ?
MapComplementaryInformationsDataMessage ?

Code:
Imports Dofus.Network.Types.Game.House
Imports Dofus.Network.Types.Game.Context.Roleplay
Imports Dofus.Network.Types.Game.Context.Fight
Imports Dofus.Network.Types.Game.Interactive

Namespace Messages.Game.Context.Roleplay
    Public Class MapComplementaryInformationsDataMessage
        Inherits NetworkMessage

        Public SubareaId As UInteger = 0
        Public MapId As UInteger = 0
        Public SubareaAlignmentSide As Integer = 0
        Public Houses As New List(Of HouseInformations)
        Public Actors As New List(Of GameRolePlayActorInformations)
        Public InteractiveElements As New List(Of InteractiveElement)
        Public StatedElements As New List(Of StatedElement)
        Public Obstacles As New List(Of MapObstacle)
        Public Fights As New List(Of FightCommonInformations)

        Public Overrides Property ProtocolId As UInteger = 226

        Public Sub InitMapComplementaryInformationsDataMessage(ByVal Param1 As UInteger, ByVal Param2 As UInteger, ByVal Param3 As Integer, ByVal Param4 As List(Of HouseInformations), ByVal Param5 As List(Of GameRolePlayActorInformations), ByVal Param6 As List(Of InteractiveElement), ByVal Param7 As List(Of StatedElement), ByVal Param8 As List(Of MapObstacle), ByVal Param9 As List(Of FightCommonInformations))
            Me.SubareaId = Param1
            Me.MapId = Param2
            Me.SubareaAlignmentSide = Param3
            Me.Houses = Param4
            Me.Actors = Param5
            Me.InteractiveElements = Param6
            Me.StatedElements = Param7
            Me.Obstacles = Param8
            Me.Fights = Param9
        End Sub

        Public Overrides Sub Serialize(ByVal Data As DofusMessage)

            Data.WriteInt16(SubareaId)
            Data.WriteInt32(MapId)
            Data.WriteByte(SubareaAlignmentSide)
            Data.WriteInt16(Houses.Count)
            For Each House As HouseInformations In Houses
                Data.WriteInt16(House.ProtocolId)
                House.Serialize(Data)
            Next
            Data.WriteInt16(Actors.Count)
            For Each Actor As GameRolePlayActorInformations In Actors
                Data.WriteInt16(Actor.ProtocolId)
                Actor.Serialize(Data)
            Next
            Data.WriteInt16(InteractiveElements.Count)
            For Each InteractiveElement As InteractiveElement In InteractiveElements
                InteractiveElement.Serialize(Data)
            Next
            Data.WriteInt16(StatedElements.Count)
            For Each StatedElement As StatedElement In StatedElements
                StatedElement.Serialize(Data)
            Next
            Data.WriteInt16(Obstacles.Count)
            For Each Obstacle As MapObstacle In Obstacles
                Obstacle.Serialize(Data)
            Next
            Data.WriteInt16(Fights.Count)
            For Each Fight As FightCommonInformations In Fights
                Fight.Serialize(Data)
            Next

        End Sub

        Public Overrides Sub Deserialize(ByVal Data As DofusReader)

            SubareaId = Data.ReadInt16
            MapId = Data.ReadInt32
            SubareaAlignmentSide = Data.ReadByte
            For i As Integer = 1 To Data.ReadUInt16
                Dim House As HouseInformations = ProtocolTypeManager.GetInstance(Data.ReadInt16)
                House.Deserialize(Data)
                Houses.Add(House)
            Next
            For i As Integer = 1 To Data.ReadUInt16
                Dim Actor As GameRolePlayActorInformations = ProtocolTypeManager.GetInstance(Data.ReadInt16)
                Actor.Deserialize(Data)
                Actors.Add(Actor)
            Next
            For i As Integer = 1 To Data.ReadUInt16
                Dim InteractiveElement As New InteractiveElement
                InteractiveElement.Deserialize(Data)
                InteractiveElements.Add(InteractiveElement)
            Next
            For i As Integer = 1 To Data.ReadUInt16
                Dim StatedElement As New StatedElement
                StatedElement.Deserialize(Data)
                StatedElements.Add(StatedElement)
            Next
            For i As Integer = 1 To Data.ReadUInt16
                Dim Obstacle As New MapObstacle
                Obstacle.Deserialize(Data)
                Obstacles.Add(Obstacle)
            Next
            For i As Integer = 1 To Data.ReadUInt16
                Dim Fight As New FightCommonInformations
                Fight.Deserialize(Data)
                Fights.Add(Fight)
            Next

        End Sub

    End Class
End Namespace
Personnellement j'ai fait ça comme ça. Après faut pas oublier de gérer toute les classes dans ProtocolTypeManager, sinon si il tombe sur un objet qu'il connait pas, crash.
 

4R7Y

Contributeur
Inscrit
6 Mars 2011
Messages
213
Reactions
0
#13
Maxou, c'est quoi la différence entre "Overrides" et "Shadows" ?
Car j'utilise Shadows et je sais pas si ca a autre effet qu'Overrides ^^"
 
A

Anonymous

Invité
#14
Et tu arrive a récupérer toute tes valeurs sans aucun overflow ou quoi que se soit ?
 

4R7Y

Contributeur
Inscrit
6 Mars 2011
Messages
213
Reactions
0
#16
Avec Overrides, tu redéfinis la méthode: c'est à dire que tu peux faire en sorte de rappeler la méthode de la classe Mère, puis rajouter du contenu, etc... ou alors, tu peux complétement changer le corps de la méthode pour y mettre ce que tu veux.

Shadows, c'est l'équivalent du new en C#, tu va masquer la méthode de la classe Mère.
J'avais déjà cherché(et trouvé) un post sur développez.net mais c'était en contradiction avec d'autres post lu sur des sites anglais (ou une non-compréhension de ma part peut être, je ne connais pas tout les termes en français alors en anglais ...) Je demandais confirmation mais je peux me contenter de cette quote.
J'aurais cru que le terme 'ensemble' sous entendait une interaction entre membre, et si jamais ca lui fait chier de répondre, il ne répond pas et me dit de chercher sur Internet. La question est d'ailleurs ouverte à tous mais il a posté un code comprenant "Overrides", j'en déduis qu'il sait à quoi sert un "Overrides", contrairement à moi.
 

FastFrench

Membre Actif
Inscrit
19 Octobre 2010
Messages
214
Reactions
0
#17
En fait tous les langages objets dignes de ce nom ont un mécanisme de type "override". C'est ce qui est utilisé par défaut et dans la grande majorité des cas (conjointement avec abstract).

A partir du moment où tu ne cherches pas à utiliser les méthodes des classes de base (ou héritées ou parentes) depuis une instance d'une classe dérivée, tu peux utiliser indifféremment l'un ou l'autre. Dans un code bien écrit, l'utilisation de "Shadows" est exceptionnelle.
 

4R7Y

Contributeur
Inscrit
6 Mars 2011
Messages
213
Reactions
0
#18
je prends note, merci d'avoir passé du temps à m'expliquer, c'est plus clair dans ma (petite ?) tête maintenant
 
A

Anonymous

Invité
#19
J'ai codé mes premiers bots 2.0 avec Shadows, je peux te dire que j'en ai vite chié :)
 
A

Anonymous

Invité
#20
Désolé de up le sujet mais j'ai exactement le même soucis ...

Nocebo a dit:
4R7Y a dit:
J'ai aussi un overflow


Je voulais savoir si tu avais sa aussi ?


- Soit dépassement de lecture de flux dans D., pour ReadByte.
- Soit la valeur de "Console.Write(" ne peut être convertit en Double.
- Soit _loc_10 a effectuer une action entrainant un dépassement de capacité.

Donc voila si quelqu'un à une idée ?
Quelqu'un a une idée ??

@Nocebo : Comment as-tu résolut le problème?

Merci
 
Haut Bas