Jump to content
Sign in to follow this  
BORDIR

Dominion_Killspecialunitquest

Recommended Posts

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

 

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

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

Share this post


Link to post
Share on other sites

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

 

 

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

{

 

}

}

 

Share this post


Link to post
Share on other sites

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

 

 

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

Edited by DiQuero

Share this post


Link to post
Share on other sites

Все так же, как то перестал обращать внимание на ошибку и просто играл, дальше, мучился менял, в скрипте, писал удалял, выходит там весь скрипт неправильный, сам квест с нуля надо переписывать, а это уже к тому кто его писал, понимаю, что чужой труд тыбзить нельзя

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...