• Новые темы в этом разделе публикуются автоматически при добавлении файла в менеджер ресурсов.
    Ручное создание новых тем невозможно.
Иконка ресурса

[Grand Crusade]L2JUnity-Private


В чём прикол?
Shot00000.jpg Screenshot.jpg
Код:
[2018-03-02 03:57:53,281] [nioEventLoopGroup-4-1] [WARN] o.l.g.c.HtmCache: Missing HTML page: data/scripts/org/l2junity/scripts/quests/Q10358_DividedSakumPoslof/33510-02.htm
Код:
/*
 * Copyright (C) 2004-2016 L2J Unity
 *
 * This file is part of L2J Unity.
 *
 * L2J Unity 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.
 *
 * L2J Unity 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 this program. If not, see <http://www.gnu.org/licenses/>.
 */
package org.l2junity.scripts.quests.Q10358_DividedSakumPoslof;

import java.util.HashSet;
import java.util.Set;

import org.l2junity.gameserver.enums.QuestSound;
import org.l2junity.gameserver.model.actor.Npc;
import org.l2junity.gameserver.model.actor.instance.PlayerInstance;
import org.l2junity.gameserver.model.holders.NpcLogListHolder;
import org.l2junity.gameserver.model.quest.Quest;
import org.l2junity.gameserver.model.quest.QuestState;
import org.l2junity.gameserver.model.quest.State;

import org.l2junity.scripts.quests.Q10337_SakumsImpact.Q10337_SakumsImpact;

/**
 * Divided Sakum, Poslof (10358)
 * @author St3eT
 */
public final class Q10358_DividedSakumPoslof extends Quest
{
    // NPCs
    private static final int LEF = 33510;
    private static final int ADVENTURER_GUIDE = 31795;
    private static final int ZOMBIE_WARRIOR = 20458;
    private static final int VEELEAN = 20402; // Veelan Bugbear Warrior
    private static final int POSLOF = 27452;
    // Items
    private static final int SAKUM_SKETCH = 17585;
    // Misc
    private static final int MIN_LEVEL = 33;
    private static final int MAX_LEVEL = 40;
   
    public Q10358_DividedSakumPoslof()
    {
        super(10358);
        addStartNpc(LEF);
        addTalkId(LEF, ADVENTURER_GUIDE);
        addKillId(ZOMBIE_WARRIOR, VEELEAN, POSLOF);
        registerQuestItems(SAKUM_SKETCH);
        addCondCompletedQuest(Q10337_SakumsImpact.class.getSimpleName(), "33510-09.htm");
        addCondLevel(MIN_LEVEL, MAX_LEVEL, "33510-09.htm");
    }
   
    @Override
    public String onAdvEvent(String event, Npc npc, PlayerInstance player)
    {
        final QuestState st = getQuestState(player, false);
        if (st == null)
        {
            return null;
        }
       
        String htmltext = null;
        switch (event)
        {
            case "33510-02.htm":
            case "31795-04.htm":
            {
                htmltext = event;
                break;
            }
            case "33510-03.htm":
            {
                st.startQuest();
                htmltext = event;
                break;
            }
            case "31795-05.htm":
            {
                if (st.isCond(4))
                {
                    if ((player.getLevel() >= MIN_LEVEL))
                    {
                        addExp(player, 750_000);
                        addSp(player, 180);
                        st.exitQuest(false, true);
                        htmltext = event;
                    }
                    else
                    {
                        htmltext = getNoQuestLevelRewardMsg(player);
                    }
                }
                break;
            }
        }
        return htmltext;
    }
   
    @Override
    public String onTalk(Npc npc, PlayerInstance player, boolean isSimulated)
    {
        String htmltext = getNoQuestMsg(player);
        final QuestState st = getQuestState(player, true);
       
        switch (st.getState())
        {
            case State.CREATED:
            {
                htmltext = npc.getId() == LEF ? "33510-01.htm" : "31795-02.htm";
                break;
            }
            case State.STARTED:
            {
                switch (st.getCond())
                {
                    case 1:
                    {
                        htmltext = npc.getId() == LEF ? "33510-04.htm" : "31795-01.htm";
                        break;
                    }
                    case 2:
                    {
                        if (npc.getId() == LEF)
                        {
                            if (!isSimulated)
                            {
                                st.setCond(3);
                                giveItems(player, SAKUM_SKETCH, 1);
                            }
                            htmltext = "33510-05.htm";
                        }
                        else if (npc.getId() == ADVENTURER_GUIDE)
                        {
                            htmltext = "31795-01.htm";
                        }
                        break;
                    }
                    case 3:
                    {
                        htmltext = npc.getId() == LEF ? "33510-06.htm" : "31795-01.htm";
                        break;
                    }
                    case 4:
                    {
                        htmltext = npc.getId() == LEF ? "33510-07.htm" : "31795-03.htm";
                        break;
                    }
                }
                break;
            }
            case State.COMPLETED:
            {
                htmltext = npc.getId() == LEF ? "33510-08.htm" : "31795-06.htm";
                break;
            }
        }
        return htmltext;
    }
   
    @Override
    public String onKill(Npc npc, PlayerInstance killer, boolean isSummon)
    {
        final QuestState st = getQuestState(killer, false);
       
        if ((st != null) && st.isStarted())
        {
            if (st.isCond(1))
            {
                int killedZombies = st.getInt("killed_" + ZOMBIE_WARRIOR);
                int killedVeelans = st.getInt("killed_" + VEELEAN);
               
                if (npc.getId() == ZOMBIE_WARRIOR)
                {
                    if (killedZombies < 20)
                    {
                        killedZombies++;
                        st.set("killed_" + ZOMBIE_WARRIOR, killedZombies);
                        playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
                    }
                }
                else
                {
                    if (killedVeelans < 23)
                    {
                        killedVeelans++;
                        st.set("killed_" + VEELEAN, killedVeelans);
                        playSound(killer, QuestSound.ITEMSOUND_QUEST_ITEMGET);
                    }
                }
               
                if ((killedZombies == 20) && (killedVeelans == 23))
                {
                    st.setCond(2, true);
                }
                sendNpcLogList(killer);
            }
            else if (st.isCond(3))
            {
                st.set("killed_" + POSLOF, 1);
                st.setCond(4);
            }
        }
        return super.onKill(npc, killer, isSummon);
    }
   
    @Override
    public Set<NpcLogListHolder> getNpcLogList(PlayerInstance activeChar)
    {
        final QuestState st = getQuestState(activeChar, false);
        if ((st != null) && st.isStarted())
        {
            if (st.isCond(1))
            {
                final Set<NpcLogListHolder> npcLogList = new HashSet<>(2);
                npcLogList.add(new NpcLogListHolder(ZOMBIE_WARRIOR, false, st.getInt("killed_" + ZOMBIE_WARRIOR)));
                npcLogList.add(new NpcLogListHolder(VEELEAN, false, st.getInt("killed_" + VEELEAN)));
                return npcLogList;
            }
            else if (st.isCond(3))
            {
                final Set<NpcLogListHolder> npcLogList = new HashSet<>(1);
                npcLogList.add(new NpcLogListHolder(POSLOF, false, st.getInt("killed_" + POSLOF)));
                return npcLogList;
            }
        }
        return super.getNpcLogList(activeChar);
    }
}
 
Проверь кодировку этого файла. Возможно UTF16-LE. Если файл физически существует, то проблемы с чтение содержимого. Ошибка в логе не только по отсутствию файла, но и по null содержимому.
 
  • Мне нравится
Реакции: Psycho

    Psycho

    Баллов: 38
    За эпический ответ
Проверь кодировку этого файла. Возможно UTF16-LE. Если файл физически существует, то проблемы с чтение содержимого. Ошибка в логе не только по отсутствию файла, но и по null содержимому.
Так и есть, была кодировка ansi.
 
Как заставить зайти на классик?
Нашел вот такое:
Код:
    public static int getServerTypeId(String[] serverTypes)
    {
        int serverType = 0;
        for (String cType : serverTypes)
        {
            switch (cType.trim().toLowerCase())
            {
                case "normal":
                    serverType |= 0x01;
                    break;
                case "relax":
                    serverType |= 0x02;
                    break;
                case "test":
                    serverType |= 0x04;
                    break;
                case "broad":
                    serverType |= 0x08;
                    break;
                case "restricted":
                    serverType |= 0x10;
                    break;
                case "event":
                    serverType |= 0x20;
                    break;
                case "free":
                    serverType |= 0x40;
                    break;
                case "world":
                    serverType |= 0x100;
                    break;
                case "new":
                    serverType |= 0x200;
                    break;
                case "classic":
                    serverType |= 0x400;
                    break;
            }
        }
        return serverType;
    }
Если я int serverType = 9; укажу, прокатит?
 
Последнее редактирование:
Как заставить зайти на классик?
Нашел вот такое:
Код:
    public static int getServerTypeId(String[] serverTypes)
    {
        int serverType = 0;
        for (String cType : serverTypes)
        {
            switch (cType.trim().toLowerCase())
            {
                case "normal":
                    serverType |= 0x01;
                    break;
                case "relax":
                    serverType |= 0x02;
                    break;
                case "test":
                    serverType |= 0x04;
                    break;
                case "broad":
                    serverType |= 0x08;
                    break;
                case "restricted":
                    serverType |= 0x10;
                    break;
                case "event":
                    serverType |= 0x20;
                    break;
                case "free":
                    serverType |= 0x40;
                    break;
                case "world":
                    serverType |= 0x100;
                    break;
                case "new":
                    serverType |= 0x200;
                    break;
                case "classic":
                    serverType |= 0x400;
                    break;
            }
        }
        return serverType;
    }
Если я int serverType = 9; укажу, прокатит?
Этот конфиг должен генерироваться при первом запуске сервера в General.properties, там поставь Classic и все
 
  • Мне нравится
Реакции: Psycho

    Psycho

    Баллов: 40
    За ответ
Этот конфиг должен генерироваться при первом запуске сервера в General.properties, там поставь Classic и все
Подскажи, из-за чего бафы не отображаются(показывает только 1 баф и вечные 0 сек), скилы пустые в изучении(хотя правил скил трее). Запустил как классик. Это пакетка или как?
Скрин дать сейчас не могу, делаю ремонт, комп отключил.
 
Обновите ссылку пожалуйста.
 
Подскажи, из-за чего бафы не отображаются(показывает только 1 баф и вечные 0 сек), скилы пустые в изучении(хотя правил скил трее). Запустил как классик. Это пакетка или как?
Скрин дать сейчас не могу, делаю ремонт, комп отключил.
Апну вопрос. Мб кто-то шарит?
 
Пакеты другие для классика их нужно править.
 
глупый вопрос, но все же, какой клиент нужен под сие чудо?
Когда тестил заходил с обычного GC, вроде бы 109 протокол(там в конфигах по дефолту стоит или 109 или 110) поставь просто тот который у тебя в клиенте
 
странно скачал именно по ссылке, в конфигах
Код:
# Numbers of protocol revisions that server allows to connect.
# Delimiter is ;
# WARNING: <u><b><font color="red">Changing the protocol revision may result in incompatible communication and many errors in game!</font></b></u>
# Default: 28
AllowedProtocolRevisions = 28
 
странно скачал именно по ссылке, в конфигах
Код:
# Numbers of protocol revisions that server allows to connect.
# Delimiter is ;
# WARNING: <u><b><font color="red">Changing the protocol revision may result in incompatible communication and many errors in game!</font></b></u>
# Default: 28
AllowedProtocolRevisions = 28
Не знаю что вы там скачали, в оригинальном виде там 110
 
странно скачал именно по ссылке, в конфигах
Код:
# Numbers of protocol revisions that server allows to connect.
# Delimiter is ;
# WARNING: <u><b><font color="red">Changing the protocol revision may result in incompatible communication and many errors in game!</font></b></u>
# Default: 28
AllowedProtocolRevisions = 28
Ты скачал видимо из раздела Download, там лежит компил 2016-06-04, вот там как раз 28 протокол
 
Ты скачал видимо из раздела Download, там лежит компил 2016-06-04, вот там как раз 28 протокол
Ну да) там же черным по белому написано "загрузки")
А как там скачать актуальную хрень?
 
Назад
Сверху Снизу