|
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 |
|
|||||||
| Registrar | Loteria VIP | Staff SE | Regras do fórum | Membros | Arcade | Pesquisar | Postados Hoje | Marcar Fóruns Como Lidos | Experience |
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
![]() |
|
|
LinkBack | Ferramentas do Tópico | Modos de Exibição |
|
|
#1 (permalink) |
|
playstation
![]() Registrado em: Dec 2008
Localização: Belo Horizonte
Posts: 1,284
Agradeceu: 118
Agradecido 1,503 Vezes em 772 Posts
Nome Real: Marcelo
|
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);
}
}
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;
}
}
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);
}
}
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
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) |
|
|
| Links Patrocinados |
|
|
#3 (permalink) |
|
playstation
![]() Registrado em: Dec 2008
Localização: Belo Horizonte
Posts: 1,284
Agradeceu: 118
Agradecido 1,503 Vezes em 772 Posts
Nome Real: Marcelo
|
@{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) |
|
|
|
| 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) |
|
|
#5 (permalink) |
|
playstation
![]() Registrado em: Dec 2008
Localização: Belo Horizonte
Posts: 1,284
Agradeceu: 118
Agradecido 1,503 Vezes em 772 Posts
Nome Real: Marcelo
|
"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) |
|
|
|
|
|
#7 (permalink) |
|
playstation
![]() Registrado em: Dec 2008
Localização: Belo Horizonte
Posts: 1,284
Agradeceu: 118
Agradecido 1,503 Vezes em 772 Posts
Nome Real: Marcelo
|
@{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) |
|
|
|
| O seguinte membro ao lado disse Obrigado(a) a : paytaly por gostar deste Post : |
HanNiBaL (29-12-2009)
|
|
|
#8 (permalink) | ||||||||||||||
|
Membro - Sargento
![]() Registrado em: Apr 2009
Posts: 38
Agradeceu: 33
Agradecido 4 Vezes em 2 Posts
Achei Ruim:
Acharam ruim Vezes em Posts
|
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!
|
||||||||||||||
|
|
|
||||||||||||||
![]() |
| Ferramentas do Tópico | |
| Modos de Exibição | |
|
|