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

Dominion_Killspecialunitquest

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

ERROR Scripts: Failed running quests.Dominion_KillSpecialUnitQuest.onLoad()
java.lang.InstantiationException

 

Если загружаеться через джарку ошибка есть, если через откритый .java то проблемы нет

Кинь исходник класса сюда.

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


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

вот весь класс

 

 

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()

{

 

}

}

 

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


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

вот весь класс

 

 

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).

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

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


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

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

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

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

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

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

Войти

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

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

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

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

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