Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Квест Expulsion of Evil Spirits
#1
Подскажите, по данному квесту нужно бить итема

Поговорите с Sergeant Chairen в Den of Evil . Он просит вас убивать всех Ragna Orc и злых духов на территории Den of Evil, с них вы будете получать Ragna Orc's Amulet (Амулет Орка Рагна) и иногда (примерно 1 из 100 мобов) Soul Core Containing Evil Spirit:



Собрав 10 или более Soul Core Containing Evil Spirit (Ядро Злого Духа) их можно обменять у Sergeant Chairen на Protection Soul's Pendant (Подвеска Души Хранителя). Итем нужен для саммона мини-рб (соло рейд).
На юге Маяка вы увидите пещеру. Зайдите в нее и увидите летающий глаз Guardian of the Altar, который вызовет Вам Рейд-босса Dark Shaman Varangka (2) (82 ур.). Этот РБ 82 лвл достаточно сложный для соло, за счет его телепортов.

Проблема такая, после того как появился РБ Dark Shaman Varangka (2) (82 ур.) он не атакует, стоит на месте, как это поправить ?

PHP код:
<?php 
package quests
._311_ExpulsionOfEvilSpirits;

import l2n.extensions.scripts.ScriptFile;
import l2n.game.ThreadPoolManager;
import l2n.game.ai.CtrlEvent;
import l2n.game.instancemanager.ServerVariables;
import l2n.game.model.L2Multisell;
import l2n.game.model.L2ObjectsStorage;
import l2n.game.model.L2Player;
import l2n.game.model.instances.L2NpcInstance;
import l2n.game.model.quest.Quest;
import l2n.game.model.quest.QuestState;
import l2n.util.Location;
import l2n.util.Rnd;
import l2n.util.Util;

public class
_311_ExpulsionOfEvilSpirits extends Quest implements ScriptFile
{
// TODO дебаф в зоне с алтарём
// TODO AI для рб (рандомная телепортация)

// NPCs
private final static int CHAIREN = 32655;
private final static
int ALTAR = 18811;
private final static
int DARK_SHAMAN_VARANGKA = 18808;

// MONSTERs
private final static int[] MOBS = { 22691, 22692, 22693, 22694, 22695, 22696, 22697, 22698, 22699, 22700, 22701, 22702 };

// Items
private final static int SOUL_PENDANT = 14848;
private final static
int SOUL_CORE = 14881;
private final static
int RAGNA_ORCS_AMULET = 14882;

// Quest Items Drop Chance
private static int DROP_CHANCE1 = 1;
private static
int DROP_CHANCE2 = 40;

private static final
Location altarloc = new Location(74181, -101944, -967, 32767);

private static
L2NpcInstance _varangka;
private static
L2NpcInstance _altar;

public
_311_ExpulsionOfEvilSpirits()
{
super(311, PARTY_ONE);

addStartNpc(CHAIREN);
addTalkId(CHAIREN);

addAttackId(ALTAR);

addKillId(MOBS);
addKillId(DARK_SHAMAN_VARANGKA);

addQuestItem(SOUL_CORE, RAGNA_ORCS_AMULET, SOUL_PENDANT);

long respawnTime = ServerVariables.getLong(_311_ExpulsionOfEvilSpirits.class.getSimpleName(), 0);
if(
respawnTime == 0 || respawnTime - System.currentTimeMillis() < 0)
ThreadPoolManager.getInstance().scheduleGeneral(new AltarSpawn(), 5000);
else
ThreadPoolManager.getInstance().scheduleGeneral(new AltarSpawn(), respawnTime - System.currentTimeMillis());
}

@
Override
public String onEvent(String event, QuestState st, L2NpcInstance npc)
{
L2Player player = st.getPlayer();
if(
player == null)
return
null;

if(
event.equalsIgnoreCase("32655-2.htm"))
{
st.set("cond", "1");
st.setState(STARTED);
st.playSound(SOUND_ACCEPT);
}
else if(
event.equalsIgnoreCase("32655-4.htm"))
{
if(
st.getQuestItemsCount(RAGNA_ORCS_AMULET) >= 0)
{
L2Multisell.getInstance().separateAndSend(32655, player, 0);
return
null;
}
else
return
"32655-6b.htm";
}
else if(
event.equalsIgnoreCase("32655-5.htm"))
{
if(
st.getQuestItemsCount(SOUL_CORE) >= 10)
{
st.takeItems(SOUL_CORE, 10);
st.giveItems(SOUL_PENDANT, 1, false);
st.playSound(SOUND_ITEMGET);
}
else
return
"32655-5a.htm";
}
else if(
event.equalsIgnoreCase("32655-9.htm"))
{
if(
st.getQuestItemsCount(RAGNA_ORCS_AMULET) > 0 || st.getQuestItemsCount(SOUL_CORE) > 0)
return
"32655-9.htm";
else
{
st.exitCurrentQuest(true);
st.playSound(SOUND_FINISH);
return
"32655-10.htm";
}
}
else if(
event.equalsIgnoreCase("32655-10.htm"))
{
st.unset("cond");
st.exitCurrentQuest(true);
st.playSound(SOUND_FINISH);
}

return
event;
}

// сделал
@Override
public String onTalk(L2NpcInstance npc, QuestState st)
{
int npcId = npc.getNpcId();
int cond = st.getInt("cond");

if(
npcId == CHAIREN)
if(
cond == 0)
{
if(
st.getPlayer().getLevel() >= 80)
return
"32655-0.htm";
else
{
st.exitCurrentQuest(true);
return
"32655-0a.htm";
}
}
else if(
st.getState() == STARTED)
return
"32655-3.htm";

return
"noquest";
}

@
Override
public String onAttack(L2NpcInstance npc, QuestState st)
{
L2Player player = st.getPlayer();
if(
player == null)
return
null;

if(
st.getInt("cond") == 1)
if(
st.getQuestItemsCount(SOUL_PENDANT) > 0 && Rnd.chance(20))
if(
_varangka == null && L2ObjectsStorage.getByNpcId(DARK_SHAMAN_VARANGKA) == null)
{
_varangka = addSpawn(DARK_SHAMAN_VARANGKA, altarloc, 0, 0);
_varangka.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, player, Rnd.get(1, 100));
}

return
null;
}

// сделал
@Override
public String onKill(L2NpcInstance npc, QuestState st)
{
int npcId = npc.getNpcId();
int cond = st.getInt("cond");
L2Player player = st.getPlayer();
if(
player == null)
return
null;

if(
cond == 1 && Util.isInArray(npcId, MOBS))
{
if(
st.getQuestItemsCount(SOUL_CORE) < 10)
st.rollAndGive(SOUL_CORE, 1, DROP_CHANCE1);
if(
st.getQuestItemsCount(SOUL_CORE) == 10)
st.playSound(SOUND_MIDDLE);

st.rollAndGive(RAGNA_ORCS_AMULET, 3, DROP_CHANCE2);
}
else if(
cond == 1 && npcId == DARK_SHAMAN_VARANGKA)
{
st.takeItems(SOUL_PENDANT, 1);
_altar.doDie(player);
_altar = null;
_varangka = null;

long respawn = Rnd.get(14400000, 28800000);
ServerVariables.set(_311_ExpulsionOfEvilSpirits.class.getSimpleName(), String.valueOf(System.currentTimeMillis() + respawn));
ThreadPoolManager.getInstance().scheduleGeneral(new AltarSpawn(), respawn);
}

return
null;
}

/**
* спаунит алтарь
*/
private class AltarSpawn implements Runnable
{
@
Override
public void run()
{
if(
L2ObjectsStorage.getByNpcId(ALTAR) == null)
{
_altar = addSpawn(ALTAR, altarloc, 0, 0);
_altar.setInvul(true);
ServerVariables.unset(_311_ExpulsionOfEvilSpirits.class.getSimpleName());
}
}
}

@
Override
public void onLoad()
{
printInfo();
}

@
Override
public void onReload()
{}

@
Override
public void onShutdown()
{}
}


Думаю проблема в этом месте :

if(st.getQuestItemsCount(SOUL_PENDANT) > 0 && Rnd.chance(20))
if(_varangka == null && L2ObjectsStorage.getByNpcId(DARK_SHAMAN_VARANGKA) == null)
{
_varangka = addSpawn(DARK_SHAMAN_VARANGKA, altarloc, 0, 0);
_varangka.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSION, player, Rnd.get(1, 100));

Спасибо
Ответ
#2
всесто
_varangka.getAI().notifyEvent(CtrlEvent.EVT_AGGRES SION, player, Rnd.get(1, 100));
сделайте ему бо-бо (нанесите 1-100 урона и ненависти) обычно это метод addDamageHate()
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  НПС не дает квест Dilar 1 1,623 03-20-2018, 08:17 PM
Последний пост: Emperor
  Квест 7 печатей как включить, как управлять! v1kt0r 5 2,936 04-29-2017, 01:17 PM
Последний пост: zGoSu
  Квест 7 печатей. Гварды не видят под шд CKREPKA 3 1,980 08-06-2015, 02:49 AM
Последний пост: Deazer
  квест, концепция, структура, логика mountaineer 2 1,746 07-31-2015, 08:01 PM
Последний пост: DroNik
  Квест JokerMaxi 8 2,450 09-03-2014, 04:30 AM
Последний пост: JokerMaxi
  Не отображается квест в квестах, помогите. the2fantasy 6 1,696 11-27-2013, 10:32 AM
Последний пост: the2fantasy
  Вопрос о скрипте java (квест\аи) Main 14 3,130 11-02-2013, 01:54 PM
Последний пост: Main
  Укороченный Квест На Нубл Saintly 3 3,928 10-06-2013, 01:10 PM
Последний пост: Saintly
  Квест 1megalord1 5 2,042 02-01-2013, 12:10 AM
Последний пост: ExLite
  Jython ошибка синтакса(клан квест) GRAFOON 13 2,466 01-09-2013, 04:33 PM
Последний пост: Anikey

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)