Noticias:

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

Menú Principal

Noblesse Instance

Iniciado por Swarlog, Ago 05, 2022, 01:36 AM

Tema anterior - Siguiente tema

Swarlog

package events.NoblesseInstance;

import javolution.util.FastMap;
import com.l2jserver.gameserver.ai.CtrlIntention;
import com.l2jserver.gameserver.instancemanager.InstanceManager;
import com.l2jserver.gameserver.instancemanager.InstanceManager.InstanceWorld;
import com.l2jserver.gameserver.model.L2Effect;
import com.l2jserver.gameserver.model.L2Party;
import com.l2jserver.gameserver.model.L2Skill;
import com.l2jserver.gameserver.model.actor.L2Character;
import com.l2jserver.gameserver.model.actor.L2Npc;
import com.l2jserver.gameserver.model.actor.L2Summon;
import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
import com.l2jserver.gameserver.model.entity.Instance;
import com.l2jserver.gameserver.model.quest.Quest;
import com.l2jserver.gameserver.network.serverpackets.CreatureSay;
import com.l2jserver.gameserver.network.serverpackets.Earthquake;
import com.l2jserver.gameserver.network.serverpackets.ExShowScreenMessage;
import com.l2jserver.gameserver.network.serverpackets.NpcHtmlMessage;
import com.l2jserver.gameserver.network.serverpackets.SystemMessage;
import com.l2jserver.gameserver.util.Util;
import com.l2jserver.util.Rnd;

public class NoblesseInstance extends Quest
{
   
    private static final String qn = "NoblesseInstance";
   
    private static final int INSTANCEID = 555555;
   
    //NPCs
    private static final int MANAGER = 999991;
   
    private static int counter = 0;
          
    private FastMap<Integer, Integer> _mobs;
   
    private class teleCoord
    {
        int instanceId;
        int x;
        int y;
        int z;
    }
    private class BSPWorld extends InstanceWorld
    {
        public long[] storeTime = { 0, 0 };
       
        public BSPWorld()
        {
        }
    }
   
    /**
     * @param questId
     * @param name
     * @param descr
     */
    public NoblesseInstance(int questId, String name, String descr)
    {
        super(questId, name, descr);
        addStartNpc(MANAGER);
        addTalkId(MANAGER);
       
        _mobs = new FastMap<Integer, Integer>();
       
    }
   
    private static final void removeBuffs(L2Character ch)
    {
        for (final L2Effect e : ch.getAllEffects())
        {
            if (e == null)
                continue;
            final L2Skill skill = e.getSkill();
            if (skill.isDebuff() || skill.isStayAfterDeath())
                continue;
            e.exit();
        }
        if (ch.getPet() != null)
            for (final L2Effect e : ch.getPet().getAllEffects())
            {
                if (e == null)
                    continue;
                final L2Skill skill = e.getSkill();
                if (skill.isDebuff() || skill.isStayAfterDeath())
                    continue;
                e.exit();
            }
    }
   
    private boolean checkConditions(L2PcInstance player)
    {
        final L2Party party = player.getParty();
        if (party == null)
        {
            NpcHtmlMessage msg = new NpcHtmlMessage(0);
            msg.setFile(player.getHtmlPrefix(), "data/scripts/events/NoblesseInstance/999991-01.htm");
            player.sendPacket(msg);
            player.sendPacket(new ExShowScreenMessage("You are not in party!", 3000));
            return false;
        }
        if (party.getLeader() != player)
        {
            NpcHtmlMessage msg = new NpcHtmlMessage(0);
            msg.setFile(player.getHtmlPrefix(), "data/scripts/events/NoblesseInstance/999991-02.htm");
            player.sendPacket(msg);
            player.sendPacket(new ExShowScreenMessage("You are not leading your party!", 3000));
            return false;
        }
        if (party.getMemberCount() < 2)
        {
            NpcHtmlMessage msg = new NpcHtmlMessage(0);
            msg.setFile(player.getHtmlPrefix(), "data/scripts/events/NoblesseInstance/999991-03.htm");
            player.sendPacket(msg);
            player.sendPacket(new ExShowScreenMessage("Your party must have at least 4 members!", 3000));
            return false;
        }
        if (player.isNoble())
        {
            NpcHtmlMessage msg = new NpcHtmlMessage(0);
            msg.setFile(player.getHtmlPrefix(), "data/scripts/events/NoblesseInstance/999991-04.htm");
            player.sendPacket(msg);
            player.sendPacket(new ExShowScreenMessage("You are already noblesse!", 3000));
            return false;
        }
        if (player.getLevel() < 78)
        {
            NpcHtmlMessage msg = new NpcHtmlMessage(0);
            msg.setFile(player.getHtmlPrefix(), "data/scripts/events/NoblesseInstance/999991-08.htm");
            player.sendPacket(msg);
            player.sendPacket(new ExShowScreenMessage("Your level is too low!", 3000));
            return false;
        }
        for (final L2PcInstance partyMember : party.getPartyMembers())
        {
            if (partyMember.isNoble())
            {
                NpcHtmlMessage msg = new NpcHtmlMessage(0);
                msg.setFile(player.getHtmlPrefix(), "data/scripts/events/NoblesseInstance/999991-05.htm");
                player.sendPacket(msg);
                player.sendPacket(new ExShowScreenMessage(partyMember.getName() + " is already noblesse. Your party cannot enter!", 3000));
                return false;
            }
            if (partyMember.getLevel() < 78)
            {
                NpcHtmlMessage msg = new NpcHtmlMessage(0);
                msg.setFile(player.getHtmlPrefix(), "data/scripts/events/NoblesseInstance/999991-06.htm");
                player.sendPacket(msg);
                player.sendPacket(new ExShowScreenMessage(partyMember.getName() + "'s level is too low. Your party cannot enter!", 3000));
                return false;
            }
            if (!Util.checkIfInRange(1000, player, partyMember, true))
            {
                NpcHtmlMessage msg = new NpcHtmlMessage(0);
                msg.setFile(player.getHtmlPrefix(), "data/scripts/events/NoblesseInstance/999991-07.htm");
                player.sendPacket(msg);
                player.sendPacket(new ExShowScreenMessage(partyMember.getName() + " is too far away. Your party cannot enter!", 3000));
                return false;
            }
            final Long reentertime = InstanceManager.getInstance().getInstanceTime(partyMember.getObjectId(), INSTANCEID);
            if (System.currentTimeMillis() < reentertime)
            {
                player.sendPacket(new ExShowScreenMessage("Test Me!", 3000));
                return false;
            }
        }
        return true;
    }
   
    private void teleportplayer(L2PcInstance player, teleCoord teleto)
    {
        player.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE);
        player.setInstanceId(teleto.instanceId);
        player.teleToLocation(teleto.x, teleto.y, teleto.z);
        return;
    }
   
    protected int enterInstance(L2PcInstance player, String template, teleCoord teleto)
    {
        int instanceId = 0;
        //check for existing instances for this player
        InstanceWorld world = InstanceManager.getInstance().getPlayerWorld(player);
        //existing instance
        if (world != null)
        {
            if (!(world instanceof BSPWorld))
            {
                player.sendPacket(new ExShowScreenMessage("Before joining to this leave previous instance!", 3000));
                return 0;
            }
            teleto.instanceId = world.instanceId;
            teleportplayer(player, teleto);
            return instanceId;
        }
        //New instance
        else
        {
            if (!checkConditions(player))
                return 0;
            final L2Party party = player.getParty();
            instanceId = InstanceManager.getInstance().createDynamicInstance(template);
            world = new BSPWorld();
            world.instanceId = instanceId;
            world.templateId = INSTANCEID;
            world.status = 0;
            ((BSPWorld) world).storeTime[0] = System.currentTimeMillis();
            InstanceManager.getInstance().addWorld(world);
            _log.info("Noblesse Instance " + template + " Instance: " + instanceId + " created by player: " + player.getName());
            //runTumors((BSPWorld) world);
            // teleport players
            teleto.instanceId = instanceId;
           
            if (player.getParty() == null)
            {
                teleportplayer(player, teleto);
                removeBuffs(player);
                world.allowed.add(player.getObjectId());
            }
            else
                for (final L2PcInstance partyMember : party.getPartyMembers())
                {
                    teleportplayer(partyMember, teleto);
                    removeBuffs(partyMember);
                    world.allowed.add(partyMember.getObjectId());
                }
            return instanceId;
        }
    }
   
    protected void exitInstance(L2PcInstance player, teleCoord tele, int tId)
    {
        player.setInstanceId(0);
        if (tId > 0)
        InstanceManager.getInstance().setInstanceTime(player.getObjectId(), tId, System.currentTimeMillis() * 60000 * 60 * 24);
        player.teleToLocation(tele.x, tele.y, tele.z);
        final L2Summon pet = player.getPet();
        if (pet != null)
        {
            pet.setInstanceId(0);
            pet.teleToLocation(tele.x, tele.y, tele.z);
        }
    }
   
   
    public static void main(String[] args)
    {
        new NoblesseInstance(-1, qn, "NoblesseInstance");
    }
   
}

lordofcaos

Abra posibilidades de una descripción de que consta esta instancia? foto/video?


Swarlog

Debes de estar registrado para poder ver el contenido indicado. Registrate o ConectateAbra posibilidades de una descripción de que consta esta instancia? foto/video?



Dame tiempo y actualizo el primer post ;)

Ahora mismo, solo estoy trasladando todos los mensajes del foro antiguo.