Facebook
From Speedy Marmoset, 3 Years ago, written in Plain Text.
This paste is a reply to Skin aCis from Williams - go back
Embed
Viewing differences between Skin aCis and Re: Skin aCis
\ 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 _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 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 @@
+
+
+        
+                 
+         

+
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;
+        }
+