Noticias:

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

Menú Principal

Mensajes recientes

#1
Sugerencias e Ideas / Re:Metaverso¿?
Último mensaje por F3N1X - May 16, 2024, 04:01 PM
Seria interesante implementarlo como una pekeña nuebe de conexion a la Realidad Virtual la cual en nuestro universo te lleve a todo lo interesante que se comparta por U3...lo mismo se puede ensamblar todo en con una apk que sea universal para tanto como consolas, pc's, y otros dispositivos que lo capaciten para tal conexion...
#2
Información & Noticias / TITAN FIGHT 4
Último mensaje por F3N1X - May 16, 2024, 03:53 PM
¡Prepárate para la emoción pura y la adrenalina desatada en el evento deportivo del año! ¡Es hora de que "Titan Fight 4" haga temblar los cimientos con su explosiva mezcla de habilidad, determinación y pura pasión por el deporte!

Presentado por nuestro apasionado hermano filial de "DEPORTES", TITAN Ludus Academy, este evento es más que una simple pelea: es una declaración de fuerza y dedicación. ¡Prepárate para ser testigo de momentos épicos, cuando los guerreros modernos entren en el cuadrilátero y desplieguen su destreza sin igual!

Entre los combates legendarios que tendrán lugar, destaca uno que seguramente dejará al público boquiabierto: ¡el enfrentamiento por el cinturón profesional de España en el estilo de Muay Thai! ¿Quién se alzará como el campeón supremo? ¡Ven y sé parte de la historia mientras Joaquín Romero lucha con todo su corazón y alma para mantener la gloria!

No te pierdas esta oportunidad única de presenciar el poderío del deporte en su forma más pura. ¡Asegura tu lugar ahora mismo y únete a nosotros en "Titan Fight 4" para una noche que resonará en tus recuerdos mucho después de que suene la campana final! ¡El espectáculo está por comenzar y tú no puedes perdértelo!
#3
Zona de Empleo / VaPeRs
Último mensaje por F3N1X - May 16, 2024, 02:10 PM
¡Bienvenido al futuro del vapeo! ¿Estás listo para dar un paso adelante en tu experiencia de vapeo? Presentamos la alianza con Bang Vaper's, diseñado para satisfacer tus necesidades con un rendimiento excepcional y sabores exquisitos.

¿Estás cansado de las complicaciones de recargar tu vaper una y otra vez con pequeñas sales de nicotina? ¡No busques más! Nuestro Vaper Avanzado elimina esa molestia al proporcionarte una batería de 650mAh que garantiza una duración prolongada sin necesidad de recargar constantemente el dichoso liquidito.

Imagina disfrutar de hasta 12000 caladas sin preocuparte por recargar tu dispositivo de e-liquid. Con una capacidad de 20ml, este vaper te ofrece una experiencia sin igual. Además, con un contenido de nicotina del 2%, puedes controlar tu consumo y disfrutar de una experiencia de vapeo personalizada con mucho estilo.

Pero eso no es todo. Nuestro Vaper no solo ofrece un rendimiento excepcional, sino que también te brinda una amplia gama de sabores exquisitos para elegir. Desde los clásicos hasta los más audaces, cada inhalación te transportará a un mundo de placer sensorial.

Ya sea que estés buscando dar el paso intermedio para dejar de fumar o simplemente deseas explorar el mundo del vapeo, con esta nueva alianza de U3 con Bang Vaper's es la elección perfecta. No te conformes con menos cuando puedes tener lo mejor.

¿Listo para elevar tu experiencia de vapeo al siguiente nivel? ¡Hazte con el U3Vaper hoy mismo y descubre un nuevo estándar de satisfacción!

        Pd: Estamos en constante expasion, podeis preguntarme por mensaje privado cualquier duda o peticion!
#4
Votaciones y opiniones / Re:¿Qué plataforma prefieren p...
Último mensaje por F3N1X - May 16, 2024, 01:23 PM
PC de sobremesa, para disfrutar del pleno rendimiento de los graficos que hoy dia estan apunto de no diferenciarse de la realidad...
#5
Implementaciones / Re:Cambio de Skin
Último mensaje por dwight - May 08, 2024, 05:29 PM
no hay de que!
cuando tenga tiempo comparto algunos codes nuevos , saludos!
#6
Implementaciones / Re:Cambio de Skin
Último mensaje por Swarlog - Abr 28, 2024, 10:30 PM
Debes de estar registrado para poder ver el contenido indicado. Registrate o ConectateBuenas..!!
un pequeño aporte de lo publicado con algunos retoques y mejoras

Index: java/L2jServer/gameserver/network/serverpackets/CharSelectInfo.java
===================================================================
--- java/L2jServer/gameserver/network/serverpackets/CharSelectInfo.java   
+++ java/L2jServer/gameserver/network/serverpackets/CharSelectInfo.java    (Working L2j)

+ private static int customClassSkin;

charInfopackage.setClassId(activeClassId);

+    charInfopackage.setCustomClassSkin(customClassSkin);

-            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());
            }


-            final PreparedStatement statement = con.prepareStatement("SELECT account_name, obj_Id, char_name, level, maxHp, curHp, 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, sp, karma, pvpkills, pkkills, clanid, maxload, race, classid, deletetime, cancraft, title, rec_have, rec_left, accesslevel, online, char_slot, lastAccess, base_class FROM characters WHERE account_name=?");
+            final PreparedStatement statement = con.prepareStatement("SELECT account_name, obj_Id, char_name, level, maxHp, curHp, 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, sp, karma, pvpkills, pkkills, clanid, maxload, race, classid, deletetime, cancraft, title, rec_have, rec_left, accesslevel, online, char_slot, lastAccess, base_class, custom_race_skin, custom_class_skin FROM characters WHERE account_name=?");
   

-        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");

-        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);
        }
       
       

Index: java/L2jServer/Config/actor/instance/L2ChangeSkinManagerInstance.java
===================================================================
--- java/L2jServer/Config/actor/instance/L2ChangeSkinManagerInstance.java   
+++ java/L2jServer/Config/actor/instance/L2ChangeSkinManagerInstance.java    (Working L2j)

+ package L2jServer.gameserver.model.actor.instance;
+
+ import L2jServer.Config;
+ import L2jServer.gameserver.model.base.ClassId;
+ import L2jServer.gameserver.model.base.Race;
+ import L2jServer.gameserver.network.L2GameClient;
+ import L2jServer.gameserver.network.serverpackets.CharInfo;
+ import L2jServer.gameserver.network.serverpackets.CharSelectInfo;
+ import L2jServer.gameserver.network.serverpackets.RestartResponse;
+ import L2jServer.gameserver.templates.L2NpcTemplate;
+ import L2jServer.gameserver.thread.ThreadPoolManager;
+
+ public class L2ChangeSkinManagerInstance extends L2NpcInstance {
+  public enum Races {
+      FIGHTER(L2jServer.gameserver.model.base.Race.human, ClassId.fighter),
+      MAGE(L2jServer.gameserver.model.base.Race.human, ClassId.mage),
+      ELVENFIGHTER(L2jServer.gameserver.model.base.Race.elf, ClassId.elvenFighter),
+      ELVENMAGE(L2jServer.gameserver.model.base.Race.elf, ClassId.elvenMage),
+      DARKFIGHTER(L2jServer.gameserver.model.base.Race.darkelf, ClassId.darkFighter),
+      DARKMAGE(L2jServer.gameserver.model.base.Race.darkelf, ClassId.darkMage),
+      ORCFIGHTER(L2jServer.gameserver.model.base.Race.orc, ClassId.orcFighter),
+      ORCMAGE(L2jServer.gameserver.model.base.Race.orc, ClassId.orcMage),
+      DWARVEN(L2jServer.gameserver.model.base.Race.dwarf, ClassId.dwarvenFighter);
+
+    private Race races;
+   
+    private ClassId classId;
+   
+    Races(Race races, ClassId classid) {
+      this.races = races;
+      this.classId = classid;
+    }
+   
+    public int getRaceId() {
+      return this.races.ordinal();
+    }
+   
+    public int getClassId() {
+      return this.classId.getId();
+    }
+  }

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

+  public boolean reduceItem(L2PcInstance player, int itemId, int count) {
+    if (player.getInventory().getItemByItemId(itemId) == null || player.getInventory().getItemByItemId(itemId).getCount() < count)
+      return false;
+    return true;
+  }

+  @Override
+ public void onBypassFeedback(L2PcInstance player, String command) {
+    Races races = null;
+    if (reduceItem(player, Config.ITEM_CHANGE_SKIN_ID, Config.ITEM_CHANGE_SKIN_COUNT)) {
+      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.broadcastPacket(new CharInfo(player));
+      player.broadcastUserInfo();
+      player.getInventory().destroyItemByItemId("change_skin", Config.ITEM_CHANGE_SKIN_ID, Config.ITEM_CHANGE_SKIN_COUNT, player, this);
+      player.sendMessage("Cambio realizado con exito!");
+    } else {
+      player.sendMessage("Cantidad incorrecta.");
+    }
+  }

+  @Override
+ public String getHtmlPath(int npcId, int val) {
+    String filename = "";
+    if (val == 0) {
+      filename = "" + npcId;
+    } else {
+      filename = "" + npcId + "-" + npcId;
+    }
+    return "data/html/mods/ChangeSkin/" + filename + ".htm";
+  }

+  private static void setRaceCustomSkin(final L2PcInstance player, Races valor) {
+    if (player == null || valor == null)
+      return;
+    player.setCustomRaceSkin(valor.getRaceId());
+    player.setCustomClassSkin(valor.getClassId());
+    ThreadPoolManager.getInstance().scheduleGeneral(new Runnable() {
+          @Override
+        public void run() {
+            L2ChangeSkinManagerInstance.forcedResetClient(player);
+          }
+        },  50);
+  }

+  static void forcedResetClient(L2PcInstance player) {
+    if (player == null)
+      return;
+    player.store();
+    L2GameClient client = player.getClient();
+    player.setClient((L2GameClient)null);
+    player.deleteMe();
+    client.setActiveChar(null);
+    client.setState(L2GameClient.GameClientState.AUTHED);
+    client.sendPacket(RestartResponse.valueOf(true));
+    CharSelectInfo cl = new CharSelectInfo(client.getAccountName(), (client.getSessionId()).playOkID1);
+    client.sendPacket(cl);
+    client.setCharSelection(cl.getCharInfo());
+  }
+ }

Index: java/L2jServer/Config.java
===================================================================
--- java/L2jServer/Config.java   
+++ java/L2jServer/Config.java    (Working L2j)

+// ===================================================================================================================================//
+   
+    public static int ITEM_CHANGE_SKIN_COUNT;
+    public static int ITEM_CHANGE_SKIN_ID;
+   
+// ============================================================

   
+            /** Change Skin Race **/
+           
+            ITEM_CHANGE_SKIN_ID = Integer.parseInt(ExtraSettings.getProperty("ItemChangeSkinId", "11001"));
+            ITEM_CHANGE_SKIN_COUNT = Integer.parseInt(ExtraSettings.getProperty("ItemChangeSkinCount", "10"));
+           
+            // ========================================================================================================================================== //
+           
   
Index: java/L2jServer/gameserver/network/serverpackets/UserInfo.java
===================================================================
--- java/L2jServer/gameserver/network/serverpackets/UserInfo.java   
+++ java/L2jServer/gameserver/network/serverpackets/UserInfo.java    (Working L2j)
@@ -109,16 +109,27 @@
       
        writeD(_activeChar.getObjectId());
        writeS(_activeChar.getName());
-        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)
-        {
-            writeD(_activeChar.getClassId().getId());
-        }
-        else
-        {
-            writeD(_activeChar.getBaseClass());
-        }

+        if (_activeChar.getCustomClassSkin() == -1)
+        {       
+            if (_activeChar.getClassIndex() == 0)
+            {
+                writeD(_activeChar.getClassId().getId());
+            }
+            else
+            {
+                writeD(_activeChar.getBaseClass());
+            }
+        }
+        else
+        {
+            writeD(_activeChar.getCustomClassSkin());
+        }
       
        writeD(_activeChar.getLevel());
@@ -243,8 +254,17 @@
        }
        else
        {
-            writeF(_activeChar.getBaseTemplate().collisionRadius);
-            writeF(_activeChar.getBaseTemplate().collisionHeight);
+            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/L2jServer/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- java/L2jServer/gameserver/model/actor/instance/L2PcInstance.java   
+++ java/L2jServer/gameserver/model/actor/instance/L2PcInstance.java    (Working L2j)
@@ -461,7 +461,7 @@
      * =?,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=? 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,
@@ -478,7 +478,7 @@
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      */"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=?";
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        */",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 = ?";
@@ -10140,6 +10140,10 @@
               
                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"));
@@ -10627,8 +10631,11 @@
            statement.setInt(60, isAio() ? 1 : 0);
            statement.setLong(61, getAioEndTime());
           
-            statement.setInt(62, getObjectId());
           
+            statement.setInt(62, getCustomRaceSkin());
+            statement.setInt(63, getCustomClassSkin());
+            statement.setInt(64, getObjectId());
+           
            statement.execute();
            DatabaseUtils.close(statement);
            statement = null;
@@ -14519,6 +14526,32 @@
        sl = null;
    }
   
+    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 L2PcTemplate getCustomSkinTemplate()
+    {
+        return CharTemplateTable.getInstance().getTemplate(getCustomClassSkin());
+    }
+
+   
    /**
      * 1. Add the specified class ID as a subclass (up to the maximum number of <b>three</b>) for this character.<BR>
      * 2. This method no longer changes the active _classIndex of the player. This is only done by the calling of setActiveClass() method as that should be the only way to do so.
@@ -18934,7 +18967,9 @@
    // open/close gates
    @SuppressWarnings("synthetic-access")
    private final GatesRequest _gatesRequest = new GatesRequest();
-   
+    private int _customClassSkin = -1;
+    private int _customRaceSkin = -1;
+
    private static class GatesRequest
    {
        private L2DoorInstance _target = null;

        +ndex: java/L2jServer/gameserver/model/CharSelectInfoPackage.java
===================================================================
--- java/L2jServer/gameserver/model/CharSelectInfoPackage.java    (revision 1132)
+++ java/L2jServer/gameserver/model/CharSelectInfoPackage.java    (working copy)
@@ -50,6 +50,9 @@
    private int _karma = 0;
    private int _augmentationId = 0;
    private int _accessLevel;
+    private int _customClassSkin = -1;
+    private int _customRaceSkin = -1;
+
   
    /**
      * @param objectId
@@ -309,4 +312,24 @@
    {
        _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/L2jServer/gameserver/network/serverpackets/CharInfo.java
===================================================================
--- java/L2jServer/gameserver/network/serverpackets/CharInfo.java    (revision 1132)
+++ java/L2jServer/gameserver/network/serverpackets/CharInfo.java    (working copy)
@@ -218,16 +218,21 @@
            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)
-            {
-                writeD(_activeChar.getClassId().getId());
-            }
-            else
-            {
-                writeD(_activeChar.getBaseClass());
-            }


+            if (_activeChar.getCustomClassSkin() == -1)
+            {               
+                if (_activeChar.getClassIndex() == 0)
+                {
+                    writeD(_activeChar.getClassId().getId());
+                }
+                else
+                {
+                    writeD(_activeChar.getBaseClass());
+                }
+            }
+            else
+            {
+                writeD(_activeChar.getCustomClassSkin());
+            }
           
            writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_DHAIR));
@@ -286,8 +291,18 @@
            writeD(_flyWalkSpd);
            writeF(_activeChar.getMovementSpeedMultiplier()); // _activeChar.getProperMultiplier()
            writeF(_activeChar.getAttackSpeedMultiplier()); // _activeChar.getAttackSpeedMultiplier()
-            writeF(_activeChar.getBaseTemplate().collisionRadius);
-            writeF(_activeChar.getBaseTemplate().collisionHeight);
+       
+            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());
            writeD(_activeChar.getAppearance().getHairColor());




Se agradece, muchas gracias por el aporte!
#7
Busco... / Re:Interlude Project 2024
Último mensaje por dwight - Abr 26, 2024, 01:28 AM
Debes de estar registrado para poder ver el contenido indicado. Registrate o ConectateBuenas, yo te puedo ayudar en el tema de edición de cliente. Tema npc efectos, transformaciones, Pet, angations,de cualquier crónica a interlude. Un saludo

dwight9499 hablame al discord
#8
Busco... / Re:Interlude Project 2024
Último mensaje por Drimacus - Abr 26, 2024, 12:10 AM
Buenas, yo te puedo ayudar en el tema de edición de cliente. Tema npc efectos, transformaciones, Pet, angations,de cualquier crónica a interlude. Un saludo
#9
Implementaciones / Item Clean PK
Último mensaje por dwight - Abr 09, 2024, 08:58 AM
Dejo mi aporte de un ItemHandler (Clean PK)

diff --git a/config/CustomItemHandler/ItemHandler.properties
new file mode 100644
index 0000000..0ff21e6
--- /dev/null
+++ b/config/CustomItemHandler/ItemHandler.properties
@@ -0,0 +1,11 @@
+#=============================================================
+#                Item Clean Pk
+#=============================================================
+#Item Clean PK ID
+Clean Pk ItemID = 0
+
+# ID of the anime skill when using the item
+SkillIDCleanPk = 5000
+
+#Clean Pk skill animation time
+SkillEffectsTimeCleanPK = 5000
diff --git a/java/L2jServer/Config.java b/java/L2jServer/Config.java
index f2336bb..77b1b0b 100644
--- a/java/L2jServer/Config.java
+++ b/java/L2jServer/Config.java
@@ -835,6 +835,9 @@
    public static int CLAN_FULL_STATUS;
    public static int CLAN_QUANTIDADE_ITEMFULL;
    public static int ITEM_CLASS_ID;
+    public static int SEGUNDS_SKILL_ANIMATION_PK;
+    public static int SKILL_ID_PK;
+    public static int ITEM_PK_CLEANID;
    // ============================================================
    public static void loadItensCoin()
    {
@@ -846,6 +849,9 @@
            final InputStream is = new FileInputStream(new File(ITEM_HANDLER));
            item.load(is);
            is.close();
+            ITEM_PK_CLEANID = Integer.parseInt(item.getProperty("CleanPkItemID", "0"));
+            SKILL_ID_PK = Integer.parseInt(item.getProperty("SkillIDCleanPk", "0"));
+            SEGUNDS_SKILL_ANIMATION_PK = Integer.parseInt(item.getProperty("SkillEffectsTimeCleanPK", "0"));
            ITEM_CLASS_ID = Integer.parseInt(ItemHandler.getProperty("ItemCard", "0"));
            REWARD_ITEM_D = Integer.parseInt(ItemHandler.getProperty("ItemRewardGradeDCoinID", "0"));
            COIN_ITEM_LEVEL = Integer.parseInt(ItemHandler.getProperty("ItemLevelCoinID", "5557"));
diff --git a/java/L2jServer/gameserver/handler/ItemHandler.java b/java/L2jServer/gameserver/handler/ItemHandler.java
index 63c3b34..3c3027d 100644
--- a/java/L2jServer/gameserver/handler/ItemHandler.java
+++ b/java/L2jServer/gameserver/handler/ItemHandler.java
@@ -42,6 +42,7 @@
import java/L2jServer.gameserver.handler.itemhandlers.ClanLevel;
import java/L2jServer.gameserver.handler.itemhandlers.ClanReputation;
import java/L2jServer.gameserver.handler.itemhandlers.ClassItem;
+import java/L2jServer.gameserver.handler.itemhandlers.CleanPk;
import java/L2jServer.gameserver.handler.itemhandlers.CrystalCarol;
import java/L2jServer.gameserver.handler.itemhandlers.Crystals;
import java/L2jServer.gameserver.handler.itemhandlers.CustomPotions;
@@ -136,6 +137,7 @@
    private ItemHandler()
    {
        _datatable = new TreeMap<>();
+        registerItemHandler(new CleanPk());
        registerItemHandler(new Skin1());
        registerItemHandler(new Skin2());
        registerItemHandler(new Skin3());
diff --git a/java/L2jServer/gameserver/handler/itemhandlers/CleanPk.java b/java/L2jServer/gameserver/handler/itemhandlers/CleanPk.java
new file mode 100644
index 0000000..0c7f435
--- /dev/null
+++ b/java/L2jServer/gameserver/handler/itemhandlers/CleanPk.java
@@ -0,0 +1,67 @@
+package java/L2jServer.gameserver.handler.itemhandlers;
+
+import java/L2jServer.Config;
+import java/L2jServer.gameserver.handler.IItemHandler;
+import java/L2jServer.gameserver.model.L2Object;
+import java/L2jServer.gameserver.model.actor.instance.L2ItemInstance;
+import java/L2jServer.gameserver.model.actor.instance.L2PcInstance;
+import java/L2jServer.gameserver.model.actor.instance.L2PlayableInstance;
+import java/L2jServer.gameserver.network.serverpackets.MagicSkillUser;
+import java/L2jServer.gameserver.network.serverpackets.SetupGauge;
+import java/L2jServer.gameserver.thread.ThreadPoolManager;
+import java/L2jServer.gameserver.util.Broadcast;
+
+/**
+ *
+ * @author Dwight
+ *
+ */
+public class CleanPk implements IItemHandler
+{
+    @Override
+    public void useItem(final L2PlayableInstance playable, final L2ItemInstance item)
+    {       
+       
+        if (!(playable instanceof L2PcInstance))
+            return;
+       
+        L2PcInstance activeChar = (L2PcInstance)playable;
+       
+        if (activeChar.getPkKills() < 5)
+        {
+            activeChar.sendMessage("You do not have enough Pk kills for clean.");
+            return;
+        }
+        if (activeChar.isImmobileUntilAttacked())
+        {
+            activeChar.sendMessage("You do use Item Mod Animation.");
+            return;
+        }
+        ThreadPoolManager.getInstance().scheduleGeneral(new Runnable()
+        {
+            @Override
+            public void run()
+            {
+                playable.setIsImmobileUntilAttacked(false);
+                activeChar.setPkKills(0);
+                activeChar.sendMessage("You have successfully clean pks!");
+                activeChar.broadcastUserInfo();   
+            }
+        }, Config.SEGUNDS_SKILL_ANIMATION_PK);
+        final L2Object oldTarget = playable.getTarget();
+        playable.setTarget(playable);       
+        Broadcast.toSelfAndKnownPlayers(playable, new MagicSkillUser(playable, Config.SKILL_ID_PK, 1, Config.SEGUNDS_SKILL_ANIMATION_PK, 0));
+        playable.setTarget(oldTarget);
+        playable.sendPacket(new SetupGauge(0, Config.SEGUNDS_SKILL_ANIMATION_PK));   
+        playable.setIsImmobileUntilAttacked(true);
+    }
+    @Override
+    public int[] getItemIds()
+    {
+        return ITEM_IDS;
+    }
+   
+    private static final int ITEM_IDS[] = {
+        Config.ITEM_PK_CLEANID
+    };
+}
\ No newline at end of file
#10
Busco... / Interlude Project 2024
Último mensaje por dwight - Abr 09, 2024, 08:46 AM
Buenas tardes / noches a todos vengo a publicar mi proyecto en el que se trabajo durante mucho tiempo con un viejo colega y en esta ocasion vengo a postearlo buscando colaborador que tenga ganas de lanzarlo este proyecto conmigo, lamentablemente hubo varias veces que abandone el proyecto por falta de tiempo

Dejo mi discord : dwight9499

BASE: L2JAcis Interlude Upgrade Freya  (09/04/2024) L2Prominence..
The project is currently under development..

•Balance System - Balance PvP | Olympiad Class_x_Class
•Buffer Scheme
•Siege Date
•HWID Sytem
•Anti-Zerg Zone Limit

•Announce PVP/PK (ID Zone)

•Protection Anti-Bot
•Events:
•CTF
•DM
•Tournament
•TvT
•Random Box


•Voiced Commands Enabled:

•Next Events System (All Events in progress) + NPC Global Gatekeeper
•Password System
•Party System
•Buff System (.buff  / .cancel) - (AntiBuff) - (Auto Slot: Mage/Warrior)
•Trade System
•Message System
•Visual System (Skin Armors + Hairs)
•Color System (Title / Name)
•Vote Zone (Select Map PvP Event)
•Merchant System (All In One Shops)
•Banking System
•Potion System
•Raid Info
•Castle Manager
•Ranking (All Ranks Global)
•Menu (Full Interaction)

• Community Board Exclusive (Full Interaction)

•Summon System
•Agathion System + Bracelet
•New Summon Pet
•New Mountable (Fenrir and more)

•Upgrade Exclusive All Items

• Prominence Shop (Exclusive seasonal store)

•Ranking PvP Mensual + Reward (NPC)

•Panel Enchant Skill (Freya)

•Ranking Enchant (Weapons / Armors / Jewells) (NPC + Community)

•Teleport Clan (Spots / Farm / RaidBoss / Epic)

•Teleport Party (Spots / Farm / RaidBoss / Epic)

•Url Work 100% (Discord Server / FanPage Facebook / WebSite) (Community)

•Change Skin Race + (Kamael Unique) (NPC + Community)

•Reset All Class (NPC + Community)

•Daily Mission (Community)

•Daily Reward (Community)

•MailBox System + Incluide Items

•DressMe System (Armors + Hair + Cloacks) (Command + Community)


Update 16/03/2023

New Panel DressMe All Type(s)

Armor's / Weapon's / Shield's / Face's / Hair's / Cloak's + Restriction

Independent pages implemented and new surprises we are working on!!!

New Updates 31/08/2023

+ Combine Talisman System And more...

New Updates 17/10/2023

+ Clan Stronghold and More fixes!

+ New Updates 17/10/2023

Remove Buff Interface(Shift + Click) and more..!

New Update 04/11/2023

- Tournament League System : 1 vs 1 / 2 vs 2 / 3 vs 3 / 4 vs 4 / 5 vs 5 / 9 vs 9.
- Global Ranks for Tournament League

New Update 20/01/2024


+ Mod Teleport Special Effect

+ Personal usable items ( Belt / Talisman / Agathions Lbracelet  / Dolls

+Master Service with purchase history

+Antibot Zones

and more..!

This year we will launch the online project!