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

Resposta
 
Ferramentas do Tópico Modos de Exibição
Antigo 02-07-2009, 10:20 PM   #1
paytaly
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
Antigo 25-10-2009, 09:05 AM   #2
{João P.}
Membro - Coronel
 
Avatar de {João P.}
 
Registrado em: Feb 2009
Posts: 186
Agradeceu: 225
Agradecido 94 Vezes em 37 Posts
Achei Ruim:
Acharam ruim Vezes em Posts
Meu Sistema
Meu Estado:

Inventório de {João P.}

Padrão

Tu já viw l2jnet regular buffers pelo .PROPRITIES podia postar pra galera muito bom neem prescisa dá ajuda como mudar o tempo dos Buffers

{João P.} está offline   Responder com Citação
Antigo 25-10-2009, 09:28 AM   #3
paytaly
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

@{João P.}, quase todos os Packs hoje tem esse Mod.
E L2JNet não existe. Aquilo que vocês chamam de L2JNet é L2Emu, que foi roubado pela
L2JNet.

__________________
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   Responder com Citação
Os Seguintes 5 Usuários disseram Obrigado(a) para paytaly por gostarem deste post :
Boots (07-11-2009), CavaleiroNegro (25-10-2009), Inspector (25-10-2009), junin00 (27-05-2010), {João P.} (25-10-2009)
Antigo 25-10-2009, 10:49 AM   #4
{João P.}
Membro - Coronel
 
Avatar de {João P.}
 
Registrado em: Feb 2009
Posts: 186
Agradeceu: 225
Agradecido 94 Vezes em 37 Posts
Achei Ruim:
Acharam ruim Vezes em Posts
Meu Sistema
Meu Estado:

Inventório de {João P.}

Padrão

mais se fraga o que néeh regular todos buffers pela Config

{João P.} está offline   Responder com Citação
Antigo 25-10-2009, 11:12 AM   #5
paytaly
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

"Frago" cara.
Pode não ser exatamente igual mais tem a mesma função
Código: [Somente Usuários Registrados Podem Visualizar os Links Desta PáginaClique aqui para se Registrar]
#Buff time multiple
#Example dance time default is 2 min if BuffMultiplier=30 then
#buff time=60min
#Multiplier dance & song time
DanceTimeMultiplier = 1

# Multiplier buff time
#Example buff time default is 20 min if BuffMultiplier=3 then
#buff time=60min
#is 20*3
BuffMultiplier = 1

#Multiplier time of spirit (COV, POW, POF ...)
#Example spirit time default is 5 min if BuffMultiplier=12 then
#buff time=60min
SpiritMultiplier = 1

__________________
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   Responder com Citação
Antigo 27-10-2009, 08:35 PM   #6
{João P.}
Membro - Coronel
 
Avatar de {João P.}
 
Registrado em: Feb 2009
Posts: 186
Agradeceu: 225
Agradecido 94 Vezes em 37 Posts
Achei Ruim:
Acharam ruim Vezes em Posts
Meu Sistema
Meu Estado:

Inventório de {João P.}

Padrão

mais quando muda buga tudo coloca 1380 (13 horas) ow seja outras skiils ficam bugada =(

{João P.} está offline   Responder com Citação
Antigo 27-10-2009, 08:59 PM   #7
paytaly
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

@{João P.}, presta atenção! ¬¬
Nessa config "1380" não são 13 horas! lol

Veja só:
O tempo Padrão (Retail(Oficial)) das Danças é 2 Minutos.
Então se você colocar DanceTimeMultiplier = 2, vai ficar:
2 (Tempo Oficial das Danças) * 2 (DanceTimeMultiplier).
Então 2*2=4, sendo assim o tempo das Danças (Songs também) será 4 Minutos.

Tempo Oficial dos Buffs é 20 Minutos e das Profecias é 5 Minutos.

__________________
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   Responder com Citação
O seguinte membro ao lado disse Obrigado(a) a : paytaly por gostar deste Post :
HanNiBaL (29-12-2009)
Antigo 02-08-2012, 11:59 PM   #8
leonardoalves
Membro - Sargento
 
Avatar de leonardoalves
 
Registrado em: Apr 2009
Posts: 38
Agradeceu: 33
Agradecido 4 Vezes em 2 Posts
Achei Ruim:
Acharam ruim Vezes em Posts
Pontos: 3,305, Nível: 35
Pontos: 3,305, Nível: 35 Pontos: 3,305, Nível: 35 Pontos: 3,305, Nível: 35
Atividade: 5%
Atividade: 5% Atividade: 5% Atividade: 5%

Inventório de leonardoalves

Padrão

Uma dúvida é só criar o arquivo .htm , mais oque devo por dentro dele?!. Ou é ele todo em brando? kk. Desculpe a ignorância. Boa Noite!

leonardoalves está offline   Responder com Citação
Resposta


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

Ir para...


Horários baseados na GMT -3. Agora são 09:40 PM.