Les structs sont un peu l'encêtre des object en java ou en C++. Ils regroupent un ensemble de variables, mais ils ne peuvent ni contenir de méthode, ni de contructeur et ils ont d'autre particularitées dont je ne ferai pas mention ici.
Le problème que pausent les structs dans eathena n'est pas dans sa convertion en tant que tel mais plutot lors déchanges entre le serveur char et le le serveur map. En effet lors du transfère le struct est transformer implicitement en tableau.
Exemple dans int_party.c :
int mapif_party_info(int fd, struct party *p)
{
unsigned char buf[2048];
WBUFW(buf,0) = 0x3821; //entête du paquet
//buf + 4 dis à memcpy de copier la variable p dans le tableau buff à partir de
//l'index 4 du tableau
//sizeof(struct party) donne la quantité de memoire pour necessaire pour stocké //le struct dans le tableau
memcpy(buf + 4, p, sizeof(struct party));
// ajoute la dimention du tableau
WBUFW(buf,2) = 4 + sizeof(struct party);
if (fd < 0)
mapif_sendall(buf, WBUFW(buf,2));
else
mapif_send(fd, buf, WBUFW(buf,2));
return 0;
}
La difficulter est donc de transformé un object java en tableau compatible avec ce que le serveur map attend, ce qui à première vue me semble fesable mais long et un peu compliquer. J'ai déja une petite idée de ce que je vais faire. Dès que cela sera foncionnel je la mettrai sur mon blogue.
S'abonner à :
Publier des commentaires (Atom)
Aucun commentaire:
Publier un commentaire