index 4be8789..0c79f70 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
@@ -4,6 +4,7 @@
import net.sf.l2j.gameserver.data.manager.CursedWeaponManager;
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,6 +56,7 @@
writeD(_player.getMaxLoad());
writeD(_player.getActiveWeaponItem() != null ? 40 : 20);
+ final DressMe dress = _player.getDress();
writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HAIRALL));
writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_REAR));
writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEAR));
@@ -64,13 +66,13 @@
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(dress != null ? dress.getGlovesId() : _player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_GLOVES));
+ writeD(dress != null ? dress.getChestId() : _player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_CHEST));
+ writeD(dress != null ? dress.getLegsId() : _player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEGS));
+ writeD(dress != null ? dress.getFeetId() : _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(dress != null ? dress.getHairId() : _player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HAIR));
writeD(_player.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_FACE));
writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HAIRALL));
@@ -82,13 +84,13 @@
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(dress != null ? dress.getGlovesId() : _player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_GLOVES));
+ writeD(dress != null ? dress.getChestId() : _player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_CHEST));
+ writeD(dress != null ? dress.getLegsId() : _player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEGS));
+ writeD(dress != null ? dress.getFeetId() : _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(dress != null ? dress.getHairId() : _player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HAIR));
writeD(_player.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FACE));
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..b81b28a 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
@@ -3,6 +3,7 @@
import net.sf.l2j.Config;
import net.sf.l2j.gameserver.data.manager.CursedWeaponManager;
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,29 +30,30 @@
if (tmp != null && tmp.isGM())
canSeeInvis = true;
}
writeD((_player.getClassIndex() == 0) ? _player.getClassId().getId() : _player.getBaseClass());
+ final DressMe dress = _player.getDress();
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(dress != null ? dress.getGlovesId() : _inv.getPaperdollItemId(Inventory.PAPERDOLL_GLOVES));
+ writeD(dress != null ? dress.getChestId() : _inv.getPaperdollItemId(Inventory.PAPERDOLL_CHEST));
+ writeD(dress != null ? dress.getLegsId() : _inv.getPaperdollItemId(Inventory.PAPERDOLL_LEGS));
+ writeD(dress != null ? dress.getFeetId() : _inv.getPaperdollItemId(Inventory.PAPERDOLL_FEET));
writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_BACK));
writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_RHAND));
- writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_HAIR));
+ writeD(dress != null ? dress.getHairId() : _inv.getPaperdollItemId(Inventory.PAPERDOLL_HAIR));
writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_FACE));
writeH(0x00);
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..98d8580
--- /dev/null
+++ b/aCis_gameserver/java/net/sf/l2j/gameserver/handler/itemhandlers/Skins.java
@@ -0,0 +1,31 @@
+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 and Stinkymadness
+ */
+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(dress);
+ player.broadcastPacket(new MagicSkillUse(player, player, 1036, 1, 4000, 0));
+ 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 b1df7fd..7b6ee78 100644
--- a/aCis_gameserver/java/net/sf/l2j/gameserver/handler/ItemHandler.java
+++ b/aCis_gameserver/java/net/sf/l2j/gameserver/handler/ItemHandler.java
@@ -28,11 +28,13 @@
import net.sf.l2j.gameserver.handler.itemhandlers.NobleCoin;
import net.sf.l2j.gameserver.handler.itemhandlers.PaganKeys;
import net.sf.l2j.gameserver.handler.itemhandlers.PetFood;
import net.sf.l2j.gameserver.handler.itemhandlers.Recipes;
import net.sf.l2j.gameserver.handler.itemhandlers.RollingDice;
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;
@@ -80,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/data/xml/DressMeData.java b/aCis_gameserver/java/net/sf/l2j/gameserver/data/xml/DressMeData.java
new file mode 100644
index 0000000..178bb63
--- /dev/null
+++ b/aCis_gameserver/java/net/sf/l2j/gameserver/data/xml/DressMeData.java
@@ -0,0 +1,63 @@
+package net.sf.l2j.gameserver.data.xml;
+
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.List;
+
+import net.sf.l2j.commons.data.xml.IXmlReader;
+
+import net.sf.l2j.gameserver.model.DressMe;
+
+import org.w3c.dom.Document;
+
+/**
+ * @author Williams and Stinkymadness
+ */
+public class DressMeData implements IXmlReader
+{
+ private final List
+
+ public DressMeData()
+ {
+ load();
+ }
+
+ public void reload()
+ {
+ _entries.clear();
+ load();
+ }
+
+ @Override
+ public void load()
+ {
+ parseFile("./data/xml/dressme.xml");
+ LOGGER.info("Loaded {} dressme templates.", _entries.size());
+ }
+
+ @Override
+ public void parseDocument(Document doc, Path path)
+ {
+ forEach(doc, "list", listNode -> forEach(listNode, "dressme", dressNode -> _entries.add(new DressMe(parseAttributes(dressNode)))));
+ }
+
+ public DressMe getItemId(int itemId)
+ {
+ return _entries.stream().filter(x -> x.getItemId() == itemId).findFirst().orElse(null);
+ }
+
+ public List
+ {
+ return _entries;
+ }
+
+ 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/handler/admincommandhandlers/AdminAdmin.java b/aCis_gameserver/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminAdmin.java
index a9e88c0..64a30e8 100644
--- a/aCis_gameserver/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminAdmin.java
+++ b/aCis_gameserver/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminAdmin.java
@@ -13,8 +13,12 @@
import net.sf.l2j.gameserver.data.manager.ZoneManager;
import net.sf.l2j.gameserver.data.xml.AdminData;
import net.sf.l2j.gameserver.data.xml.AnnouncementData;
import net.sf.l2j.gameserver.data.xml.DoorData;
+import net.sf.l2j.gameserver.data.xml.DressMeData;
import net.sf.l2j.gameserver.data.xml.EnchantData;
+import net.sf.l2j.gameserver.data.xml.ItemRestrictionData;
import net.sf.l2j.gameserver.data.xml.MultisellData;
import net.sf.l2j.gameserver.data.xml.NpcData;
import net.sf.l2j.gameserver.data.xml.PolymorphData;
@@ -145,6 +154,16 @@
CursedWeaponManager.getInstance().reload();
activeChar.sendMessage("Cursed weapons have been reloaded.");
}
+ else if (type.startsWith("dress"))
+ {
+ DressMeData.getInstance().reload();
+ activeChar.sendMessage("Dress me have been reloaded.");
+ }
@@ -208,8 +232,8 @@
else
{
activeChar.sendMessage("Usage : //reload
- activeChar.sendMessage("Usage : //reload
- activeChar.sendMessage("Usage : //reload
+ activeChar.sendMessage("Usage : //reload
+ activeChar.sendMessage("Usage : //reload
}
}
while (st.hasMoreTokens());
@@ -217,8 +241,8 @@
catch (Exception e)
{
activeChar.sendMessage("Usage : //reload
- activeChar.sendMessage("Usage : //reload
- activeChar.sendMessage("Usage : //reload
+ activeChar.sendMessage("Usage : //reload
+ activeChar.sendMessage("Usage : //reload
}
}
return true;
diff --git a/aCis_datapack/data/html/admin/server_menu.htm b/aCis_datapack/data/html/admin/server_menu.htm
index a8a32e4..68a1f06 100644
--- a/aCis_datapack/data/html/admin/server_menu.htm
+++ b/aCis_datapack/data/html/admin/server_menu.htm
@@ -18,7 +18,7 @@
Reload
diff --git a/aCis_datapack/data/xml/dressme.xml b/aCis_datapack/data/xml/dressme.xml
new file mode 100644
index 0000000..06139d2
--- /dev/null
+++ b/aCis_datapack/data/xml/dressme.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+