Noticias:

Debes de estar registrado para poder ver el contenido indicado. Registrate o Conectate

Menú Principal

Personalizacion del Jugador

Iniciado por Swarlog, Ago 11, 2022, 01:27 AM

Tema anterior - Siguiente tema

Swarlog

Bueno leyendo por hay encontre esto que puede ser interesante para algunos,se trata de un npc para cambiar apariencia, name, color title, color name, face y hair. Es bueno para usarlo como servicio de donacion. Personalmente no lo he probado, solo he almacenado el code.

CORE:

    ### Eclipse Workspace Patch 1.0
    #P L2J_Server 2 latest
    Index: java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
    ===================================================================
    --- java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java    (revision 5537)
    +++ java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java    (working copy)
    @@ -316,8 +316,8 @@
     
        // Character Character SQL String Definitions:
        private static final String INSERT_CHARACTER = "INSERT INTO characters (account_name,charId,char_name,level,maxHp,curHp,maxCp,curCp,maxMp,curMp,face,hairStyle,hairColor,sex,exp,sp,karma,fame,pvpkills,pkkills,clanid,race,classid,deletetime,cancraft,title,title_color,accesslevel,online,isin7sdungeon,clan_privs,wantspeace,base_class,newbie,nobless,power_grade,createDate) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
    -    private static final String UPDATE_CHARACTER = "UPDATE characters SET level=?,maxHp=?,curHp=?,maxCp=?,curCp=?,maxMp=?,curMp=?,face=?,hairStyle=?,hairColor=?,sex=?,heading=?,x=?,y=?,z=?,exp=?,expBeforeDeath=?,sp=?,karma=?,fame=?,pvpkills=?,pkkills=?,clanid=?,race=?,classid=?,deletetime=?,title=?,title_color=?,accesslevel=?,online=?,isin7sdungeon=?,clan_privs=?,wantspeace=?,base_class=?,onlinetime=?,punish_level=?,punish_timer=?,newbie=?,nobless=?,power_grade=?,subpledge=?,lvl_joined_academy=?,apprentice=?,sponsor=?,varka_ketra_ally=?,clan_join_expiry_time=?,clan_create_expiry_time=?,char_name=?,death_penalty_level=?,bookmarkslot=?,vitality_points=?,language=? WHERE charId=?";
    -    private static final String RESTORE_CHARACTER = "SELECT account_name, charId, char_name, level, maxHp, curHp, maxCp, curCp, maxMp, curMp, face, hairStyle, hairColor, sex, heading, x, y, z, exp, expBeforeDeath, sp, karma, fame, pvpkills, pkkills, clanid, race, classid, deletetime, cancraft, title, title_color, accesslevel, online, char_slot, lastAccess, clan_privs, wantspeace, base_class, onlinetime, isin7sdungeon, punish_level, punish_timer, newbie, nobless, power_grade, subpledge, lvl_joined_academy, apprentice, sponsor, varka_ketra_ally,clan_join_expiry_time,clan_create_expiry_time,death_penalty_level,bookmarkslot,vitality_points,createDate,language FROM characters WHERE charId=?";
    +    private static final String UPDATE_CHARACTER = "UPDATE characters SET level=?,maxHp=?,curHp=?,maxCp=?,curCp=?,maxMp=?,curMp=?,face=?,hairStyle=?,hairColor=?,sex=?,heading=?,x=?,y=?,z=?,exp=?,expBeforeDeath=?,sp=?,karma=?,fame=?,pvpkills=?,pkkills=?,clanid=?,race=?,classid=?,deletetime=?,title=?,title_color=?,accesslevel=?,online=?,isin7sdungeon=?,clan_privs=?,wantspeace=?,base_class=?,onlinetime=?,punish_level=?,punish_timer=?,newbie=?,nobless=?,power_grade=?,subpledge=?,lvl_joined_academy=?,apprentice=?,sponsor=?,varka_ketra_ally=?,clan_join_expiry_time=?,clan_create_expiry_time=?,char_name=?,death_penalty_level=?,bookmarkslot=?,vitality_points=?,language=?,namec=? WHERE charId=?";
    +    private static final String RESTORE_CHARACTER = "SELECT account_name, charId, char_name, level, maxHp, curHp, maxCp, curCp, maxMp, curMp, face, hairStyle, hairColor, sex, heading, x, y, z, exp, expBeforeDeath, sp, karma, fame, pvpkills, pkkills, clanid, race, classid, deletetime, cancraft, title, title_color, accesslevel, online, char_slot, lastAccess, clan_privs, wantspeace, base_class, onlinetime, isin7sdungeon, punish_level, punish_timer, newbie, nobless, power_grade, subpledge, lvl_joined_academy, apprentice, sponsor, varka_ketra_ally,clan_join_expiry_time,clan_create_expiry_time,death_penalty_level,bookmarkslot,vitality_points,createDate,language,namec FROM characters WHERE charId=?"; //survey
     
        // Character Teleport Bookmark:
        private static final String INSERT_TP_BOOKMARK = "INSERT INTO character_tpbookmark (charId,Id,x,y,z,icon,tag,name) values (?,?,?,?,?,?,?,?)";
    @@ -7240,6 +7240,9 @@
                    player.setName(rset.getString("char_name"));
                    player._lastAccess = rset.getLong("lastAccess");
               
    +                // Appearance
    +                player.setNamec(rset.getString("namec"));
    +           
                    player.getStat().setExp(rset.getLong("exp"));
                    player.setExpBeforeDeath(rset.getLong("expBeforeDeath"));
                    player.getStat().setLevel(rset.getByte("level"));
    @@ -7314,7 +7317,7 @@
     
                    player.setTitle(rset.getString("title"));
    -                player.getAppearance().setTitleColor(rset.getInt("title_color"));
    +                player.setTitlec(rset.getString("title_color"));
                    player.setAccessLevel(rset.getInt("accesslevel"));
                    player.setFistsWeaponItem(player.findFistsWeaponItem(activeClassId));
                    player.setUptime(System.currentTimeMillis());
               
    @@ -7781,7 +7784,7 @@
                statement.setInt(25, getClassId().getId());
                statement.setLong(26, getDeleteTimer());
                statement.setString(27, getTitle());
    -            statement.setInt(28, getAppearance().getTitleColor());
    +            statement.setString(28, getTitlec());
                statement.setInt(29, getAccessLevel().getLevel());
                statement.setInt(30, isOnlineInt());
                statement.setInt(31, isIn7sDungeon() ? 1 : 0);
    @@ -7812,7 +7815,8 @@
                statement.setInt(50, getBookMarkSlot());
                statement.setInt(51, getVitalityPoints());
                statement.setString(52, getLang());
    -            statement.setInt(53, getObjectId());
    +            statement.setString(53, getNamec());
    +            statement.setInt(54, getObjectId());
           
                statement.execute();
                statement.close();
    @@ -14182,6 +14186,26 @@
                return true;
        }
     
    +    // Appearance system start
    +    public String _namec = "FFFFFF";
    +    public String getNamec()
    +    {
    +        return _namec;
    +    }
    +    public void setNamec(String val)
    +    {
    +        _namec = val;
    +    }
    +    public String _titlec = "FFFFFF";
    +    public String getTitlec()
    +    {
    +        return _titlec;
    +    }
    +    public void setTitlec(String val)
    +    {
    +        _titlec = val;
    +    }    // Appearance system end
    +
        public void teleportBookmarkAdd(int x,int y,int z,int icon, String tag, String name)
        {
            if(this == null)
    Index: java/com/l2jserver/gameserver/network/clientpackets/EnterWorld.java
    ===================================================================
    --- java/com/l2jserver/gameserver/network/clientpackets/EnterWorld.java    (revision 5526)
    +++ java/com/l2jserver/gameserver/network/clientpackets/EnterWorld.java    (working copy)
    @@ -447,29 +456,28 @@
                    obj.sendPacket(sm);
                }
            }
    -
    +   
    +        // Appearance
    +        if (!activeChar.isGM())
    +        {
    +            activeChar.getAppearance().setNameColor(Integer.decode("0x" + activeChar.getNamec()));
    +            activeChar.getAppearance().setTitleColor(Integer.decode("0x" + activeChar.getTitlec()));
    +        }
            activeChar.sendPacket(SystemMessageId.WELCOME_TO_LINEAGE);
    Index: java/com/l2jserver/gameserver/model/actor/instance/L2AppearanceInstance.java
    ===================================================================
    --- java/com/l2jserver/gameserver/model/actor/instance/L2AppearanceInstance.java    (revision 0)
    +++ java/com/l2jserver/gameserver/model/actor/instance/L2AppearanceInstance.java    (revision 0)
    @@ -0,0 +1,370 @@
    +/*
    + * 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 .
    + */
    +package com.l2jserver.gameserver.model.actor.instance;
    +
    +import java.util.regex.Matcher;
    +import java.util.regex.Pattern;
    +import java.util.regex.PatternSyntaxException;
    +
    +import javolution.text.TextBuilder;
    +
    +import com.l2jserver.Config;
    +import com.l2jserver.gameserver.ThreadPoolManager;
    +import com.l2jserver.gameserver.communitybbs.Manager.RegionBBSManager;
    +import com.l2jserver.gameserver.datatables.CharNameTable;
    +import com.l2jserver.gameserver.instancemanager.TransformationManager;
    +import com.l2jserver.gameserver.model.actor.L2Npc;
    +import com.l2jserver.gameserver.model.actor.appearance.PcAppearance;
    +import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate;
    +import com.l2jserver.gameserver.network.communityserver.CommunityServerThread;
    +import com.l2jserver.gameserver.network.communityserver.writepackets.WorldInfo;
    +import com.l2jserver.gameserver.network.serverpackets.ExShowScreenMessage;
    +import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
    +import com.l2jserver.gameserver.network.serverpackets.PartySmallWindowAll;
    +import com.l2jserver.gameserver.network.serverpackets.PartySmallWindowDeleteAll;
    +import com.l2jserver.gameserver.util.Util;
    +
    +/**
    + *
    + * @author NeverMore
    + *
    + */
    +public final class L2AppearanceInstance extends L2Npc
    +{
    +
    +    public L2AppearanceInstance(int objectId, L2NpcTemplate template)
    +    {
    +        super(objectId, template);
    +    }
    +
    +    @Override
    +    public void onBypassFeedback(L2PcInstance player, String command)
    +    {
    +        if (player == null)
    +        {
    +            return;
    +        }
    +        if (command.startsWith("info"))
    +        {
    +            showInfoWindow(player);
    +        }
    +        if (command.startsWith("namec"))
    +        {
    +            try
    +            {
    +                String val = command.substring(6);
    +                player.getAppearance().setNameColor(Integer.decode("0x" + val));
    +                ExShowScreenMessage message = new ExShowScreenMessage("Your name color has been changed", 4000);
    +                player.sendPacket(message);
    +                player.sendMessage("Your name color has been changed");
    +                player.broadcastUserInfo();
    +                player.setNamec(val);
    +            }
    +            catch (Exception e)
    +            { //Case of empty color or invalid hex string
    +                ExShowScreenMessage message = new ExShowScreenMessage("You need to specify a valid new color.", 4000);
    +                player.sendPacket(message);
    +                player.sendMessage("You need to specify a valid new color.");
    +            }
    +            return;
    +        }
    +        if (command.startsWith("titlec"))
    +        {
    +            try
    +            {
    +                String val = command.substring(7);
    +                player.getAppearance().setTitleColor(Integer.decode("0x" + val));
    +                ExShowScreenMessage message = new ExShowScreenMessage("Your title color has been changed", 4000);
    +                player.sendPacket(message);
    +                player.sendMessage("Your title color has been changed");
    +                player.broadcastUserInfo();
    +                player.setTitlec(val);
    +            }
    +            catch (Exception e)
    +            { //Case of empty color or invalid hex string
    +                ExShowScreenMessage message = new ExShowScreenMessage("You need to specify a valid new color.", 4000);
    +                player.sendPacket(message);
    +                player.sendMessage("You need to specify a valid new color.");
    +            }
    +            return;
    +        }
    +        if (command.startsWith("name"))
    +        {
    +            try
    +            {
    +                String val = command.substring(5);
    +                if (val.length() > 16)
    +                {
    +                    ExShowScreenMessage message1 = new ExShowScreenMessage("Name cannot be more than 16 characters", 4000);
    +                    player.sendPacket(message1);
    +                    return;
    +                }
    +                if (CharNameTable.getInstance().getIdByName(val) > 0)
    +                {
    +                    ExShowScreenMessage message = new ExShowScreenMessage("Problem, name "+val+" already exists! Try something else", 4000);
    +                    player.sendPacket(message);
    +                    player.sendMessage("Problem, name "+val+" already exists! Try something else");
    +                    return;
    +                }
    +                if (Config.FORBIDDEN_NAMES.length > 1)
    +                {
    +                    for (String st : Config.FORBIDDEN_NAMES)
    +                    {
    +                        if (val.toLowerCase().contains(st.toLowerCase()))
    +                        {
    +                            ExShowScreenMessage message1 = new ExShowScreenMessage("This name is forbidden ,try something else.", 4000);
    +                            player.sendPacket(message1);
    +                            return;
    +                        }
    +                    }
    +                }
    +                if (!Util.isAlphaNumeric(val) || !isValidName(val))
    +                {
    +                    ExShowScreenMessage message1 = new ExShowScreenMessage("This name is not valid ,try something else.", 4000);
    +                    player.sendPacket(message1);
    +                    return;
    +                }
    +                player.setName(val);
    +                player.store();
    +       
    +                ExShowScreenMessage message = new ExShowScreenMessage("You successfully changed your name to "+val+"", 4000);
    +                player.sendPacket(message);           
    +                player.sendMessage("You successfully changed your name to "+val);
    +                player.broadcastUserInfo();
    +                CommunityServerThread.getInstance().sendPacket(new WorldInfo(player, null, WorldInfo.TYPE_UPDATE_PLAYER_DATA));
    +           
    +                if (player.isInParty())
    +                {
    +                    // Delete party window for other party members
    +                    player.getParty().broadcastToPartyMembers(player, PartySmallWindowDeleteAll.STATIC_PACKET);
    +                    for (L2PcInstance member : player.getParty().getMembers())
    +                    {
    +                        // And re-add
    +                        if (member != player)
    +                            member.sendPacket(new PartySmallWindowAll(member, player.getParty()));
    +                    }
    +                }
    +                if (player.getClan() != null)
    +                {
    +                    player.getClan().broadcastClanStatus();
    +                }           
    +                RegionBBSManager.getInstance().changeCommunityBoard();
    +                return;
    +            }
    +            catch (Exception e)
    +            { //Case of empty name
    +                ExShowScreenMessage message = new ExShowScreenMessage("Enter the Name into the box.", 4000);
    +                player.sendPacket(message);
    +                player.sendMessage("Enter the Name into the box.");
    +            }
    +        }
    +        if (command.startsWith("sex"))
    +        {
    +            player.getAppearance().setSex(player.getAppearance().getSex() ? false : true);
    +            ExShowScreenMessage message = new ExShowScreenMessage("Your gender has been changed!", 4000);
    +            player.sendPacket(message);
    +            player.sendMessage("Your gender has been changed!");
    +            player.broadcastUserInfo();
    +            // Transform-untransorm player quickly to force the client to reload the character textures
    +            TransformationManager.getInstance().transformPlayer(105, player);
    +            ThreadPoolManager.getInstance().scheduleGeneral(new Untransform(player), 200);
    +            return;
    +        }
    +        if (command.startsWith("face"))
    +        {
    +            try
    +            {
    +                String val = command.substring(5);
    +                int faceVal = Integer.parseInt(val);
    +                if ((faceVal != 0) && (faceVal != 1) && (faceVal != 2))
    +                {
    +                    ExShowScreenMessage message1 = new ExShowScreenMessage("Invalid face id | Possible id's (0,1,2)", 4000);
    +                    player.sendPacket(message1);
    +                    return;
    +                }
    +                if (faceVal == PcAppearance.getFace())
    +                {
    +                    ExShowScreenMessage message1 = new ExShowScreenMessage(" Id " + faceVal + " is your current face id ! Try something else ! ", 4000);
    +                    player.sendPacket(message1);
    +                    return;
    +                }
    +                PcAppearance.setFace(faceVal);
    +                ExShowScreenMessage message = new ExShowScreenMessage("Your face id has been changed!", 4000);
    +                player.sendPacket(message);
    +                player.sendMessage("Your face id has been changed!");
    +                player.broadcastUserInfo();
    +                // Transform-untransorm player quickly to force the client to reload the character textures
    +                TransformationManager.getInstance().transformPlayer(105, player);
    +                ThreadPoolManager.getInstance().scheduleGeneral(new Untransform(player), 200);
    +
    +            }
    +            catch (Exception e)
    +            { //Case of empty id or invalid id
    +                ExShowScreenMessage message1 = new ExShowScreenMessage("Fill into the box the face id (0,1,2).", 4000);
    +                player.sendPacket(message1);
    +                player.sendMessage("Fill into the box the face id (0,1,2).");
    +            }   
    +        }
    +        if (command.startsWith("hair"))
    +        {
    +            try
    +            {
    +                String val = command.substring(5);
    +                int hairVal = Integer.parseInt(val);
    +                if ((hairVal != 0) && (hairVal != 1) && (hairVal != 2) && (hairVal != 3))
    +                {
    +                    ExShowScreenMessage message1 = new ExShowScreenMessage("Invalid hair id | Possible id's (0,1,2,3)", 4000);
    +                    player.sendPacket(message1);
    +                    return;
    +                }
    +                if (hairVal == PcAppearance.getHairStyle())
    +                {
    +                    ExShowScreenMessage message1 = new ExShowScreenMessage(" Id " + hairVal + " is your current hair id ! Try something else ! ", 4000);
    +                    player.sendPacket(message1);
    +                    return;
    +                }
    +                PcAppearance.setHairStyle(hairVal);
    +                ExShowScreenMessage message = new ExShowScreenMessage("Your hair id has been changed!", 4000);
    +                player.sendPacket(message);
    +                player.sendMessage("Your hair id has been changed!");
    +                player.broadcastUserInfo();
    +                // Transform-untransorm player quickly to force the client to reload the character textures
    +                TransformationManager.getInstance().transformPlayer(105, player);
    +                ThreadPoolManager.getInstance().scheduleGeneral(new Untransform(player), 200);
    +
    +            }
    +            catch (Exception e)
    +            { //Case of empty id or invalid id
    +                ExShowScreenMessage message1 = new ExShowScreenMessage("Fill into the box the hair id (0,1,2,3).", 4000);
    +                player.sendPacket(message1);
    +                player.sendMessage("Fill into the box the hair id (0,1,2,3).");
    +            }
    +        }
    +    }
    +
    +    /**
    +    * @param val
    +    * @return
    +    */
    +    private boolean isValidName(String val)
    +    {
    +        boolean result = true;
    +        String test = val;
    +        Pattern pattern;
    +        try
    +        {
    +            pattern = Pattern.compile(Config.CNAME_TEMPLATE);
    +        }
    +        catch (PatternSyntaxException e) // case of illegal pattern
    +        {
    +            _log.warning("ERROR : Character name pattern of config is wrong!");
    +            pattern = Pattern.compile(".*");
    +        }
    +        Matcher regexp = pattern.matcher(test);
    +        if (!regexp.matches())
    +        {
    +            result = false;
    +        }
    +        return result;
    +    }
    +
    +    @Override
    +    public void showChatWindow(L2PcInstance player)
    +    {
    +        if (player == null)
    +        {
    +            return;
    +        }
    +        NpcHtmlMessage nhm = new NpcHtmlMessage(2);
    +        TextBuilder tb = new TextBuilder("");
    +   
    +        tb.append("");
    +        tb.append(" ");
    +        tb.append(" Appearance Manager");
    +        tb.append(" ");
    +        tb.append("");
    +        tb.append("");
    +        tb.append("");
    +        tb.append("");
    +        tb.append("");
    +        tb.append("");
    +        tb.append("[table bgcolor=""444444"" cellpadding=""5"" width=""250""][tr][td valign=""top"" width=""45"" align=""center""][img]"L2ui_ch3.menubutton4"[/img][/td][td valign=""top""][color="FF6600"]Appearance manager[/color]");
    +        tb.append("[color="00FF00"]"+ player.getName() +"[/color], use this npc to change your appearance.[/td][/tr][/table]
    ");
    +        tb.append("

    ");
    +        tb.append("



    ");
    +        tb.append("");
    +        tb.append("");
    +        tb.append("[table bgcolor="444444" border="0" width="125"][tr][td][/td][/tr][/table]");
    +        tb.append("



    ");
    +        tb.append("");
    +        tb.append("");
    +        tb.append("[table bgcolor="444444" border="0" width="125"][tr][td][/td][td][/td][/tr][/table]");
    +        tb.append("



    ");
    +        tb.append("");
    +        tb.append("");
    +        tb.append("[table bgcolor="444444" border="0" width="125"][tr][td][/td][td][/td][/tr][/table]

    ");
    +        tb.append("



    ");
    +        tb.append("");
    +        tb.append("[table bgcolor="444444" border="0" width="125"][tr][td][/td][/tr][/table]");
    +        tb.append("

    ");
    +        tb.append("

    [color="A9A9A9"]~ by NeverMore ~[/color]");
    +        tb.append("");
    +        tb.append("");
    +        nhm.setHtml(tb.toString());
    +        player.sendPacket(nhm);   
    +    }
    +
    +    public void showInfoWindow(L2PcInstance player)
    +    {
    +        NpcHtmlMessage nhm = new NpcHtmlMessage(1);
    +        TextBuilder tb = new TextBuilder("");
    +   
    +        tb.append("");
    +        tb.append(" ");
    +        tb.append(" Appearance Manager");
    +        tb.append(" ");
    +        tb.append("");
    +        tb.append("");
    +        tb.append("");
    +        tb.append("");
    +        tb.append("");
    +        tb.append("");
    +        tb.append("[table bgcolor=""444444"" cellpadding=""5"" width=""250""][tr][td valign=""top"" width=""45"" align=""center""][img]"L2ui_ch3.menubutton4"[/img][/td][td valign=""top""][color="FF6600"]Appearance manager[/color]");
    +        tb.append("[color="00FF00"]"+ player.getName() +"[/color], use this npc to change your appearance.[/td][/tr][/table]
    ");
    +        tb.append("

    Using this npc , you can change your Name / Title and Name Color / Sex / Hair and Face id!
    Just fill into the box the required value's and press the button you want.");
    +        tb.append("");
    +        tb.append("

    [color="A9A9A9"]~ by NeverMore ~[/color]");
    +        tb.append("");
    +        tb.append("");
    +        nhm.setHtml(tb.toString());
    +        player.sendPacket(nhm);   
    +    }
    +
    +    private final class Untransform implements Runnable
    +    {
    +        private final L2PcInstance _player;
    +
    +        protected Untransform(L2PcInstance player)
    +        {
    +            _player = player;
    +        }
    +
    +        @Override
    +        public void run()
    +        {
    +            _player.untransform();
    +        }
    +    }
    +}
    \ No newline at end of file
    Index: java/com/l2jserver/gameserver/model/actor/appearance/PcAppearance.java
    ===================================================================
    --- java/com/l2jserver/gameserver/model/actor/appearance/PcAppearance.java    (revision 5526)
    +++ java/com/l2jserver/gameserver/model/actor/appearance/PcAppearance.java    (working copy)
    @@ -20,11 +20,11 @@
    {
        private L2PcInstance _owner;
     
    -    private byte _face;
    +    private static byte _face;
     
        private byte _hairColor;
     
    -    private byte _hairStyle;
    +    private static byte _hairStyle;
     
        private boolean _sex; // Female true(1)
     
    @@ -94,7 +94,7 @@
            return _visibleTitle;
        }
     
    -    public final byte getFace()
    +    public final static byte getFace()
        {
            return _face;
        }
    @@ -102,7 +102,7 @@
        /**
          * @param value
          */
    -    public final void setFace(int value)
    +    public final static void setFace(int value)
        {
            _face = (byte) value;
        }
    @@ -120,7 +120,7 @@
            _hairColor = (byte) value;
        }
     
    -    public final byte getHairStyle()
    +    public final static byte getHairStyle()
        {
            return _hairStyle;
        }
    @@ -128,7 +128,7 @@
        /**
          * @param value
          */
    -    public final void setHairStyle(int value)
    +    public final static void setHairStyle(int value)
        {
            _hairStyle = (byte) value;
        }

DATA:

    ### Eclipse Workspace Patch 1.0
     
    #P L2J_DataPack
     
    Index: dist/sql/game/characters.sql
     
    ===================================================================
     
    --- dist/sql/game/characters.sql    (revision 9024)
     
    +++ dist/sql/game/characters.sql    (working copy)
     
    @@ -32,7 +32,7 @@
     
      `deletetime` bigint(13) unsigned NOT NULL DEFAULT '0',
     
      `cancraft` TINYINT UNSIGNED DEFAULT NULL,
     
      `title` VARCHAR(16) DEFAULT NULL,
     
    -  `title_color` MEDIUMINT UNSIGNED NOT NULL DEFAULT '16777079',
     
    +  `title_color` VARCHAR(16) NOT NULL DEFAULT 'FFFFFF',
     
      `accesslevel` MEDIUMINT DEFAULT 0,
     
      `online` TINYINT UNSIGNED DEFAULT NULL,
     
      `onlinetime` INT DEFAULT NULL,
     
    @@ -58,6 +58,7 @@
     
      `vitality_points` SMALLINT UNSIGNED NOT NULL DEFAULT 0,
     
      `createDate` date NOT NULL DEFAULT '0000-00-00',
     
      `language` VARCHAR(2) DEFAULT NULL,
     
    +  `namec` VARCHAR(16) NOT NULL DEFAULT 'FFFFFF',
     
      PRIMARY KEY (`charId`),
     
      KEY `account_name` (`account_name`),
     
      KEY `char_name` (`char_name`),