Forum pour réunir les administrateurs de serveur L2
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  

Partagez | 
 

 Les paquets CollisionHeight et Speed du Gracia Final

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
alfo



Nombre de messages : 107
Localisation : ~/agonia
Date d'inscription : 17/05/2007

MessageSujet: Les paquets CollisionHeight et Speed du Gracia Final   Dim 09 Nov 2008, 12:45

Bonjour à tous,

Suite à ce topic j'ai eu envie de développer un peu plus le serveur pour obtenir un serveur "jouable" cependant, et je m'y attendais, je me heurte à certains problèmes...

Les paquets envoyés par CharSelectionInfo.java avaient changés, je les ai modifiés et tout est rentré dans l'ordre. C'est à dire que l'ont peux maintenant jouer toutes les races.

Mon problème maintenant se situe dans UserInfo.java qui permet d'envoyer au client toutes les infos/stats du joueurs.
Les paquets ayant changés j'ai corrigé la plupart mais il en reste cependant 2 que je n'arrive pas à faire fonctionner.

La CollisonHeight et la Speed qui sont à 0 sur le client.
La Height à 0 place le perso à moitié dans le sol.
La Speed à 0 enlève toutes les animations liées au perso.

Ne sachant pas comment trouver facilement les nouveux paquets j'ai du inverser "au pif" pour tous les autres.

Maintenant j'explique un peu ce que j'ai trouvé :
En modifiant tous les paquets je n'ai jamais pu envoyer correctement la height au client sauf en remplacant :
Code:
// c6 new h's
      writeH(0x00);
      writeH(0x00);
      writeH(0x00);
      writeH(0x00);
      writeH(0x00);
      writeH(0x00);
      writeH(0x00);
      writeH(0x00);
      writeH(0x00);
      writeH(0x00);
      writeH(0x00);
      writeH(0x00);
      writeH(0x00);
      writeH(0x00);
      writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_RHAND));
      writeH(0x00);
      writeH(0x00);
      writeH(0x00);
      writeH(0x00);
      writeH(0x00);
      writeH(0x00);
      writeH(0x00);
      writeH(0x00);
      writeH(0x00);
      writeH(0x00);
      writeH(0x00);
      writeH(0x00);
      writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_LRHAND));
      writeH(0x00);
      writeH(0x00);
      writeH(0x00);
      writeH(0x00);
      // end of c6 new h's

Par :
Code:
// c6 new h's
      writeF(_activeChar.getBaseTemplate().getdCollisionHeight());
      writeF(_activeChar.getBaseTemplate().getdCollisionHeight());
      writeF(_activeChar.getBaseTemplate().getdCollisionHeight());
      writeF(_activeChar.getBaseTemplate().getdCollisionHeight());
      writeF(_activeChar.getBaseTemplate().getdCollisionHeight());
      writeF(_activeChar.getBaseTemplate().getdCollisionHeight());
      writeF(_activeChar.getBaseTemplate().getdCollisionHeight());
      writeF(_activeChar.getBaseTemplate().getdCollisionHeight());
      writeF(_activeChar.getBaseTemplate().getdCollisionHeight());
      writeF(_activeChar.getBaseTemplate().getdCollisionHeight());
      writeF(_activeChar.getBaseTemplate().getdCollisionHeight());
      writeF(_activeChar.getBaseTemplate().getdCollisionHeight());
      writeF(_activeChar.getBaseTemplate().getdCollisionHeight());
      writeF(_activeChar.getBaseTemplate().getdCollisionHeight());
      writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_RHAND));
      writeF(_activeChar.getBaseTemplate().getdCollisionHeight());
      writeF(_activeChar.getBaseTemplate().getdCollisionHeight());
      writeF(_activeChar.getBaseTemplate().getdCollisionHeight());
      writeF(_activeChar.getBaseTemplate().getdCollisionHeight());
      writeF(_activeChar.getBaseTemplate().getdCollisionHeight());
      writeF(_activeChar.getBaseTemplate().getdCollisionHeight());
      writeF(_activeChar.getBaseTemplate().getdCollisionHeight());
      writeF(_activeChar.getBaseTemplate().getdCollisionHeight());
      writeF(_activeChar.getBaseTemplate().getdCollisionHeight());
      writeF(_activeChar.getBaseTemplate().getdCollisionHeight());
      writeF(_activeChar.getBaseTemplate().getdCollisionHeight());
      writeF(_activeChar.getBaseTemplate().getdCollisionHeight());
      writeD(_activeChar.getInventory().getPaperdollAugmentationId(Inventory.PAPERDOLL_LRHAND));
      writeF(_activeChar.getBaseTemplate().getdCollisionHeight());
      writeF(_activeChar.getBaseTemplate().getdCollisionHeight());
      writeF(_activeChar.getBaseTemplate().getdCollisionHeight());
      writeF(_activeChar.getBaseTemplate().getdCollisionHeight());
      // end of c6 new h's

C'est pas propre du tout je sais et cela cause aussi d'autres problèmes : des animations de skill tout le temps, ...

J'ai essayé de remplacer les
Code:
writeF(_activeChar.getBaseTemplate().getdCollisionHeight());
par des
Code:
writeH(0x00);
Et ce, un par un, 2 par 2, ... et sans jamais trouver la solution :/

Donc, je pense que ne connaissant que assez peu le java et encore un peu moins le fonctionnement des paquets selon qu'ils soient envoyés en Hexadécimal, en Décimal, en Float.

Donc si quelqu'un pouvait m'éclairer là dessus.
Merci de votre aide.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.l2agonia.eu
Grimly



Nombre de messages : 601
Date d'inscription : 30/08/2007

MessageSujet: Re: Les paquets CollisionHeight et Speed du Gracia Final   Dim 09 Nov 2008, 15:42

oula oula oula !


Ne t'aventure pas tête baissée à ce point !

D'abord, essaie de comprendre les méthodes writeH, writeF ect....
Le packet utilise un buffer pour mémoriser ses informations. C'est un gros tableau d'octets (byte) si tu préfère. Ce n'est pas l'idéal pour écrire des entiers un peu plus gros, des nombres décimaux ou même des chaînes de caractères. On utilise donc ces méthodes pour faciliter le boulot ! Elles réservent en mémoire une certaine place pour la donnée à écrire et remplis les cases du tableau selon un format précis.

Bref, writeH et writeF n'allouent pas le même nombre de cases ! Là est ton problème ! Tu empiète sur la suite du packet.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
alfo



Nombre de messages : 107
Localisation : ~/agonia
Date d'inscription : 17/05/2007

MessageSujet: Re: Les paquets CollisionHeight et Speed du Gracia Final   Dim 09 Nov 2008, 15:59

Ok, je l'avait remarqué avec mes 100kkk Patk sans arme je me disait bien que tout avait été décalé.
Tu aurais un moyen de faire fonctionner le tout proprement ?
Merci
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.l2agonia.eu
Grimly



Nombre de messages : 601
Date d'inscription : 30/08/2007

MessageSujet: Re: Les paquets CollisionHeight et Speed du Gracia Final   Dim 09 Nov 2008, 16:09

Alors ... j'ai pas les codes sous les yeux mais je vais essayer de faire au mieux avec les nombres de "cases" utilisées par méthode. A toi de ne pas aller au delà de la place libre :

writeC = 1 case (byte)
writeH = 2 cases (short sur 2 bytes)
writeD = 4 cases (int sur 4 bytes)
writeQ = 8 cases (long sur 8 bytes)
writeF = 8 cases (double sur 8 bytes)
writeS = %nombre de caractères%*2 + 1 cases (String lu en UTF-16 pour le paquet)


Dernière édition par Grimly le Dim 09 Nov 2008, 16:13, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
alfo



Nombre de messages : 107
Localisation : ~/agonia
Date d'inscription : 17/05/2007

MessageSujet: Re: Les paquets CollisionHeight et Speed du Gracia Final   Dim 09 Nov 2008, 16:12

Ok, merci.
je vais me torturer le crâne pour trouver ^^
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.l2agonia.eu
Contenu sponsorisé




MessageSujet: Re: Les paquets CollisionHeight et Speed du Gracia Final   Aujourd'hui à 17:32

Revenir en haut Aller en bas
 
Les paquets CollisionHeight et Speed du Gracia Final
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Speed painting (impressionnant !!!)
» Mozilla FireFox 7.0.1 en version final
» mc afee et pc speed maximizer speed guard
» Maniac - Fantasy (forum avec RPG sur la saga Final Fantasy)
» BBCode Final Fantasy XIV

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
L2J-FR :: Général :: Aides et Conseils-
Sauter vers: