Добавление квеста.

LifeANDeath

Heir
Customer
Добрый день. Вообщем хочу добавить квест новый на основе старого квеста на соски 257.
Скопировал квест , переделал, скомпелил. Квест загружается все ок. Берется у НПС. Загорается иконка квеста. Но самого квеста не видно в разделе квестов. Так же бью мобов которых прописал. дропа нет. Но если шифтануть их, то показывает что они участвуют в этом квесте.

Что я не сделал?

JavaScript:
package quests;

import l2.gameserver.model.instances.NpcInstance;
import l2.gameserver.model.quest.Quest;
import l2.gameserver.model.quest.QuestState;
import l2.gameserver.network.l2.components.IStaticPacket;
import l2.gameserver.network.l2.s2c.ExShowScreenMessage;
import l2.gameserver.scripts.ScriptFile;

public class _888_wings extends Quest implements ScriptFile {
    private static final int gilbert = 45050;

    private static final int bei = 9513;

    private static final int ORC_AMULET = 9512;

    private static final int ORC_NECKLACE = 9514;

    private static final int bej = 9515;

    public _888_wings() {
        super(0);
        addStartNpc(45050);
        addKillId(new int[] { 40035, 40036, 40037, 40038, 40039, 40040, 40041, 40042, 40043 });
        addQuestItem(new int[] { 9512, 9513, 9514, 9515 });
    }

    public void onLoad() {}

    public void onReload() {}

    public void onShutdown() {}

    public String onEvent(String paramString, QuestState paramQuestState, NpcInstance paramNpcInstance) {
        String str = paramString;
        if (paramString.equalsIgnoreCase("gilbert_q0257_03.htm")) {
            paramQuestState.setCond(1);
            paramQuestState.setState(2);
            paramQuestState.playSound("ItemSound.quest_accept");
            paramQuestState.takeItems(9513, -1L);
            paramQuestState.giveItems(9513, 1L);
        } else if (paramString.equalsIgnoreCase("257_2")) {
            str = "gilbert_q0257_05.htm";
            paramQuestState.takeItems(9513, -1L);
            paramQuestState.playSound("ItemSound.quest_finish");
            paramQuestState.exitCurrentQuest(true);
        } else if (paramString.equalsIgnoreCase("257_3")) {
            str = "gilbert_q0257_06.htm";
        }
        return str;
    }

    public String onTalk(NpcInstance paramNpcInstance, QuestState paramQuestState) {
        String str = "no-quest";
        int i = paramQuestState.getState();
        int j = paramNpcInstance.getNpcId();
        switch (i) {
            case 1:
                if (j == 45050) {
                    if (paramQuestState.getPlayer().getLevel() >= 6) {
                        str = "gilbert_q0257_02.htm";
                        break;
                    }
                    str = "gilbert_q0257_01.htm";
                    paramQuestState.exitCurrentQuest(true);
                }
                break;
            case 2:
                if (j == 45050) {
                    if (paramQuestState.getQuestItemsCount(9512) < 1L && paramQuestState.getQuestItemsCount(9513) < 1L && paramQuestState.getQuestItemsCount(9514) < 1L) {
                        str = "gilbert_q0257_04.htm";
                        break;
                    }
                    if (paramQuestState.getQuestItemsCount(9512) > 0L || paramQuestState.getQuestItemsCount(9513) > 0L || paramQuestState.getQuestItemsCount(9514) > 0L) {
                        str = "gilbert_q0257_07.htm";
                        if (paramQuestState.getQuestItemsCount(9512) + paramQuestState.getQuestItemsCount(9513) + paramQuestState.getQuestItemsCount(9514) >= 10L) {
                            paramQuestState.giveItems(57, 10L * paramQuestState.getQuestItemsCount(9512) + 20L * paramQuestState.getQuestItemsCount(9514) + 20L * paramQuestState.getQuestItemsCount(9514) + 1000L);
                        } else {
                            paramQuestState.giveItems(57, 10L * paramQuestState.getQuestItemsCount(9512) + 20L * paramQuestState.getQuestItemsCount(9514) + 20L * paramQuestState.getQuestItemsCount(9514));
                        }
                        paramQuestState.takeAllItems(new int[] { 9512, 9513, 9514 });
                        giveExtraReward(paramQuestState.getPlayer());
                        if (paramQuestState.getPlayer().getLevel() < 25 && paramQuestState.getPlayer().getClassId().getLevel() == 1 && !paramQuestState.getPlayer().getVarB("p1q2")) {
                            paramQuestState.getPlayer().setVar("p1q2", "1", -1L);
                            paramQuestState.getPlayer().sendPacket((IStaticPacket)new ExShowScreenMessage("Acquisition of Soulshot for beginners complete.\n Go find the Newbie Guide.", 5000, ExShowScreenMessage.ScreenMessageAlign.TOP_CENTER, true));
                            QuestState questState = paramQuestState.getPlayer().getQuestState(_255_Tutorial.class);
                            if (questState != null && questState.getInt("tutorial_quest_ex") != 10) {
                                paramQuestState.showQuestionMark(26);
                                questState.set("tutorial_quest_ex", "10");
                                if (paramQuestState.getPlayer().getClassId().isMage()) {
                                    paramQuestState.playTutorialVoice("tutorial_voice_027");
                                    paramQuestState.giveItems(5790, 3000L);
                                    break;
                                }
                                paramQuestState.playTutorialVoice("tutorial_voice_026");
                                paramQuestState.giveItems(5789, 6000L);
                            }
                        }
                    }
                }
                break;
        }
        return str;
    }

    public String onKill(NpcInstance paramNpcInstance, QuestState paramQuestState) {
        int i = paramNpcInstance.getNpcId();
        if (paramQuestState.getQuestItemsCount(95) > 0L && paramQuestState.getCond() > 0)
            if (i == 40035 || i == 40036 || i == 40037) {
                paramQuestState.rollAndGive(9512, 1, 50.0D);
            } else if (i == 40038 || i == 40039 || i == 40040) {
                paramQuestState.rollAndGive(9513, 1, 50.0D);
            } else if (i == 40041) {
                paramQuestState.rollAndGive(9514, 1, 33.0D);
            } else if (i == 40042) {
                paramQuestState.rollAndGive(9514, 1, 50.0D);
            } else if (i == 40043) {
                paramQuestState.rollAndGive(9514, 1, 75.0D);
            }
        return null;
    }
}
 
update понял что надо было в клиент еще добавлять квест.

Но вопрос почему итемы не падают...
 
Смотри что бы все загрузились, так же по шифт клику видно падает или нет
 
переделал другой квест. работает и дроп есть) спасибо) сейчас буду допиливать)
 
Может кому пригодится. 300 итемов и награда 1 итем
JavaScript:
package quests;

import l2.commons.util.Rnd;
import l2.gameserver.model.instances.NpcInstance;
import l2.gameserver.model.quest.Quest;
import l2.gameserver.model.quest.QuestState;
import l2.gameserver.scripts.ScriptFile;

public class _889_KeenClaws extends Quest implements ScriptFile {
    private static final int bes = 45050;

    private static final int bet = 9881;

    private static final int bev = 9513;

    private static final int bez = 9514;

    private static final int beA = 40060;

    private static final int[][] DROPLIST_COND = new int[][] { { 1, 2, 40060, 0, 9881, 300, 50, 1 } };

    public void onLoad() {}

    public void onReload() {}

    public void onShutdown() {}

    public _889_KeenClaws() {
        super(0);
        addStartNpc(45050);
        addKillId(new int[] { 40060 });
        addQuestItem(new int[] { 9881 });
    }

    public String onEvent(String paramString, QuestState paramQuestState, NpcInstance paramNpcInstance) {
        String str = paramString;
        if (paramString.equalsIgnoreCase("paint_q0264_03.htm")) {
            paramQuestState.setCond(1);
            paramQuestState.setState(2);
            paramQuestState.playSound("ItemSound.quest_accept");
        }
        return str;
    }

    public String onTalk(NpcInstance paramNpcInstance, QuestState paramQuestState) {
        String str = "noquest";
        int i = paramNpcInstance.getNpcId();
        int j = paramQuestState.getCond();
        if (i == 45050)
            if (j == 0) {
                if (paramQuestState.getPlayer().getLevel() >= 3) {
                    str = "paint_q0264_02.htm";
                } else {
                    paramQuestState.exitCurrentQuest(true);
                    return "paint_q0264_01.htm";
                }
            } else if (j == 1) {
                str = "paint_q0264_04.htm";
            } else if (j == 2) {
                paramQuestState.takeItems(9881, -1L);
                int k = Rnd.get(17);
                if (k == 0) {
                    paramQuestState.giveItems(48, 1L);
                    paramQuestState.playSound("ItemSound.quest_jackpot");
                } else {
                    paramQuestState.giveItems(9512, 1L);
                }
                str = "paint_q0264_05.htm";
                paramQuestState.playSound("ItemSound.quest_finish");
                giveExtraReward(paramQuestState.getPlayer());
                paramQuestState.exitCurrentQuest(true);
            }
        return str;
    }

    public String onKill(NpcInstance paramNpcInstance, QuestState paramQuestState) {
        int i = paramNpcInstance.getNpcId();
        int j = paramQuestState.getCond();
        for (byte b = 0; b < DROPLIST_COND.length; b++) {
            if (j == DROPLIST_COND[0] && i == DROPLIST_COND[2] && (DROPLIST_COND[3] == 0 || paramQuestState.getQuestItemsCount(DROPLIST_COND[3]) > 0L))
                if (DROPLIST_COND[5] == 0) {
                    paramQuestState.rollAndGive(DROPLIST_COND[4], DROPLIST_COND[7], DROPLIST_COND[6]);
                } else if (paramQuestState.rollAndGive(DROPLIST_COND[4], DROPLIST_COND[7], DROPLIST_COND[7], DROPLIST_COND[5], DROPLIST_COND[6]) && DROPLIST_COND[1] != j && DROPLIST_COND[1] != 0) {
                    paramQuestState.setCond(Integer.valueOf(DROPLIST_COND[1]).intValue());
                    paramQuestState.setState(2);
                }
        }
        return null;
    }
}
 
Новая проблема, квест не сохраняется после рестарта и релога на персонаже.. направьте плиз)
 
Back
Top