Jump to content

II337

Members
  • Posts

    50
  • Credits

  • Joined

  • Last visited

  • Feedback

    0%

Everything posted by II337

  1. hahah fuck this sh1t, again trash server like l2divine,l2jax,l2fabulous,l2undone gg :D
  2. I gave this server a try, but its a very big fail! Gms and admins are like kids they dont know to fix or balance things they just make it even worser. Today I saw the 9vs9 Event which was a big fail, Admin killed enemys team and gave them debuffs so that they loosed. Those kids dont even know to use % for the announce they used the trade char where everybody was spaming shit. The sad thing is that they using x3 online to improve people that the server is full which is not. This server is full of corruption.
  3. l2jax previous server was l2divine was got hacked by l2undone haha so its gonna start again with the same shit:D
  4. When i check l2divine's website (forum) , it said "Check l2jax.info we will opening soon" so thats the proof for me they're all the same just saying u will see then.
  5. The thing is that the l2jax owner the same is like from l2divine and l2divine got hacked by armenian people which is opening l2undone soon thats why its gonna to fail anyway. Dont waste your time.
  6. After l2divine.net failed now is the next fail coming. Dont know whats up with this features cause alrdy 5 other server brought the same shit and all failed. For example: http://www.maxcheaters.com/topic/192858-l2jlineage-2-fabulous/ http://www.maxcheaters.com/topic/193445-l2j-l2undone/ Its all fake and waste of time.
  7. This is the standard one, are there any else?
  8. Where can I see the layout of different button styles for html? There are some like Interlude and some are green and stuff. Where can I find these values. For example this button with this value back="L2UI_CT1.Button_DF.Gauge_DF_Attribute_Wind" fore="L2UI_CT1.Button_DF.Gauge_DF_Attribute_Wind.Gauge_DF_Attribute_Wind_bg" Looks like this
  9. Antharas is now to 0 up to 200 in the newer scripts. But I still can not join Valakas
  10. How can I change that NPCs dont turn their faces/direction while talking to them?
  11. Does someone has a preconfigured or a basic buffer with java? I got some problems with YANBuffer, the new H5 stable is not adapted to it, can someone help me to fix it,cause those method names are still based on the newer H5 builds. ---------- 1. ERROR in \YANModPack\YANBuffer\Yanbuffer.java (at line 51) public final class YANBuffer ^^^^^^^^^ The public type YANBuffer must be defined in its own file ---------- 2. ERROR in \YANModPack\YANBuffer\Yanbuffer.java (at line 96) return YANBufferData.GET_INSTANCE().getBufferNpc(npc.getNpcId()); ^^^^^^^^ The method getNpcId() is undefined for the type L2Npc ---------- 3. ERROR in \YANModPack\YANBuffer\Yanbuffer.java (at line 125) activeChar.clearBypass(); ^^^^^^^^^^^ The method clearBypass() is undefined for the type L2PcInstance ---------- 4. ERROR in \YANModPack\YANBuffer\Yanbuffer.java (at line 149) activeChar.addBypass2(html.substring(start, finish2).trim()); ^^^^^^^^^^ The method addBypass2(String) is undefined for the type L2PcInstance ---------- 5. ERROR in \YANModPack\YANBuffer\Yanbuffer.java (at line 153) activeChar.addBypass(html.substring(start, finish).trim()); ^^^^^^^^^ The method addBypass(String) is undefined for the type L2PcInstance ---------- 6. ERROR in \YANModPack\YANBuffer\Yanbuffer.java (at line 197) Long amount = items.get(item.getValue().item.getItemId()); ^^^^^^^^^ The method getItemId() is undefined for the type L2Item ---------- 7. ERROR in \YANModPack\YANBuffer\Yanbuffer.java (at line 202) items.put(item.getValue().item.getItemId(), amount + item.getValue().amo unt); ^^^^^^^^^ The method getItemId() is undefined for the type L2Item ---------- 8. ERROR in \YANModPack\YANBuffer\Yanbuffer.java (at line 208) buff.skill.getEffects(playable, playable); ^^^^^^^^^^ L2Skill cannot be resolved to a type ---------- ---------- 9. ERROR in C:\Users\Administrator\Desktop\L2\game\data\scripts\YANModPack\YANBu ffer\YANBufferData.java (at line 43) import com.l2jserver.gameserver.datatables.NpcTable; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The import com.l2jserver.gameserver.datatables.NpcTable cannot be resolved ---------- 10. ERROR in C:\Users\Administrator\Desktop\L2\game\data\scripts\YANModPack\YANB uffer\YANBufferData.java (at line 44) import com.l2jserver.gameserver.datatables.SkillTable; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The import com.l2jserver.gameserver.datatables.SkillTable cannot be resolved ---------- 11. ERROR in C:\Users\Administrator\Desktop\L2\game\data\scripts\YANModPack\YANB uffer\YANBufferData.java (at line 47) import com.l2jserver.gameserver.model.skills.L2Skill; ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ The import com.l2jserver.gameserver.model.skills.L2Skill cannot be resolved ---------- 12. ERROR in C:\Users\Administrator\Desktop\L2\game\data\scripts\YANModPack\YANB uffer\YANBufferData.java (at line 57) protected final L2Skill skill; ^^^^^^^ L2Skill cannot be resolved to a type ---------- 13. ERROR in C:\Users\Administrator\Desktop\L2\game\data\scripts\YANModPack\YANB uffer\YANBufferData.java (at line 62) protected Buff(String ident, L2Skill skill, Element elem) ^^^^^^^ L2Skill cannot be resolved to a type ---------- 14. ERROR in C:\Users\Administrator\Desktop\L2\game\data\scripts\YANModPack\YANB uffer\YANBufferData.java (at line 65) this.skill = skill; ^^^^^^^^^^ L2Skill cannot be resolved to a type ---------- 15. ERROR in C:\Users\Administrator\Desktop\L2\game\data\scripts\YANModPack\YANB uffer\YANBufferData.java (at line 388) L2Skill skill = SkillTable.getInstance().getInfo(skillId, skillLevel); ^^^^^^^ L2Skill cannot be resolved to a type ---------- 16. ERROR in C:\Users\Administrator\Desktop\L2\game\data\scripts\YANModPack\YANB uffer\YANBufferData.java (at line 388) L2Skill skill = SkillTable.getInstance().getInfo(skillId, skillLevel); ^^^^^^^^^^ SkillTable cannot be resolved ---------- 17. ERROR in C:\Users\Administrator\Desktop\L2\game\data\scripts\YANModPack\YANB uffer\YANBufferData.java (at line 432) L2NpcTemplate npc = NpcTable.getInstance().getTemplate(npcId); ^^^^^^^^ NpcTable cannot be resolved ---------- 18. ERROR in C:\Users\Administrator\Desktop\L2\game\data\scripts\YANModPack\YANB uffer\YANBufferData.java (at line 439) _bufferNpcs.put(npc.getNpcId(), new BufferNpc(npc, curElem)); ^^^^^^^^ The method getNpcId() is undefined for the type L2NpcTemplate ---------- ---------- 19. ERROR in C:\Users\Administrator\Desktop\L2\game\data\scripts\YANModPack\util \ItemRequirement.java (at line 38) this.placeholder.addChild("id", String.valueOf(item.getItemId())).addChi ld("icon", item.getIcon()).addChild("name", item.getName()).addChild("amount", S tring.valueOf(amount)); ^^^^^^^^^ The method getItemId() is undefined for the type L2Item ---------- ---------- 20. ERROR in C:\Users\Administrator\Desktop\L2\game\data\scripts\YANModPack\YANB uffer\NpcAI.java (at line 49) String specificNpcHtml = npc.getNpcId() + ".html"; ^^^^^^^^ The method getNpcId() is undefined for the type L2Npc ---------- 20 problems (20 errors) The public type YANBuffer must be defined in its own file L2Skill cannot be resolved to a type The import com.l2jserver.gameserver.datatables.NpcTable cannot be resolved The import com.l2jserver.gameserver.datatables.SkillTable cannot be resolved The import com.l2jserver.gameserver.model.skills.L2Skill cannot be resolved The method getNpcId() is undefined for the type com.l2jserver.gameserver.model.a ctor.L2Npc The method clearBypass() is undefined for the type com.l2jserver.gameserver.mode l.actor.instance.L2PcInstance The method addBypass2(java.lang.String) is undefined for the type com.l2jserver. gameserver.model.actor.instance.L2PcInstance The method addBypass(java.lang.String) is undefined for the type com.l2jserver.g ameserver.model.actor.instance.L2PcInstance The method getItemId() is undefined for the type com.l2jserver.gameserver.model. items.L2Item The method getItemId() is undefined for the type com.l2jserver.gameserver.model. items.L2Item L2Skill cannot be resolved to a type L2Skill cannot be resolved to a type L2Skill cannot be resolved to a type L2Skill cannot be resolved to a type SkillTable cannot be resolved NpcTable cannot be resolved The method getNpcId() is undefined for the type com.l2jserver.gameserver.model.a ctor.templates.L2NpcTemplate The method getItemId() is undefined for the type com.l2jserver.gameserver.model. items.L2Item The method getNpcId() is undefined for the type com.l2jserver.gameserver.model.a ctor.L2Npc
  12. Alright thanks atleast, I think the leader will know more about it. Error on: C:\Users\Administrator\Desktop\L2\game\data\scripts\custom\555_NPCBUFFER\__init__.py.error.log Line: -1 - Column: -1 Traceback (innermost last): File "custom/555_NPCBUFFER/__init__.py", line 7, in ? ImportError: no module named jython jython is not supported anymore or what?
  13. Its the newest H5 stable build from l2j. Where can I find out the method name?
  14. [25/11 15:30:52] Failed executing script: C:\Users\Administrator\Desktop\L2\game \data\scripts\custom\555_NPCBUFFER\__init__.py. See __init__.py.error.log for de tails. ---------- 1. ERROR in \custom\Services\Services.java (at line 294) statement.setInt(2, player.getClan().getClanId()); ^^^^^^^^^ The method getClanId() is undefined for the type L2Clan ---------- 2. ERROR in \custom\Services\Services.java (at line 367) player.store(); ^^^^^ The method store(boolean) in the type L2PcInstance is not applicable for the arg uments () ---------- 3. ERROR in \custom\Services\Services.java (at line 490) statement.setInt(2, player.getClan().getClanId()); ^^^^^^^^^ The method getClanId() is undefined for the type L2Clan ---------- 3 problems (3 errors) The method getClanId() is undefined for the type com.l2jserver.gameserver.model. L2Clan The method store(boolean) in the type com.l2jserver.gameserver.model.actor.insta nce.L2PcInstance is not applicable for the arguments () The method getClanId() is undefined for the type com.l2jserver.gameserver.model. L2Clan Thats my current error how can I fix them?
  15. My custom NPCs are not spawning. I setup custom NPCs and stuff but they seem not to work. # Option to save GM spawn only in the custom table. # Default: False SaveGmSpawnOnCustom = True # Default: False CustomNpcData = True # Default: False CustomTeleportTable = True # Default: False CustomNpcBufferTables = False # Default: False CustomSkillsLoad = True # Default: False CustomItemsLoad = False # Default: False CustomMultisellLoad = False # Default: False CustomBuyListLoad = True <?xml version="1.0" encoding="UTF-8"?> <list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="../../../xsd/npcs.xsd"> <npc id="50007" displayId="31324" name="Andromeda" usingServerSideName="true" title="Wedding Manager" usingServerSideTitle="true" type="L2Npc"> <collision> <radius normal="8" /> <height normal="23" /> </collision> </npc> <npc id="70010" displayId="31606" name="Catrina" usingServerSideName="true" title="TvT Event Manager" usingServerSideTitle="true" type="L2Npc"> <collision> <radius normal="8" /> <height normal="15" /> </collision> </npc> <npc id="900100" displayId="20432" level="1" name="Elpy" type="L2EventMonster"> <stats str="40" int="21" dex="30" wit="20" con="43" men="20"> <vitals hp="40" hpRegen="3" mp="36" mpRegen="1" /> <attack physical="8" magical="7" /> <defence physical="25" magical="40" /> </stats> <status undying="false" /> <collision> <radius normal="5" /> <height normal="4.5" /> </collision> </npc> <npc id="900101" displayId="32365" name="Snowden" usingServerSideName="true" title="Event Manager"> <collision> <radius normal="5" /> <height normal="12.5" /> </collision> </npc> <npc id="900102" displayId="13098" level="80" name="Event Treasure Chest" type="L2Monster"> <stats str="40" int="21" dex="30" wit="20" con="43" men="20"> <vitals hp="2880" mp="1524" /> <defence physical="1499" magical="1035.28" /> </stats> <collision> <radius normal="8.5" /> <height normal="8.5" /> </collision> </npc> <npc id="900103" displayId="32365" name="Start" usingServerSideName="true" title="Event Manager"> <collision> <radius normal="5" /> <height normal="12.5" /> </collision> </npc> <npc id="100" displayId="31646" name="Server Information" usingServerSideName="true" title="L2Aria" usingServerSideTitle="true" type="L2Merchant"> <collision> <radius normal="8" /> <height normal="23" /> </collision> </npc> </npc> <npc id="555" displayId="32226" name="Shiela" usingServerSideName="true" title="Scheme Buffer" usingServerSideTitle="true" type="L2Npc"> <collision> <radius normal="11" /> <height normal="22.25" /> </collision> </npc> </npc> <npc id="36604" displayId="32163" name="Euphemia" usingServerSideName="true" title="Global Gatekeeper" usingServerSideTitle="true" type="L2Teleporter"> <collision> <radius normal="13" /> <height normal="23.5" /> </collision> </npc> </npc> <npc id="10002" displayId="30767" name="Lilly" usingServerSideName="true" title="GMShop" usingServerSideTitle="true" type="L2Merchant"> <collision> <radius normal="8" /> <height normal="22" /> </collision> </npc> <npc id="10003" displayId="31740" name="Caradine" usingServerSideName="true" title="Service Manager" usingServerSideTitle="true" type="L2Npc"> <collision> <radius normal="7" /> <height normal="21.2" /> </collision> </npc> <npc id="36600" displayId="13079" name="Simorgh" usingServerSideName="true" title="Augmenter" usingServerSideTitle="true" type="L2Trainer"> <collision> <radius normal="22" /> <height normal="26" /> </collision> </npc> <npc id="36605" displayId="32478" name="Raphael" usingServerSideName="true" title="Warehouse Manager" usingServerSideTitle="true" type="L2Warehouse"> <collision> <radius normal="10" /> <height normal="24" /> </collision> </npc> <npc id="900104" displayId="32365" name="Finish" usingServerSideName="true" title="Event Manager"> <collision> <radius normal="5" /> <height normal="12.5" /> </collision> </npc> <npc id="1000003" displayId="32226" name="Shiela" usingServerSideName="true" title="L2J NPC Buffer" usingServerSideTitle="true" type="L2NpcBuffer"> <collision> <radius normal="11" /> <height normal="22.25" /> </collision> </npc> </list>
  16. I changed Zaken too now , Valakas is the last. I changed it via CavernofthePirateCaptain.java. I need some help with Valakas!
  17. /* * 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 ai.individual; import java.util.ArrayList; import java.util.List; import ai.npc.AbstractNpcAI; import com.l2jserver.Config; import com.l2jserver.gameserver.GeoData; import com.l2jserver.gameserver.ai.CtrlIntention; import com.l2jserver.gameserver.datatables.SkillTable; import com.l2jserver.gameserver.instancemanager.GrandBossManager; import com.l2jserver.gameserver.model.L2CharPosition; import com.l2jserver.gameserver.model.Location; import com.l2jserver.gameserver.model.StatsSet; import com.l2jserver.gameserver.model.actor.L2Character; import com.l2jserver.gameserver.model.actor.L2Npc; import com.l2jserver.gameserver.model.actor.L2Playable; import com.l2jserver.gameserver.model.actor.instance.L2GrandBossInstance; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.effects.L2Effect; import com.l2jserver.gameserver.model.holders.SkillHolder; import com.l2jserver.gameserver.model.skills.L2Skill; import com.l2jserver.gameserver.model.zone.type.L2BossZone; import com.l2jserver.gameserver.network.serverpackets.PlaySound; import com.l2jserver.gameserver.network.serverpackets.SocialAction; import com.l2jserver.gameserver.network.serverpackets.SpecialCamera; import com.l2jserver.gameserver.util.Util; /** * Valakas' AI. * @author Tryskell */ public class Valakas extends AbstractNpcAI { // NPC private static final int VALAKAS = 29028; // Skills private static final SkillHolder VALAKAS_LAVA_SKIN = new SkillHolder(4680, 1); private static final SkillHolder[] VALAKAS_REGULAR_SKILLS = { new SkillHolder(4681, 1), // Valakas Trample new SkillHolder(4682, 1), // Valakas Trample new SkillHolder(4683, 1), // Valakas Dragon Breath new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. }; private static final SkillHolder[] VALAKAS_LOWHP_SKILLS = { new SkillHolder(4681, 1), // Valakas Trample new SkillHolder(4682, 1), // Valakas Trample new SkillHolder(4683, 1), // Valakas Dragon Breath new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. new SkillHolder(4690, 1), // Valakas Meteor Storm }; private static final SkillHolder[] VALAKAS_AOE_SKILLS = { new SkillHolder(4683, 1), // Valakas Dragon Breath new SkillHolder(4684, 1), // Valakas Dragon Breath new SkillHolder(4685, 1), // Valakas Tail Stomp new SkillHolder(4686, 1), // Valakas Tail Stomp new SkillHolder(4688, 1), // Valakas Stun new SkillHolder(4689, 1), // Valakas Fear TODO: has two levels only level one is used. new SkillHolder(4690, 1), // Valakas Meteor Storm }; // Locations private static final Location TELEPORT_CUBE_LOCATIONS[] = { new Location(214880, -116144, -1644), new Location(213696, -116592, -1644), new Location(212112, -116688, -1644), new Location(211184, -115472, -1664), new Location(210336, -114592, -1644), new Location(211360, -113904, -1644), new Location(213152, -112352, -1644), new Location(214032, -113232, -1644), new Location(214752, -114592, -1644), new Location(209824, -115568, -1421), new Location(210528, -112192, -1403), new Location(213120, -111136, -1408), new Location(215184, -111504, -1392), new Location(215456, -117328, -1392), new Location(213200, -118160, -1424) }; // Valakas status. private static final byte DORMANT = 0; // Valakas is spawned and no one has entered yet. Entry is unlocked. private static final byte WAITING = 1; // Valakas is spawned and someone has entered, triggering a 30 minute window for additional people to enter. Entry is unlocked. private static final byte FIGHTING = 2; // Valakas is engaged in battle, annihilating his foes. Entry is locked. private static final byte DEAD = 3; // Valakas has been killed. Entry is locked. // Misc private long _timeTracker = 0; // Time tracker for last attack on Valakas. private L2Playable _actualVictim; // Actual target of Valakas. private static L2BossZone ZONE; private Valakas(String name, String descr) { super(name, descr); registerMobs(VALAKAS); ZONE = GrandBossManager.getInstance().getZone(212852, -114842, -1632); final StatsSet info = GrandBossManager.getInstance().getStatsSet(VALAKAS); final int status = GrandBossManager.getInstance().getBossStatus(VALAKAS); if (status == DEAD) { // load the unlock date and time for valakas from DB long temp = (info.getLong("respawn_time") - System.currentTimeMillis()); if (temp > 0) { // The time has not yet expired. Mark Valakas as currently locked (dead). startQuestTimer("valakas_unlock", temp, null, null); } else { // The time has expired while the server was offline. Spawn valakas in his cave as DORMANT. final L2Npc valakas = addSpawn(VALAKAS, -105200, -253104, -15264, 0, false, 0); GrandBossManager.getInstance().setBossStatus(VALAKAS, DORMANT); GrandBossManager.getInstance().addBoss((L2GrandBossInstance) valakas); valakas.setIsInvul(true); valakas.setRunning(); valakas.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE); } } else { final int loc_x = info.getInteger("loc_x"); final int loc_y = info.getInteger("loc_y"); final int loc_z = info.getInteger("loc_z"); final int heading = info.getInteger("heading"); final int hp = info.getInteger("currentHP"); final int mp = info.getInteger("currentMP"); final L2Npc valakas = addSpawn(VALAKAS, loc_x, loc_y, loc_z, heading, false, 0); GrandBossManager.getInstance().addBoss((L2GrandBossInstance) valakas); valakas.setCurrentHpMp(hp, mp); valakas.setRunning(); // Start timers. if (status == FIGHTING) { // stores current time for inactivity task. _timeTracker = System.currentTimeMillis(); startQuestTimer("regen_task", 60000, valakas, null, true); startQuestTimer("skill_task", 2000, valakas, null, true); } else { valakas.setIsInvul(true); valakas.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE); // Start timer to lock entry after 30 minutes if (status == WAITING) { startQuestTimer("beginning", (Config.VALAKAS_WAIT_TIME * 60000), valakas, null); } } } } @Override public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) { if (npc != null) { if (event.equalsIgnoreCase("beginning")) { // Stores current time _timeTracker = System.currentTimeMillis(); // Teleport Valakas to his lair. npc.teleToLocation(212852, -114842, -1632); // Sound + socialAction. for (L2PcInstance plyr : ZONE.getPlayersInside()) { plyr.sendPacket(new PlaySound(1, "B03_A", 0, 0, 0, 0, 0)); plyr.sendPacket(new SocialAction(npc.getObjectId(), 3)); } // Launch the cinematic, and tasks (regen + skill). startQuestTimer("spawn_1", 1700, npc, null); // 1700 startQuestTimer("spawn_2", 3200, npc, null); // 1500 startQuestTimer("spawn_3", 6500, npc, null); // 3300 startQuestTimer("spawn_4", 9400, npc, null); // 2900 startQuestTimer("spawn_5", 12100, npc, null); // 2700 startQuestTimer("spawn_6", 12430, npc, null); // 330 startQuestTimer("spawn_7", 15430, npc, null); // 3000 startQuestTimer("spawn_8", 16830, npc, null); // 1400 startQuestTimer("spawn_9", 23530, npc, null); // 6700 - end of cinematic startQuestTimer("spawn_10", 26000, npc, null); // 2500 - AI + unlock } // Regeneration && inactivity task else if (event.equalsIgnoreCase("regen_task")) { // Inactivity task - 15min if (GrandBossManager.getInstance().getBossStatus(VALAKAS) == FIGHTING) { if ((_timeTracker + 900000) < System.currentTimeMillis()) { npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE); npc.teleToLocation(-105200, -253104, -15264); GrandBossManager.getInstance().setBossStatus(VALAKAS, DORMANT); npc.setCurrentHpMp(npc.getMaxHp(), npc.getMaxMp()); // Drop all players from the zone. ZONE.oustAllPlayers(); // Cancel skill_task and regen_task. cancelQuestTimer("regen_task", npc, null); cancelQuestTimer("skill_task", npc, null); return null; } } int lvl = 0; // Verify if "Valakas Regeneration" skill is active. final L2Effect[] effects = npc.getAllEffects(); if ((effects != null) && (effects.length != 0)) { for (L2Effect e : effects) { if (e.getSkill().getId() == 4629) { lvl = e.getSkill().getLevel(); break; } } } // Current HPs are inferior to 25% ; apply lvl 4 of regen skill. if ((npc.getCurrentHp() < (npc.getMaxHp() / 4)) && (lvl != 4)) { npc.setTarget(npc); npc.doCast(SkillTable.getInstance().getInfo(4691, 4)); } // Current HPs are inferior to 50% ; apply lvl 3 of regen skill. else if ((npc.getCurrentHp() < ((npc.getMaxHp() * 2) / 4.0)) && (lvl != 3)) { npc.setTarget(npc); npc.doCast(SkillTable.getInstance().getInfo(4691, 3)); } // Current HPs are inferior to 75% ; apply lvl 2 of regen skill. else if ((npc.getCurrentHp() < ((npc.getMaxHp() * 3) / 4.0)) && (lvl != 2)) { npc.setTarget(npc); npc.doCast(SkillTable.getInstance().getInfo(4691, 2)); } // Apply lvl 1. else if (lvl != 1) { npc.setTarget(npc); npc.doCast(SkillTable.getInstance().getInfo(4691, 1)); } } // Spawn cinematic, regen_task and choose of skill. else if (event.equalsIgnoreCase("spawn_1")) { ZONE.broadcastPacket(new SpecialCamera(npc.getObjectId(), 1800, 180, -1, 1500, 10000, 0, 0, 1, 0)); } else if (event.equalsIgnoreCase("spawn_2")) { ZONE.broadcastPacket(new SpecialCamera(npc.getObjectId(), 1300, 180, -5, 3000, 10000, 0, -5, 1, 0)); } else if (event.equalsIgnoreCase("spawn_3")) { ZONE.broadcastPacket(new SpecialCamera(npc.getObjectId(), 500, 180, -8, 600, 10000, 0, 60, 1, 0)); } else if (event.equalsIgnoreCase("spawn_4")) { ZONE.broadcastPacket(new SpecialCamera(npc.getObjectId(), 800, 180, -8, 2700, 10000, 0, 30, 1, 0)); } else if (event.equalsIgnoreCase("spawn_5")) { ZONE.broadcastPacket(new SpecialCamera(npc.getObjectId(), 200, 250, 70, 0, 10000, 30, 80, 1, 0)); } else if (event.equalsIgnoreCase("spawn_6")) { ZONE.broadcastPacket(new SpecialCamera(npc.getObjectId(), 1100, 250, 70, 2500, 10000, 30, 80, 1, 0)); } else if (event.equalsIgnoreCase("spawn_7")) { ZONE.broadcastPacket(new SpecialCamera(npc.getObjectId(), 700, 150, 30, 0, 10000, -10, 60, 1, 0)); } else if (event.equalsIgnoreCase("spawn_8")) { ZONE.broadcastPacket(new SpecialCamera(npc.getObjectId(), 1200, 150, 20, 2900, 10000, -10, 30, 1, 0)); } else if (event.equalsIgnoreCase("spawn_9")) { ZONE.broadcastPacket(new SpecialCamera(npc.getObjectId(), 750, 170, -10, 3400, 4000, 10, -15, 1, 0)); } else if (event.equalsIgnoreCase("spawn_10")) { GrandBossManager.getInstance().setBossStatus(VALAKAS, FIGHTING); npc.setIsInvul(false); startQuestTimer("regen_task", 60000, npc, null, true); startQuestTimer("skill_task", 2000, npc, null, true); } // Death cinematic, spawn of Teleport Cubes. else if (event.equalsIgnoreCase("die_1")) { ZONE.broadcastPacket(new SpecialCamera(npc.getObjectId(), 2000, 130, -1, 0, 10000, 0, 0, 1, 1)); } else if (event.equalsIgnoreCase("die_2")) { ZONE.broadcastPacket(new SpecialCamera(npc.getObjectId(), 1100, 210, -5, 3000, 10000, -13, 0, 1, 1)); } else if (event.equalsIgnoreCase("die_3")) { ZONE.broadcastPacket(new SpecialCamera(npc.getObjectId(), 1300, 200, -8, 3000, 10000, 0, 15, 1, 1)); } else if (event.equalsIgnoreCase("die_4")) { ZONE.broadcastPacket(new SpecialCamera(npc.getObjectId(), 1000, 190, 0, 500, 10000, 0, 10, 1, 1)); } else if (event.equalsIgnoreCase("die_5")) { ZONE.broadcastPacket(new SpecialCamera(npc.getObjectId(), 1700, 120, 0, 2500, 10000, 12, 40, 1, 1)); } else if (event.equalsIgnoreCase("die_6")) { ZONE.broadcastPacket(new SpecialCamera(npc.getObjectId(), 1700, 20, 0, 700, 10000, 10, 10, 1, 1)); } else if (event.equalsIgnoreCase("die_7")) { ZONE.broadcastPacket(new SpecialCamera(npc.getObjectId(), 1700, 10, 0, 1000, 10000, 20, 70, 1, 1)); } else if (event.equalsIgnoreCase("die_8")) { ZONE.broadcastPacket(new SpecialCamera(npc.getObjectId(), 1700, 10, 0, 300, 250, 20, -20, 1, 1)); for (Location loc : TELEPORT_CUBE_LOCATIONS) { addSpawn(31759, loc, false, 900000); } startQuestTimer("remove_players", 900000, null, null); } else if (event.equalsIgnoreCase("skill_task")) { callSkillAI(npc); } } else { if (event.equalsIgnoreCase("valakas_unlock")) { final L2Npc valakas = addSpawn(VALAKAS, -105200, -253104, -15264, 32768, false, 0); GrandBossManager.getInstance().addBoss((L2GrandBossInstance) valakas); GrandBossManager.getInstance().setBossStatus(VALAKAS, DORMANT); } else if (event.equalsIgnoreCase("remove_players")) { ZONE.oustAllPlayers(); } } return super.onAdvEvent(event, npc, player); } @Override public String onSpawn(L2Npc npc) { npc.disableCoreAI(true); return super.onSpawn(npc); } @Override public String onAttack(L2Npc npc, L2PcInstance attacker, int damage, boolean isSummon) { if (!ZONE.isInsideZone(attacker)) { attacker.doDie(attacker); return null; } if (npc.isInvul()) { return null; } if (GrandBossManager.getInstance().getBossStatus(VALAKAS) != FIGHTING) { attacker.teleToLocation(150037, -57255, -2976); return null; } // Debuff strider-mounted players. if (attacker.getMountType() == 1) { final L2Skill skill = SkillTable.getInstance().getInfo(4258, 1); if (attacker.getFirstEffect(skill) == null) { npc.setTarget(attacker); npc.doCast(skill); } } _timeTracker = System.currentTimeMillis(); return super.onAttack(npc, attacker, damage, isSummon); } @Override public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon) { // Cancel skill_task and regen_task. cancelQuestTimer("regen_task", npc, null); cancelQuestTimer("skill_task", npc, null); // Launch death animation. ZONE.broadcastPacket(new PlaySound(1, "B03_D", 0, 0, 0, 0, 0)); ZONE.broadcastPacket(new SpecialCamera(npc.getObjectId(), 1200, 20, -10, 0, 13000, 0, 0, 1, 0)); startQuestTimer("die_1", 300, npc, null); // 300 startQuestTimer("die_2", 600, npc, null); // 300 startQuestTimer("die_3", 3800, npc, null); // 3200 startQuestTimer("die_4", 8200, npc, null); // 4400 startQuestTimer("die_5", 8700, npc, null); // 500 startQuestTimer("die_6", 13300, npc, null); // 4600 startQuestTimer("die_7", 14000, npc, null); // 700 startQuestTimer("die_8", 16500, npc, null); // 2500 GrandBossManager.getInstance().setBossStatus(VALAKAS, DEAD); // Calculate Min and Max respawn times randomly. long respawnTime = Config.VALAKAS_SPAWN_INTERVAL + getRandom(-Config.VALAKAS_SPAWN_RANDOM, Config.VALAKAS_SPAWN_RANDOM); respawnTime *= 3600000; startQuestTimer("valakas_unlock", respawnTime, null, null); // also save the respawn time so that the info is maintained past reboots StatsSet info = GrandBossManager.getInstance().getStatsSet(VALAKAS); info.set("respawn_time", (System.currentTimeMillis() + respawnTime)); GrandBossManager.getInstance().setStatsSet(VALAKAS, info); return super.onKill(npc, killer, isSummon); } @Override public String onAggroRangeEnter(L2Npc npc, L2PcInstance player, boolean isSummon) { return null; } private void callSkillAI(L2Npc npc) { if (npc.isInvul() || npc.isCastingNow()) { return; } // Pickup a target if no or dead victim. 10% luck he decides to reconsiders his target. if ((_actualVictim == null) || _actualVictim.isDead() || !(npc.getKnownList().knowsObject(_actualVictim)) || (getRandom(10) == 0)) { _actualVictim = getRandomTarget(npc); } // If result is still null, Valakas will roam. Don't go deeper in skill AI. if (_actualVictim == null) { if (getRandom(10) == 0) { int x = npc.getX(); int y = npc.getY(); int z = npc.getZ(); int posX = x + getRandom(-1400, 1400); int posY = y + getRandom(-1400, 1400); if (GeoData.getInstance().canMoveFromToTarget(x, y, z, posX, posY, z, npc.getInstanceId())) { npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, new L2CharPosition(posX, posY, z, 0)); } } return; } final L2Skill skill = getRandomSkill(npc).getSkill(); // Cast the skill or follow the target. if (Util.checkIfInRange((skill.getCastRange() < 600) ? 600 : skill.getCastRange(), npc, _actualVictim, true)) { npc.getAI().setIntention(CtrlIntention.AI_INTENTION_IDLE); npc.setIsCastingNow(true); npc.setTarget(_actualVictim); npc.doCast(skill); } else { npc.getAI().setIntention(CtrlIntention.AI_INTENTION_FOLLOW, _actualVictim, null); npc.setIsCastingNow(false); } } /** * Pick a random skill.<br> * Valakas will mostly use utility skills. If Valakas feels surrounded, he will use AoE skills.<br> * Lower than 50% HPs, he will begin to use Meteor skill. * @param npc valakas * @return a skill holder */ private SkillHolder getRandomSkill(L2Npc npc) { final int hpRatio = (int) ((npc.getCurrentHp() / npc.getMaxHp()) * 100); // Valakas Lava Skin has priority. if ((hpRatio < 75) && (getRandom(150) == 0) && (npc.getFirstEffect(VALAKAS_LAVA_SKIN.getSkillId()) == null)) { return VALAKAS_LAVA_SKIN; } // Valakas will use mass spells if he feels surrounded. if (Util.getPlayersCountInRadius(1200, npc, false, false) >= 20) { return VALAKAS_AOE_SKILLS[getRandom(VALAKAS_AOE_SKILLS.length)]; } if (hpRatio > 50) { return VALAKAS_REGULAR_SKILLS[getRandom(VALAKAS_REGULAR_SKILLS.length)]; } return VALAKAS_LOWHP_SKILLS[getRandom(VALAKAS_LOWHP_SKILLS.length)]; } /** * Pickup a random L2Playable from the zone, deads targets aren't included. * @param npc * @return a random L2Playable. */ private L2Playable getRandomTarget(L2Npc npc) { List<L2Playable> result = new ArrayList<>(); for (L2Character obj : npc.getKnownList().getKnownCharacters()) { if ((obj == null) || obj.isPet()) { continue; } else if (!obj.isDead() && obj.isPlayable()) { result.add((L2Playable) obj); } } return (result.isEmpty()) ? null : result.get(getRandom(result.size())); } public static void main(String[] args) { new Valakas(Valakas.class.getSimpleName(), "ai"); } } none of both :/
  18. It works ty. But at Valkas there is no line with "players.size" what value is it at valakas?
  19. For example here is the antharas script, I dont know which value to edit... /* * 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 ai.individual; import java.util.Collection; import java.util.List; import java.util.Map; import java.util.concurrent.ScheduledFuture; import javolution.util.FastList; import javolution.util.FastMap; import ai.npc.AbstractNpcAI; import com.l2jserver.Config; import com.l2jserver.gameserver.GeoData; import com.l2jserver.gameserver.ThreadPoolManager; import com.l2jserver.gameserver.ai.CtrlIntention; import com.l2jserver.gameserver.datatables.NpcTable; import com.l2jserver.gameserver.datatables.SkillTable; import com.l2jserver.gameserver.datatables.SpawnTable; import com.l2jserver.gameserver.instancemanager.GrandBossManager; import com.l2jserver.gameserver.model.L2CharPosition; import com.l2jserver.gameserver.model.L2Spawn; import com.l2jserver.gameserver.model.L2World; import com.l2jserver.gameserver.model.StatsSet; import com.l2jserver.gameserver.model.actor.L2Character; import com.l2jserver.gameserver.model.actor.L2Npc; import com.l2jserver.gameserver.model.actor.instance.L2GrandBossInstance; import com.l2jserver.gameserver.model.actor.instance.L2MonsterInstance; import com.l2jserver.gameserver.model.actor.instance.L2PcInstance; import com.l2jserver.gameserver.model.actor.templates.L2NpcTemplate; import com.l2jserver.gameserver.model.skills.L2Skill; import com.l2jserver.gameserver.model.zone.type.L2BossZone; import com.l2jserver.gameserver.network.serverpackets.Earthquake; import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket; import com.l2jserver.gameserver.network.serverpackets.PlaySound; import com.l2jserver.gameserver.network.serverpackets.SpecialCamera; /** * Antharas' AI. * @author L2J_JP SANDMAN */ public class Antharas extends AbstractNpcAI { // config private static final int FWA_ACTIVITYTIMEOFANTHARAS = 120; // private static final int FWA_APPTIMEOFANTHARAS = 1800000; private static final int FWA_INACTIVITYTIME = 900000; private static final boolean FWA_OLDANTHARAS = false; private static final boolean FWA_MOVEATRANDOM = true; private static final boolean FWA_DOSERVEREARTHQUAKE = true; private static final int FWA_LIMITOFWEAK = 45; private static final int FWA_LIMITOFNORMAL = 63; private static final int FWA_MAXMOBS = 10; // this includes Antharas itself private static final int FWA_INTERVALOFMOBSWEAK = 180000; private static final int FWA_INTERVALOFMOBSNORMAL = 150000; private static final int FWA_INTERVALOFMOBSSTRONG = 120000; private static final int FWA_PERCENTOFBEHEMOTH = 60; private static final int FWA_SELFDESTRUCTTIME = 15000; // Location of teleport cube. private final int _teleportCubeId = 31859; private final int _teleportCubeLocation[][] = { { 177615, 114941, -7709, 0 } }; protected List<L2Spawn> _teleportCubeSpawn = new FastList<>(); protected List<L2Npc> _teleportCube = new FastList<>(); // Spawn data of monsters. protected Map<Integer, L2Spawn> _monsterSpawn = new FastMap<>(); // Instance of monsters. protected List<L2Npc> _monsters = new FastList<>(); protected L2GrandBossInstance _antharas = null; // Antharas Ids private static final int ANTHARAS_OLD_ID = 29019; private static final int ANTHARAS_WEAK_ID = 29066; private static final int ANTHARAS_NORMAL_ID = 29067; private static final int ANTHARAS_STRONG_ID = 29068; // Tasks. protected ScheduledFuture<?> _cubeSpawnTask = null; protected ScheduledFuture<?> _monsterSpawnTask = null; protected ScheduledFuture<?> _activityCheckTask = null; protected ScheduledFuture<?> _socialTask = null; protected ScheduledFuture<?> _mobiliseTask = null; protected ScheduledFuture<?> _mobsSpawnTask = null; protected ScheduledFuture<?> _selfDestructionTask = null; protected ScheduledFuture<?> _moveAtRandomTask = null; protected ScheduledFuture<?> _movieTask = null; // Antharas Status Tracking : private static final byte DORMANT = 0; // Antharas is spawned and no one has entered yet. Entry is unlocked private static final byte WAITING = 1; // Antharas is spawend and someone has entered, triggering a 30 minute window for additional people to enter // before he unleashes his attack. Entry is unlocked private static final byte FIGHTING = 2; // Antharas is engaged in battle, annihilating his foes. Entry is locked private static final byte DEAD = 3; // Antharas has been killed. Entry is locked protected static long _LastAction = 0; protected static L2BossZone _Zone; private Antharas(String name, String descr) { super(name, descr); registerMobs(ANTHARAS_OLD_ID, ANTHARAS_WEAK_ID, ANTHARAS_NORMAL_ID, ANTHARAS_STRONG_ID, 29069, 29070, 29071, 29072, 29073, 29074, 29075, 29076); init(); } // Initialize private void init() { // Setting spawn data of monsters. try { _Zone = GrandBossManager.getInstance().getZone(179700, 113800, -7709); L2NpcTemplate template1; L2Spawn tempSpawn; // Old Antharas template1 = NpcTable.getInstance().getTemplate(ANTHARAS_OLD_ID); tempSpawn = new L2Spawn(template1); tempSpawn.setLocx(181323); tempSpawn.setLocy(114850); tempSpawn.setLocz(-7623); tempSpawn.setHeading(32542); tempSpawn.setAmount(1); tempSpawn.setRespawnDelay(FWA_ACTIVITYTIMEOFANTHARAS * 2); SpawnTable.getInstance().addNewSpawn(tempSpawn, false); _monsterSpawn.put(29019, tempSpawn); // Weak Antharas template1 = NpcTable.getInstance().getTemplate(ANTHARAS_WEAK_ID); tempSpawn = new L2Spawn(template1); tempSpawn.setLocx(181323); tempSpawn.setLocy(114850); tempSpawn.setLocz(-7623); tempSpawn.setHeading(32542); tempSpawn.setAmount(1); tempSpawn.setRespawnDelay(FWA_ACTIVITYTIMEOFANTHARAS * 2); SpawnTable.getInstance().addNewSpawn(tempSpawn, false); _monsterSpawn.put(29066, tempSpawn); // Normal Antharas template1 = NpcTable.getInstance().getTemplate(ANTHARAS_NORMAL_ID); tempSpawn = new L2Spawn(template1); tempSpawn.setLocx(181323); tempSpawn.setLocy(114850); tempSpawn.setLocz(-7623); tempSpawn.setHeading(32542); tempSpawn.setAmount(1); tempSpawn.setRespawnDelay(FWA_ACTIVITYTIMEOFANTHARAS * 2); SpawnTable.getInstance().addNewSpawn(tempSpawn, false); _monsterSpawn.put(29067, tempSpawn); // Strong Antharas template1 = NpcTable.getInstance().getTemplate(ANTHARAS_STRONG_ID); tempSpawn = new L2Spawn(template1); tempSpawn.setLocx(181323); tempSpawn.setLocy(114850); tempSpawn.setLocz(-7623); tempSpawn.setHeading(32542); tempSpawn.setAmount(1); tempSpawn.setRespawnDelay(FWA_ACTIVITYTIMEOFANTHARAS * 2); SpawnTable.getInstance().addNewSpawn(tempSpawn, false); _monsterSpawn.put(29068, tempSpawn); } catch (Exception e) { _log.warning(e.getMessage()); } // Setting spawn data of teleport cube. try { L2NpcTemplate Cube = NpcTable.getInstance().getTemplate(_teleportCubeId); L2Spawn spawnDat; for (int[] element : _teleportCubeLocation) { spawnDat = new L2Spawn(Cube); spawnDat.setAmount(1); spawnDat.setLocx(element[0]); spawnDat.setLocy(element[1]); spawnDat.setLocz(element[2]); spawnDat.setHeading(element[3]); spawnDat.setRespawnDelay(60); spawnDat.setLocation(0); SpawnTable.getInstance().addNewSpawn(spawnDat, false); _teleportCubeSpawn.add(spawnDat); } } catch (Exception e) { _log.warning(e.getMessage()); } int status = GrandBossManager.getInstance().getBossStatus(ANTHARAS_OLD_ID); if (FWA_OLDANTHARAS || (status == WAITING)) { StatsSet info = GrandBossManager.getInstance().getStatsSet(ANTHARAS_OLD_ID); Long respawnTime = info.getLong("respawn_time"); if ((status == DEAD) && (respawnTime <= System.currentTimeMillis())) { // the time has already expired while the server was offline. Immediately spawn antharas in his cave. // also, the status needs to be changed to DORMANT GrandBossManager.getInstance().setBossStatus(ANTHARAS_OLD_ID, DORMANT); status = DORMANT; } else if (status == FIGHTING) { int loc_x = info.getInteger("loc_x"); int loc_y = info.getInteger("loc_y"); int loc_z = info.getInteger("loc_z"); int heading = info.getInteger("heading"); int hp = info.getInteger("currentHP"); int mp = info.getInteger("currentMP"); _antharas = (L2GrandBossInstance) addSpawn(ANTHARAS_OLD_ID, loc_x, loc_y, loc_z, heading, false, 0); GrandBossManager.getInstance().addBoss(_antharas); _antharas.setCurrentHpMp(hp, mp); _LastAction = System.currentTimeMillis(); // Start repeating timer to check for inactivity _activityCheckTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new CheckActivity(), 60000, 60000); } else if (status == DEAD) { ThreadPoolManager.getInstance().scheduleGeneral(new UnlockAntharas(ANTHARAS_OLD_ID), respawnTime - System.currentTimeMillis()); } else { setAntharasSpawnTask(); } } else { int statusWeak = GrandBossManager.getInstance().getBossStatus(ANTHARAS_WEAK_ID); int statusNormal = GrandBossManager.getInstance().getBossStatus(ANTHARAS_NORMAL_ID); int statusStrong = GrandBossManager.getInstance().getBossStatus(ANTHARAS_STRONG_ID); int antharasId = 0; if ((statusWeak == FIGHTING) || (statusWeak == DEAD)) { antharasId = ANTHARAS_WEAK_ID; status = statusWeak; } else if ((statusNormal == FIGHTING) || (statusNormal == DEAD)) { antharasId = ANTHARAS_NORMAL_ID; status = statusNormal; } else if ((statusStrong == FIGHTING) || (statusStrong == DEAD)) { antharasId = ANTHARAS_STRONG_ID; status = statusStrong; } if ((antharasId != 0) && (status == FIGHTING)) { StatsSet info = GrandBossManager.getInstance().getStatsSet(antharasId); int loc_x = info.getInteger("loc_x"); int loc_y = info.getInteger("loc_y"); int loc_z = info.getInteger("loc_z"); int heading = info.getInteger("heading"); int hp = info.getInteger("currentHP"); int mp = info.getInteger("currentMP"); _antharas = (L2GrandBossInstance) addSpawn(antharasId, loc_x, loc_y, loc_z, heading, false, 0); GrandBossManager.getInstance().addBoss(_antharas); _antharas.setCurrentHpMp(hp, mp); _LastAction = System.currentTimeMillis(); // Start repeating timer to check for inactivity _activityCheckTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new CheckActivity(), 60000, 60000); } else if ((antharasId != 0) && (status == DEAD)) { StatsSet info = GrandBossManager.getInstance().getStatsSet(antharasId); Long respawnTime = info.getLong("respawn_time"); if (respawnTime <= System.currentTimeMillis()) { // the time has already expired while the server was offline. Immediately spawn antharas in his cave. // also, the status needs to be changed to DORMANT GrandBossManager.getInstance().setBossStatus(antharasId, DORMANT); status = DORMANT; } else { ThreadPoolManager.getInstance().scheduleGeneral(new UnlockAntharas(antharasId), respawnTime - System.currentTimeMillis()); } } } } // Do spawn teleport cube. public void spawnCube() { if (_mobsSpawnTask != null) { _mobsSpawnTask.cancel(true); _mobsSpawnTask = null; } if (_selfDestructionTask != null) { _selfDestructionTask.cancel(true); _selfDestructionTask = null; } if (_activityCheckTask != null) { _activityCheckTask.cancel(false); _activityCheckTask = null; } for (L2Spawn spawnDat : _teleportCubeSpawn) { _teleportCube.add(spawnDat.doSpawn()); } } // Setting Antharas spawn task. public void setAntharasSpawnTask() { if (_monsterSpawnTask == null) { synchronized (this) { if (_monsterSpawnTask == null) { GrandBossManager.getInstance().setBossStatus(ANTHARAS_OLD_ID, WAITING); _monsterSpawnTask = ThreadPoolManager.getInstance().scheduleGeneral(new AntharasSpawn(1), (Config.ANTHARAS_WAIT_TIME * 60000)); } } } } @Override public String onAdvEvent(String event, L2Npc npc, L2PcInstance player) { if (event.equalsIgnoreCase("waiting")) { setAntharasSpawnTask(); } return super.onAdvEvent(event, npc, player); } protected void startMinionSpawns(int antharasId) { int intervalOfMobs; // Interval of minions is decided by the type of Antharas // that invaded the lair. switch (antharasId) { case ANTHARAS_WEAK_ID: intervalOfMobs = FWA_INTERVALOFMOBSWEAK; break; case ANTHARAS_NORMAL_ID: intervalOfMobs = FWA_INTERVALOFMOBSNORMAL; break; default: intervalOfMobs = FWA_INTERVALOFMOBSSTRONG; break; } // Spawn mobs. _mobsSpawnTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new MobsSpawn(), intervalOfMobs, intervalOfMobs); } // Do spawn Antharas. private class AntharasSpawn implements Runnable { private int _taskId = 0; private final Collection<L2Character> _players = _Zone.getCharactersInside(); public AntharasSpawn(int taskId) { _taskId = taskId; } @Override public void run() { int npcId; L2Spawn antharasSpawn = null; switch (_taskId) { case 1: // Spawn. // Strength of Antharas is decided by the number of players that // invaded the lair. _monsterSpawnTask.cancel(false); _monsterSpawnTask = null; if (FWA_OLDANTHARAS) { npcId = 29019; // old } else if (_players.size() <= FWA_LIMITOFWEAK) { npcId = 29066; // weak } else if (_players.size() > FWA_LIMITOFNORMAL) { npcId = 29068; // strong } else { npcId = 29067; // normal } // Do spawn. antharasSpawn = _monsterSpawn.get(npcId); _antharas = (L2GrandBossInstance) antharasSpawn.doSpawn(); GrandBossManager.getInstance().addBoss(_antharas); _monsters.add(_antharas); _antharas.setIsImmobilized(true); GrandBossManager.getInstance().setBossStatus(ANTHARAS_OLD_ID, DORMANT); GrandBossManager.getInstance().setBossStatus(npcId, FIGHTING); _LastAction = System.currentTimeMillis(); // Start repeating timer to check for inactivity _activityCheckTask = ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new CheckActivity(), 60000, 60000); // Setting 1st time of minions spawn task. if (!FWA_OLDANTHARAS) { startMinionSpawns(npcId); } // Set next task. if (_socialTask != null) { _socialTask.cancel(true); _socialTask = null; } _socialTask = ThreadPoolManager.getInstance().scheduleGeneral(new AntharasSpawn(2), 16); break; case 2: // Set camera. broadcastPacket(new SpecialCamera(_antharas.getObjectId(), 700, 13, -19, 0, 20000, 0, 0, 1, 0)); // Set next task. if (_socialTask != null) { _socialTask.cancel(true); _socialTask = null; } _socialTask = ThreadPoolManager.getInstance().scheduleGeneral(new AntharasSpawn(3), 3000); break; case 3: // Do social. broadcastPacket(new SpecialCamera(_antharas.getObjectId(), 700, 13, 0, 6000, 20000, 0, 0, 1, 0)); // Set next task. if (_socialTask != null) { _socialTask.cancel(true); _socialTask = null; } _socialTask = ThreadPoolManager.getInstance().scheduleGeneral(new AntharasSpawn(4), 10000); break; case 4: broadcastPacket(new SpecialCamera(_antharas.getObjectId(), 3700, 0, -3, 0, 10000, 0, 0, 1, 0)); // Set next task. if (_socialTask != null) { _socialTask.cancel(true); _socialTask = null; } _socialTask = ThreadPoolManager.getInstance().scheduleGeneral(new AntharasSpawn(5), 200); break; case 5: // Do social. broadcastPacket(new SpecialCamera(_antharas.getObjectId(), 1100, 0, -3, 22000, 30000, 0, 0, 1, 0)); // Set next task. if (_socialTask != null) { _socialTask.cancel(true); _socialTask = null; } _socialTask = ThreadPoolManager.getInstance().scheduleGeneral(new AntharasSpawn(6), 10800); break; case 6: // Set camera. broadcastPacket(new SpecialCamera(_antharas.getObjectId(), 1100, 0, -3, 300, 7000, 0, 0, 1, 0)); // Set next task. if (_socialTask != null) { _socialTask.cancel(true); _socialTask = null; } _socialTask = ThreadPoolManager.getInstance().scheduleGeneral(new AntharasSpawn(7), 1900); break; case 7: _antharas.abortCast(); _mobiliseTask = ThreadPoolManager.getInstance().scheduleGeneral(new SetMobilised(_antharas), 16); // Move at random. if (FWA_MOVEATRANDOM) { L2CharPosition pos = new L2CharPosition(getRandom(175000, 178500), getRandom(112400, 116000), -7707, 0); _moveAtRandomTask = ThreadPoolManager.getInstance().scheduleGeneral(new MoveAtRandom(_antharas, pos), 500); } if (_socialTask != null) { _socialTask.cancel(true); _socialTask = null; } break; } } } protected void broadcastPacket(L2GameServerPacket mov) { if (_Zone != null) { for (L2Character characters : _Zone.getCharactersInside()) { if (characters.isPlayer()) { characters.sendPacket(mov); } } } } // Do spawn Behemoth or Bomber. private class MobsSpawn implements Runnable { public MobsSpawn() { } @Override public void run() { L2NpcTemplate template1; L2Spawn tempSpawn; boolean isBehemoth = getRandom(100) < FWA_PERCENTOFBEHEMOTH; try { int mobNumber = (isBehemoth ? 2 : 3); // Set spawn. for (int i = 0; i < mobNumber; i++) { if (_monsters.size() >= FWA_MAXMOBS) { break; } int npcId; if (isBehemoth) { npcId = 29069; } else { npcId = getRandom(29070, 29076); } template1 = NpcTable.getInstance().getTemplate(npcId); tempSpawn = new L2Spawn(template1); // allocates it at random in the lair of Antharas. int tried = 0; boolean notFound = true; int x = 175000; int y = 112400; int dt = ((_antharas.getX() - x) * (_antharas.getX() - x)) + ((_antharas.getY() - y) * (_antharas.getY() - y)); while ((tried++ < 25) && notFound) { int rx = getRandom(175000, 179900); int ry = getRandom(112400, 116000); int rdt = ((_antharas.getX() - rx) * (_antharas.getX() - rx)) + ((_antharas.getY() - ry) * (_antharas.getY() - ry)); if (GeoData.getInstance().canSeeTarget(_antharas.getX(), _antharas.getY(), -7704, rx, ry, -7704)) { if (rdt < dt) { x = rx; y = ry; dt = rdt; if (rdt <= 900000) { notFound = false; } } } } tempSpawn.setLocx(x); tempSpawn.setLocy(y); tempSpawn.setLocz(-7704); tempSpawn.setHeading(0); tempSpawn.setAmount(1); tempSpawn.setRespawnDelay(FWA_ACTIVITYTIMEOFANTHARAS * 2); SpawnTable.getInstance().addNewSpawn(tempSpawn, false); // Do spawn. _monsters.add(tempSpawn.doSpawn()); } } catch (Exception e) { _log.warning(e.getMessage()); } } } @Override public String onAggroRangeEnter(L2Npc npc, L2PcInstance player, boolean isSummon) { switch (npc.getNpcId()) { case 29070: case 29071: case 29072: case 29073: case 29074: case 29075: case 29076: if ((_selfDestructionTask == null) && !npc.isDead()) { _selfDestructionTask = ThreadPoolManager.getInstance().scheduleGeneral(new SelfDestructionOfBomber(npc), FWA_SELFDESTRUCTTIME); } break; } return super.onAggroRangeEnter(npc, player, isSummon); } // Do self destruction. private class SelfDestructionOfBomber implements Runnable { private final L2Npc _bomber; public SelfDestructionOfBomber(L2Npc bomber) { _bomber = bomber; } @Override public void run() { L2Skill skill = null; switch (_bomber.getNpcId()) { case 29070: case 29071: case 29072: case 29073: case 29074: case 29075: skill = SkillTable.getInstance().getInfo(5097, 1); break; case 29076: skill = SkillTable.getInstance().getInfo(5094, 1); break; } _bomber.doCast(skill); if (_selfDestructionTask != null) { _selfDestructionTask.cancel(false); _selfDestructionTask = null; } } } @Override public String onSpellFinished(L2Npc npc, L2PcInstance player, L2Skill skill) { if (npc.isInvul()) { return null; } else if ((skill != null) && ((skill.getId() == 5097) || (skill.getId() == 5094))) { switch (npc.getNpcId()) { case 29070: case 29071: case 29072: case 29073: case 29074: case 29075: case 29076: npc.doDie(npc); break; } } return super.onSpellFinished(npc, player, skill); } // At end of activity time. protected class CheckActivity implements Runnable { @Override public void run() { Long temp = (System.currentTimeMillis() - _LastAction); if (temp > FWA_INACTIVITYTIME) { GrandBossManager.getInstance().setBossStatus(_antharas.getNpcId(), DORMANT); setUnspawn(); } } } // Clean Antharas's lair. public void setUnspawn() { // Eliminate players. _Zone.oustAllPlayers(); // Not executed tasks is canceled. if (_cubeSpawnTask != null) { _cubeSpawnTask.cancel(true); _cubeSpawnTask = null; } if (_monsterSpawnTask != null) { _monsterSpawnTask.cancel(true); _monsterSpawnTask = null; } if (_activityCheckTask != null) { _activityCheckTask.cancel(false); _activityCheckTask = null; } if (_socialTask != null) { _socialTask.cancel(true); _socialTask = null; } if (_mobiliseTask != null) { _mobiliseTask.cancel(true); _mobiliseTask = null; } if (_mobsSpawnTask != null) { _mobsSpawnTask.cancel(true); _mobsSpawnTask = null; } if (_selfDestructionTask != null) { _selfDestructionTask.cancel(true); _selfDestructionTask = null; } if (_moveAtRandomTask != null) { _moveAtRandomTask.cancel(true); _moveAtRandomTask = null; } // Delete monsters. for (L2Npc mob : _monsters) { mob.getSpawn().stopRespawn(); mob.deleteMe(); } _monsters.clear(); // Delete teleport cube. for (L2Npc cube : _teleportCube) { cube.getSpawn().stopRespawn(); cube.deleteMe(); } _teleportCube.clear(); } // Do spawn teleport cube. private class CubeSpawn implements Runnable { private final int _type; public CubeSpawn(int type) { _type = type; } @Override public void run() { if (_type == 0) { spawnCube(); _cubeSpawnTask = ThreadPoolManager.getInstance().scheduleGeneral(new CubeSpawn(1), 1800000); } else { setUnspawn(); } } } // UnLock Antharas. private static class UnlockAntharas implements Runnable { private final int _bossId; public UnlockAntharas(int bossId) { _bossId = bossId; } @Override public void run() { GrandBossManager.getInstance().setBossStatus(_bossId, DORMANT); if (FWA_DOSERVEREARTHQUAKE) { for (L2PcInstance p : L2World.getInstance().getAllPlayersArray()) { p.broadcastPacket(new Earthquake(185708, 114298, -8221, 20, 10)); } } } } // Action is enabled the boss. private class SetMobilised implements Runnable { private final L2GrandBossInstance _boss; public SetMobilised(L2GrandBossInstance boss) { _boss = boss; } @Override public void run() { _boss.setIsImmobilized(false); // When it is possible to act, a social action is canceled. if (_socialTask != null) { _socialTask.cancel(true); _socialTask = null; } } } // Move at random on after Antharas appears. private static class MoveAtRandom implements Runnable { private final L2Npc _npc; private final L2CharPosition _pos; public MoveAtRandom(L2Npc npc, L2CharPosition pos) { _npc = npc; _pos = pos; } @Override public void run() { _npc.getAI().setIntention(CtrlIntention.AI_INTENTION_MOVE_TO, _pos); } } @Override public String onAttack(L2Npc npc, L2PcInstance attacker, int damage, boolean isSummon) { if ((npc.getNpcId() == 29019) || (npc.getNpcId() == 29066) || (npc.getNpcId() == 29067) || (npc.getNpcId() == 29068)) { _LastAction = System.currentTimeMillis(); if (GrandBossManager.getInstance().getBossStatus(_antharas.getNpcId()) != FIGHTING) { _Zone.oustAllPlayers(); } else if (!FWA_OLDANTHARAS && (_mobsSpawnTask == null)) { startMinionSpawns(npc.getNpcId()); } } else if ((npc.getNpcId() > 29069) && (npc.getNpcId() < 29077) && (npc.getCurrentHp() <= damage)) { L2Skill skill = null; switch (npc.getNpcId()) { case 29070: case 29071: case 29072: case 29073: case 29074: case 29075: skill = SkillTable.getInstance().getInfo(5097, 1); break; case 29076: skill = SkillTable.getInstance().getInfo(5094, 1); break; } npc.doCast(skill); } return super.onAttack(npc, attacker, damage, isSummon); } @Override public String onKill(L2Npc npc, L2PcInstance killer, boolean isSummon) { if ((npc.getNpcId() == 29019) || (npc.getNpcId() == 29066) || (npc.getNpcId() == 29067) || (npc.getNpcId() == 29068)) { broadcastPacket(new SpecialCamera(_antharas.getObjectId(), 1200, 20, -10, 0, 13000, 0, 0, 1, 0)); npc.broadcastPacket(new PlaySound(1, "BS01_D", 1, npc.getObjectId(), npc.getX(), npc.getY(), npc.getZ())); _cubeSpawnTask = ThreadPoolManager.getInstance().scheduleGeneral(new CubeSpawn(0), 10000); GrandBossManager.getInstance().setBossStatus(npc.getNpcId(), DEAD); // Calculate Min and Max respawn times randomly. long respawnTime = Config.ANTHARAS_SPAWN_INTERVAL + getRandom(-Config.ANTHARAS_SPAWN_RANDOM, Config.ANTHARAS_SPAWN_RANDOM); respawnTime *= 3600000; ThreadPoolManager.getInstance().scheduleGeneral(new UnlockAntharas(npc.getNpcId()), respawnTime); // also save the respawn time so that the info is maintained past reboots StatsSet info = GrandBossManager.getInstance().getStatsSet(npc.getNpcId()); info.set("respawn_time", (System.currentTimeMillis() + respawnTime)); GrandBossManager.getInstance().setStatsSet(npc.getNpcId(), info); } else if (npc.getNpcId() == 29069) { int countHPHerb = getRandom(6, 18); int countMPHerb = getRandom(6, 18); for (int i = 0; i < countHPHerb; i++) { ((L2MonsterInstance) npc).dropItem(killer, 8602, 1); } for (int i = 0; i < countMPHerb; i++) { ((L2MonsterInstance) npc).dropItem(killer, 8605, 1); } } if (_monsters.contains(npc)) { _monsters.remove(npc); } return super.onKill(npc, killer, isSummon); } public static void main(String[] args) { new Antharas(Antharas.class.getSimpleName(), "ai"); } }
  20. Where do I need to go in my files to change these values? For example I want to set up that you need atleast 5 people to join Valakas/Antharas/Zaken. I want that people can teleport into a instance alone. For example seed of destruction. Does someone knows how I can edit these values? Cause I will need like 20+ people for Valakas or Antharas right now
  21. L2MerchantInstance: Unknown NPC bypass: "Sell" NpcId: 10002 In console :/???
  22. I need to know how to add a sell menu for a GMShop. I made the button already but its not pathing me to a sell screen. html in my gmshop <center><button value="Sell" action="bypass -h npc_%objectId%_Buy 13128001" width=75 height=25 back="L2UI_CT1.Button_DF.Gauge_DF_Attribute_Wind.Gauge_DF_Attribute_Wind" fore="L2UI_CT1.Button_DF.Gauge_DF_Attribute_Wind.Gauge_DF_Attribute_Wind_bg"></center><br> <img src="L2UI_CH3.herotower_deco" width=256 height=32 align=left>
  23. I just deleted the instance and it work. Can someone help me to some other problems? How do I enter Valakas Lair without doing any quests? How can I setup these things
×
×
  • Create New...