Autor Tema: Ayuda, Problema al implementar en Frozen cambio de skin de acis.  (Leído 143 veces)

jjmadeo y 2 Visitantes están viendo este tema.

Conectado jjmadeo

  • No Grade
  • *
  • Topic Author
  • Mensajes: 43
  • 00
  • Agradecimientos: 3
  • Cronica: : Interlude
  • Revision: 1118
  • S.O: Windows Server 2016
  • Serverpack : L2 JFROZEN
gracias
Este post tiene 0 agradecimientos
  • Añade a tus favoritos
  • Bueno, antes que nada les adjunto el Mod.  que FUNCIONA!!! solo que bueno  quedan algunos efectos colaterales, como que cuando hago sub   se cambia el skin  a enana siempre!!!!
    pero bueno la idea es ver si alguno me puede ayudar,

    Paso a introducir el mod que agregue.

    DIFF:

    Código: [Seleccionar]
    Index: java/net/sf/l2j/gameserver/model/CharSelectInfoPackage.java
    ===================================================================
    --- java/net/sf/l2j/gameserver/model/CharSelectInfoPackage.java (revision 3)
    +++ java/net/sf/l2j/gameserver/model/CharSelectInfoPackage.java (working copy)
    @@ -51,6 +51,8 @@
      private int _y = 0;
      private int _z = 0;
      private int _accessLevel = 0;
    + private int _customClassSkin = -1;
    + private int _customRaceSkin = -1;
     
      public CharSelectInfoPackage(int objectId, String name)
      {
    @@ -353,4 +355,24 @@
      {
      _z = z;
      }
    +
    + public void setCustomClassSkin(int valor)
    + {
    + _customClassSkin = valor;
    + }
    +
    + public void setCustomRaceSkin(int valor)
    + {
    + _customRaceSkin = valor;
    + }
    +
    + public int getCustomClassSkin()
    + {
    + return _customClassSkin;
    + }
    +
    + public int getCustomRaceSkin()
    + {
    + return _customRaceSkin;
    + }
     }
    \ No newline at end of file
    Index: java/net/sf/l2j/gameserver/model/actor/instance/L2ChangeSkinManagerInstance.java
    ===================================================================
    --- java/net/sf/l2j/gameserver/model/actor/instance/L2ChangeSkinManagerInstance.java (revision 0)
    +++ java/net/sf/l2j/gameserver/model/actor/instance/L2ChangeSkinManagerInstance.java (revision 0)
    @@ -0,0 +1,143 @@
    +/*
    + * 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 net.sf.l2j.gameserver.model.actor.instance;
    +
    +import net.sf.l2j.gameserver.model.actor.template.NpcTemplate;
    +import net.sf.l2j.gameserver.model.base.ClassId;
    +
    +/**
    + * @author execanciani & Toxico
    + */
    +public class L2ChangeSkinManagerInstance extends L2NpcInstance
    +{
    + public enum Races
    + {
    + FIGHTER(net.sf.l2j.gameserver.model.base.Race.Human, ClassId.fighter),
    + MAGE(net.sf.l2j.gameserver.model.base.Race.Human, ClassId.mage),
    + ELVENFIGHTER(net.sf.l2j.gameserver.model.base.Race.Elf, ClassId.elvenFighter),
    + ELVENMAGE(net.sf.l2j.gameserver.model.base.Race.Elf, ClassId.elvenMage),
    + DARKFIGHTER(net.sf.l2j.gameserver.model.base.Race.DarkElf, ClassId.darkFighter),
    + DARKMAGE(net.sf.l2j.gameserver.model.base.Race.DarkElf, ClassId.darkMage),
    + ORCFIGHTER(net.sf.l2j.gameserver.model.base.Race.Orc, ClassId.orcFighter),
    + ORCMAGE(net.sf.l2j.gameserver.model.base.Race.Orc, ClassId.orcMage),
    + DWARVEN(net.sf.l2j.gameserver.model.base.Race.Dwarf, ClassId.dwarvenFighter);
    +
    + private net.sf.l2j.gameserver.model.base.Race races;
    + private ClassId classId;
    +
    + private Races(net.sf.l2j.gameserver.model.base.Race races, ClassId classid)
    + {
    + this.races = races;
    + this.classId = classid;
    + }
    +
    + public int getRaceId()
    + {
    + return races.ordinal();
    + }
    +
    + public int getClassId()
    + {
    + return classId.getId();
    + }
    + }
    +
    +
    + public L2ChangeSkinManagerInstance(int objectId, NpcTemplate template)
    + {
    + super(objectId, template);
    +
    + }
    +
    + @Override
    + public void onBypassFeedback(L2PcInstance player, String command)
    + {
    + Races races = null;
    + if (command.startsWith("HumanFighter"))
    + {
    + races = Races.FIGHTER;
    + }
    +
    + else if (command.startsWith("HumanMage"))
    + {
    + races = Races.MAGE;
    + }
    +
    + else if (command.startsWith("ElfFighter"))
    + {
    + races = Races.ELVENFIGHTER;
    + }
    +
    + else if (command.startsWith("ElfMage"))
    + {
    + races = Races.ELVENMAGE;
    + }
    +
    + else if (command.startsWith("DarkElfFighter"))
    + {
    + races = Races.DARKFIGHTER;
    + }
    +
    + else if (command.startsWith("DarkElfMage"))
    + {
    + races = Races.DARKMAGE;
    + }
    +
    + else if (command.startsWith("OrcFighter"))
    + {
    + races = Races.ORCFIGHTER;
    + }
    +
    + else if (command.startsWith("OrcMage"))
    + {
    + races = Races.ORCMAGE;
    + }
    +
    + else if (command.startsWith("Dwarven"))
    + {
    + races = Races.DWARVEN;
    +
    + }
    + else if (command.startsWith("BackMainSkin"))
    + {
    + player.setCustomClassSkin(-1);
    + player.setCustomRaceSkin(-1);
    + }
    + setRaceCustomSkin(player, races);
    +
    + player.broadcastCharInfo();
    + player.broadcastUserInfo();
    +
    + }
    +
    + @Override
    + public String getHtmlPath(int npcId, int val)
    + {
    + String filename = "";
    + if (val == 0)
    + filename = "" + npcId;
    + else
    + filename = npcId + "-" + val;
    +
    + return "data/html/mods/ChangeSkin/" + filename + ".htm";
    + }
    +
    + private static void setRaceCustomSkin(L2PcInstance player, Races valor)
    + {
    + if ((player == null) || (valor == null))
    + {
    + return;
    + }
    + player.setCustomRaceSkin(valor.getRaceId());
    + player.setCustomClassSkin(valor.getClassId());
    + }
    +}
    \ No newline at end of file
    Index: java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java
    ===================================================================
    --- java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 3)
    +++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (working copy)
    @@ -313,8 +313,8 @@
      private static final String DELETE_SKILL_SAVE = "DELETE FROM character_skills_save WHERE char_obj_id=? AND class_index=?";
     
      private static final String INSERT_CHARACTER = "INSERT INTO characters (account_name,obj_Id,char_name,level,maxHp,curHp,maxCp,curCp,maxMp,curMp,face,hairStyle,hairColor,sex,exp,sp,karma,pvpkills,pkkills,clanid,race,classid,deletetime,cancraft,title,accesslevel,online,isin7sdungeon,clan_privs,wantspeace,base_class,nobless,power_grade,last_recom_date) 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=?,pvpkills=?,pkkills=?,rec_have=?,rec_left=?,clanid=?,race=?,classid=?,deletetime=?,title=?,accesslevel=?,online=?,isin7sdungeon=?,clan_privs=?,wantspeace=?,base_class=?,onlinetime=?,punish_level=?,punish_timer=?,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=? WHERE obj_id=?";
    - private static final String RESTORE_CHARACTER = "SELECT account_name, obj_Id, char_name, level, maxHp, curHp, maxCp, curCp, maxMp, curMp, face, hairStyle, hairColor, sex, heading, x, y, z, exp, expBeforeDeath, sp, karma, pvpkills, pkkills, clanid, 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, 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 FROM characters WHERE obj_id=?";
    + 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=?,pvpkills=?,pkkills=?,rec_have=?,rec_left=?,clanid=?,race=?,classid=?,deletetime=?,title=?,accesslevel=?,online=?,isin7sdungeon=?,clan_privs=?,wantspeace=?,base_class=?,onlinetime=?,punish_level=?,punish_timer=?,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=?, custom_race_skin=?, custom_class_skin=? WHERE obj_id=?";
    + private static final String RESTORE_CHARACTER = "SELECT account_name, obj_Id, char_name, level, maxHp, curHp, maxCp, curCp, maxMp, curMp, face, hairStyle, hairColor, sex, heading, x, y, z, exp, expBeforeDeath, sp, karma, pvpkills, pkkills, clanid, 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, 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,custom_race_skin,custom_class_skin FROM characters WHERE obj_id=?";
     
      private static final String RESTORE_CHAR_SUBCLASSES = "SELECT class_id,exp,sp,level,class_index FROM character_subclasses WHERE char_obj_id=? ORDER BY class_index ASC";
      private static final String ADD_CHAR_SUBCLASS = "INSERT INTO character_subclasses (char_obj_id,class_id,exp,sp,level,class_index) VALUES (?,?,?,?,?,?)";
    @@ -601,7 +601,10 @@
      private final SummonRequest _summonRequest = new SummonRequest();
     
      private final GatesRequest _gatesRequest = new GatesRequest();
    -
    +
    + private int _customClassSkin = -1;
    + private int _customRaceSkin = -1;
    +
      protected class ShortBuffTask implements Runnable
      {
      @Override
    @@ -611,6 +614,7 @@
      setShortBuffTaskSkillId(0);
      }
      }
    +
     
      protected static class SummonRequest
      {
    @@ -5581,6 +5585,9 @@
     
      CursedWeaponsManager.getInstance().checkPlayer(player);
     
    + player.setCustomRaceSkin(rset.getInt("custom_race_skin"));
    + player.setCustomClassSkin(rset.getInt("custom_class_skin"));
    +
      player.setAllianceWithVarkaKetra(rset.getInt("varka_ketra_ally"));
     
      player.setDeathPenaltyBuffLevel(rset.getInt("death_penalty_level"));
    @@ -5922,7 +5929,9 @@
      statement.setLong(47, getClanCreateExpiryTime());
      statement.setString(48, getName());
      statement.setLong(49, getDeathPenaltyBuffLevel());
    - statement.setInt(50, getObjectId());
    + statement.setInt(50, getCustomRaceSkin());
    + statement.setInt(51, getCustomClassSkin());
    + statement.setInt(52, getObjectId());
     
      statement.execute();
      statement.close();
    @@ -10705,4 +10714,30 @@
      break;
      }
      }
    +
    + public void setCustomClassSkin(int valor)
    + {
    + _customClassSkin = valor;
    + }
    +
    + public void setCustomRaceSkin(int valor)
    + {
    + _customRaceSkin = valor;
    + }
    +
    + public int getCustomClassSkin()
    + {
    + return _customClassSkin;
    + }
    +
    + public int getCustomRaceSkin()
    + {
    + return _customRaceSkin;
    + }
    +
    + public PcTemplate getCustomSkinTemplate()
    + {
    + return CharTemplateTable.getInstance().getTemplate(getCustomClassSkin());
    + }
    +
     }
    \ No newline at end of file
    Index: java/net/sf/l2j/gameserver/network/serverpackets/CharInfo.java
    ===================================================================
    --- java/net/sf/l2j/gameserver/network/serverpackets/CharInfo.java (revision 3)
    +++ java/net/sf/l2j/gameserver/network/serverpackets/CharInfo.java (working copy)
    @@ -68,13 +68,22 @@
      writeD(_heading);
      writeD(_activeChar.getObjectId());
      writeS(_activeChar.getName());
    - writeD(_activeChar.getRace().ordinal());
    +
    + if (_activeChar.getCustomRaceSkin() == -1)
    + writeD(_activeChar.getRace().ordinal());
    + else
    + writeD(_activeChar.getCustomRaceSkin());
    +
      writeD(_activeChar.getAppearance().getSex() ? 1 : 0);
     
    - if (_activeChar.getClassIndex() == 0)
    + // if ((_activeChar.getClassIndex() == 0)
    + // {
    + if (_activeChar.getCustomClassSkin() == -1)
      writeD(_activeChar.getClassId().getId());
      else
    - writeD(_activeChar.getBaseClass());
    + writeD(_activeChar.getCustomClassSkin());
    + // else
    + // writeD(_activeChar.getBaseClass());
     
      writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_HAIRALL));
      writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_HEAD));
    @@ -140,8 +149,17 @@
      }
      else
      {
    - writeF(_activeChar.getBaseTemplate().getCollisionRadius());
    - writeF(_activeChar.getBaseTemplate().getCollisionHeight());
    + if (_activeChar.getCustomRaceSkin() == -1)
    + {
    + writeF(_activeChar.getBaseTemplate().getCollisionRadius());
    + writeF(_activeChar.getBaseTemplate().getCollisionHeight());
    + }
    + else
    + {
    + writeF(_activeChar.getCustomSkinTemplate().getCollisionRadius());
    + writeF(_activeChar.getCustomSkinTemplate().getCollisionHeight());
    + }
    +
      }
     
      writeD(_activeChar.getAppearance().getHairStyle());
    Index: java/net/sf/l2j/gameserver/network/serverpackets/CharSelectInfo.java
    ===================================================================
    --- java/net/sf/l2j/gameserver/network/serverpackets/CharSelectInfo.java (revision 3)
    +++ java/net/sf/l2j/gameserver/network/serverpackets/CharSelectInfo.java (working copy)
    @@ -88,12 +88,16 @@
      writeD(0x00); // ??
     
      writeD(charInfoPackage.getSex());
    - writeD(charInfoPackage.getRace());
    + if (charInfoPackage.getCustomRaceSkin() == -1)
    + writeD(charInfoPackage.getRace());
    + else
    + writeD(charInfoPackage.getCustomRaceSkin());
     
    - if (charInfoPackage.getClassId() == charInfoPackage.getBaseClassId())
    + if ((charInfoPackage.getCustomClassSkin() == -1) && (charInfoPackage.getClassId() == charInfoPackage.getBaseClassId()))
      writeD(charInfoPackage.getClassId());
      else
    - writeD(charInfoPackage.getBaseClassId());
    + // writeD(charInfoPackage.getBaseClassId());
    + writeD(charInfoPackage.getCustomClassSkin());
     
      writeD(0x01); // active ??
     
    @@ -178,7 +182,7 @@
     
      try (Connection con = L2DatabaseFactory.getInstance().getConnection())
      {
    - PreparedStatement statement = con.prepareStatement("SELECT account_name, obj_Id, char_name, level, maxHp, curHp, maxMp, curMp, face, hairStyle, hairColor, sex, heading, x, y, z, exp, sp, karma, pvpkills, pkkills, clanid, race, classid, deletetime, cancraft, title, accesslevel, online, char_slot, lastAccess, base_class FROM characters WHERE account_name=?");
    + PreparedStatement statement = con.prepareStatement("SELECT account_name, obj_Id, char_name, level, maxHp, curHp, maxMp, curMp, face, hairStyle, hairColor, sex, heading, x, y, z, exp, sp, karma, pvpkills, pkkills, clanid, race, classid, deletetime, cancraft, title, accesslevel, online, char_slot, lastAccess, base_class,custom_race_skin,custom_class_skin FROM characters WHERE account_name=?");
      statement.setString(1, loginName);
      ResultSet charList = statement.executeQuery();
     
    @@ -267,11 +271,17 @@
      charInfopackage.setSp(chardata.getInt("sp"));
      charInfopackage.setClanId(chardata.getInt("clanid"));
     
    - charInfopackage.setRace(chardata.getInt("race"));
    + final int customRaceSkin = chardata.getInt("custom_race_skin");
    +
    + if (customRaceSkin == -1)
    + charInfopackage.setRace(chardata.getInt("race"));
    + else
    + charInfopackage.setCustomRaceSkin(customRaceSkin);
     
    + final int customClassSkin = chardata.getInt("custom_class_skin");
      final int baseClassId = chardata.getInt("base_class");
      final int activeClassId = chardata.getInt("classid");
    -
    +
      charInfopackage.setX(chardata.getInt("x"));
      charInfopackage.setY(chardata.getInt("y"));
      charInfopackage.setZ(chardata.getInt("z"));
    @@ -313,10 +323,17 @@
      /*
      * Check if the base class is set to zero and alse doesn't match with the current active class, otherwise send the base class ID. This prevents chars created before base class was introduced from being displayed incorrectly.
      */
    - if (baseClassId == 0 && activeClassId > 0)
    - charInfopackage.setBaseClassId(activeClassId);
    + if (customClassSkin == -1)
    + if (baseClassId == 0 && activeClassId > 0)
    + charInfopackage.setBaseClassId(activeClassId);
    + else
    + charInfopackage.setBaseClassId(baseClassId);
      else
    - charInfopackage.setBaseClassId(baseClassId);
    + charInfopackage.setCustomClassSkin(customClassSkin);
    + // if (baseClassId == 0 && activeClassId > 0)
    + // charInfopackage.setBaseClassId(activeClassId);
    + // else
    + // charInfopackage.setBaseClassId(baseClassId);
     
      charInfopackage.setDeleteTimer(deletetime);
      charInfopackage.setLastAccess(chardata.getLong("lastAccess"));
    Index: java/net/sf/l2j/gameserver/network/serverpackets/UserInfo.java
    ===================================================================
    --- java/net/sf/l2j/gameserver/network/serverpackets/UserInfo.java (revision 3)
    +++ java/net/sf/l2j/gameserver/network/serverpackets/UserInfo.java (working copy)
    @@ -66,13 +66,21 @@
      }
      writeS(name);
     
    - writeD(_activeChar.getRace().ordinal());
    + if (_activeChar.getCustomRaceSkin() == -1)
    + writeD(_activeChar.getRace().ordinal());
    + else
    + writeD(_activeChar.getCustomRaceSkin());
    + // writeD(_activeChar.getRace().ordinal());
      writeD(_activeChar.getAppearance().getSex() ? 1 : 0);
     
    - if (_activeChar.getClassIndex() == 0)
    + // if ((_activeChar.getClassIndex() == 0)
    + // {
    + if (_activeChar.getCustomClassSkin() == -1)
      writeD(_activeChar.getClassId().getId());
      else
    - writeD(_activeChar.getBaseClass());
    + writeD(_activeChar.getCustomClassSkin());
    + // else
    + // writeD(_activeChar.getBaseClass());
     
      writeD(_activeChar.getLevel());
      writeQ(_activeChar.getExp());
    @@ -198,8 +206,17 @@
      }
      else
      {
    - writeF(_activeChar.getBaseTemplate().getCollisionRadius());
    - writeF(_activeChar.getBaseTemplate().getCollisionHeight());
    + if (_activeChar.getCustomRaceSkin() == -1)
    + {
    + writeF(_activeChar.getBaseTemplate().getCollisionRadius());
    + writeF(_activeChar.getBaseTemplate().getCollisionHeight());
    + }
    + else
    + {
    + writeF(_activeChar.getCustomSkinTemplate().getCollisionRadius());
    + writeF(_activeChar.getCustomSkinTemplate().getCollisionHeight());
    + }
    +
      }
     
      writeD(_activeChar.getAppearance().getHairStyle());

    SQL:
    el siguiente sql va en  custom_npc

    Código: [Seleccionar]
    50009	30519	Change Skin Manager	1	L2JaCis	0	Monster.angel	7,00	18,00	70	male	L2ChangeSkinManager	40	3862	1494	11,85	2,45	40	43	30	21	20	10	490	10	1335	470	780	809	278	0	333	0	0	0	88	132		0	0	0	LAST_HIT


    HTM:
    en la ruta    Crear un archivo en  gameserver\data\html\mods\ChangeSkin\50009.htm (si la carpeta ChangeSkin no existe creenla.)
    el archivo HTM debe contener el siguiente html dentro.

    Código: [Seleccionar]
    <html><body><center><button value="Human Fighter" action="bypass -h npc_%objectId%_HumanFighter" width=204 height=20 back="sek.cbui75" fore="sek.cbui76"><br1>
    <button value="Human Mage" action="bypass -h npc_%objectId%_HumanMage" width=204 height=20 back="sek.cbui75" fore="sek.cbui76"><br1>
    <button value="Elf Fighter" action="bypass -h npc_%objectId%_ElfFighter" width=204 height=20 back="sek.cbui75" fore="sek.cbui76"><br1>
    <button value="Elf Mage" action="bypass -h npc_%objectId%_ElfMage" width=204 height=20 back="sek.cbui75" fore="sek.cbui76"><br1>
    <button value="Dark Elf Fighter" action="bypass -h npc_%objectId%_DarkElfFighter" width=204 height=20 back="sek.cbui75" fore="sek.cbui76"><br1>
    <button value="Dark Elf Mage" action="bypass -h npc_%objectId%_DarkElfMage" width=204 height=20 back="sek.cbui75" fore="sek.cbui76"><br1>
    <button value="Orc Fighte" action="bypass -h npc_%objectId%_OrcFighter" width=204 height=20 back="sek.cbui75" fore="sek.cbui76"><br1>
    <button value="Orc Mage" action="bypass -h npc_%objectId%_OrcMage" width=204 height=20 back="sek.cbui75" fore="sek.cbui76"><br1>
    <button value="Dwarven" action="bypass -h npc_%objectId%_Dwarven" width=204 height=20 back="sek.cbui75" fore="sek.cbui76"><br1>
    SI NO QUERES MAS TU CAMBIO DE SKIN<br1>
    CON LA SIGUIENTE OPCION PUEDES<br1>
    VOLVER A TENER TU CUERPO ANTERIOR<br1>
    <button value="Back Main Skin" action="bypass -h npc_%objectId%_BackMainSkin" width=204 height=20 back="sek.cbui75" fore="sek.cbui76">
    </center></body></html>

    En la tabla Characters se debe agregar los siguientes campos:


    Código: [Seleccionar]
      alter table characters add ( `custom_race_skin` smallint(5) NOT NULL DEFAULT '0',  `custom_class_skin` smallint(5) NOT NULL DEFAULT '0',);

    con esto que acabo de mencionar ya funcionaria el mod, solo hay que tener en cuenta que algunas clases como por ejemplo  NpcTemplate en asis  Corresponde a  L2NpcTemplate en  frozen y la otra es   NpcTemplate que se encuentra en la ruta  import com.l2jfrozen.gameserver.templates.L2NpcTemplate;

    luego el resto calza perfecto.

    =======================================================================================================================================

    bueno ahora comienzo con mi problema: esta es la forma como AMI me quedo implementado, digo ami por que yo ya implemente otras cosas y eh modificado  la clase L2PCinstance

    Index: java/net/sf/l2j/gameserver/model/CharSelectInfoPackage.java

    Código: [Seleccionar]
    /*
     * L2jFrozen Project - www.l2jfrozen.com
     *
     * 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 2, 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, write to the Free Software
     * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
     * 02111-1307, USA.
     *
     * http://www.gnu.org/copyleft/gpl.html
     */
    package com.l2jfrozen.gameserver.model;

    /**
     * Used to Store data sent to Client for Character Selection screen.
     * @version $Revision: 1.2.2.2.2.4 $ $Date: 2005/03/27 15:29:33 $
     */
    public class CharSelectInfoPackage
    {
    private String _name;
    private int _objectId = 0;
    private int _charId = 0x00030b7a;
    private long _exp = 0;
    private int _sp = 0;
    private int _clanId = 0;
    private int _race = 0;
    private int _classId = 0;
    private int _baseClassId = 0;
    private long _deleteTimer = 0L;
    private long _lastAccess = 0L;
    private int _face = 0;
    private int _hairStyle = 0;
    private int _hairColor = 0;
    private int _sex = 0;
    private int _level = 1;
    private int _maxHp = 0;
    private double _currentHp = 0;
    private int _maxMp = 0;
    private double _currentMp = 0;
    private final int[][] _paperdoll;
    private int _karma = 0;
    private int _augmentationId = 0;
    private int _accessLevel;
    private int _customClassSkin = -1;
    private int _customRaceSkin = -1;



    /**
    * @param objectId
    * @param name
    */
    public CharSelectInfoPackage(final int objectId, final String name)
    {
    setObjectId(objectId);
    _name = name;
    _paperdoll = PcInventory.restoreVisibleInventory(objectId);
    }

    public int getObjectId()
    {
    return _objectId;
    }

    public void setObjectId(final int objectId)
    {
    _objectId = objectId;
    }

    public int getCharId()
    {
    return _charId;
    }

    public void setCharId(final int charId)
    {
    _charId = charId;
    }

    public int getClanId()
    {
    return _clanId;
    }

    public void setClanId(final int clanId)
    {
    _clanId = clanId;
    }

    public int getClassId()
    {
    return _classId;
    }

    public int getBaseClassId()
    {
    return _baseClassId;
    }

    public void setClassId(final int classId)
    {
    _classId = classId;
    }

    public void setBaseClassId(final int baseClassId)
    {
    _baseClassId = baseClassId;
    }

    public double getCurrentHp()
    {
    return _currentHp;
    }

    public void setCurrentHp(final double currentHp)
    {
    _currentHp = currentHp;
    }

    public double getCurrentMp()
    {
    return _currentMp;
    }

    public void setCurrentMp(final double currentMp)
    {
    _currentMp = currentMp;
    }

    public long getDeleteTimer()
    {
    return _deleteTimer;
    }

    public void setDeleteTimer(final long deleteTimer)
    {
    _deleteTimer = deleteTimer;
    }

    public long getLastAccess()
    {
    return _lastAccess;
    }

    public void setLastAccess(final long lastAccess)
    {
    _lastAccess = lastAccess;
    }

    public long getExp()
    {
    return _exp;
    }

    public void setExp(final long exp)
    {
    _exp = exp;
    }

    public int getFace()
    {
    return _face;
    }

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

    public int getHairColor()
    {
    return _hairColor;
    }

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

    public int getHairStyle()
    {
    return _hairStyle;
    }

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

    public int getPaperdollObjectId(final int slot)
    {
    return _paperdoll[slot][0];
    }

    public int getPaperdollItemId(final int slot)
    {
    return _paperdoll[slot][1];
    }

    public int getLevel()
    {
    return _level;
    }

    public void setLevel(final int level)
    {
    _level = level;
    }

    public int getMaxHp()
    {
    return _maxHp;
    }

    public void setMaxHp(final int maxHp)
    {
    _maxHp = maxHp;
    }

    public int getMaxMp()
    {
    return _maxMp;
    }

    public void setMaxMp(final int maxMp)
    {
    _maxMp = maxMp;
    }

    public String getName()
    {
    return _name;
    }

    public void setName(final String name)
    {
    _name = name;
    }

    public int getRace()
    {
    return _race;
    }

    public void setRace(final int race)
    {
    _race = race;
    }

    public int getSex()
    {
    return _sex;
    }

    public void setSex(final int sex)
    {
    _sex = sex;
    }

    public int getSp()
    {
    return _sp;
    }

    public void setSp(final int sp)
    {
    _sp = sp;
    }

    public int getEnchantEffect()
    {
    if (_paperdoll[Inventory.PAPERDOLL_RHAND][2] > 0)
    return _paperdoll[Inventory.PAPERDOLL_RHAND][2];

    return _paperdoll[Inventory.PAPERDOLL_LRHAND][2];
    }

    public void setKarma(final int k)
    {
    _karma = k;
    }

    public int getKarma()
    {
    return _karma;
    }

    public void setAugmentationId(final int augmentationId)
    {
    _augmentationId = augmentationId;
    }

    public int getAugmentationId()
    {
    return _augmentationId;
    }

    public int getAccessLevel()
    {
    return _accessLevel;
    }

    public void setAccessLevel(final int accessLevel)
    {
    _accessLevel = accessLevel;
    }

    public void setCustomClassSkin(int valor)
    {
    _customClassSkin = valor;
    }

    public void setCustomRaceSkin(int valor)
    {
    _customRaceSkin = valor;
    }

    public int getCustomClassSkin()
    {
    return _customClassSkin;
    }

    public int getCustomRaceSkin()
    {
    return _customRaceSkin;
    }

    }

    Index: java/net/sf/l2j/gameserver/model/actor/instance/L2ChangeSkinManagerInstance.java

    Código: [Seleccionar]
    /*
     * 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 com.l2jfrozen.gameserver.model.actor.instance;

    import com.l2jfrozen.gameserver.model.base.ClassId;
    import com.l2jfrozen.gameserver.templates.L2NpcTemplate;

    /**
     * @author execanciani & Toxico
     */
    public class L2ChangeSkinManagerInstance extends L2NpcInstance
    {
    public enum Races
    {
    FIGHTER(com.l2jfrozen.gameserver.model.base.Race.human, ClassId.fighter),
    MAGE(com.l2jfrozen.gameserver.model.base.Race.human, ClassId.mage),
    ELVENFIGHTER(com.l2jfrozen.gameserver.model.base.Race.elf, ClassId.elvenFighter),
    ELVENMAGE(com.l2jfrozen.gameserver.model.base.Race.elf, ClassId.elvenMage),
    DARKFIGHTER(com.l2jfrozen.gameserver.model.base.Race.darkelf, ClassId.darkFighter),
    DARKMAGE(com.l2jfrozen.gameserver.model.base.Race.darkelf, ClassId.darkMage),
    ORCFIGHTER(com.l2jfrozen.gameserver.model.base.Race.orc, ClassId.orcFighter),
    ORCMAGE(com.l2jfrozen.gameserver.model.base.Race.orc, ClassId.orcMage),
    DWARVEN(com.l2jfrozen.gameserver.model.base.Race.dwarf, ClassId.dwarvenFighter);

    private com.l2jfrozen.gameserver.model.base.Race races;
    private ClassId classId;

    private Races(com.l2jfrozen.gameserver.model.base.Race races, ClassId classid)
    {
    this.races = races;
    this.classId = classid;
    }

    public int getRaceId()
    {
    return races.ordinal();
    }

    public int getClassId()
    {
    return classId.getId();
    }
    }


    public L2ChangeSkinManagerInstance(int objectId, L2NpcTemplate template)
    {
    super(objectId, template);

    }

    @Override
    public void onBypassFeedback(L2PcInstance player, String command)
    {
    Races races = null;
    if (command.startsWith("HumanFighter"))
    {
    races = Races.FIGHTER;
    }

    else if (command.startsWith("HumanMage"))
    {
    races = Races.MAGE;
    }

    else if (command.startsWith("ElfFighter"))
    {
    races = Races.ELVENFIGHTER;
    }

    else if (command.startsWith("ElfMage"))
    {
    races = Races.ELVENMAGE;
    }

    else if (command.startsWith("DarkElfFighter"))
    {
    races = Races.DARKFIGHTER;
    }

    else if (command.startsWith("DarkElfMage"))
    {
    races = Races.DARKMAGE;
    }

    else if (command.startsWith("OrcFighter"))
    {
    races = Races.ORCFIGHTER;
    }

    else if (command.startsWith("OrcMage"))
    {
    races = Races.ORCMAGE;
    }

    else if (command.startsWith("Dwarven"))
    {
    races = Races.DWARVEN;

    }
    else if (command.startsWith("BackMainSkin"))
    {
    player.setCustomClassSkin(-1);
    player.setCustomRaceSkin(-1);
    }
    setRaceCustomSkin(player, races);

    //player.broadcastCharInfo();
    player.broadcastUserInfo();

    }

    @Override
    public String getHtmlPath(int npcId, int val)
    {
    String filename = "";
    if (val == 0)
    filename = "" + npcId;
    else
    filename = npcId + "-" + val;

    return "data/html/mods/ChangeSkin/" + filename + ".htm";
    }

    private static void setRaceCustomSkin(L2PcInstance player, Races valor)
    {
    if ((player == null) || (valor == null))
    {
    return;
    }
    player.setCustomRaceSkin(valor.getRaceId());
    player.setCustomClassSkin(valor.getClassId());
    }
    }

    Index: java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java
    [code]/*
     * L2jFrozen Project - www.l2jfrozen.com
     *
     * 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 2, 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, write to the Free Software
     * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
     * 02111-1307, USA.
     *
     * http://www.gnu.org/copyleft/gpl.html
     */
    package com.l2jfrozen.gameserver.model.actor.instance;

    import static com.l2jfrozen.gameserver.ai.CtrlIntention.AI_INTENTION_MOVE_TO;

    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Calendar;
    import java.util.Collection;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.LinkedList;
    import java.util.List;
    import java.util.Map;
    import java.util.Map.Entry;
    import java.util.Set;
    import java.util.concurrent.Future;
    import java.util.concurrent.ScheduledFuture;
    import java.util.concurrent.TimeUnit;
    import java.util.concurrent.locks.ReentrantLock;

    import javolution.text.TextBuilder;
    import javolution.util.FastList;
    import javolution.util.FastMap;

    import org.apache.commons.lang.RandomStringUtils;

    import com.l2jfrozen.Config;
    import com.l2jfrozen.crypt.nProtect;
    import com.l2jfrozen.gameserver.ai.CtrlIntention;
    import com.l2jfrozen.gameserver.ai.L2CharacterAI;
    import com.l2jfrozen.gameserver.ai.L2PlayerAI;
    import com.l2jfrozen.gameserver.cache.HtmCache;
    import com.l2jfrozen.gameserver.cache.WarehouseCacheManager;
    import com.l2jfrozen.gameserver.communitybbs.BB.Forum;
    import com.l2jfrozen.gameserver.communitybbs.Manager.ForumsBBSManager;
    import com.l2jfrozen.gameserver.controllers.GameTimeController;
    import com.l2jfrozen.gameserver.controllers.RecipeController;
    import com.l2jfrozen.gameserver.datatables.AccessLevel;
    import com.l2jfrozen.gameserver.datatables.GmListTable;
    import com.l2jfrozen.gameserver.datatables.HeroSkillTable;
    import com.l2jfrozen.gameserver.datatables.NobleSkillTable;
    import com.l2jfrozen.gameserver.datatables.SkillTable;
    import com.l2jfrozen.gameserver.datatables.csv.FishTable;
    import com.l2jfrozen.gameserver.datatables.csv.HennaTable;
    import com.l2jfrozen.gameserver.datatables.csv.MapRegionTable;
    import com.l2jfrozen.gameserver.datatables.csv.RecipeTable;
    import com.l2jfrozen.gameserver.datatables.sql.AccessLevels;
    import com.l2jfrozen.gameserver.datatables.sql.AdminCommandAccessRights;
    import com.l2jfrozen.gameserver.datatables.sql.CharTemplateTable;
    import com.l2jfrozen.gameserver.datatables.sql.ClanTable;
    import com.l2jfrozen.gameserver.datatables.sql.ItemTable;
    import com.l2jfrozen.gameserver.datatables.sql.NpcTable;
    import com.l2jfrozen.gameserver.datatables.sql.SkillTreeTable;
    import com.l2jfrozen.gameserver.datatables.xml.ExperienceData;
    import com.l2jfrozen.gameserver.geo.GeoData;
    import com.l2jfrozen.gameserver.handler.IItemHandler;
    import com.l2jfrozen.gameserver.handler.ItemHandler;
    import com.l2jfrozen.gameserver.handler.admincommandhandlers.AdminEditChar;
    import com.l2jfrozen.gameserver.handler.skillhandlers.SiegeFlag;
    import com.l2jfrozen.gameserver.handler.skillhandlers.StrSiegeAssault;
    import com.l2jfrozen.gameserver.handler.skillhandlers.TakeCastle;
    import com.l2jfrozen.gameserver.managers.CastleManager;
    import com.l2jfrozen.gameserver.managers.CoupleManager;
    import com.l2jfrozen.gameserver.managers.CursedWeaponsManager;
    import com.l2jfrozen.gameserver.managers.DimensionalRiftManager;
    import com.l2jfrozen.gameserver.managers.DuelManager;
    import com.l2jfrozen.gameserver.managers.FortSiegeManager;
    import com.l2jfrozen.gameserver.managers.ItemsOnGroundManager;
    import com.l2jfrozen.gameserver.managers.QuestManager;
    import com.l2jfrozen.gameserver.managers.SiegeManager;
    import com.l2jfrozen.gameserver.managers.TownManager;
    import com.l2jfrozen.gameserver.model.BlockList;
    import com.l2jfrozen.gameserver.model.FishData;
    import com.l2jfrozen.gameserver.model.Inventory;
    import com.l2jfrozen.gameserver.model.ItemContainer;
    import com.l2jfrozen.gameserver.model.L2Attackable;
    import com.l2jfrozen.gameserver.model.L2Character;
    import com.l2jfrozen.gameserver.model.L2Clan;
    import com.l2jfrozen.gameserver.model.L2ClanMember;
    import com.l2jfrozen.gameserver.model.L2Effect;
    import com.l2jfrozen.gameserver.model.L2Fishing;
    import com.l2jfrozen.gameserver.model.L2Macro;
    import com.l2jfrozen.gameserver.model.L2ManufactureList;
    import com.l2jfrozen.gameserver.model.L2Object;
    import com.l2jfrozen.gameserver.model.L2Party;
    import com.l2jfrozen.gameserver.model.L2Radar;
    import com.l2jfrozen.gameserver.model.L2RecipeList;
    import com.l2jfrozen.gameserver.model.L2Request;
    import com.l2jfrozen.gameserver.model.L2ShortCut;
    import com.l2jfrozen.gameserver.model.L2Skill;
    import com.l2jfrozen.gameserver.model.L2Skill.SkillTargetType;
    import com.l2jfrozen.gameserver.model.L2Skill.SkillType;
    import com.l2jfrozen.gameserver.model.L2SkillLearn;
    import com.l2jfrozen.gameserver.model.L2Summon;
    import com.l2jfrozen.gameserver.model.L2World;
    import com.l2jfrozen.gameserver.model.Location;
    import com.l2jfrozen.gameserver.model.MacroList;
    import com.l2jfrozen.gameserver.model.PartyMatchRoom;
    import com.l2jfrozen.gameserver.model.PartyMatchRoomList;
    import com.l2jfrozen.gameserver.model.PartyMatchWaitingList;
    import com.l2jfrozen.gameserver.model.PcFreight;
    import com.l2jfrozen.gameserver.model.PcInventory;
    import com.l2jfrozen.gameserver.model.PcWarehouse;
    import com.l2jfrozen.gameserver.model.PetInventory;
    import com.l2jfrozen.gameserver.model.PlayerStatus;
    import com.l2jfrozen.gameserver.model.ShortCuts;
    import com.l2jfrozen.gameserver.model.TradeList;
    import com.l2jfrozen.gameserver.model.actor.appearance.PcAppearance;
    import com.l2jfrozen.gameserver.model.actor.knownlist.PcKnownList;
    import com.l2jfrozen.gameserver.model.actor.position.L2CharPosition;
    import com.l2jfrozen.gameserver.model.actor.stat.PcStat;
    import com.l2jfrozen.gameserver.model.actor.status.PcStatus;
    import com.l2jfrozen.gameserver.model.base.ClassId;
    import com.l2jfrozen.gameserver.model.base.ClassLevel;
    import com.l2jfrozen.gameserver.model.base.PlayerClass;
    import com.l2jfrozen.gameserver.model.base.Race;
    import com.l2jfrozen.gameserver.model.base.SubClass;
    import com.l2jfrozen.gameserver.model.entity.Announcements;
    import com.l2jfrozen.gameserver.model.entity.Duel;
    import com.l2jfrozen.gameserver.model.entity.L2Rebirth;
    import com.l2jfrozen.gameserver.model.entity.event.CTF;
    import com.l2jfrozen.gameserver.model.entity.event.DM;
    import com.l2jfrozen.gameserver.model.entity.event.L2Event;
    import com.l2jfrozen.gameserver.model.entity.event.TvT;
    import com.l2jfrozen.gameserver.model.entity.event.VIP;
    import com.l2jfrozen.gameserver.model.entity.olympiad.Olympiad;
    import com.l2jfrozen.gameserver.model.entity.sevensigns.SevenSigns;
    import com.l2jfrozen.gameserver.model.entity.sevensigns.SevenSignsFestival;
    import com.l2jfrozen.gameserver.model.entity.siege.Castle;
    import com.l2jfrozen.gameserver.model.entity.siege.FortSiege;
    import com.l2jfrozen.gameserver.model.entity.siege.Siege;
    import com.l2jfrozen.gameserver.model.entity.siege.clanhalls.DevastatedCastle;
    import com.l2jfrozen.gameserver.model.extender.BaseExtender.EventType;
    import com.l2jfrozen.gameserver.model.quest.Quest;
    import com.l2jfrozen.gameserver.model.quest.QuestState;
    import com.l2jfrozen.gameserver.model.zone.type.L2TownZone;
    import com.l2jfrozen.gameserver.network.L2GameClient;
    import com.l2jfrozen.gameserver.network.SystemMessageId;
    import com.l2jfrozen.gameserver.network.serverpackets.ActionFailed;
    import com.l2jfrozen.gameserver.network.serverpackets.ChangeWaitType;
    import com.l2jfrozen.gameserver.network.serverpackets.CharInfo;
    import com.l2jfrozen.gameserver.network.serverpackets.ConfirmDlg;
    import com.l2jfrozen.gameserver.network.serverpackets.CreatureSay;
    import com.l2jfrozen.gameserver.network.serverpackets.EtcStatusUpdate;
    import com.l2jfrozen.gameserver.network.serverpackets.ExAutoSoulShot;
    import com.l2jfrozen.gameserver.network.serverpackets.ExDuelUpdateUserInfo;
    import com.l2jfrozen.gameserver.network.serverpackets.ExFishingEnd;
    import com.l2jfrozen.gameserver.network.serverpackets.ExFishingStart;
    import com.l2jfrozen.gameserver.network.serverpackets.ExOlympiadMode;
    import com.l2jfrozen.gameserver.network.serverpackets.ExOlympiadUserInfo;
    import com.l2jfrozen.gameserver.network.serverpackets.ExPCCafePointInfo;
    import com.l2jfrozen.gameserver.network.serverpackets.ExSetCompassZoneCode;
    import com.l2jfrozen.gameserver.network.serverpackets.FriendList;
    import com.l2jfrozen.gameserver.network.serverpackets.HennaInfo;
    import com.l2jfrozen.gameserver.network.serverpackets.InventoryUpdate;
    import com.l2jfrozen.gameserver.network.serverpackets.ItemList;
    import com.l2jfrozen.gameserver.network.serverpackets.L2GameServerPacket;
    import com.l2jfrozen.gameserver.network.serverpackets.LeaveWorld;
    import com.l2jfrozen.gameserver.network.serverpackets.MagicSkillCanceld;
    import com.l2jfrozen.gameserver.network.serverpackets.MyTargetSelected;
    import com.l2jfrozen.gameserver.network.serverpackets.NpcHtmlMessage;
    import com.l2jfrozen.gameserver.network.serverpackets.NpcInfo;
    import com.l2jfrozen.gameserver.network.serverpackets.ObservationMode;
    import com.l2jfrozen.gameserver.network.serverpackets.ObservationReturn;
    import com.l2jfrozen.gameserver.network.serverpackets.PartySmallWindowUpdate;
    import com.l2jfrozen.gameserver.network.serverpackets.PetInventoryUpdate;
    import com.l2jfrozen.gameserver.network.serverpackets.PlaySound;
    import com.l2jfrozen.gameserver.network.serverpackets.PledgeShowInfoUpdate;
    import com.l2jfrozen.gameserver.network.serverpackets.PledgeShowMemberListDelete;
    import com.l2jfrozen.gameserver.network.serverpackets.PledgeShowMemberListUpdate;
    import com.l2jfrozen.gameserver.network.serverpackets.PrivateStoreListBuy;
    import com.l2jfrozen.gameserver.network.serverpackets.PrivateStoreListSell;
    import com.l2jfrozen.gameserver.network.serverpackets.QuestList;
    import com.l2jfrozen.gameserver.network.serverpackets.RecipeShopSellList;
    import com.l2jfrozen.gameserver.network.serverpackets.RelationChanged;
    import com.l2jfrozen.gameserver.network.serverpackets.Ride;
    import com.l2jfrozen.gameserver.network.serverpackets.SendTradeDone;
    import com.l2jfrozen.gameserver.network.serverpackets.SetupGauge;
    import com.l2jfrozen.gameserver.network.serverpackets.ShortBuffStatusUpdate;
    import com.l2jfrozen.gameserver.network.serverpackets.ShortCutInit;
    import com.l2jfrozen.gameserver.network.serverpackets.SkillCoolTime;
    import com.l2jfrozen.gameserver.network.serverpackets.SkillList;
    import com.l2jfrozen.gameserver.network.serverpackets.Snoop;
    import com.l2jfrozen.gameserver.network.serverpackets.SocialAction;
    import com.l2jfrozen.gameserver.network.serverpackets.StatusUpdate;
    import com.l2jfrozen.gameserver.network.serverpackets.StopMove;
    import com.l2jfrozen.gameserver.network.serverpackets.SystemMessage;
    import com.l2jfrozen.gameserver.network.serverpackets.TargetSelected;
    import com.l2jfrozen.gameserver.network.serverpackets.TitleUpdate;
    import com.l2jfrozen.gameserver.network.serverpackets.TradePressOtherOk;
    import com.l2jfrozen.gameserver.network.serverpackets.TradePressOwnOk;
    import com.l2jfrozen.gameserver.network.serverpackets.TradeStart;
    import com.l2jfrozen.gameserver.network.serverpackets.TutorialShowHtml;
    import com.l2jfrozen.gameserver.network.serverpackets.UserInfo;
    import com.l2jfrozen.gameserver.network.serverpackets.ValidateLocation;
    import com.l2jfrozen.gameserver.skills.BaseStats;
    import com.l2jfrozen.gameserver.skills.Formulas;
    import com.l2jfrozen.gameserver.skills.Stats;
    import com.l2jfrozen.gameserver.skills.effects.EffectCharge;
    import com.l2jfrozen.gameserver.skills.l2skills.L2SkillSummon;
    import com.l2jfrozen.gameserver.templates.L2Armor;
    import com.l2jfrozen.gameserver.templates.L2ArmorType;
    import com.l2jfrozen.gameserver.templates.L2EtcItemType;
    import com.l2jfrozen.gameserver.templates.L2Henna;
    import com.l2jfrozen.gameserver.templates.L2Item;
    import com.l2jfrozen.gameserver.templates.L2PcTemplate;
    import com.l2jfrozen.gameserver.templates.L2Weapon;
    import com.l2jfrozen.gameserver.templates.L2WeaponType;
    import com.l2jfrozen.gameserver.thread.LoginServerThread;
    import com.l2jfrozen.gameserver.thread.ThreadPoolManager;
    import com.l2jfrozen.gameserver.thread.daemons.ItemsAutoDestroy;
    import com.l2jfrozen.gameserver.util.Broadcast;
    import com.l2jfrozen.gameserver.util.FloodProtectors;
    import com.l2jfrozen.gameserver.util.IllegalPlayerAction;
    import com.l2jfrozen.gameserver.util.Util;
    import com.l2jfrozen.logs.Log;
    import com.l2jfrozen.util.CloseUtil;
    import com.l2jfrozen.util.Point3D;
    import com.l2jfrozen.util.database.DatabaseUtils;
    import com.l2jfrozen.util.database.L2DatabaseFactory;
    import com.l2jfrozen.util.random.Rnd;

    /**
     * This class represents all player characters in the world.

     * There is always a client-thread connected to this (except if a player-store is activated upon logout).
     * @version $Revision: 1.6.4 $ $Date: 2009/05/12 19:46:09 $
     * @author l2jfrozen dev
     */
    public final class L2PcInstance extends L2PlayableInstance
    {
       /** The Constant RESTORE_SKILLS_FOR_CHAR. */
       private static final String RESTORE_SKILLS_FOR_CHAR = "SELECT skill_id,skill_level FROM character_skills WHERE char_obj_id=? AND class_index=?";
       
       /** The Constant ADD_NEW_SKILL. */
       private static final String ADD_NEW_SKILL = "INSERT INTO character_skills (char_obj_id,skill_id,skill_level,skill_name,class_index) VALUES (?,?,?,?,?)";
       
       /** The Constant UPDATE_CHARACTER_SKILL_LEVEL. */
       private static final String UPDATE_CHARACTER_SKILL_LEVEL = "UPDATE character_skills SET skill_level=? WHERE skill_id=? AND char_obj_id=? AND class_index=?";
       
       /** The Constant DELETE_SKILL_FROM_CHAR. */
       private static final String DELETE_SKILL_FROM_CHAR = "DELETE FROM character_skills WHERE skill_id=? AND char_obj_id=? AND class_index=?";
       
       /** The Constant DELETE_CHAR_SKILLS. */
       private static final String DELETE_CHAR_SKILLS = "DELETE FROM character_skills WHERE char_obj_id=? AND class_index=?";
       
       /** The Constant ADD_SKILL_SAVE. */
       // private static final String ADD_SKILL_SAVE = "INSERT INTO character_skills_save (char_obj_id,skill_id,skill_level,effect_count,effect_cur_time,reuse_delay,restore_type,class_index,buff_index) VALUES (?,?,?,?,?,?,?,?,?)";
       private static final String ADD_SKILL_SAVE = "INSERT INTO character_skills_save (char_obj_id,skill_id,skill_level,effect_count,effect_cur_time,reuse_delay,systime,restore_type,class_index,buff_index) VALUES (?,?,?,?,?,?,?,?,?,?)";
       
       /** The Constant RESTORE_SKILL_SAVE. */
       private static final String RESTORE_SKILL_SAVE = "SELECT skill_id,skill_level,effect_count,effect_cur_time, reuse_delay FROM character_skills_save WHERE char_obj_id=? AND class_index=? AND restore_type=? ORDER BY buff_index ASC";
       
       /** The Constant DELETE_SKILL_SAVE. */
       private static final String DELETE_SKILL_SAVE = "DELETE FROM character_skills_save WHERE char_obj_id=? AND class_index=?";
       
       /** The _is the vip. */
       public boolean _isVIP = false, _inEventVIP = false, _isNotVIP = false, _isTheVIP = false;
       
       /** The _original karma vip. */
       public int _originalNameColourVIP, _originalKarmaVIP;
       
       /** The _vote timestamp. */
       private long _voteTimestamp = 0;
       
       /** The _posticipate sit. */
       private boolean _posticipateSit;
       
       /** The sitting task launched. */
       protected boolean sittingTaskLaunched;
       
       /** The saved_status. */
       private PlayerStatus saved_status = null;
       
       /** The _instance login time. */
       private final long _instanceLoginTime;
       
       /** The _last teleport action. */
       private long _lastTeleportAction = 0;
       
       /** The TOGGLE_USE time. */
       protected long TOGGLE_USE = 0;
       
       /**
        * Gets the actual status.
        * @return the actual status
        */
       public PlayerStatus getActualStatus()
       {
          
          saved_status = new PlayerStatus(this);
          return saved_status;
          
       }
       
       /**
        * Gets the last saved status.
        * @return the last saved status
        */
       public PlayerStatus getLastSavedStatus()
       {
          
          return saved_status;
          
       }
       
       /**
        * Gets the vote timestamp.
        * @return the _voteTimestamp
        */
       public long getVoteTimestamp()
       {
          return _voteTimestamp;
       }
       
       /**
        * Sets the vote timestamp.
        * @param timestamp the _voteTimestamp to set
        */
       public void setVoteTimestamp(final long timestamp)
       {
          _voteTimestamp = timestamp;
       }
       
       /**
        * Gets the vote points.
        * @return the vote points
        */
       public int getVotePoints()
       {
          Connection con = null;
          int votePoints = 0;
          try
          {
             con = L2DatabaseFactory.getInstance().getConnection(false);
             PreparedStatement statement;
             statement = con.prepareStatement("select votePoints from accounts where login=?");
             statement.setString(1, _accountName);
             
             ResultSet rset = statement.executeQuery();
             while (rset.next())
             {
                votePoints = rset.getInt("votePoints");
             }
             DatabaseUtils.close(rset);
             rset = null;
             DatabaseUtils.close(statement);
             statement = null;
          }
          catch (final Exception e)
          {
             if (Config.ENABLE_ALL_EXCEPTIONS)
                e.printStackTrace();
          }
          finally
          {
             CloseUtil.close(con);
             con = null;
          }
          return votePoints;
       }
       
       /**
        * Sets the vote points.
        * @param points the new vote points
        */
       public void setVotePoints(final int points)
       {
          Connection con = null;
          try
          {
             con = L2DatabaseFactory.getInstance().getConnection(false);
             PreparedStatement statement;
             statement = con.prepareStatement("update accounts set votePoints=" + points + " where login='" + _accountName + "'");
             statement.execute();
             DatabaseUtils.close(statement);
             statement = null;
          }
          catch (final Exception e)
          {
             if (Config.ENABLE_ALL_EXCEPTIONS)
                e.printStackTrace();
          }
          finally
          {
             CloseUtil.close(con);
             con = null;
          }
       }
       
       /**
        * Gets the vote time.
        * @return the vote time
        */
       public int getVoteTime()
       {
          Connection con = null;
          int lastVote = 0;
          try
          {
             con = L2DatabaseFactory.getInstance().getConnection(false);
             PreparedStatement statement;
             statement = con.prepareStatement("select lastVote from accounts where login=?");
             statement.setString(1, _accountName);
             
             ResultSet rset = statement.executeQuery();
             while (rset.next())
             {
                lastVote = rset.getInt("lastVote");
             }
             DatabaseUtils.close(rset);
             rset = null;
             DatabaseUtils.close(statement);
             statement = null;
          }
          catch (final Exception e)
          {
             if (Config.ENABLE_ALL_EXCEPTIONS)
                e.printStackTrace();
          }
          finally
          {
             CloseUtil.close(con);
             con = null;
          }
          return lastVote;
       }
       
       /** The _active_boxes. */
       public int _active_boxes = -1;
       
       /** The active_boxes_characters. */
       public List<String> active_boxes_characters = new ArrayList<>();
       
       /**
        * 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=?,in_jail=?,jail_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=?,good=?,evil=?,gve_kills=? 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=?,custom_race_skin=?,custom_class_skin=? WHERE obj_id=?";
       
       /**
        * 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, in_jail, jail_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,good,evil,gve_kills FROM characters 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, in_jail, jail_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,banchat_time,name_color,title_color,first_log,aio,aio_end FROM characters 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," + /*
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            * in_jail
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            * ,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            * jail_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" + /*
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               * ,
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               * banchat_time
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               */",name_color,title_color,first_log,aio,aio_end,custom_race_skin,custom_class_skin FROM characters WHERE obj_id=?";
       
       /** The Constant STATUS_DATA_GET. */
       private static final String STATUS_DATA_GET = "SELECT hero, noble, donator, hero_end_date FROM characters_custom_data WHERE obj_Id = ?";
       
       /** The Constant RESTORE_SKILLS_FOR_CHAR_ALT_SUBCLASS. */
       private static final String RESTORE_SKILLS_FOR_CHAR_ALT_SUBCLASS = "SELECT skill_id,skill_level,class_index FROM character_skills WHERE char_obj_id=? ORDER BY skill_level;";
       
       // ---------------------- L2JFrozen Addons ---------------------------------- //
       /** The Constant RESTORE_CHAR_SUBCLASSES. */
       private static final String RESTORE_CHAR_SUBCLASSES = "SELECT class_id,exp,sp,level,class_index FROM character_subclasses WHERE char_obj_id=? ORDER BY class_index ASC";
       
       /** The Constant ADD_CHAR_SUBCLASS. */
       private static final String ADD_CHAR_SUBCLASS = "INSERT INTO character_subclasses (char_obj_id,class_id,exp,sp,level,class_index) VALUES (?,?,?,?,?,?)";
       
       /** The Constant UPDATE_CHAR_SUBCLASS. */
       private static final String UPDATE_CHAR_SUBCLASS = "UPDATE character_subclasses SET exp=?,sp=?,level=?,class_id=? WHERE char_obj_id=? AND class_index =?";
       
       /** The Constant DELETE_CHAR_SUBCLASS. */
       private static final String DELETE_CHAR_SUBCLASS = "DELETE FROM character_subclasses WHERE char_obj_id=? AND class

    Desconectado nisuta

    • Grado B
    • *
    • Mensajes: 368
    • 00
    • Agradecimientos: 98
    • Cronica: : IL
    • Revision: l2j
    • S.O: Windows 7
    • Serverpack : L2JAcis
    Re:Ayuda, Problema al implementar en Frozen cambio de skin de acis.
    « Respuesta #1 en: Julio 30, 2020, 05:49:29 pm »
    gracias
    Este post tiene 0 agradecimientos
  • Añade a tus favoritos
    El error creo que viene del L2Pcintance aca en UPDATE_CHARACTER y RESTORE_CHARACTER  fijate que te quedo mal el codigo

    Conectado jjmadeo

    • No Grade
    • *
    • Topic Author
    • Mensajes: 43
    • 00
    • Agradecimientos: 3
    • Cronica: : Interlude
    • Revision: 1118
    • S.O: Windows Server 2016
    • Serverpack : L2 JFROZEN
    Re:Ayuda, Problema al implementar en Frozen cambio de skin de acis.
    « Respuesta #2 en: Julio 30, 2020, 06:01:11 pm »
    gracias
    Este post tiene 0 agradecimientos
  • Añade a tus favoritos
    El error creo que viene del L2Pcintance aca en UPDATE_CHARACTER y RESTORE_CHARACTER  fijate que te quedo mal el codigo

    te referis al SQL?

    Desconectado nisuta

    • Grado B
    • *
    • Mensajes: 368
    • 00
    • Agradecimientos: 98
    • Cronica: : IL
    • Revision: l2j
    • S.O: Windows 7
    • Serverpack : L2JAcis
    Re:Ayuda, Problema al implementar en Frozen cambio de skin de acis.
    « Respuesta #3 en: Julio 30, 2020, 08:29:51 pm »
    gracias
    Este post tiene 0 agradecimientos
  • Añade a tus favoritos
    El error creo que viene del L2Pcintance aca en UPDATE_CHARACTER y RESTORE_CHARACTER  fijate que te quedo mal el codigo

    te referis al SQL?

    Me refiero a la query .
    o sino esto creo que esta mal , estoy lejos del pc .


    Código: [Seleccionar]
    alter table characters add ( `custom_race_skin` smallint(5) NOT NULL DEFAULT '0',  `custom_class_skin` smallint(5) NOT NULL DEFAULT '0');

    te deberia dar algo asi al arrojarla en el navicat

    alter table characters add ( `custom_race_skin` smallint(5) NOT NULL DEFAULT '0',  `custom_class_skin` smallint(5) NOT NULL DEFAULT '0')
    > OK


    Luego podrias probar esto :


    Código: [Seleccionar]
    select custom_class_skin from characters where char_name = "nombredelchar";

    Con esto podrias ver si cambia al hacer sub o no .



    Asi seria correcta la query .

    « Última modificación: Julio 30, 2020, 08:42:01 pm por nisuta »

    Conectado jjmadeo

    • No Grade
    • *
    • Topic Author
    • Mensajes: 43
    • 00
    • Agradecimientos: 3
    • Cronica: : Interlude
    • Revision: 1118
    • S.O: Windows Server 2016
    • Serverpack : L2 JFROZEN
    Re:Ayuda, Problema al implementar en Frozen cambio de skin de acis.
    « Respuesta #4 en: Julio 31, 2020, 10:50:59 am »
    gracias
    Este post tiene 0 agradecimientos
  • Añade a tus favoritos
    El error creo que viene del L2Pcintance aca en UPDATE_CHARACTER y RESTORE_CHARACTER  fijate que te quedo mal el codigo

    te referis al SQL?

    Me refiero a la query .
    o sino esto creo que esta mal , estoy lejos del pc .


    Código: [Seleccionar]
    alter table characters add ( `custom_race_skin` smallint(5) NOT NULL DEFAULT '0',  `custom_class_skin` smallint(5) NOT NULL DEFAULT '0');

    te deberia dar algo asi al arrojarla en el navicat

    alter table characters add ( `custom_race_skin` smallint(5) NOT NULL DEFAULT '0',  `custom_class_skin` smallint(5) NOT NULL DEFAULT '0')
    > OK


    Luego podrias probar esto :


    Código: [Seleccionar]
    select custom_class_skin from characters where char_name = "nombredelchar";

    Con esto podrias ver si cambia al hacer sub o no .



    Asi seria correcta la query .

    hola, gracias por tu aparte, pero como menciono.  anteriormente en el post original, el Mod funciona  y cambia skines y todo, pero  cuando tiro sub afecta  en algo,
    hay alguna validación en algun lado que la copie mal o hay que hacerle algo mas,

    luego lo que mencionas, consultas sql y  campos, fueron agregados de forma correcta y ya probé las sql en la base y devuelven los datos correctamente y si no fuera el caso debería de recibir una exepccion cuando utilizo el mod.
    pero Funciona, insiste en que el problema lo debo de tener en  alguna validación.

    Desconectado nisuta

    • Grado B
    • *
    • Mensajes: 368
    • 00
    • Agradecimientos: 98
    • Cronica: : IL
    • Revision: l2j
    • S.O: Windows 7
    • Serverpack : L2JAcis
    Re:Ayuda, Problema al implementar en Frozen cambio de skin de acis.
    « Respuesta #5 en: Julio 31, 2020, 05:07:23 pm »
    gracias
    Este post tiene 0 agradecimientos
  • Añade a tus favoritos
    Es que todo esto es parte de la verificacion.Ahora el mod de la sub de donde lo sacaste?.

    Conectado jjmadeo

    • No Grade
    • *
    • Topic Author
    • Mensajes: 43
    • 00
    • Agradecimientos: 3
    • Cronica: : Interlude
    • Revision: 1118
    • S.O: Windows Server 2016
    • Serverpack : L2 JFROZEN
    Re:Ayuda, Problema al implementar en Frozen cambio de skin de acis.
    « Respuesta #6 en: Julio 31, 2020, 05:30:44 pm »
    gracias
    Este post tiene 0 agradecimientos
  • Añade a tus favoritos
    Es que todo esto es parte de la verificacion.Ahora el mod de la sub de donde lo sacaste?.

    de aca pero funcionaba perfecto antes.

    Conectado jjmadeo

    • No Grade
    • *
    • Topic Author
    • Mensajes: 43
    • 00
    • Agradecimientos: 3
    • Cronica: : Interlude
    • Revision: 1118
    • S.O: Windows Server 2016
    • Serverpack : L2 JFROZEN
    Re:Ayuda, Problema al implementar en Frozen cambio de skin de acis.
    « Respuesta #7 en: Agosto 03, 2020, 01:03:33 pm »
    gracias
    Este post tiene 0 agradecimientos
  • Añade a tus favoritos
    hola, alguien mas que pueda ayudarme porfaaaa  no logro resolverlo.

    Conectado franchus22

    • Grado A
    • *
    • Mensajes: 535
    • ar
    • Agradecimientos: 53
    • Cronica: : C4-C6
    • Revision: AdvExt-Personalizada
    • S.O: Windows Server 2008
    • Serverpack : L2OFF-Acis
    Re:Ayuda, Problema al implementar en Frozen cambio de skin de acis.
    « Respuesta #8 en: Agosto 04, 2020, 07:51:19 pm »
    gracias
    Este post tiene 0 agradecimientos
  • Añade a tus favoritos
    el problema esta en getCustomClassSkin, es mejor hacerlo de 0 a este mod, se puede hacer muchisimo mas simple en todos los sentidos

    Desconectado jeriko90

    • Grado S80
    • *
    • Mensajes: 847
    • 00
    • Agradecimientos: 261
    • Cronica: : C4-IL
    • Revision: IL
    • S.O: Linux Slackware
    • Serverpack : L2JFrozen - L2JAcis
    Re:Ayuda, Problema al implementar en Frozen cambio de skin de acis.
    « Respuesta #9 en: Agosto 05, 2020, 12:32:32 pm »
    gracias
    Este post tiene 0 agradecimientos
  • Añade a tus favoritos
    Es que todo esto es parte de la verificacion.Ahora el mod de la sub de donde lo sacaste?.

    de aca pero funcionaba perfecto antes.

    Antes , pero algo en el medio tocaste!
    Abrazo.
    Ahorrarte de leer , no ayudará a resolver tu problema , sino estirarlo.