VB/VB.Net Mes questions

Inscrit
16 Aout 2011
Messages
184
Reactions
0
Ouah merci beaucoup Max ! Ca fonctionne du tonnerre :)
 
Inscrit
16 Aout 2011
Messages
184
Reactions
0
Nouveau problème pour cette nuit étrange ^^ J'ai réussi grâce à Maxilia à récupérer les noms des personnages sur la map mais je n'arrive pas à récupérer la cellid de mon personnage. J'ai vu qu'elle était dans EntityDispositionInformations, j'ai essayé de la récupérer mais à chaque fois je tombe sur 0. Même avec un lecteur de log, je trouve 0. J'ai pensé au fait que ça ne peut pas donner une valeur pour un personnage au hasard, j'ai donc essayé de faire un bidouillage avec le nom du perso mais ça fonctionne pas :(
Bonne nuit à tous. Ne vous couchez pas trop tard xD
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
Code:
For i As Integer = 0 To ID_Message.actors.Count - 1
                    Select Case ID_Message.actors(i).protocolId 'En fonction du type on affiche
                        Case 36 'Joueurs
                            If ID_Message.Actors(i).ContextualId = Bot.ID Then
                                Bot.CellID = ID_Message.Actors(i).Disposition.cellId
                            End If
                            Dim Level As Integer = ID_Message.Actors(i).alignmentInfos.CharacterPower - ID_Message.Actors(i).ContextualId
 
Inscrit
16 Aout 2011
Messages
184
Reactions
0
Merci mais encore quelques problèmes, étant donné que c'est du code tout fait xD
A quoi correspond contextualid ( je sais que c'est un integer dans GameContext... ), à quoi correspondent Bot et ID et enfin,

Dim Level As Integer = ID_Message.Actors(i).alignmentInfos.CharacterPower - ID_Message.Actors(i).ContextualId

n'a rien à voir avec ce que je veux faire ou je me trompe ?

En tout cas merci ToOnS :)
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
oupss oui la derniere ligne a rien a voire avec ce que tu veux faire , c'est le lvl du perso(i)
pour bot.cellid et bot id en fait c'est parceque j'ai fais un objet bot qui contient un peu toutes les infos du bot , tu pourrais mettre a la place :
If ID_Message.Actors(i).name = "ToOnS" then
 
Inscrit
16 Aout 2011
Messages
184
Reactions
0
Ok je test ca demain :)
Malgré mon adoration pour toi j'en suis pas au point d'appeller mes perso ToOnS xD
Bonne soirée à vous caderniens
 
Inscrit
16 Aout 2011
Messages
184
Reactions
0
Ce n'est pas terminé :(
Voici mon code dans la case 226 pour récupérer la cellid de mon personnage. Lorsque je lance, j'obtiens pour valeur de cellid 0 dans la MsgBox. Je ne comprends pas, j'ai pensé que c'est peut être le fait que la cellid ne soit pas attribuée mais je n'en suis pas sûr, je cherche des solutions mais bon.

Edit : J'ai remarqué que cellid dans EntityDispositionInformations a une valeur ( 525 ) lors du deserialize, elle est donc correcte.

Code:
 For i As Integer = 0 To ID_Message.actors.Count - 1
                    Select Case ID_Message.actors(i).protocolId
                        Case 36 
                            If ID_Message.actors(i).GameContextActorInformations.name = IDN_Bot Then
                                ID_Cell = ID_Message.actors(i).disposition.cellId
                                MsgBox(ID_Cell)
                            End If

                    End Select
                Next
 
A

Anonymous

Invité
Bah ya plusieurs choses:
-soit tu as un décalage
-soit c'est la valeur par défault de ta variable car elle n'a pas été rempli
-soit tu te trouve sur la cell 0

Tu n'as qu'a écrire manuellement le pseudo de ton personnage dans ton if pour être sur que ce n'est pas ta variable IDN_bot qu'a un problème.
 

4R7Y

Contributeur
Inscrit
6 Mars 2011
Messages
213
Reactions
0
Si la variable IDN_bot n'avait pas été rempli, la condition n'aurait pas pu être réalisé. La msgbox ne s'afficherait donc pas.
 
A

Anonymous

Invité
Ah je pensais que tu avais mis une valeur par défault, ta fait des points d'arrets ? Donne nous les valeur des autres cellid sur la map et vérifie si elle sont réelles, si elles sont toutes fausse c'est un décalage.
 
Inscrit
16 Aout 2011
Messages
184
Reactions
0
Un décalage ? Je pense pas puisque je récupère bien la bonne valeur et de plus mon perso est sur la cellid 525 comme ce que je trouve comme valeur dans entitydisposition ...

Edit : Je viens de vérifier, elles sont bonnes ( il n'y a que 2 persos sur la map, les miens )
 
Inscrit
16 Aout 2011
Messages
184
Reactions
0
Et oui j'ai mis des points d'arrêt.
 

4R7Y

Contributeur
Inscrit
6 Mars 2011
Messages
213
Reactions
0
/cellid en jeu pour savoir ta cellule ID
 
Inscrit
16 Aout 2011
Messages
184
Reactions
0
Je le sais ^^, j'ai déjà vérifié ma cellid, quand je passe dans EntityDispositionInformations, la variable cellid = 525, elle correspond avec celle de mon personnage sur la map. Par contre, lorsque j'arrive dans le code ci dessous, la cellid est = 0

For i As Integer = 0 To ID_Message.actors.Count - 1
Select Case ID_Message.actors(i).protocolId
Case 36
If ID_Message.actors(i).GameContextActorInformations.name = IDN_Bot Then
ID_Cell = ID_Message.actors(i).disposition.cellId
MsgBox(ID_Cell)
End If

End Select
Next
 
A

Anonymous

Invité
Problème réglé par TV, la variable qui contenait la class n'étais pas en object
 
Inscrit
16 Aout 2011
Messages
184
Reactions
0
Le problème n'est pas totalement réglé, en fait je ne veux pas mettre d'object dans mon programme, il n'y en a donc pas et il fonctionne correctement, par exemple pour le flood mp j'avais fait ça pour corriger :

Code:
ID_Flood = ID_Message.informations.GameContextActorInformations.name
, ça fonctionne très bien sans object.
J'aimerais savoir pourquoi ça ne fonctionne pas avec cellid.

De plus j'ai remarqué, en étudiant les valeurs dans actors, qu'il n'y a que le actor(0) qui a une valeur de cellid = 0
Si je prends par exemple l'actor(1), elle est bien égale à sa cellid ( j'ai vérifié avec 2 persos ).
J'ai aussi remarqué que quand je récupère le nom de l'actor(0), la cellid est bonne. Je ne sais pas ce qui fait que la cellid soit = 0.

Merci :)
 
Inscrit
16 Aout 2011
Messages
184
Reactions
0
Personne d'autre que 4R7Y ?

Edit : Problème réglé grâce à Maxilia, merci tout de même à 4R7Y qui a pris du temps pour moi ainsi qu'a lolodu92.
Bonne nuit à vous

Cadernis <3 ce qu'il y a de meilleurs
 
Inscrit
16 Aout 2011
Messages
184
Reactions
0
MAJ 2.7

Salut tout le monde :) Malgré ma longue absence niveau message, je ne suis pas parti loin puisque je reviens très souvent sur cadernis ! En continuant de dev mon bot, j'ai rencontré un nouveau problème lié à la 2.7
J'ai retraduit Version, IdentificationMessage, HelloConnectMessage et le nouveau VersionExtended. Néanmoins j'obtiens un dépassement arithmétique sur le serializeAs_Version. Voici le code de mon Version_ qui est envoyé à D. :

Code:
Dim Version_ As New Types.Version.VersionExtended
                Version_.initVersion(2, 7, 0, 60799, 2, 0)
Je me suis penché sur cette nouvelle class, VersionExtended, et j'ai remarqué 2 nouveaux paramètres : install et technology
qui prennent le param7 et param8. J'ai donc pensé qu'il fallait changer 2, 7, 0, 60799, 2, 0, 0, 0 et mettre le initVersionExtended mais rien n'y fait, j'ai toujours un dépassement arithmétique.

Ensuite j'ai fais un pas à pas. Et le dépassement se fait sur le writeshort de revison :

Code:
        Public Function serializeAs_Version(ByVal param1 As Dofus.DofusWriter)

            param1.WriteByte(Me.major)

            param1.WriteByte(Me.minor)

            param1.WriteByte(Me.release)

            param1.WriteShort(Me.revision)

            param1.WriteByte(Me.patch)
            param1.WriteByte(Me.buildType)
            Return Me
        End Function
Et comme j'ai des yeux d'aigle, j'ai tout de suite remarqué que c'était un writeshort, j'ai donc changé en writebyte mais rien ^^

Merci du futur coup de main :)
 
A

Anonymous

Invité
Remplace writeshort en writeint16

Bonne soirée
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
anodu94 a dit:
Le problème n'est pas totalement réglé, en fait je ne veux pas mettre d'object dans mon programme, il n'y en a donc pas et il fonctionne correctement, par exemple pour le flood mp j'avais fait ça pour corriger :

Code:
ID_Flood = ID_Message.informations.GameContextActorInformations.name
, ça fonctionne très bien sans object.
J'aimerais savoir pourquoi ça ne fonctionne pas avec cellid.

De plus j'ai remarqué, en étudiant les valeurs dans actors, qu'il n'y a que le actor(0) qui a une valeur de cellid = 0
Si je prends par exemple l'actor(1), elle est bien égale à sa cellid ( j'ai vérifié avec 2 persos ).
J'ai aussi remarqué que quand je récupère le nom de l'actor(0), la cellid est bonne. Je ne sais pas ce qui fait que la cellid soit = 0.

Merci :)
beurk :shock:
 
Haut Bas