Noticias:

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

Menú Principal

Zona PvP

Iniciado por Swarlog, Ago 19, 2022, 12:43 AM

Tema anterior - Siguiente tema

Swarlog

Con este parche puedes crear una zona autoflag al entrar en ella y que al morir usando el comando ".res" reapareces en la misma zona en respawn random que puedes editar en el pach con la opción de usar "To Village" para abandonar por completo la zona además de recibir noblesse cada vez que mueres. Espero que les gusta y le sirva .Saludos.

    /*
     
    * 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 .
     
    */
     
    package com.l2jserver.gameserver.model.zone.type;
     
     
     
    import com.l2jserver.gameserver.ThreadPoolManager;
     
    import com.l2jserver.gameserver.model.actor.L2Character;
     
    import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
     
    import com.l2jserver.util.Rnd;
     
     
     
     
     
    /**
     
    * An Custom PvP Zone
     
    *
     
    * @author  NeverMore
     
    */
     
    public class L2CustomPvP extends L2RespawnZone
     
    {
     
        //Ramdom Locations configs
     
        private static int[] _x = {11551, 10999, 10401};
     
        private static int[] _y = {-24264, -23576, -24030};
     
        private static int[] _z = {-3644, -3651, -3660 };
     
     
     
        public L2CustomPvP(int id)
     
        {
     
            super(5555);
     
        }
     
     
     
        @Override
     
        protected void onEnter(L2Character character)
     
        {
     
            character.setInsideZone(L2Character.ZONE_PVP, true);
     
            character.setInsideZone(L2Character.ZONE_NOSUMMONFRIEND, true);
     
         
     
              if (character instanceof L2PcInstance)
     
              {
     
                  ((L2PcInstance) character).sendMessage("You enter a PvP Area");
     
                  ((L2PcInstance) character).setPvpFlag(1);           
     
              }
     
        }
     
     
     
        @Override
     
        protected void onExit(L2Character character)
     
        {
     
            character.setInsideZone(L2Character.ZONE_PVP, false);
     
            character.setInsideZone(L2Character.ZONE_NOSUMMONFRIEND, false);
     
         
     
            if (character instanceof L2PcInstance)
     
            {
     
                ((L2PcInstance) character).stopNoblesseBlessing(null);
     
                ((L2PcInstance) character).setPvpFlag(0);
     
                ((L2PcInstance) character).sendMessage("You exit from a PvP Area");
     
            }
     
        }
     
     
     
        static class BackToPvp implements Runnable
     
        {
     
            private L2Character _activeChar;
     
     
     
            BackToPvp(L2Character character)
     
            {
     
                _activeChar = character;
     
            }
     
     
     
            @Override
     
            public void run()
     
            {
     
                int r = Rnd.get(3);
     
                _activeChar.teleToLocation(_x[r] , _y[r], _z[r]);
     
            }
     
        }
     
     
     
        @Override
     
        public void onDieInside(L2Character character)
     
        {
     
              if (character instanceof L2PcInstance)
     
              {
     
              }
     
        }
     
     
     
        @Override
     
        public void onReviveInside(L2Character character)
     
        {
     
            ThreadPoolManager.getInstance().scheduleGeneral(new BackToPvp(character), 500);
     
            ((L2PcInstance) character).isNoblesseBlessed();
     
        }
     
    }

Una mejora tanto para Hi5 como Freya, con la que los players se mantendran Flag durante 10 sec después de salir de la zona PvP.

    Index: trunk/L2J_Server/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
    ===================================================================
    --- trunk/L2J_Server/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java  (revision 308)
    +++ trunk/L2J_Server/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java  (revision 309)
    @@ -657,13 +657,17 @@
        {
            updatePvPFlag(1);
     
    -      _PvPRegTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new PvPFlag(), 1000, 1000);
    +      if (_PvPRegTask == null)
    +          _PvPRegTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new PvPFlag(), 10000, 10000);
        }
     
        public void stopPvpRegTask()
        {
            if (_PvPRegTask != null)
    +      {
                _PvPRegTask.cancel(true);
    +          _PvPRegTask = null;
    +      }
        }
     
        public void stopPvPFlag()