Help with istance fix TiamatStrongHold

Results 1 to 7 of 7
  1. #1
    Apprentice ddmbest88 is offline
    MemberRank
    Nov 2013 Join Date
    14Posts

    Help with istance fix TiamatStrongHold

    hello i'm tryng to fix TiamatStronghold.
    my problem is that when you speak to Kahrun he asks wheter you are ready or not. If you ask yes he should destroy the gate and let balaur attack the player. Currently i don't know how to intercept the user clicking on "yes" options to make the gate despawn, thus the balaur arrive at the gate and gets back because thay cannot go trough the wall. @Robson26 your help would be apreciated :P


  2. #2
    Enthusiast Zegita is offline
    MemberRank
    Oct 2013 Join Date
    BeluslanLocation
    33Posts

    Re: Help with istance fix TiamatStrongHold

    Look through the source code and find the action that also has a "yes" option and use that.
    if @Robson26 does it for you, you won't learn anything.

  3. #3
    Apprentice ddmbest88 is offline
    MemberRank
    Nov 2013 Join Date
    14Posts

    Re: Help with istance fix TiamatStrongHold

    i am struggling for 3 days and i though that it was time to ask for a clue, i work in java so i know you need to struggle.

  4. #4
    Enthusiast Zegita is offline
    MemberRank
    Oct 2013 Join Date
    BeluslanLocation
    33Posts

    Re: Help with istance fix TiamatStrongHold

    And so far you've not shown the files you've been looking at, what you've tried etc.. give us all the steps you've tried and we will give you clues. We won't be giving you source code, you're in the emulation development section of ragezone, you should be showing us what you have done to drive your understanding better otherwise you won't learn anything.

  5. #5
    Apprentice ddmbest88 is offline
    MemberRank
    Nov 2013 Join Date
    14Posts

    Re: Help with istance fix TiamatStrongHold

    first of all, i never asked for sourcecode...
    second i have asked for clue where could i find insidethe source a similar thing so i could copy or watch...
    by the way here is the code..

    /**
    * This file is part of Aion-Lightning <aion-lightning.org>.
    *
    * Aion-Lightning 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.
    *
    * Aion-Lightning 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 Aion-Lightning.
    * If not, see <http://www.gnu.org/licenses/>.
    *
    *
    * Credits goes to all Open Source Core Developer Groups listed below
    * Please do not change here something, ragarding the developer credits, except the "developed by XXXX".
    * Even if you edit a lot of files in this source, you still have no rights to call it as "your Core".
    * Everybody knows that this Emulator Core was developed by Aion Lightning
    * @-Aion-Unique-
    * @-Aion-Lightning
    * @Aion-Engine
    * @Aion-Extreme
    * @Aion-NextGen
    * @Aion-Core Dev.
    */
    package instance;

    import com.aionemu.commons.network.util.ThreadPoolManager;
    import com.aionemu.commons.utils.Rnd;
    import com.aionemu.gameserver.ai2.AIState;
    import com.aionemu.gameserver.ai2.AbstractAI;
    import com.aionemu.gameserver.instance.handlers.GeneralInstanceHandler;
    import com.aionemu.gameserver.instance.handlers.InstanceID;
    import com.aionemu.gameserver.model.EmotionType;
    import com.aionemu.gameserver.model.drop.DropItem;
    import com.aionemu.gameserver.model.gameobjects.Creature;
    import com.aionemu.gameserver.model.gameobjects.Npc;
    import com.aionemu.gameserver.model.gameobjects.StaticDoor;
    import com.aionemu.gameserver.model.gameobjects.player.Player;
    import com.aionemu.gameserver.network.aion.serverpackets.SM_DIE;
    import com.aionemu.gameserver.network.aion.serverpackets.SM_EMOTION;
    import com.aionemu.gameserver.network.aion.serverpackets.SM_SYSTEM_MESSAGE;
    import com.aionemu.gameserver.services.NpcShoutsService;
    import com.aionemu.gameserver.services.drop.DropRegistrationService;
    import com.aionemu.gameserver.services.player.PlayerReviveService;
    import com.aionemu.gameserver.services.teleport.TeleportService2;
    import com.aionemu.gameserver.utils.PacketSendUtility;
    import com.aionemu.gameserver.world.WorldMapInstance;
    import com.aionemu.gameserver.world.zone.ZoneInstance;
    import com.aionemu.gameserver.world.zone.ZoneName;

    import java.util.Map;
    import java.util.Set;

    /**
    * @author Cheatkiller
    * @updated 4.3 Eloann
    */ @InstanceID(300510000)
    public class TiamatStrongHoldInstance extends GeneralInstanceHandler {

    private Map<Integer, StaticDoor> doors;
    private boolean isInstanceDestroyed;
    private int drakans;
    private boolean startSuramaEvent;
    boolean first=false,second=false,third=false;


    @Override
    public void onDie(Npc npc) {

    if (isInstanceDestroyed) {
    return;
    }
    switch (npc.getNpcId()) {
    case 730612:
    firstWave();
    break;
    case 219417:
    drakans++;

    if(drakans==4){
    firstWave();

    }
    if (drakans == 9) {
    secondWave();
    } else if (drakans == 15) {
    thirdWave();
    }
    break;
    case 219352: // Invincible Shabokan
    sendMsg(1401614);
    spawn(219308, 1175.65f, 1069.08f, 498.52f, (byte) 0); // satra special forces magicker
    spawn(701501, 1075.4409f, 1078.5071f, 787.685f, (byte) 16); // balaur medal box
    doors.get(48).setOpen(true);
    spawnKahrun();
    break;
    case 219357: // Adjutant Anuhart
    sendMsg(1401614);
    spawn(701501, 1077.1716f, 1058.1995f, 787.685f, (byte) 61); // balaur medal box
    doors.get(37).setOpen(true);
    isDeadBosses();
    break;
    case 219358: // Brigade General Tahabata
    sendMsg(1401614);
    spawn(701541, 677.35785f, 1069.5361f, 499.86716f, (byte) 0); // tahabata's treasure chest
    spawn(730622, 652.4821f, 1069.0302f, 498.7787f, (byte) 0, 82); // central passage teleport
    spawn(283180, 679.88f, 1068.88f, 504.2f, (byte) 119); // tiamat's eye
    isDeadBosses();
    break;
    case 219353: // Brigade General Chantra
    sendMsg(1401614);
    spawn(701501, 1071.5909f, 1040.6797f, 787.685f, (byte) 23); // balaur medal box
    doors.get(711).setOpen(true);
    isDeadBosses();
    break;
    case 219354: // Brigade General Terath
    sendMsg(1401614);
    spawn(283178, 1030.03f, 301.83f, 411f, (byte) 26); // tiamat's eye
    spawn(701501, 1086.274f, 1098.3997f, 787.685f, (byte) 90); // balaur medal box
    spawn(730622, 1029.792f, 267.0502f, 409.7982f, (byte) 0, 83); // central passage teleport
    isDeadBosses();
    break;
    case 219355: // Traitor Kumbanda
    sendMsg(1401614);
    spawn(701501, 1063.5973f, 1092.7402f, 787.685f, (byte) 107); // balaur medal box
    doors.get(51).setOpen(true);
    doors.get(54).setOpen(true);
    doors.get(78).setOpen(true);
    doors.get(11).setOpen(true);
    doors.get(79).setOpen(true);
    isDeadBosses();
    break;
    case 219356: // Brigade General Laksyaka
    sendMsg(1401614);
    spawn(701501, 1099.8691f, 1047.1895f, 787.685f, (byte) 64); // balaur medal box
    spawn(730622, 644.4221f, 1319.6221f, 488.7422f, (byte) 0, 15); // central passage teleport
    spawn(701527, 1073.948f, 1068.8732f, 787.685f, (byte) 61); // stronghold treasure chest
    spawn(800438, 665.63409f, 1319.7051f, 487.9f, (byte) 61); // murugan the loyal
    spawn(283179, 629.1f, 1319.5f, 501.2f, (byte) 0); // tiamat's eye
    isDeadBosses();
    break;
    }
    System.out.println("drakans:"+drakans);
    }

    private void firstWave() {
    if(!first) {
    first = true;
    ThreadPoolManager.getInstance().schedule(new Runnable() {
    @Override
    public void run() {
    despawnNpc(getNpc(730612)); //Protect Wall.
    despawnNpc(getNpc(800335)); //Kahrun (Reian Leader).
    despawnNpc(getNpc(219352)); //shabokan, must be firist defeat the waves
    despawnNpc(getNpc(800336)); //Kahrun in front of gates must defeat shab first
    despawnNpc(getNpc(800347)); //garnon in front of gates must defeat shab first
    attackPlayer((Npc) spawn(219417, 1505.09f, 1068.54f, 491.38f, (byte) 0));
    attackPlayer((Npc) spawn(219417, 1510.54f, 1058.04f, 491.5f, (byte) 0));
    attackPlayer((Npc) spawn(219417, 1517.38f, 1063.5f, 491.52f, (byte) 0));
    attackPlayer((Npc) spawn(219417, 1516.81f, 1073.6f, 491.52f, (byte) 0));
    attackPlayer((Npc) spawn(219417, 1510.41f, 1078.8f, 491.52f, (byte) 0));
    }
    }, 5000);
    }

    }

    private void secondWave() {
    if(!second) {
    second = true;
    attackPlayer((Npc) spawn(219417, 1426.08f, 1068.41f, 491.38f, (byte) 0));
    attackPlayer((Npc) spawn(219417, 1430.3f, 1061.13f, 491.5f, (byte) 0));
    attackPlayer((Npc) spawn(219417, 1428.5f, 1056.6f, 491.52f, (byte) 0));
    attackPlayer((Npc) spawn(219417, 1439.49f, 1058.5f, 491.4f, (byte) 0));
    attackPlayer((Npc) spawn(219417, 1430.3f, 1075.49f, 491.52f, (byte) 0));
    attackPlayer((Npc) spawn(219417, 1439.4f, 1078.6f, 491.4f, (byte) 0));
    attackPlayer((Npc) spawn(219417, 1428.5f, 1080.9f, 491.46f, (byte) 0));
    }

    }

    private void thirdWave() {
    if(!third) {
    third = true;
    attackPlayer((Npc) spawn(219417, 1296.1f, 1068.3f, 491.38f, (byte) 0));
    attackPlayer((Npc) spawn(219417, 1290.9f, 1059.13f, 491.5f, (byte) 0));
    attackPlayer((Npc) spawn(219417, 1300.6f, 1056.4f, 491.52f, (byte) 0));
    attackPlayer((Npc) spawn(219417, 1302.78f, 1053.55f, 491.4f, (byte) 0));
    attackPlayer((Npc) spawn(219417, 1290.94f, 1077.8f, 491.52f, (byte) 0));
    attackPlayer((Npc) spawn(219417, 1300.6f, 1080.3f, 491.4f, (byte) 0));
    attackPlayer((Npc) spawn(219417, 1302.78f, 1082.8f, 491.5f, (byte) 0));
    spawn(219352, 1216.7716f, 1068.9441f, 491.32993f, (byte) 0, 555); //shabokan
    }

    }

    private void attackPlayer(final Npc npc) {
    ThreadPoolManager.getInstance().schedule(new Runnable() {
    @Override
    public void run() {
    if (!isInstanceDestroyed) {
    for (Player player : instance.getPlayersInside()) {
    npc.setTarget(player);
    ((AbstractAI) npc.getAi2()).setStateIfNot(AIState.WALKING);
    npc.setState(1);
    npc.getMoveController().moveToTargetObject();
    PacketSendUtility.broadcastPacket(npc, new SM_EMOTION(npc, EmotionType.START_EMOTE2, 0, npc.getObjectId()));

    }
    }
    }
    }, 2000);
    }

    private void spawnKahrun() {
    ThreadPoolManager.getInstance().schedule(new Runnable() {
    @Override
    public void run() {
    moveToForward((Npc) spawn(800463, 1201.272f, 1074.5463f, 491f, (byte) 61), 1039.5f, 1075.9f, 497.3f, false); // elite reian fighter
    moveToForward((Npc) spawn(800463, 1201.272f, 1072.5137f, 491f, (byte) 61), 1130, 1072, 497.3f, false);
    moveToForward((Npc) spawn(800463, 1192.8656f, 1071.1085f, 491f, (byte) 61), 1112, 1070, 497, false);
    moveToForward((Npc) spawn(800463, 1201.272f, 1064.1759f, 491f, (byte) 61), 1039, 1061, 497.3f, false);
    moveToForward((Npc) spawn(800463, 1208.4175f, 1071.1797f, 491f, (byte) 61), 1133, 1072.5f, 497.3f, false);
    moveToForward((Npc) spawn(800463, 1192.8656f, 1068.3411f, 491f, (byte) 61), 1114, 1067, 496.7f, false);
    moveToForward((Npc) spawn(800463, 1208.4175f, 1068.3979f, 491f, (byte) 61), 1133.32f, 1066.47f, 497.3f, false);
    moveToForward((Npc) spawn(800463, 1201.272f, 1066.2085f, 491f, (byte) 61), 1128.8f, 1067, 497.3f, false);
    moveToForward((Npc) spawn(800380, 1190.323f, 1068.1558f, 491.03488f, (byte) 61), 1108, 1066, 497.3f, false); // elite reian sniper
    moveToForward((Npc) spawn(800374, 1188.4259f, 1066.4757f, 491.55029f, (byte) 61), 1094, 1064, 497.4f, true); // elite reian assaulter
    moveToForward((Npc) spawn(800374, 1188.2158f, 1074.2047f, 491.55029f, (byte) 61), 1092.5f, 1074.6f, 497.4f, true);
    moveToForward((Npc) spawn(800376, 1190.3859f, 1071.6548f, 491.03488f, (byte) 61), 1109, 1073, 497.2f, false); // elite reian assaulter
    moveToForward((Npc) spawn(800461, 1184.7582f, 1068.6f, 491.03488f, (byte) 61), 1111, 1068.6f, 497.33f, false); // sorus
    moveToForward((Npc) spawn(800460, 1184.7358f, 1070.77f, 491.03488f, (byte) 61), 1111, 1071, 497, false); // ariana
    moveToForward((Npc) spawn(800347, 1178.0425f, 1072.28f, 491.02545f, (byte) 61), 1106, 1072, 497.2f, false); // garnon
    moveToForward((Npc) spawn(800336, 1178.0559f, 1069.6f, 491.02545f, (byte) 61), 1104, 1069, 497, true); // kahrun
    }
    }, 7000);
    }

    private void moveToForward(final Npc npc, float x, float y, float z, boolean despawn) {
    ((AbstractAI) npc.getAi2()).setStateIfNot(AIState.WALKING);
    npc.setState(1);
    npc.getMoveController().moveToPoint(x, y, z);
    PacketSendUtility.broadcastPacket(npc, new SM_EMOTION(npc, EmotionType.START_EMOTE2, 0, npc.getObjectId()));
    System.out.println("DDM Checkpoint 2");
    if (despawn) {
    ThreadPoolManager.getInstance().schedule(new Runnable() {
    @Override
    public void run() {
    if (npc.getNpcId() == 800336) {
    spawn(800338, 1104, 1069f, 497, (byte) 61);
    Npc kahrun = getNpc(800338);
    NpcShoutsService.getInstance().sendMsg(kahrun, 1500599, kahrun.getObjectId(), 0, 1000);
    NpcShoutsService.getInstance().sendMsg(kahrun, 1500600, kahrun.getObjectId(), 0, 5000);

    }
    npc.getController().onDelete();
    }
    }, 13000);
    }
    }

    private void spawnColonels() {
    int rand = Rnd.get(0, 3);
    switch (rand) {
    case 0:
    spawn(219364, 763.4179f, 1445.6504f, 495.6519f, (byte) 90);
    spawn(219395, 893.7009f, 1445.4846f, 495.6421f, (byte) 90);
    spawn(219395, 893.3f, 1190.71f, 495.6f, (byte) 30);
    spawn(219395, 762.6f, 1192.1f, 495.6f, (byte) 30);
    break;
    case 1:
    spawn(219395, 763.4179f, 1445.6504f, 495.6519f, (byte) 90);
    spawn(219364, 893.7009f, 1445.4846f, 495.6421f, (byte) 90);
    spawn(219395, 893.3f, 1190.71f, 495.6f, (byte) 30);
    spawn(219395, 762.6f, 1192.1f, 495.6f, (byte) 30);
    break;
    case 2:
    spawn(219395, 763.4179f, 1445.6504f, 495.6519f, (byte) 90);
    spawn(219395, 893.7009f, 1445.4846f, 495.6421f, (byte) 90);
    spawn(219364, 893.3f, 1190.71f, 495.6f, (byte) 30);
    spawn(219395, 762.6f, 1192.1f, 495.6f, (byte) 30);
    break;
    case 3:
    spawn(219395, 763.4179f, 1445.6504f, 495.6519f, (byte) 90);
    spawn(219395, 893.7009f, 1445.4846f, 495.6421f, (byte) 90);
    spawn(219395, 893.3f, 1190.71f, 495.6f, (byte) 30);
    spawn(219364, 762.6f, 1192.1f, 495.6f, (byte) 30);
    break;
    }
    }

    private boolean isDeadBosses() {
    Npc boss = getNpc(219356); // Brigade General Laksyaka
    Npc boss1 = getNpc(219355); // Traitor Kumbanda
    Npc boss2 = getNpc(219354); // Brigade General Terath
    Npc boss3 = getNpc(219353); // Brigade General Chantra
    Npc boss4 = getNpc(219358); // Brigade General Tahabata
    Npc boss5 = getNpc(219357); // Adjutant Anuhart
    Npc boss6 = getNpc(219352); // Invincible Shabokan
    if (isDead(boss) && isDead(boss1) && isDead(boss2) && isDead(boss3)
    && isDead(boss4) && isDead(boss5) && isDead(boss6)) {
    spawn(800464, 1119.7076f, 1071.1401f, 496.8615f, (byte) 119); // reian sorcerer
    spawn(800465, 1119.7421f, 1068.4998f, 496.8616f, (byte) 3); // reian sorcerer
    spawn(730629, 1121.3807f, 1069.8124f, 500.3319f, (byte) 0, 555); // tiamat stronghold exit
    return true;
    }
    return false;
    }

    private boolean isDead(Npc npc) {
    return (npc == null || npc.getLifeStats().isAlreadyDead());
    }

    @Override
    public void onEnterZone(Player player, ZoneInstance zone) {
    if (zone.getAreaTemplate().getZoneName() == ZoneName.get("LAKSYAKA_LEGION_HQ_300510000")) {
    if (!startSuramaEvent) {
    startSuramaEvent = true;
    spawn(800433, 725.93f, 1319.9f, 490.7f, (byte) 61); // surama the traitor
    }
    }
    }

    @Override
    public void handleUseItemFinish(Player player, Npc npc) {
    switch (npc.getNpcId()) {
    case 701494: // research center access controller
    doors.get(22).setOpen(true);
    break;
    }
    }

    @Override
    public void onInstanceCreate(WorldMapInstance instance) {
    super.onInstanceCreate(instance);
    //spawn(800456, 1572.65f, 1058.53f, 492.01f, (byte) 0); //Kahrun (Reian Leader).
    doors = instance.getDoors();
    doors.get(610).setOpen(true);
    doors.get(20).setOpen(true);
    doors.get(706).setOpen(true);
    doors.get(48).setOpen(false);

    spawnColonels();
    spawn(800335, 1572.65f, 1058.53f, 492.01f, (byte) 0); //Kahrun (Reian Leader).
    despawnNpc(getNpc(730612)); //Protect Wall.
    firstWave();


    }

    @Override
    public void onInstanceDestroy() {
    isInstanceDestroyed = true;
    doors.clear();
    }

    @Override
    public boolean onDie(final Player player, Creature lastAttacker) {
    PacketSendUtility.broadcastPacket(player, new SM_EMOTION(player, EmotionType.DIE, 0, player.equals(lastAttacker) ? 0 : lastAttacker.getObjectId()), true);

    PacketSendUtility.sendPacket(player, new SM_DIE(player.haveSelfRezEffect(), player.haveSelfRezItem(), 0, 8));
    return true;
    }

    @Override
    public boolean onReviveEvent(Player player) {
    PlayerReviveService.revive(player, 25, 25, true, 0);
    player.getGameStats().updateStatsAndSpeedVisually();
    PacketSendUtility.sendPacket(player, SM_SYSTEM_MESSAGE.STR_REBIRTH_MASSAGE_ME);
    TeleportService2.teleportTo(player, mapId, instanceId, 1534.8584f, 1067.791f, 491.3514f, (byte) 60);
    return true;
    }

    @Override
    public void onDropRegistered(Npc npc) {
    Set<DropItem> dropItems = DropRegistrationService.getInstance().geCurrentDropMap().get(npc.getObjectId());
    int npcId = npc.getNpcId();
    switch (npcId) {
    case 701527: // stronghold treasure chest
    int index = dropItems.size() + 1;
    for (Player player : instance.getPlayersInside()) {
    if (player.isOnline()) {
    dropItems.add(DropRegistrationService.getInstance().regDropItem(index++, player.getObjectId(), npcId, 186000201, 1));
    dropItems.add(DropRegistrationService.getInstance().regDropItem(index++, player.getObjectId(), npcId, 186000147, 2));
    }
    }
    break;
    case 219363:
    dropItems.add(DropRegistrationService.getInstance().regDropItem(1, 0, npc.getNpcId(), 185000120, 1));
    break;
    case 219364:
    dropItems.add(DropRegistrationService.getInstance().regDropItem(1, 0, npc.getNpcId(), 185000121, 1));
    break;
    }
    }

    @Override
    public void onPlayerLogOut(Player player) {
    TeleportService2.moveToInstanceExit(player, mapId, player.getRace());
    }

    protected void despawnNpc(Npc npc) {
    if (npc != null) {
    npc.getController().onDelete();
    }
    }

    }



    as you see for now the only waqy i found to avoid the problem is not showing kahrun, despawn the wall and start first wave...

    - - - Updated - - -

    //spawn(800456, 1572.65f, 1058.53f, 492.01f, (byte) 0); //Kahrun (Reian Leader).
    this npc has a dialog...

    in my opinion somewhere there shouldbe a callback event of that dialog that i can call and interact... question is where? my knowledge of the logic of an aion emulator are still poor to understand...

  6. #6

    Re: Help with istance fix TiamatStrongHold

    ondialog implement an event?

  7. #7
    Apprentice ddmbest88 is offline
    MemberRank
    Nov 2013 Join Date
    14Posts

    Re: Help with istance fix TiamatStrongHold

    is it a question or suggestion?



Advertisement