Mizuwokiru 181 Опубликовано 23 мая, 2014 ERROR Scripts: Failed running quests.Dominion_KillSpecialUnitQuest.onLoad() java.lang.InstantiationException Если загружаеться через джарку ошибка есть, если через откритый .java то проблемы нет Кинь исходник класса сюда. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
gigilo1968 46 Опубликовано 23 мая, 2014 вот весь класс public abstract class Dominion_KillSpecialUnitQuest extends Quest implements ScriptFile { private final ClassId[] _classIds; public Dominion_KillSpecialUnitQuest() { super(PARTY_ALL); _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; DominionSiegeEvent event1 = player.getEvent(DominionSiegeEvent.class); if(event1 == null) return null; DominionSiegeEvent event2 = killed.getEvent(DominionSiegeEvent.class); if(event2 == null || event2 == event1) return null; player.sendMessage("Dominion_KillSpecialUnitQuest"); if(!ArrayUtils.contains(_classIds, killed.getClassId())) return null; player.sendMessage("Dominion_KillSpecialUnitQuest"); int max_kills = qs.getInt("max_kills"); Party party = player.getParty(); try { if(party != null) { for(Player member : party.getPartyMembers()) { QuestState st = member.getQuestState(getClass()); if(max_kills == 0) { st.setState(STARTED); st.setCond(1); max_kills = Rnd.get(getRandomMin(), getRandomMax()); st.set("max_kills", max_kills); st.set("current_kills", 1); member.sendPacket(new ExShowScreenMessage(startNpcString(), 2000, ExShowScreenMessage.ScreenMessageAlign.TOP_CENTER, true, false, String.valueOf(max_kills))); } else { if(st != null) { int current_kills; if(st.getInt("current_kills") > 0) current_kills = st.getInt("current_kills") + 1; else current_kills = 1; if(current_kills >= max_kills) { event1.addReward(member, DominionSiegeEvent.STATIC_BADGES, 15); st.setState(COMPLETED); st.addExpAndSp(2670000, 105000); st.exitCurrentQuest(true); member.sendPacket(new ExShowScreenMessage(doneNpcString(), 2000, ExShowScreenMessage.ScreenMessageAlign.TOP_CENTER, true, false)); } else { st.set("current_kills", current_kills); member.sendPacket(new ExShowScreenMessage(progressNpcString(), 2000, ExShowScreenMessage.ScreenMessageAlign.TOP_CENTER, true, false, String.valueOf(max_kills), String.valueOf(current_kills))); } } } } } else { 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, DominionSiegeEvent.STATIC_BADGES, 15); 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))); } } } } catch(Exception e) { } return null; } @Override public boolean canAbortByPacket() { return false; } @Override public void onLoad() { } @Override public void onReload() { } @Override public void onShutdown() { } } Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Mizuwokiru 181 Опубликовано 23 мая, 2014 (изменено) вот весь класс public abstract class Dominion_KillSpecialUnitQuest extends Quest implements ScriptFile { private final ClassId[] _classIds; public Dominion_KillSpecialUnitQuest() { super(PARTY_ALL); _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; DominionSiegeEvent event1 = player.getEvent(DominionSiegeEvent.class); if(event1 == null) return null; DominionSiegeEvent event2 = killed.getEvent(DominionSiegeEvent.class); if(event2 == null || event2 == event1) return null; player.sendMessage("Dominion_KillSpecialUnitQuest"); if(!ArrayUtils.contains(_classIds, killed.getClassId())) return null; player.sendMessage("Dominion_KillSpecialUnitQuest"); int max_kills = qs.getInt("max_kills"); Party party = player.getParty(); try { if(party != null) { for(Player member : party.getPartyMembers()) { QuestState st = member.getQuestState(getClass()); if(max_kills == 0) { st.setState(STARTED); st.setCond(1); max_kills = Rnd.get(getRandomMin(), getRandomMax()); st.set("max_kills", max_kills); st.set("current_kills", 1); member.sendPacket(new ExShowScreenMessage(startNpcString(), 2000, ExShowScreenMessage.ScreenMessageAlign.TOP_CENTER, true, false, String.valueOf(max_kills))); } else { if(st != null) { int current_kills; if(st.getInt("current_kills") > 0) current_kills = st.getInt("current_kills") + 1; else current_kills = 1; if(current_kills >= max_kills) { event1.addReward(member, DominionSiegeEvent.STATIC_BADGES, 15); st.setState(COMPLETED); st.addExpAndSp(2670000, 105000); st.exitCurrentQuest(true); member.sendPacket(new ExShowScreenMessage(doneNpcString(), 2000, ExShowScreenMessage.ScreenMessageAlign.TOP_CENTER, true, false)); } else { st.set("current_kills", current_kills); member.sendPacket(new ExShowScreenMessage(progressNpcString(), 2000, ExShowScreenMessage.ScreenMessageAlign.TOP_CENTER, true, false, String.valueOf(max_kills), String.valueOf(current_kills))); } } } } } else { 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, DominionSiegeEvent.STATIC_BADGES, 15); 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))); } } } } catch(Exception e) { } return null; } @Override public boolean canAbortByPacket() { return false; } @Override public void onLoad() { } @Override public void onReload() { } @Override public void onShutdown() { } } Хм, найдите класс, в котором загружаются все скрипты (геймсервер.ява по идее), найдите там метод с их загрузкой и выводом исключения InstantiationException, ну и вывода его в консоль, типа System.out.println("ERROR " + path + ": Scripts: Failed running " + meth + "\n" + exception); А дальше по логике - смотрите на что ссылается данный эксепшн (блок try). Изменено 23 мая, 2014 пользователем DiQuero Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Дмитрий_Романов 1 Опубликовано 22 июля, 2017 UP есть решение ? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты