Перейти к содержанию
Авторизация  
Oliveshka

Локации 75+ (Эпилог), Тиата с ХФ

Рекомендуемые сообщения

Опять нужна ваша помощь. Исходы Емурт с дороботками (l2jdev). 
Наткнулся на то, что локации для лоу лвл не грузятся и NPC соответственно. 
Например: Пещера Гигантов, пришел 55 лвл, но там всё для 75+. Квест не даёт пишет мал уровнем. NpcInstance - очень большой код. 

Пошел искать, что и где, нашел сам квест - всё норм, все нпц итемы и ограничения по лвлу есть. А всё остальное просто не могу найти. 

Спойлер

package quests;

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

/**
 * Квест проверен и работает, рейты применены путем увеличения шанса выпадения
 * квестовых вещей
 */
public class _376_GiantsExploration1 extends Quest implements ScriptFile {

    @Override
    public void onLoad() {
    }

    @Override
    public void onReload() {
    }

    @Override
    public void onShutdown() {
    }

    // Ancient parchment drop rate in %
    private static final int DROP_RATE = 3;
    // Mysterious Book drop rate in %
    private static final int DROP_RATE_BOOK = 1;
    // Quest items
    private static final int ANCIENT_PARCHMENT = 14841;
    private static final int DICT1 = 5891;
    private static final int DICT2 = 5892; // Given as a proof for 2nd part
    private static final int MST_BK = 5890;
    private static final int[][] EXCHANGE = {
        // collection items list, rnd_1, rnd_2
        {5937, 5938, 5939, 5940, 5941}, {5346, 5354},
        // medical theory, tallum_tunic, tallum_hose
        {5932, 5933, 5934, 5935, 5936}, {5332, 5334},
        // architecture, drk_crstl_leather,tallum_leather
        {5922, 5923, 5924, 5925, 5926}, {5416, 5418},
        // golem plans, drk_crstl_breastp,tallum_plate
        {5927, 5928, 5929, 5930, 5931}, {5424, 5340}
    // basics of magic,drk_crstl_gaiters,dark_crystal_legg
    };
    // NPCs
    private static final int HR_SOBLING = 31147;
    private static final int WF_CLIFF = 30182;
    // Mobs
    private static final int[] MOBS = {
        // список мобов для квеста
        22670,
        // Cursed Lord L80
        22671,
        // Cursed Guardian L80
        22672,
        // Cursed Seer L80
        22673,
        // Hirokai L80
        22674,
        // Imagro L80
        22675,
        // Palit L80
        22676,
        // Hamlet L80
        22677, // Klennot L80
    };

    public _376_GiantsExploration1() {
        super(true);
        addStartNpc(HR_SOBLING);
        addTalkId(WF_CLIFF);
        addKillId(MOBS);
        addQuestItem(DICT1, MST_BK);
    }

    @Override
    public String onEvent(String event, QuestState st, NpcInstance npc) {
        String htmltext = event;
        int cond = st.getCond();
        if (event.equalsIgnoreCase("yes")) {
            htmltext = "Starting.htm";
            st.setState(STARTED);
            st.setCond(1);
            st.giveItems(DICT1, 1);
            st.playSound(SOUND_ACCEPT);
        } else if (event.equalsIgnoreCase("no")) {
            htmltext = "ext_msg.htm";
            st.playSound(SOUND_FINISH);
            st.exitCurrentQuest(true);
        } else if (event.equalsIgnoreCase("show")) {
            htmltext = "no_items.htm";
            for (int i = 0; i < EXCHANGE.length; i = i + 2) {
                long count = Long.MAX_VALUE;
                for (int j : EXCHANGE[i]) {
                    count = Math.min(count, st.getQuestItemsCount(j));
                }
                if (count >= 1) {
                    htmltext = "tnx4items.htm";
                    for (int j : EXCHANGE[i]) {
                        st.takeItems(j, count);
                    }
                    for (int l = 0; l < count; l++) {
                        int item = EXCHANGE[i + 1][Rnd.get(EXCHANGE[i + 1].length)];
                        st.giveItems(item, 1);
                    }
                }
            }
        } else if (event.equalsIgnoreCase("myst")) {
            if (st.getQuestItemsCount(MST_BK) > 0) {
                if (cond == 1) {
                    st.setState(STARTED);
                    st.setCond(2);
                    htmltext = "go_part2.htm";
                } else if (cond == 2) {
                    htmltext = "gogogo_2.htm";
                }
            } else {
                htmltext = "no_part2.htm";
            }
        }
        return htmltext;
    }

    @Override
    public String onTalk(NpcInstance npc, QuestState st) {
        String htmltext = "noquest";
        int npcId = npc.getNpcId();
        int id = st.getState();
        int cond = st.getCond();
        if (npcId == HR_SOBLING) {
            if (id == CREATED) {
                if (st.getPlayer().getLevel() < 75) {
                    st.exitCurrentQuest(true);
                    htmltext = "error_1.htm";
                } else {
                    htmltext = "start.htm";
                }
            } else if (id == STARTED) {
                if (st.getQuestItemsCount(ANCIENT_PARCHMENT) != 0) {
                    htmltext = "checkout2.htm";
                } else {
                    htmltext = "checkout.htm";
                }
            }
        } else if (npcId == WF_CLIFF) {
            if (cond == 2 & st.getQuestItemsCount(MST_BK) > 0) {
                htmltext = "ok_part2.htm";
                st.takeItems(MST_BK, -1);
                st.giveItems(DICT2, 1);
                st.setCond(3);
                st.playSound(SOUND_MIDDLE);
            }
        }
        return htmltext;
    }

    @Override
    public String onKill(NpcInstance npc, QuestState st) {
        int cond = st.getCond();
        QuestState st1 = getRandomPartyMemberWithQuest(st.getPlayer(), cond);
        if (st1.getCond() > 0) {
            if (Rnd.chance(DROP_RATE)) {
                st1.giveItemsDrop(ANCIENT_PARCHMENT, 1, true);
                st1.playSound(SOUND_ITEMGET);
            }
            if (st1.getCond() == 1) {
                if (Rnd.chance(DROP_RATE_BOOK)) {
                    st1.giveItemsDrop(MST_BK, 1, true);
                    st1.playSound(SOUND_ITEMGET);
                }
            }
        }
        return null;
    }
}

 

Подскажите или тыкните пальцем, я не понимаю куда смотреть. 
Либо нету проверки на лвл при заходе в локу либо её и вовсе нету.
Сколько возьмёт кодер, что бы восстановить эти моменты или хотя бы показать?

И про Тиату, юзал исходники ХФ скинутые до эпилога. Там заметил, что вся инстанса работает как надо.
Если такая возможность как впихнуть её в другую сборку? Сколько берут за такую работу?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дико извиняюсь, исходы *Epilogue j2dev.ru (ex emurt)

Изменено пользователем Oliveshka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...