Noticias:

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

Menú Principal

Mensajes recientes

#1
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!
#2
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!
#3
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
#4
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
#5
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
#6
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!



#7
Implementaciones / Re:Cambio de Skin
Último mensaje por dwight - Abr 09, 2024, 08:21 AM
Buenas..!!
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());


#8
Datapacks / Re:Datapack High Five Full Cus...
Último mensaje por Swarlog - Ene 27, 2024, 06:57 PM
Debes de estar registrado para poder ver el contenido indicado. Registrate o Conectatehola! perdón mi ignorancia... esto seria instalar el sunrise normal y al momento de instalar el datapack, en ves de instalar el que baje, instalo este?

Negativo, se trata de un pack completo. Algo obsoleto pero util para sacarle lo que te interese y adaptarlo a vuestro servidor.

No recomendado para server online.
#9
Datapacks / Re:Datapack High Five Full Cus...
Último mensaje por afidrk - Ene 15, 2024, 12:21 PM
hola! perdón mi ignorancia... esto seria instalar el sunrise normal y al momento de instalar el datapack, en ves de instalar el que baje, instalo este?
#10
Soporte & Ayuda / Re:Hola soy Enrique en Telegra...
Último mensaje por icKRav - Ene 14, 2024, 08:11 PM
hola, siento mucho lo que te ha pasado, pero cuanto pase algo a si lo primero es eliminar las sesiones abiertas desde la app del móvil, y tener verificaciones en dos pasos, no hubieras tenido esos problemas.

un saludo, animo y suerte.

Pd: se puede saber como pillaste el rasonmware?