- 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..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<DressMe> _entries = new ArrayList<>();
- +
- + 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<DressMe> getEntries()
- + {
- + 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 <admin|announcement|config|crest|cw>");
- - activeChar.sendMessage("Usage : //reload <door|enchant|poly|htm|item|multisell|npc>");
- - activeChar.sendMessage("Usage : //reload <npcwalker|skill|pvpdata|teleport|zone>");
- + activeChar.sendMessage("Usage : //reload <dress|drop|door|enchant|poly|htm|item|multisell|npc>");
- + activeChar.sendMessage("Usage : //reload <npcwalker|skill|pvpdata|teleport|restriction|zone>");
- }
- }
- while (st.hasMoreTokens());
- @@ -217,8 +241,8 @@
- catch (Exception e)
- {
- activeChar.sendMessage("Usage : //reload <admin|announcement|config|crest|cw>");
- - activeChar.sendMessage("Usage : //reload <door|enchant|poly|htm|item|multisell|npc>");
- - activeChar.sendMessage("Usage : //reload <npcwalker|skill|pvpdata|teleport|zone>");
- + activeChar.sendMessage("Usage : //reload <dress|drop|door|enchant|poly|htm|item|multisell|npc>");
- + activeChar.sendMessage("Usage : //reload <npcwalker|skill|pvpdata|teleport|restriction|zone>");
- }
- }
- 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
- <table width=240>
- <tr>
- - <td><combobox width=120 height=21 var="cb" list=admin;announcement;config;crest;cw;door;enchant;poly;htm;item;multisell;npc;npcwalker;skill;pvpdata;teleport;zone;></td>
- + <td><combobox width=120 height=21 var="cb" list=admin;announcement;config;crest;cw;dress;door;drops;enchant;poly;htm;item;multisell;npc;npcwalker;skill;pvpdata;teleport;restriction;zone;></td>
- <td><button value="Reload" action="bypass -h admin_reload $cb" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td>
- </tr>
- </table><br>
- 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 @@
- +<?xml version="1.0" encoding="UTF-8"?>
- +<list>
- + <dressme itemId="9245" chestId="15000" hairId="15001" legsId="0" glovesId="0" feetId="0" duration="1"/>
- + <dressme itemId="9246" chestId="15002" hairId="15003" legsId="0" glovesId="0" feetId="0" duration="1"/>
- + <dressme itemId="9247" chestId="15004" hairId="15005" legsId="0" glovesId="0" feetId="0" duration="1"/>
- + <dressme itemId="9248" chestId="15006" hairId="15007" legsId="0" glovesId="0" feetId="0" duration="1"/>
- + <dressme itemId="9249" chestId="15008" hairId="15009" legsId="0" glovesId="0" feetId="0" duration="1"/>
- + <dressme itemId="9250" chestId="15010" hairId="15011" legsId="0" glovesId="0" feetId="0" duration="1"/>
- + <dressme itemId="9251" chestId="15012" hairId="15013" legsId="0" glovesId="0" feetId="0" duration="1"/>
- + <dressme itemId="9252" chestId="15014" hairId="15015" legsId="0" glovesId="0" feetId="0" duration="1"/>
- + <dressme itemId="9253" chestId="15016" hairId="15017" legsId="0" glovesId="0" feetId="0" duration="1"/>
- + <dressme itemId="9254" chestId="15018" hairId="15019" legsId="0" glovesId="0" feetId="0" duration="1"/>
- + <dressme itemId="9255" chestId="15020" hairId="15021" legsId="0" glovesId="0" feetId="0" duration="1"/>
- + <dressme itemId="9256" chestId="15022" hairId="15023" legsId="0" glovesId="0" feetId="0" duration="1"/>
- + <dressme itemId="9257" chestId="15024" hairId="15025" legsId="0" glovesId="0" feetId="0" duration="1"/>
- + <dressme itemId="9258" chestId="15026" hairId="15027" legsId="0" glovesId="0" feetId="0" duration="1"/>
- + <dressme itemId="9259" chestId="15028" hairId="15029" legsId="0" glovesId="0" feetId="0" duration="1"/>
- + <dressme itemId="9260" chestId="15030" hairId="15031" legsId="0" glovesId="0" feetId="0" duration="1"/>
- + <dressme itemId="9261" chestId="15032" hairId="15033" legsId="0" glovesId="0" feetId="0" duration="1"/>
- + <dressme itemId="9262" chestId="15034" hairId="15035" legsId="0" glovesId="0" feetId="0" duration="1"/>
- + <dressme itemId="9263" chestId="15036" hairId="15037" legsId="0" glovesId="0" feetId="0" duration="1"/>
- + <dressme itemId="9264" chestId="15038" hairId="15039" legsId="0" glovesId="0" feetId="0" duration="1"/>
- + <dressme itemId="9265" chestId="15040" hairId="15041" legsId="0" glovesId="0" feetId="0" duration="1"/>
- + <dressme itemId="9266" chestId="15042" hairId="15043" legsId="0" glovesId="0" feetId="0" duration="1"/>
- + <dressme itemId="9267" chestId="15044" hairId="15045" legsId="0" glovesId="0" feetId="0" duration="1"/>
- + <dressme itemId="9268" chestId="15046" hairId="15047" legsId="0" glovesId="0" feetId="0" duration="1"/>
- + <dressme itemId="9269" chestId="15048" hairId="15049" legsId="0" glovesId="0" feetId="0" duration="1"/>
- + <dressme itemId="9270" chestId="15050" hairId="15051" legsId="0" glovesId="0" feetId="0" duration="1"/>
- + <dressme itemId="9271" chestId="15052" hairId="15053" legsId="0" glovesId="0" feetId="0" duration="1"/>
- + <dressme itemId="9272" chestId="15054" hairId="15055" legsId="0" glovesId="0" feetId="0" duration="1"/>
- + <dressme itemId="9273" chestId="15056" hairId="15057" legsId="0" glovesId="0" feetId="0" duration="1"/>
- + <dressme itemId="9274" chestId="15058" hairId="15059" legsId="0" glovesId="0" feetId="0" duration="1"/>
- + <dressme itemId="9275" chestId="6408" hairId="0" legsId="0" glovesId="0" feetId="0" duration="1"/>
- +</list>