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

Partagez | 
 

 Programmation liée au client

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : 1, 2  Suivant
AuteurMessage
Eristos



Nombre de messages : 43
Age : 29
Date d'inscription : 12/06/2007

MessageSujet: Programmation liée au client   Lun 20 Oct 2008, 22:45

Bonsoir à tous,

je travaille sur le serveur L2Jfree et notamment sa programmation en java (tout seul).
J'aimerai savoir si quelqu'un peut m'aiguiller sur "comment faire pour afficher sur le client que le vitality system est au level maxmimum" ?

Je sais comment faire un setVitalityLevel, mais le client ne m'affiche pas le level (ce qui me parait normal), donc comment faire pour l'afficher ?

Merci d'avance
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.fireemperor.fr/
Respawner



Nombre de messages : 1622
Age : 28
Date d'inscription : 20/04/2006

MessageSujet: Re: Programmation liée au client   Lun 20 Oct 2008, 22:48

Il y a sûrement un packet à envoyer. Par contre je ne sais pas lequel, peut être que quelqu'un le connaît vu que certains ont ce système fonctionnel je crois.

_________________
~$ cat new_server > /dev/null

Tout n'est qu'une question de point de vue.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.respawner.fr/
Eristos



Nombre de messages : 43
Age : 29
Date d'inscription : 12/06/2007

MessageSujet: Re: Programmation liée au client   Lun 20 Oct 2008, 23:04

oui je me doute, mais j'aimerai avoir une indication quand à ce packet à envoyer....

Quelqu'un le connait ?

Merci d'avance (me PM est tout à fait possible si vous préférez)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.fireemperor.fr/
Grimly



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

MessageSujet: Re: Programmation liée au client   Mar 21 Oct 2008, 00:40

sur L2J c'est avec cette classe :
net.sf.l2j.gameserver.network.serverpacket.UserInfo

"net.sf.l2j" change chez l2jfree mais le reste est semblable.

La vitalité est la dernière information envoyée.

Bonne prog Wink

Conseil : dans Eclipse, fait CTRL + SHIFT + G sur ta variable de vitalité dans la classe L2PcInstance, tu verra comment j'ai trouvé. (Temps de recherche, 30 secondes + 1 minute à écrire ce début de roman Very Happy)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Eristos



Nombre de messages : 43
Age : 29
Date d'inscription : 12/06/2007

MessageSujet: Re: Programmation liée au client   Mar 21 Oct 2008, 01:23

j'ai bien essayé :
Code:
player.setVitalityLevel(20)
sans succès

et :
Code:
writeD(player.setVitalityLevel(20));
n'est pas utilisable dans la classe ou je suis car writeD n'est pas reconnu
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.fireemperor.fr/
Respawner



Nombre de messages : 1622
Age : 28
Date d'inscription : 20/04/2006

MessageSujet: Re: Programmation liée au client   Mar 21 Oct 2008, 02:30

Après ton code
Code:
player.setVitalityLevel(20);
Ajoute
Code:
player.broadcastUserInfo();
Ca va balancer le bon packet.
Voir la méthode dans la classe L2PcInstance.
Code:
   public final void broadcastUserInfo()
   {
      ......
      
      // Send a Server->Client packet UserInfo to this L2PcInstance
      sendPacket(new UserInfo(this));

      ......
   }
T'es bien sur d'avoir compris le concept de Java ? La méthode writeD n'est pas accessible dans ta classe car c'est une méthode qui peut être utilisée seulement dans les packets (héritage et cie Smile)

_________________
~$ cat new_server > /dev/null

Tout n'est qu'une question de point de vue.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.respawner.fr/
Eristos



Nombre de messages : 43
Age : 29
Date d'inscription : 12/06/2007

MessageSujet: Re: Programmation liée au client   Mar 21 Oct 2008, 18:41

Je te remercie.

Code:
T'es bien sur d'avoir compris le concept de Java ?
Je pense bien sur l'avoir compris, mais j'ai du mal à intégrer la façon dont est codé le serveur, de plus je ne connais pas 1/1000 des fonctions, procédures, constructeurs de classe et autres qui sont intégrés au serveur L2Jfree (par simple manque de temps pour m'y pencher réellement), et j'ai bien sur des lacunes qui font que pour l'instant tout ne vient pas spontanément

Ps: Désolé si tu penses que je suis encore un noob
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.fireemperor.fr/
Respawner



Nombre de messages : 1622
Age : 28
Date d'inscription : 20/04/2006

MessageSujet: Re: Programmation liée au client   Mar 21 Oct 2008, 18:52

Eristos a écrit:
Je pense bien sur l'avoir compris, mais j'ai du mal à intégrer la façon dont est codé le serveur, de plus je ne connais pas 1/1000 des fonctions, procédures, constructeurs de classe et autres qui sont intégrés au serveur L2Jfree (par simple manque de temps pour m'y pencher réellement), et j'ai bien sur des lacunes qui font que pour l'instant tout ne vient pas spontanément

Ps: Désolé si tu penses que je suis encore un noob
Essaie de revoir comment on utilise les méthodes car tu as peut être une lacune de ce côté là. Je ne te prend pas pour un noob hein, t'en connais et tu essaies d'en faire bien plus que beaucoup de monde.

_________________
~$ cat new_server > /dev/null

Tout n'est qu'une question de point de vue.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.respawner.fr/
Eristos



Nombre de messages : 43
Age : 29
Date d'inscription : 12/06/2007

MessageSujet: Re: Programmation liée au client   Mar 21 Oct 2008, 23:36

après quelques tests je te demande une nouvelle fois ton aide:

j'ai fait:
dans l2Boss :
Code:
....
public boolean doDie(L2Character killer)
    {
        if (!super.doDie(killer))
            return false;

        L2PcInstance player = killer.getActingPlayer();
        if (player != null)
        {
            broadcastPacket(new SystemMessage(SystemMessageId.RAID_WAS_SUCCESSFUL));
            if (player.getParty() != null)
            {
                for (L2PcInstance member : player.getParty().getPartyMembers())
                    rewardRaidPoints(member);
            }
            else
            {             
            rewardRaidPoints(player);
           
            }
           
            RaidPointsManager.getInstance().calculateRanking();
        }
        ====================
        player.setVitalityLevel(20);
        player.broadcastUserInfo();
        ====================
        return true;
    }
.....

Cependant, un peu après que le raidboss ne soit mort j'ai le vitality level qui passe à 1.
Impossible de le faire passer à un autre level.

ou ai-je fait une erreur, pouvez vous m'aiguiller (sans me donner la réponse afin que je comprenne ^^)


Dernière édition par Eristos le Mar 21 Oct 2008, 23:49, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.fireemperor.fr/
Respawner



Nombre de messages : 1622
Age : 28
Date d'inscription : 20/04/2006

MessageSujet: Re: Programmation liée au client   Mar 21 Oct 2008, 23:42

Regarde bien à quel objet tu appliques la méthode broadcastUserInfo() au boss ou au joueur ?
Petite indication ici ton utilisation de la méthode peut aussi être écrite comme.
Code:
this.broadcastUserInfo();

J'ai rien dit t'as corrigé Razz

PS : manque un ;

PS2 : Pour aider au debug (car je vois pas), fais une sortie à la console pour voir le level.
Code:
System.out.println("Player " + player.getName() + ", vitality level " + player.getVitalityLevel());

Au passage regarde bien la méthode setVitalityLevel(int level)
Code:
   public void setVitalityLevel(int level)
   {
      if (level > 5)
         level = 5;
      else if (level < 0)
         level = 0;

      _vitalityLevel = level;
   }

_________________
~$ cat new_server > /dev/null

Tout n'est qu'une question de point de vue.


Dernière édition par Respawner le Mar 21 Oct 2008, 23:56, édité 3 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.respawner.fr/
Eristos



Nombre de messages : 43
Age : 29
Date d'inscription : 12/06/2007

MessageSujet: Re: Programmation liée au client   Mar 21 Oct 2008, 23:48

oui j'ai fait mal fait un copier/coller pour vous présenter mon problème mais il ne manquait pas le ";" (sinon eclipse me l'aurait dit à la compilation) et j'avais vérifié


Sinon as-tu une idée d'où ce la peut venir ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.fireemperor.fr/
Grimly



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

MessageSujet: Re: Programmation liée au client   Mar 21 Oct 2008, 23:50

point virgule manquant !
Pour les "=", je suppose que c'est ajouté après ou en commentaire dans le code.

Tu peux mettre la commande de façon à se que tous les membres du groupe reçoivent la "vitality".
En tout cas, met le dans la condition, sinon tu vas avoir des surprises.

Mis à part ça, je ne sais pas où se trouverai le problème.

Comment fonctionne la vitality ? (oui parce que ça n'existait pas sous Interlude et depuis, je n'ai toujours pas joué)


Dernière édition par Grimly le Mar 21 Oct 2008, 23:52, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Respawner



Nombre de messages : 1622
Age : 28
Date d'inscription : 20/04/2006

MessageSujet: Re: Programmation liée au client   Mar 21 Oct 2008, 23:51

Regarde juste au dessus, test, donne les logs qui apparaissent. C'est pour voir si c'est un soucis niveau valeur dans le Java ou simplement affichage client.

_________________
~$ cat new_server > /dev/null

Tout n'est qu'une question de point de vue.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.respawner.fr/
Eristos



Nombre de messages : 43
Age : 29
Date d'inscription : 12/06/2007

MessageSujet: Re: Programmation liée au client   Mer 22 Oct 2008, 00:55

Citation :
Pour les "=", je suppose que c'est ajouté après ou en commentaire dans le code.
Oui c'était simplement une façon de montrer ce que j'ai rajouté.

Citation :
Code:
System.out.println("Player " + player.getName() + ", vitality level " + player.getVitalityLevel());
J'ai bien rajouté cela mais rien ne se passe, donc je suppose qu'il ne passe pas par cette instruction
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.fireemperor.fr/
Respawner



Nombre de messages : 1622
Age : 28
Date d'inscription : 20/04/2006

MessageSujet: Re: Programmation liée au client   Mer 22 Oct 2008, 01:02

Question con ... tu tue bien un boss pour tester ? Qui a le statut de boss dans la base de données ?

_________________
~$ cat new_server > /dev/null

Tout n'est qu'une question de point de vue.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.respawner.fr/
Eristos



Nombre de messages : 43
Age : 29
Date d'inscription : 12/06/2007

MessageSujet: Re: Programmation liée au client   Mer 22 Oct 2008, 01:25

oui, j'ai même tuer valakas et antharas pour tester et là je vien de tuer le bossId = 25001 de la table npc : Greyclaw Kutus : L2RaidBoss

cependant, il m'affiche sur la console bossspawn manager updated : ce qui est normal mais rien d'autre
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.fireemperor.fr/
Respawner



Nombre de messages : 1622
Age : 28
Date d'inscription : 20/04/2006

MessageSujet: Re: Programmation liée au client   Mer 22 Oct 2008, 02:03

Montre la méthode doDie pour voir où tu as mis le System.out.println(....).

_________________
~$ cat new_server > /dev/null

Tout n'est qu'une question de point de vue.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.respawner.fr/
Grimly



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

MessageSujet: Re: Programmation liée au client   Mer 22 Oct 2008, 08:46

Grimly a écrit:
Comment fonctionne la vitality ? (oui parce que ça n'existait pas sous Interlude et depuis, je n'ai toujours pas joué)

C'est quoi le "vitality" ???
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Respawner



Nombre de messages : 1622
Age : 28
Date d'inscription : 20/04/2006

MessageSujet: Re: Programmation liée au client   Mer 22 Oct 2008, 14:19

http://www.lineage2.com/news/gracia_01.html

_________________
~$ cat new_server > /dev/null

Tout n'est qu'une question de point de vue.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.respawner.fr/
Grimly



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

MessageSujet: Re: Programmation liée au client   Mer 22 Oct 2008, 15:00

O_o monstrueux !

Sauf que dans le screen de NCSoft, il y a un %age. Il existe donc une variable supplémentaire à modifier !
Cette dernière se modifiant en continue (ou presque), le "niveau" est réactualisé.

EDIT : En fait non. Il viens faire quoi là ce pourcentage ?
Il faut trouver un autre paquet ^^'.

EDIT 2 : J'ai parcouru vite fait les sources ... Rien n'est encore fait ! Même pas les paquets.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Respawner



Nombre de messages : 1622
Age : 28
Date d'inscription : 20/04/2006

MessageSujet: Re: Programmation liée au client   Mer 22 Oct 2008, 18:11

Conclusion c'est probablement l'affichage du client qui ne marche pas mais la valeur dans la variable doit être correcte.

_________________
~$ cat new_server > /dev/null

Tout n'est qu'une question de point de vue.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.respawner.fr/
Grimly



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

MessageSujet: Re: Programmation liée au client   Mer 22 Oct 2008, 23:04

Non, le client tourne rond, mais c'est le serveur qui ne suit pas.

De plus, un entier de 0 à 5 sur 4 bits ?
Il y a un léger problème de taille dans les paquets.

Si on regarde dans le serveur, on a une variable, les getter et setter, une brève apparition dans le paquet "UserInfo". Le reste ne concerne rien de semblable.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Respawner



Nombre de messages : 1622
Age : 28
Date d'inscription : 20/04/2006

MessageSujet: Re: Programmation liée au client   Jeu 23 Oct 2008, 00:41

Oui le client tourne bon mais n'affiche pas les infos correctement car on ne les lui envoie pas correctement. J'ai pas dit que le client buggait, j'ai juste dit que le client n'affiche pas ce que l'on veut (en l'occurence ici c'est de la faute du core Java).

_________________
~$ cat new_server > /dev/null

Tout n'est qu'une question de point de vue.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.respawner.fr/
Eristos



Nombre de messages : 43
Age : 29
Date d'inscription : 12/06/2007

MessageSujet: Re: Programmation liée au client   Sam 25 Oct 2008, 12:07

Citation :
Montre la méthode doDie pour voir où tu as mis le System.out.println(....).

Code:
public boolean doDie(L2Character killer)
    {
        if (!super.doDie(killer))
            return false;

        L2PcInstance player = killer.getActingPlayer();
        if (player != null)
        {
            broadcastPacket(new SystemMessage(SystemMessageId.RAID_WAS_SUCCESSFUL));
            if (player.getParty() != null)
            {
                for (L2PcInstance member : player.getParty().getPartyMembers())
                               rewardRaidPoints(member);
            }
            else
            {
            player.setVitalityLevel(0);
            rewardRaidPoints(player);
            System.out.println("Player " + player.getName() + ", vitality level " + player.getVitalityLevel());
           
            }
           
            RaidPointsManager.getInstance().calculateRanking();
        }
      return true;
    }


Maintenant j'ai mis mon client à jour, le problème c'est qu'en tuant un raidboss dans mon code je dois mettre mon vitality level à 0 mais il se met automatiquement à 5 :s
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.fireemperor.fr/
Grimly



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

MessageSujet: Re: Programmation liée au client   Sam 25 Oct 2008, 15:21

Ici, si tu es dans un groupe, ta vitality ne se modifie pas.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Programmation liée au client   Aujourd'hui à 17:32

Revenir en haut Aller en bas
 
Programmation liée au client
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant
 Sujets similaires
-
» Pour les vrais débutants en programmation
» Extension FireFox - Client FTP
» Voie de Programmation pour profil de vitesse
» FR7B - Programmation MIDI...
» Système 1.06 et programmation de ONE TOUCH

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: