Ir para conteúdo
  • Cadastre-se

-= JRGames =-

Sup. Membro
  • Total de itens

    508
  • Registro em

  • Última visita

  • Prêmios recebidos

    7

Tudo que -= JRGames =- postou

  1. para qual revisão e este ZoneName seu ai meu jovem Scions of Destiny, Oath of Blood, Interlude, Kamael, Hellbound, Gracia, Gracia Final, Gracia Epilogue, Freya, HightFive ??
  2. 7577 Draconic Bow Focus a,<Soul Crystal Enhancement>\\n Increases Critical Attack by 88. Enhances damage to a target during PvP.\0 -1 a, a, a, a, 0 0 0 a,
  3. -= JRGames =-

    ZonaFlag

    você que fez algo errado então confira se sua revisão tem o Mod FlagZone
  4. -= JRGames =-

    ZonaFlag

    aqui esta <!-- Goran Harbor By: -= JRGames =- --> <zone type="FlagZone" shape='NPoly' minZ='-4725' maxZ='-2725'> <node X="49500" Y="182864" /> <node X="53505" Y="187058" /> <node X="44148" Y="193618" /> <node X="42106" Y="190196" /> <node X="41005" Y="188073" /> <node X="45543" Y="185741" /> <node X="49331" Y="182999" /> </zone>
  5. -= JRGames =-

    NPC BUFFER

    na frozem 90% delas ainda usa os Npc buffer em scripts Procure no arquivo __init__.py dele do seu npc.
  6. Nesta Área Tem vários Servidores bons. https://www.l2jbrasil.com/forums/forum/81-ct0-~-interlude/
  7. da mais detalhes de qual revisão você baixou para podermos tentar te ajudar.
  8. Refiz Utilizando a Imagem demonstrativa que tem o dono dos ícones postou . Obs: Não testei só fiz a UTX e postei. IconesAllInOne_Refeito_By_-=JRGames=-.rar
  9. Refaça o arquivo Pegue uma linha do npcname que quer usar e mude o ID e o Nome do npc, Salve novamente e bom jogo!!
  10. Hello little grasshopper look for the file ( npcs.properties) inside it will look like this: ConfigClassMaster = 1;[];[];2;[];[];3;[3470(1];[] leave it like this: ConfigClassMaster = 1;[];[];2;[];[];3;[];[] Hope this helps
  11. Site do Ivam e Multi-plataforma use ele Site ICPNetworks V2
  12. Chama o @Levy no Privado e fala com ele, ele cria o que você quiser no l2.
  13. este tutorial pode te ajudar bastante Neste Link
  14. use estes só adaptar para a sua revisão --> Skins L2j ou estes --> Pacote Skins
  15. top demais elas obrigado por postar
  16. abra o video direto no youtube que vai ta la o link não se esqueça de curtir e compartilhar para ajudar o trabalho do nosso amigo @NevesOma
  17. Alguém pode mim ajudar a adaptar esta parte do código para a acis 399? aqui esta o L2Skill original da acis 399
  18. amigo só vai mudar os imports tente adicionar e se der erros poste os erros que ajudamos você
  19. -= JRGames =-

    HTML

    procure na pack em: game\data\html\mods\Vote Zone
  20. aconselho usar o site free do Ivan Pires ICPNetworks V2 esta completo e funcional. Caso queira usar esse mesmo que esta tentando concertar aconselho comprar direto na mão do Dev dele AtualStudio
  21. -= JRGames =-

    NPC

    Mod Foi Adicionado na Acis 375 espero que ajude diff --git a/L2jMega_datapack/data/xml/FakePc/FakeNpc.xml b/L2jMega_datapack/data/xml/FakePc/FakeNpc.xml new file mode 100644 index 0000000..6ee205f --- /dev/null +++ b/L2jMega_datapack/data/xml/FakePc/FakeNpc.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<list> +<!-- <npc id="500"> + <appearance name="Zeus" name_color="FFFFFF" title=": Make a Donation :" title_color="FF9900" radius="9" height="22" race="0" sex="0" class="10" hair_style="0" hair_color="3" face="0" hero="1" enchant="21" /> + <items right_hand="6579" left_hand="6377" chest="2407" legs="0" gloves="5767" feet="5779" hair="8563" hair2="0" /> + <clan clan_id="0" clan_crest="0" ally_id="0" ally_crest="0" pledge="0" /> + </npc> + --> +</list> diff --git a/L2jMega_gameserver/java/net/sf/l2j/gameserver/GameServer.java b/L2jMega_gameserver/java/net/sf/l2j/gameserver/GameServer.java index ff95f0d..5505650 100644 --- a/L2jMega_gameserver/java/net/sf/l2j/gameserver/GameServer.java +++ b/L2jMega_gameserver/java/net/sf/l2j/gameserver/GameServer.java @@ -51,6 +51,7 @@ import net.sf.l2j.gameserver.data.xml.ArmorSetData; import net.sf.l2j.gameserver.data.xml.AugmentationData; import net.sf.l2j.gameserver.data.xml.DressMeData; +import net.sf.l2j.gameserver.data.xml.FakePcsData; import net.sf.l2j.gameserver.data.xml.FishData; import net.sf.l2j.gameserver.data.xml.HennaData; import net.sf.l2j.gameserver.data.xml.HerbDropData; @@ -289,7 +290,8 @@ GrandBossManager.getInstance(); DayNightSpawnManager.getInstance(); DimensionalRiftManager.getInstance(); - + FakePcsData.getInstance(); + StringUtil.printSection("Olympiads & Heroes"); OlympiadGameManager.getInstance(); Olympiad.getInstance(); diff --git a/L2jMega_gameserver/java/net/sf/l2j/gameserver/data/xml/FakePcsData.java b/L2jMega_gameserver/java/net/sf/l2j/gameserver/data/xml/FakePcsData.java new file mode 100644 index 0000000..8a9d362 --- /dev/null +++ b/L2jMega_gameserver/java/net/sf/l2j/gameserver/data/xml/FakePcsData.java @@ -0,0 +1,115 @@ +package net.sf.l2j.gameserver.data.xml; + +import java.io.File; +import java.util.HashMap; +import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; + +import net.sf.l2j.gameserver.model.actor.FakePc; +import net.sf.l2j.gameserver.xmlfactory.XMLDocumentFactory; + +import org.w3c.dom.Document; +import org.w3c.dom.Node; + +public class FakePcsData +{ + private static Logger _log = Logger.getLogger(FakePcsData.class.getName()); + private final Map<Integer, FakePc> _fakePcs; + + public static FakePcsData getInstance() + { + return SingletonHolder._instance; + } + + protected FakePcsData() + { + _fakePcs = new HashMap<>(); + load(); + } + + public void reload() + { + _fakePcs.clear(); + load(); + } + + private void load() + { + try + { + File f = new File("./data/xml/FakePc/FakeNpc.xml"); + Document doc = XMLDocumentFactory.getInstance().loadDocument(f); + + Node n = doc.getFirstChild(); + for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) + { + if (d.getNodeName().equalsIgnoreCase("npc")) + { + FakePc fpc = new FakePc(); + + int npcId = Integer.valueOf(d.getAttributes().getNamedItem("id").getNodeValue()); + + for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) + { + if ("appearance".equalsIgnoreCase(cd.getNodeName())) + { + fpc.name = cd.getAttributes().getNamedItem("name").getNodeValue(); + fpc.nameColor = Integer.decode("0x" + cd.getAttributes().getNamedItem("name_color").getNodeValue()); + fpc.title = cd.getAttributes().getNamedItem("title").getNodeValue(); + fpc.titleColor = Integer.decode("0x" + cd.getAttributes().getNamedItem("title_color").getNodeValue()); + fpc.radius = Integer.valueOf(cd.getAttributes().getNamedItem("radius").getNodeValue()); + fpc.height = Integer.valueOf(cd.getAttributes().getNamedItem("height").getNodeValue()); + fpc.race = Integer.valueOf(cd.getAttributes().getNamedItem("race").getNodeValue()); + fpc.sex = Integer.valueOf(cd.getAttributes().getNamedItem("sex").getNodeValue()); + fpc.classId = Integer.valueOf(cd.getAttributes().getNamedItem("class").getNodeValue()); + fpc.hairStyle = Integer.valueOf(cd.getAttributes().getNamedItem("hair_style").getNodeValue()); + fpc.hairColor = Integer.valueOf(cd.getAttributes().getNamedItem("hair_color").getNodeValue()); + fpc.face = Integer.valueOf(cd.getAttributes().getNamedItem("face").getNodeValue()); + fpc.hero = Byte.parseByte(cd.getAttributes().getNamedItem("hero").getNodeValue()); + fpc.enchant = Integer.valueOf(cd.getAttributes().getNamedItem("enchant").getNodeValue()); + } + else if ("items".equalsIgnoreCase(cd.getNodeName())) + { + fpc.rightHand = Integer.valueOf(cd.getAttributes().getNamedItem("right_hand").getNodeValue()); + fpc.leftHand = Integer.valueOf(cd.getAttributes().getNamedItem("left_hand").getNodeValue()); + fpc.chest = Integer.valueOf(cd.getAttributes().getNamedItem("chest").getNodeValue()); + fpc.legs = Integer.valueOf(cd.getAttributes().getNamedItem("legs").getNodeValue()); + fpc.gloves = Integer.valueOf(cd.getAttributes().getNamedItem("gloves").getNodeValue()); + fpc.feet = Integer.valueOf(cd.getAttributes().getNamedItem("feet").getNodeValue()); + fpc.hair = Integer.valueOf(cd.getAttributes().getNamedItem("hair").getNodeValue()); + fpc.hair2 = Integer.valueOf(cd.getAttributes().getNamedItem("hair2").getNodeValue()); + } + else if ("clan".equalsIgnoreCase(cd.getNodeName())) + { + fpc.clanId = Integer.valueOf(cd.getAttributes().getNamedItem("clan_id").getNodeValue()); + fpc.clanCrest = Integer.valueOf(cd.getAttributes().getNamedItem("clan_crest").getNodeValue()); + fpc.allyId = Integer.valueOf(cd.getAttributes().getNamedItem("ally_id").getNodeValue()); + fpc.allyCrest = Integer.valueOf(cd.getAttributes().getNamedItem("ally_crest").getNodeValue()); + fpc.pledge = Integer.valueOf(cd.getAttributes().getNamedItem("pledge").getNodeValue()); + } + + } + + _fakePcs.put(npcId, fpc); + } + } + } + catch (Exception e) + { + _log.log(Level.WARNING, "FakePcsData: Error loading from database:" + e.getMessage(), e); + } + + _log.info("FakePcsData: Loaded " + _fakePcs.size() + " NPC to PC templates."); + } + + public FakePc getFakePc(int npcId) + { + return _fakePcs.get(npcId); + } + + private static class SingletonHolder + { + protected static final FakePcsData _instance = new FakePcsData(); + } +} \ No newline at end of file diff --git a/L2jMega_gameserver/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminAdmin.java b/L2jMega_gameserver/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminAdmin.java index 6b5deb8..e1a176d 100644 --- a/L2jMega_gameserver/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminAdmin.java +++ b/L2jMega_gameserver/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminAdmin.java @@ -2,9 +2,8 @@ import java.util.StringTokenizer; -import net.sf.l2j.commons.lang.StringUtil; - import net.sf.l2j.Config; +import net.sf.l2j.commons.lang.StringUtil; import net.sf.l2j.gameserver.BalanceLoad; import net.sf.l2j.gameserver.data.DoorTable; import net.sf.l2j.gameserver.data.ItemTable; @@ -16,6 +15,7 @@ import net.sf.l2j.gameserver.data.xml.AdminData; import net.sf.l2j.gameserver.data.xml.AnnouncementData; import net.sf.l2j.gameserver.data.xml.DressMeData; +import net.sf.l2j.gameserver.data.xml.FakePcsData; import net.sf.l2j.gameserver.data.xml.MultisellData; import net.sf.l2j.gameserver.data.xml.PkColorTable; import net.sf.l2j.gameserver.data.xml.PvpColorTable; @@ -30,7 +30,6 @@ import net.sf.l2j.gameserver.model.actor.Creature; import net.sf.l2j.gameserver.model.actor.instance.Player; import net.sf.l2j.gameserver.network.SystemMessageId; - import phantom.PhantomNameManager; import phantom.PhantomTitleManager; import phantom.Phantom_Attack; @@ -227,6 +226,11 @@ DoorTable.getInstance().reload(); activeChar.sendMessage("Doors instance has been reloaded."); } + else if (type.startsWith("fpc")) + { + FakePcsData.getInstance().reload(); + activeChar.sendMessage("Fake PC templates have been reloaded."); + } else if (type.startsWith("htm")) { HtmCache.getInstance().reload(); @@ -274,7 +278,7 @@ } else { - activeChar.sendMessage("Usage : //reload <acar|announcement|config|crest|door>"); + activeChar.sendMessage("Usage : //reload <acar|announcement|config|crest|door|fpc>"); activeChar.sendMessage("Usage : //reload <htm|item|multisell|npc|npcwalker>"); activeChar.sendMessage("Usage : //reload <skill|teleport|zone>"); } @@ -283,7 +287,7 @@ } catch (Exception e) { - activeChar.sendMessage("Usage : //reload <acar|announcement|config|crest|door>"); + activeChar.sendMessage("Usage : //reload <acar|announcement|config|crest|door|fpc>"); activeChar.sendMessage("Usage : //reload <htm|item|multisell|npc|npcwalker>"); activeChar.sendMessage("Usage : //reload <skill|teleport|zone>"); } diff --git a/L2jMega_gameserver/java/net/sf/l2j/gameserver/model/actor/FakePc.java b/L2jMega_gameserver/java/net/sf/l2j/gameserver/model/actor/FakePc.java new file mode 100644 index 0000000..ff701af --- /dev/null +++ b/L2jMega_gameserver/java/net/sf/l2j/gameserver/model/actor/FakePc.java @@ -0,0 +1,34 @@ +package net.sf.l2j.gameserver.model.actor; + +public class FakePc +{ + public String name; + public int nameColor; + public String title; + public int titleColor; + public double radius; + public double height; + public int race; + public int sex; + public int classId; + public int hairStyle; + public int hairColor; + public int face; + public byte hero; + public int enchant; + + public int rightHand; + public int leftHand; + public int chest; + public int legs; + public int gloves; + public int feet; + public int hair; + public int hair2; + + public int clanId; + public int clanCrest; + public int allyId; + public int allyCrest; + public int pledge; +} \ No newline at end of file diff --git a/L2jMega_gameserver/java/net/sf/l2j/gameserver/model/actor/Npc.java b/L2jMega_gameserver/java/net/sf/l2j/gameserver/model/actor/Npc.java index 5f3c13b..403d78a 100644 --- a/L2jMega_gameserver/java/net/sf/l2j/gameserver/model/actor/Npc.java +++ b/L2jMega_gameserver/java/net/sf/l2j/gameserver/model/actor/Npc.java @@ -8,11 +8,10 @@ import java.util.List; import java.util.logging.Level; +import net.sf.l2j.Config; import net.sf.l2j.commons.concurrent.ThreadPool; import net.sf.l2j.commons.lang.StringUtil; import net.sf.l2j.commons.random.Rnd; - -import net.sf.l2j.Config; import net.sf.l2j.events.CTF; import net.sf.l2j.events.TvT; import net.sf.l2j.gameserver.data.IconTable; @@ -22,6 +21,7 @@ import net.sf.l2j.gameserver.data.SkillTable.FrequentSkill; import net.sf.l2j.gameserver.data.cache.HtmCache; import net.sf.l2j.gameserver.data.sql.ClanTable; +import net.sf.l2j.gameserver.data.xml.FakePcsData; import net.sf.l2j.gameserver.data.xml.MultisellData; import net.sf.l2j.gameserver.data.xml.NewbieBuffData; import net.sf.l2j.gameserver.idfactory.IdFactory; @@ -177,6 +177,8 @@ private int _currentRHandId; private int _currentEnchant; + private FakePc _fakePc = null; + private double _currentCollisionHeight; // used for npc grow effect skills private double _currentCollisionRadius; // used for npc grow effect skills @@ -256,6 +258,8 @@ _currentCollisionHeight = template.getCollisionHeight(); _currentCollisionRadius = template.getCollisionRadius(); + _fakePc = FakePcsData.getInstance().getFakePc(template.getNpcId()); + // Set the name of the Creature setName(template.getName()); setTitle(template.getTitle()); @@ -2020,6 +2024,11 @@ return _currentCollisionRadius; } + public FakePc getFakePc() + { + return _fakePc; + } + public int getScriptValue() { return _scriptValue; @@ -2162,4 +2171,14 @@ } return null; } + + public double getMovementSpeedMultiplier() + { + return 1; + } + + public double getAttackSpeedMultiplier() + { + return 1; + } } \ No newline at end of file diff --git a/L2jMega_gameserver/java/net/sf/l2j/gameserver/model/actor/status/AttackableStatus.java b/L2jMega_gameserver/java/net/sf/l2j/gameserver/model/actor/status/AttackableStatus.java index 287f527..92acdc1 100644 --- a/L2jMega_gameserver/java/net/sf/l2j/gameserver/model/actor/status/AttackableStatus.java +++ b/L2jMega_gameserver/java/net/sf/l2j/gameserver/model/actor/status/AttackableStatus.java @@ -1,7 +1,11 @@ package net.sf.l2j.gameserver.model.actor.status; +import java.util.Collection; + import net.sf.l2j.gameserver.model.actor.Attackable; import net.sf.l2j.gameserver.model.actor.Creature; +import net.sf.l2j.gameserver.model.actor.instance.Player; +import net.sf.l2j.gameserver.network.serverpackets.AbstractNpcInfo; public class AttackableStatus extends NpcStatus { @@ -44,6 +48,22 @@ } @Override + public void setCurrentHp(double newHp, boolean broadcastPacket) + { + super.setCurrentHp(newHp, broadcastPacket); + + if (getActiveChar().getFakePc() != null) + { + Collection<Player> plrs = getActiveChar().getKnownType(Player.class); + for (Player player : plrs) + { + if (player != null) + player.sendPacket(new AbstractNpcInfo.NpcInfo(getActiveChar(), player)); + } + } + } + + @Override public Attackable getActiveChar() { return (Attackable) super.getActiveChar(); diff --git a/L2jMega_gameserver/java/net/sf/l2j/gameserver/network/serverpackets/AbstractNpcInfo.java b/L2jMega_gameserver/java/net/sf/l2j/gameserver/network/serverpackets/AbstractNpcInfo.java index aa9ed0e..538c15d 100644 --- a/L2jMega_gameserver/java/net/sf/l2j/gameserver/network/serverpackets/AbstractNpcInfo.java +++ b/L2jMega_gameserver/java/net/sf/l2j/gameserver/network/serverpackets/AbstractNpcInfo.java @@ -1,9 +1,12 @@ package net.sf.l2j.gameserver.network.serverpackets; +import java.text.DecimalFormat; + import net.sf.l2j.Config; import net.sf.l2j.gameserver.data.sql.ClanTable; import net.sf.l2j.gameserver.model.WorldObject.PolyType; import net.sf.l2j.gameserver.model.actor.Creature; +import net.sf.l2j.gameserver.model.actor.FakePc; import net.sf.l2j.gameserver.model.actor.Npc; import net.sf.l2j.gameserver.model.actor.Summon; import net.sf.l2j.gameserver.model.actor.instance.GrandBoss; @@ -107,74 +110,202 @@ // if (getClient().getActiveChar() != null && getClient().getActiveChar().isInOlympiadMode() || getClient().getActiveChar().isInObserverMode()) // return; - writeC(0x16); - - writeD(_npc.getObjectId()); - writeD(_idTemplate + 1000000); - writeD(_isAttackable ? 1 : 0); - - writeD(_x); - writeD(_y); - writeD(_z); - writeD(_heading); - - writeD(0x00); - - writeD(_mAtkSpd); - writeD(_pAtkSpd); - writeD(_runSpd); - writeD(_walkSpd); - writeD(_runSpd); - writeD(_walkSpd); - writeD(_runSpd); - writeD(_walkSpd); - writeD(_runSpd); - writeD(_walkSpd); - - writeF(_npc.getStat().getMovementSpeedMultiplier()); - writeF(_npc.getStat().getAttackSpeedMultiplier()); - - writeF(_collisionRadius); - writeF(_collisionHeight); - - writeD(_rhand); - writeD(_chest); - writeD(_lhand); - - writeC(1); // name above char - writeC(_npc.isRunning() ? 1 : 0); - writeC(_npc.isInCombat() ? 1 : 0); - writeC(_npc.isAlikeDead() ? 1 : 0); - writeC(_isSummoned ? 2 : 0); - - writeS(_name); - writeS(_title); - - writeD(0x00); - writeD(0x00); - writeD(0x00); - - writeD(_npc.getAbnormalEffect()); - - writeD(_clanId); - writeD(_clanCrest); - writeD(_allyId); - writeD(_allyCrest); - - writeC(_npc.isFlying() ? 2 : 0); - - if (Config.LIST_NPC_WITH_EFFECT.contains(_npc.getNpcId())) - writeC(0x02); + + FakePc fpc = _npc.getFakePc(); + if (fpc != null) + { + writeC(0x03); + writeD(_x); + writeD(_y); + writeD(_z); + writeD(_heading); + writeD(_npc.getObjectId()); + writeS(fpc.name); // visible name + writeD(fpc.race); + writeD(fpc.sex); + writeD(fpc.classId); + + writeD(0x00); // PAPERDOLL_HAIR + writeD(0x00); // + writeD(fpc.rightHand); // PAPERDOLL_RHAND + writeD(fpc.leftHand); // PAPERDOLL_LHAND + writeD(fpc.gloves); // PAPERDOLL_GLOVES + writeD(fpc.chest); // PAPERDOLL_CHEST + writeD(fpc.legs); // PAPERDOLL_LEGS + writeD(fpc.feet); // PAPERDOLL_FEET + writeD(fpc.hair); // PAPERDOLL_HAIR + writeD(fpc.rightHand); // PAPERDOLL_RHAND + writeD(fpc.hair); // PAPERDOLL_HAIR + writeD(fpc.hair2); // PAPERDOLL_HAIR2 + + write('H', 0, 24); + + writeD(0x00); + writeD(0x00); + + writeD(_mAtkSpd); + writeD(_pAtkSpd); + + writeD(0x00); + writeD(0x00); + + writeD(_runSpd); + writeD(_walkSpd); + writeD(_runSpd); // swim run speed + writeD(_walkSpd); // swim walk speed + writeD(_runSpd); // fly run speed + writeD(_walkSpd); // fly walk speed + writeD(_runSpd); + writeD(_walkSpd); + writeF(_npc.getMovementSpeedMultiplier()); // _activeChar.getProperMultiplier() + writeF(_npc.getAttackSpeedMultiplier()); // _activeChar.getAttackSpeedMultiplier() + + writeF(fpc.radius); + writeF(fpc.height); + + writeD(fpc.hairStyle); + writeD(fpc.hairColor); + writeD(fpc.face); + + if (_npc instanceof Monster) + writeS(fpc.title + " - HP " + new DecimalFormat("#.##").format(100.0 * _npc.getCurrentHp() / _npc.getMaxHp()) + "%"); // visible title + else + writeS(fpc.title); + + writeD(fpc.clanId); // clan id + writeD(fpc.clanCrest); // clan crest id + writeD(fpc.allyId); // ally id + writeD(fpc.allyCrest); // ally crest id + + writeD(0x00); + writeC(0x01); // standing = 1 sitting = 0 + + writeC(_npc.isRunning() ? 1 : 0); // running = 1 walking = 0 + writeC(_npc.isInCombat() ? 1 : 0); + writeC(_npc.isAlikeDead() ? 1 : 0); + + write('C', 0, 3); + + writeH(0x00); // cubic count + + writeC(0x00); // invisible = 1 visible =0 + writeD(0x00); // abnormal effect + writeC(0x00); // isFlying() ? 2 : 0 + writeH(0x00); // getRecomHave(): Blue value for name (0 = white, 255 = pure blue) + + writeD(fpc.classId); + writeD(0x00); // ? + writeD(0x00); // ? + writeC(fpc.enchant); + writeC(0x00); // team circle around feet 1= Blue, 2 = red + + writeD(0x00); // getClanCrestLargeId() + + writeC(0x00); // isNoble(): Symbol on char menu ctrl+I + writeC(fpc.hero); // Hero Aura + + writeC(0x00); // 0x01: Fishing Mode (Cant be undone by setting back to 0) + write('D', 0, 3); + + writeD(fpc.nameColor); + writeD(_heading); + writeD(0x00); // pledge class + writeD(0x00); // pledge type + writeD(fpc.titleColor); + writeD(0x00); // cursed weapon level + } else - writeC(0x00); - - writeF(_collisionRadius); - writeF(_collisionHeight); - - writeD(_enchantEffect); - writeD(_npc.isFlying() ? 1 : 0); + { + writeC(0x16); + + writeD(_npc.getObjectId()); + writeD(_idTemplate + 1000000); + writeD(_isAttackable ? 1 : 0); + + writeD(_x); + writeD(_y); + writeD(_z); + writeD(_heading); + + writeD(0x00); + + writeD(_mAtkSpd); + writeD(_pAtkSpd); + writeD(_runSpd); + writeD(_walkSpd); + writeD(_runSpd); + writeD(_walkSpd); + writeD(_runSpd); + writeD(_walkSpd); + writeD(_runSpd); + writeD(_walkSpd); + + writeF(_npc.getStat().getMovementSpeedMultiplier()); + writeF(_npc.getStat().getAttackSpeedMultiplier()); + + writeF(_collisionRadius); + writeF(_collisionHeight); + + writeD(_rhand); + writeD(_chest); + writeD(_lhand); + + writeC(1); // name above char + writeC(_npc.isRunning() ? 1 : 0); + writeC(_npc.isInCombat() ? 1 : 0); + writeC(_npc.isAlikeDead() ? 1 : 0); + writeC(_isSummoned ? 2 : 0); + + writeS(_name); + writeS(_title); + + writeD(0x00); + writeD(0x00); + writeD(0x00); + + writeD(_npc.getAbnormalEffect()); + + writeD(_clanId); + writeD(_clanCrest); + writeD(_allyId); + writeD(_allyCrest); + + writeC(_npc.isFlying() ? 2 : 0); + + if (Config.LIST_NPC_WITH_EFFECT.contains(_npc.getNpcId())) + writeC(0x02); + else + writeC(0x00); + + writeF(_collisionRadius); + writeF(_collisionHeight); + + writeD(_enchantEffect); + writeD(_npc.isFlying() ? 1 : 0); + } } - } + private void write(char type, int value, int times) + { + for (int i = 0; i < times; i++) + { + switch (type) + { + case 'C': + writeC(value); + break; + case 'D': + writeD(value); + break; + case 'F': + writeF(value); + break; + case 'H': + writeH(value); + break; + } + } + } + } /** * Packet for summons
  22. <?xml version='1.0' encoding='utf-8'?> <!-- Armor S-Grade --> <list maintainEnchantment="true"> <!-- Imperial Crusader Shield --> <item id="1"> <ingredient id="57" count="100000000"/> <production id="6377" count="1" enchant="3"/> </item> </list> E Precisa Adicionar o Mod dependendo da sua revisão Buy Items ++ In GM Shop aCis 356++ ### Eclipse Workspace Patch 1.0 #P aCis_Gameserver Index: java/net/sf/l2j/gameserver/model/multisell/Ingredient.java =================================================================== --- java/net/sf/l2j/gameserver/model/multisell/Ingredient.java (revision 15) +++ java/net/sf/l2j/gameserver/model/multisell/Ingredient.java (working copy) @@ -22,14 +22,14 @@ public Ingredient(StatsSet set) { + this(set.getInteger("id"), set.getInteger("count"), set.getInteger("enchantmentLevel", 0), set.getBool("isTaxIngredient", false), set.getBool("maintainIngredient", false)); - this(set.getInteger("id"), set.getInteger("count"), set.getBool("isTaxIngredient", false), set.getBool("maintainIngredient", false)); } + public Ingredient(int itemId, int itemCount, int enchantmentLevel, boolean isTaxIngredient, boolean maintainIngredient) - public Ingredient(int itemId, int itemCount, boolean isTaxIngredient, boolean maintainIngredient) { _itemId = itemId; _itemCount = itemCount; + _enchantmentLevel = enchantmentLevel; - _isTaxIngredient = isTaxIngredient; _maintainIngredient = maintainIngredient; @@ -42,7 +42,7 @@ */ public Ingredient getCopy() { + return new Ingredient(_itemId, _itemCount, _enchantmentLevel, _isTaxIngredient, _maintainIngredient); - return new Ingredient(_itemId, _itemCount, _isTaxIngredient, _maintainIngredient); } public final int getItemId() Index: java/net/sf/l2j/gameserver/model/multisell/PreparedEntry.java =================================================================== --- java/net/sf/l2j/gameserver/model/multisell/PreparedEntry.java (revision 15) +++ java/net/sf/l2j/gameserver/model/multisell/PreparedEntry.java (working copy) @@ -48,7 +48,7 @@ // now add the adena, if any. adenaAmount += _taxAmount; // do not forget tax if (adenaAmount > 0) + _ingredients.add(new Ingredient(57, adenaAmount, 0, false, false)); - _ingredients.add(new Ingredient(57, adenaAmount, false, false)); // now copy products _products = new ArrayList<>(template.getProducts().size());
  23. -= JRGames =-

    NPC

    Precisa Adicionar o Mod meu amigo.
  24. de qual revisão e este arquivo ? e para que ele serve ?
×
×
  • Criar Novo...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.