C# [C#] - Gestion des maps et déplacements

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

Anonymous

Invité
#41
En fait c'est mon thread réseau que je sleep.
Du coup, pas d'impression de "freeze" sur le logiciel, qui continue à tourner et à être utilisable normalement.
Et à la fin du sleep, je reçois les éventuels packets qui m'ont été envoyés pendant mon déplacement.
Donc au pire, j'aurais juste un lag sur la mise à jour de certaines données, comme par exemple un déplacement de mobs.
 
A

Anonymous

Invité
#42
Petit HS...
Je suis en train de factoriser et mettre mon code au propre.
J'implémente le ProtocolTypeManager.
Parfois je reçois 0 comme id. C'est normal ? J'imagine que non.
Si vous pensez que ça peut intéresser des gens, j'ouvrirai un nouveau topic pour ça.
Merci de votre aide, j'ai bien avancé grâce à vous ! :)
 

4R7Y

Contributeur
Inscrit
6 Mars 2011
Messages
213
Reactions
0
#43
non effectivement, c'est pas normal :p
En fait le ProtocolTypeManager (comme son nom l'indique) sert à regrouper les protocolId des "Types" dans le dossier Network, à l'inverse des "Messages"
(et tu remarque qu'il n'y a pas de protocolId 0)
 
A

Anonymous

Invité
#44
En fait je reçois un 36 (mon personnage) et ensuite un 0... :/
 

4R7Y

Contributeur
Inscrit
6 Mars 2011
Messages
213
Reactions
0
#45
Ta classe n'est peut être plus à jour, et il se crée un décalage dans la lecture du flux
 
A

Anonymous

Invité
#46
J'ai à moitié résolu le problème.
Maintenant le soucis est que je Deserialize un FightTeamMemberMonsterInformations (reçu avec le ProtocolTypeManager) que je cast en GameRolePlayActorInformations.
Ça n'a pas l'air de lui plaire pourtant j'ai bien mis l'héritage en place.
Déjà c'est normal que je reçoive un FightTeamMemberMonsterInformations (id = 6) en tant que GameRolePlayActorInformations ?
(C'est dans le packet MapComplementaryInformationsDataMessage).
 
A

Anonymous

Invité
#47
La meilleure facon de resoudre ce genre de souci est de tout retraduire.
 
A

Anonymous

Invité
#48
En fait j'ai compris d'où vient le problème :
Je reçois un GameRolePlayCharacterInformations (36)
Je le cast en GameRolePlayActorInformations (141).
Du coup il deserialize un GameRolePlayActorInformations au lieu de deserialize un GameRolePlayCharacterInformations...
Un "dynamic", est c'est réglé !
Par contre j'ai apparemment un problème, j'ai 0 comme cellID pour mon bot.
Je cherche...
[Edit] : En fait j'ai des problèmes d'héritage.
Ma classe fille (GameRolePlayActorInformations) appelle ma classe mère (GameContextActorInformations) pour la deserialize à l'aide d'un "base.deserialize".
Le problème c'est qu'après à partir de ma classe fille, quand je récupère des membres de ma classe mère, ils sont à 0, comme si les classes n'étaient pas "liées" entre elles.
Je sais pas si c'est très clair... :/
Est-ce parce que je ne construit pas explicitement ma classe mère dans ma classe fille ?
Est-ce à cause du dynamic ?

Un exemple sera peut-être plus parlant :
Code:
dynamic _Loc17 = null;
_Loc17 = ProtocolTypeManager.getInstance(_Loc16); // Je récupère un GameRolePlayActorInformations
_Loc17.Deserialize(PReader); // Je le deserialize
// Il va à son tour deserialize sa classe mère (GameContextActorInformations)
// Quand j'affiche ContextualId (qui est dans la classe mère) à partir du même endroit que "_Loc17.Deserialize(PReader)", il vaut 0 alors que dans le deserialize il avait une valeur.
Si je regarde le contenu, il n'y a même pas de ContextualID :


[Edit] : Hum, en fait je viens de m’apercevoir que c'est un GameRolePlayCharacterInformations que je reçois...

[Résolu] : J'avais oublié de faire hésiter certaines classes, au temps pour moi ! :)

Petite question, les informations sur les spells (Portée, nombre de PA, ...) sont dans les d2[i/o] ?
 
A

Anonymous

Invité
#49
Salut !

Je suis en train d'essayer de récupérer les groupes de monstres et j'ai quelques petites questions.
Le "grade" d'un MonsterInGroupInformations ne correspond pas à son level ?
Car je reçois des informations erronées.
Dans les MonsterInGroupInformations, la "MainCreature" n'est pas listée ?
En gros j'ai 3 groupes de 2 montres chacun est je reçois ça dans les MonsterInGroupInformations :

Monster id : 979 level : 4
Cell : 201
Age : 0
Ali : 255

Monster id : 981 level : 1
Level cell : 86
Age : 0
Ali : 255

Monster id : 493 level : 3
Cell : 65
Age : 23
Ali : 255

Merci pour votre aide ! :)
 

ToOnS

Membre Actif
Inscrit
8 Avril 2009
Messages
974
Reactions
0
#50
Salut ,

pour les monstres ca fonctionnait comme ca , peu etre que ca a changé :
Code:
Case 160 'Monstres
                            If ID_Message.Actors(i).underlings.count = 0 Then
                                Dim monster = Monsters.ReadObject(ID_Message.Actors(i).mainCreatureGenericId) ' la on lit le d2o monsters en fonction de mainCreatureGenericId
                                Dim lvl = monster.grades(ID_Message.Actors(i).mainCreatureGrade - 1).level
                            else
'Dim monster = Monsters.ReadObject(ID_Message.Actors(i).mainCreatureGenericId)
                                'Dim lvl = monster.grades(ID_Message.Actors(i).mainCreatureGrade - 1).level
                                'For Each creature_lvl In ID_Message.Actors(i).underlings
                                '    monster = Monsters.ReadObject(creature_lvl.CreatureGenericId)
                                '    lvl += monster.grades(creature_lvl.grade - 1).level
                                'Next
 
A

Anonymous

Invité
#51
Bon en fait je m'embrouille avec tous les GameData* donc je vais faire sans pour l'instant.
La mise à jour 2.7 est sortie...
Et pour répondre à ta question, ça a un peu changé avec la MàJ.
 
Haut Bas