Показать сообщение отдельно
Непрочитано 06.10.2020, 19:37   #1
Пользователь

Автор темы (Топик Стартер) Нужна помощь с ошибкой Dominion_KillSpecialUnitQuest

Всем доброго дня! Посмотрел весь инет, у многих была такая же проблема 4-5 года назад, но решение данной проблемы никто не написал. Надеюсь кто знает поможет решить данную проблему.

При загрузке выводит данную проблему, как я понял квест относится к Территориальным войнам.

Код HTML:
ERROR Scripts: Failed running quests.Dominion_KillSpecialUnitQuest.onLoad()
java.lang.InstantiationException
        at sun.reflect.InstantiationExceptionConstructorAccessorImpl.newInstance(Unknown Source)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        at java.lang.Class.newInstance(Unknown Source)
        at l2p.gameserver.scripts.Scripts.init(Unknown Source)
        at l2p.gameserver.GameServer.<init>(Unknown Source)
        at l2p.gameserver.GameServer.main(Unknown Source)
Вот сам файл:
L2J\GameServer\data\scripts\quests\Dominion_KillSp ecialUnitQuest.java

Код HTML:
package quests;

import org.apache.commons.lang3.ArrayUtils;
import l2p.commons.util.Rnd;
import l2p.gameserver.data.xml.holder.EventHolder;
import l2p.gameserver.model.Player;
import l2p.gameserver.model.base.ClassId;
import l2p.gameserver.model.entity.events.EventType;
import l2p.gameserver.model.entity.events.impl.DominionSiegeEvent;
import l2p.gameserver.model.entity.events.impl.DominionSiegeRunnerEvent;
import l2p.gameserver.model.quest.Quest;
import l2p.gameserver.model.quest.QuestState;
import l2p.gameserver.serverpackets.components.NpcString;
import l2p.gameserver.serverpackets.ExShowScreenMessage;
import static l2p.gameserver.model.entity.events.impl.DominionSiegeEvent.STATIC_BADGES;
import l2p.gameserver.scripts.ScriptFile;

public abstract class Dominion_KillSpecialUnitQuest extends Quest implements ScriptFile  {

    private final ClassId[] _classIds;

    public Dominion_KillSpecialUnitQuest() {
        super(PARTY_NONE);

        _classIds = getTargetClassIds();
        DominionSiegeRunnerEvent runnerEvent = EventHolder.getInstance().getEvent(EventType.MAIN_EVENT, 1);
        for (ClassId c : _classIds) {
            runnerEvent.addClassQuest(c, this);
        }
    }

    protected abstract NpcString startNpcString();

    protected abstract NpcString progressNpcString();

    protected abstract NpcString doneNpcString();

    protected abstract int getRandomMin();

    protected abstract int getRandomMax();

    protected abstract ClassId[] getTargetClassIds();

    @Override
    public String onKill(Player killed, QuestState qs) {
        Player player = qs.getPlayer();
        if (player == null) {
            return null;
        }

        if (qs.getState() == COMPLETED) {
            return null;
        }

        DominionSiegeEvent event1 = player.getEvent(DominionSiegeEvent.class);
        if (event1 == null) {
            return null;
        }
        DominionSiegeEvent event2 = killed.getEvent(DominionSiegeEvent.class);
        if (event2 == null || event2 == event1) {
            return null;
        }

        if (!ArrayUtils.contains(_classIds, killed.getClassId())) {
            return null;
        }

        int max_kills = qs.getInt("max_kills");
        if (max_kills == 0) {
            qs.setState(STARTED);
            qs.setCond(1);

            max_kills = Rnd.get(getRandomMin(), getRandomMax());
            qs.set("max_kills", max_kills);
            qs.set("current_kills", 1);

            player.sendPacket(new ExShowScreenMessage(startNpcString(), 2000, ExShowScreenMessage.ScreenMessageAlign.TOP_CENTER, true, false, String.valueOf(max_kills)));
        } else {
            int current_kills = qs.getInt("current_kills") + 1;
            if (current_kills >= max_kills) {
                event1.addReward(player, STATIC_BADGES, 10);

                qs.setState(COMPLETED);
                qs.addExpAndSp(534000, 51000);
                qs.exitCurrentQuest(true);

                player.sendPacket(new ExShowScreenMessage(doneNpcString(), 2000, ExShowScreenMessage.ScreenMessageAlign.TOP_CENTER, true, false));
            } else {
                qs.set("current_kills", current_kills);
                player.sendPacket(new ExShowScreenMessage(progressNpcString(), 2000, ExShowScreenMessage.ScreenMessageAlign.TOP_CENTER, true, false, String.valueOf(max_kills), String.valueOf(current_kills)));
            }
        }

        return null;
    }

    @Override
    public boolean canAbortByPacket() {
        return false;
    }
}
RuSmith вне форума Ответить с цитированием