Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save Williams0ff/eb366d8b4e3e2240017925a2efc0e790 to your computer and use it in GitHub Desktop.
Save Williams0ff/eb366d8b4e3e2240017925a2efc0e790 to your computer and use it in GitHub Desktop.
Skin Code
diff --git a/L2jOne_C6_Interlude/data/html/admin/server_menu.htm b/L2jOne_C6_Interlude/data/html/admin/server_menu.htm
index 1814604..f289e41 100644
--- a/L2jOne_C6_Interlude/data/html/admin/server_menu.htm
+++ b/L2jOne_C6_Interlude/data/html/admin/server_menu.htm
@@ -18,7 +18,7 @@
Reload
<table width=240>
<tr>
- <td><combobox width=160 height=21 var="cb" list=admin;announcement;buylist;config;crest;cw;door;htm;item;multisell;npc;npcwalker;script;skill;teleport;zone;></td>
+ <td><combobox width=160 height=21 var="cb" list=admin;announcement;buylist;config;crest;cw;door;dress;htm;item;multisell;npc;npcwalker;script;skill;teleport;zone;></td>
<td><button value="Reload" action="bypass -h admin_reload $cb" width=65 height=19 back="L2UI_ch3.smallbutton2_over" fore="L2UI_ch3.smallbutton2"></td>
</tr>
</table><br>
diff --git a/L2jOne_C6_Interlude/data/xml/dressme.xml b/L2jOne_C6_Interlude/data/xml/dressme.xml
new file mode 100644
index 0000000..09dc764
--- /dev/null
+++ b/L2jOne_C6_Interlude/data/xml/dressme.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<list>
+ <dressme itemId="9999" chest="6373" legs="6374" hair="0" gloves="6375" feet="6376"/>
+</list>
\ No newline at end of file
diff --git a/L2jOne_C6_Interlude/java/net/sf/l2j/gameserver/GameServer.java b/L2jOne_C6_Interlude/java/net/sf/l2j/gameserver/GameServer.java
index 83b57fe..57459d6 100644
--- a/L2jOne_C6_Interlude/java/net/sf/l2j/gameserver/GameServer.java
+++ b/L2jOne_C6_Interlude/java/net/sf/l2j/gameserver/GameServer.java
@@ -107,6 +107,7 @@
PetitionManager.getInstance();
StringUtil.printSection("Characters");
+ DressMeData.getInstance();
PlayerData.getInstance();
PlayerInfoTable.getInstance();
PlayerLevelData.getInstance();
diff --git a/L2jOne_C6_Interlude/java/net/sf/l2j/gameserver/data/xml/DressMeData.java b/L2jOne_C6_Interlude/java/net/sf/l2j/gameserver/data/xml/DressMeData.java
new file mode 100644
index 0000000..33dc094
--- /dev/null
+++ b/L2jOne_C6_Interlude/java/net/sf/l2j/gameserver/data/xml/DressMeData.java
@@ -0,0 +1,67 @@
+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;
+import org.w3c.dom.NamedNodeMap;
+
+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", enchantNode ->
+ {
+ NamedNodeMap attrs = enchantNode.getAttributes();
+
+ final int itemId = Integer.valueOf(attrs.getNamedItem("itemId").getNodeValue());
+ final int chest = Integer.valueOf(attrs.getNamedItem("chest").getNodeValue());
+ final int legs = Integer.valueOf(attrs.getNamedItem("legs").getNodeValue());
+ final int hair = Integer.valueOf(attrs.getNamedItem("hair").getNodeValue());
+ final int gloves = Integer.valueOf(attrs.getNamedItem("gloves").getNodeValue());
+ final int feet = Integer.valueOf(attrs.getNamedItem("feet").getNodeValue());
+
+ _entries.add(new DressMe(itemId, chest, legs, hair, gloves, feet));
+ }));
+ }
+
+ public DressMe getItemId(int itemId)
+ {
+ return _entries.stream().filter(x -> x.getItemId() == itemId).findFirst().orElse(null);
+ }
+
+ public static DressMeData getInstance()
+ {
+ return SingletonHolder.INSTANCE;
+ }
+
+ private static class SingletonHolder
+ {
+ protected static final DressMeData INSTANCE = new DressMeData();
+ }
+}
\ No newline at end of file
diff --git a/L2jOne_C6_Interlude/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminReload.java b/L2jOne_C6_Interlude/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminReload.java
index 229e1c3..af834dc 100644
--- a/L2jOne_C6_Interlude/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminReload.java
+++ b/L2jOne_C6_Interlude/java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminReload.java
@@ -12,6 +12,7 @@
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.InstantTeleportData;
import net.sf.l2j.gameserver.data.xml.ItemData;
import net.sf.l2j.gameserver.data.xml.MultisellData;
@@ -75,6 +76,11 @@
DoorData.getInstance().reload();
player.sendMessage("Doors instance has been reloaded.");
}
+ else if (type.startsWith("dress"))
+ {
+ DressMeData.getInstance().reload();
+ player.sendMessage("Dress me have been reloaded.");
+ }
else if (type.startsWith("htm"))
{
HtmCache.getInstance().reload();
@@ -136,7 +142,7 @@
public void sendUsage(Player player)
{
player.sendMessage("Usage : //reload <admin|announcement|buylist|config>");
- player.sendMessage("Usage : //reload <crest|cw|door|htm|item|multisell|npc>");
+ player.sendMessage("Usage : //reload <crest|cw|door|dress|htm|item|multisell|npc>");
player.sendMessage("Usage : //reload <npcwalker|script|skill|teleport|zone>");
}
diff --git a/L2jOne_C6_Interlude/java/net/sf/l2j/gameserver/handler/itemhandlers/Skins.java b/L2jOne_C6_Interlude/java/net/sf/l2j/gameserver/handler/itemhandlers/Skins.java
new file mode 100644
index 0000000..242db16
--- /dev/null
+++ b/L2jOne_C6_Interlude/java/net/sf/l2j/gameserver/handler/itemhandlers/Skins.java
@@ -0,0 +1,28 @@
+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;
+
+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();
+ }
+}
\ No newline at end of file
diff --git a/L2jOne_C6_Interlude/java/net/sf/l2j/gameserver/model/DressMe.java b/L2jOne_C6_Interlude/java/net/sf/l2j/gameserver/model/DressMe.java
new file mode 100644
index 0000000..e1387ff
--- /dev/null
+++ b/L2jOne_C6_Interlude/java/net/sf/l2j/gameserver/model/DressMe.java
@@ -0,0 +1,51 @@
+package net.sf.l2j.gameserver.model;
+
+public class DressMe
+{
+ private final int _itemId;
+ private final int _hair;
+ private final int _chest;
+ private final int _legs;
+ private final int _gloves;
+ private final int _feet;
+
+ public DressMe(int itemId, int chest, int legs, int hair, int gloves, int feet)
+ {
+ _itemId = itemId;
+ _chest = chest;
+ _legs = legs;
+ _hair = hair;
+ _gloves = gloves;
+ _feet = feet;
+ }
+
+ public final int getItemId()
+ {
+ return _itemId;
+ }
+
+ public int getChest()
+ {
+ return _chest;
+ }
+
+ public int getLegs()
+ {
+ return _legs;
+ }
+
+ public int getHair()
+ {
+ return _hair;
+ }
+
+ public int getGloves()
+ {
+ return _gloves;
+ }
+
+ public int getFeet()
+ {
+ return _feet;
+ }
+}
\ No newline at end of file
diff --git a/L2jOne_C6_Interlude/java/net/sf/l2j/gameserver/model/actor/Player.java b/L2jOne_C6_Interlude/java/net/sf/l2j/gameserver/model/actor/Player.java
index 37c0a0e..48e009a 100644
--- a/L2jOne_C6_Interlude/java/net/sf/l2j/gameserver/model/actor/Player.java
+++ b/L2jOne_C6_Interlude/java/net/sf/l2j/gameserver/model/actor/Player.java
@@ -88,9 +89,11 @@
import net.sf.l2j.gameserver.handler.ItemHandler;
import net.sf.l2j.gameserver.handler.skillhandlers.SummonFriend;
import net.sf.l2j.gameserver.model.AccessLevel;
+import net.sf.l2j.gameserver.model.DressMe;
import net.sf.l2j.gameserver.model.PetDataEntry;
import net.sf.l2j.gameserver.model.World;
import net.sf.l2j.gameserver.model.WorldObject;
@@ -327,6 +319,8 @@
private Boat _boat;
private final SpawnLocation _boatPosition = new SpawnLocation(0, 0, 0, 0);
+ private DressMe _dress;
+
private boolean _canFeed;
protected PetTemplate _petTemplate;
private PetDataEntry _petData;
@@ -4084,6 +4035,16 @@
{
return _canFeed && getCurrentFeed() < _petData.getMaxMeal() * state;
}
+
+ public DressMe getDress()
+ {
+ return _dress;
+ }
+
+ public void setDress(DressMe dress)
+ {
+ _dress = dress;
+ }
public void setUptime(long time)
{
\ No newline at end of file
diff --git a/L2jOne_C6_Interlude/java/net/sf/l2j/gameserver/network/serverpackets/CharInfo.java b/L2jOne_C6_Interlude/java/net/sf/l2j/gameserver/network/serverpackets/CharInfo.java
index fb0b4af..5bf92b9 100644
--- a/L2jOne_C6_Interlude/java/net/sf/l2j/gameserver/network/serverpackets/CharInfo.java
+++ b/L2jOne_C6_Interlude/java/net/sf/l2j/gameserver/network/serverpackets/CharInfo.java
@@ -5,8 +5,10 @@
import net.sf.l2j.gameserver.enums.Paperdoll;
import net.sf.l2j.gameserver.enums.TeamType;
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.actor.ai.type.BootAi;
import net.sf.l2j.gameserver.model.actor.instance.Cubic;
public class CharInfo extends L2GameServerPacket
@@ -41,17 +43,18 @@
writeD(_player.getAppearance().getSex().ordinal());
writeD((_player.getClassIndex() == 0) ? _player.getClassId().getId() : _player.getBaseClass());
+ final DressMe dress = _player.getDress();
writeD(_player.getInventory().getItemIdFrom(Paperdoll.HAIRALL));
writeD(_player.getInventory().getItemIdFrom(Paperdoll.HEAD));
writeD(_player.getInventory().getItemIdFrom(Paperdoll.RHAND));
writeD(_player.getInventory().getItemIdFrom(Paperdoll.LHAND));
- writeD(_player.getInventory().getItemIdFrom(Paperdoll.GLOVES));
- writeD(_player.getInventory().getItemIdFrom(Paperdoll.CHEST));
- writeD(_player.getInventory().getItemIdFrom(Paperdoll.LEGS));
- writeD(_player.getInventory().getItemIdFrom(Paperdoll.FEET));
+ writeD(dress != null ? dress.getGloves() : _player.getInventory().getItemIdFrom(Paperdoll.GLOVES));
+ writeD(dress != null ? dress.getChest() : _player.getInventory().getItemIdFrom(Paperdoll.CHEST));
+ writeD(dress != null ? dress.getLegs() : _player.getInventory().getItemIdFrom(Paperdoll.LEGS));
+ writeD(dress != null ? dress.getFeet() : _player.getInventory().getItemIdFrom(Paperdoll.FEET));
writeD(_player.getInventory().getItemIdFrom(Paperdoll.CLOAK));
writeD(_player.getInventory().getItemIdFrom(Paperdoll.RHAND));
- writeD(_player.getInventory().getItemIdFrom(Paperdoll.HAIR));
+ writeD(dress != null ? dress.getHair() : _player.getInventory().getItemIdFrom(Paperdoll.HAIR));
writeD(_player.getInventory().getItemIdFrom(Paperdoll.FACE));
writeH(0x00);
\ No newline at end of file
diff --git a/L2jOne_C6_Interlude/java/net/sf/l2j/gameserver/network/serverpackets/UserInfo.java b/L2jOne_C6_Interlude/java/net/sf/l2j/gameserver/network/serverpackets/UserInfo.java
index c608e5a..a376b73 100644
--- a/L2jOne_C6_Interlude/java/net/sf/l2j/gameserver/network/serverpackets/UserInfo.java
+++ b/L2jOne_C6_Interlude/java/net/sf/l2j/gameserver/network/serverpackets/UserInfo.java
@@ -5,8 +5,10 @@
import net.sf.l2j.gameserver.enums.Paperdoll;
import net.sf.l2j.gameserver.enums.TeamType;
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.actor.ai.type.BootAi;
import net.sf.l2j.gameserver.model.actor.instance.Cubic;
public class UserInfo extends L2GameServerPacket
@@ -56,6 +58,7 @@
writeD(_player.getWeightLimit());
writeD(_player.getActiveWeaponItem() != null ? 40 : 20);
+ final DressMe dress = _player.getDress();
writeD(_player.getInventory().getItemObjectIdFrom(Paperdoll.HAIRALL));
writeD(_player.getInventory().getItemObjectIdFrom(Paperdoll.REAR));
writeD(_player.getInventory().getItemObjectIdFrom(Paperdoll.LEAR));
@@ -65,13 +68,13 @@
writeD(_player.getInventory().getItemObjectIdFrom(Paperdoll.HEAD));
writeD(_player.getInventory().getItemObjectIdFrom(Paperdoll.RHAND));
writeD(_player.getInventory().getItemObjectIdFrom(Paperdoll.LHAND));
- writeD(_player.getInventory().getItemObjectIdFrom(Paperdoll.GLOVES));
- writeD(_player.getInventory().getItemObjectIdFrom(Paperdoll.CHEST));
- writeD(_player.getInventory().getItemObjectIdFrom(Paperdoll.LEGS));
- writeD(_player.getInventory().getItemObjectIdFrom(Paperdoll.FEET));
+ writeD(dress != null ? dress.getGloves() : _player.getInventory().getItemObjectIdFrom(Paperdoll.GLOVES));
+ writeD(dress != null ? dress.getChest() : _player.getInventory().getItemObjectIdFrom(Paperdoll.CHEST));
+ writeD(dress != null ? dress.getLegs() : _player.getInventory().getItemObjectIdFrom(Paperdoll.LEGS));
+ writeD(dress != null ? dress.getFeet() : _player.getInventory().getItemObjectIdFrom(Paperdoll.FEET));
writeD(_player.getInventory().getItemObjectIdFrom(Paperdoll.CLOAK));
writeD(_player.getInventory().getItemObjectIdFrom(Paperdoll.RHAND));
- writeD(_player.getInventory().getItemObjectIdFrom(Paperdoll.HAIR));
+ writeD(dress != null ? dress.getHair() : _player.getInventory().getItemObjectIdFrom(Paperdoll.HAIR));
writeD(_player.getInventory().getItemObjectIdFrom(Paperdoll.FACE));
writeD(_player.getInventory().getItemIdFrom(Paperdoll.HAIRALL));
@@ -83,13 +86,13 @@
writeD(_player.getInventory().getItemIdFrom(Paperdoll.HEAD));
writeD(_player.getInventory().getItemIdFrom(Paperdoll.RHAND));
writeD(_player.getInventory().getItemIdFrom(Paperdoll.LHAND));
- writeD(_player.getInventory().getItemIdFrom(Paperdoll.GLOVES));
- writeD(_player.getInventory().getItemIdFrom(Paperdoll.CHEST));
- writeD(_player.getInventory().getItemIdFrom(Paperdoll.LEGS));
- writeD(_player.getInventory().getItemIdFrom(Paperdoll.FEET));
+ writeD(dress != null ? dress.getGloves() : _player.getInventory().getItemIdFrom(Paperdoll.GLOVES));
+ writeD(dress != null ? dress.getChest() : _player.getInventory().getItemIdFrom(Paperdoll.CHEST));
+ writeD(dress != null ? dress.getLegs() : _player.getInventory().getItemIdFrom(Paperdoll.LEGS));
+ writeD(dress != null ? dress.getFeet() : _player.getInventory().getItemIdFrom(Paperdoll.FEET));
writeD(_player.getInventory().getItemIdFrom(Paperdoll.CLOAK));
writeD(_player.getInventory().getItemIdFrom(Paperdoll.RHAND));
- writeD(_player.getInventory().getItemIdFrom(Paperdoll.HAIR));
+ writeD(dress != null ? dress.getHair() : _player.getInventory().getItemIdFrom(Paperdoll.HAIR));
writeD(_player.getInventory().getItemIdFrom(Paperdoll.FACE));
writeH(0x00);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment