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");
}
}
Abra posibilidades de una descripción de que consta esta instancia? foto/video?
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.