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

Partagez | 
 

 [Résolu]Soulshot, Spiritshot et blessed S80

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



Nombre de messages : 191
Date d'inscription : 27/11/2007

MessageSujet: [Résolu]Soulshot, Spiritshot et blessed S80   Sam 05 Juil 2008, 00:05

Bonsoir,

Sur mon server, je voudrais implanter des soulshots, blessed spiritshot et spiritshot du grade S80.

J'ai commencé à dépouiller le java et faire quelques modifications pour créer mes soulshot S80. J'ai réussi à les implanter et à rendre leur utilisation possible et interdire l'utilisation des grade S pour les armes S80.

L'activation et le décompte des soushot marchent bien mais je rencontre des problème pour les rendre automatique. J'ai regardé dans RequestAutoSoulshot, EXSoulshot etc ... mais mes modifications ne marchent pas et je ne vois pas d'issu pour le moment. Comme je début dans le java, je ne comprend pas tout.

Voici les codes que j'ai modifiés :

SoulShot.java

Code:

/*
 * This program is free software: you can redistribute it and/or modify it under
 * the terms of the GNU General Public License as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option) any later
 * version.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
 * details.
 *
 * You should have received a copy of the GNU General Public License along with
 * this program. If not, see <http://www.gnu.org/licenses/>.
 */
package com.l2jfree.gameserver.handler.itemhandlers;

import com.l2jfree.gameserver.handler.IItemHandler;
import com.l2jfree.gameserver.model.L2ItemInstance;
import com.l2jfree.gameserver.model.actor.instance.L2PcInstance;
import com.l2jfree.gameserver.model.actor.instance.L2PlayableInstance;
import com.l2jfree.gameserver.network.SystemMessageId;
import com.l2jfree.gameserver.network.serverpackets.ExAutoSoulShot;
import com.l2jfree.gameserver.network.serverpackets.MagicSkillUse;
import com.l2jfree.gameserver.network.serverpackets.SystemMessage;
import com.l2jfree.gameserver.skills.Stats;
import com.l2jfree.gameserver.templates.L2Item;
import com.l2jfree.gameserver.templates.L2Weapon;
import com.l2jfree.gameserver.util.Broadcast;

/**
 * This class ...
 *
 * @version $Revision: 1.2.4.4 $ $Date: 2005/03/27 15:30:07 $
 */

public class SoulShots implements IItemHandler
{
   // All the item IDs that this handler knows.
   private static final int[]   ITEM_IDS   =
                                 { 5789, 1835, 1463, 1464, 1465, 1466, 1467, 14670 }; => rajouter l'id de mes soulshots S80
   private static final int[]   SKILL_IDS   =
                                 { 2039, 2150, 2151, 2152, 2153, 2154, 2154, 21540 }; => créer un skills pour le s gérer

   /* (non-Javadoc)
    * @see com.l2jfree.gameserver.handler.IItemHandler#useItem(com.l2jfree.gameserver.model.L2PcInstance, com.l2jfree.gameserver.model.L2ItemInstance)
    */
   public void useItem(L2PlayableInstance playable, L2ItemInstance item)
   {
      if (!(playable instanceof L2PcInstance))
         return;

      synchronized (playable.getActingPlayer().getItemHandlerLock())
      {
      
      L2PcInstance activeChar = (L2PcInstance) playable;
      L2ItemInstance weaponInst = activeChar.getActiveWeaponInstance();
      L2Weapon weaponItem = activeChar.getActiveWeaponItem();
      int itemId = item.getItemId();

      // Check if Soulshot can be used
      if (weaponInst == null || weaponItem.getSoulShotCount() == 0)
      {
         if (!activeChar.getAutoSoulShot().containsKey(itemId))
            activeChar.sendPacket(new SystemMessage(SystemMessageId.CANNOT_USE_SOULSHOTS));
         return;
      }

      // Check if Soulshot is already active
      if (weaponInst.getChargedSoulshot() != L2ItemInstance.CHARGED_NONE)
         return;

      // Check for correct grade
      int weaponGrade = weaponItem.getCrystalType();
      if ((weaponGrade == L2Item.CRYSTAL_NONE && itemId != 5789 && itemId != 1835) || (weaponGrade == L2Item.CRYSTAL_D && itemId != 1463)
            || (weaponGrade == L2Item.CRYSTAL_C && itemId != 1464) || (weaponGrade == L2Item.CRYSTAL_B && itemId != 1465)
            || (weaponGrade == L2Item.CRYSTAL_A && itemId != 1466) || (weaponGrade == L2Item.CRYSTAL_S && itemId != 1467)
            || (weaponGrade == L2Item.CRYSTAL_S80 && itemId != 14670)) => rendu l'utilisation des ss S80 exlusivement pour les S80
      {
         if (!activeChar.getAutoSoulShot().containsKey(itemId))
            activeChar.sendPacket(new SystemMessage(SystemMessageId.SOULSHOTS_GRADE_MISMATCH));
         return;
      }

      // Consume Soulshots if player has enough of them
      int saSSCount = (int) activeChar.getStat().calcStat(Stats.SOULSHOT_COUNT, 0, null, null);
      int SSCount = saSSCount == 0 ? weaponItem.getSoulShotCount() : saSSCount;

      if (!activeChar.destroyItemWithoutTrace("Consume", item.getObjectId(), SSCount, null, false))
      {
         if (activeChar.getAutoSoulShot().containsKey(itemId))
         {
            activeChar.removeAutoSoulShot(itemId);
            activeChar.sendPacket(new ExAutoSoulShot(itemId, 0));

            SystemMessage sm = new SystemMessage(SystemMessageId.AUTO_USE_OF_S1_CANCELLED);
            sm.addString(item.getItem().getName());
            activeChar.sendPacket(sm);
         }
         else
            activeChar.sendPacket(new SystemMessage(SystemMessageId.NOT_ENOUGH_SOULSHOTS));
         return;
      }

      if (saSSCount > 0)
         activeChar.sendMessage("Miser consumed only " + saSSCount + " soulshots.");

      // Charge soulshot
      weaponInst.setChargedSoulshot(L2ItemInstance.CHARGED_SOULSHOT);

      // Send message to client
      activeChar.sendPacket(new SystemMessage(SystemMessageId.ENABLED_SOULSHOT));
      Broadcast.toSelfAndKnownPlayersInRadius(activeChar, new MagicSkillUse(activeChar, activeChar, SKILL_IDS[weaponGrade], 1, 0, 0), 360000/*600*/);
      }
   }

   public int[] getItemIds()
   {
      return ITEM_IDS;
   }
}

RequestAutoSoulShot : j'ai copié la partie que j'ai modifié 1er essai

Code:

                            int shotType = item.getItem().getCrystalType();
                            // is the on Blessed Spiritshots not allowed ?? added to check SoulShots and SpiritShots all grades. remove it if i'm not correct
                            if (activeChar.getActiveWeaponItem() != activeChar.getFistsWeaponItem()
                                    && (shotType == activeChar.getActiveWeaponItem().getCrystalType()
                                    || (shotType == L2Item.[b]CRYSTAL_S80[/b] && activeChar.getActiveWeaponItem().getCrystalType() == L2Item.CRYSTAL_S80))) => remplacer S par S80

RequestAutoSoulShot : j'ai copié la partie que j'ai modifié 2ème essai

Code:

                            int shotType = item.getItem().getCrystalType();
                            // is the on Blessed Spiritshots not allowed ?? added to check SoulShots and SpiritShots all grades. remove it if i'm not correct
                            if (activeChar.getActiveWeaponItem() != activeChar.getFistsWeaponItem()
                                    && (shotType == activeChar.getActiveWeaponItem().getCrystalType())) => J'ai supprimé la ligne autorisant l'utilisation des soulshot S pour les armes S80

Je vous remercie pour votre aide.

Cordialement,
Taupharen.


Dernière édition par Tauphraen le Jeu 24 Juil 2008, 10:35, édité 1 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://sacrifice.montagnedudestin.com
Divinity



Nombre de messages : 1282
Age : 27
Localisation : Yvelines
Date d'inscription : 24/05/2006

MessageSujet: Re: [Résolu]Soulshot, Spiritshot et blessed S80   Sam 05 Juil 2008, 13:33

Le problème est, si j'ai bien compris, que tu n'arrives pas à rendre automatique les soulshots, c'est bien ça ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Tauphraen



Nombre de messages : 191
Date d'inscription : 27/11/2007

MessageSujet: Re: [Résolu]Soulshot, Spiritshot et blessed S80   Sam 05 Juil 2008, 14:14

Oui c'est bien ça, je n'arrive pas à les rendre automatique.
Sinon, j'ai réussi à rendre mes soulshots s80 exclusif pour les armes S80 et interdire l'utilisation des soulshot S pour les armes S80.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://sacrifice.montagnedudestin.com
Marquis



Nombre de messages : 239
Date d'inscription : 30/04/2007

MessageSujet: Re: [Résolu]Soulshot, Spiritshot et blessed S80   Dim 06 Juil 2008, 02:53

Il me semble, mais j'ai la flemme de vérifier, que l'autoss résulte d'un packet entre le client et le serveur, ce qui signifie que tu dois surement éditer le client pour que ca marche.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.l2bloodhearts.com
darksimonus



Nombre de messages : 732
Date d'inscription : 12/09/2007

MessageSujet: Re: [Résolu]Soulshot, Spiritshot et blessed S80   Dim 06 Juil 2008, 21:47

J'ai bien crée mes soulshot S80 dans le client et j'ai fait quelques test en modifiant le soulshot.dat mais rien y fait ça ne passe pas.
Je pense que l'automatisation des ss se fait uniquement par le java mais je ne trouve pas encore la solution. Je cherche tjs !

Merci de ta réponse.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.l2sacrifice.fr/
Divinity



Nombre de messages : 1282
Age : 27
Localisation : Yvelines
Date d'inscription : 24/05/2006

MessageSujet: Re: [Résolu]Soulshot, Spiritshot et blessed S80   Dim 06 Juil 2008, 23:35

Vous avez regardé du côté de "import com.l2jfree.gameserver.network.serverpackets.ExAutoSoulShot" ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Tauphraen



Nombre de messages : 191
Date d'inscription : 27/11/2007

MessageSujet: Re: [Résolu]Soulshot, Spiritshot et blessed S80   Lun 07 Juil 2008, 19:04

Oui, nous avons regardé mais je pense pas qu'il y ait quoique ce soit à changer dans ce jar.

Voilà le code du jar ExAutoSoulShot :

Code:
package com.l2jfree.gameserver.network.serverpackets;

public class ExAutoSoulShot extends L2GameServerPacket
{
   private static final String _S__FE_0C_EXAUTOSOULSHOT = "[S] FE:0c ExAutoSoulShot [dd]";
   private int _itemId;
   private int _type;

   /**
    * 0xfe:0x12 ExAutoSoulShot        (ch)dd
    */
   public ExAutoSoulShot(int itemId, int type)
   {
      _itemId = itemId;
      _type = type;
   }
   
   @Override
   protected final void writeImpl()
   {
      writeC(0xFE);
      writeH(0x0c);
      
      writeD(_itemId);
      writeD(_type);
   }

   /* (non-Javadoc)
    * @see com.l2jfree.gameserver.serverpackets.ServerBasePacket#getType()
    */
   @Override
   public String getType()
   {
      return _S__FE_0C_EXAUTOSOULSHOT;
   }
}
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://sacrifice.montagnedudestin.com
phpsteuf



Nombre de messages : 570
Date d'inscription : 17/03/2007

MessageSujet: Re: [Résolu]Soulshot, Spiritshot et blessed S80   Lun 07 Juil 2008, 20:43

Tauphraen a écrit:
Oui, nous avons regardé mais je pense pas qu'il y ait quoique ce soit à changer dans cette classe.

Very Happy
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.loreal.com
Tauphraen



Nombre de messages : 191
Date d'inscription : 27/11/2007

MessageSujet: Re: [Résolu]Soulshot, Spiritshot et blessed S80   Lun 07 Juil 2008, 21:18

escusez moi, je suis un noob en java donc je n'ai pas encore le bon vocabulaire.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://sacrifice.montagnedudestin.com
Tod_Mael



Nombre de messages : 136
Age : 39
Localisation : sur un nuage rose
Date d'inscription : 04/01/2008

MessageSujet: Re: [Résolu]Soulshot, Spiritshot et blessed S80   Lun 07 Juil 2008, 22:30

ExAutoSoulShot <== fait une recherche dans Eclipse sur ça, tu trouveras ton bonheur.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://www.paixamour.com
Tauphraen



Nombre de messages : 191
Date d'inscription : 27/11/2007

MessageSujet: Re: [Résolu]Soulshot, Spiritshot et blessed S80   Mar 08 Juil 2008, 17:43

J'ai déjà regardé dans ExAutoSoulShot.java, d'ailleurs j'ai mis le code dans un post ci dessus.

Mais je ne comprend pas la programmation de cette classe et comment elle fonctionne. Je me renseigne sur les différentes fonctions (je ne sais pas si c'est le bon terme) pour comprendre l'utiliter de ce code.

Arg dur dur le java qd on y connais rien ! Sad
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://sacrifice.montagnedudestin.com
Divinity



Nombre de messages : 1282
Age : 27
Localisation : Yvelines
Date d'inscription : 24/05/2006

MessageSujet: Re: [Résolu]Soulshot, Spiritshot et blessed S80   Mar 08 Juil 2008, 17:54

Je n'arrive pas à bien distinguer tes modifications sur le premier code.
C'est pour cela que je te demande si tu as bien mis la ligne "activeChar.sendPacket(new ExAutoSoulShot(itemId, 0));" ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Tauphraen



Nombre de messages : 191
Date d'inscription : 27/11/2007

MessageSujet: Re: [Résolu]Soulshot, Spiritshot et blessed S80   Mar 08 Juil 2008, 19:48

Sur le premier code, j'ai tout simplement remplacer les soulshot S (id (1467) par nos soulshot S80 (id 14670).

Et j'ai rendu exclusif mes soulshot S80 pour les armes S80 !

Je me casse juste les dents pour automatiser les soulshots et je ne comprend pas où est le problème, j'ai éplucher la plupart des packets relié aux code ! Sad
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://sacrifice.montagnedudestin.com
Respawner



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

MessageSujet: Re: [Résolu]Soulshot, Spiritshot et blessed S80   Mar 08 Juil 2008, 21:43

Dans la classe L2PcInstance cherchez la variable _activeSoulShots la réponse à votre question est pas loin probablement Wink

_________________
~$ 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/
Tauphraen



Nombre de messages : 191
Date d'inscription : 27/11/2007

MessageSujet: Re: [Résolu]Soulshot, Spiritshot et blessed S80   Mer 09 Juil 2008, 11:29

J'ai déjà regardé dans cette classe et j'ai défini l'id de mes soulshot pour la variable physical mais ça n'a rien changé.

Je vais tout de même regarder la variable _activeSoulShots car je me suis pas penché dessus!

Merci pour votre aide.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://sacrifice.montagnedudestin.com
Tauphraen



Nombre de messages : 191
Date d'inscription : 27/11/2007

MessageSujet: Re: [Résolu]Soulshot, Spiritshot et blessed S80   Jeu 24 Juil 2008, 10:39

Pour ceux que cela intéresse la solution à mon problème est simple !
Nous ne pouvons pas mettre en autouse un item autre qu'un soulshot existant. J'ai fais plusieurs essais avec d'autres items (juste pour les tests), relu plusieurs fois mes modifications et rien ne clochait d'un point de vu java. Dès que j'utilise un item ayant une autre id que les soulshot existant l'autouse ne marche plus. J'imagine que l'autouse des soulshots et blessed spiritshot sont défini dans le client mais je n'ai rien trouvé.

Donc la seule solution que j'ai trouvé est de transformer les soulshot for beginner en S80.

Pour celles et ceux qui sont intéressés par ce genre de modification, vous avez toutes les cartes en main ! Very Happy
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://sacrifice.montagnedudestin.com
Divinity



Nombre de messages : 1282
Age : 27
Localisation : Yvelines
Date d'inscription : 24/05/2006

MessageSujet: Re: [Résolu]Soulshot, Spiritshot et blessed S80   Jeu 24 Juil 2008, 13:40

Le "soulshot.int" n'y est pour rien là-dedans ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: [Résolu]Soulshot, Spiritshot et blessed S80   Aujourd'hui à 17:32

Revenir en haut Aller en bas
 
[Résolu]Soulshot, Spiritshot et blessed S80
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [Résolu] Mot de passe smtp
» [Résolu] MSN vérolé
» [ Résolu ] Controle parental Orange
» [résolu]pc infecté par wwwzuc32.exe
» [Résolu] Photoshop CS2 : tampon

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: