Jump to content

II337

Members
  • Posts

    50
  • Credits

  • Joined

  • Last visited

  • Feedback

    0%

Everything posted by II337

  1. Does someone knows an answer? My custom raidbosses never walk back to their spawn. If they kill someone and loose target they just stay there forever
  2. I dont know if you recognize it but download link is down
  3. Any working community board. It does need much features
  4. I am looking for a working community board in h5. I already searched and only found offline,buggy,incompleted and boards which are not adapted for h5. Does anyone knows who shared one or knows how to make one easily?
  5. I want raidbosses (custom) walk back to their spawn
  6. Where I have to add && !isAlive As you can seed I post the codes underneath about seed of destruction. I did change the required amount of playes. private static final String qn = "SoDStage1"; private static final int INSTANCEID = 110; // this is the client number private static final int MIN_PLAYERS = 1; private static final int MAX_PLAYERS = 1; private static final int MAX_DEVICESPAWNEDMOBCOUNT = 100; // prevent too much mob spawn
  7. I got some questions : Question about Beleth Instance. Where can I change the required amount of players? I have configured 2 people via the L2Config. But when I port in immediately get ported out. And about Baium zone, idk if its an instance. I can get ported in every minute and can wakeup baium everytime. Infinity baiums can be done. Its just takes my blooded fabric and lets me port in, how do I change these? -Can't walk while talking to NPCs -I want to disable attacking of NPCs -Can't go alone into seed of destruction -Can warp through everything I already change the required amount of players but I still can't get in /* * Copyright (C) 2004-2013 L2J DataPack * * This file is part of L2J DataPack. * * L2J DataPack 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. * * L2J DataPack 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 instances.SeedOfDestruction; import java.io.File; import java.util.Calendar; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; import java.util.logging.Level; import javax.xml.parsers.DocumentBuilderFactory; import javolution.util.FastList; import javolution.util.FastMap; import org.w3c.dom.Document; import org.w3c.dom.NamedNodeMap; import org.w3c.dom.Node; import com.l2jserver.Config; import com.l2jserver.gameserver.GeoData; import com.l2jserver.gameserver.ai.CtrlIntention; import com.l2jserver.gameserver.instancemanager.GraciaSeedsManager; import com.l2jserver.gameserver.instancemanager.InstanceManager; import com.l2jserver.gameserver.model.L2CharPosition; import com.l2jserver.gameserver.model.L2CommandChannel; import com.l2jserver.gameserver.model.L2Object.InstanceType; import com.l2jserver.gameserver.model.L2Party; import com.l2jserver.gameserver.model.L2Territory; import com.l2jserver.gameserver.model.L2World; import com.l2jserver.gameserver.model.Location; import com.l2jserver.gameserver.model.actor.L2Attackable; import com.l2jserver.gameserver.model.actor.L2Character; import com.l2jserver.gameserver.model.actor.L2Npc; import com.l2jserver.gameserver.model.actor.L2Trap; import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance; import com.l2jserver.gameserver.model.actor.instance.L2MonsterInstance; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.holders.SkillHolder; import com.l2jserver.gameserver.model.instancezone.InstanceWorld; import com.l2jserver.gameserver.model.quest.Quest; import com.l2jserver.gameserver.model.quest.QuestState; import com.l2jserver.gameserver.model.skills.L2Skill; import com.l2jserver.gameserver.network.NpcStringId; import com.l2jserver.gameserver.network.SystemMessageId; import com.l2jserver.gameserver.network.serverpackets.ExShowScreenMessage; import com.l2jserver.gameserver.network.serverpackets.SystemMessage; import com.l2jserver.gameserver.util.Util; /** * Seed of Destruction instance zone.<br> * TODO: * <ul> * <li>No random mob spawns after mob kill.</li> * <li>Implement Seed of Destruction Defense state and one party instances.</li> * <li>Use proper zone spawn system.</li> * </ul> * Please maintain consistency between the Seed scripts. * @author Gigiikun */ public class Stage1 extends Quest { protected class SOD1World extends InstanceWorld { public Map<L2Npc, Boolean> npcList = new FastMap<>(); public int deviceSpawnedMobCount = 0; public Lock lock = new ReentrantLock(); } protected static class SODSpawn { public boolean isZone = false; public boolean isNeededNextFlag = false; public int npcId; public int x = 0; public int y = 0; public int z = 0; public int h = 0; public int zone = 0; public int count = 0; } private static final String qn = "SoDStage1"; private static final int INSTANCEID = 110; // this is the client number private static final int MIN_PLAYERS = 1; private static final int MAX_PLAYERS = 1; private static final int MAX_DEVICESPAWNEDMOBCOUNT = 100; // prevent too much mob spawn private final Map<Integer, L2Territory> _spawnZoneList = new HashMap<>(); private final Map<Integer, List<SODSpawn>> _spawnList = new HashMap<>(); private final List<Integer> _mustKillMobsId = new FastList<>(); // teleports private static final Location ENTER_TELEPORT_1 = new Location(-242759, 219981, -9986); private static final Location ENTER_TELEPORT_2 = new Location(-245800, 220488, -12112); private static final Location CENTER_TELEPORT = new Location(-245802, 220528, -12104); // Traps/Skills private static final SkillHolder TRAP_HOLD = new SkillHolder(4186, 9); // 18720-18728 private static final SkillHolder TRAP_STUN = new SkillHolder(4072, 10); // 18729-18736 private static final SkillHolder TRAP_DAMAGE = new SkillHolder(5340, 4); // 18737-18770 private static final SkillHolder TRAP_SPAWN = new SkillHolder(10002, 1); // 18771-18774 : handled in this script private static final int[] TRAP_18771_NPCS = { 22541, 22544, 22541, 22544 }; private static final int[] TRAP_OTHER_NPCS = { 22546, 22546, 22538, 22537 }; // NPCs private static final int ALENOS = 32526; private static final int TELEPORT = 32601; // mobs private static final int OBELISK = 18776; private static final int POWERFUL_DEVICE = 18777; private static final int THRONE_POWERFUL_DEVICE = 18778; private static final int SPAWN_DEVICE = 18696; private static final int TIAT = 29163; private static final int TIAT_GUARD = 29162; private static final int TIAT_GUARD_NUMBER = 5; private static final int TIAT_VIDEO_NPC = 29169; private static final L2CharPosition MOVE_TO_TIAT = new L2CharPosition(-250403, 207273, -11952, 16384); private static final L2CharPosition MOVE_TO_DOOR = new L2CharPosition(-251432, 214905, -12088, 16384); // TODO: handle this better private static final int[] SPAWN_MOB_IDS = { 22536, 22537, 22538, 22539, 22540, 22541, 22542, 22543, 22544, 22547, 22550, 22551, 22552, 22596 }; // Doors/Walls/Zones private static final int[] ATTACKABLE_DOORS = { 12240005, 12240006, 12240007, 12240008, 12240009, 12240010, 12240013, 12240014, 12240015, 12240016, 12240017, 12240018, 12240021, 12240022, 12240023, 12240024, 12240025, 12240026, 12240028, 12240029, 12240030 }; private static final int[] ENTRANCE_ROOM_DOORS = { 12240001, 12240002 }; private static final int[] SQUARE_DOORS = { 12240003, 12240004, 12240011, 12240012, 12240019, 12240020 }; private static final int SCOUTPASS_DOOR = 12240027; private static final int FORTRESS_DOOR = 12240030; private static final int THRONE_DOOR = 12240031; // spawns // Initialization at 6:30 am on Wednesday and Saturday private static final int RESET_HOUR = 6; private static final int RESET_MIN = 30; private static final int RESET_DAY_1 = 4; private static final int RESET_DAY_2 = 7; private void load() { int spawnCount = 0; try { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setValidating(false); factory.setIgnoringComments(true); File file = new File(Config.DATAPACK_ROOT + "/data/spawnZones/seed_of_destruction.xml"); if (!file.exists()) { _log.severe("[Seed of Destruction] Missing seed_of_destruction.xml. The quest wont work without it!"); return; } Document doc = factory.newDocumentBuilder().parse(file); Node first = doc.getFirstChild(); if ((first != null) && "list".equalsIgnoreCase(first.getNodeName())) { for (Node n = first.getFirstChild(); n != null; n = n.getNextSibling()) { if ("npc".equalsIgnoreCase(n.getNodeName())) { for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) { if ("spawn".equalsIgnoreCase(d.getNodeName())) { NamedNodeMap attrs = d.getAttributes(); Node att = attrs.getNamedItem("npcId"); if (att == null) { _log.severe("[Seed of Destruction] Missing npcId in npc List, skipping"); continue; } int npcId = Integer.parseInt(attrs.getNamedItem("npcId").getNodeValue()); att = attrs.getNamedItem("flag"); if (att == null) { _log.severe("[Seed of Destruction] Missing flag in npc List npcId: " + npcId + ", skipping"); continue; } int flag = Integer.parseInt(attrs.getNamedItem("flag").getNodeValue()); if (!_spawnList.containsKey(flag)) { _spawnList.put(flag, new FastList<SODSpawn>()); } for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) { if ("loc".equalsIgnoreCase(cd.getNodeName())) { attrs = cd.getAttributes(); SODSpawn spw = new SODSpawn(); spw.npcId = npcId; att = attrs.getNamedItem("x"); if (att != null) { spw.x = Integer.parseInt(att.getNodeValue()); } else { continue; } att = attrs.getNamedItem("y"); if (att != null) { spw.y = Integer.parseInt(att.getNodeValue()); } else { continue; } att = attrs.getNamedItem("z"); if (att != null) { spw.z = Integer.parseInt(att.getNodeValue()); } else { continue; } att = attrs.getNamedItem("heading"); if (att != null) { spw.h = Integer.parseInt(att.getNodeValue()); } else { continue; } att = attrs.getNamedItem("mustKill"); if (att != null) { spw.isNeededNextFlag = Boolean.parseBoolean(att.getNodeValue()); } if (spw.isNeededNextFlag) { _mustKillMobsId.add(npcId); } _spawnList.get(flag).add(spw); spawnCount++; } else if ("zone".equalsIgnoreCase(cd.getNodeName())) { attrs = cd.getAttributes(); SODSpawn spw = new SODSpawn(); spw.npcId = npcId; spw.isZone = true; att = attrs.getNamedItem("id"); if (att != null) { spw.zone = Integer.parseInt(att.getNodeValue()); } else { continue; } att = attrs.getNamedItem("count"); if (att != null) { spw.count = Integer.parseInt(att.getNodeValue()); } else { continue; } att = attrs.getNamedItem("mustKill"); if (att != null) { spw.isNeededNextFlag = Boolean.parseBoolean(att.getNodeValue()); } if (spw.isNeededNextFlag) { _mustKillMobsId.add(npcId); } _spawnList.get(flag).add(spw); spawnCount++; } } } } } else if ("spawnZones".equalsIgnoreCase(n.getNodeName())) { for (Node d = n.getFirstChild(); d != null; d = d.getNextSibling()) { if ("zone".equalsIgnoreCase(d.getNodeName())) { NamedNodeMap attrs = d.getAttributes(); Node att = attrs.getNamedItem("id"); if (att == null) { _log.severe("[Seed of Destruction] Missing id in spawnZones List, skipping"); continue; } int id = Integer.parseInt(att.getNodeValue()); att = attrs.getNamedItem("minZ"); if (att == null) { _log.severe("[Seed of Destruction] Missing minZ in spawnZones List id: " + id + ", skipping"); continue; } int minz = Integer.parseInt(att.getNodeValue()); att = attrs.getNamedItem("maxZ"); if (att == null) { _log.severe("[Seed of Destruction] Missing maxZ in spawnZones List id: " + id + ", skipping"); continue; } int maxz = Integer.parseInt(att.getNodeValue()); L2Territory ter = new L2Territory(id); for (Node cd = d.getFirstChild(); cd != null; cd = cd.getNextSibling()) { if ("point".equalsIgnoreCase(cd.getNodeName())) { attrs = cd.getAttributes(); int x, y; att = attrs.getNamedItem("x"); if (att != null) { x = Integer.parseInt(att.getNodeValue()); } else { continue; } att = attrs.getNamedItem("y"); if (att != null) { y = Integer.parseInt(att.getNodeValue()); } else { continue; } ter.add(x, y, minz, maxz, 0); } } _spawnZoneList.put(id, ter); } } } } } } catch (Exception e) { _log.log(Level.WARNING, "[Seed of Destruction] Could not parse data.xml file: " + e.getMessage(), e); } if (Config.DEBUG) { _log.info("[Seed of Destruction] Loaded " + spawnCount + " spawns data."); _log.info("[Seed of Destruction] Loaded " + _spawnZoneList.size() + " spawn zones data."); } } private boolean checkConditions(L2PcInstance player) { final L2Party party = player.getParty(); if (party == null) { player.sendPacket(SystemMessageId.NOT_IN_PARTY_CANT_ENTER); return false; } final L2CommandChannel channel = player.getParty().getCommandChannel(); if (channel == null) { player.sendPacket(SystemMessageId.NOT_IN_COMMAND_CHANNEL_CANT_ENTER); return false; } else if (channel.getLeader() != player) { player.sendPacket(SystemMessageId.ONLY_PARTY_LEADER_CAN_ENTER); return false; } else if ((channel.getMemberCount() < MIN_PLAYERS) || (channel.getMemberCount() > MAX_PLAYERS)) { player.sendPacket(SystemMessageId.PARTY_EXCEEDED_THE_LIMIT_CANT_ENTER); return false; } for (L2PcInstance partyMember : channel.getMembers()) { if (partyMember.getLevel() < 75) { SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_LEVEL_REQUIREMENT_NOT_SUFFICIENT); sm.addPcName(partyMember); party.broadcastPacket(sm); return false; } if (!Util.checkIfInRange(1000, player, partyMember, false)) { SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_IS_IN_LOCATION_THAT_CANNOT_BE_ENTERED); sm.addPcName(partyMember); party.broadcastPacket(sm); return false; } Long reentertime = InstanceManager.getInstance().getInstanceTime(partyMember.getObjectId(), INSTANCEID); if (System.currentTimeMillis() < reentertime) { SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.C1_MAY_NOT_REENTER_YET); sm.addPcName(partyMember); party.broadcastPacket(sm); return false; } } return true; } protected int enterInstance(L2PcInstance player, String template, Location loc) { int instanceId = 0; // check for existing instances for this player InstanceWorld world = InstanceManager.getInstance().getPlayerWorld(player); // existing instance if (world != null) { if (!(world instanceof SOD1World)) { player.sendPacket(SystemMessageId.ALREADY_ENTERED_ANOTHER_INSTANCE_CANT_ENTER); return 0; } teleportPlayer(player, loc, world.getInstanceId(), false); return world.getInstanceId(); } // New instance if (!checkConditions(player)) { return 0; } instanceId = InstanceManager.getInstance().createDynamicInstance(template); world = new SOD1World(); world.setTemplateId(INSTANCEID); world.setInstanceId(instanceId); world.setStatus(0); InstanceManager.getInstance().addWorld(world); spawnState((SOD1World) world); for (L2DoorInstance door : InstanceManager.getInstance().getInstance(instanceId).getDoors()) { if (Util.contains(ATTACKABLE_DOORS, door.getDoorId())) { door.setIsAttackableDoor(true); } } _log.info("Seed of Destruction started " + template + " Instance: " + instanceId + " created by player: " + player.getName()); // teleport players if ((player.getParty() == null) || (player.getParty().getCommandChannel() == null)) { teleportPlayer(player, loc, instanceId, false); world.addAllowed(player.getObjectId()); } else { for (L2PcInstance channelMember : player.getParty().getCommandChannel().getMembers()) { teleportPlayer(channelMember, loc, instanceId, false); world.addAllowed(channelMember.getObjectId()); } } return instanceId; } protected boolean checkKillProgress(L2Npc mob, SOD1World world) { if (world.npcList.containsKey(mob)) { world.npcList.put(mob, true); } for (boolean isDead : world.npcList.values()) { if (!isDead) { return false; } } return true; } private void spawnFlaggedNPCs(SOD1World world, int flag) { if (world.lock.tryLock()) { try { for (SODSpawn spw : _spawnList.get(flag)) { if (spw.isZone) { for (int i = 0; i < spw.count; i++) { if (_spawnZoneList.containsKey(spw.zone)) { int[] point = _spawnZoneList.get(spw.zone).getRandomPoint(); spawn(world, spw.npcId, point[0], point[1], GeoData.getInstance().getSpawnHeight(point[0], point[1], point[2], point[3], null), getRandom(65535), spw.isNeededNextFlag); } else { _log.info("[Seed of Destruction] Missing zone: " + spw.zone); } } } else { spawn(world, spw.npcId, spw.x, spw.y, spw.z, spw.h, spw.isNeededNextFlag); } } } finally { world.lock.unlock(); } } } protected boolean spawnState(SOD1World world) { if (world.lock.tryLock()) { try { world.npcList.clear(); switch (world.getStatus()) { case 0: spawnFlaggedNPCs(world, 0); break; case 1: ExShowScreenMessage message1 = new ExShowScreenMessage(NpcStringId.THE_ENEMIES_HAVE_ATTACKED_EVERYONE_COME_OUT_AND_FIGHT_URGH, 5, 1); sendScreenMessage(world, message1); for (int i : ENTRANCE_ROOM_DOORS) { openDoor(i, world.getInstanceId()); } spawnFlaggedNPCs(world, 1); break; case 2: case 3: // handled elsewhere return true; case 4: ExShowScreenMessage message2 = new ExShowScreenMessage(NpcStringId.OBELISK_HAS_COLLAPSED_DONT_LET_THE_ENEMIES_JUMP_AROUND_WILDLY_ANYMORE, 5, 1); sendScreenMessage(world, message2); for (int i : SQUARE_DOORS) { openDoor(i, world.getInstanceId()); } spawnFlaggedNPCs(world, 4); break; case 5: openDoor(SCOUTPASS_DOOR, world.getInstanceId()); spawnFlaggedNPCs(world, 3); spawnFlaggedNPCs(world, 5); break; case 6: openDoor(THRONE_DOOR, world.getInstanceId()); break; case 7: spawnFlaggedNPCs(world, 7); break; case 8: ExShowScreenMessage message4 = new ExShowScreenMessage(NpcStringId.COME_OUT_WARRIORS_PROTECT_SEED_OF_DESTRUCTION, 5, 1); sendScreenMessage(world, message4); world.deviceSpawnedMobCount = 0; spawnFlaggedNPCs(world, 8); break; case 9: // instance end break; } world.incStatus(); return true; } finally { world.lock.unlock(); } } return false; } protected void spawn(SOD1World world, int npcId, int x, int y, int z, int h, boolean addToKillTable) { // traps if ((npcId >= 18720) && (npcId <= 18774)) { L2Skill skill = null; if (npcId <= 18728) { skill = TRAP_HOLD.getSkill(); } else if (npcId <= 18736) { skill = TRAP_STUN.getSkill(); } else if (npcId <= 18770) { skill = TRAP_DAMAGE.getSkill(); } else { skill = TRAP_SPAWN.getSkill(); } addTrap(npcId, x, y, z, h, skill, world.getInstanceId()); return; } L2Npc npc = addSpawn(npcId, x, y, z, h, false, 0, false, world.getInstanceId()); if (addToKillTable) { world.npcList.put(npc, false); } npc.setIsNoRndWalk(true); if (npc.isInstanceType(InstanceType.L2Attackable)) { ((L2Attackable) npc).setSeeThroughSilentMove(true); } if (npcId == TIAT_VIDEO_NPC) { startQuestTimer("DoorCheck", 10000, npc, null); } else if (npcId == SPAWN_DEVICE) { npc.disableCoreAI(true); startQuestTimer("Spawn", 10000, npc, null, true); } else if (npcId == TIAT) { for (int i = 0; i < TIAT_GUARD_NUMBER; i++) { addMinion((L2MonsterInstance) npc, TIAT_GUARD); } } } protected void setInstanceTimeRestrictions(SOD1World world) { Calendar reenter = Calendar.getInstance(); reenter.set(Calendar.MINUTE, RESET_MIN); reenter.set(Calendar.HOUR_OF_DAY, RESET_HOUR); // if time is >= RESET_HOUR - roll to the next day if (reenter.getTimeInMillis() <= System.currentTimeMillis()) { reenter.add(Calendar.DAY_OF_MONTH, 1); } if (reenter.get(Calendar.DAY_OF_WEEK) <= RESET_DAY_1) { while (reenter.get(Calendar.DAY_OF_WEEK) != RESET_DAY_1) { reenter.add(Calendar.DAY_OF_MONTH, 1); } } else { while (reenter.get(Calendar.DAY_OF_WEEK) != RESET_DAY_2) { reenter.add(Calendar.DAY_OF_MONTH, 1); } } SystemMessage sm = SystemMessage.getSystemMessage(SystemMessageId.INSTANT_ZONE_S1_RESTRICTED); sm.addInstanceName(INSTANCEID); // set instance reenter time for all allowed players for (int objectId : world.getAllowed()) { L2PcInstance player = L2World.getInstance().getPlayer(objectId); InstanceManager.getInstance().setInstanceTime(objectId, INSTANCEID, reenter.getTimeInMillis()); if ((player != null) && player.isOnline()) { player.sendPacket(sm); } } } private void sendScreenMessage(SOD1World world, ExShowScreenMessage message) { for (int objId : world.getAllowed()) { L2PcInstance player = L2World.getInstance().getPlayer(objId); if (player != null) { player.sendPacket(message); } } } @Override public String onSpawn(L2Npc npc) { if (npc.getNpcId() == TIAT_GUARD) { startQuestTimer("GuardThink", 2500 + getRandom(-200, 200), npc, null, true); } else { npc.disableCoreAI(true); } return super.onSpawn(npc); } @Override public String onAggroRangeEnter(L2Npc npc, L2PcInstance player, boolean isSummon) { if ((isSummon == false) && (player != null)) { InstanceWorld tmpworld = InstanceManager.getInstance().getWorld(player.getInstanceId()); if (tmpworld instanceof SOD1World) { SOD1World world = (SOD1World) tmpworld; if (world.getStatus() == 7) { if (spawnState(world)) { for (int objId : world.getAllowed()) { L2PcInstance pl = L2World.getInstance().getPlayer(objId); if (pl != null) { pl.showQuestMovie(5); } } npc.deleteMe(); } } } } return null; } @Override public String onAttack(L2Npc npc, L2PcInstance attacker, int damage, boolean isSummon, L2Skill skill) { InstanceWorld tmpworld = InstanceManager.getInstance().getWorld(npc.getInstanceId()); if (tmpworld instanceof SOD1World) { SOD1World world = (SOD1World) tmpworld; if ((world.getStatus() == 2) && (npc.getNpcId() == OBELISK)) { world.setStatus(4); spawnFlaggedNPCs(world, 3); } else if ((world.getStatus() == 3) && (npc.getNpcId() == OBELISK)) { world.setStatus(4); spawnFlaggedNPCs(world, 2); } else if ((world.getStatus() <= 8) && (npc.getNpcId() == TIAT)) { if (npc.getCurrentHp() < (npc.getMaxHp() / 2)) { if (spawnState(world)) { startQuestTimer("TiatFullHp", 3000, npc, null); setInstanceTimeRestrictions(world); } } } } return null; } @Override public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) { InstanceWorld tmpworld = InstanceManager.getInstance().getWorld(npc.getInstanceId()); if (tmpworld instanceof SOD1World) { SOD1World world = (SOD1World) tmpworld; if (event.equalsIgnoreCase("Spawn")) { L2PcInstance target = L2World.getInstance().getPlayer(world.getAllowed().get(getRandom(world.getAllowed().size()))); if ((world.deviceSpawnedMobCount < MAX_DEVICESPAWNEDMOBCOUNT) && (target != null) && (target.getInstanceId() == npc.getInstanceId()) && !target.isDead()) { L2Attackable mob = (L2Attackable) addSpawn(SPAWN_MOB_IDS[getRandom(SPAWN_MOB_IDS.length)], npc.getSpawn().getLocx(), npc.getSpawn().getLocy(), npc.getSpawn().getLocz(), npc.getSpawn().getHeading(), false, 0, false, world.getInstanceId()); world.deviceSpawnedMobCount++; mob.setSeeThroughSilentMove(true); mob.setRunning(); if (world.getStatus() >= 7) { mob.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, MOVE_TO_TIAT); } else { mob.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, MOVE_TO_DOOR); } } } else if (event.equalsIgnoreCase("DoorCheck")) { L2DoorInstance tmp = getDoor(FORTRESS_DOOR, npc.getInstanceId()); if (tmp.getCurrentHp() < tmp.getMaxHp()) { world.deviceSpawnedMobCount = 0; spawnFlaggedNPCs(world, 6); ExShowScreenMessage message3 = new ExShowScreenMessage(NpcStringId.ENEMIES_ARE_TRYING_TO_DESTROY_THE_FORTRESS_EVERYONE_DEFEND_THE_FORTRESS, 5, 1); sendScreenMessage(world, message3); } else { startQuestTimer("DoorCheck", 10000, npc, null); } } else if (event.equalsIgnoreCase("TiatFullHp")) { if (!npc.isStunned() && !npc.isInvul()) { npc.setCurrentHp(npc.getMaxHp()); } } else if (event.equalsIgnoreCase("BodyGuardThink")) { L2Character mostHate = ((L2Attackable) npc).getMostHated(); if (mostHate != null) { double dist = Util.calculateDistance(mostHate.getXdestination(), mostHate.getYdestination(), npc.getSpawn().getLocx(), npc.getSpawn().getLocy()); if (dist > 900) { ((L2Attackable) npc).reduceHate(mostHate, ((L2Attackable) npc).getHating(mostHate)); } mostHate = ((L2Attackable) npc).getMostHated(); if ((mostHate != null) || (((L2Attackable) npc).getHating(mostHate) < 5)) { ((L2Attackable) npc).returnHome(); } } } } return ""; } @Override public String onKill(L2Npc npc, L2PcInstance player, boolean isSummon) { if (npc.getNpcId() == SPAWN_DEVICE) { cancelQuestTimer("Spawn", npc, null); return ""; } InstanceWorld tmpworld = InstanceManager.getInstance().getWorld(npc.getInstanceId()); if (tmpworld instanceof SOD1World) { SOD1World world = (SOD1World) tmpworld; if (world.getStatus() == 1) { if (checkKillProgress(npc, world)) { spawnState(world); } } else if (world.getStatus() == 2) { if (checkKillProgress(npc, world)) { world.incStatus(); } } else if ((world.getStatus() == 4) && (npc.getNpcId() == OBELISK)) { spawnState(world); } else if ((world.getStatus() == 5) && (npc.getNpcId() == POWERFUL_DEVICE)) { if (checkKillProgress(npc, world)) { spawnState(world); } } else if ((world.getStatus() == 6) && (npc.getNpcId() == THRONE_POWERFUL_DEVICE)) { if (checkKillProgress(npc, world)) { spawnState(world); } } else if (world.getStatus() >= 7) { if (npc.getNpcId() == TIAT) { world.incStatus(); for (int objId : world.getAllowed()) { L2PcInstance pl = L2World.getInstance().getPlayer(objId); if (pl != null) { pl.showQuestMovie(6); } } for (L2Npc mob : InstanceManager.getInstance().getInstance(world.getInstanceId()).getNpcs()) { mob.deleteMe(); } GraciaSeedsManager.getInstance().increaseSoDTiatKilled(); } else if (npc.getNpcId() == TIAT_GUARD) { addMinion(((L2MonsterInstance) npc).getLeader(), TIAT_GUARD); } } } return ""; } @Override public String onTalk(L2Npc npc, L2PcInstance player) { int npcId = npc.getNpcId(); QuestState st = player.getQuestState(qn); if (st == null) { st = newQuestState(player); } if (npcId == ALENOS) { InstanceWorld world = InstanceManager.getInstance().getPlayerWorld(player); if ((GraciaSeedsManager.getInstance().getSoDState() == 1) || ((world != null) && (world instanceof SOD1World))) { enterInstance(player, "SeedOfDestructionStage1.xml", ENTER_TELEPORT_1); } else if (GraciaSeedsManager.getInstance().getSoDState() == 2) { teleportPlayer(player, ENTER_TELEPORT_2, 0, false); } } else if (npcId == TELEPORT) { teleportPlayer(player, CENTER_TELEPORT, player.getInstanceId(), false); } return ""; } @Override public String onTrapAction(L2Trap trap, L2Character trigger, TrapAction action) { InstanceWorld tmpworld = InstanceManager.getInstance().getWorld(trap.getInstanceId()); if (tmpworld instanceof SOD1World) { SOD1World world = (SOD1World) tmpworld; switch (action) { case TRAP_TRIGGERED: if (trap.getNpcId() == 18771) { for (int npcId : TRAP_18771_NPCS) { addSpawn(npcId, trap.getX(), trap.getY(), trap.getZ(), trap.getHeading(), true, 0, true, world.getInstanceId()); } } else { for (int npcId : TRAP_OTHER_NPCS) { addSpawn(npcId, trap.getX(), trap.getY(), trap.getZ(), trap.getHeading(), true, 0, true, world.getInstanceId()); } } break; } } return null; } public Stage1(int questId, String name, String descr) { super(questId, name, descr); load(); addStartNpc(ALENOS); addTalkId(ALENOS); addStartNpc(TELEPORT); addTalkId(TELEPORT); addAttackId(OBELISK); addSpawnId(OBELISK); addKillId(OBELISK); addSpawnId(POWERFUL_DEVICE); addKillId(POWERFUL_DEVICE); addSpawnId(THRONE_POWERFUL_DEVICE); addKillId(THRONE_POWERFUL_DEVICE); addAttackId(TIAT); addKillId(TIAT); addKillId(SPAWN_DEVICE); addSpawnId(TIAT_GUARD); addKillId(TIAT_GUARD); addAggroRangeEnterId(TIAT_VIDEO_NPC); // registering spawn traps which handled in this script for (int i = 18771; i <= 18774; i++) { addTrapActionId(i); } for (int mobId : _mustKillMobsId) { addKillId(mobId); } } public static void main(String[] args) { // now call the constructor (starts up the) new Stage1(-1, qn, "instances"); } }
  8. Nobody can tell me how I make a instance soloable? I got into the scripts/instances and change the required player to 0
  9. How do I use this? I have me server working with root and stuff, if you want you can visit me for earlier explaining if not please tell me how to do it :) Where can I find this instance file?
  10. How do I make instances soloable? For example I want to go alone to seed of destruction. Where do I change that? And where can I add safezone at spawn or after teleport
  11. Yes I just add the stuff in "dist" into the server folder right? Or should I use other stuff I dont understand SVN right. How do I build up the stuff from SVNs?
  12. I added it seperetaly already and wiki currently down. Still does not work..
  13. Which config? in game? in login? in community? Cant find it xD
  14. Does someone knows how this works on H5 servers? I tried to do it but it does not work I get like errors : Starting L2J Community Server. Error: Could not find or load main class com.l2jserver.communityserver.L2CommunityServerPress any key to continue . . .
  15. 0 10219 1 1 17 2 0 LineageWeapons.icarus_trident_m00_wp LineageWeaponsTex.icarus_trident_t00_wp 0 0 0 0 0 1 0 0 icon.weapon_icarus_trident_i00 -1 2010 6 1 0 0 1 7 4 1 LineageWeapons.icarus_trident_m00_wp 1 1 LineageWeaponsTex.icarus_trident_t00_wp 4 ItemSound.hammer_3 ItemSound.spear_1 ItemSound.spear_6 itemsound.spear_7 ItemSound.itemdrop_spear ItemSound.itemequip_spear 10 447 200 4 6 8 -3 0 0 0 325 0 1 1 1000 0 1 0 LineageEffect.e_u092_k 28.00000000 0.00000000 0.00000000 1.00000000 1.00000000 LineageWeapons.rangesample 1.00000000 1.00000000 1.00000000 29.00000000 0.00000000 0.00000000 5 -1 -1 -1 -1 -1 Looks awesome mate, but can I ask you what these values are about? LineageWeapons.rangesample 1.00000000 1.00000000 1.00000000 29.00000000 0.00000000 0.00000000 LineageEffect.e_u092_k 28.00000000 0.00000000 0.00000000 1.00000000 1.00000000
  16. What do you mean where should I insert them, can you post me whole code? And I change the LineageEffect._92_k already. The "k" should be for polearm
  17. To what should I change them? Spear: 0 10219 1 1 17 2 0 LineageWeapons.icarus_trident_m00_wp LineageWeaponsTex.icarus_trident_t00_wp 0 0 0 0 0 1 0 0 icon.weapon_icarus_trident_i00 -1 2010 6 1 0 0 1 7 4 1 LineageWeapons.icarus_trident_m00_wp 1 1 LineageWeaponsTex.icarus_trident_t00_wp 4 ItemSound.hammer_3 ItemSound.spear_1 ItemSound.spear_6 itemsound.spear_7 ItemSound.itemdrop_spear ItemSound.itemequip_spear 10 447 200 4 6 8 -3 0 0 0 325 0 1 1 1000 0 1 0 LineageEffect.e_u092_k 1.00000000 0.00000000 0.00000000 0.89999998 0.30000001 LineageWeapons.rangesample 1.00000000 1.00000000 1.00000000 29.00000000 0.00000000 0.00000000 5 -1 -1 -1 -1 -1 Icarus Hall 0 10222 3 1 15 5 0 LineageWeapons.icarus_wand_m00_wp LineageWeaponsTex.icarus_wand_t00_wp 0 0 0 0 0 1 0 0 icon.weapon_icarus_stick_i00 -1 1080 13 1 0 0 1 27 1 1 LineageWeapons.icarus_wand_m00_wp 1 1 LineageWeaponsTex.icarus_wand_t00_wp 4 ItemSound.spear_5 ItemSound.staff_2 ItemSound.spear_6 ItemSound.spear_9 ItemSound.itemdrop_staff ItemSound.itemequip_staff 20 360 264 2 6 4 4 0 0 0 379 0 1 1 1000 0 1 0 LineageEffect.e_u092_d -7.00000000 0.00000000 0.00000000 0.80000001 0.10000000 LineageWeapons.rangesample 0.69999999 0.50000000 0.50000000 32.00000000 0.00000000 0.00000000 5 -1 -1 -1 -1 -1 Icarus Hammer 0 10220 3 1 15 10 0 LineageWeapons.icarus_chopper_m00_wp LineageWeaponsTex.icarus_chopper_t00_wp 0 0 0 0 0 1 0 0 icon.weapon_icarus_hammer_i00 -1 1740 51 1 0 0 1 27 1 1 LineageWeapons.icarus_chopper_m00_wp 1 1 LineageWeaponsTex.icarus_chopper_t00_wp 4 ItemSound.sword_mid_2 ItemSound.club_3 ItemSound.axe_3 ItemSound.axe_1 ItemSound.itemdrop_blunt ItemSound.itemequip_blunt 20 447 200 2 6 4 4 0 0 0 379 0 1 1 1000 0 1 0 LineageEffect.e_u092_c -20.00000000 0.00000000 0.00000000 0.89999998 0.40000001 LineageWeapons.rangesample 0.89999998 0.89999998 0.89999998 8.00000000 0.00000000 0.00000000 5 -1 -1 -1 -1 -1
  18. Another question why is this like this?
  19. Does not work anyway :D P.S Does work !!!
  20. 0 10215 1 1 7 10 0 LineageWeapons.icarus_sowsword_m00_wp LineageWeaponsTex.icarus_sowsword_t00_wp 0 0 0 0 0 1 0 0 icon.weapon_icarus_sowsword_i00 -1 1520 8 1 0 0 1 27 1 1 LineageWeapons.icarus_sowsword_m00_wp 1 1 LineageWeaponsTex.icarus_sowsword_t00_wp 4 ItemSound.sword_big_1 ItemSound.sword_mid_2 ItemSound.sword_mid_3 ItemSound.public_sword_shing_4 ItemSound.itemdrop_sword ItemSound.itemequip_sword 10 447 200 1 6 8 0 0 0 0 379 0 1 1 1000 0 1 0 LineageEffect.e_u092_a 2.00000000 0.00000000 0.00000000 1.00000000 1.00000000 LineageWeapons.rangesample 1.39999998 0.60000002 0.60000002 12.00000000 0.00000000 0.00000000 4 -1 -1 -1 -1 -1
  21. I have a question. Some years ago I played on a server with a custom glow with specific weapons. So only these custom weapons had this glow. It was a infinity weapon glow with colour. I tried to make it but it has no colour, altough its +16, can someone help me out?
×
×
  • 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