Appareance manager for classic (need help with this code)

fa1thDEV

Baron
Customer
Someone can check if this code work?, thank you for the collab

JavaScript:
// File path: java/com/l2jserver/gameserver/services/AppearanceManager.java

package services;

import l2.commons.listener.EventListener;
import l2.gameserver.GameServer;
import l2.gameserver.model.Player;
import l2.gameserver.network.l2.s2c.MagicSkillUse;
import l2.gameserver.scripts.Functions;
import l2.gameserver.scripts.ScriptFile;
import l2.gameserver.utils.ItemFunctions;

public class AppearanceManager extends Functions implements ScriptFile, EventListener {
    private static final String EVENT_APPEARANCE_CHANGE = "appearanceChange";
    private static final String[] LISTENING_EVENTS = new String[]{EVENT_APPEARANCE_CHANGE};

    @Override
    public String[] listeningEventTypes() {
        return LISTENING_EVENTS;
    }

    @Override
    public void onEvent(String eventType, Object... args) {
        if(eventType.equals(EVENT_APPEARANCE_CHANGE)) {
            handleAppearanceChange((Player) args[0], (String) args[1], (String) args[2]);
        }
    }

    private void handleAppearanceChange(Player player, String command, String value) {
        switch (command) {
            case "name":
                changeName(player, value);
                break;
            case "nameColor":
                changeNameColor(player, value);
                break;
            case "titleColor":
                changeTitleColor(player, value);
                break;
            case "sex":
                changeSex(player);
                break;
            case "face":
                changeFace(player, value);
                break;
            case "hairStyle":
                changeHairStyle(player, value);
                break;
            default:
                player.sendMessage("Invalid appearance change command.");
        }
    }

    private void changeName(Player player, String newName) {
        if (newName.length() <= 16 && CharNameTable.getInstance().getIdByName(newName) == 0) {
            player.setName(newName);
            player.store();
            player.sendMessage("Name successfully changed to " + newName);
            player.broadcastUserInfo();
        } else {
            player.sendMessage("Invalid name or name already exists.");
        }
    }

    private void changeNameColor(Player player, String color) {
        try {
            player.getAppearance().setNameColor(Integer.decode("0x" + color));
            player.sendMessage("Name color changed to " + color);
            player.broadcastUserInfo();
        } catch (Exception e) {
            player.sendMessage("Invalid color code.");
        }
    }

    private void changeTitleColor(Player player, String color) {
        try {
            player.getAppearance().setTitleColor(Integer.decode("0x" + color));
            player.sendMessage("Title color changed to " + color);
            player.broadcastUserInfo();
        } catch (Exception e) {
            player.sendMessage("Invalid color code.");
        }
    }

    private void changeSex(Player player) {
        player.getAppearance().setSex(!player.getAppearance().getSex());
        player.sendMessage("Sex changed.");
        player.broadcastUserInfo();
    }

    private void changeFace(Player player, String faceId) {
        try {
            int face = Integer.parseInt(faceId);
            if (face >= 0 && face <= 2) {
                player.getAppearance().setFace(face);
                player.sendMessage("Face changed to " + face);
                player.broadcastUserInfo();
            } else {
                player.sendMessage("Invalid face id.");
            }
        } catch (NumberFormatException e) {
            player.sendMessage("Invalid face id.");
        }
    }

    private void changeHairStyle(Player player, String hairStyleId) {
        try {
            int hairStyle = Integer.parseInt(hairStyleId);
            if (hairStyle >= 0 && hairStyle <= 3) {
                player.getAppearance().setHairStyle(hairStyle);
                player.sendMessage("Hair style changed to " + hairStyle);
                player.broadcastUserInfo();
            } else {
                player.sendMessage("Invalid hair style id.");
            }
        } catch (NumberFormatException e) {
            player.sendMessage("Invalid hair style id.");
        }
    }

    @Override
    public void onLoad() {
        GameServer.getInstance().getListeners().addEventListener(this);
    }

    @Override
    public void onReload() {
    }

    @Override
    public void onShutdown() {
    }
}


JavaScript:
// File path: java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java

// Add new fields and methods for appearance
public class L2PcInstance {
    private String _nameColor = "FFFFFF";
    private String _titleColor = "FFFFFF";

    public String getNameColor() {
        return _nameColor;
    }

    public void setNameColor(String nameColor) {
        _nameColor = nameColor;
    }

    public String getTitleColor() {
        return _titleColor;
    }

    public void setTitleColor(String titleColor) {
        _titleColor = titleColor;
    }
    
    // Update existing methods to include new fields
    public void restoreChar() {
        // ...
        _nameColor = rset.getString("namec");
        _titleColor = rset.getString("title_color");
        // ...
    }

    public void storeChar() {
        // ...
        statement.setString(53, _nameColor);
        statement.setString(54, _titleColor);
        statement.setInt(55, getObjectId());
        // ...
    }
}

// File path: java/com/l2jserver/gameserver/model/actor/appearance/PcAppearance.java

public class PcAppearance {
    private byte _face;
    private byte _hairStyle;
    private byte _hairColor;
    private boolean _sex;

    public byte getFace() {
        return _face;
    }

    public void setFace(int face) {
        _face = (byte) face;
    }

    public byte getHairStyle() {
        return _hairStyle;
    }

    public void setHairStyle(int hairStyle) {
        _hairStyle = (byte) hairStyle;
    }

    public byte getHairColor() {
        return _hairColor;
    }

    public void setHairColor(int hairColor) {
        _hairColor = (byte) hairColor;
    }

    public boolean getSex() {
        return _sex;
    }

    public void setSex(boolean sex) {
        _sex = sex;
    }
}
 
Back
Top