### Eclipse Workspace Patch 1.0
#P Orion2.0
diff --git cfiles/game/config/main/L2jOrion.ini cfiles/game/config/main/L2jOrion.ini
index bf1867e..a005574 100644
--- cfiles/game/config/main/L2jOrion.ini
+++ cfiles/game/config/main/L2jOrion.ini
@@ -333,4 +333,17 @@
NewPlayerEffect = False
# It shows Castle's Lord clan crest in town nearby npc name
-ShowNpcCrest = False
\ No newline at end of file
+ShowNpcCrest = False
+
+# DressMe system.
+AllowDressMeSystem = True
+
+# DressMe Command
+DressMeCommand = dressme
+
+# Only for premium account
+AllowDressMeForPremiumOnly = True
+
+
+# Players won't see the skins in Olympiad
+AllowDressMeInOly = True
\ No newline at end of file
diff --git data/html/dressme/allskins.htm data/html/dressme/allskins.htm
new file mode 100644
index 0000000..f46a2bd
--- /dev/null
+++ data/html/dressme/allskins.htm
@@ -0,0 +1,20 @@
+<html>
+<body>
+<img src="L2UI.Squaregray" width="300" height="1">
+<table width=300 border=0 cellspacing=0 cellpadding=1 bgcolor=000000 height=15>
+<tr>
+<td width=36 align=center></td>
+<td width=120 align=left>Name</td>
+<td width=65 align=left>Actions</td>
+</tr>
+</table>
+<img src="L2UI.Squaregray" width="300" height="1">
+
+%showList%
+
+<center>
+<button value="Back" action="bypass -h custom_dressme_back" width=65 height=19 back="L2UI_ch3.smallbutton2_over" fore="L2UI_ch3.smallbutton2">
+</center>
+
+</body>
+</html>
\ No newline at end of file
diff --git data/html/dressme/index.htm data/html/dressme/index.htm
new file mode 100644
index 0000000..36f3b4a
--- /dev/null
+++ data/html/dressme/index.htm
@@ -0,0 +1,29 @@
+<html>
+<title>Skins Shop</title>
+<body>
+<br>
+<center>Skins:</center>
+
+<table width=300>
+<tr>
+<td align=center><button value="Armor buy/try" action="bypass -h dressme 1 skinlist armor" width=134 height=19 back="L2UI_ch3.BigButton3_over" fore="L2UI_ch3.BigButton3"></td>
+</tr>
+<tr>
+<td align=center><button value="Weapon buy/try" action="bypass -h dressme 1 skinlist weapon" width=134 height=19 back="L2UI_ch3.BigButton3_over" fore="L2UI_ch3.BigButton3"></td>
+</tr>
+<tr>
+<td align=center><button value="Hair buy/try" action="bypass -h dressme 1 skinlist hair" width=134 height=19 back="L2UI_ch3.BigButton3_over" fore="L2UI_ch3.BigButton3"></td>
+</tr>
+<tr>
+<td align=center><button value="Face buy/try" action="bypass -h dressme 1 skinlist face" width=134 height=19 back="L2UI_ch3.BigButton3_over" fore="L2UI_ch3.BigButton3"></td>
+</tr>
+<tr>
+<td align=center><button value="Shield buy/try" action="bypass -h dressme 1 skinlist shield" width=134 height=19 back="L2UI_ch3.BigButton3_over" fore="L2UI_ch3.BigButton3"></td>
+</tr>
+<tr>
+<td align=center><button value="My skins" action="bypass -h dressme 1 myskinlist" width=134 height=19 back="L2UI_ch3.BigButton3_over" fore="L2UI_ch3.BigButton3"></td>
+</tr>
+</table>
+
+</body>
+</html>
\ No newline at end of file
diff --git data/html/dressme/myskins.htm data/html/dressme/myskins.htm
new file mode 100644
index 0000000..381164c
--- /dev/null
+++ data/html/dressme/myskins.htm
@@ -0,0 +1,21 @@
+<html>
+<body>
+<img src="L2UI.Squaregray" width="300" height="1">
+<table border=0 cellspacing=0 cellpadding=2 bgcolor=000000 height=20>
+<tr>
+<td width=32 align=center></td>
+<td width=203 align=left>Name</td>
+<td width=65 align=left>Actions</td>
+</tr>
+</table>
+<img src="L2UI.Squaregray" width="300" height="1">
+
+%showList%
+
+<br>
+<br>
+<center>
+<button value="Back" action="bypass -h custom_dressme_back" width=65 height=19 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal">
+</center>
+</body>
+</html>
\ No newline at end of file
diff --git data/xml/dressme.xml data/xml/dressme.xml
new file mode 100644
index 0000000..7156269
--- /dev/null
+++ data/xml/dressme.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<list>
+ <skin type="armor"> <!-- Armors -->
+ <type id="1" name="Draconic Armor" chestId="6379" legsId="0" glovesId="6380" feetId="6381" priceId="57" priceCount="100"/>
+ <type id="2" name="Blue Wolf Leather Armor" chestId="2391" legsId="0" glovesId="0" feetId="0" priceId="57" priceCount="100"/>
+ </skin>
+ <skin type="weapon"> <!-- Weapons -->
+ <type id="1" name="Draconic Bow" weaponId="7575" priceId="57" priceCount="100"/>
+ <type id="2" name="Arcana Mace" weaponId="6608" priceId="57" priceCount="100"/>
+ <type id="3" name="Keshanberk*Keshanberk" weaponId="5704" priceId="57" priceCount="100"/>
+ </skin>
+ <skin type="hair"> <!-- Hairs -->
+ <type id="1" name="Cat Ear" hairId="6843" priceId="57" priceCount="100"/>
+ </skin>
+ <skin type="face"> <!-- Faces -->
+ <type id="1" name="Party Mask" faceId="5808" priceId="57" priceCount="100"/>
+ </skin>
+ <skin type="shield"> <!-- Shields -->
+ <type id="1" name="Shield of Night" shieldId="2498" priceId="57" priceCount="100"/>
+ <type id="2" name="Imperial Shield" shieldId="6377" priceId="57" priceCount="100"/>
+ </skin>
+</list>
\ No newline at end of file
diff --git src/l2jorion/Config.java src/l2jorion/Config.java
index bbf70a0..ad4830a 100644
--- src/l2jorion/Config.java
+++ src/l2jorion/Config.java
@@ -2358,6 +2358,11 @@
public static String PM_TEXT2;
public static boolean NEW_PLAYER_EFFECT;
+ public static boolean ALLOW_DRESS_ME_SYSTEM;
+ public static String DRESS_ME_COMMAND;
+ public static boolean ALLOW_DRESS_ME_FOR_PREMIUM;
+ public static boolean ALLOW_DRESS_ME_IN_OLY;
+
public static void loadL2jOrionConfig()
{
final String L2jOrion = ConfigLoader.L2jOrion_CONFIG_FILE;
@@ -2381,6 +2386,11 @@
LIST_FAKE_ARMOR_ITEMS.add(Integer.parseInt(id));
}
+ ALLOW_DRESS_ME_SYSTEM = Boolean.parseBoolean(L2jOrionSettings.getProperty("AllowDressMeSystem", "false"));
+ DRESS_ME_COMMAND = String.valueOf(L2jOrionSettings.getProperty("DressMeCommand", "dressme"));
+ ALLOW_DRESS_ME_FOR_PREMIUM = Boolean.parseBoolean(L2jOrionSettings.getProperty("AllowDressMeForPremiumOnly", "false"));
+ ALLOW_DRESS_ME_IN_OLY = Boolean.parseBoolean(L2jOrionSettings.getProperty("AllowDressMeInOly", "false"));
+
FREE_TELEPORT_UNTIL = Integer.parseInt(L2jOrionSettings.getProperty("FreeTeleportUntil", "1"));
REMOVAL_AUGMENTATION_FREE = Boolean.parseBoolean(L2jOrionSettings.getProperty("RemovalAugmentationFree", "False"));
ALLOW_FREIGHT_AUGMENTED = Boolean.parseBoolean(L2jOrionSettings.getProperty("AllowFreightAugmentedItem", "False"));
@@ -4773,109 +4783,6 @@
}
}
- public static boolean ALLOW_DRESS_ME_SYSTEM;
- public static boolean ALLOW_DRESS_ME_FOR_ITEM;
- public static int DRESS_ME_ITEM_ID;
- public static int DRESS_ME_ITEM_COUNT;
- public static boolean ALLOW_DRESS_ME_FOR_PREMIUM;
- public static Map<String, Integer> DRESS_ME_CHESTS = new HashMap<>();
- public static Map<String, Integer> DRESS_ME_LEGS = new HashMap<>();
- public static Map<String, Integer> DRESS_ME_BOOTS = new HashMap<>();
- public static Map<String, Integer> DRESS_ME_GLOVES = new HashMap<>();
- public static Map<String, Integer> DRESS_ME_WEAPONS = new HashMap<>();
-
- public static void loadDressMeConfig()
- {
- final PropertiesParser dressMe = new PropertiesParser(ConfigLoader.DRESSME_CONFIG_FILE);
-
- ALLOW_DRESS_ME_SYSTEM = dressMe.getBoolean("AllowDressMeSystem", false);
- ALLOW_DRESS_ME_FOR_ITEM = dressMe.getBoolean("DressMeForItem", false);
- DRESS_ME_ITEM_ID = dressMe.getInt("DressMeItemId", 57);
- DRESS_ME_ITEM_COUNT = dressMe.getInt("DressMeItemCount", 1);
- ALLOW_DRESS_ME_FOR_PREMIUM = dressMe.getBoolean("AllowDressMeForPremiumOnly", false);
-
- String temp = dressMe.getString("DressMeChests", "");
- String[] temp2 = temp.split(";");
- for (String s : temp2)
- {
- String[] t = s.split(",");
- DRESS_ME_CHESTS.put(t[0], Integer.parseInt(t[1]));
- }
-
- temp = dressMe.getString("DressMeLegs", "");
- temp2 = temp.split(";");
- for (String s : temp2)
- {
- String[] t = s.split(",");
- DRESS_ME_LEGS.put(t[0], Integer.parseInt(t[1]));
- }
-
- temp = dressMe.getString("DressMeBoots", "");
- temp2 = temp.split(";");
- for (String s : temp2)
- {
- String[] t = s.split(",");
- DRESS_ME_BOOTS.put(t[0], Integer.parseInt(t[1]));
- }
-
- temp = dressMe.getString("DressMeGloves", "");
- temp2 = temp.split(";");
- for (String s : temp2)
- {
- String[] t = s.split(",");
- DRESS_ME_GLOVES.put(t[0], Integer.parseInt(t[1]));
- }
-
- temp = dressMe.getString("DressMeWeapons", "");
- temp2 = temp.split(";");
- for (String s : temp2)
- {
- String[] t = s.split(",");
- DRESS_ME_WEAPONS.put(t[0], Integer.parseInt(t[1]));
- }
-
- temp = dressMe.getString("DressMeChests", "");
- temp2 = temp.split(";");
- for (String s : temp2)
- {
- String[] t = s.split(",");
- DRESS_ME_CHESTS.put(t[0], Integer.parseInt(t[1]));
- }
-
- temp = dressMe.getString("DressMeLegs", "");
- temp2 = temp.split(";");
- for (String s : temp2)
- {
- String[] t = s.split(",");
- DRESS_ME_LEGS.put(t[0], Integer.parseInt(t[1]));
- }
-
- temp = dressMe.getString("DressMeBoots", "");
- temp2 = temp.split(";");
- for (String s : temp2)
- {
- String[] t = s.split(",");
- DRESS_ME_BOOTS.put(t[0], Integer.parseInt(t[1]));
- }
-
- temp = dressMe.getString("DressMeGloves", "");
- temp2 = temp.split(";");
- for (String s : temp2)
- {
- String[] t = s.split(",");
- DRESS_ME_GLOVES.put(t[0], Integer.parseInt(t[1]));
- }
-
- temp = dressMe.getString("DressMeWeapons", "");
- temp2 = temp.split(";");
- for (String s : temp2)
- {
- String[] t = s.split(",");
- DRESS_ME_WEAPONS.put(t[0], Integer.parseInt(t[1]));
- }
-
- }
-
/** Enumeration for type of ID Factory */
public static enum IdFactoryType
{
@@ -4906,7 +4813,6 @@
loadUserConfig();
loadSellBuffConfig();
- loadDressMeConfig();
// Load network
loadServerConfig();
diff --git src/l2jorion/game/GameServer.java src/l2jorion/game/GameServer.java
index 214bbfe..94a2df6 100644
--- src/l2jorion/game/GameServer.java
+++ src/l2jorion/game/GameServer.java
@@ -102,6 +102,7 @@
import l2jorion.game.datatables.sql.TeleportLocationTable;
import l2jorion.game.datatables.xml.AugmentScrollData;
import l2jorion.game.datatables.xml.AugmentationData;
+import l2jorion.game.datatables.xml.DressMeData;
import l2jorion.game.datatables.xml.ExperienceData;
import l2jorion.game.geo.GeoData;
import l2jorion.game.geo.pathfinding.PathFinding;
@@ -547,6 +548,14 @@
PowerPack.getInstance();
}
+ L2Item.LoadAllIcons();
+
+ if (Config.ALLOW_DRESS_ME_SYSTEM)
+ {
+ Util.printSection("Dress Me / Skins");
+ DressMeData.getInstance();
+ }
+
EventManager.getInstance().startEventRegistration();
if (EventManager.TVT_EVENT_ENABLED || EventManager.CTF_EVENT_ENABLED || EventManager.DM_EVENT_ENABLED)
@@ -688,4 +697,5 @@
{
return _deadDetectThread;
}
+
}
\ No newline at end of file
diff --git src/l2jorion/game/datatables/xml/DressMeData.java src/l2jorion/game/datatables/xml/DressMeData.java
new file mode 100644
index 0000000..cda2e91
--- /dev/null
+++ src/l2jorion/game/datatables/xml/DressMeData.java
@@ -0,0 +1,215 @@
+package l2jorion.game.datatables.xml;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import org.w3c.dom.Document;
+import org.w3c.dom.NamedNodeMap;
+import org.w3c.dom.Node;
+
+import l2jorion.game.model.base.SkinPackage;
+import l2jorion.game.templates.StatsSet;
+import l2jorion.logger.Logger;
+import l2jorion.logger.LoggerFactory;
+import l2jorion.util.xml.IXmlReader;
+
+public class DressMeData implements IXmlReader
+{
+ private static final Logger LOG = LoggerFactory.getLogger(DressMeData.class);
+
+ private final static Map<Integer, SkinPackage> _armorSkins = new HashMap<>();
+ private final static Map<Integer, SkinPackage> _weaponSkins = new HashMap<>();
+ private final static Map<Integer, SkinPackage> _hairSkins = new HashMap<>();
+ private final static Map<Integer, SkinPackage> _faceSkins = new HashMap<>();
+ private final static Map<Integer, SkinPackage> _shieldSkins = new HashMap<>();
+
+ public DressMeData()
+ {
+ load();
+ }
+
+ public void reload()
+ {
+ _armorSkins.clear();
+ _weaponSkins.clear();
+ _hairSkins.clear();
+ _faceSkins.clear();
+ _shieldSkins.clear();
+
+ load();
+ }
+
+ @Override
+ public void load()
+ {
+ parseDatapackFile("./data/xml/dressme.xml");
+ LOG.info(getClass().getSimpleName() + ": Loaded " + _armorSkins.size() + " armor skins");
+ LOG.info(getClass().getSimpleName() + ": Loaded " + _weaponSkins.size() + " weapon skins");
+ LOG.info(getClass().getSimpleName() + ": Loaded " + _hairSkins.size() + " hair skins");
+ LOG.info(getClass().getSimpleName() + ": Loaded " + _faceSkins.size() + " face skins");
+ LOG.info(getClass().getSimpleName() + ": Loaded " + _shieldSkins.size() + " shield skins");
+ }
+
+ @Override
+ public void parseDocument(Document doc)
+ {
+ for (Node list = doc.getFirstChild(); list != null; list = list.getNextSibling())
+ {
+ if ("list".equalsIgnoreCase(list.getNodeName()))
+ {
+ for (Node skin = list.getFirstChild(); skin != null; skin = skin.getNextSibling())
+ {
+ if ("skin".equalsIgnoreCase(skin.getNodeName()))
+ {
+ final NamedNodeMap attrs = skin.getAttributes();
+
+ String type = parseString(attrs, "type");
+
+ final StatsSet set = new StatsSet();
+
+ for (Node typeN = skin.getFirstChild(); typeN != null; typeN = typeN.getNextSibling())
+ {
+ if ("type".equalsIgnoreCase(typeN.getNodeName()))
+ {
+ final NamedNodeMap attrs2 = typeN.getAttributes();
+
+ int id = parseInteger(attrs2, "id");
+ String name = parseString(attrs2, "name");
+ int weaponId = parseInteger(attrs2, "weaponId", 0);
+ int shieldId = parseInteger(attrs2, "shieldId", 0);
+ int chestId = parseInteger(attrs2, "chestId", 0);
+ int hairId = parseInteger(attrs2, "hairId", 0);
+ int faceId = parseInteger(attrs2, "faceId", 0);
+ int legsId = parseInteger(attrs2, "legsId", 0);
+ int glovesId = parseInteger(attrs2, "glovesId", 0);
+ int feetId = parseInteger(attrs2, "feetId", 0);
+ int priceId = parseInteger(attrs2, "priceId", 0);
+ int priceCount = parseInteger(attrs2, "priceCount", 0);
+
+ set.set("type", type);
+
+ set.set("id", id);
+ set.set("name", name);
+ set.set("weaponId", weaponId);
+ set.set("shieldId", shieldId);
+ set.set("chestId", chestId);
+ set.set("hairId", hairId);
+ set.set("faceId", faceId);
+ set.set("legsId", legsId);
+ set.set("glovesId", glovesId);
+ set.set("feetId", feetId);
+ set.set("priceId", priceId);
+ set.set("priceCount", priceCount);
+
+ switch (type.toLowerCase())
+ {
+ case "armor":
+ _armorSkins.put(id, new SkinPackage(set));
+ break;
+ case "weapon":
+ _weaponSkins.put(id, new SkinPackage(set));
+ break;
+ case "hair":
+ _hairSkins.put(id, new SkinPackage(set));
+ break;
+ case "face":
+ _faceSkins.put(id, new SkinPackage(set));
+ break;
+ case "shield":
+ _shieldSkins.put(id, new SkinPackage(set));
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ }
+
+ public SkinPackage getArmorSkinsPackage(int id)
+ {
+ if (!_armorSkins.containsKey(id))
+ {
+ return null;
+ }
+
+ return _armorSkins.get(id);
+ }
+
+ public Map<Integer, SkinPackage> getArmorSkinOptions()
+ {
+ return _armorSkins;
+ }
+
+ public SkinPackage getWeaponSkinsPackage(int id)
+ {
+ if (!_weaponSkins.containsKey(id))
+ {
+ return null;
+ }
+
+ return _weaponSkins.get(id);
+ }
+
+ public Map<Integer, SkinPackage> getWeaponSkinOptions()
+ {
+ return _weaponSkins;
+ }
+
+ public SkinPackage getHairSkinsPackage(int id)
+ {
+ if (!_hairSkins.containsKey(id))
+ {
+ return null;
+ }
+
+ return _hairSkins.get(id);
+ }
+
+ public Map<Integer, SkinPackage> getHairSkinOptions()
+ {
+ return _hairSkins;
+ }
+
+ public SkinPackage getFaceSkinsPackage(int id)
+ {
+ if (!_faceSkins.containsKey(id))
+ {
+ return null;
+ }
+
+ return _faceSkins.get(id);
+ }
+
+ public Map<Integer, SkinPackage> getFaceSkinOptions()
+ {
+ return _faceSkins;
+ }
+
+ public SkinPackage getShieldSkinsPackage(int id)
+ {
+ if (!_shieldSkins.containsKey(id))
+ {
+ return null;
+ }
+
+ return _shieldSkins.get(id);
+ }
+
+ public Map<Integer, SkinPackage> getShieldSkinOptions()
+ {
+ return _shieldSkins;
+ }
+
+ 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 src/l2jorion/game/handler/BypassHandler.java src/l2jorion/game/handler/BypassHandler.java
new file mode 100644
index 0000000..899a49b
--- /dev/null
+++ src/l2jorion/game/handler/BypassHandler.java
@@ -0,0 +1,62 @@
+package l2jorion.game.handler;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.logging.Logger;
+
+import l2jorion.Config;
+
+public class BypassHandler
+{
+ private static Logger _log = Logger.getLogger(BypassHandler.class.getName());
+ private final Map<Integer, IBypassHandler> _datatable = new HashMap<>();
+
+ public static BypassHandler getInstance()
+ {
+ return SingletonHolder._instance;
+ }
+
+ private BypassHandler()
+ {
+
+ }
+
+ public void registerBypassHandler(IBypassHandler handler)
+ {
+ String[] ids = handler.getBypassHandlersList();
+ for (int i = 0; i < ids.length; i++)
+ {
+ if (Config.DEBUG)
+ {
+ _log.fine("Adding handler for command " + ids[i]);
+ }
+ _datatable.put(ids[i].hashCode(), handler);
+ }
+ }
+
+ public IBypassHandler getBypassHandler(String bypass)
+ {
+ String command = bypass;
+
+ if (bypass.indexOf(" ") != -1)
+ {
+ command = bypass.substring(0, bypass.indexOf(" "));
+ }
+
+ if (Config.DEBUG)
+ {
+ _log.fine("getting handler for command: " + command + " -> " + (_datatable.get(command.hashCode()) != null));
+ }
+ return _datatable.get(command.hashCode());
+ }
+
+ public int size()
+ {
+ return _datatable.size();
+ }
+
+ private static class SingletonHolder
+ {
+ protected static final BypassHandler _instance = new BypassHandler();
+ }
+}
diff --git src/l2jorion/game/handler/IBypassHandler.java src/l2jorion/game/handler/IBypassHandler.java
new file mode 100644
index 0000000..e75d83a
--- /dev/null
+++ src/l2jorion/game/handler/IBypassHandler.java
@@ -0,0 +1,10 @@
+package l2jorion.game.handler;
+
+import l2jorion.game.model.actor.instance.L2PcInstance;
+
+public interface IBypassHandler
+{
+ public boolean handleBypass(String bypass, L2PcInstance activeChar);
+
+ public String[] getBypassHandlersList();
+}
diff --git src/l2jorion/game/handler/voice/DressMe.java src/l2jorion/game/handler/voice/DressMe.java
index d057559..474d423 100644
--- src/l2jorion/game/handler/voice/DressMe.java
+++ src/l2jorion/game/handler/voice/DressMe.java
@@ -1,71 +1,116 @@
-/*
- * This program is free software: you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation, either version 3 of the License, or (at your option) any later
- * version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program. If not, see <http://www.gnu.org/licenses/>.
- */
+
package l2jorion.game.handler.voice;
-import l2jorion.game.datatables.sql.ItemTable;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import l2jorion.Config;
+import l2jorion.game.cache.HtmCache;
+import l2jorion.game.community.manager.BaseBBSManager;
+import l2jorion.game.handler.ICustomByPassHandler;
import l2jorion.game.handler.IVoicedCommandHandler;
import l2jorion.game.model.actor.instance.L2PcInstance;
+import l2jorion.game.network.serverpackets.ExShowScreenMessage;
import l2jorion.game.network.serverpackets.NpcHtmlMessage;
+import l2jorion.game.network.serverpackets.PlaySound;
-public class DressMe implements IVoicedCommandHandler
+public class DressMe implements IVoicedCommandHandler, ICustomByPassHandler
{
- private static final String[] VOICED_COMMANDS =
+ private static String[] _voicedCommands =
{
- "dressme"
+ Config.DRESS_ME_COMMAND
};
@Override
- public boolean useVoicedCommand(String command, L2PcInstance activeChar, String parameter)
+ public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target)
{
- if (command.equals("dressme"))
+ if (Config.ALLOW_DRESS_ME_FOR_PREMIUM && activeChar.getPremiumService() == 0)
{
- sendMainWindow(activeChar);
+ activeChar.sendMessage("You're not The Premium account.");
+ activeChar.sendPacket(new ExShowScreenMessage("You're not The Premium account.", 1000, 2, false));
+ activeChar.sendPacket(new PlaySound("ItemSound3.sys_impossible"));
+ return false;
}
+ if (command.startsWith("testd"))
+ {
+ showHtm2(activeChar);
+ }
+
+ if (command.startsWith(Config.DRESS_ME_COMMAND))
+ {
+ showHtm(activeChar);
+ }
return true;
}
- public static void sendMainWindow(L2PcInstance activeChar)
+ private static void showHtm(L2PcInstance player)
{
- NpcHtmlMessage htm = new NpcHtmlMessage(0);
- htm.setFile("./data/html/custom/dressme/main.htm");
- htm.replace("%enabled%", activeChar.isDressMeEnabled() ? "enabled" : "disabled");
+ NpcHtmlMessage htm = new NpcHtmlMessage(1);
+ String text = HtmCache.getInstance().getHtm("data/html/dressme/index.htm");
- if (activeChar.getDressMeData() == null)
+ htm.setHtml(text);
+
{
- htm.replace("%chestinfo%", "You have no custom chest.");
- htm.replace("%legsinfo%", "You have no custom legs.");
- htm.replace("%bootsinfo%", "You have no custom boots.");
- htm.replace("%glovesinfo%", "You have no custom gloves.");
- htm.replace("%weapinfo%", "You have no custom weapon.");
- }
- else
- {
- htm.replace("%chestinfo%", activeChar.getDressMeData().getChestId() == 0 ? "You have no custom chest." : ItemTable.getInstance().getTemplate(activeChar.getDressMeData().getChestId()).getName());
- htm.replace("%legsinfo%", activeChar.getDressMeData().getLegsId() == 0 ? "You have no custom legs." : ItemTable.getInstance().getTemplate(activeChar.getDressMeData().getLegsId()).getName());
- htm.replace("%bootsinfo%", activeChar.getDressMeData().getBootsId() == 0 ? "You have no custom boots." : ItemTable.getInstance().getTemplate(activeChar.getDressMeData().getBootsId()).getName());
- htm.replace("%glovesinfo%", activeChar.getDressMeData().getGlovesId() == 0 ? "You have no custom gloves." : ItemTable.getInstance().getTemplate(activeChar.getDressMeData().getGlovesId()).getName());
- htm.replace("%weapinfo%", activeChar.getDressMeData().getWeapId() == 0 ? "You have no custom weapon." : ItemTable.getInstance().getTemplate(activeChar.getDressMeData().getWeapId()).getName());
+ htm.replace("%time%", sdf.format(new Date(System.currentTimeMillis())));
+ htm.replace("%dat%", (new SimpleDateFormat("dd/MM/yyyy")).format(new Date(System.currentTimeMillis())));
+
}
- activeChar.sendPacket(htm);
+ player.sendPacket(htm);
}
+ private static void showHtm2(L2PcInstance activeChar)
+ {
+ String content = HtmCache.getInstance().getHtm("data/html/CommunityBoard/Shop/1.htm");
+ content = content.replace("%CharName%", String.valueOf(activeChar.getName()));
+ if (content == null)
+ {
+ content = "<html><body><br><br><center>404 :File Not foud: 'data/html/CommunityBoard/shop/index.htm' </center></body></html>";
+ }
+ BaseBBSManager.separateAndSend(content, activeChar);
+ content = null;
+ }
+
+ static SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
+
@Override
public String[] getVoicedCommandList()
{
- return VOICED_COMMANDS;
+ return _voicedCommands;
+ }
+
+ @Override
+ public String[] getByPassCommands()
+ {
+ return new String[]
+ {
+ "dressme_back"
+ };
+ }
+
+ private enum CommandEnum
+ {
+ dressme_back,
+ }
+
+ @Override
+ public void handleCommand(String command, L2PcInstance player, String parameters)
+ {
+ CommandEnum comm = CommandEnum.valueOf(command);
+
+ if (comm == null)
+ {
+ return;
+ }
+
+ switch (comm)
+ {
+ case dressme_back:
+ {
+ showHtm(player);
+ }
+ break;
+ }
}
}
\ No newline at end of file
diff --git src/l2jorion/game/model/actor/instance/L2PcInstance.java src/l2jorion/game/model/actor/instance/L2PcInstance.java
index 8d9b411..f6c3536 100644
--- src/l2jorion/game/model/actor/instance/L2PcInstance.java
+++ src/l2jorion/game/model/actor/instance/L2PcInstance.java
@@ -35,6 +35,7 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.Future;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
@@ -282,6 +283,24 @@
private FastSet<String> Favorites = new FastSet<>();
+ private int _armorSkinOption = 0;
+ private int _weaponSkinOption = 0;
+ private int _hairSkinOption = 0;
+ private int _faceSkinOption = 0;
+ private int _shieldSkinOption = 0;
+
+ private boolean isTryingSkin = false;
+ private boolean isTryingSkinPremium = false;
+ private List<Integer> _armorSkins = new CopyOnWriteArrayList<>();
+ private List<Integer> _weaponSkins = new CopyOnWriteArrayList<>();
+ private List<Integer> _hairSkins = new CopyOnWriteArrayList<>();
+ private List<Integer> _faceSkins = new CopyOnWriteArrayList<>();
+ private List<Integer> _shieldSkins = new CopyOnWriteArrayList<>();
+
+ private static final String INSERT_OR_UPDATE_CHARACTER_DRESSME_DATA = "INSERT INTO characters_dressme_data (obj_Id, armor_skins, armor_skin_option, weapon_skins, weapon_skin_option, hair_skins, hair_skin_option, face_skins, face_skin_option) VALUES (?,?,?,?,?,?,?,?,?) "
+ + "ON DUPLICATE KEY UPDATE obj_Id=?, armor_skins=?, armor_skin_option=?, weapon_skins=?, weapon_skin_option=?, hair_skins=?, hair_skin_option=?, face_skins=?, face_skin_option=?, shield_skins=?, shield_skin_option=?";
+ private static final String RESTORE_CHARACTER_DRESSME_DATA = "SELECT obj_Id, armor_skins, armor_skin_option, weapon_skins, weapon_skin_option, hair_skins, hair_skin_option, face_skins, face_skin_option, shield_skins, shield_skin_option FROM characters_dressme_data WHERE obj_id=?";
+
private static final String UPDATE_CHARACTER = "UPDATE characters SET level=?,maxHp=?,curHp=?,maxCp=?,curCp=?,maxMp=?,curMp=?,str=?,con=?,dex=?,_int=?,men=?,wit=?,face=?,hairStyle=?,hairColor=?,heading=?,x=?,y=?,z=?,exp=?,expBeforeDeath=?,sp=?,karma=?,pvpkills=?,pkkills=?,rec_have=?,rec_left=?,clanid=?,maxload=?,race=?,classid=?,deletetime=?,title=?,accesslevel=?,online=?,isin7sdungeon=?,clan_privs=?,wantspeace=?,base_class=?,onlinetime=?,punish_level=?,punish_timer=?,newbie=?,nobless=?,power_grade=?,subpledge=?,last_recom_date=?,lvl_joined_academy=?,apprentice=?,sponsor=?,varka_ketra_ally=?,clan_join_expiry_time=?,clan_create_expiry_time=?,char_name=?,death_penalty_level=?,pc_point=?,name_color=?,title_color=?,aio=?,aio_end=?,hitman_target=?,autoloot=?,autoloot_herbs=? WHERE obj_id=?";
private static final String RESTORE_CHARACTER = "SELECT account_name, obj_Id, char_name, level, maxHp, curHp, maxCp, curCp, maxMp, curMp, acc, crit, evasion, mAtk, mDef, mSpd, pAtk, pDef, pSpd, runSpd, walkSpd, str, con, dex, _int, men, wit, face, hairStyle, hairColor, sex, heading, x, y, z, movement_multiplier, attack_speed_multiplier, colRad, colHeight, exp, expBeforeDeath, sp, karma, pvpkills, pkkills, clanid, maxload, race, classid, deletetime, cancraft, title, rec_have, rec_left, accesslevel, online, char_slot, lastAccess, clan_privs, wantspeace, base_class, onlinetime, isin7sdungeon,punish_level,punish_timer,"
+ "newbie, nobless, power_grade, subpledge, last_recom_date, lvl_joined_academy, apprentice, sponsor, varka_ketra_ally,clan_join_expiry_time,clan_create_expiry_time,death_penalty_level,pc_point"
@@ -10096,6 +10115,7 @@
player.refreshOverloaded();
player.restoreFriendList();
+ player.restoreDressMeData();
}
catch (Exception e)
{
@@ -10314,6 +10334,11 @@
storeCharBase();
storeCharSub();
+ if (!isTryingSkin() || !isTryingSkinPremium())
+ {
+ storeDressMeData();
+ }
+
// Dont store effect if the char was on Offline trade
if (!isStored())
{
@@ -21241,4 +21266,446 @@
{
return _achievement;
}
+
+ @SuppressWarnings("resource")
+ private synchronized void storeDressMeData()
+ {
+
+ Connection con = null;
+ try
+ {
+ con = L2DatabaseFactory.getInstance().getConnection();
+ PreparedStatement statement = con.prepareStatement(INSERT_OR_UPDATE_CHARACTER_DRESSME_DATA);
+
+ statement.setInt(1, getObjectId());
+ if (_armorSkins.isEmpty())
+ {
+ statement.setString(2, "");
+ }
+ else
+ {
+ String s = "";
+ for (int i : _armorSkins)
+ {
+ s += String.valueOf(i) + ",";
+ }
+ statement.setString(2, s);
+ }
+ statement.setInt(3, getArmorSkinOption());
+
+ if (_weaponSkins.isEmpty())
+ {
+ statement.setString(4, "");
+ }
+ else
+ {
+ String s = "";
+ for (int i : _weaponSkins)
+ {
+ s += String.valueOf(i) + ",";
+ }
+ statement.setString(4, s);
+ }
+ statement.setInt(5, getWeaponSkinOption());
+
+ if (_hairSkins.isEmpty())
+ {
+ statement.setString(6, "");
+ }
+ else
+ {
+ String s = "";
+ for (int i : _hairSkins)
+ {
+ s += String.valueOf(i) + ",";
+ }
+ statement.setString(6, s);
+ }
+ statement.setInt(7, getHairSkinOption());
+
+ if (_faceSkins.isEmpty())
+ {
+ statement.setString(8, "");
+ }
+ else
+ {
+ String s = "";
+ for (int i : _faceSkins)
+ {
+ s += String.valueOf(i) + ",";
+ }
+ statement.setString(8, s);
+ }
+ statement.setInt(9, getFaceSkinOption());
+
+ if (_shieldSkins.isEmpty())
+ {
+ statement.setString(10, "");
+ }
+ else
+ {
+ String s = "";
+ for (int i : _shieldSkins)
+ {
+ s += String.valueOf(i) + ",";
+ }
+ statement.setString(10, s);
+ }
+ statement.setInt(11, getShieldSkinOption());
+
+ // second part
+
+ statement.setInt(10, getObjectId());
+ if (_armorSkins.isEmpty())
+ {
+ statement.setString(11, "");
+ }
+ else
+ {
+ String s = "";
+ for (int i : _armorSkins)
+ {
+ s += String.valueOf(i) + ",";
+ }
+ statement.setString(11, s);
+ }
+ statement.setInt(12, getArmorSkinOption());
+
+ if (_weaponSkins.isEmpty())
+ {
+ statement.setString(13, "");
+ }
+ else
+ {
+ String s = "";
+ for (int i : _weaponSkins)
+ {
+ s += String.valueOf(i) + ",";
+ }
+ statement.setString(13, s);
+ }
+ statement.setInt(14, getWeaponSkinOption());
+
+ if (_hairSkins.isEmpty())
+ {
+ statement.setString(15, "");
+ }
+ else
+ {
+ String s = "";
+ for (int i : _hairSkins)
+ {
+ s += String.valueOf(i) + ",";
+ }
+ statement.setString(15, s);
+ }
+ statement.setInt(16, getHairSkinOption());
+
+ if (_faceSkins.isEmpty())
+ {
+ statement.setString(17, "");
+ }
+ else
+ {
+ String s = "";
+ for (int i : _faceSkins)
+ {
+ s += String.valueOf(i) + ",";
+ }
+ statement.setString(17, s);
+ }
+ statement.setInt(18, getFaceSkinOption());
+
+ if (_shieldSkins.isEmpty())
+ {
+ statement.setString(19, "");
+ }
+ else
+ {
+ String s = "";
+ for (int i : _shieldSkins)
+ {
+ s += String.valueOf(i) + ",";
+ }
+ statement.setString(19, s);
+ }
+ statement.setInt(20, getShieldSkinOption());
+
+ statement.execute();
+ statement.close();
+ }
+ catch (Exception e)
+ {
+
+ LOG.warn("Could not store storeDressMeData():");
+ e.printStackTrace();
+
+ }
+ finally
+ {
+
+ }
+ }
+
+ @SuppressWarnings("resource")
+ private void restoreDressMeData()
+ {
+
+ Connection con = null;
+ try
+ {
+ con = L2DatabaseFactory.getInstance().getConnection();
+ PreparedStatement statement = con.prepareStatement(RESTORE_CHARACTER_DRESSME_DATA);
+
+ statement.setInt(1, getObjectId());
+ ResultSet rset = statement.executeQuery();
+
+ while (rset.next())
+ {
+ String armorskinIds = rset.getString("armor_skins");
+ if (armorskinIds != null && armorskinIds.length() > 0)
+ {
+ for (String s : armorskinIds.split(","))
+ {
+ if (s == null)
+ {
+ continue;
+ }
+ buyArmorSkin(Integer.parseInt(s));
+ }
+ }
+ setArmorSkinOption(rset.getInt("armor_skin_option"));
+
+ String weaponskinIds = rset.getString("weapon_skins");
+ if (weaponskinIds != null && weaponskinIds.length() > 0)
+ {
+ for (String s : weaponskinIds.split(","))
+ {
+ if (s == null)
+ {
+ continue;
+ }
+ buyWeaponSkin(Integer.parseInt(s));
+ }
+ }
+ setWeaponSkinOption(rset.getInt("weapon_skin_option"));
+
+ String hairskinIds = rset.getString("hair_skins");
+ if (hairskinIds != null && hairskinIds.length() > 0)
+ {
+ for (String s : hairskinIds.split(","))
+ {
+ if (s == null)
+ {
+ continue;
+ }
+ buyHairSkin(Integer.parseInt(s));
+ }
+ }
+ setHairSkinOption(rset.getInt("hair_skin_option"));
+
+ String faceskinIds = rset.getString("face_skins");
+ if (faceskinIds != null && faceskinIds.length() > 0)
+ {
+ for (String s : faceskinIds.split(","))
+ {
+ if (s == null)
+ {
+ continue;
+ }
+ buyFaceSkin(Integer.parseInt(s));
+ }
+ }
+ setFaceSkinOption(rset.getInt("face_skin_option"));
+
+ String shieldkinIds = rset.getString("shield_skins");
+ if (shieldkinIds != null && shieldkinIds.length() > 0)
+ {
+ for (String s : shieldkinIds.split(","))
+ {
+ if (s == null)
+ {
+ continue;
+ }
+ buyShieldSkin(Integer.parseInt(s));
+ }
+ }
+ setShieldSkinOption(rset.getInt("shield_skin_option"));
+ }
+
+ rset.close();
+ statement.close();
+ }
+ catch (Exception e)
+ {
+ LOG.warn("Could not restore char data:");
+ e.printStackTrace();
+ }
+ finally
+ {
+
+ }
+ }
+
+ // Dress Me
+ public boolean isTryingSkin()
+ {
+ return isTryingSkin;
+ }
+
+ public void setIsTryingSkin(boolean b)
+ {
+ isTryingSkin = b;
+ }
+
+ public boolean isTryingSkinPremium()
+ {
+ return isTryingSkinPremium;
+ }
+
+ public void setIsTryingSkinPremium(boolean b)
+ {
+ isTryingSkinPremium = b;
+ }
+
+ public boolean hasArmorSkin(int skin)
+ {
+ return _armorSkins.contains(skin);
+ }
+
+ public boolean hasWeaponSkin(int skin)
+ {
+ return _weaponSkins.contains(skin);
+ }
+
+ public boolean hasHairSkin(int skin)
+ {
+ return _hairSkins.contains(skin);
+ }
+
+ public boolean hasFaceSkin(int skin)
+ {
+ return _faceSkins.contains(skin);
+ }
+
+ public boolean hasShieldSkin(int skin)
+ {
+ return _shieldSkins.contains(skin);
+ }
+
+ public boolean hasEquippedArmorSkin(String skin)
+ {
+ return String.valueOf(_armorSkinOption).contains(String.valueOf(skin));
+ }
+
+ public boolean hasEquippedWeaponSkin(String skin)
+ {
+ return String.valueOf(_weaponSkinOption).contains(String.valueOf(skin));
+ }
+
+ public boolean hasEquippedHairSkin(String skin)
+ {
+ return String.valueOf(_hairSkinOption).contains(String.valueOf(skin));
+ }
+
+ public boolean hasEquippedFaceSkin(String skin)
+ {
+ return String.valueOf(_faceSkinOption).contains(String.valueOf(skin));
+ }
+
+ public boolean hasEquippedShieldSkin(String skin)
+ {
+ return String.valueOf(_shieldSkinOption).contains(String.valueOf(skin));
+ }
+
+ public void buyArmorSkin(int id)
+ {
+ if (!_armorSkins.contains(id))
+ {
+ _armorSkins.add(id);
+ }
+ }
+
+ public void buyWeaponSkin(int id)
+ {
+ if (!_weaponSkins.contains(id))
+ {
+ _weaponSkins.add(id);
+ }
+ }
+
+ public void buyHairSkin(int id)
+ {
+ if (!_hairSkins.contains(id))
+ {
+ _hairSkins.add(id);
+ }
+ }
+
+ public void buyFaceSkin(int id)
+ {
+ if (!_faceSkins.contains(id))
+ {
+ _faceSkins.add(id);
+ }
+ }
+
+ public void buyShieldSkin(int id)
+ {
+ if (!_shieldSkins.contains(id))
+ {
+ _shieldSkins.add(id);
+ }
+ }
+
+ public void setArmorSkinOption(int armorSkinOption)
+ {
+ _armorSkinOption = armorSkinOption;
+ }
+
+ public int getArmorSkinOption()
+ {
+ return _armorSkinOption;
+ }
+
+ public void setWeaponSkinOption(int weaponSkinOption)
+ {
+ _weaponSkinOption = weaponSkinOption;
+ }
+
+ public int getWeaponSkinOption()
+ {
+ return _weaponSkinOption;
+ }
+
+ public void setHairSkinOption(int hairSkinOption)
+ {
+ _hairSkinOption = hairSkinOption;
+ }
+
+ public int getHairSkinOption()
+ {
+ return _hairSkinOption;
+ }
+
+ public void setFaceSkinOption(int faceSkinOption)
+ {
+ _faceSkinOption = faceSkinOption;
+ }
+
+ public int getFaceSkinOption()
+ {
+ return _faceSkinOption;
+ }
+
+ public void setShieldSkinOption(int shieldSkinOption)
+ {
+ _shieldSkinOption = shieldSkinOption;
+ }
+
+ public int getShieldSkinOption()
+ {
+ return _shieldSkinOption;
+ }
+
}
\ No newline at end of file
diff --git src/l2jorion/game/model/base/SkinPackage.java src/l2jorion/game/model/base/SkinPackage.java
new file mode 100644
index 0000000..1dad239
--- /dev/null
+++ src/l2jorion/game/model/base/SkinPackage.java
@@ -0,0 +1,102 @@
+package l2jorion.game.model.base;
+
+import l2jorion.game.templates.StatsSet;
+
+public class SkinPackage
+{
+ private String _type;
+ private String _name;
+ private int _id;
+ private int _weaponId;
+ private int _shieldId;
+ private int _chestId;
+ private int _hairId;
+ private int _faceId;
+ private int _legsId;
+ private int _glovesId;
+ private int _feetId;
+ private int _priceId;
+ private int _priceCount;
+
+ public SkinPackage(StatsSet set)
+ {
+ _type = set.getString("type", "default");
+ _name = set.getString("name", "NoName");
+ _id = set.getInteger("id", 0);
+ _weaponId = set.getInteger("weaponId", 0);
+ _shieldId = set.getInteger("shieldId", 0);
+ _chestId = set.getInteger("chestId", 0);
+ _hairId = set.getInteger("hairId", 0);
+ _faceId = set.getInteger("faceId", 0);
+ _legsId = set.getInteger("legsId", 0);
+ _glovesId = set.getInteger("glovesId", 0);
+ _feetId = set.getInteger("feetId", 0);
+ _priceId = set.getInteger("priceId", 0);
+ _priceCount = set.getInteger("priceCount", 0);
+ }
+
+ public int getId()
+ {
+ return _id;
+ }
+
+ public String getType()
+ {
+ return _type;
+ }
+
+ public String getName()
+ {
+ return _name;
+ }
+
+ public int getWeaponId()
+ {
+ return _weaponId;
+ }
+
+ public int getShieldId()
+ {
+ return _shieldId;
+ }
+
+ public int getChestId()
+ {
+ return _chestId;
+ }
+
+ public int getHairId()
+ {
+ return _hairId;
+ }
+
+ public int getFaceId()
+ {
+ return _faceId;
+ }
+
+ public int getLegsId()
+ {
+ return _legsId;
+ }
+
+ public int getGlovesId()
+ {
+ return _glovesId;
+ }
+
+ public int getFeetId()
+ {
+ return _feetId;
+ }
+
+ public int getPriceId()
+ {
+ return _priceId;
+ }
+
+ public int getPriceCount()
+ {
+ return _priceCount;
+ }
+}
\ No newline at end of file
diff --git src/l2jorion/game/network/clientpackets/RequestBypassToServer.java src/l2jorion/game/network/clientpackets/RequestBypassToServer.java
index 7bb0cf1..91070a7 100644
--- src/l2jorion/game/network/clientpackets/RequestBypassToServer.java
+++ src/l2jorion/game/network/clientpackets/RequestBypassToServer.java
@@ -22,18 +22,24 @@
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.text.NumberFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
import java.util.StringTokenizer;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
import javolution.text.TextBuilder;
import l2jorion.Config;
+import l2jorion.game.cache.HtmCache;
import l2jorion.game.community.CommunityBoard;
import l2jorion.game.datatables.SkillTable;
import l2jorion.game.datatables.sql.AdminCommandAccessRights;
import l2jorion.game.datatables.sql.ItemTable;
+import l2jorion.game.datatables.xml.DressMeData;
import l2jorion.game.handler.AdminCommandHandler;
import l2jorion.game.handler.IAdminCommandHandler;
import l2jorion.game.handler.custom.CustomBypassHandler;
-import l2jorion.game.handler.voice.DressMe;
import l2jorion.game.handler.voice.Vote;
import l2jorion.game.handler.vote.Brasil;
import l2jorion.game.handler.vote.Hopzone;
@@ -41,7 +47,6 @@
import l2jorion.game.handler.vote.L2TopOnline;
import l2jorion.game.handler.vote.Network;
import l2jorion.game.handler.vote.Topzone;
-import l2jorion.game.model.Inventory;
import l2jorion.game.model.L2DropCategory;
import l2jorion.game.model.L2DropData;
import l2jorion.game.model.L2Object;
@@ -56,7 +61,7 @@
import l2jorion.game.model.actor.instance.L2PcInstance;
import l2jorion.game.model.actor.instance.L2RaidBossInstance;
import l2jorion.game.model.actor.instance.L2SymbolMakerInstance;
-import l2jorion.game.model.custom.DressMeData;
+import l2jorion.game.model.base.SkinPackage;
import l2jorion.game.model.entity.event.CTF;
import l2jorion.game.model.entity.event.DM;
import l2jorion.game.model.entity.event.L2Event;
@@ -71,6 +76,8 @@
import l2jorion.game.network.serverpackets.PlaySound;
import l2jorion.game.network.serverpackets.SystemMessage;
import l2jorion.game.templates.L2Item;
+import l2jorion.game.templates.L2WeaponType;
+import l2jorion.game.thread.ThreadPoolManager;
import l2jorion.game.util.GMAudit;
import l2jorion.game.util.Util;
import l2jorion.log.Log;
@@ -765,6 +772,429 @@
final int arenaId = Integer.parseInt(_command.substring(12).trim());
activeChar.enterOlympiadObserverMode(arenaId);
}
+
+ else if (_command.startsWith("dressme"))
+ {
+ if (!Config.ALLOW_DRESS_ME_IN_OLY && activeChar.isInOlympiadMode())
+ {
+ activeChar.sendMessage("DressMe can't be used on The Olympiad game.");
+ return;
+ }
+
+ StringTokenizer st = new StringTokenizer(_command, " ");
+ st.nextToken();
+ if (!st.hasMoreTokens())
+ {
+ showDressMeMainPage(activeChar);
+ return;
+ }
+ int page = Integer.parseInt(st.nextToken());
+
+ if (!st.hasMoreTokens())
+ {
+ showDressMeMainPage(activeChar);
+ return;
+ }
+ String next = st.nextToken();
+ if (next.startsWith("skinlist"))
+ {
+ String type = st.nextToken();
+ showSkinList(activeChar, type, page);
+ }
+ else if (next.startsWith("myskinlist"))
+ {
+
+ showMySkinList(activeChar, page);
+ }
+ if (next.equals("clean"))
+ {
+ String type = st.nextToken();
+
+ if (activeChar.isTryingSkin())
+ {
+ activeChar.sendMessage("You can't do this while trying a skin.");
+ activeChar.sendPacket(new ExShowScreenMessage("You can't do this while trying a skin.", 2000, 2, false));
+ activeChar.sendPacket(new PlaySound("ItemSound3.sys_impossible"));
+ showDressMeMainPage(activeChar);
+ return;
+ }
+
+ switch (type.toLowerCase())
+ {
+ case "armor":
+ activeChar.setArmorSkinOption(0);
+ break;
+ case "weapon":
+ activeChar.setWeaponSkinOption(0);
+ break;
+ case "hair":
+ activeChar.setHairSkinOption(0);
+ break;
+ case "face":
+ activeChar.setFaceSkinOption(0);
+ break;
+ case "shield":
+ activeChar.setShieldSkinOption(0);
+ break;
+ }
+
+ activeChar.broadcastUserInfo();
+ showMySkinList(activeChar, page);
+ }
+ else if (next.startsWith("buyskin"))
+ {
+ if (!st.hasMoreTokens())
+ {
+ showDressMeMainPage(activeChar);
+ return;
+ }
+
+ int skinId = Integer.parseInt(st.nextToken());
+ String type = st.nextToken();
+ int itemId = Integer.parseInt(st.nextToken());
+
+ SkinPackage sp = null;
+
+ switch (type.toLowerCase())
+ {
+ case "armor":
+ sp = DressMeData.getInstance().getArmorSkinsPackage(skinId);
+ break;
+ case "weapon":
+ sp = DressMeData.getInstance().getWeaponSkinsPackage(skinId);
+
+ if (activeChar.getActiveWeaponItem() == null)
+ {
+ activeChar.sendMessage("You can't buy this skin without a weapon.");
+ activeChar.sendPacket(new ExShowScreenMessage("You can't buy this skin without a weapon.", 2000, 2, false));
+ activeChar.sendPacket(new PlaySound("ItemSound3.sys_impossible"));
+ showSkinList(activeChar, type, page);
+ return;
+ }
+
+ L2ItemInstance skinWeapon = null;
+ if (ItemTable.getInstance().getTemplate(itemId) != null)
+ {
+ skinWeapon = ItemTable.getInstance().createDummyItem(itemId);
+
+ if (!checkWeapons(activeChar, skinWeapon, L2WeaponType.BOW, L2WeaponType.BOW) //
+ || !checkWeapons(activeChar, skinWeapon, L2WeaponType.SWORD, L2WeaponType.SWORD) //
+ || !checkWeapons(activeChar, skinWeapon, L2WeaponType.BLUNT, L2WeaponType.BLUNT) //
+ || !checkWeapons(activeChar, skinWeapon, L2WeaponType.DAGGER, L2WeaponType.DAGGER) //
+ || !checkWeapons(activeChar, skinWeapon, L2WeaponType.POLE, L2WeaponType.POLE) //
+ || !checkWeapons(activeChar, skinWeapon, L2WeaponType.DUAL, L2WeaponType.DUAL) //
+ || !checkWeapons(activeChar, skinWeapon, L2WeaponType.DUALFIST, L2WeaponType.DUALFIST) //
+ || !checkWeapons(activeChar, skinWeapon, L2WeaponType.BIGSWORD, L2WeaponType.BIGSWORD) //
+ || !checkWeapons(activeChar, skinWeapon, L2WeaponType.FIST, L2WeaponType.FIST) //
+ || !checkWeapons(activeChar, skinWeapon, L2WeaponType.BIGBLUNT, L2WeaponType.BIGBLUNT))
+ {
+ activeChar.sendMessage("This skin is not suitable for your weapon type.");
+ activeChar.sendPacket(new ExShowScreenMessage("This skin is not suitable for your weapon type.", 2000, 2, false));
+ activeChar.sendPacket(new PlaySound("ItemSound3.sys_impossible"));
+ showSkinList(activeChar, type, page);
+ return;
+ }
+ }
+ break;
+ case "hair":
+ sp = DressMeData.getInstance().getHairSkinsPackage(skinId);
+ break;
+ case "face":
+ sp = DressMeData.getInstance().getFaceSkinsPackage(skinId);
+ break;
+ case "shield":
+ sp = DressMeData.getInstance().getShieldSkinsPackage(skinId);
+ if (activeChar.getActiveWeaponItem() == null)
+ {
+ activeChar.sendMessage("You can't buy this skin without a weapon.");
+ activeChar.sendPacket(new ExShowScreenMessage("You can't buy this skin without a weapon.", 2000, 2, false));
+ activeChar.sendPacket(new PlaySound("ItemSound3.sys_impossible"));
+ showSkinList(activeChar, type, page);
+ return;
+ }
+
+ L2ItemInstance skinShield = null;
+ if (ItemTable.getInstance().getTemplate(itemId) != null)
+ {
+ skinShield = ItemTable.getInstance().createDummyItem(itemId);
+
+ if (!checkWeapons(activeChar, skinShield, L2WeaponType.BOW, L2WeaponType.BOW) //
+ || !checkWeapons(activeChar, skinShield, L2WeaponType.POLE, L2WeaponType.POLE) //
+ || !checkWeapons(activeChar, skinShield, L2WeaponType.DUAL, L2WeaponType.DUAL) //
+ || !checkWeapons(activeChar, skinShield, L2WeaponType.DUALFIST, L2WeaponType.DUALFIST) //
+ || !checkWeapons(activeChar, skinShield, L2WeaponType.BIGSWORD, L2WeaponType.BIGSWORD) //
+ || !checkWeapons(activeChar, skinShield, L2WeaponType.FIST, L2WeaponType.FIST) //
+ || !checkWeapons(activeChar, skinShield, L2WeaponType.BIGBLUNT, L2WeaponType.BIGBLUNT))
+ {
+ activeChar.sendMessage("This skin is not suitable for your weapon type.");
+ activeChar.sendPacket(new ExShowScreenMessage("This skin is not suitable for your weapon type.", 2000, 2, false));
+ activeChar.sendPacket(new PlaySound("ItemSound3.sys_impossible"));
+ showSkinList(activeChar, type, page);
+ return;
+ }
+ }
+ break;
+ }
+
+ if (sp == null)
+ {
+ activeChar.sendMessage("There is no such skin.");
+ activeChar.sendPacket(new ExShowScreenMessage("There is no such skin.", 2000, 2, false));
+ activeChar.sendPacket(new PlaySound("ItemSound3.sys_impossible"));
+ showSkinList(activeChar, type, page);
+ return;
+ }
+
+ if (activeChar.getPremiumService() >= 1)
+ {
+ activeChar.sendMessage("You have successfully purchased " + sp.getName() + " skin.");
+ activeChar.sendPacket(new ExShowScreenMessage("You have successfully purchased " + sp.getName() + " skin.", 2000, 2, false));
+
+ activeChar.setIsTryingSkinPremium(true);
+
+ switch (type.toLowerCase())
+ {
+ case "armor":
+ activeChar.setArmorSkinOption(skinId);
+ break;
+ case "weapon":
+ activeChar.setWeaponSkinOption(skinId);
+ break;
+ case "hair":
+ activeChar.setHairSkinOption(skinId);
+ break;
+ case "face":
+ activeChar.setFaceSkinOption(skinId);
+ break;
+ case "shield":
+ activeChar.setShieldSkinOption(skinId);
+ break;
+ }
+
+ activeChar.broadcastUserInfo();
+ showSkinList(activeChar, type, page);
+ return;
+ }
+
+ if (activeChar.destroyItemByItemId("dressme", sp.getPriceId(), sp.getPriceCount(), activeChar, true))
+ {
+ activeChar.sendMessage("You have successfully purchased " + sp.getName() + " skin.");
+ activeChar.sendPacket(new ExShowScreenMessage("You have successfully purchased " + sp.getName() + " skin.", 2000, 2, false));
+
+ switch (type.toLowerCase())
+ {
+ case "armor":
+ activeChar.buyArmorSkin(skinId);
+ activeChar.setArmorSkinOption(skinId);
+ break;
+ case "weapon":
+ activeChar.buyWeaponSkin(skinId);
+ activeChar.setWeaponSkinOption(skinId);
+ break;
+ case "hair":
+ activeChar.buyHairSkin(skinId);
+ activeChar.setHairSkinOption(skinId);
+ break;
+ case "face":
+ activeChar.buyFaceSkin(skinId);
+ activeChar.setFaceSkinOption(skinId);
+ break;
+ case "shield":
+ activeChar.buyShieldSkin(skinId);
+ activeChar.setShieldSkinOption(skinId);
+ break;
+ }
+
+ activeChar.broadcastUserInfo();
+ }
+ showSkinList(activeChar, type, page);
+ }
+ else if (next.startsWith("tryskin"))
+ {
+
+ int skinId = Integer.parseInt(st.nextToken());
+
+ String type = st.nextToken();
+
+ if (activeChar.isTryingSkin())
+ {
+ activeChar.sendMessage("You are already trying a skin.");
+ activeChar.sendPacket(new ExShowScreenMessage("You are already trying a skin.", 2000, 2, false));
+ activeChar.sendPacket(new PlaySound("ItemSound3.sys_impossible"));
+ showSkinList(activeChar, type, page);
+ return;
+ }
+
+ activeChar.setIsTryingSkin(true);
+
+ int oldArmorSkinId = activeChar.getArmorSkinOption();
+ int oldWeaponSkinId = activeChar.getWeaponSkinOption();
+ int oldHairSkinId = activeChar.getHairSkinOption();
+ int oldFaceSkinId = activeChar.getFaceSkinOption();
+ int oldShieldSkinId = activeChar.getShieldSkinOption();
+
+ switch (type.toLowerCase())
+ {
+ case "armor":
+ activeChar.setArmorSkinOption(skinId);
+ break;
+ case "weapon":
+ activeChar.setWeaponSkinOption(skinId);
+ break;
+ case "hair":
+ activeChar.setHairSkinOption(skinId);
+ break;
+ case "face":
+ activeChar.setFaceSkinOption(skinId);
+ break;
+ case "shield":
+
+ activeChar.setShieldSkinOption(skinId);
+
+ break;
+ }
+
+ activeChar.broadcastUserInfo();
+ showSkinList(activeChar, type, page);
+
+ ThreadPoolManager.getInstance().scheduleGeneral(() ->
+ {
+ switch (type.toLowerCase())
+ {
+ case "armor":
+ activeChar.setArmorSkinOption(oldArmorSkinId);
+ break;
+ case "weapon":
+ activeChar.setWeaponSkinOption(oldWeaponSkinId);
+ break;
+ case "hair":
+ activeChar.setHairSkinOption(oldHairSkinId);
+ break;
+ case "face":
+ activeChar.setFaceSkinOption(oldFaceSkinId);
+ break;
+ case "shield":
+ activeChar.setShieldSkinOption(oldShieldSkinId);
+ break;
+ }
+
+ activeChar.broadcastUserInfo();
+ activeChar.setIsTryingSkin(false);
+ }, 5000);
+ }
+ else if (next.startsWith("setskin"))
+ {
+ int id = Integer.parseInt(st.nextToken());
+ String type = st.nextToken();
+ int itemId = Integer.parseInt(st.nextToken());
+
+ if (activeChar.isTryingSkin())
+ {
+ activeChar.sendMessage("You can't do this while trying skins.");
+ activeChar.sendPacket(new ExShowScreenMessage("You can't do this while trying skins.", 2000, 2, false));
+ activeChar.sendPacket(new PlaySound("ItemSound3.sys_impossible"));
+ showMySkinList(activeChar, page);
+ return;
+ }
+
+ if (type.toLowerCase().contains("armor") && activeChar.hasEquippedArmorSkin(String.valueOf(id)) || type.toLowerCase().contains("weapon") && activeChar.hasEquippedWeaponSkin(String.valueOf(id))
+ || type.toLowerCase().contains("hair") && activeChar.hasEquippedHairSkin(String.valueOf(id)) || type.toLowerCase().contains("face") && activeChar.hasEquippedFaceSkin(String.valueOf(id)))
+ {
+ activeChar.sendMessage("You are already equipped this skin.");
+ activeChar.sendPacket(new ExShowScreenMessage("You are already equipped this skin.", 2000, 2, false));
+ activeChar.sendPacket(new PlaySound("ItemSound3.sys_impossible"));
+ showMySkinList(activeChar, page);
+ return;
+ }
+
+ switch (type.toLowerCase())
+ {
+ case "armor":
+ activeChar.setArmorSkinOption(id);
+ break;
+ case "weapon":
+ if (activeChar.getActiveWeaponItem() == null)
+ {
+ activeChar.sendMessage("You can't use this skin without a weapon.");
+ activeChar.sendPacket(new ExShowScreenMessage("You can't use this skin without a weapon.", 2000, 2, false));
+ activeChar.sendPacket(new PlaySound("ItemSound3.sys_impossible"));
+ showMySkinList(activeChar, page);
+ return;
+ }
+
+ L2ItemInstance skinWeapon = null;
+ if (ItemTable.getInstance().getTemplate(itemId) != null)
+ {
+ skinWeapon = ItemTable.getInstance().createDummyItem(itemId);
+
+ if (!checkWeapons(activeChar, skinWeapon, L2WeaponType.BOW, L2WeaponType.BOW) //
+ || !checkWeapons(activeChar, skinWeapon, L2WeaponType.SWORD, L2WeaponType.SWORD) //
+ || !checkWeapons(activeChar, skinWeapon, L2WeaponType.BLUNT, L2WeaponType.BLUNT) //
+ || !checkWeapons(activeChar, skinWeapon, L2WeaponType.DAGGER, L2WeaponType.DAGGER) //
+ || !checkWeapons(activeChar, skinWeapon, L2WeaponType.POLE, L2WeaponType.POLE) //
+ || !checkWeapons(activeChar, skinWeapon, L2WeaponType.DUAL, L2WeaponType.DUAL) //
+ || !checkWeapons(activeChar, skinWeapon, L2WeaponType.DUALFIST, L2WeaponType.DUALFIST) //
+ || !checkWeapons(activeChar, skinWeapon, L2WeaponType.BIGSWORD, L2WeaponType.BIGSWORD) //
+ || !checkWeapons(activeChar, skinWeapon, L2WeaponType.FIST, L2WeaponType.FIST) //
+ || !checkWeapons(activeChar, skinWeapon, L2WeaponType.BIGBLUNT, L2WeaponType.BIGBLUNT))
+ {
+ activeChar.sendMessage("This skin is not suitable for your weapon type.");
+ activeChar.sendPacket(new ExShowScreenMessage("This skin is not suitable for your weapon type.", 2000, 2, false));
+ activeChar.sendPacket(new PlaySound("ItemSound3.sys_impossible"));
+ showMySkinList(activeChar, page);
+ return;
+ }
+
+ activeChar.setWeaponSkinOption(id);
+ }
+ break;
+ case "hair":
+ activeChar.setHairSkinOption(id);
+ break;
+ case "face":
+ activeChar.setFaceSkinOption(id);
+ break;
+ case "shield":
+ if (activeChar.getActiveWeaponItem() == null)
+ {
+ activeChar.sendMessage("You can't use this skin without a weapon.");
+ activeChar.sendPacket(new ExShowScreenMessage("You can't use this skin without a weapon.", 2000, 2, false));
+ activeChar.sendPacket(new PlaySound("ItemSound3.sys_impossible"));
+ showMySkinList(activeChar, page);
+ return;
+ }
+
+ L2ItemInstance skinShield = null;
+ if (ItemTable.getInstance().getTemplate(itemId) != null)
+ {
+ skinShield = ItemTable.getInstance().createDummyItem(itemId);
+
+ if (!checkWeapons(activeChar, skinShield, L2WeaponType.BOW, L2WeaponType.BOW) //
+ || !checkWeapons(activeChar, skinShield, L2WeaponType.POLE, L2WeaponType.POLE) //
+ || !checkWeapons(activeChar, skinShield, L2WeaponType.DUAL, L2WeaponType.DUAL) //
+ || !checkWeapons(activeChar, skinShield, L2WeaponType.DUALFIST, L2WeaponType.DUALFIST) //
+ || !checkWeapons(activeChar, skinShield, L2WeaponType.BIGSWORD, L2WeaponType.BIGSWORD) //
+ || !checkWeapons(activeChar, skinShield, L2WeaponType.FIST, L2WeaponType.FIST) //
+ || !checkWeapons(activeChar, skinShield, L2WeaponType.BIGBLUNT, L2WeaponType.BIGBLUNT))
+ {
+ activeChar.sendMessage("This skin is not suitable for your weapon type.");
+ activeChar.sendPacket(new ExShowScreenMessage("This skin is not suitable for your weapon type.", 2000, 2, false));
+ activeChar.sendPacket(new PlaySound("ItemSound3.sys_impossible"));
+ showMySkinList(activeChar, page);
+ return;
+ }
+
+ activeChar.setShieldSkinOption(id);
+ }
+
+ break;
+ }
+
+ activeChar.broadcastUserInfo();
+ showMySkinList(activeChar, page);
+ }
+ }
+
else if (_command.startsWith("dropInfo"))
{
final String[] val = _command.split(" ");
@@ -929,51 +1359,7 @@
activeChar.sendPacket(html);
}
}
- else if (_command.equals("bp_changedressmestatus"))
- {
- if (activeChar.isDressMeEnabled())
- {
- activeChar.setDressMeEnabled(false);
- activeChar.broadcastUserInfo();
- }
- else
- {
- activeChar.setDressMeEnabled(true);
- activeChar.broadcastUserInfo();
- }
-
- DressMe.sendMainWindow(activeChar);
- }
- else if (_command.startsWith("bp_editWindow"))
- {
- String bp = _command.substring(14);
- StringTokenizer st = new StringTokenizer(bp);
-
- sendEditWindow(activeChar, st.nextToken());
- }
- else if (_command.startsWith("bp_setpart"))
- {
- String bp = _command.substring(11);
- StringTokenizer st = new StringTokenizer(bp);
-
- String part = st.nextToken();
- String type = st.nextToken();
-
- setPart(activeChar, part, type);
- }
- else if (_command.startsWith("bp_gettarget"))
- {
- String bp = _command.substring(13);
- StringTokenizer st = new StringTokenizer(bp);
-
- String part = st.nextToken();
-
- stealTarget(activeChar, part);
- }
- else if (_command.equals("bp_main"))
- {
- DressMe.sendMainWindow(activeChar);
- }
+
}
catch (Exception e)
{
@@ -1038,144 +1424,6 @@
return formatedChance;
}
- public void stealTarget(L2PcInstance p, String part)
- {
- if (p.getTarget() == null || !(p.getTarget() instanceof L2PcInstance))
- {
- p.sendMessage("Invalid target.");
- return;
- }
-
- L2PcInstance t = (L2PcInstance) p.getTarget();
-
- if (p.getDressMeData() == null)
- {
- DressMeData dmd = new DressMeData();
- p.setDressMeData(dmd);
- }
-
- boolean returnMain = false;
-
- switch (part)
- {
- case "chest":
- {
- if (t.getInventory().getPaperdollItem(Inventory.PAPERDOLL_CHEST) == null)
- {
- p.getDressMeData().setChestId(0);
- }
- else
- {
- p.getDressMeData().setChestId(t.getInventory().getPaperdollItem(Inventory.PAPERDOLL_CHEST).getItemId());
- }
- break;
- }
- case "legs":
- {
- if (t.getInventory().getPaperdollItem(Inventory.PAPERDOLL_LEGS) == null)
- {
- p.getDressMeData().setLegsId(0);
- }
- else
- {
- p.getDressMeData().setLegsId(t.getInventory().getPaperdollItem(Inventory.PAPERDOLL_LEGS).getItemId());
- }
- break;
- }
- case "gloves":
- {
- if (t.getInventory().getPaperdollItem(Inventory.PAPERDOLL_GLOVES) == null)
- {
- p.getDressMeData().setGlovesId(0);
- }
- else
- {
- p.getDressMeData().setGlovesId(t.getInventory().getPaperdollItem(Inventory.PAPERDOLL_GLOVES).getItemId());
- }
- break;
- }
- case "boots":
- {
- if (t.getInventory().getPaperdollItem(Inventory.PAPERDOLL_FEET) == null)
- {
- p.getDressMeData().setBootsId(0);
- }
- else
- {
- p.getDressMeData().setBootsId(t.getInventory().getPaperdollItem(Inventory.PAPERDOLL_FEET).getItemId());
- }
- break;
- }
- case "weap":
- {
- if (t.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND) == null)
- {
- p.getDressMeData().setWeapId(0);
- }
- else
- {
- p.getDressMeData().setWeapId(t.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).getItemId());
- }
- break;
- }
- case "all":
- {
- if (t.getInventory().getPaperdollItem(Inventory.PAPERDOLL_CHEST) == null)
- {
- p.getDressMeData().setChestId(0);
- }
- else
- {
- p.getDressMeData().setChestId(t.getInventory().getPaperdollItem(Inventory.PAPERDOLL_CHEST).getItemId());
- }
- if (t.getInventory().getPaperdollItem(Inventory.PAPERDOLL_LEGS) == null)
- {
- p.getDressMeData().setLegsId(0);
- }
- else
- {
- p.getDressMeData().setLegsId(t.getInventory().getPaperdollItem(Inventory.PAPERDOLL_LEGS).getItemId());
- }
- if (t.getInventory().getPaperdollItem(Inventory.PAPERDOLL_GLOVES) == null)
- {
- p.getDressMeData().setGlovesId(0);
- }
- else
- {
- p.getDressMeData().setGlovesId(t.getInventory().getPaperdollItem(Inventory.PAPERDOLL_GLOVES).getItemId());
- }
- if (t.getInventory().getPaperdollItem(Inventory.PAPERDOLL_FEET) == null)
- {
- p.getDressMeData().setBootsId(0);
- }
- else
- {
- p.getDressMeData().setBootsId(t.getInventory().getPaperdollItem(Inventory.PAPERDOLL_FEET).getItemId());
- }
- if (t.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND) == null)
- {
- p.getDressMeData().setWeapId(0);
- }
- else
- {
- p.getDressMeData().setWeapId(t.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).getItemId());
- }
- returnMain = true;
- break;
- }
- }
-
- p.broadcastUserInfo();
- if (!returnMain)
- {
- sendEditWindow(p, part);
- }
- else
- {
- DressMe.sendMainWindow(p);
- }
- }
-
public String getItemNameById(int itemId)
{
L2Item item = ItemTable.getInstance().getTemplate(itemId);
@@ -1190,195 +1438,246 @@
return itemName;
}
- public void setPart(L2PcInstance p, String part, String type)
+ public static void showDressMeMainPage(L2PcInstance player)
{
- if (p.getDressMeData() == null)
- {
- DressMeData dmd = new DressMeData();
- p.setDressMeData(dmd);
- }
+ NpcHtmlMessage htm = new NpcHtmlMessage(1);
+ String text = HtmCache.getInstance().getHtm("data/html/dressme/index.htm");
- if (Config.ALLOW_DRESS_ME_FOR_ITEM)
+ htm.setHtml(text);
+
{
- final int currency = Config.DRESS_ME_ITEM_ID;
- final L2ItemInstance item = p.getInventory().getItemByItemId(currency);
+ htm.replace("%time%", sdf.format(new Date(System.currentTimeMillis())));
+ htm.replace("%dat%", (new SimpleDateFormat("dd/MM/yyyy")).format(new Date(System.currentTimeMillis())));
- if (item == null || item.getCount() < Config.DRESS_ME_ITEM_COUNT)
- {
- p.sendMessage("You don't have enough " + getItemNameById(currency) + ".");
- p.sendPacket(new ExShowScreenMessage("You don't have enough " + getItemNameById(currency) + ".", 3000, 2, false));
- p.sendPacket(new PlaySound("ItemSound3.sys_impossible"));
- return;
- }
-
- p.destroyItem("Consume", item.getObjectId(), Config.DRESS_ME_ITEM_COUNT, null, true);
}
- if (Config.ALLOW_DRESS_ME_FOR_PREMIUM)
- {
- if (p.getPremiumService() == 0)
- {
- p.sendMessage("You're not The Premium Account.");
- p.sendPacket(new ExShowScreenMessage("You're not The Premium account.", 3000, 2, false));
- p.sendPacket(new PlaySound("ItemSound3.sys_impossible"));
- return;
- }
- }
-
- switch (part)
- {
- case "chest":
- {
- if (Config.DRESS_ME_CHESTS.keySet().contains(type))
- {
- p.getDressMeData().setChestId(Config.DRESS_ME_CHESTS.get(type));
- }
-
- break;
- }
- case "legs":
- {
- if (Config.DRESS_ME_LEGS.keySet().contains(type))
- {
- p.getDressMeData().setLegsId(Config.DRESS_ME_LEGS.get(type));
- }
-
- break;
- }
- case "gloves":
- {
- if (Config.DRESS_ME_GLOVES.keySet().contains(type))
- {
- p.getDressMeData().setGlovesId(Config.DRESS_ME_GLOVES.get(type));
- }
-
- break;
- }
- case "boots":
- {
- if (Config.DRESS_ME_BOOTS.keySet().contains(type))
- {
- p.getDressMeData().setBootsId(Config.DRESS_ME_BOOTS.get(type));
- }
-
- break;
- }
- case "weap":
- {
- if (Config.DRESS_ME_WEAPONS.keySet().contains(type))
- {
- p.getDressMeData().setWeapId(Config.DRESS_ME_WEAPONS.get(type));
- }
-
- break;
- }
- }
-
- p.broadcastUserInfo();
- sendEditWindow(p, part);
+ player.sendPacket(htm);
}
- public void sendEditWindow(L2PcInstance p, String part)
+ static SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
+
+ private static void showSkinList(L2PcInstance player, String type, int page)
{
- NpcHtmlMessage htm = new NpcHtmlMessage(0);
- htm.setFile("./data/html/custom/dressme/edit.htm");
- htm.replace("%part%", part);
+ NpcHtmlMessage html = new NpcHtmlMessage(1);
- switch (part)
+ html.setFile("data/html/dressme/allskins.htm");
+
+ html.replace("%time%", sdf.format(new Date(System.currentTimeMillis())));
+ html.replace("%dat%", (new SimpleDateFormat("dd/MM/yyyy")).format(new Date(System.currentTimeMillis())));
+
+ final int ITEMS_PER_PAGE = 8;
+
+ int myPage = 1;
+ int i = 0;
+ int shown = 0;
+ boolean hasMore = false;
+ int itemId = 0;
+
+ final StringBuilder sb = new StringBuilder();
+
+ List<SkinPackage> tempList = null;
+ switch (type.toLowerCase())
{
- case "chest":
- {
- if (p.getDressMeData() == null)
- {
- htm.replace("%partinfo%", "You have no custom chest.");
- }
- else
- {
- htm.replace("%partinfo%", p.getDressMeData().getChestId() == 0 ? "You have no custom chest." : ItemTable.getInstance().getTemplate(p.getDressMeData().getChestId()).getName());
- }
- String temp = "";
- for (String s : Config.DRESS_ME_CHESTS.keySet())
- {
- temp += s + ";";
- }
- htm.replace("%dropboxdata%", temp);
+ case "armor":
+ tempList = DressMeData.getInstance().getArmorSkinOptions().values().stream().filter(s -> !player.hasArmorSkin(s.getId())).collect(Collectors.toList());
break;
- }
- case "legs":
- {
- if (p.getDressMeData() == null)
- {
- htm.replace("%partinfo%", "You have no custom legs.");
- }
- else
- {
- htm.replace("%partinfo%", p.getDressMeData().getLegsId() == 0 ? "You have no custom legs." : ItemTable.getInstance().getTemplate(p.getDressMeData().getLegsId()).getName());
- }
- String temp = "";
- for (String s : Config.DRESS_ME_LEGS.keySet())
- {
- temp += s + ";";
- }
- htm.replace("%dropboxdata%", temp);
+ case "weapon":
+ tempList = DressMeData.getInstance().getWeaponSkinOptions().values().stream().filter(s -> !player.hasWeaponSkin(s.getId())).collect(Collectors.toList());
break;
- }
- case "gloves":
- {
- if (p.getDressMeData() == null)
- {
- htm.replace("%partinfo%", "You have no custom gloves.");
- }
- else
- {
- htm.replace("%partinfo%", p.getDressMeData().getGlovesId() == 0 ? "You have no custom gloves." : ItemTable.getInstance().getTemplate(p.getDressMeData().getGlovesId()).getName());
- }
- String temp = "";
- for (String s : Config.DRESS_ME_GLOVES.keySet())
- {
- temp += s + ";";
- }
- htm.replace("%dropboxdata%", temp);
+ case "hair":
+ tempList = DressMeData.getInstance().getHairSkinOptions().values().stream().filter(s -> !player.hasHairSkin(s.getId())).collect(Collectors.toList());
break;
- }
- case "boots":
- {
- if (p.getDressMeData() == null)
- {
- htm.replace("%partinfo%", "You have no custom boots.");
- }
- else
- {
- htm.replace("%partinfo%", p.getDressMeData().getBootsId() == 0 ? "You have no custom boots." : ItemTable.getInstance().getTemplate(p.getDressMeData().getBootsId()).getName());
- }
- String temp = "";
- for (String s : Config.DRESS_ME_BOOTS.keySet())
- {
- temp += s + ";";
- }
- htm.replace("%dropboxdata%", temp);
+ case "face":
+ tempList = DressMeData.getInstance().getFaceSkinOptions().values().stream().filter(s -> !player.hasFaceSkin(s.getId())).collect(Collectors.toList());
break;
- }
- case "weap":
- {
- if (p.getDressMeData() == null)
- {
- htm.replace("%partinfo%", "You have no custom weapon.");
- }
- else
- {
- htm.replace("%partinfo%", p.getDressMeData().getWeapId() == 0 ? "You have no custom weapon." : ItemTable.getInstance().getTemplate(p.getDressMeData().getWeapId()).getName());
- }
- String temp = "";
- for (String s : Config.DRESS_ME_WEAPONS.keySet())
- {
- temp += s + ";";
- }
- htm.replace("%dropboxdata%", temp);
+ case "shield":
+ tempList = DressMeData.getInstance().getShieldSkinOptions().values().stream().filter(s -> !player.hasShieldSkin(s.getId())).collect(Collectors.toList());
break;
+ }
+
+ if (tempList != null && !tempList.isEmpty())
+ {
+ for (SkinPackage sp : tempList)
+ {
+ if (sp == null)
+ {
+ continue;
+ }
+
+ if (shown == ITEMS_PER_PAGE)
+ {
+ hasMore = true;
+ break;
+ }
+
+ if (myPage != page)
+ {
+ i++;
+ if (i == ITEMS_PER_PAGE)
+ {
+ myPage++;
+ i = 0;
+ }
+ continue;
+ }
+
+ if (shown == ITEMS_PER_PAGE)
+ {
+ hasMore = true;
+ break;
+ }
+
+ switch (type.toLowerCase())
+ {
+ case "armor":
+ itemId = sp.getChestId();
+ break;
+ case "weapon":
+ itemId = sp.getWeaponId();
+ break;
+ case "hair":
+ itemId = sp.getHairId();
+ break;
+ case "face":
+ itemId = sp.getFaceId();
+ break;
+ case "shield":
+ itemId = sp.getShieldId();
+ break;
+ }
+
+ sb.append("<table border=0 cellspacing=0 cellpadding=2 height=36><tr>");
+ sb.append("<td width=32 align=center>" + "<button width=32 height=32 back=" + L2Item.getItemIcon(itemId) + " fore=" + L2Item.getItemIcon(itemId) + ">" + "</td>");
+ sb.append("<td width=124>" + sp.getName() + "<br1> <font color=999999>Price:</font> <font color=339966>" + L2Item.getItemNameById(sp.getPriceId()) + "</font> (<font color=LEVEL>" + sp.getPriceCount() + "</font>)</td>");
+ sb.append("<td align=center width=65>" + "<button value=\"Buy\" action=\"bypass -h dressme " + page + " buyskin " + sp.getId() + " " + type + " " + itemId + "\" width=65 height=19 back=L2UI_ch3.smallbutton2_over fore=L2UI_ch3.smallbutton2>" + "</td>");
+ sb.append("<td align=center width=65>" + "<button value=\"Try\" action=\"bypass -h dressme " + page + " tryskin " + sp.getId() + " " + type + "\" width=65 height=19 back=L2UI_ch3.smallbutton2_over fore=L2UI_ch3.smallbutton2>" + "</td>");
+
+ sb.append("</tr></table>");
+ sb.append("<img src=\"L2UI.Squaregray\" width=\"300\" height=\"1\">");
+ shown++;
}
}
- p.sendPacket(htm);
+ sb.append("<table width=300><tr>");
+ sb.append("<td align=center width=70>" + (page > 1 ? "<button value=\"< PREV\" action=\"bypass -h dressme " + (page - 1) + " skinlist " + type + "\" width=65 height=19 back=L2UI_ch3.smallbutton2_over fore=L2UI_ch3.smallbutton2>" : "") + "</td>");
+ sb.append("<td align=center width=140>Page: " + page + "</td>");
+ sb.append("<td align=center width=70>" + (hasMore ? "<button value=\"NEXT >\" action=\"bypass -h dressme " + (page + 1) + " skinlist " + type + "\" width=65 height=19 back=L2UI_ch3.smallbutton2_over fore=L2UI_ch3.smallbutton2>" : "") + "</td>");
+ sb.append("</tr></table>");
+
+ html.replace("%showList%", sb.toString());
+ player.sendPacket(html);
+ }
+
+ private static void showMySkinList(L2PcInstance player, int page)
+ {
+ NpcHtmlMessage html = new NpcHtmlMessage(1);
+ html.setFile("data/html/dressme/myskins.htm");
+
+ html.replace("%time%", sdf.format(new Date(System.currentTimeMillis())));
+ html.replace("%dat%", (new SimpleDateFormat("dd/MM/yyyy")).format(new Date(System.currentTimeMillis())));
+
+ final int ITEMS_PER_PAGE = 8;
+ int itemId = 0;
+
+ int myPage = 1;
+ int i = 0;
+ int shown = 0;
+ boolean hasMore = false;
+
+ final StringBuilder sb = new StringBuilder();
+
+ List<SkinPackage> armors = DressMeData.getInstance().getArmorSkinOptions().values().stream().filter(s -> player.hasArmorSkin(s.getId())).collect(Collectors.toList());
+ List<SkinPackage> weapons = DressMeData.getInstance().getWeaponSkinOptions().values().stream().filter(s -> player.hasWeaponSkin(s.getId())).collect(Collectors.toList());
+ List<SkinPackage> hairs = DressMeData.getInstance().getHairSkinOptions().values().stream().filter(s -> player.hasHairSkin(s.getId())).collect(Collectors.toList());
+ // List<SkinPackage> faces = DressMeData.getInstance().getFaceSkinOptions().values().stream().filter(s -> player.hasFaceSkin(s.getId())).collect(Collectors.toList());
+ List<SkinPackage> shield = DressMeData.getInstance().getShieldSkinOptions().values().stream().filter(s -> player.hasShieldSkin(s.getId())).collect(Collectors.toList());
+
+ List<SkinPackage> list = Stream.concat(armors.stream(), weapons.stream()).collect(Collectors.toList());
+ shield.stream().collect(Collectors.toList());
+ List<SkinPackage> list2 = Stream.concat(hairs.stream(), shield.stream()).collect(Collectors.toList());
+
+ List<SkinPackage> allLists = Stream.concat(list.stream(), list2.stream()).collect(Collectors.toList());
+
+ if (!allLists.isEmpty())
+ {
+ for (SkinPackage sp : allLists)
+ {
+ if (sp == null)
+ {
+ continue;
+ }
+
+ if (shown == ITEMS_PER_PAGE)
+ {
+ hasMore = true;
+ break;
+ }
+
+ if (myPage != page)
+ {
+ i++;
+ if (i == ITEMS_PER_PAGE)
+ {
+ myPage++;
+ i = 0;
+ }
+ continue;
+ }
+
+ if (shown == ITEMS_PER_PAGE)
+ {
+ hasMore = true;
+ break;
+ }
+
+ switch (sp.getType().toLowerCase())
+ {
+ case "armor":
+ itemId = sp.getChestId();
+ break;
+ case "weapon":
+ itemId = sp.getWeaponId();
+ break;
+ case "hair":
+ itemId = sp.getHairId();
+ break;
+ case "face":
+ itemId = sp.getFaceId();
+ break;
+ case "shield":
+ itemId = sp.getShieldId();
+ break;
+ }
+
+ sb.append("<table border=0 cellspacing=0 cellpadding=2 height=36><tr>");
+ sb.append("<td width=32 align=center>" + "<button width=32 height=32 back=" + L2Item.getItemIcon(itemId) + " fore=" + L2Item.getItemIcon(itemId) + ">" + "</td>");
+ sb.append("<td width=124>" + sp.getName() + "</td>");
+ sb.append("<td align=center width=65>" + "<button value=\"Equip\" action=\"bypass -h dressme " + page + " setskin " + sp.getId() + " " + sp.getType() + " " + itemId + "\" width=65 height=19 back=L2UI_ch3.smallbutton2_over fore=L2UI_ch3.smallbutton2>" + "</td>");
+ sb.append("<td align=center width=65>" + "<button value=\"Remove\" action=\"bypass -h dressme " + page + " clean " + sp.getType() + "\" width=65 height=19 back=L2UI_ch3.smallbutton2_over fore=L2UI_ch3.smallbutton2>" + "</td>");
+ sb.append("</tr></table>");
+ sb.append("<img src=\"L2UI.Squaregray\" width=\"300\" height=\"1\">");
+ shown++;
+ }
+ }
+
+ sb.append("<table width=300><tr>");
+ sb.append("<td align=center width=70>" + (page > 1 ? "<button value=\"< PREV\" action=\"bypass -h dressme " + (page - 1) + " myskinlist\" width=65 height=19 back=L2UI_ch3.smallbutton2_over fore=L2UI_ch3.smallbutton2>" : "") + "</td>");
+ sb.append("<td align=center width=140>Page: " + page + "</td>");
+ sb.append("<td align=center width=70>" + (hasMore ? "<button value=\"NEXT >\" action=\"bypass -h dressme " + (page + 1) + " myskinlist\" width=65 height=19 back=L2UI_ch3.smallbutton2_over fore=L2UI_ch3.smallbutton2>" : "") + "</td>");
+ sb.append("</tr></table>");
+
+ html.replace("%showList%", sb.toString());
+ player.sendPacket(html);
+ }
+
+ public boolean checkWeapons(L2PcInstance player, L2ItemInstance skin, L2WeaponType weapon1, L2WeaponType weapon2)
+ {
+ if (player.getActiveWeaponItem().getItemType() == weapon1 && skin.getItem().getItemType() != weapon2)
+ {
+ return false;
+ }
+
+ return true;
}
@Override
diff --git src/l2jorion/game/network/serverpackets/CharInfo.java src/l2jorion/game/network/serverpackets/CharInfo.java
index 862911a..7473b11 100644
--- src/l2jorion/game/network/serverpackets/CharInfo.java
+++ src/l2jorion/game/network/serverpackets/CharInfo.java
@@ -25,11 +25,13 @@
import l2jorion.Config;
import l2jorion.game.datatables.sql.NpcTable;
+import l2jorion.game.datatables.xml.DressMeData;
import l2jorion.game.managers.CursedWeaponsManager;
import l2jorion.game.model.Inventory;
import l2jorion.game.model.L2Character;
import l2jorion.game.model.actor.instance.L2CubicInstance;
import l2jorion.game.model.actor.instance.L2PcInstance;
+import l2jorion.game.model.base.SkinPackage;
import l2jorion.game.templates.L2NpcTemplate;
import l2jorion.logger.Logger;
import l2jorion.logger.LoggerFactory;
@@ -182,55 +184,81 @@
writeD(_activeChar.getBaseClass());
}
- if (!_activeChar.isDressMeEnabled())
+ if (Config.ALLOW_DRESS_ME_SYSTEM)
{
-
- writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_DHAIR));
-
- if (!Config.FAKE_ARMORS)
+ if (_activeChar.getWeaponSkinOption() > 0 && getWeaponOption(_activeChar.getWeaponSkinOption()) != null)
{
- writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_HEAD));
+ writeD(getWeaponOption(_activeChar.getWeaponSkinOption()).getWeaponId() != 0 ? getWeaponOption(_activeChar.getWeaponSkinOption()).getWeaponId() : _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND));
}
else
{
- writeD(_fakeArmorItemId == 0 ? _inv.getPaperdollItemId(Inventory.PAPERDOLL_HEAD) : 0);
+ writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND));
}
- writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_RHAND));
- writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_LHAND));
-
- if (!Config.FAKE_ARMORS)
+ if (_activeChar.getShieldSkinOption() > 0 && getShieldOption(_activeChar.getShieldSkinOption()) != null)
{
- 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(getShieldOption(_activeChar.getShieldSkinOption()).getShieldId() != 0 ? getShieldOption(_activeChar.getShieldSkinOption()).getShieldId() : _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LHAND));
}
else
{
- writeD(_fakeArmorItemId == 0 ? _inv.getPaperdollItemId(Inventory.PAPERDOLL_GLOVES) : 0);
- writeD(_fakeArmorItemId == 0 ? _inv.getPaperdollItemId(Inventory.PAPERDOLL_CHEST) : _fakeArmorItemId);
- writeD(_fakeArmorItemId == 0 ? _inv.getPaperdollItemId(Inventory.PAPERDOLL_LEGS) : 0);
- writeD(_fakeArmorItemId == 0 ? _inv.getPaperdollItemId(Inventory.PAPERDOLL_FEET) : 0);
+ writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LHAND));
}
- writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_BACK));
- writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_LRHAND));
- writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_HAIR));
- writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_FACE));
+ if (_activeChar.getArmorSkinOption() > 0 && getArmorOption(_activeChar.getArmorSkinOption()) != null)
+ {
+ writeD(getArmorOption(_activeChar.getArmorSkinOption()).getGlovesId() != 0 ? getArmorOption(_activeChar.getArmorSkinOption()).getGlovesId() : _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_GLOVES));
+ writeD(getArmorOption(_activeChar.getArmorSkinOption()).getChestId() != 0 ? getArmorOption(_activeChar.getArmorSkinOption()).getChestId() : _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_CHEST));
+ writeD(getArmorOption(_activeChar.getArmorSkinOption()).getLegsId() != 0 ? getArmorOption(_activeChar.getArmorSkinOption()).getLegsId() : _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEGS));
+ writeD(getArmorOption(_activeChar.getArmorSkinOption()).getFeetId() != 0 ? getArmorOption(_activeChar.getArmorSkinOption()).getFeetId() : _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FEET));
+ }
+ else
+ {
+ writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_GLOVES));
+ writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_CHEST));
+ writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEGS));
+ writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FEET));
+ }
+
+ writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_BACK));
+
+ if (_activeChar.getWeaponSkinOption() > 0 && getWeaponOption(_activeChar.getWeaponSkinOption()) != null)
+ {
+ writeD(getWeaponOption(_activeChar.getWeaponSkinOption()).getWeaponId() != 0 ? getWeaponOption(_activeChar.getWeaponSkinOption()).getWeaponId() : _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LRHAND));
+ }
+ else
+ {
+ writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LRHAND));
+ }
+
+ if (_activeChar.getHairSkinOption() > 0 && getHairOption(_activeChar.getHairSkinOption()) != null)
+ {
+ writeD(getHairOption(_activeChar.getHairSkinOption()).getHairId() != 0 ? getHairOption(_activeChar.getHairSkinOption()).getHairId() : _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HAIR));
+ }
+ else
+ {
+ writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HAIR));
+ }
+
+ if (_activeChar.getFaceSkinOption() > 0 && getFaceOption(_activeChar.getFaceSkinOption()) != null)
+ {
+ writeD(getFaceOption(_activeChar.getFaceSkinOption()).getFaceId() != 0 ? getFaceOption(_activeChar.getFaceSkinOption()).getFaceId() : _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FACE));
+ }
+ else
+ {
+ writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FACE));
+ }
+
}
else
{
- writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_DHAIR));
- writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_HEAD));
- writeD(_activeChar.getDressMeData() == null ? _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND) : (_activeChar.getDressMeData().getWeapId() == 0 ? _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND) : _activeChar.getDressMeData().getWeapId()));
+ writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_RHAND));
writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_LHAND));
- writeD(_activeChar.getDressMeData() == null ? _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_GLOVES) : (_activeChar.getDressMeData().getGlovesId() == 0 ? _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_GLOVES) : _activeChar.getDressMeData().getGlovesId()));
- writeD(_activeChar.getDressMeData() == null ? _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_CHEST) : (_activeChar.getDressMeData().getChestId() == 0 ? _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_CHEST) : _activeChar.getDressMeData().getChestId()));
- writeD(_activeChar.getDressMeData() == null ? _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEGS) : (_activeChar.getDressMeData().getLegsId() == 0 ? _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEGS) : _activeChar.getDressMeData().getLegsId()));
- writeD(_activeChar.getDressMeData() == null ? _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FEET) : (_activeChar.getDressMeData().getBootsId() == 0 ? _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FEET) : _activeChar.getDressMeData().getBootsId()));
+ 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(_activeChar.getDressMeData() == null ? _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND) : (_activeChar.getDressMeData().getWeapId() == 0 ? _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND) : _activeChar.getDressMeData().getWeapId()));
+ writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_LRHAND));
writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_HAIR));
writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_FACE));
}
@@ -393,6 +421,31 @@
}
}
+ public SkinPackage getArmorOption(int option)
+ {
+ return (DressMeData.getInstance().getArmorSkinsPackage(option));
+ }
+
+ public SkinPackage getWeaponOption(int option)
+ {
+ return DressMeData.getInstance().getWeaponSkinsPackage(option);
+ }
+
+ public SkinPackage getHairOption(int option)
+ {
+ return DressMeData.getInstance().getHairSkinsPackage(option);
+ }
+
+ public SkinPackage getFaceOption(int option)
+ {
+ return DressMeData.getInstance().getFaceSkinsPackage(option);
+ }
+
+ public SkinPackage getShieldOption(int option)
+ {
+ return DressMeData.getInstance().getShieldSkinsPackage(option);
+ }
+
@Override
public String getType()
{
diff --git src/l2jorion/game/network/serverpackets/UserInfo.java src/l2jorion/game/network/serverpackets/UserInfo.java
index bdc941f..94dcaf8 100644
--- src/l2jorion/game/network/serverpackets/UserInfo.java
+++ src/l2jorion/game/network/serverpackets/UserInfo.java
@@ -22,10 +22,12 @@
import l2jorion.Config;
import l2jorion.game.datatables.sql.NpcTable;
+import l2jorion.game.datatables.xml.DressMeData;
import l2jorion.game.managers.CursedWeaponsManager;
import l2jorion.game.model.Inventory;
import l2jorion.game.model.L2Summon;
import l2jorion.game.model.actor.instance.L2PcInstance;
+import l2jorion.game.model.base.SkinPackage;
import l2jorion.game.templates.L2NpcTemplate;
public class UserInfo extends L2GameServerPacket
@@ -115,125 +117,178 @@
writeD(_activeChar.getActiveWeaponItem() != null ? 40 : 20); // 20 no weapon, 40 weapon equippe
- if (!_activeChar.isDressMeEnabled())
+ writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_DHAIR));
+ writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_REAR));
+ writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEAR));
+ writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_NECK));
+ writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RFINGER));
+ writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LFINGER));
+ writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HEAD));
+ if (Config.ALLOW_DRESS_ME_SYSTEM)
{
- writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_DHAIR));
- writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_REAR));
- writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEAR));
- writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_NECK));
- writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RFINGER));
- writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LFINGER));
-
- if (!Config.FAKE_ARMORS)
+ if (_activeChar.getWeaponSkinOption() > 0 && getWeaponOption(_activeChar.getWeaponSkinOption()) != null)
{
- writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HEAD));
+ writeD(getWeaponOption(_activeChar.getWeaponSkinOption()).getWeaponId() != 0 ? getWeaponOption(_activeChar.getWeaponSkinOption()).getWeaponId() : _activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RHAND));
}
else
{
- writeD(_fakeArmorObjectId == 0 ? _activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HEAD) : 0);
+ writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RHAND));
}
- writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RHAND));
- writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LHAND));
+ if (_activeChar.getShieldSkinOption() > 0 && getShieldOption(_activeChar.getShieldSkinOption()) != null)
+ {
+ writeD(getShieldOption(_activeChar.getShieldSkinOption()).getShieldId() != 0 ? getShieldOption(_activeChar.getShieldSkinOption()).getShieldId() : _activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LHAND));
+ }
+ else
+ {
+ writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LHAND));
+ }
- if (!Config.FAKE_ARMORS)
+ if (_activeChar.getArmorSkinOption() > 0 && getArmorOption(_activeChar.getArmorSkinOption()) != null)
+ {
+ writeD(getArmorOption(_activeChar.getArmorSkinOption()).getGlovesId() != 0 ? getArmorOption(_activeChar.getArmorSkinOption()).getGlovesId() : _activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_GLOVES));
+ writeD(getArmorOption(_activeChar.getArmorSkinOption()).getChestId() != 0 ? getArmorOption(_activeChar.getArmorSkinOption()).getChestId() : _activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_CHEST));
+ writeD(getArmorOption(_activeChar.getArmorSkinOption()).getLegsId() != 0 ? getArmorOption(_activeChar.getArmorSkinOption()).getLegsId() : _activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEGS));
+ writeD(getArmorOption(_activeChar.getArmorSkinOption()).getFeetId() != 0 ? getArmorOption(_activeChar.getArmorSkinOption()).getFeetId() : _activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_FEET));
+ }
+ else
{
writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_GLOVES));
writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_CHEST));
writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEGS));
writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_FEET));
}
+
+ writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_BACK));
+
+ if (_activeChar.getWeaponSkinOption() > 0 && getWeaponOption(_activeChar.getWeaponSkinOption()) != null)
+ {
+ writeD(getWeaponOption(_activeChar.getWeaponSkinOption()).getWeaponId() != 0 ? getWeaponOption(_activeChar.getWeaponSkinOption()).getWeaponId() : _activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LRHAND));
+ }
else
{
- writeD(_fakeArmorObjectId == 0 ? _activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_GLOVES) : 0);
- writeD(_fakeArmorObjectId == 0 ? _activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_CHEST) : _fakeArmorObjectId);
- writeD(_fakeArmorObjectId == 0 ? _activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEGS) : 0);
- writeD(_fakeArmorObjectId == 0 ? _activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_FEET) : 0);
+ writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LRHAND));
}
+ if (_activeChar.getHairSkinOption() > 0 && getHairOption(_activeChar.getHairSkinOption()) != null)
+ {
+ writeD(getHairOption(_activeChar.getHairSkinOption()).getHairId() != 0 ? getHairOption(_activeChar.getHairSkinOption()).getHairId() : _activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HAIR));
+ }
+ else
+ {
+ writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HAIR));
+ }
+
+ if (_activeChar.getFaceSkinOption() > 0 && getFaceOption(_activeChar.getFaceSkinOption()) != null)
+ {
+ writeD(getFaceOption(_activeChar.getFaceSkinOption()).getFaceId() != 0 ? getFaceOption(_activeChar.getFaceSkinOption()).getFaceId() : _activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_FACE));
+ }
+ else
+ {
+ writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_FACE));
+ }
+
+ }
+ else
+ {
+ writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RHAND));
+ writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LHAND));
+ writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_GLOVES));
+ writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_CHEST));
+ writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEGS));
+ writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_FEET));
writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_BACK));
writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LRHAND));
writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HAIR));
writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_FACE));
-
- writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_DHAIR));
- writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_REAR));
- writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEAR));
- writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_NECK));
- writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RFINGER));
- writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LFINGER));
-
- if (!Config.FAKE_ARMORS)
+ }
+
+ writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_DHAIR));
+ writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_REAR));
+ writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEAR));
+ writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_NECK));
+ writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RFINGER));
+ writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LFINGER));
+ writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HEAD));
+
+ if (Config.ALLOW_DRESS_ME_SYSTEM)
+ {
+ if (_activeChar.getWeaponSkinOption() > 0 && getWeaponOption(_activeChar.getWeaponSkinOption()) != null)
{
- writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HEAD));
+ writeD(getWeaponOption(_activeChar.getWeaponSkinOption()).getWeaponId() != 0 ? getWeaponOption(_activeChar.getWeaponSkinOption()).getWeaponId() : _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND));
}
else
{
- writeD(_fakeArmorObjectId == 0 ? _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HEAD) : 0);
+ writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND));
}
- writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND));
- writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LHAND));
+ if (_activeChar.getShieldSkinOption() > 0 && getShieldOption(_activeChar.getShieldSkinOption()) != null)
+ {
+ writeD(getShieldOption(_activeChar.getShieldSkinOption()).getShieldId() != 0 ? getShieldOption(_activeChar.getShieldSkinOption()).getShieldId() : _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LHAND));
+ }
+ else
+ {
+ writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LHAND));
+ }
- if (!Config.FAKE_ARMORS)
+ if (_activeChar.getArmorSkinOption() > 0 && getArmorOption(_activeChar.getArmorSkinOption()) != null)
+ {
+ writeD(getArmorOption(_activeChar.getArmorSkinOption()).getGlovesId() != 0 ? getArmorOption(_activeChar.getArmorSkinOption()).getGlovesId() : _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_GLOVES));
+ writeD(getArmorOption(_activeChar.getArmorSkinOption()).getChestId() != 0 ? getArmorOption(_activeChar.getArmorSkinOption()).getChestId() : _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_CHEST));
+ writeD(getArmorOption(_activeChar.getArmorSkinOption()).getLegsId() != 0 ? getArmorOption(_activeChar.getArmorSkinOption()).getLegsId() : _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEGS));
+ writeD(getArmorOption(_activeChar.getArmorSkinOption()).getFeetId() != 0 ? getArmorOption(_activeChar.getArmorSkinOption()).getFeetId() : _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FEET));
+ }
+ else
{
writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_GLOVES));
writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_CHEST));
writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEGS));
writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FEET));
}
+
+ writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_BACK));
+
+ if (_activeChar.getWeaponSkinOption() > 0 && getWeaponOption(_activeChar.getWeaponSkinOption()) != null)
+ {
+ writeD(getWeaponOption(_activeChar.getWeaponSkinOption()).getWeaponId() != 0 ? getWeaponOption(_activeChar.getWeaponSkinOption()).getWeaponId() : _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LRHAND));
+ }
else
{
- writeD(_fakeArmorObjectId == 0 ? _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_GLOVES) : 0);
- writeD(_fakeArmorObjectId == 0 ? _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_CHEST) : _fakeArmorItemId);
- writeD(_fakeArmorObjectId == 0 ? _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEGS) : 0);
- writeD(_fakeArmorObjectId == 0 ? _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FEET) : 0);
+ writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LRHAND));
}
+ if (_activeChar.getHairSkinOption() > 0 && getHairOption(_activeChar.getHairSkinOption()) != null)
+ {
+ writeD(getHairOption(_activeChar.getHairSkinOption()).getHairId() != 0 ? getHairOption(_activeChar.getHairSkinOption()).getHairId() : _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HAIR));
+ }
+ else
+ {
+ writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HAIR));
+ }
+
+ if (_activeChar.getFaceSkinOption() > 0 && getFaceOption(_activeChar.getFaceSkinOption()) != null)
+ {
+ writeD(getFaceOption(_activeChar.getFaceSkinOption()).getFaceId() != 0 ? getFaceOption(_activeChar.getFaceSkinOption()).getFaceId() : _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FACE));
+ }
+ else
+ {
+ writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FACE));
+ }
+
+ }
+ else
+ {
+ writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND));
+ writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LHAND));
+ writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_GLOVES));
+ writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_CHEST));
+ writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEGS));
+ writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FEET));
writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_BACK));
writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LRHAND));
writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HAIR));
writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FACE));
}
- else
- {
- writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_DHAIR));
- writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_REAR));
- writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEAR));
- writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_NECK));
- writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RFINGER));
- writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LFINGER));
- writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HEAD));
- writeD(_activeChar.getDressMeData() == null ? _activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RHAND) : (_activeChar.getDressMeData().getWeapId() == 0 ? _activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RHAND) : _activeChar.getDressMeData().getWeapId()));
- writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LHAND));
- writeD(_activeChar.getDressMeData() == null ? _activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_GLOVES) : (_activeChar.getDressMeData().getGlovesId() == 0 ? _activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_GLOVES) : _activeChar.getDressMeData().getGlovesId()));
- writeD(_activeChar.getDressMeData() == null ? _activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_CHEST) : (_activeChar.getDressMeData().getChestId() == 0 ? _activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_CHEST) : _activeChar.getDressMeData().getChestId()));
- writeD(_activeChar.getDressMeData() == null ? _activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEGS) : (_activeChar.getDressMeData().getLegsId() == 0 ? _activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_LEGS) : _activeChar.getDressMeData().getLegsId()));
- writeD(_activeChar.getDressMeData() == null ? _activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_FEET) : (_activeChar.getDressMeData().getBootsId() == 0 ? _activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_FEET) : _activeChar.getDressMeData().getBootsId()));
- writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_BACK));
- writeD(_activeChar.getDressMeData() == null ? _activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RHAND) : (_activeChar.getDressMeData().getWeapId() == 0 ? _activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_RHAND) : _activeChar.getDressMeData().getWeapId()));
- writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_HAIR));
- writeD(_activeChar.getInventory().getPaperdollObjectId(Inventory.PAPERDOLL_FACE));
-
- writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_DHAIR));
- writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_REAR));
- writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEAR));
- writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_NECK));
- writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RFINGER));
- writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LFINGER));
- writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HEAD));
- writeD(_activeChar.getDressMeData() == null ? _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND) : (_activeChar.getDressMeData().getWeapId() == 0 ? _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND) : _activeChar.getDressMeData().getWeapId()));
- writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LHAND));
- writeD(_activeChar.getDressMeData() == null ? _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_GLOVES) : (_activeChar.getDressMeData().getGlovesId() == 0 ? _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_GLOVES) : _activeChar.getDressMeData().getGlovesId()));
- writeD(_activeChar.getDressMeData() == null ? _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_CHEST) : (_activeChar.getDressMeData().getChestId() == 0 ? _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_CHEST) : _activeChar.getDressMeData().getChestId()));
- writeD(_activeChar.getDressMeData() == null ? _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEGS) : (_activeChar.getDressMeData().getLegsId() == 0 ? _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_LEGS) : _activeChar.getDressMeData().getLegsId()));
- writeD(_activeChar.getDressMeData() == null ? _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FEET) : (_activeChar.getDressMeData().getBootsId() == 0 ? _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FEET) : _activeChar.getDressMeData().getBootsId()));
- writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_BACK));
- writeD(_activeChar.getDressMeData() == null ? _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND) : (_activeChar.getDressMeData().getWeapId() == 0 ? _activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_RHAND) : _activeChar.getDressMeData().getWeapId()));
- writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_HAIR));
- writeD(_activeChar.getInventory().getPaperdollItemId(Inventory.PAPERDOLL_FACE));
-
- }
writeH(0x00);
writeH(0x00);
@@ -407,6 +462,31 @@
}
}
+ public SkinPackage getArmorOption(int option)
+ {
+ return (DressMeData.getInstance().getArmorSkinsPackage(option));
+ }
+
+ public SkinPackage getWeaponOption(int option)
+ {
+ return DressMeData.getInstance().getWeaponSkinsPackage(option);
+ }
+
+ public SkinPackage getHairOption(int option)
+ {
+ return DressMeData.getInstance().getHairSkinsPackage(option);
+ }
+
+ public SkinPackage getFaceOption(int option)
+ {
+ return DressMeData.getInstance().getFaceSkinsPackage(option);
+ }
+
+ public SkinPackage getShieldOption(int option)
+ {
+ return DressMeData.getInstance().getShieldSkinsPackage(option);
+ }
+
@Override
public String getType()
{
diff --git src/l2jorion/game/templates/L2Item.java src/l2jorion/game/templates/L2Item.java
index 7cc35b9..7372f22 100644
--- src/l2jorion/game/templates/L2Item.java
+++ src/l2jorion/game/templates/L2Item.java
@@ -29,6 +29,7 @@
import javolution.util.FastList;
import javolution.util.FastMap;
import l2jorion.Config;
+import l2jorion.game.datatables.sql.ItemTable;
import l2jorion.game.model.L2Character;
import l2jorion.game.model.L2Effect;
import l2jorion.game.model.L2Skill;
@@ -648,7 +649,21 @@
return (getItemType() == L2EtcItemType.QUEST);
}
- public String getItemIcon(int itemId)
+ public static String getItemNameById(int itemId)
+ {
+ L2Item item = ItemTable.getInstance().getTemplate(itemId);
+
+ String itemName = "NoName";
+
+ if (itemId != 0)
+ {
+ itemName = item.getName();
+ }
+
+ return itemName;
+ }
+
+ public static String getItemIcon(int itemId)
{
if (_Icons != null && !_Icons.isEmpty())
{