Noticias:

No tienes permiso para ver los enlaces. Para poder verlos Registrate o Conectate.

Menú Principal

Olympiad Feed

Iniciado por Swarlog, Jul 26, 2025, 11:59 PM

Tema anterior - Siguiente tema

Swarlog

CitarCORE:

Index: java/com/l2jserver/gameserver/network/serverpackets/CharInfo.java
===================================================================
--- java/com/l2jserver/gameserver/network/serverpackets/CharInfo.java    (revision 5612)
+++ java/com/l2jserver/gameserver/network/serverpackets/CharInfo.java    (working copy)
@@ -21,9 +21,12 @@
 import com.l2jserver.gameserver.instancemanager.CursedWeaponsManager;
 import com.l2jserver.gameserver.model.actor.L2Decoy;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.model.base.ClassId;
 import com.l2jserver.gameserver.model.itemcontainer.Inventory;
 import com.l2jserver.gameserver.skills.AbnormalEffect;
 import com.l2jserver.gameserver.templates.chars.L2NpcTemplate;
+import com.l2jserver.gameserver.templates.item.L2ArmorType;
+import com.l2jserver.gameserver.templates.item.L2WeaponType;
 
 
 /**
@@ -236,59 +239,107 @@
             writeD(_z);
             writeD(_vehicleId);
             writeD(_objId);
-            writeS(_activeChar.getAppearance().getVisibleName());
-            writeD(_activeChar.getRace().ordinal());
-            writeD(_activeChar.getAppearance().getSex() ? 1 : 0);
+            if(_activeChar.isInOlympiadMode()){
+                writeS("Player");//Every player in olympiad will have name Player
+                writeD(0);//Every player in olympiad will be Human
+                writeD(0);//Every player in olympiad will be male
+            }else{
+                writeS(_activeChar.getAppearance().getVisibleName());
+                writeD(_activeChar.getRace().ordinal());
+                writeD(_activeChar.getAppearance().getSex() ? 1 : 0);
+            }
             
             if (_activeChar.getClassIndex() == 0)
                 writeD(_activeChar.getClassId().getId());
             else
                 writeD(_activeChar.getBaseClass());
             
-            writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_UNDER));
-            writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_HEAD));
-            if (_airShipHelm == 0)
+            if(_activeChar.isInOlympiadMode())
             {
-                writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_RHAND));
-                writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_LHAND));
-            }
-            else
-            {
-                writeD(_airShipHelm);
                 writeD(0);
+                writeD(0);
+                if(_inv.getPaperdollItemId(Inventory.PAPERDOLL_RHAND) != 0)
+                    writeD(getOlympiadWeaponId(_inv.getPaperdollItem(Inventory.PAPERDOLL_RHAND).getWeaponItem().getItemType()));
+                else
+                    writeD(0);
+                if(_inv.getPaperdollItem(Inventory.PAPERDOLL_LHAND) != null)
+                        writeD(getOlympiadItemId(Inventory.PAPERDOLL_LHAND, _inv.getPaperdollItem(Inventory.PAPERDOLL_LHAND).getArmorItem().getItemType(), null, shouldUseShield(_activeChar.getClassId())));
+                else
+                    writeD(0);
+                writeD(getOlympiadItemId(Inventory.PAPERDOLL_GLOVES, _inv.getPaperdollItem(Inventory.PAPERDOLL_GLOVES).getArmorItem().getItemType(), null, false));
+                writeD(getOlympiadItemId(Inventory.PAPERDOLL_CHEST, _inv.getPaperdollItem(Inventory.PAPERDOLL_CHEST).getArmorItem().getItemType(), null, false));
+                writeD(getOlympiadItemId(Inventory.PAPERDOLL_LEGS, _inv.getPaperdollItem(Inventory.PAPERDOLL_LEGS).getArmorItem().getItemType(), null, false));
+                writeD(getOlympiadItemId(Inventory.PAPERDOLL_FEET, _inv.getPaperdollItem(Inventory.PAPERDOLL_FEET).getArmorItem().getItemType(), null, false));
+                writeD(0);
+                if(_inv.getPaperdollItemId(Inventory.PAPERDOLL_RHAND) != 0)
+                    writeD(getOlympiadWeaponId(_inv.getPaperdollItem(Inventory.PAPERDOLL_RHAND).getWeaponItem().getItemType()));
+                else
+                    writeD(0);
+                writeD(0);
+                writeD(0);
+                
+                writeD(0);
+                writeD(0);
+                writeD(0);
+                writeD(0);
+                writeD(0);
+                writeD(0);
+                writeD(0);
+                writeD(0);
+                writeD(0);
+
+                writeD(0);
+                writeD(0);
+                writeD(0);
+                writeD(0);
             }
-            writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_GLOVES));
-            writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_CHEST));
-            writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_LEGS));
-            writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_FEET));
-            writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_CLOAK));
-            writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_RHAND));
-            writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_HAIR));
-            writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_HAIR2));
-            // T1 new d's
-            writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_RBRACELET));
-            writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_LBRACELET));
-            writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_DECO1));
-            writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_DECO2));
-            writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_DECO3));
-            writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_DECO4));
-            writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_DECO5));
-            writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_DECO6));
-            writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_BELT));
-            // end of t1 new d's
-            
-            // c6 new h's
-            writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_UNDER));
-            writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_HEAD));
-            if (_airShipHelm == 0)
-            {
-                writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_RHAND));
-                writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_LHAND));
-            }
             else
             {
-                writeD(0);
-                writeD(0);
+                writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_UNDER));
+                writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_HEAD));
+                if (_airShipHelm == 0)
+                {
+                    writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_RHAND));
+                    writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_LHAND));
+                }
+                else
+                {
+                    writeD(_airShipHelm);
+                    writeD(0);
+                }
+                writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_GLOVES));
+                writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_CHEST));
+                writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_LEGS));
+                writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_FEET));
+                writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_CLOAK));
+                writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_RHAND));
+                writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_HAIR));
+                writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_HAIR2));
+                // T1 new d's
+                writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_RBRACELET));
+                writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_LBRACELET));
+                writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_DECO1));
+                writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_DECO2));
+                writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_DECO3));
+                writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_DECO4));
+                writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_DECO5));
+                writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_DECO6));
+                writeD(_inv.getPaperdollItemId(Inventory.PAPERDOLL_BELT));
+                // end of t1 new d's
+                
+                // c6 new h's
+                writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_UNDER));
+                writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_HEAD));
+                if (_airShipHelm == 0)
+                {
+                    writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_RHAND));
+                    writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_LHAND));
+                }
+                else
+                {
+                    writeD(0);
+                    writeD(0);
+                }
             }
             writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_GLOVES));
             writeD(_inv.getPaperdollAugmentationId(Inventory.PAPERDOLL_CHEST));
@@ -344,24 +395,38 @@
             }
             else
             {
-                writeF(_activeChar.getCollisionRadius());
-                writeF(_activeChar.getCollisionHeight());
+                if(_activeChar.isInOlympiadMode()){
+                    writeF(9);//Radius of Human Males
+                    writeF(23);//Height of Human Males
+                }else{
+                    writeF(_activeChar.getCollisionRadius());
+                    writeF(_activeChar.getCollisionHeight());
+                }
             }
+            if(_activeChar.isInOlympiadMode()){
+                writeD(0);//Every Character during olympiad will have same face and hair
+                writeD(0);
+                writeD(0);
+            }else{
+                writeD(_activeChar.getAppearance().getHairStyle());
+                writeD(_activeChar.getAppearance().getHairColor());
+                writeD(_activeChar.getAppearance().getFace());
+            }
             
-            writeD(_activeChar.getAppearance().getHairStyle());
-            writeD(_activeChar.getAppearance().getHairColor());
-            writeD(_activeChar.getAppearance().getFace());
-            
             if (gmSeeInvis)
             {
                 writeS("Invisible");
             }
+            else if(_activeChar.isInOlympiadMode())
+            {
+                writeS(_activeChar.getClassId().name());//Title of character during olympiad will be its class
+            }
             else
             {
                 writeS(_activeChar.getAppearance().getVisibleTitle());
             }
             
-            if (!_activeChar.isCursedWeaponEquipped())
+            if (!_activeChar.isCursedWeaponEquipped() && !_activeChar.isInOlympiadMode())
             {
                 writeD(_activeChar.getClanId());
                 writeD(_activeChar.getClanCrestId());
@@ -413,8 +478,10 @@
             }
             
             writeC(_activeChar.isFlyingMounted() ? 2 : 0);
-            
-            writeH(_activeChar.getRecomHave()); //Blue value for name (0 = white, 255 = pure blue)
+            if(_activeChar.isInOlympiadMode())
+                writeH(0);//Always 0 recs duing olympiad
+            else
+                writeH(_activeChar.getRecomHave()); //Blue value for name (0 = white, 255 = pure blue)
             writeD(_activeChar.getMountNpcId() + 1000000);
             writeD(_activeChar.getClassId().getId());
             writeD(0x00); //?
@@ -427,9 +494,13 @@
             else
                 writeC(0x00); //team circle around feet 1= Blue, 2 = red
             
-            writeD(_activeChar.getClanCrestLargeId());
+            if(_activeChar.isInOlympiadMode())
+                writeD(0);//No largeCrest while in olympiad
+            else
+                writeD(_activeChar.getClanCrestLargeId());
             writeC(_activeChar.isNoble() ? 1 : 0); // Symbol on char menu ctrl+I
-            writeC(_activeChar.isHero() || (_activeChar.isGM() && Config.GM_HERO_AURA) ? 1 : 0); // Hero Aura
+            //No hero Aura while player is in Olympiad
+            writeC((_activeChar.isHero() && !_activeChar.isInOlympiadMode()) || (_activeChar.isGM() && Config.GM_HERO_AURA) ? 1 : 0); // Hero Aura
             
             writeC(_activeChar.isFishing() ? 1 : 0); //0x01: Fishing Mode (Cant be undone by setting back to 0)
             writeD(_activeChar.getFishx());
@@ -467,6 +538,25 @@
         }
     }
     
+    /**
+     * @param classId
+     * @return
+     */
+    private boolean shouldUseShield(ClassId classId)
+    {
+        //Knights only use shields
+        switch(classId)
+        {
+            case hellKnight:
+            case phoenixKnight:
+            case shillienTemplar:
+            case evaTemplar:
+                return true;
+                default:
+                    return false;
+        }
+    }
+
     /* (non-Javadoc)
      * @see com.l2jserver.gameserver.serverpackets.ServerBasePacket#getType()
      */
@@ -475,4 +565,89 @@
     {
         return _S__03_CHARINFO;
     }
+    
+    private int getOlympiadItemId(int slot, L2ArmorType armorType, L2WeaponType weaponType, boolean shield)
+    {
+        switch(slot)
+        {
+            case Inventory.PAPERDOLL_CHEST:
+                if(armorType == L2ArmorType.HEAVY)
+                    return 0;
+                else if(armorType == L2ArmorType.LIGHT)
+                    return 0;
+                else
+                    return 0;
+            case Inventory.PAPERDOLL_LEGS:
+                if(armorType == L2ArmorType.HEAVY)
+                    return 0;
+                else if(armorType == L2ArmorType.LIGHT)
+                    return 0;
+                else
+                    return 0;
+            case Inventory.PAPERDOLL_GLOVES:
+                if(armorType == L2ArmorType.HEAVY)
+                    return 0;
+                else if(armorType == L2ArmorType.LIGHT)
+                    return 0;
+                else
+                    return 0;
+            case Inventory.PAPERDOLL_FEET:
+                if(armorType == L2ArmorType.HEAVY)
+                    return 0;
+                else if(armorType == L2ArmorType.LIGHT)
+                    return 0;
+                else
+                    return 0;
+            case Inventory.PAPERDOLL_LHAND:
+                if(shield)
+                    return 0;//shield Id
+                else if(weaponType != null && (weaponType == L2WeaponType.POLE || weaponType == L2WeaponType.BOW || weaponType == L2WeaponType.BIGBLUNT || weaponType == L2WeaponType.BIGSWORD || weaponType == L2WeaponType.DUALFIST || weaponType == L2WeaponType.CROSSBOW || weaponType == L2WeaponType.DUALDAGGER || weaponType == L2WeaponType.DUAL))//2 Handed Weapons
+                    return getOlympiadWeaponId(weaponType);
+                else
+                    return 0;//no shield
+            case Inventory.PAPERDOLL_RHAND:
+                return getOlympiadWeaponId(weaponType);
+            default:
+                return 0;//leave it as it is
+        }
+    }
+
+    private int getOlympiadWeaponId(L2WeaponType type)
+    {
+        switch(type)
+        {
+            case ANCIENTSWORD:
+                return 0;
+            case BIGBLUNT:
+                return 0;
+            case BIGSWORD:
+                return 0;
+            case BLUNT:
+                return 0;
+            case BOW:
+                return 0;
+            case CROSSBOW:
+                return 0;
+            case DAGGER:
+                return 0;
+            case DUAL:
+                return 0;
+            case DUALDAGGER:
+                return 0;
+            case DUALFIST:
+                return 0;
+            case ETC:
+                return 0;
+            case FIST:
+                return 0;
+            case POLE:
+                return 0;
+            case RAPIER:
+                return 0;
+            case SWORD:
+                return 0;
+                default:
+                    return 0;//change everything except this one
+        }
+    }
 }

CitarDATA:

### Eclipse Workspace Patch 1.0
#P L2J_DataPack
Index: dist/game/data/scripts/handlers/bypasshandlers/OlympiadObservation.java
===================================================================
--- dist/game/data/scripts/handlers/bypasshandlers/OlympiadObservation.java    (revision 9140)
+++ dist/game/data/scripts/handlers/bypasshandlers/OlympiadObservation.java    (working copy)
@@ -124,9 +124,9 @@
 
                                 StringUtil.append(list,
                                         "   ",
-                                        task.getGame().getPlayerNames()[0],
+                                        "Player",//task.getGame().getPlayerNames()[0],
                                         "  :  ",
-                                        task.getGame().getPlayerNames()[1]);
+                                        "Player");//task.getGame().getPlayerNames()[1]);
                             }
                             else
                             {
@@ -200,9 +200,9 @@
 
                             StringUtil.append(list,
                                     "</td><td>",
-                                    task.getGame().getPlayerNames()[0],
+                                    "Player",//task.getGame().getPlayerNames()[0],
                                     "&nbsp;",
-                                    task.getGame().getPlayerNames()[1]);
+                                    "Player");//task.getGame().getPlayerNames()[1]);
                         }
                         else
                         {

By NeverMore