Você não é registrado, por favor registre-se para ter acesso ao conteúdo completo.
Caso seja registrado, efetue login.
Esqueceu sua senha? Clique aqui
Recomendamos o uso do Mozilla Firefox para uma melhor visualização.    


Início Postados Hoje Marcar Fóruns Como Lidos Álbums Banidos SE Team Medalhas
Voltar   Secret Experience > Área L2J > [L2J] Downloads > [Lineage] Java Mods
Registrar Loteria VIPStaff SERegras do fórum Comunidade Arcade Postados Hoje Pesquisar Experience
   

Secret Experience.NET   Secret Experience Corporation - Welcome To The Real World
     Anúncios SE

 
 
LinkBack Ferramentas do Tópico Modos de Exibição
Prev Post Anterior   Próximo Post Next
Antigo 02-07-2009, 10:20 PM   #1 (permalink)
playstation
 
Avatar de paytaly
 
Registrado em: Dec 2008
Localização: Belo Horizonte
Posts: 1,284
Agradeceu: 118
Agradecido 1,503 Vezes em 772 Posts
Achei Ruim:
Acharam ruim Vezes em Posts
Meu Estado:
Enviar mensagem via Windows Live Messenger para paytaly
Nome Real: Marcelo

Inventório de paytaly

Padrão Core Buffer

Esse é um Mod para Criar um NPC Buffer direto no Java.

Vá ate a Pasta: .../gameserver/datatables e crie um Arquivo com o nome NpcBufferSkillIdsTable.java e adicione esse código no Arquivo:
Código: [Somente Usuários Registrados Podem Visualizar os Links Desta PáginaClique aqui para se Registrar]
package net.sf.l2j.gameserver.datatables;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Map;

import javolution.util.FastMap;

import net.sf.l2j.L2DatabaseFactory;

public class NpcBufferSkillIdsTable
{
   private static NpcBufferSkillIdsTable _instance = null;

   private Map<Integer, NpcBufferSkills> _buffers = new FastMap<Integer, NpcBufferSkills>();

   private NpcBufferSkillIdsTable()
   {
      Connection con = null;
      int skillCount = 0;

      try
      {
         con = L2DatabaseFactory.getInstance().getConnection();

         PreparedStatement statement = con.prepareStatement("SELECT npc_id`,`skill_id`,`skill_level`,`skill_fee_id`,`skill_fee_amount` FROM `npc_buffer_skill_ids` ORDER BY `npc_id` ASC");
         ResultSet rset = statement.executeQuery();

         int lastNpcId = 0;
         NpcBufferSkills skills = null;

         while (rset.next())
         {
            int npcId = rset.getInt("npc_id");
            int skillId = rset.getInt("skill_id");
            int skillLevel = rset.getInt("skill_level");
            int skillFeeId = rset.getInt("skill_fee_id");
            int skillFeeAmount = rset.getInt("skill_fee_amount");

            if (npcId != lastNpcId)
            {
               if (lastNpcId != 0)
                  _buffers.put(lastNpcId, skills);

               skills = new NpcBufferSkills(npcId);
               skills.addSkill(skillId, skillLevel, skillFeeId, skillFeeAmount);
            }
            else
               skills.addSkill(skillId, skillLevel, skillFeeId, skillFeeAmount);

            lastNpcId = npcId;
            skillCount++;
         }
         
         _buffers.put(lastNpcId, skills);
         rset.close();
         statement.close();
      }
      catch (Exception e)
      {
         System.out.println("NpcBufferSkillIdsTable: Error reading npc_buffer_skill_ids table: " + e);
      }
      finally
      {
         try{con.close();}catch(Exception e){}
      }

      System.out.println("NpcBufferSkillIdsTable: Loaded " + _buffers.size() + " buffers and " + skillCount + " skills.");
   }

   public static NpcBufferSkillIdsTable getInstance()
   {
      if (_instance == null)
         _instance = new NpcBufferSkillIdsTable();
      return _instance;
   }

   public int[] getSkillInfo(int npcId, int skillId)
   {
      NpcBufferSkills skills = _buffers.get(npcId);
      
      if (skills == null)
         return null;

      return skills.getSkillInfo(skillId);
   }
}
Agora na mesma pasta (.../gameserver/datatables), crie o Arquivo com o nome NpcBufferSkills.java e adicone esse código:
Código: [Somente Usuários Registrados Podem Visualizar os Links Desta PáginaClique aqui para se Registrar]
package net.sf.l2j.gameserver.datatables;

import java.util.Map;

import javolution.util.FastMap;

public class NpcBufferSkills
{
   private int _npcId = 0;
   private Map<Integer, Integer> _skillLevels = new FastMap<Integer, Integer>();
   private Map<Integer, Integer> _skillFeeIds = new FastMap<Integer, Integer>();
   private Map<Integer, Integer> _skillFeeAmounts = new FastMap<Integer, Integer>();

   public NpcBufferSkills(int npcId)
   {
      _npcId = npcId;
   }

   public void addSkill(int skillId, int skillLevel, int skillFeeId, int skillFeeAmount)
   {
      _skillLevels.put(skillId, skillLevel);
      _skillFeeIds.put(skillId, skillFeeId);
      _skillFeeAmounts.put(skillId, skillFeeAmount);
   }

   public int[] getSkillInfo(int skillId)
   {
      Integer skillLevel = _skillLevels.get(skillId);
      Integer skillFeeId = _skillFeeIds.get(skillId);
      Integer skillFeeAmount = _skillFeeAmounts.get(skillId);
      
      if (skillLevel == null || skillFeeId == null || skillFeeAmount == null)
         return null;

      return new int[] {skillLevel, skillFeeId, skillFeeAmount};
   }

   public int getNpcId()
   {
      return _npcId;
   }
}
Agora vá até a Pasta: .../gameserver/model/actor/instance e crie um arquivo com o nome L2NpcBufferInstance.java e adicione esse código:
Código: [Somente Usuários Registrados Podem Visualizar os Links Desta PáginaClique aqui para se Registrar]
package net.sf.l2j.gameserver.model.actor.instance;

import java.util.Vector;
import java.util.concurrent.ScheduledFuture;

import net.sf.l2j.gameserver.ThreadPoolManager;
import net.sf.l2j.gameserver.cache.HtmCache;
import net.sf.l2j.gameserver.datatables.NpcBufferSkillIdsTable;
import net.sf.l2j.gameserver.datatables.SkillTable;
import net.sf.l2j.gameserver.model.L2Effect;
import net.sf.l2j.gameserver.model.L2ItemInstance;
import net.sf.l2j.gameserver.model.L2Skill;
import net.sf.l2j.gameserver.serverpackets.ActionFailed;
import net.sf.l2j.gameserver.serverpackets.MagicSkillUser;
import net.sf.l2j.gameserver.serverpackets.NpcHtmlMessage;
import net.sf.l2j.gameserver.skills.Formulas;
import net.sf.l2j.gameserver.templates.L2NpcTemplate;
import net.sf.l2j.util.Rnd;

/**
 * L2NpcBufferInstance
 *
 * @author FBIagent
 */
public class L2NpcBufferInstance extends L2NpcInstance
{
   private class BuffTask implements Runnable
   {
      private Boolean _buffing = false;
      private L2NpcBufferInstance _me = null;
      private Vector<L2PcInstance> _playerInstances = new Vector<L2PcInstance>();
      private Vector<Integer> _skillIds = new Vector<Integer>();
      private Vector<Integer> _skillLevels = new Vector<Integer>();
      private ScheduledFuture _task = null;

      public BuffTask(L2NpcBufferInstance me)
      {
         _me = me;
         _task = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(this, 100, 100);
      }
      
      public void addBuff(L2PcInstance playerInstance, int skillId, int skillLevel)
      {
         synchronized (_playerInstances)
         {
/*            int count = 0;
            
            for (L2PcInstance playerInstance2 : _playerInstances)
            {
               if (playerInstance2 == playerInstance)
                  count++;
            }

            if (count > 4)
            {
               playerInstance.sendMessage("The buffer can't imagine more than 5 buffs per player.");
               return;
            }*/
            
            _playerInstances.add(playerInstance);
            _skillIds.add(skillId);
            _skillLevels.add(skillLevel);
         }
      }

      public void run()
      {
         boolean abort = false;

         synchronized (_buffing)
         {
            abort = _buffing;
            _buffing = true;
         }
         
         if (abort)
            return;
         
         try
         {
            Thread.sleep(1);
         }
         catch (InterruptedException ie)
         {}

         int index = -1;
         L2PcInstance playerInstance = null;
         int skillId = 0;
         int skillLevel = 0;

         synchronized (_playerInstances)
         {
            index = _skillIds.size() - 1;

            if (index != -1)
            {
               index = Rnd.get(_skillIds.size());
               playerInstance = _playerInstances.get(index);
               skillId = _skillIds.get(index);
               skillLevel = _skillLevels.get(index);
            }
         }
            
         if (index == -1)
            return;

         L2Skill skill = SkillTable.getInstance().getInfo(skillId, skillLevel);
            
         if (playerInstance != null && skill != null)
         {
            //if (_me.isInsideRadius(playerInstance.getX(), playerInstance.getY(), skill.getCastRange(), true))
            //continue;

            int skillTime = Formulas.getInstance().calcMAtkSpd(_me, skill, skill.getHitTime());
            
            if (skill.isDance())
               _me.broadcastPacket(new MagicSkillUser(_me, _me, skillId, skillLevel, skillTime, 0));
            else
               _me.broadcastPacket(new MagicSkillUser(_me, playerInstance, skillId, skillLevel, skillTime, 0));
               
            long continueTime = System.currentTimeMillis() + skillTime;

            while (continueTime >= System.currentTimeMillis())
            {
               try
               {
                  Thread.sleep(1);
               }
               catch (InterruptedException ie)
               {}
            }
               
            L2Effect[] effects = playerInstance.getAllEffects();

            if (effects != null)
            {
               for (L2Effect e : effects)
               {
                  if (e != null && skill != null)
                  {
                     if (e.getSkill().getId() == skill.getId())
                        e.exit();
                  }
               }
            }

            skill.getEffects(playerInstance, playerInstance);
         }
         else
            System.out.println("NpcBuffer warning(" + getNpcId() + " at " + getX() + ", " + getY() + ", " + getZ() + "): Skill or Player null!");
            
         synchronized (_playerInstances)
         {
            _playerInstances.remove(index);
            _skillIds.remove(index);
            _skillLevels.remove(index);
         }
         
         synchronized (_buffing)
         {
            _buffing = false;
         }
      }

      protected void stopTask()
      {
         if (_task != null)
         {
            _task.cancel(true);
            _task = null;
         }
      }
   }
   
   private BuffTask _buffTaskInstance = null;

   public L2NpcBufferInstance(int objectId, L2NpcTemplate template)
   {
      super(objectId, template);
      _buffTaskInstance = new BuffTask(this);
   }

   @Override
   public void showChatWindow(L2PcInstance playerInstance, int val)
   {
      if (playerInstance == null)
         return;
      
      String htmFile = "data/html/mods/NpcBuffer.htm";
      String htmContent = HtmCache.getInstance().getHtm(htmFile);

      if (htmContent != null)
       {
          NpcHtmlMessage npcHtmlMessage = new NpcHtmlMessage(getObjectId());

         npcHtmlMessage.setHtml(htmContent);
          npcHtmlMessage.replace("%objectId%", String.valueOf(getObjectId()));
          playerInstance.sendPacket(npcHtmlMessage);
       }
      
      playerInstance.sendPacket(new ActionFailed());
   }

   @Override
   public void deleteMe()
   {
      _buffTaskInstance.stopTask();
      _buffTaskInstance = null;
      super.deleteMe();
   }

   @Override
    public void onBypassFeedback(L2PcInstance playerInstance, String command)
    {
       if (playerInstance == null)
          return;

       int npcId = getNpcId();

       if (command.startsWith("npc_buffer_buff"))
        {
          String[] params = command.split(" ");
             int skillId = Integer.parseInt(params[1]);
             int[] skillInfos = NpcBufferSkillIdsTable.getInstance().getSkillInfo(npcId, skillId);
             
             if (skillInfos == null)
             {
                System.out.println("NpcBuffer warning(" + npcId + " at " + getX() + ", " + getY() + ", " + getZ() + "): Player " + playerInstance.getName() + " tried to use skill(" + skillId + ") not assigned to npc buffer!");
                return;
             }

           int skillLevel = skillInfos[0];
           int skillFeeId = skillInfos[1];
           int skillFeeAmount = skillInfos[2];

           if (skillFeeId != 0) // take some item?
           {
              if (skillFeeAmount == 0)
              {
                 System.out.println("NpcBuffer warning(" + npcId + " at " + getX() + ", " + getY() + ", " + getZ() + "): Fee amount of skill(" + skillId + ") fee id(" + skillFeeId + ") is 0!");
                 return;
              }
               
              L2ItemInstance itemInstance = playerInstance.getInventory().getItemByItemId(skillFeeId);

              if (itemInstance == null || (!itemInstance.isStackable() && playerInstance.getInventory().getInventoryItemCount(skillFeeId, -1) < skillFeeAmount))
              {
                 playerInstance.sendMessage("You do not have enought items!");
                 return;
              }

              if (itemInstance.isStackable())
              {
                 if (!playerInstance.destroyItemByItemId("Npc Buffer", skillFeeId, skillFeeAmount, playerInstance.getTarget(), true))
                 {
                    playerInstance.sendMessage("You do not have enought items!");
                    return;
                 }
              }
              else
              {
                 for (int i=0;i<skillFeeAmount;i++)
                    playerInstance.destroyItemByItemId("Npc Buffer", skillFeeId, 1, playerInstance.getTarget(), true);
              }
           }
         L2Skill skill;
         skill = SkillTable.getInstance().getInfo(skillId, skillLevel);
         skill.getEffects(playerInstance, playerInstance);
        }

       showChatWindow(playerInstance, 0);
    }
}
Agora vá até a Pasta .../gameserver e abra o Arquivo: GameServer.java
Adicione as seguintes linhas em vermelho.
Código: [Somente Usuários Registrados Podem Visualizar os Links Desta PáginaClique aqui para se Registrar]
import net.sf.l2j.gameserver.datatables.NobleSkillTable;
import net.sf.l2j.gameserver.datatables.NpcBufferSkillIdsTable;
 import net.sf.l2j.gameserver.datatables.NpcTable;
Código: [Somente Usuários Registrados Podem Visualizar os Links Desta PáginaClique aqui para se Registrar]
      HeroSkillTable.getInstance();
      NpcBufferSkillIdsTable.getInstance();
 
         //Call to load caches
Crie o SQL para o NPC e o Arquivo NpcBuffer.Htm na Pasta: ...\data\html\mods.
Pronto! Agora você acaba de Criar um Core Buffer.

Créditos: FBIAgent

__________________
Há! Só posso rir de quem quer vender o que mal sabe fazer...
Quer ser respondido direito!? Não faça perguntas idiotas. (Y)
paytaly está offline  
Os Seguintes 3 Usuários disseram Obrigado(a) para paytaly por gostarem deste post :
Boots (07-11-2009), GM-RasieL (30-09-2009), junin00 (27-05-2010)
Links Patrocinados
 


Regras para Posts
Você não pode postar novos tópicos
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar seus posts

Código [IMG] Sim
Código HTML Não
Trackbacks are Sim
Pingbacks are Sim
Refbacks are Sim



Horários baseados na GMT -3. Agora são 07:48 AM.
 



Search Engine Optimization by vBSEO 3.3.0