| Programmation liée au client | |
|
|
|
Auteur | Message |
---|
Eristos
Nombre de messages : 43 Age : 36 Date d'inscription : 12/06/2007
| Sujet: Programmation liée au client 20/10/08, 09:45 pm | |
| 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 | |
|
| |
Respawner
Nombre de messages : 1620 Age : 35 Date d'inscription : 20/04/2006
| Sujet: Re: Programmation liée au client 20/10/08, 09:48 pm | |
| 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. | |
|
| |
Eristos
Nombre de messages : 43 Age : 36 Date d'inscription : 12/06/2007
| Sujet: Re: Programmation liée au client 20/10/08, 10:04 pm | |
| 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) | |
|
| |
Grimly
Nombre de messages : 601 Date d'inscription : 30/08/2007
| Sujet: Re: Programmation liée au client 20/10/08, 11:40 pm | |
| 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 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 ) | |
|
| |
Eristos
Nombre de messages : 43 Age : 36 Date d'inscription : 12/06/2007
| Sujet: Re: Programmation liée au client 21/10/08, 12:23 am | |
| 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 | |
|
| |
Respawner
Nombre de messages : 1620 Age : 35 Date d'inscription : 20/04/2006
| Sujet: Re: Programmation liée au client 21/10/08, 01:30 am | |
| 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 ) | |
|
| |
Eristos
Nombre de messages : 43 Age : 36 Date d'inscription : 12/06/2007
| Sujet: Re: Programmation liée au client 21/10/08, 05:41 pm | |
| 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 | |
|
| |
Respawner
Nombre de messages : 1620 Age : 35 Date d'inscription : 20/04/2006
| Sujet: Re: Programmation liée au client 21/10/08, 05:52 pm | |
| - 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. | |
|
| |
Eristos
Nombre de messages : 43 Age : 36 Date d'inscription : 12/06/2007
| Sujet: Re: Programmation liée au client 21/10/08, 10:36 pm | |
| 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 21/10/08, 10:49 pm, édité 1 fois | |
|
| |
Respawner
Nombre de messages : 1620 Age : 35 Date d'inscription : 20/04/2006
| Sujet: Re: Programmation liée au client 21/10/08, 10:42 pm | |
| 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é 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 s etVitalityLevel(int level) - Code:
-
public void setVitalityLevel(int level) { if (level > 5) level = 5; else if (level < 0) level = 0;
_vitalityLevel = level; }
Dernière édition par Respawner le 21/10/08, 10:56 pm, édité 3 fois | |
|
| |
Eristos
Nombre de messages : 43 Age : 36 Date d'inscription : 12/06/2007
| Sujet: Re: Programmation liée au client 21/10/08, 10:48 pm | |
| 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 ? | |
|
| |
Grimly
Nombre de messages : 601 Date d'inscription : 30/08/2007
| Sujet: Re: Programmation liée au client 21/10/08, 10:50 pm | |
| 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 21/10/08, 10:52 pm, édité 1 fois | |
|
| |
Respawner
Nombre de messages : 1620 Age : 35 Date d'inscription : 20/04/2006
| Sujet: Re: Programmation liée au client 21/10/08, 10:51 pm | |
| 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. | |
|
| |
Eristos
Nombre de messages : 43 Age : 36 Date d'inscription : 12/06/2007
| Sujet: Re: Programmation liée au client 21/10/08, 11:55 pm | |
| - 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 | |
|
| |
Respawner
Nombre de messages : 1620 Age : 35 Date d'inscription : 20/04/2006
| Sujet: Re: Programmation liée au client 22/10/08, 12:02 am | |
| Question con ... tu tue bien un boss pour tester ? Qui a le statut de boss dans la base de données ? | |
|
| |
Eristos
Nombre de messages : 43 Age : 36 Date d'inscription : 12/06/2007
| Sujet: Re: Programmation liée au client 22/10/08, 12:25 am | |
| 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 | |
|
| |
Respawner
Nombre de messages : 1620 Age : 35 Date d'inscription : 20/04/2006
| Sujet: Re: Programmation liée au client 22/10/08, 01:03 am | |
| Montre la méthode doDie pour voir où tu as mis le System.out.println(....). | |
|
| |
Grimly
Nombre de messages : 601 Date d'inscription : 30/08/2007
| Sujet: Re: Programmation liée au client 22/10/08, 07:46 am | |
| - 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" ??? | |
|
| |
Respawner
Nombre de messages : 1620 Age : 35 Date d'inscription : 20/04/2006
| Sujet: Re: Programmation liée au client 22/10/08, 01:19 pm | |
| | |
|
| |
Grimly
Nombre de messages : 601 Date d'inscription : 30/08/2007
| Sujet: Re: Programmation liée au client 22/10/08, 02:00 pm | |
| 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. | |
|
| |
Respawner
Nombre de messages : 1620 Age : 35 Date d'inscription : 20/04/2006
| Sujet: Re: Programmation liée au client 22/10/08, 05:11 pm | |
| Conclusion c'est probablement l'affichage du client qui ne marche pas mais la valeur dans la variable doit être correcte. | |
|
| |
Grimly
Nombre de messages : 601 Date d'inscription : 30/08/2007
| Sujet: Re: Programmation liée au client 22/10/08, 10:04 pm | |
| 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. | |
|
| |
Respawner
Nombre de messages : 1620 Age : 35 Date d'inscription : 20/04/2006
| Sujet: Re: Programmation liée au client 22/10/08, 11:41 pm | |
| 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). | |
|
| |
Eristos
Nombre de messages : 43 Age : 36 Date d'inscription : 12/06/2007
| Sujet: Re: Programmation liée au client 25/10/08, 11:07 am | |
| - 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 | |
|
| |
Grimly
Nombre de messages : 601 Date d'inscription : 30/08/2007
| Sujet: Re: Programmation liée au client 25/10/08, 02:21 pm | |
| Ici, si tu es dans un groupe, ta vitality ne se modifie pas. | |
|
| |
Contenu sponsorisé
| Sujet: Re: Programmation liée au client | |
| |
|
| |
| Programmation liée au client | |
|