Autor Tema: [RESUELTO]Protección de Drop Raid Boss  (Leído 79 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Conectado nico22

  • Grado D
  • *
  • Topic Author
  • Mensajes: 78
  • ar
  • Agradecimientos: 5
    • none
  • Cronica: : Interlude
  • Revision: 1.5
  • S.O: Windows 7
  • Serverpack : Frozen
[RESUELTO]Protección de Drop Raid Boss
« en: Octubre 20, 2018, 10:30:32 pm »
gracias
Este post tiene 0 agradecimientos
  • Añade a tus favoritos
    Buenas a todos, les traigo una duda que quizá sea muy tonta o tal vez no
    Intenté resolverla buscando en el foro y Google pero no encontré la forma de hacerlo   :delf1_3:

    Estoy tratando de modificar que al momento de que muera un Raid boss el drop pueda ser pickeado por cualquiera, tanto como la persona/party que lo mató como las personas que ni le pegaron

    Uso Frozen 1.5. Si alguno sabe o puede guiarme a como hacero se los agradecería.
    « Última modificación: Octubre 23, 2018, 10:23:21 am por DeadEnd »

    Conectado Dagger

    • Grado S84
    • *
    • Mensajes: 1628
    • ar
    • Agradecimientos: 445
    • Cronica: : Interlude
    • Revision: 374,1132,001
    • S.O: Windows 8
    • Serverpack : Acis,frozen,Ps
    Re:Protección de Drop
    « Respuesta #1 en: Octubre 20, 2018, 10:35:34 pm »
    gracias
    Este post tiene 0 agradecimientos
  • Añade a tus favoritos
    gameserver\config\head\altsettings.properties

    # Auto loot from Raid Boss's drop
    AutoLootBoss = True <----<< cambialo a False

    Conectado nico22

    • Grado D
    • *
    • Topic Author
    • Mensajes: 78
    • ar
    • Agradecimientos: 5
      • none
    • Cronica: : Interlude
    • Revision: 1.5
    • S.O: Windows 7
    • Serverpack : Frozen
    Re:Protección de Drop
    « Respuesta #2 en: Octubre 20, 2018, 10:42:07 pm »
    gracias
    Este post tiene 0 agradecimientos
  • Añade a tus favoritos
    Dagger gracias por tomarte el tiempo de responder  :ok:

    Pero ya lo tengo en False y lo único que hace es tirar el drop al suelo, pero si yo quiero pickear con otro personaje que no le haya pegado al Boss, tengo que esperar un cierto tiempo a que termine la protección del drop  :delf1_3:

    Conectado nico22

    • Grado D
    • *
    • Topic Author
    • Mensajes: 78
    • ar
    • Agradecimientos: 5
      • none
    • Cronica: : Interlude
    • Revision: 1.5
    • S.O: Windows 7
    • Serverpack : Frozen
    Re:Protección de Drop
    « Respuesta #3 en: Octubre 22, 2018, 10:19:23 pm »
    gracias
    Este post tiene 0 agradecimientos
  • Añade a tus favoritos
    Bueno gente estuve buscando información y probando varias cosas.

    Primero probé modificar esta parte de acá:


    Código: [Seleccionar]
    head-src/com/l2jfrozen/gameserver/model/DropProtection.java

    Código: [Seleccionar]
    private static final long PROTECTED_MILLIS_TIME = 15000
    A -->

    Código: [Seleccionar]
    private static final long PROTECTED_MILLIS_TIME = 1;

    Pero no funcionó.

    Luego encontré en l2jbrasil una forma que publicaron que es la siguiente:


    Código: [Seleccionar]
    ### Eclipse Workspace Patch 1.0
    #P L2jFrozen_GameServer
    Index: head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PetInstance.java
    ===================================================================
    --- head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PetInstance.java (revision 1118)
    +++ head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PetInstance.java (working copy)
    @@ -604,15 +604,6 @@
      return;
      }
     
    - if (!target.getDropProtection().tryPickUp(this))
    - {
    - sendPacket(ActionFailed.STATIC_PACKET);
    - final SystemMessage smsg = new SystemMessage(SystemMessageId.FAILED_TO_PICKUP_S1);
    - smsg.addItemName(target.getItemId());
    - getOwner().sendPacket(smsg);
    - return;
    - }
    -
      if (target.getOwnerId() != 0 && target.getOwnerId() != getOwner().getObjectId() && !getOwner().isInLooterParty(target.getOwnerId()))
      {
      getOwner().sendPacket(ActionFailed.STATIC_PACKET);
    @@ -964,11 +955,7 @@
      dropit = getInventory().dropItem("Drop", dropit.getObjectId(), dropit.getCount(), getOwner(), this);
     
      if (dropit != null)
    - {
    -
    - if (protect)
    - dropit.getDropProtection().protect(getOwner());
    -
    + {
      LOGGER.debug("Item id to drop: " + dropit.getItemId() + " amount: " + dropit.getCount());
      dropit.dropMe(this, getX(), getY(), getZ() + 100);
      }
    Index: head-src/com/l2jfrozen/gameserver/model/L2Attackable.java
    ===================================================================
    --- head-src/com/l2jfrozen/gameserver/model/L2Attackable.java (revision 1118)
    +++ head-src/com/l2jfrozen/gameserver/model/L2Attackable.java (working copy)
    @@ -2410,7 +2410,6 @@
     
      // Init the dropped L2ItemInstance and add it in the world as a visible object at the position where mob was last
      ditem = ItemTable.getInstance().createItem("Loot", item.getItemId(), item.getCount(), mainDamageDealer, this);
    - ditem.getDropProtection().protect(mainDamageDealer);
      ditem.dropMe(this, newX, newY, newZ);
     
      // Add drop to auto destroy item task
    Index: head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PcInstance.java
    ===================================================================
    --- head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PcInstance.java (revision 1118)
    +++ head-src/com/l2jfrozen/gameserver/model/actor/instance/L2PcInstance.java (working copy)
    @@ -5472,9 +5472,6 @@
     
      }
     
    - if (protectItem)
    - item.getDropProtection().protect(this);
    -
      // Send inventory update packet
      if (!Config.FORCE_INVENTORY_UPDATE)
      {
    @@ -5570,10 +5567,7 @@
      {
      item.setProtected(true);
      }
    -
    - if (protectItem)
    - item.getDropProtection().protect(this);
    -
    +
      // Send inventory update packet
      if (!Config.FORCE_INVENTORY_UPDATE)
      {
    @@ -6751,7 +6745,7 @@
      return;
      }
     
    - if (!target.getDropProtection().tryPickUp(this) && target.getItemId() != 8190 && target.getItemId() != 8689)
    + if (target.getItemId() != 8190 && target.getItemId() != 8689)
      {
      sendPacket(ActionFailed.STATIC_PACKET);
      final SystemMessage smsg = new SystemMessage(SystemMessageId.FAILED_TO_PICKUP_S1);
    Index: head-src/com/l2jfrozen/gameserver/model/DropProtection.java
    ===================================================================
    --- head-src/com/l2jfrozen/gameserver/model/DropProtection.java (revision 1118)
    +++ head-src/com/l2jfrozen/gameserver/model/DropProtection.java (working copy)
    @@ -1,97 +0,0 @@
    -/*
    - * L2jFrozen Project - www.l2jfrozen.com
    - *
    - * This program is free software: you can redistribute it and/or modify it under
    - * the terms of the GNU General Public License as published by the Free Software
    - * Foundation, either version 3 of the License, or (at your option) any later
    - * version.
    - *
    - * This program is distributed in the hope that it will be useful, but WITHOUT
    - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
    - * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
    - * details.
    - *
    - * You should have received a copy of the GNU General Public License along with
    - * this program. If not, see <http://www.gnu.org/licenses/>.
    - */
    -package com.l2jfrozen.gameserver.model;
    -
    -import java.util.concurrent.ScheduledFuture;
    -
    -import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
    -import com.l2jfrozen.gameserver.model.actor.instance.L2PetInstance;
    -import com.l2jfrozen.gameserver.thread.ThreadPoolManager;
    -
    -/**
    - * @author DrHouse
    - */
    -public class DropProtection implements Runnable
    -{
    - private volatile boolean _isProtected = false;
    - private L2PcInstance _owner = null;
    - private ScheduledFuture<?> _task = null;
    -
    - private static final long PROTECTED_MILLIS_TIME = 15000;
    -
    - @Override
    - public synchronized void run()
    - {
    - _isProtected = false;
    - _owner = null;
    - _task = null;
    - }
    -
    - public boolean isProtected()
    - {
    - return _isProtected;
    - }
    -
    - public L2PcInstance getOwner()
    - {
    - return _owner;
    - }
    -
    - public synchronized boolean tryPickUp(final L2PcInstance actor)
    - {
    - if (!_isProtected)
    - return true;
    -
    - if (_owner == actor)
    - return true;
    -
    - if (_owner.getParty() != null && _owner.getParty() == actor.getParty())
    - return true;
    -
    - if (_owner.getClan() != null && _owner.getClan() == actor.getClan())
    - return true;
    -
    - return false;
    - }
    -
    - public boolean tryPickUp(final L2PetInstance pet)
    - {
    - return tryPickUp(pet.getOwner());
    - }
    -
    - public synchronized void unprotect()
    - {
    - if (_task != null)
    - _task.cancel(false);
    -
    - _isProtected = false;
    - _owner = null;
    - _task = null;
    - }
    -
    - public synchronized void protect(final L2PcInstance player)
    - {
    - unprotect();
    -
    - _isProtected = true;
    -
    - if ((_owner = player) == null)
    - throw new NullPointerException("Trying to protect dropped item to null owner");
    -
    - _task = ThreadPoolManager.getInstance().scheduleGeneral(this, PROTECTED_MILLIS_TIME);
    - }
    -}
    Index: head-src/com/l2jfrozen/gameserver/model/actor/instance/L2ItemInstance.java
    ===================================================================
    --- head-src/com/l2jfrozen/gameserver/model/actor/instance/L2ItemInstance.java (revision 1118)
    +++ head-src/com/l2jfrozen/gameserver/model/actor/instance/L2ItemInstance.java (working copy)
    @@ -35,7 +35,6 @@
     import com.l2jfrozen.gameserver.datatables.sql.ItemTable;
     import com.l2jfrozen.gameserver.geo.GeoData;
     import com.l2jfrozen.gameserver.managers.ItemsOnGroundManager;
    -import com.l2jfrozen.gameserver.model.DropProtection;
     import com.l2jfrozen.gameserver.model.L2Augmentation;
     import com.l2jfrozen.gameserver.model.L2Character;
     import com.l2jfrozen.gameserver.model.L2Object;
    @@ -74,9 +73,6 @@
      /** The Constant _logItems. */
      private static final java.util.logging.Logger _logItems = java.util.logging.Logger.getLogger("item");
     
    - /** The _drop protection. */
    - private final DropProtection _dropProtection = new DropProtection();
    -
      /**
      * Enumeration of locations for item.
      */
    @@ -1613,15 +1609,6 @@
      }
     
      /**
    - * Gets the drop protection.
    - * @return the drop protection
    - */
    - public final DropProtection getDropProtection()
    - {
    - return _dropProtection;
    - }
    -
    - /**
      * Checks if is varka ketra ally quest item.
      * @return true, if is varka ketra ally quest item
      */

    Pero todavía al matar un boss (Con el autoloot deshabilitado) no puedo pickear el drop con otro personaje hasta dentro de 15 segundos que termina la protección del drop

    Lo que busco hacer para los que no me entendieron es que sin importar quien mate o gane el boss (en daño) que cualquiera pueda pickear aunque no le haya pegado sin tener que esperar a que termine el tiempo de protección.
    Si alguien sabe que mas puedo hacer para que funcione estaré agradecido  :S

    Conectado nico22

    • Grado D
    • *
    • Topic Author
    • Mensajes: 78
    • ar
    • Agradecimientos: 5
      • none
    • Cronica: : Interlude
    • Revision: 1.5
    • S.O: Windows 7
    • Serverpack : Frozen
    A Reynald0, fedehansson y Mordor, les gusta este post.

    Re:Protección de Drop
    « Respuesta #4 en: Octubre 23, 2018, 10:18:15 am »
    gracias
    Este post tiene 3 agradecimientos
  • Añade a tus favoritos
    Resuelto.

    Dejo la solución por si a alguien más le puede llegar a servir:


    Código: [Seleccionar]
    l2jfrozen/gameserver/model/actor/instance/L2PcInstance.java


    Código: [Seleccionar]
    protected void doPickupItem(final L2Object object)
                            if (isInvul() && !isGM())
    {
    sendPacket(ActionFailed.STATIC_PACKET);
    SystemMessage smsg = new SystemMessage(SystemMessageId.FAILED_TO_PICKUP_S1);
    smsg.addItemName(target.getItemId());
    sendPacket(smsg);
    smsg = null;
    return;
    }
    - if (target.getOwnerId() != 0 && target.getOwnerId() != getObjectId() && !isInLooterParty(target.getOwnerId()))
    - {
    - sendPacket(ActionFailed.STATIC_PACKET);
    -
    - if (target.getItemId() == 57)
    - {
    - SystemMessage smsg = new SystemMessage(SystemMessageId.FAILED_TO_PICKUP_S1_ADENA);
    - smsg.addNumber(target.getCount());
    - sendPacket(smsg);
    - smsg = null;
    - }
    - else if (target.getCount() > 1)
    - {
    - SystemMessage smsg = new SystemMessage(SystemMessageId.FAILED_TO_PICKUP_S2_S1_S);
    - smsg.addItemName(target.getItemId());
    - smsg.addNumber(target.getCount());
    - sendPacket(smsg);
    - smsg = null;
    - }
    - else
    - {
    - SystemMessage smsg = new SystemMessage(SystemMessageId.FAILED_TO_PICKUP_S1);
    - smsg.addItemName(target.getItemId());
    - sendPacket(smsg);
    - smsg = null;
    - }
    - return;
    - }
                            if (target.getItemId() == 57 && _inventory.getAdena() == Integer.MAX_VALUE)
                            {
                                 sendMessage("You have reached the maximum amount of adena, please spend or deposit the adena so you may continue obtaining adena.");
                                 return;
                            }