- \ No newline at end of file
- diff --git a/aCis_gameserver/java/net/sf/l2j/gameserver/data/xml/DressMeData.java b/aCis_gameserver/java/net/sf/l2j/gameserver/data/xml/DressMeData.java
- new file mode 100644
- index 0000000..89a3b70
- --- /dev/null
- +++ b/aCis_gameserver/java/net/sf/l2j/gameserver/data/xml/DressMeData.java
- @@ -0,0 +1,70 @@
- +package net.sf.l2j.gameserver.data.xml;
- +
- +import java.nio.file.Path;
- +import java.util.Collection;
- +import java.util.HashMap;
- +import java.util.Map;
- +
- +import net.sf.l2j.commons.data.xml.IXmlReader;
- +import net.sf.l2j.commons.util.StatsSet;
- +
- +import net.sf.l2j.gameserver.model.DressMe;
- +import org.w3c.dom.Document;
- +
- +/**
- + * @author Williams
- + *
- + */
- +public class DressMeData implements IXmlReader
- +{
- + private final Map<Integer, DressMe> _dress = new HashMap<>();
- +
- + public DressMeData()
- + {
- + load();
- + }
- +
- + public void reload()
- + {
- + _dress.clear();
- + load();
- + }
- +
- + @Override
- + public void load()
- + {
- + parseFile("./data/xml/dressme.xml");
- + LOGGER.info("Loaded {} dressme templates.", _dress.size());
- + }
- +
- + @Override
- + public void parseDocument(Document doc, Path path)
- + {
- + forEach(doc, "list", listNode -> forEach(listNode, "dressme", node ->
- + {
- + final StatsSet set = parseAttributes(node);
- + forEach(node, "appearance", setNode -> set.putAll(parseAttributes(setNode)));
- + _dress.put(set.getInteger("itemId"), new DressMe(set));
- + }));
- + }
- +
- + public DressMe getItemId(int itemId)
- + {
- + return _dress.get(itemId);
- + }
- +
- + public Collection<DressMe> getDressme()
- + {
- + return _dress.values();
- + }
- +
- + public static DressMeData getInstance()
- + {
- + return SingletonHolder._instance;
- + }
- +
- + private static class SingletonHolder
- + {
- + protected static final DressMeData _instance = new DressMeData();
- + }
- +}
- diff --git a/aCis_gameserver/java/net/sf/l2j/gameserver/model/DressMe.java b/aCis_gameserver/java/net/sf/l2j/gameserver/model/DressMe.java
- new file mode 100644
- index 0000000..217ecc9
- --- /dev/null
- +++ b/aCis_gameserver/java/net/sf/l2j/gameserver/model/DressMe.java
- @@ -0,0 +1,50 @@
- +package net.sf.l2j.gameserver.model;
- +
- +import net.sf.l2j.commons.util.StatsSet;
- +
- +/**
- + * @author Williams
- + *
- + */
- +public class DressMe
- +{
- + private int _hairId;
- + private int _chestId;
- + private int _legsId;
- + private int _glovesId;
- + private int _feetId;
- +
- + public DressMe(StatsSet set)
- + {
- + _hairId = set.getInteger("hairId", 0);
- + _chestId = set.getInteger("chestId", 0);
- + _legsId = set.getInteger("legsId", 0);
- + _glovesId = set.getInteger("glovesId", 0);
- + _feetId = set.getInteger("feetId", 0);
- + }
- +
- + public int getHairId()
- + {
- + return _hairId;
- + }
- +
- + public int getChestId()
- + {
- + return _chestId;
- + }
- +
- + public int getLegsId()
- + {
- + return _legsId;
- + }
- +
- + public int getGlovesId()
- + {
- + return _glovesId;
- + }
- +
- + public int getFeetId()
- + {
- + return _feetId;
- + }
- +}
- \ No newline at end of file
- diff --git a/aCis_datapack/data/xml/dressme.xml b/aCis_datapack/data/xml/dressme.xml
- new file mode 100644
- index 0000000..72e4b91
- --- /dev/null
- +++ b/aCis_datapack/data/xml/dressme.xml
- @@ -0,0 +1,6 @@
- +<?xml version="1.0" encoding="UTF-8"?>
- +<list>
- + <dressme itemId="3470">
- + <appearance hairId="0" chestId="9210" legsId="0" glovesId="6380" feetId="6381" />
- + </dressme>
- +</list>
- diff --git a/aCis_gameserver/java/net/sf/l2j/gameserver/handler/itemhandlers/Skins.java b/aCis_gameserver/java/net/sf/l2j/gameserver/handler/itemhandlers/Skins.java
- new file mode 100644
- index 0000000..326b075
- --- /dev/null
- +++ b/aCis_gameserver/java/net/sf/l2j/gameserver/handler/itemhandlers/Skins.java
- @@ -0,0 +1,34 @@
- +package net.sf.l2j.gameserver.handler.itemhandlers;
- +
- +import net.sf.l2j.gameserver.data.xml.DressMeData;
- +import net.sf.l2j.gameserver.handler.IItemHandler;
- +import net.sf.l2j.gameserver.model.DressMe;
- +import net.sf.l2j.gameserver.model.actor.Playable;
- +import net.sf.l2j.gameserver.model.actor.Player;
- +import net.sf.l2j.gameserver.model.item.instance.ItemInstance;
- +import net.sf.l2j.gameserver.network.serverpackets.MagicSkillUse;
- +
- +/**
- + * @author Williams
- + *
- + */
- +public class Skins implements IItemHandler
- +{
- + @Override
- + public void useItem(Playable playable, ItemInstance item, boolean forceUse)
- + {
- + if (!(playable instanceof Player))
- + return;
- +
- + final DressMe dress = DressMeData.getInstance().getItemId(item.getItemId());
- + if (dress == null)
- + return;
- +
- + final Player player = (Player) playable;
- + player.setDress(true);
- + player.broadcastPacket(new MagicSkillUse(player, player, 1036, 1, 4000, 0));
- + dress.getChestId();
- + dress.getHairId();
- + player.broadcastUserInfo();
- + }
- +}
- diff --git a/aCis_gameserver/java/net/sf/l2j/gameserver/handler/ItemHandler.java b/aCis_gameserver/java/net/sf/l2j/gameserver/handler/ItemHandler.java
- index 36afaf0..7b6ee78 100644
- --- a/aCis_gameserver/java/net/sf/l2j/gameserver/handler/ItemHandler.java
- +++ b/aCis_gameserver/java/net/sf/l2j/gameserver/handler/ItemHandler.java
- @@ -34,6 +34,7 @@
- import net.sf.l2j.gameserver.handler.itemhandlers.ScrollOfResurrection;
- import net.sf.l2j.gameserver.handler.itemhandlers.SeedHandler;
- import net.sf.l2j.gameserver.handler.itemhandlers.SevenSignsRecord;
- +import net.sf.l2j.gameserver.handler.itemhandlers.Skins;
- import net.sf.l2j.gameserver.handler.itemhandlers.SoulCrystals;
- import net.sf.l2j.gameserver.handler.itemhandlers.SoulShots;
- import net.sf.l2j.gameserver.handler.itemhandlers.SpecialXMas;
- @@ -82,6 +83,7 @@
- registerHandler(new SevenSignsRecord());
- registerHandler(new SoulShots());
- registerHandler(new SpecialXMas());
- + registerHandler(new Skins());
- registerHandler(new SoulCrystals());
- registerHandler(new SpiritShot());
- registerHandler(new SummonItems());
- diff --git a/aCis_gameserver/java/net/sf/l2j/gameserver/network/serverpackets/UserInfo.java b/aCis_gameserver/java/net/sf/l2j/gameserver/network/serverpackets/UserInfo.java
- index 4be8789..dea5360 100644
- --- a/aCis_gameserver/java/net/sf/l2j/gameserver/network/serverpackets/UserInfo.java
- +++ b/aCis_gameserver/java/net/sf/l2j/gameserver/network/serverpackets/UserInfo.java
- @@ -2,8 +2,10 @@
- import net.sf.l2j.Config;
- import net.sf.l2j.gameserver.data.manager.CursedWeaponManager;
- +import net.sf.l2j.gameserver.data.xml.DressMeData;
- import net.sf.l2j.gameserver.enums.PolyType;
- import net.sf.l2j.gameserver.enums.skills.AbnormalEffect;
- +import net.sf.l2j.gameserver.model.DressMe;
- import net.sf.l2j.gameserver.model.actor.Player;
- import net.sf.l2j.gameserver.model.actor.Summon;
- import net.sf.l2j.gameserver.model.itemcontainer.Inventory;
- @@ -55,41 +57,44 @@
- writeD(_player.getMaxLoad());
- writeD(_player.getActiveWeaponItem() != null ? 40 : 20);
- - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HAIRALL));
- - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_REAR));
- - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEAR));
- - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_NECK));
- - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RFINGER));
- - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LFINGER));
- - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HEAD));
- - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RHAND));
- - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LHAND));
- - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_GLOVES));
- - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_CHEST));
- - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEGS));
- - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_FEET));
- - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_BACK));
- - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RHAND));
- - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HAIR));
- - writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_FACE));
- -
- - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HAIRALL));
- - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_REAR));
- - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEAR));
- - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_NECK));
- - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RFINGER));
- - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LFINGER));
- - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HEAD));
- - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND));
- - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LHAND));
- - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_GLOVES));
- - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_CHEST));
- - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEGS));
- - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FEET));
- - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_BACK));
- - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND));
- - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HAIR));
- - writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FACE));
- + for (DressMe dress : DressMeData.getInstance().getDressme())
- + {
- + writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HAIRALL));
- + writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_REAR));
- + writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEAR));
- + writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_NECK));
- + writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RFINGER));
- + writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LFINGER));
- + writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HEAD));
- + writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RHAND));
- + writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LHAND));
- + writeD(_player.isDress() ? dress.getGlovesId() : _player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_GLOVES));
- + writeD(_player.isDress() ? dress.getChestId() : _player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_CHEST));
- + writeD(_player.isDress() ? dress.getLegsId() : _player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEGS));
- + writeD(_player.isDress() ? dress.getFeetId() : _player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_FEET));
- + writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_BACK));
- + writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RHAND));
- + writeD(_player.isDress() ? dress.getHairId() : _player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HAIR));
- + writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_FACE));
- +
- + writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HAIRALL));
- + writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_REAR));
- + writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEAR));
- + writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_NECK));
- + writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RFINGER));
- + writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LFINGER));
- + writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HEAD));
- + writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND));
- + writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LHAND));
- + writeD(_player.isDress() ? dress.getGlovesId() : _player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_GLOVES));
- + writeD(_player.isDress() ? dress.getChestId() : _player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_CHEST));
- + writeD(_player.isDress() ? dress.getLegsId() : _player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEGS));
- + writeD(_player.isDress() ? dress.getFeetId() : _player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FEET));
- + writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_BACK));
- + writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND));
- + writeD(_player.isDress() ? dress.getHairId() : _player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HAIR));
- + writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FACE));
- + }
- writeH(0x00);
- writeH(0x00);
- diff --git a/aCis_gameserver/java/net/sf/l2j/gameserver/network/serverpackets/CharInfo.java b/aCis_gameserver/java/net/sf/l2j/gameserver/network/serverpackets/CharInfo.java
- index 6212b93..e77b87a 100644
- --- a/aCis_gameserver/java/net/sf/l2j/gameserver/network/serverpackets/CharInfo.java
- +++ b/aCis_gameserver/java/net/sf/l2j/gameserver/network/serverpackets/CharInfo.java
- @@ -2,7 +2,9 @@
- import net.sf.l2j.Config;
- import net.sf.l2j.gameserver.data.manager.CursedWeaponManager;
- +import net.sf.l2j.gameserver.data.xml.DressMeData;
- import net.sf.l2j.gameserver.enums.skills.AbnormalEffect;
- +import net.sf.l2j.gameserver.model.DressMe;
- import net.sf.l2j.gameserver.model.actor.Player;
- import net.sf.l2j.gameserver.model.actor.Summon;
- import net.sf.l2j.gameserver.model.itemcontainer.Inventory;
- @@ -29,7 +31,7 @@
- if (tmp != null && tmp.isGM())
- canSeeInvis = true;
- }
- -
- +
- writeC(0x03);
- writeD(_player.getX());
- writeD(_player.getY());
- @@ -41,18 +43,21 @@
- writeD(_player.getAppearance().getSex().ordinal());
- writeD((_player.getClassIndex() == 0) ? _player.getClassId().getId() : _player.getBaseClass());
- - writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_HAIRALL));
- - writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_HEAD));
- - writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_RHAND));
- - writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_LHAND));
- - writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_GLOVES));
- - writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_CHEST));
- - writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_LEGS));
- - writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_FEET));
- - writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_BACK));
- - writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_RHAND));
- - writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_HAIR));
- - writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_FACE));
- + for (DressMe dress : DressMeData.getInstance().getDressme())
- + {
- + writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_HAIRALL));
- + writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_HEAD));
- + writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_RHAND));
- + writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_LHAND));
- + writeD(_player.isDress() ? dress.getGlovesId() : _inv.getPaperdollItemId(Inventory.PAPERDOLL_GLOVES));
- + writeD(_player.isDress() ? dress.getChestId() : _inv.getPaperdollItemId(Inventory.PAPERDOLL_CHEST));
- + writeD(_player.isDress() ? dress.getLegsId() : _inv.getPaperdollItemId(Inventory.PAPERDOLL_LEGS));
- + writeD(_player.isDress() ? dress.getFeetId() : _inv.getPaperdollItemId(Inventory.PAPERDOLL_FEET));
- + writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_BACK));
- + writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_RHAND));
- + writeD(_player.isDress() ? dress.getHairId() : _inv.getPaperdollItemId(Inventory.PAPERDOLL_HAIR));
- + writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_FACE));
- + }
- writeH(0x00);
- writeH(0x00);
- diff --git a/aCis_gameserver/java/net/sf/l2j/gameserver/GameServer.java b/aCis_gameserver/java/net/sf/l2j/gameserver/GameServer.java
- index 87b25b3..3961e1a 100644
- --- a/aCis_gameserver/java/net/sf/l2j/gameserver/GameServer.java
- +++ b/aCis_gameserver/java/net/sf/l2j/gameserver/GameServer.java
- @@ -60,6 +60,7 @@
- import net.sf.l2j.gameserver.data.xml.AugmentationData;
- import net.sf.l2j.gameserver.data.xml.ClassBalanceData;
- import net.sf.l2j.gameserver.data.xml.DoorData;
- +import net.sf.l2j.gameserver.data.xml.DressMeData;
- import net.sf.l2j.gameserver.data.xml.DropMonstersData;
- import net.sf.l2j.gameserver.data.xml.EnchantData;
- import net.sf.l2j.gameserver.data.xml.FishData;
- @@ -205,6 +206,7 @@
- RaidPointManager.getInstance();
- SpreeKillsData.getInstance();
- ItemRestrictionData.getInstance();
- + DressMeData.getInstance();
- StringUtil.printSection("Community server");
- if (Config.ENABLE_COMMUNITY_BOARD) // Forums has to be loaded before clan data
- diff --git a/aCis_gameserver/java/net/sf/l2j/gameserver/model/actor/Player.java b/aCis_gameserver/java/net/sf/l2j/gameserver/model/actor/Player.java
- index 7ae7a5a..c675e89 100644
- --- a/aCis_gameserver/java/net/sf/l2j/gameserver/model/actor/Player.java
- +++ b/aCis_gameserver/java/net/sf/l2j/gameserver/model/actor/Player.java
- @@ -420,6 +420,7 @@
- private boolean _isNoble;
- private boolean _isHero;
- private boolean _isVip;
- + private boolean _isDress;
- private boolean _isEquip;
- private boolean _isWepEquip;
- @@ -7510,6 +7510,16 @@
- sendSkillList();
- }
- + public boolean isDress()
- + {
- + return _isDress;
- + }
- +
- + public void setDress(boolean val)
- + {
- + _isDress = val;
- + }
- +