Квест Expulsion of Evil Spirits - Форум администраторов игровых серверов
Форум администраторов игровых серверов StormWall - Защита от DDos атак
Регистрация Мнения Справка Сообщество Календарь
Вернуться   Форум администраторов игровых серверов > MMO > Lineage II > Работа со скриптами

Работа со скриптами Помощь в редактировании и написании квестов к Java серверам, а так же эвентов.
Описание темы:Gracia Epilogue

Ответ
Опции темы
Непрочитано 27.08.2011, 14:20   #1
Аватар для Kabanitos
Пользователь

Автор темы (Топик Стартер) Квест Expulsion of Evil Spirits

Подскажите, по данному квесту нужно бить итема

Поговорите с 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 код:
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 = { 226912269222693226942269522696226972269822699227002270122702 };

    
// 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, -96732767);

    private static 
L2NpcInstance _varangka;
    private static 
L2NpcInstance _altar;

    public 
_311_ExpulsionOfEvilSpirits()
    {
        
super(311PARTY_ONE);

        
addStartNpc(CHAIREN);
        
addTalkId(CHAIREN);

        
addAttackId(ALTAR);

        
addKillId(MOBS);
        
addKillId(DARK_SHAMAN_VARANGKA);

        
addQuestItem(SOUL_CORERAGNA_ORCS_AMULETSOUL_PENDANT);

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

    @
Override
    
public String onEvent(String eventQuestState stL2NpcInstance 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(32655player0);
                return 
null;
            }
            else
                return 
"32655-6b.htm";
        }
        else if(
event.equalsIgnoreCase("32655-5.htm"))
        {
            if(
st.getQuestItemsCount(SOUL_CORE) >= 10)
            {
                
st.takeItems(SOUL_CORE10);
                
st.giveItems(SOUL_PENDANT1false);
                
st.playSound(SOUND_ITEMGET);
            }
            else
                return 
"32655-5a.htm";
        }
        else if(
event.equalsIgnoreCase("32655-9.htm"))
        {
            if(
st.getQuestItemsCount(RAGNA_ORCS_AMULET) > || 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 npcQuestState 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 npcQuestState st)
    {
        
L2Player player st.getPlayer();
        if(
player == null)
            return 
null;

        if(
st.getInt("cond") == 1)
            if(
st.getQuestItemsCount(SOUL_PENDANT) > && Rnd.chance(20))
                if(
_varangka == null && L2ObjectsStorage.getByNpcId(DARK_SHAMAN_VARANGKA) == null)
                {
                    
_varangka addSpawn(DARK_SHAMAN_VARANGKAaltarloc00);
                    
_varangka.getAI().notifyEvent(CtrlEvent.EVT_AGGRESSIONplayerRnd.get(1100));
                }

        return 
null;
    }

    
// СЃРґРµР»Р°Р»
    
@Override
    
public String onKill(L2NpcInstance npcQuestState st)
    {
        
int npcId npc.getNpcId();
        
int cond st.getInt("cond");
        
L2Player player st.getPlayer();
        if(
player == null)
            return 
null;

        if(
cond == && Util.isInArray(npcIdMOBS))
        {
            if(
st.getQuestItemsCount(SOUL_CORE) < 10)
                
st.rollAndGive(SOUL_CORE1DROP_CHANCE1);
            if(
st.getQuestItemsCount(SOUL_CORE) == 10)
                
st.playSound(SOUND_MIDDLE);

            
st.rollAndGive(RAGNA_ORCS_AMULET3DROP_CHANCE2);
        }
        else if(
cond == && npcId == DARK_SHAMAN_VARANGKA)
        {
            
st.takeItems(SOUL_PENDANT1);
            
_altar.doDie(player);
            
_altar null;
            
_varangka null;

            
long respawn Rnd.get(1440000028800000);
            
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(ALTARaltarloc00);
                
_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_AGGRES SION, player, Rnd.get(1, 100));

Спасибо
Kabanitos вне форума Ответить с цитированием
Непрочитано 27.08.2011, 14:23   #2
Аватар для Azagthtot
Эксперт

По умолчанию Re: Квест Expulsion of Evil Spirits

всесто
_varangka.getAI().notifyEvent(CtrlEvent.EVT_AGGRES SION, player, Rnd.get(1, 100));
сделайте ему бо-бо (нанесите 1-100 урона и ненависти) обычно это метод addDamageHate()
Azagthtot вне форума Отправить сообщение для Azagthtot с помощью ICQ Отправить сообщение для Azagthtot с помощью Skype™ Ответить с цитированием
Сказали спасибо:
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Goog Vs Evil мод NooboAdm Lineage II 1 08.12.2010 18:27
Квест UFODriverr Lineage II 6 26.11.2010 22:32
Квест Shema Серверная часть 0 10.04.2010 12:32
Квест Rayon Lineage II 5 20.09.2008 21:58


© 2007–2024 «Форум администраторов игровых серверов»
Защита сайта от DDoS атак — StormWall
Работает на Булке неизвестной версии с переводом от zCarot
Текущее время: 10:43. Часовой пояс GMT +3.

Вверх