Jump to content
  • 0

No epic at olympiad!


Question

Posted

I want a player with epic to be unable to participate at olympiad.

 

Well i tried this out in UseItem.java

 

  if (activeChar.isInOlympiadMode()== true && itemId == ID || itemId == ID || )

            {

                activeChar.sendMessage("dont use this in oly dumbass!");

return;

            }

 

not working

 

then i tried it in olympiad.java

 

                                (wpn.getItemId() >= 6611 && wpn.getItemId() <= 6621) ||

                                wpn.getItemId() == 6842 || wpn.getItemId() == 9450 || wpn.getItemId() == 9451 ||

wpn.getItemId() == 9452 || wpn.getItemId() == 9453 || wpn.getItemId() == 9454 ||

wpn.getItemId() == 9455 || wpn.getItemId() == 9456 || wpn.getItemId() == 9457 ||

wpn.getItemId() == 9458 || wpn.getItemId() == 9459 || wpn.getItemId() == 9460 ||

wpn.getItemId() == 9461 || wpn.getItemId() == 9462

                            )

                        )

                    {

 

not working again.Any help would be great.k thanks

Recommended Posts

  • 0
Posted

well a good idea will be to make a new itemhandler

 

i did not tested.. and i am not sure about the return; but replay if u tested it and it works or not.. (for l2jfree ofc)

 

 

noOlyitems.java

/*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
package net.sf.l2j.gameserver.handler.itemhandlers;

import net.sf.l2j.gameserver.handler.IItemHandler;
import net.sf.l2j.gameserver.model.L2ItemInstance;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
import net.sf.l2j.gameserver.model.actor.instance.L2PlayableInstance;
import net.sf.l2j.gameserver.network.serverpackets.Olympiad;
import net.sf.l2j.gameserver.serverpackets.SystemMessage;
import net.sf.l2j.gameserver.serverpackets.InventoryUpdate;


/*
* @author zunix
*
*/

public class noOlyitems implements IItemHandler
{
private static final int	ITEM_IDS[]	=
										{ 6611, 6612, 6613, 6614, 6615, 6616, 6617, 6618, 6619, 
										6620, 6621, 6842, 9450, 9451, 9452, 9453, 9454, 9455, 9
										456, 9457, 9458, 9459, 9460, 9461, 9462 };

public void useItem(L2PlayableInstance playable, L2ItemInstance item)
{
        if (activeChar.isInOlympiadMode() && item.isEquipped())
            {
               activeChar.sendMessage("dont use this in oly dumbass!");
               return;
            L2ItemInstance[] unequiped = activeChar.getInventory().unEquipItemInBodySlotAndRecord(item.getItem().getBodyPart());
            InventoryUpdate iu = new InventoryUpdate();
            for (L2ItemInstance element : unequiped) {
                activeChar.checkSSMatch(null, element);
                iu.addModifiedItem(element);
             }
            activeChar.sendPacket(iu);
}

public int[] getItemIds()
{
	return ITEM_IDS;
}
}

  • 0
Posted

Ok i created a file named noOlyitems.java here src\main\java\net\sf\l2j\gameserver\handler\itemhandlers

and i added your code..Well i'll see if this will work in some minutes and i'll post result here.

 

EDIT:

The result_failure..

 

D:\workspace\L2_GameServer_IL\src\main\java\net\sf\l2j\gameserver\handler\itemhandlers\noOlyitems.java:[35,66] '}' expected

D:\workspace\L2_GameServer_IL\src\main\java\net\sf\l2j\gameserver\handler\itemhandlers\noOlyitems.java:[36,14] illegal start of type

D:\workspace\L2_GameServer_IL\src\main\java\net\sf\l2j\gameserver\handler\itemhandlers\noOlyitems.java:[36,15] <identifier> expected

D:\workspace\L2_GameServer_IL\src\main\java\net\sf\l2j\gameserver\handler\itemhandlers\noOlyitems.java:[36,21] <identifier> expected

D:\workspace\L2_GameServer_IL\src\main\java\net\sf\l2j\gameserver\handler\itemhandlers\noOlyitems.java:[36,26] illegal start of type

D:\workspace\L2_GameServer_IL\src\main\java\net\sf\l2j\gameserver\handler\itemhandlers\noOlyitems.java:[36,27] <identifier> expected

D:\workspace\L2_GameServer_IL\src\main\java\net\sf\l2j\gameserver\handler\itemhandlers\noOlyitems.java:[36,33] <identifier> expected

D:\workspace\L2_GameServer_IL\src\main\java\net\sf\l2j\gameserver\handler\itemhandlers\noOlyitems.java:[36,38] illegal start of type

D:\workspace\L2_GameServer_IL\src\main\java\net\sf\l2j\gameserver\handler\itemhandlers\noOlyitems.java:[36,39] <identifier> expected

D:\workspace\L2_GameServer_IL\src\main\java\net\sf\l2j\gameserver\handler\itemhandlers\noOlyitems.java:[36,45] <identifier> expected

D:\workspace\L2_GameServer_IL\src\main\java\net\sf\l2j\gameserver\handler\itemhandlers\noOlyitems.java:[38,8] class, interface, or enum expected

D:\workspace\L2_GameServer_IL\src\main\java\net\sf\l2j\gameserver\handler\itemhandlers\noOlyitems.java:[43,15] class, interface, or enum expected

D:\workspace\L2_GameServer_IL\src\main\java\net\sf\l2j\gameserver\handler\itemhandlers\noOlyitems.java:[44,12] class, interface, or enum expected

D:\workspace\L2_GameServer_IL\src\main\java\net\sf\l2j\gameserver\handler\itemhandlers\noOlyitems.java:[45,12] class, interface, or enum expected

D:\workspace\L2_GameServer_IL\src\main\java\net\sf\l2j\gameserver\handler\itemhandlers\noOlyitems.java:[46,12] class, interface, or enum expected

D:\workspace\L2_GameServer_IL\src\main\java\net\sf\l2j\gameserver\handler\itemhandlers\noOlyitems.java:[48,16] class, interface, or enum expected

D:\workspace\L2_GameServer_IL\src\main\java\net\sf\l2j\gameserver\handler\itemhandlers\noOlyitems.java:[49,13] class, interface, or enum expected

D:\workspace\L2_GameServer_IL\src\main\java\net\sf\l2j\gameserver\handler\itemhandlers\noOlyitems.java:[51,1] class, interface, or enum expected

D:\workspace\L2_GameServer_IL\src\main\java\net\sf\l2j\gameserver\handler\itemhandlers\noOlyitems.java:[53,8] class, interface, or enum expected

D:\workspace\L2_GameServer_IL\src\main\java\net\sf\l2j\gameserver\handler\itemhandlers\noOlyitems.java:[56,1] class, interface, or enum expected

  • 0
Posted

if (activeChar.isInOlympiadMode()== true && itemId == ID || itemId == ID || )
              {
                  activeChar.sendMessage("dont use this in oly dumbass!");
              return;
              }

 

that should work. but you said it does not. tho this will work only if people tried to use this item. not if he is already wearing it. try a code to remove all players items when he move to olympiad stadium.

 

 

EDIT:

 

what about this in UseItem.java

 

   

 if(activeChar.isInOlympiadMode() && (bodyPart == 16384 || bodyPart == 256 || bodyPart == 128) && item.isHeroItem() || item.isOlyRestrictedItem())
            {
                activeChar.sendPacket(new SystemMessage(SystemMessageId.THIS_ITEM_CANT_BE_EQUIPPED_FOR_THE_OLYMPIAD_EVENT));
                return;
            }

 

just add the items you need and tell me.

  • 0
Posted

The problem with this code

if (activeChar.isInOlympiadMode()== true && itemId == ID || itemId == ID || )

              {

                  activeChar.sendMessage("dont use this in oly dumbass!");

              return;

              }

 

is that even if they are not in olympiad and they try to equip epic they have the msg dont use this in oly dumbass!

 

now about your code..where should i put all the ids (they are 3 sets)

  • 0
Posted

try add in my code || bodypart= your_id . not sure but just try it.

 

like

 

if(activeChar.isInOlympiadMode() && (bodyPart == 16384 || bodyPart == 256 || bodyPart == 128 || bodypart == your_id) && item.isHeroItem() || item.isOlyRestrictedItem())
           {
               activeChar.sendPacket(new SystemMessage(SystemMessageId.THIS_ITEM_CANT_BE_EQUIPPED_FOR_THE_OLYMPIAD_EVENT));
               return;
           }

 

 

hm what about that config in altsettings.properties

 

# Restrict same item in olympiad. ItemID's need to be separated whit comma (ex. 1,200,350)

AltOlyRestrictedItems = 0

  • 0
Posted

I can't find anywhere in altsettings this

 

# Restrict same item in olympiad. ItemID's need to be separated whit comma (ex. 1,200,350)

AltOlyRestrictedItems = 0

 

EDIT:

I added your code in useitem after it code

 

            {

                SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED);

sm.addItemName(item);

                getClient().getActiveChar().sendPacket(sm);

                sm = null;

                return;

            }

 

and i have the following error

 

D:\workspace\L2_GameServer_IL\src\main\java\net\sf\l2j\gameserver\clientpackets\UseItem.java:[173,105] ')' expected

D:\workspace\L2_GameServer_IL\src\main\java\net\sf\l2j\gameserver\clientpackets\UseItem.java:[173,115] illegal start of expression

D:\workspace\L2_GameServer_IL\src\main\java\net\sf\l2j\gameserver\clientpackets\UseItem.java:[173,117] ';' expected

D:\workspace\L2_GameServer_IL\src\main\java\net\sf\l2j\gameserver\clientpackets\UseItem.java:[173,123] illegal start of expression

D:\workspace\L2_GameServer_IL\src\main\java\net\sf\l2j\gameserver\clientpackets\UseItem.java:[173,134] ';' expected

D:\workspace\L2_GameServer_IL\src\main\java\net\sf\l2j\gameserver\clientpackets\UseItem.java:[173,305] illegal start of expression

D:\workspace\L2_GameServer_IL\src\main\java\net\sf\l2j\gameserver\clientpackets\UseItem.java:[173,303] not a statement

D:\workspace\L2_GameServer_IL\src\main\java\net\sf\l2j\gameserver\clientpackets\UseItem.java:[173,307] illegal start of expression

D:\workspace\L2_GameServer_IL\src\main\java\net\sf\l2j\gameserver\clientpackets\UseItem.java:[173,314] ';' expected

D:\workspace\L2_GameServer_IL\src\main\java\net\sf\l2j\gameserver\clientpackets\UseItem.java:[173,328] not a statement

D:\workspace\L2_GameServer_IL\src\main\java\net\sf\l2j\gameserver\clientpackets\UseItem.java:[173,357] ';' expected

  • 0
Posted

[code]if(activeChar.isInOlympiadMode() && (bodyPart == 16384 || bodyPart == 256 || bodyPart == 128 || bodypart == your_id) && item.isHeroItem() || item.isOlyRestrictedItem())
           {
               activeChar.sendPacket(new SystemMessage(SystemMessageId.THIS_ITEM_CANT_BE_EQUIPPED_FOR_THE_OLYMPIAD_EVENT));
               return;
           }

 

here is my useitem.java

 

public class UseItem extends L2GameClientPacket

{

/* member class not found */

class WeaponEquipTask {}

 

 

public UseItem()

{

}

 

protected void readImpl()

{

_objectId = readD();

_unknown = readD();

}

 

protected void runImpl()

{

L2PcInstance activeChar = ((L2GameClient)getClient()).getActiveChar();

if(activeChar == null)

return;

if(!FloodProtector.getInstance().tryPerformAction(activeChar.getObjectId().intValue(), 0))

return;

if(activeChar.getPrivateStoreType() != 0)

{

activeChar.sendPacket(SystemMessageId.CANNOT_TRADE_DISCARD_DROP_ITEM_WHILE_IN_SHOPMODE);

activeChar.sendPacket(ActionFailed.STATIC_PACKET);

return;

}

if(activeChar.getActiveTradeList() != null)

{

activeChar.sendPacket(SystemMessageId.CANNOT_PICKUP_OR_USE_ITEM_WHILE_TRADING);

activeChar.sendPacket(ActionFailed.STATIC_PACKET);

return;

}

L2ItemInstance item = activeChar.getInventory().getItemByObjectId(_objectId);

if(item == null)

return;

if(item.isWear())

return;

if(item.getItem().getType2() == 3)

{

activeChar.sendPacket(new SystemMessage(SystemMessageId.CANNOT_USE_QUEST_ITEMS));

return;

}

int itemId = item.getItemId();

if(!Config.ALT_GAME_KARMA_PLAYER_CAN_TELEPORT && activeChar.getKarma() > 0 && (itemId == 736 || itemId == 1538 || itemId == 1829 || itemId == 1830 || itemId == 3958 || itemId == 5858 || itemId == 5859 || itemId == 6663 || itemId == 6664 || itemId >= 7117 && itemId <= 7135 || itemId >= 7554 && itemId <= 7559 || itemId == 7618 || itemId == 7619 || itemId == 10129 || itemId == 10130))

return;

L2Clan cl = activeChar.getClan();

if((cl == null || cl.getHasCastle() == 0) && itemId == 7015 && Config.CASTLE_SHIELD)

{

activeChar.sendPacket(new SystemMessage(SystemMessageId.NO_CONDITION_TO_EQUIP));

return;

}

if((cl == null || cl.getHasHideout() == 0) && itemId == 6902 && Config.CLANHALL_SHIELD)

{

activeChar.sendPacket(new SystemMessage(SystemMessageId.NO_CONDITION_TO_EQUIP));

return;

}

if(itemId >= 7860 && itemId <= 7879 && Config.APELLA_ARMORS && (cl == null || activeChar.getPledgeClass() < 5))

{

activeChar.sendPacket(new SystemMessage(SystemMessageId.NO_CONDITION_TO_EQUIP));

return;

}

if(itemId >= 7850 && itemId <= 7859 && Config.OATH_ARMORS && cl == null)

{

activeChar.sendPacket(new SystemMessage(SystemMessageId.NO_CONDITION_TO_EQUIP));

return;

}

if(itemId == 6841 && Config.CASTLE_CROWN && (cl == null || cl.getHasCastle() == 0 || !activeChar.isClanLeader()))

{

activeChar.sendPacket(new SystemMessage(SystemMessageId.NO_CONDITION_TO_EQUIP));

return;

}

if(Config.CASTLE_CIRCLETS && (itemId >= 6834 && itemId <= 6840 || itemId == 8182 || itemId == 8183))

{

if(cl == null)

{

activeChar.sendPacket(new SystemMessage(SystemMessageId.NO_CONDITION_TO_EQUIP));

return;

}

int circletId = CastleManager.getInstance().getCircletByCastleId(cl.getHasCastle());

if(activeChar.getSubPledgeType() == -1 || circletId != itemId)

{

activeChar.sendPacket(new SystemMessage(SystemMessageId.NO_CONDITION_TO_EQUIP));

return;

}

}

if((itemId >= 9391 && itemId <= 9415 || itemId == 10169) && activeChar.isSubClassActive())

{

activeChar.sendPacket(new SystemMessage(SystemMessageId.NO_CONDITION_TO_EQUIP));

return;

}

if(activeChar.getPkKills() > 0 && item.getItemId() >= 7816 && item.getItemId() <= 7831)

{

activeChar.sendPacket(new SystemMessage(SystemMessageId.YOU_ARE_UNABLE_TO_EQUIP_THIS_ITEM_WHEN_YOUR_PK_COUNT_IS_GREATER_THAN_OR_EQUAL_TO_ONE));

return;

}

if(itemId == 57)

return;

if(activeChar.isFishing() && (itemId < 6535 || itemId > 6540))

{

SystemMessage sm = new SystemMessage(SystemMessageId.CANNOT_DO_WHILE_FISHING_3);

sendPacket(sm);

return;

}

if(activeChar.isDead())

{

SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED);

sm.addItemName(item);

sendPacket(sm);

return;

}

if(item.getItem().isForWolf() || item.getItem().isForGreatWolf() || item.getItem().isForHatchling() || item.getItem().isForStrider() || item.getItem().isForBabyPet())

{

SystemMessage sm = new SystemMessage(SystemMessageId.CANNOT_EQUIP_PET_ITEM);

sm.addItemName(item);

((L2GameClient)getClient()).getActiveChar().sendPacket(sm);

sm = null;

return;

}

if(_log.isDebugEnabled())

_log.debug((new StringBuilder()).append(activeChar.getObjectId()).append(": use item ").append(_objectId).toString());

if(item.isEquipable())

{

if(activeChar.isDisarmed())

return;

if(!((L2Equip)item.getItem()).allowEquip(activeChar))

{

activeChar.sendPacket(new SystemMessage(SystemMessageId.NO_CONDITION_TO_EQUIP));

return;

}

if(activeChar.isKamaelic())

{

if(item.getItemType() == L2ArmorType.HEAVY)

{

activeChar.sendPacket(new SystemMessage(SystemMessageId.NO_CONDITION_TO_EQUIP));

return;

}

if(item.getItemType() == L2ArmorType.MAGIC)

{

activeChar.sendPacket(new SystemMessage(SystemMessageId.NO_CONDITION_TO_EQUIP));

return;

}

if(item.getItemType() == L2WeaponType.NONE)

{

activeChar.sendPacket(new SystemMessage(SystemMessageId.NO_CONDITION_TO_EQUIP));

return;

}

} else

{

if(item.getItemType() == L2WeaponType.CROSSBOW)

{

activeChar.sendPacket(new SystemMessage(SystemMessageId.NO_CONDITION_TO_EQUIP));

return;

}

if(item.getItemType() == L2WeaponType.RAPIER)

{

activeChar.sendPacket(new SystemMessage(SystemMessageId.NO_CONDITION_TO_EQUIP));

return;

}

if(item.getItemType() == L2WeaponType.ANCIENT_SWORD)

{

activeChar.sendPacket(new SystemMessage(SystemMessageId.NO_CONDITION_TO_EQUIP));

return;

}

}

if(activeChar.isStunned() || activeChar.isSleeping() || activeChar.isParalyzed() || activeChar.isAlikeDead())

{

activeChar.sendMessage("Your status does not allow you to do that.");

return;

}

int bodyPart = item.getItem().getBodyPart();

if(bodyPart == 16384 || bodyPart == 256 || bodyPart == 128)

{

if(activeChar.isCastingNow())

{

activeChar.sendPacket(new SystemMessage(SystemMessageId.CANNOT_USE_ITEM_WHILE_USING_MAGIC));

return;

}

if(activeChar.isMounted() || activeChar._inEventCTF && activeChar._haveFlagCTF)

{

if(activeChar._inEventCTF && activeChar._haveFlagCTF)

activeChar.sendMessage("This item can not be equipped when you have the flag.");

return;

}

}

if(activeChar.isDisarmed() && (bodyPart == 16384 || bodyPart == 256 || bodyPart == 128))

{

activeChar.sendPacket(new SystemMessage(SystemMessageId.NO_CONDITION_TO_EQUIP));

return;

}

if(activeChar.isCursedWeaponEquipped() && (bodyPart == 16384 || bodyPart == 256 || bodyPart == 128 || itemId == 6408))

return;

if(activeChar.isAttackingNow())

{

ThreadPoolManager.getInstance().scheduleGeneral(new WeaponEquipTask(item, activeChar), (activeChar.getAttackEndTime() - GameTimeController.getGameTicks()) * 100);

return;

}

if(itemId == 9819)

return;

if(activeChar.isInOlympiadMode() && (bodyPart == 16384 || bodyPart == 256 || bodyPart == 128) && item.isHeroItem() || item.isOlyRestrictedItem())

{

activeChar.sendPacket(new SystemMessage(SystemMessageId.THIS_ITEM_CANT_BE_EQUIPPED_FOR_THE_OLYMPIAD_EVENT));

return;

}

if(!activeChar.isHero() && !activeChar.isGM() && item.isHeroItem() && Config.ALT_STRICT_HERO_SYSTEM)

return;

activeChar.useEquippableItem(item, true);

} else

{

L2Weapon weaponItem = activeChar.getActiveWeaponItem();

int itemid = item.getItemId();

if(itemid == 4393)

{

activeChar.sendPacket(new ShowCalculator(4393));

} else

{

if(weaponItem != null && weaponItem.getItemType() == L2WeaponType.ROD && (itemid >= 6519 && itemid <= 6527 || itemid >= 7610 && itemid <= 7613 || itemid >= 7807 && itemid <= 7809 || itemid >= 8484 && itemid <= 8486 || itemid >= 8505 && itemid <= 8513))

{

activeChar.getInventory().setPaperdollItem(10, item);

activeChar.broadcastUserInfo();

ItemList il = new ItemList(activeChar, false);

sendPacket(il);

return;

}

IItemHandler handler = ItemHandler.getInstance().getItemHandler(itemId);

if(handler != null)

handler.useItem(activeChar, item);

else

if(_log.isDebugEnabled())

_log.debug((new StringBuilder()).append("No item handler registered for item ID ").append(itemId).append(".").toString());

}

}

}

 

public String getType()

{

return "[C] 14 UseItem";

}

 

private static final Log _log = LogFactory.getLog(com/l2jfree/gameserver/network/clientpackets/UseItem.getName());

private static final String _C__14_USEITEM = "[C] 14 UseItem";

private int _objectId;

private int _unknown;

 

}[/code]

 

this code is already in your UseItem.java. just add bodypart= you_id. no need to add the same code twice.

 

there is not such a variavle in your altsettings? wait what pack you are using? let me guess l2j?

  • 0
Posted

I am using L2Jfree and my UseItem.java is no way similar to yours ;D take a look on mine

 

/*

* This program is free software; you can redistribute it and/or modify

* it under the terms of the GNU General Public License as published by

* the Free Software Foundation; either version 2, or (at your option)

* any later version.

*

* This program is distributed in the hope that it will be useful,

* but WITHOUT ANY WARRANTY; without even the implied warranty of

* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

* GNU General Public License for more details.

*

* You should have received a copy of the GNU General Public License

* along with this program; if not, write to the Free Software

* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA

* 02111-1307, USA.

*

* http://www.gnu.org/copyleft/gpl.html

*/

package net.sf.l2j.gameserver.clientpackets;

 

import java.util.Arrays;

 

import net.sf.l2j.Config;

import net.sf.l2j.gameserver.ai.CtrlIntention;

import net.sf.l2j.gameserver.handler.IItemHandler;

import net.sf.l2j.gameserver.handler.ItemHandler;

import net.sf.l2j.gameserver.model.Inventory;

import net.sf.l2j.gameserver.model.L2ItemInstance;

import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;

import net.sf.l2j.gameserver.network.SystemMessageId;

import net.sf.l2j.gameserver.serverpackets.ActionFailed;

import net.sf.l2j.gameserver.serverpackets.EtcStatusUpdate;

import net.sf.l2j.gameserver.serverpackets.InventoryUpdate;

import net.sf.l2j.gameserver.serverpackets.ItemList;

import net.sf.l2j.gameserver.serverpackets.ShowCalculator;

import net.sf.l2j.gameserver.serverpackets.SystemMessage;

import net.sf.l2j.gameserver.serverpackets.UserInfo;

import net.sf.l2j.gameserver.templates.L2Item;

import net.sf.l2j.gameserver.templates.L2Weapon;

import net.sf.l2j.gameserver.templates.L2WeaponType;

import net.sf.l2j.gameserver.util.FloodProtector;

 

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

/**

* This class ...

*

* @version $Revision: 1.18.2.7.2.9 $ $Date: 2005/03/27 15:29:30 $

*/

public class UseItem extends L2GameClientPacket

{

    private final static Log _log = LogFactory.getLog(UseItem.class.getName());

    private static final String _C__14_USEITEM = "[C] 14 UseItem";

 

    private int _objectId;

 

    /**

    * packet type id 0x14

    * format:      cd

    * @param decrypt

    */

    @Override

    protected void readImpl()

    {

        _objectId = readD();

    }

 

    @Override

    protected void runImpl()

    {

 

        L2PcInstance activeChar = getClient().getActiveChar();

       

        if (activeChar == null)

            return;

       

        // Flood protect UseItem

        if (!FloodProtector.getInstance().tryPerformAction(activeChar.getObjectId(), FloodProtector.PROTECTED_USEITEM))

        return;

 

        if (activeChar.getPrivateStoreType() != 0)

        {

            activeChar.sendPacket(new SystemMessage(SystemMessageId.CANNOT_TRADE_DISCARD_DROP_ITEM_WHILE_IN_SHOPMODE));

            activeChar.sendPacket(new ActionFailed());

            return;

        }

 

        // NOTE: disabled due to deadlocks

//        synchronized (activeChar.getInventory())

//      {

            L2ItemInstance item = activeChar.getInventory().getItemByObjectId(_objectId);

 

            if (item == null)

                return;

 

if (item.isWear())

{

// No unequipping wear-items

return;

}

 

int itemId = item.getItemId();

/*

* Alt game - Karma punishment // SOE

* 736  Scroll of Escape

* 1538  Blessed Scroll of Escape

* 1829  Scroll of Escape: Clan Hall

* 1830  Scroll of Escape: Castle

* 3958  L2Day - Blessed Scroll of Escape

* 5858  Blessed Scroll of Escape: Clan Hall

* 5859  Blessed Scroll of Escape: Castle

* 6663  Scroll of Escape: Orc Village

* 6664  Scroll of Escape: Silenos Village

* 7117  Scroll of Escape to Talking Island

* 7118  Scroll of Escape to Elven Village

* 7119  Scroll of Escape to Dark Elf Village

* 7120  Scroll of Escape to Orc Village

* 7121  Scroll of Escape to Dwarven Village

* 7122  Scroll of Escape to Gludin Village

* 7123  Scroll of Escape to the Town of Gludio

* 7124  Scroll of Escape to the Town of Dion

* 7125  Scroll of Escape to Floran

* 7126  Scroll of Escape to Giran Castle Town

* 7127  Scroll of Escape to Hardin's Private Academy

* 7128  Scroll of Escape to Heine

* 7129  Scroll of Escape to the Town of Oren

* 7130  Scroll of Escape to Ivory Tower

* 7131  Scroll of Escape to Hunters Village 

* 7132  Scroll of Escape to Aden Castle Town

* 7133  Scroll of Escape to the Town of Goddard

* 7134  Scroll of Escape to the Rune Township

* 7135  Scroll of Escape to the Town of Schuttgart.

* 7554  Scroll of Escape to Talking Island

* 7555  Scroll of Escape to Elven Village

* 7556  Scroll of Escape to Dark Elf Village

* 7557  Scroll of Escape to Orc Village

* 7558  Scroll of Escape to Dwarven Village

* 7559  Scroll of Escape to Giran Castle Town

* 7618  Scroll of Escape - Ketra Orc Village

* 7619  Scroll of Escape - Varka Silenos Village

*/

if (!Config.ALT_GAME_KARMA_PLAYER_CAN_TELEPORT && activeChar.getKarma() > 0

&& (itemId == 736 || itemId == 1538 || itemId == 1829 || itemId == 1830

|| itemId == 3958 || itemId == 5858 || itemId == 5859 || itemId == 6663

|| itemId == 6664 || (itemId >= 7117 && itemId <= 7135)

|| (itemId >= 7554 && itemId <= 7559) || itemId == 7618 || itemId == 7619))

return;

 

            // Items that cannot be used

if (itemId == 57)

                return;

           

            if (activeChar.isFishing() && (itemId < 6535 || itemId > 6540))

            {

                // You cannot do anything else while fishing

                SystemMessage sm = new SystemMessage(SystemMessageId.CANNOT_DO_WHILE_FISHING_3);

                getClient().getActiveChar().sendPacket(sm);

                sm = null;

                return;

            }

           

            // Char cannot use item when dead

            if (activeChar.isDead())

            {

                SystemMessage sm = new SystemMessage(SystemMessageId.S1_CANNOT_BE_USED);

sm.addItemName(item);

                getClient().getActiveChar().sendPacket(sm);

                sm = null;

                return;

            }

           

            // Char cannot use pet items

            if (item.getItem().isForWolf() || item.getItem().isForHatchling() || item.getItem().isForStrider() || item.getItem().isForBabyPet())

            {

            SystemMessage sm = new SystemMessage(SystemMessageId.CANNOT_EQUIP_PET_ITEM); // You cannot equip a pet item.

sm.addItemName(item);

                getClient().getActiveChar().sendPacket(sm);

                sm = null;

                return;

            }

           

            if (_log.isDebugEnabled())

                _log.debug(activeChar.getObjectId() + ": use item " + _objectId);

 

            if (item.isEquipable())

            {

            // No unequipping/equipping while the player is in special conditions

if (activeChar.isStunned() || activeChar.isSleeping() || activeChar.isParalyzed()

|| activeChar.isAlikeDead())

{

activeChar.sendMessage("Your status does not allow you to do that.");

return;

}

 

int bodyPart = item.getItem().getBodyPart();

 

// Prevent player to remove the weapon on special conditions

                if ((activeChar.isAttackingNow() || activeChar.isCastingNow() || activeChar.isMounted() || (activeChar._inEventCTF && activeChar._haveFlagCTF))

                        && (bodyPart == L2Item.SLOT_LR_HAND

                            || bodyPart == L2Item.SLOT_L_HAND

                            || bodyPart == L2Item.SLOT_R_HAND))

                {

                    if (activeChar._inEventCTF && activeChar._haveFlagCTF)

                    activeChar.sendMessage("This item can not be equipped when you have the flag.");

                return;

                }

               

                // Don't allow weapon/shield equipment if a cursed weapon is equiped

                if (activeChar.isCursedWeaponEquiped()

                      && ((bodyPart == L2Item.SLOT_LR_HAND

                              || bodyPart == L2Item.SLOT_L_HAND

                              || bodyPart == L2Item.SLOT_R_HAND)

                      || itemId == 6408)) // Don't allow to put formal wear

                {

                  return;

                }

               

                activeChar.abortCast();

                if (activeChar.getAI().getIntention() == CtrlIntention.AI_INTENTION_CAST)

                    activeChar.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);

 

                // Don't allow weapon/shield hero equipment during Olympiads

                if (activeChar.isInOlympiadMode()

                        && (

                                bodyPart == L2Item.SLOT_LR_HAND

                                || bodyPart == L2Item.SLOT_L_HAND

                                || bodyPart == L2Item.SLOT_R_HAND

                            )

                        && (

                                (item.getItemId() >= 6611 && item.getItemId() <= 6621) ||

                                item.getItemId() == 6842

                            )

                    )

                {

                    return;

                }

 

                // Equip or unEquip

                L2ItemInstance[] items = null;

                boolean isEquiped = item.isEquipped();

                SystemMessage sm = null;

            L2ItemInstance old = activeChar.getInventory().getPaperdollItem(Inventory.PAPERDOLL_LRHAND);

            if (old == null)

            old = activeChar.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND);

 

            activeChar.checkSSMatch(item, old);

 

            if (isEquiped)

                {

                  if (item.getEnchantLevel() > 0)

                  {

                      sm = new SystemMessage(SystemMessageId.EQUIPMENT_S1_S2_REMOVED);

                      sm.addNumber(item.getEnchantLevel());

                      sm.addItemName(item);

                  }

                  else

                  {

                      sm = new SystemMessage(SystemMessageId.S1_DISARMED);

                      sm.addItemName(item);

                  }

                  activeChar.sendPacket(sm);

 

                  // Remove augementation boni on unequip

            if (item.isAugmented())

            item.getAugmentation().removeBoni(activeChar);

                 

              switch(item.getEquipSlot())

              {

              case 1:

              bodyPart = L2Item.SLOT_L_EAR;

              break;

              case 2:

              bodyPart = L2Item.SLOT_R_EAR;

              break;

              case 4:

              bodyPart = L2Item.SLOT_L_FINGER;

              break;

              case 5:

              bodyPart = L2Item.SLOT_R_FINGER;

              break;

              default:

              break;

              }

 

                  items = activeChar.getInventory().unEquipItemInBodySlotAndRecord(bodyPart);

                }

            else

                {

                int tempBodyPart = item.getItem().getBodyPart();

                L2ItemInstance tempItem = activeChar.getInventory().getPaperdollItemByL2ItemId(tempBodyPart);

               

                // remove augmentation stats for replaced items

                // currently weapons only..

                if (tempItem != null && tempItem.isAugmented())

                tempItem.getAugmentation().removeBoni(activeChar);

               

                //check if the item replaces a wear-item

                if (tempItem != null && tempItem.isWear())

                {

                // dont allow an item to replace a wear-item

                return;

                }

                else if (tempBodyPart == 0x4000) // left+right hand equipment

                {

                // this may not remove left OR right hand equipment

                tempItem = activeChar.getInventory().getPaperdollItem(7);

                if (tempItem != null && tempItem.isWear()) return;

               

                tempItem = activeChar.getInventory().getPaperdollItem(8);

                if (tempItem != null && tempItem.isWear()) return;

                }

                else if (tempBodyPart == 0x8000) // fullbody armor

                {

                // this may not remove chest or leggins

                tempItem = activeChar.getInventory().getPaperdollItem(10);

                if (tempItem != null && tempItem.isWear()) return;

               

                tempItem = activeChar.getInventory().getPaperdollItem(11);

                if (tempItem != null && tempItem.isWear()) return;

                }

 

if (item.getEnchantLevel() > 0)

{

sm = new SystemMessage(SystemMessageId.S1_S2_EQUIPPED);

sm.addNumber(item.getEnchantLevel());

sm.addItemName(item);

}

else

{

sm = new SystemMessage(SystemMessageId.S1_EQUIPPED);

sm.addItemName(item);

}

activeChar.sendPacket(sm);

 

            // Apply augementation boni on equip

            if (item.isAugmented())

            item.getAugmentation().applyBoni(activeChar);

           

items = activeChar.getInventory().equipItemAndRecord(item);

 

            // Consume mana - will start a task if required; returns if item is not a shadow item

            item.decreaseMana(false);

                }

                sm = null;

 

                activeChar.refreshExpertisePenalty();

               

                if (item.getItem().getType2() == L2Item.TYPE2_WEAPON)

                    activeChar.checkIfWeaponIsAllowed();

 

                activeChar.abortAttack();

 

activeChar.sendPacket(new EtcStatusUpdate(activeChar));

// if an "invisible" item has changed (Jewels, helmet),

// we dont need to send broadcast packet to all other users

if (!((item.getItem().getBodyPart()&L2Item.SLOT_HEAD)>0

|| (item.getItem().getBodyPart()&L2Item.SLOT_NECK)>0

|| (item.getItem().getBodyPart()&L2Item.SLOT_L_EAR)>0

|| (item.getItem().getBodyPart()&L2Item.SLOT_R_EAR)>0

|| (item.getItem().getBodyPart()&L2Item.SLOT_L_FINGER)>0

|| (item.getItem().getBodyPart()&L2Item.SLOT_R_FINGER)>0

)) {

activeChar.broadcastUserInfo();

InventoryUpdate iu = new InventoryUpdate();

iu.addItems(Arrays.asList(items));

activeChar.sendPacket(iu);

} else if ((item.getItem().getBodyPart()&L2Item.SLOT_HEAD)>0) {

InventoryUpdate iu = new InventoryUpdate();

iu.addItems(Arrays.asList(items));

activeChar.sendPacket(iu);

activeChar.sendPacket(new UserInfo(activeChar));

} else {

// because of complicated jewels problem i'm forced to resend the item list :(

activeChar.sendPacket(new ItemList(activeChar,true));

activeChar.sendPacket(new UserInfo(activeChar));

}

            }

            else

            {

                L2Weapon weaponItem = activeChar.getActiveWeaponItem();

                int itemid = item.getItemId();

                //_log.debug("item not equipable id:"+ item.getItemId());

                if (itemid == 4393)

                {

                    activeChar.sendPacket(new ShowCalculator(4393));

                }

                else if ((weaponItem != null && weaponItem.getItemType() == L2WeaponType.ROD)

                        && ((itemid >= 6519 && itemid <= 6527) || (itemid >= 7610 && itemid <= 7613) || (itemid >= 7807 && itemid <= 7809) || (itemid >= 8484 && itemid <= 8486) || (itemid >= 8505 && itemid <= 8513)))

                {

                    activeChar.getInventory().setPaperdollItem(Inventory.PAPERDOLL_LHAND, item);

                    activeChar.broadcastUserInfo();

                    // Send a Server->Client packet ItemList to this L2PcINstance to update left hand equipement

                    ItemList il = new ItemList(activeChar, false);

                    sendPacket(il);

                    return;

                }

                else

                {

                    IItemHandler handler = ItemHandler.getInstance().getItemHandler(itemId);

                   

                    if (handler == null)

                        _log.debug("No item handler registered for item ID " + itemId + ".");

                    else

                        handler.useItem(activeChar, item);

                }

            }

//      }

    }

 

    @Override

    public String getType()

    {

        return _C__14_USEITEM;

    }

}

 

  • 0
Posted

hmmm. ok then. locate that code in your java file:

 

if (activeChar.isInOlympiadMode()
                        && (
                                bodyPart == L2Item.SLOT_LR_HAND
                                || bodyPart == L2Item.SLOT_L_HAND
                                || bodyPart == L2Item.SLOT_R_HAND
                            )
                        && (
                                (item.getItemId() >= 6611 && item.getItemId() <= 6621) ||
                                item.getItemId() == 6842
                            )
                    )
                {
                    return;
                }

 

and do the same for all your items.

item.getItemId() == 6611 || item.getItemId() == 6621) || item.getItemId() == 6842

and add as much as you want. hope this will work Oo

  • 0
Posted

A new problem just come out.As i edited useitem.java is impossible for them to equip epic inside olympiad..But i stuck on 1 thing.It's possible for them to have epic equiped from before and then in olympiad epic doesn't get unequiped.I know i have to edit the olympiad.java and i successed removing a weapon when someone teleports to the olympiad stadium,but i can't success on making an armor possible when somebody teleports to get removed.I edited olympiad java this way

                                wpn.getItemId() == 6842 || wpn.getItemId() == 9450 ||

                                wpn.getItemId() == 9451 || wpn.getItemId() == 9452 ||

                                wpn.getItemId() == 9453 || wpn.getItemId() == 9454 ||

                                wpn.getItemId() == 9455 || wpn.getItemId() == 9456 ||

                                wpn.getItemId() == 9457 || wpn.getItemId() == 9458 ||

                                wpn.getItemId() == 9459 || wpn.getItemId() == 9460 ||

                                wpn.getItemId() == 9461 || wpn.getItemId() == 9462 ||

 

to make it impossible wear epic (ids~>9450-9462) but after this edit i have to edit one more thing..above of them this code

                    L2ItemInstance wpn = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND);

                    if (wpn == null) wpn = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_LRHAND);

 

i added the following code

 

                     wpn = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_HEAD);

                                     wpn = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_GLOVES);

                                     wpn = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_CHEST);

                     wpn = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_LEGS);

                                     wpn = player.getInventory().getPaperdollItem(Inventory.PAPERDOLL_FEET);

 

but again epic is not unequiped when somebody teleports.Guess what!I need help :P.

I am sure that the problem is at the above code as the PAPERDOLL_RHAND and PAPERDOLL_LRHAND are working perfectly.So i think i am mistaken at the code..

 

  • 0
Posted

where did you added the command to unequip the items when going to olympiad? try add it here (not sure but ok, i am trying:P)

 

L2PCinstance.java

 

public final void onTeleported()
{
	super.onTeleported();

	getKnownList().updateKnownObjects();

	if ((Config.PLAYER_SPAWN_PROTECTION > 0) && !isInOlympiadMode())
		setProtection(true);

	// Modify the position of the tamed beast if necessary (normal pets are handled by super...though
	// L2PcInstance is the only class that actually has pets!!! )
	if (getTrainedBeast() != null)
	{
		getTrainedBeast().getAI().stopFollow();
		getTrainedBeast().teleToLocation(getPosition().getX() + Rnd.get(-100, 100), getPosition().getY() + Rnd.get(-100, 100), getPosition().getZ(), false);
		getTrainedBeast().getAI().startFollow(this);
	}
	// Modify the position of the pet if necessary
	L2Summon pet = getPet();
	if (pet != null)
	{
		pet.setFollowStatus(false);
		pet.teleToLocation(getPosition().getX() + Rnd.get(-100, 100), getPosition().getY() + Rnd.get(-100, 100), getPosition().getZ(), false);
		((L2SummonAI)getPet().getAI()).setStartFollowController(true);
		pet.setFollowStatus(true);
		sendPacket(new PetInfo(pet));
		pet.updateEffectIcons(true);
	}
}

 

and add:

 

if (isInOlympiadMode())
commands here;
commands here;

  • 0
Posted

It seems to be ok but you don't give me the commands.You just write commands here and i have no idea what i have to put there :D

  • 0
Posted

hmmm. i dont know whats the exact command. but i think it will be something like this:

 

activeChar.getInventory().unEquipItemInBodySlotAndRecord(slot);

 

but dunno what to add in (slot); Oo

  • 0
Posted

Well i don't think i have to edit L2PcInstance cause i managed to make a weapon unequipable and when someone teleports at olympiad stadium to get removed.So i am making an error at the code i poste at this reply-> http://www.maxcheaters.com/forum/index.php?topic=39066.msg267586#msg267586

 

if i just could fix this!!

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Posts

    • interlude: l2acis uber alles
    • New Dragon-Network Server – Vote Now!   We’re launching a new Dragon-Network (Multiskill) server under a new domain, created by the original Classic-Interlude team. We no longer have access to the old domain, but this is the official continuation — not a scam, just a new home. The new domain will host: A main migrated server (nothing lost – all chars/items kept) Plus seasonal servers (voted by players) All seasonal progress will be merged into the main realm Help shape the new server – vote now: https://dragon-network.eu/   Let’s build the future of DN – together.
    • Hello there, Im beyond confused and dont know what path to take. I want to start working on a L2 server, changing some stuff here and there and finally in the future if  im happy with the results, to launch the server, but... L2j or L2off? After all this years, is there a Interlude L2j close to off?   Ive spent some time lookin over this forum, searching what would be better and what files to take but I ain't near to a clear answer.  Most of the time everyone is trowing stones at everyone, "your filles are trash, my filles are good" and viceversa. Therefore, Im reaching out to a knowledge guy, hopefully from a neutral position to all this drama, that can pin point me in a direction.    To explain what I want for a base start is an Interlude with a classic interface (features), low rate. Mostly what this guy TravorJ is describing in his post TravorJ post , and to do some reworks on it, ex: mobs drop, rethink the augment system/interface, rethink learning skills/enchant skills, create some custom potions/buff effects, siege mechanics... Is that possible on off files? or is better to go with L2j? I also want to mention that I have little to none L2 dev experince (13-15yrs ago I had an L2j server running  for a month where I made some basics changes), but I have coding background so Im used to that and more than willing to learn.   So in conclusion, I dont want to get some free shared files without any support, that I need to wrap my head around and fix stuff for long time to make them work, stuff thats already fixed buy someone else. Instead im looking to buy something thats more updated and start working from there. Question is what and from whom? Kinda sux when you go and buy something and u dont know what the hell are you buying (need some guidance here)   Is L2j Orion a good choice? I saw that is regularly updated. Lucera2 I dont think is something that I want cuz they dont sell soruce, prefer to have control and not to be dependent on someone to much...   Big thanks in advance!   
    • L2 INSIDE - HTML DESIGN     Portfolio - protojahdesigns.com You can also join Protojah Designs Discord
  • Topics

×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock