Ir para conteúdo
  • Cadastre-se

Quest Clan Lv 4 - aCis


Posts recomendados

Fala pessoal, bom, na rev aCis ainda faltam muitas quests, algumas muito importantes, como por exemplo a de upar o Clan para level 4 e para o level 5.

Eu comecei hoje a fazer o script da quest de upar o Clan para o level 4, porem eu travei em uma parte que eu não consigo mais passar, então resolvi postar aqui e ver se alguém pode ajudar a terminar esse script.

Ele está travando na parte de falar com a a Bruxa Athrea em Harddins Academy, o NPC não da continuidade a quest, eu já não sei mais o que fazer, ja fiz de tudo e não consegui fazer funcionar de jeito nenhum.

 

Segue o script:

 

O conteúdo está oculto, favor efetuar login ou se cadastrar!

 

 

Seguem os arquivos ".htm":

O conteúdo está oculto, favor efetuar login ou se cadastrar!

 

Abraços.

Editado por Ivan Pires

 

 

 

Link para o comentário
Compartilhar em outros sites


Ivan,muito boa sua iniciativa.

 

Já pensou em falar para o próprio tryskell sobre a falta dessa quest importante ?

 

Quem sabe ele mesmo poderia resolver o problema ao qual você se encontra "travado".

 

O complicado é que...só não é garantido que ele vá resolver e lhe "dar" de bom grado o problema resolvido.

Não é flood,essa é uma maneira muito rude de defini-la....é a arte de postar coisas desnecessárias.

Estude o mínimo de português antes de solicitar ajuda.
Somente para fins de entendimento.

https://www.youtube.com/watch?v=_Z1Krfww5eE
https://www.youtube.com/watch?v=k78OjoJZcVc
Link para o comentário
Compartilhar em outros sites

Ivan,muito boa sua iniciativa.

 

Já pensou em falar para o próprio tryskell sobre a falta dessa quest importante ?

 

Quem sabe ele mesmo poderia resolver o problema ao qual você se encontra "travado".

 

O complicado é que...só não é garantido que ele vá resolver e lhe "dar" de bom grado o problema resolvido.

O problema não é ele me dar de bom grado, o problema é que eu acho que o buraco é mais embaixo, pq se fosse uma quest de facil adaptação ele ja teria feito, acho que nem ele deve ter conseguido ainda fazer essa quest funcionar. Pq essa quest é uma das mais importantes, ele não iria deixar essa quest faltando a toa. ^^

Mas eu vou conseguir, acredito que vai demorar até eu conseguir descobrir o que está acontecendo, mas uma hora eu ou alguém aqui consegue encontrar o erro e a gente solucionar.

 

 

 

Link para o comentário
Compartilhar em outros sites

Veja se te ajudo.

 

 

package quests.Q501_ProofOfClanAlliance;

 

import javolution.text.TextBuilder;

import javolution.util.FastMap;

 

import net.sf.l2j.gameserver.datatables.SkillTable;

import net.sf.l2j.gameserver.model.L2Clan;

import net.sf.l2j.gameserver.model.L2ClanMember;

import net.sf.l2j.gameserver.model.Location;

import net.sf.l2j.gameserver.model.actor.L2Character;

import net.sf.l2j.gameserver.model.actor.L2Npc;

import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;

import net.sf.l2j.gameserver.model.quest.Quest;

import net.sf.l2j.gameserver.model.quest.QuestState;

import net.sf.l2j.gameserver.model.L2Skill;

import net.sf.l2j.gameserver.network.serverpackets.MagicSkillLaunched;

import net.sf.l2j.gameserver.network.serverpackets.MagicSkillUse;

import net.sf.l2j.gameserver.network.serverpackets.SocialAction;

import net.sf.l2j.util.Rnd;

 

public final class Q501_ProofOfClanAlliance extends Quest

{

private static final String qn = "Q501_ProofOfClanAlliance";

// Quest Npcs

private static final int SIR_KRISTOF_RODEMAI = 30756;

private static final int STATUE_OF_OFFERING = 30757;

private static final int WITCH_ATHREA = 30758;

private static final int WITCH_KALIS = 30759;

 

// Quest Items

private static final short HERB_OF_HARIT = 3832;

private static final short HERB_OF_VANOR = 3833;

private static final short HERB_OF_OEL_MAHUM = 3834;

private static final short BLOOD_OF_EVA = 3835;

private static final short SYMBOL_OF_LOYALTY = 3837;

private static final short PROOF_OF_ALLIANCE = 3874;

private static final short VOUCHER_OF_FAITH = 3873;

private static final short ANTIDOTE_RECIPE = 3872;

private static final short POTION_OF_RECOVERY = 3889;

 

// Quest mobs, drop, rates and prices

private static final int[] CHESTS =

{

27173,

27174,

27175,

27176,

27177

};

private static final int[][] MOBS =

{

{

20685,

HERB_OF_VANOR

},

{

20644,

HERB_OF_HARIT

},

{

20576,

HERB_OF_OEL_MAHUM

}

};

 

private static final short RATE = 35;

// stackable items paid to retry chest game: (default 10k adena)

private static final short RETRY_PRICE = 10000;

 

public Q501_ProofOfClanAlliance(int questId, String name, String descr)

{

super(questId, name, descr);

 

addStartNpc(SIR_KRISTOF_RODEMAI);

addStartNpc(STATUE_OF_OFFERING);

addStartNpc(WITCH_ATHREA);

addTalkId(WITCH_KALIS);

questItemIds = new int[]

{

SYMBOL_OF_LOYALTY,

ANTIDOTE_RECIPE

};

for (int[] i : MOBS)

{

addKillId(i[0]);

questItemIds = new int[]

{

i[1]

};

}

for (int i : CHESTS)

{

addKillId(i);

}

}

 

public QuestState getLeader(QuestState st)

{

L2Clan clan = st.getPlayer().getClan();

QuestState leader = null;

if ((clan != null) && (clan.getLeader() != null) && (clan.getLeader().getPlayerInstance() != null))

{

leader = clan.getLeader().getPlayerInstance().getQuestState(getName());

}

return leader;

}

 

public void removeQuestFromMembers(QuestState st, boolean leader)

{

removeQuestFromOfflineMembers(st);

removeQuestFromOnlineMembers(st, leader);

}

 

public void removeQuestFromOfflineMembers(QuestState st)

{

if ((st.getPlayer() == null) || (st.getPlayer().getClan() == null))

{

st.exitQuest(true);

return;

}

 

int clan = st.getPlayer().getClan().getClanId();

 

try (Connection con = DatabaseFactory.getConnection();

PreparedStatement offline = con.prepareStatement("DELETE FROM character_quests WHERE name = ? AND char_id IN (SELECT obj_id FROM characters WHERE clanId = ? AND online = 0)"))

{

offline.setString(1, getName());

offline.setInt(2, clan);

offline.executeUpdate();

}

catch (Exception e)

{

}

}

 

public void removeQuestFromOnlineMembers(QuestState st, boolean leader)

{

if ((st.getPlayer() == null) || (st.getPlayer().getClan() == null))

{

st.exitQuest(true);

return;

}

 

QuestState l;

L2PcInstance pleader = null;

 

if (leader)

{

l = getLeader(st);

if (l != null)

{

pleader = l.getPlayer();

}

}

 

if (pleader != null)

{

for (L2Effect eff : st.getPlayer().getAllEffects())

{

if (eff.getSkill().getId() == 4082)

{

st.getPlayer().stopImmobileUntilAttacked(eff);

}

}

}

for (L2PcInstance pl : st.getPlayer().getClan().getOnlineMembers())

{

if ((pl != null) && (pl.getQuestState(getName()) != null))

{

pl.getQuestState(getName()).exitQuest(true);

}

}

}

 

@Override

public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)

{

QuestState st = player.getQuestState(qn);

if ((st.getPlayer() == null) || (st.getPlayer().getClan() == null))

{

st.exitQuest(true);

return "noquest";

}

 

QuestState leader = getLeader(st);

if (leader == null)

{

removeQuestFromMembers(st, true);

return "Quest Failed";

}

 

String htmltext = event;

 

if (st.getPlayer().isClanLeader())

{

if (event.equalsIgnoreCase("30756-03.htm"))

{

st.set("cond", "1");

st.setState(STATE_STARTED);

st.playSound(QuestState.SOUND_ACCEPT);

}

else if (event.equalsIgnoreCase("30759-03.htm"))

{

st.set("cond", "2");

st.set("dead_list", " ");

}

else if (event.equalsIgnoreCase("30759-07.htm"))

{

st.takeItems(SYMBOL_OF_LOYALTY, -1);

st.giveItems(ANTIDOTE_RECIPE, 1);

notifyDeath(npc, player, leader.getPlayer());

st.set("cond", "3");

st.set("chest_count", "0");

st.set("chest_game", "0");

st.set("chest_try", "0");

startQuestTimer("poison_timer", 3600000, null, st.getPlayer(), false);

st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4082, 1), false, false);

st.getPlayer().startImmobileUntilAttacked();

htmltext = "30759-07.htm";

}

}

 

if (event.equalsIgnoreCase("poison_timer"))

{

removeQuestFromMembers(st, true);

htmltext = "30759-09.htm";

}

else if (event.equalsIgnoreCase("chest_timer"))

{

htmltext = "";

if (leader.getInt("chest_game") < 2)

{

stop_chest_game(st);

}

}

else if (event.equalsIgnoreCase("30757-04.htm"))

{

List deadlist = new ArrayList<>();

deadlist.addAll(Arrays.asList(leader.get("dead_list").split(" ")));

deadlist.add(st.getPlayer().getName());

String deadstr = "";

for (String s : deadlist)

{

deadstr += s + " ";

}

leader.set("dead_list", deadstr);

notifyDeath(npc, leader.getPlayer(), player);

if (Rnd.chance(50))

{

st.getPlayer().reduceCurrentHp(st.getPlayer().getCurrentHp() * 8, st.getPlayer(), true, true, null);

}

st.giveItems(SYMBOL_OF_LOYALTY, 1);

st.playSound(QuestState.SOUND_ACCEPT);

}

else if (event.equalsIgnoreCase("30757-05.htm"))

{

st.exitQuest(true);

}

else if (event.equalsIgnoreCase("30758-03.htm"))

{

start_chest_game(st);

}

else if (event.equalsIgnoreCase("30758-07.htm"))

{

if (st.getQuestItemsCount(57) < RETRY_PRICE)

{

htmltext = "30758-06.htm";

}

else

{

st.takeItems(57, RETRY_PRICE);

}

}

 

return htmltext;

}

 

@Override

public String onTalk(L2Npc npc, L2PcInstance player)

{

QuestState st = player.getQuestState(qn);

String htmltext = getNoQuestMsg();

 

int cond = st.getInt("cond");

 

if ((st.getPlayer() == null) || (st.getPlayer().getClan() == null))

{

st.exitQuest(true);

return htmltext;

}

 

QuestState leader = getLeader(st);

if (leader == null)

{

removeQuestFromMembers(st, true);

return "Quest Failed";

}

 

int npcId = npc.getNpcId();

if (npcId == SIR_KRISTOF_RODEMAI)

{

if (!st.getPlayer().isClanLeader())

{

st.exitQuest(true);

return "30756-10.htm";

}

else if (st.getPlayer().getClan().getLevel() <= 2)

{

st.exitQuest(true);

return "30756-08.htm";

}

else if (st.getPlayer().getClan().getLevel() >= 4)

{

st.exitQuest(true);

return "30756-09.htm";

}

else if (st.getQuestItemsCount(VOUCHER_OF_FAITH) > 0)

{

st.playSound(QuestState.SOUND_FANFARE);

st.takeItems(VOUCHER_OF_FAITH, -1);

st.giveItems(PROOF_OF_ALLIANCE, 1);

st.getPlayer().addExpAndSp(0, 120000);

htmltext = "30756-07.htm";

st.exitQuest(true);

}

else if ((cond == 1) || (cond == 2))

{

return "30756-06.htm";

}

else if (st.getQuestItemsCount(PROOF_OF_ALLIANCE) == 0)

{

st.set("cond", "0");

return "30756-01.htm";

}

else

{

st.exitQuest(true);

return htmltext;

}

}

else if (npcId == WITCH_KALIS)

{

if (st.getPlayer().isClanLeader())

{

if (cond == 1)

{

return "30759-01.htm";

}

else if (cond == 2)

{

htmltext = "30759-05.htm";

if (st.getQuestItemsCount(SYMBOL_OF_LOYALTY) == 3)

{

int deads = 0;

try

{

deads = st.get("dead_list").split(" ").length;

}

finally

{

if (deads == 3)

{

htmltext = "30759-06.htm";

}

}

}

}

else if (cond == 3)

{

if ((st.getQuestItemsCount(HERB_OF_HARIT) > 0) && (st.getQuestItemsCount(HERB_OF_VANOR) > 0) && (st.getQuestItemsCount(HERB_OF_OEL_MAHUM) > 0) && (st.getQuestItemsCount(BLOOD_OF_EVA) > 0) && (st.getQuestItemsCount(ANTIDOTE_RECIPE) > 0))

{

st.takeItems(ANTIDOTE_RECIPE, 1);

st.takeItems(HERB_OF_HARIT, 1);

st.takeItems(HERB_OF_VANOR, 1);

st.takeItems(HERB_OF_OEL_MAHUM, 1);

st.takeItems(BLOOD_OF_EVA, 1);

st.giveItems(POTION_OF_RECOVERY, 1);

st.giveItems(VOUCHER_OF_FAITH, 1);

QuestTimer timer = getQuestTimer("poison_timer", null, st.getPlayer());

if (timer != null)

{

timer.cancel();

}

removeQuestFromMembers(st, false);

for (L2Effect eff : st.getPlayer().getAllEffects())

{

if (eff.getSkill().getId() == 4082)

{

st.getPlayer().stopImmobileUntilAttacked(eff);

}

}

st.set("cond", "4");

st.playSound(QuestState.SOUND_FINISH);

return "30759-08.htm";

}

else if (st.getQuestItemsCount(VOUCHER_OF_FAITH) == 0)

{

return "30759-10.htm";

}

}

}

else if (leader.getInt("cond") == 3)

{

return "30759-11.htm";

}

}

else if (npcId == STATUE_OF_OFFERING)

{

if (st.getPlayer().isClanLeader())

{

return "30757-03.htm";

}

else if (st.getPlayer().getLevel() <= 39)

{

st.exitQuest(true);

return "30757-02.htm";

}

else

{

String[] dlist;

int deads;

try

{

dlist = leader.get("dead_list").split(" ");

deads = dlist.length;

}

catch (Exception e)

{

removeQuestFromMembers(st, true);

return "Who are you?";

}

if (deads < 3)

{

for (String str : dlist)

{

if (st.getPlayer().getName().equalsIgnoreCase(str))

{

return "you cannot die again!";

}

}

return "30757-01.htm";

}

}

}

else if (npcId == WITCH_ATHREA)

{

if (st.getPlayer().isClanLeader())

{

return "30757-03.htm";

}

 

// Проверяем, участвует ли в квесте

String[] dlist;

try

{

dlist = leader.get("dead_list").split(" ");

}

catch (Exception e)

{

st.exitQuest(true);

return "Who are you?";

}

Boolean flag = false;

if (dlist != null)

{

for (String str : dlist)

{

if (st.getPlayer().getName().equalsIgnoreCase(str))

{

flag = true;

}

}

}

if (!flag)

{

st.exitQuest(true);

return "Who are you?";

}

 

int game_state = leader.getInt("chest_game");

if (game_state == 0)

{

if (leader.getInt("chest_try") == 0)

{

return "30758-01.htm";

}

return "30758-05.htm";

}

else if (game_state == 1)

{

return "30758-09.htm";

}

else if (game_state == 2)

{

st.playSound(QuestState.SOUND_FINISH);

st.giveItems(BLOOD_OF_EVA, 1);

QuestTimer timer = getQuestTimer("chest_timer", null, st.getPlayer());

if (timer != null)

{

timer.cancel();

}

stop_chest_game(st);

leader.set("chest_game", "3");

return "30758-08.htm";

}

}

return htmltext;

}

 

@Override

public String onKill(L2Npc npc, L2PcInstance player, boolean isSunnon)

{

QuestState st = checkPlayerState(player, npc, STATE_STARTED);

if (st == null)

{

return null;

}

if ((st.getPlayer() == null) || (st.getPlayer().getClan() == null))

{

st.exitQuest(true);

return "noquest";

}

 

QuestState leader = getLeader(st);

if (leader == null)

{

removeQuestFromMembers(st, true);

return "Quest Failed";

}

 

// first part, general checking

int npcId = npc.getNpcId();

 

QuestTimer timer = getQuestTimer("poison_timer", null, st.getPlayer());

if (timer == null)

{

stop_chest_game(st);

return "Quest Failed";

}

 

// second part, herbs gathering

for (int[] m : MOBS)

{

if ((npcId == m[0]) && (st.getInt(String.valueOf(m[1])) == 0))

{

if (Rnd.chance(RATE))

{

st.giveItems(m[1], 1);

leader.set(String.valueOf(m[1]), "1");

st.playSound(QuestState.SOUND_MIDDLE);

return null;

}

}

}

 

// third part, chest game

for (int i : CHESTS)

{

if (npcId == i)

{

timer = getQuestTimer("chest_timer", null, st.getPlayer());

if (timer == null)

{

stop_chest_game(st);

return "Time is up!";

}

if (Rnd.chance(25))

{

npc.broadcastNpcSay("###### BINGO! ######");

int count = leader.getInt("chest_count");

if (count < 4)

{

count += 1;

leader.set("chest_count", String.valueOf(count));

}

if (count >= 4)

{

stop_chest_game(st);

leader.set("chest_game", "2");

timer.cancel();

st.playSound(QuestState.SOUND_MIDDLE);

}

else

{

st.playSound(QuestState.SOUND_ITEMGET);

}

}

return null;

}

}

return null;

}

 

public void start_chest_game(QuestState st)

{

if ((st.getPlayer() == null) || (st.getPlayer().getClan() == null))

{

st.exitQuest(true);

return;

}

QuestState leader = getLeader(st);

if (leader == null)

{

removeQuestFromMembers(st, true);

return;

}

leader.set("chest_game", "1");

leader.set("chest_count", "0");

int attempts = leader.getInt("chest_try");

leader.set("chest_try", String.valueOf(attempts + 1));

 

for (L2Npc npc : L2World.getInstance().getAllByNpcId(CHESTS, false))

{

npc.deleteMe();

}

 

for (int n = 1; n <= 5; n++)

{

for (int i : CHESTS)

{

addSpawn(i, 102100, 103450, -3400, 0, true, 60000, false);

}

}

startQuestTimer("chest_timer", 60000, null, st.getPlayer(), false);

}

 

public void stop_chest_game(QuestState st)

{

QuestState leader = getLeader(st);

if (leader == null)

{

removeQuestFromMembers(st, true);

return;

}

 

for (L2Npc npc : L2World.getInstance().getAllByNpcId(CHESTS, false))

{

npc.deleteMe();

}

leader.set("chest_game", "0");

}

 

@Override

public String onDeath(L2Character npc, L2Character pc, L2PcInstance player)

{

QuestState st = checkPlayerState(player, (L2Npc) npc, STATE_STARTED);

if ((st.getPlayer() == null) || (st.getPlayer().getClan() == null))

{

st.exitQuest(true);

return null;

}

 

QuestState leader = getLeader(st);

if (leader == null)

{

removeQuestFromMembers(st, true);

return null;

}

 

if (st.getPlayer() == pc)

{

QuestTimer timer1 = getQuestTimer("poison_timer", null, st.getPlayer());

QuestTimer timer2 = getQuestTimer("chest_timer", null, st.getPlayer());

if (timer1 != null)

{

timer1.cancel();

}

if (timer2 != null)

{

timer2.cancel();

}

removeQuestFromMembers(st, true);

}

return null;

}

 

public static void main(String[] args)

{

new Q501_ProofOfClanAlliance(501, qn, "Proof Of Clan Alliance");

}

}

 

O zumbi e a prova morta de que alguem morto pode ser a prova viva de que ha vida apos a morte !

Link para o comentário
Compartilhar em outros sites

Veja se te ajudo.

 

 

package quests.Q501_ProofOfClanAlliance;

 

import javolution.text.TextBuilder;

import javolution.util.FastMap;

 

import net.sf.l2j.gameserver.datatables.SkillTable;

import net.sf.l2j.gameserver.model.L2Clan;

import net.sf.l2j.gameserver.model.L2ClanMember;

import net.sf.l2j.gameserver.model.Location;

import net.sf.l2j.gameserver.model.actor.L2Character;

import net.sf.l2j.gameserver.model.actor.L2Npc;

import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;

import net.sf.l2j.gameserver.model.quest.Quest;

import net.sf.l2j.gameserver.model.quest.QuestState;

import net.sf.l2j.gameserver.model.L2Skill;

import net.sf.l2j.gameserver.network.serverpackets.MagicSkillLaunched;

import net.sf.l2j.gameserver.network.serverpackets.MagicSkillUse;

import net.sf.l2j.gameserver.network.serverpackets.SocialAction;

import net.sf.l2j.util.Rnd;

 

public final class Q501_ProofOfClanAlliance extends Quest

{

private static final String qn = "Q501_ProofOfClanAlliance";

// Quest Npcs

private static final int SIR_KRISTOF_RODEMAI = 30756;

private static final int STATUE_OF_OFFERING = 30757;

private static final int WITCH_ATHREA = 30758;

private static final int WITCH_KALIS = 30759;

 

// Quest Items

private static final short HERB_OF_HARIT = 3832;

private static final short HERB_OF_VANOR = 3833;

private static final short HERB_OF_OEL_MAHUM = 3834;

private static final short BLOOD_OF_EVA = 3835;

private static final short SYMBOL_OF_LOYALTY = 3837;

private static final short PROOF_OF_ALLIANCE = 3874;

private static final short VOUCHER_OF_FAITH = 3873;

private static final short ANTIDOTE_RECIPE = 3872;

private static final short POTION_OF_RECOVERY = 3889;

 

// Quest mobs, drop, rates and prices

private static final int[] CHESTS =

{

27173,

27174,

27175,

27176,

27177

};

private static final int[][] MOBS =

{

{

20685,

HERB_OF_VANOR

},

{

20644,

HERB_OF_HARIT

},

{

20576,

HERB_OF_OEL_MAHUM

}

};

 

private static final short RATE = 35;

// stackable items paid to retry chest game: (default 10k adena)

private static final short RETRY_PRICE = 10000;

 

public Q501_ProofOfClanAlliance(int questId, String name, String descr)

{

super(questId, name, descr);

 

addStartNpc(SIR_KRISTOF_RODEMAI);

addStartNpc(STATUE_OF_OFFERING);

addStartNpc(WITCH_ATHREA);

addTalkId(WITCH_KALIS);

questItemIds = new int[]

{

SYMBOL_OF_LOYALTY,

ANTIDOTE_RECIPE

};

for (int[] i : MOBS)

{

addKillId(i[0]);

questItemIds = new int[]

{

i[1]

};

}

for (int i : CHESTS)

{

addKillId(i);

}

}

 

public QuestState getLeader(QuestState st)

{

L2Clan clan = st.getPlayer().getClan();

QuestState leader = null;

if ((clan != null) && (clan.getLeader() != null) && (clan.getLeader().getPlayerInstance() != null))

{

leader = clan.getLeader().getPlayerInstance().getQuestState(getName());

}

return leader;

}

 

public void removeQuestFromMembers(QuestState st, boolean leader)

{

removeQuestFromOfflineMembers(st);

removeQuestFromOnlineMembers(st, leader);

}

 

public void removeQuestFromOfflineMembers(QuestState st)

{

if ((st.getPlayer() == null) || (st.getPlayer().getClan() == null))

{

st.exitQuest(true);

return;

}

 

int clan = st.getPlayer().getClan().getClanId();

 

try (Connection con = DatabaseFactory.getConnection();

PreparedStatement offline = con.prepareStatement("DELETE FROM character_quests WHERE name = ? AND char_id IN (SELECT obj_id FROM characters WHERE clanId = ? AND online = 0)"))

{

offline.setString(1, getName());

offline.setInt(2, clan);

offline.executeUpdate();

}

catch (Exception e)

{

}

}

 

public void removeQuestFromOnlineMembers(QuestState st, boolean leader)

{

if ((st.getPlayer() == null) || (st.getPlayer().getClan() == null))

{

st.exitQuest(true);

return;

}

 

QuestState l;

L2PcInstance pleader = null;

 

if (leader)

{

l = getLeader(st);

if (l != null)

{

pleader = l.getPlayer();

}

}

 

if (pleader != null)

{

for (L2Effect eff : st.getPlayer().getAllEffects())

{

if (eff.getSkill().getId() == 4082)

{

st.getPlayer().stopImmobileUntilAttacked(eff);

}

}

}

for (L2PcInstance pl : st.getPlayer().getClan().getOnlineMembers())

{

if ((pl != null) && (pl.getQuestState(getName()) != null))

{

pl.getQuestState(getName()).exitQuest(true);

}

}

}

 

@Override

public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)

{

QuestState st = player.getQuestState(qn);

if ((st.getPlayer() == null) || (st.getPlayer().getClan() == null))

{

st.exitQuest(true);

return "noquest";

}

 

QuestState leader = getLeader(st);

if (leader == null)

{

removeQuestFromMembers(st, true);

return "Quest Failed";

}

 

String htmltext = event;

 

if (st.getPlayer().isClanLeader())

{

if (event.equalsIgnoreCase("30756-03.htm"))

{

st.set("cond", "1");

st.setState(STATE_STARTED);

st.playSound(QuestState.SOUND_ACCEPT);

}

else if (event.equalsIgnoreCase("30759-03.htm"))

{

st.set("cond", "2");

st.set("dead_list", " ");

}

else if (event.equalsIgnoreCase("30759-07.htm"))

{

st.takeItems(SYMBOL_OF_LOYALTY, -1);

st.giveItems(ANTIDOTE_RECIPE, 1);

notifyDeath(npc, player, leader.getPlayer());

st.set("cond", "3");

st.set("chest_count", "0");

st.set("chest_game", "0");

st.set("chest_try", "0");

startQuestTimer("poison_timer", 3600000, null, st.getPlayer(), false);

st.getPlayer().useMagic(SkillTable.getInstance().getInfo(4082, 1), false, false);

st.getPlayer().startImmobileUntilAttacked();

htmltext = "30759-07.htm";

}

}

 

if (event.equalsIgnoreCase("poison_timer"))

{

removeQuestFromMembers(st, true);

htmltext = "30759-09.htm";

}

else if (event.equalsIgnoreCase("chest_timer"))

{

htmltext = "";

if (leader.getInt("chest_game") < 2)

{

stop_chest_game(st);

}

}

else if (event.equalsIgnoreCase("30757-04.htm"))

{

List deadlist = new ArrayList<>();

deadlist.addAll(Arrays.asList(leader.get("dead_list").split(" ")));

deadlist.add(st.getPlayer().getName());

String deadstr = "";

for (String s : deadlist)

{

deadstr += s + " ";

}

leader.set("dead_list", deadstr);

notifyDeath(npc, leader.getPlayer(), player);

if (Rnd.chance(50))

{

st.getPlayer().reduceCurrentHp(st.getPlayer().getCurrentHp() * 8, st.getPlayer(), true, true, null);

}

st.giveItems(SYMBOL_OF_LOYALTY, 1);

st.playSound(QuestState.SOUND_ACCEPT);

}

else if (event.equalsIgnoreCase("30757-05.htm"))

{

st.exitQuest(true);

}

else if (event.equalsIgnoreCase("30758-03.htm"))

{

start_chest_game(st);

}

else if (event.equalsIgnoreCase("30758-07.htm"))

{

if (st.getQuestItemsCount(57) < RETRY_PRICE)

{

htmltext = "30758-06.htm";

}

else

{

st.takeItems(57, RETRY_PRICE);

}

}

 

return htmltext;

}

 

@Override

public String onTalk(L2Npc npc, L2PcInstance player)

{

QuestState st = player.getQuestState(qn);

String htmltext = getNoQuestMsg();

 

int cond = st.getInt("cond");

 

if ((st.getPlayer() == null) || (st.getPlayer().getClan() == null))

{

st.exitQuest(true);

return htmltext;

}

 

QuestState leader = getLeader(st);

if (leader == null)

{

removeQuestFromMembers(st, true);

return "Quest Failed";

}

 

int npcId = npc.getNpcId();

if (npcId == SIR_KRISTOF_RODEMAI)

{

if (!st.getPlayer().isClanLeader())

{

st.exitQuest(true);

return "30756-10.htm";

}

else if (st.getPlayer().getClan().getLevel() <= 2)

{

st.exitQuest(true);

return "30756-08.htm";

}

else if (st.getPlayer().getClan().getLevel() >= 4)

{

st.exitQuest(true);

return "30756-09.htm";

}

else if (st.getQuestItemsCount(VOUCHER_OF_FAITH) > 0)

{

st.playSound(QuestState.SOUND_FANFARE);

st.takeItems(VOUCHER_OF_FAITH, -1);

st.giveItems(PROOF_OF_ALLIANCE, 1);

st.getPlayer().addExpAndSp(0, 120000);

htmltext = "30756-07.htm";

st.exitQuest(true);

}

else if ((cond == 1) || (cond == 2))

{

return "30756-06.htm";

}

else if (st.getQuestItemsCount(PROOF_OF_ALLIANCE) == 0)

{

st.set("cond", "0");

return "30756-01.htm";

}

else

{

st.exitQuest(true);

return htmltext;

}

}

else if (npcId == WITCH_KALIS)

{

if (st.getPlayer().isClanLeader())

{

if (cond == 1)

{

return "30759-01.htm";

}

else if (cond == 2)

{

htmltext = "30759-05.htm";

if (st.getQuestItemsCount(SYMBOL_OF_LOYALTY) == 3)

{

int deads = 0;

try

{

deads = st.get("dead_list").split(" ").length;

}

finally

{

if (deads == 3)

{

htmltext = "30759-06.htm";

}

}

}

}

else if (cond == 3)

{

if ((st.getQuestItemsCount(HERB_OF_HARIT) > 0) && (st.getQuestItemsCount(HERB_OF_VANOR) > 0) && (st.getQuestItemsCount(HERB_OF_OEL_MAHUM) > 0) && (st.getQuestItemsCount(BLOOD_OF_EVA) > 0) && (st.getQuestItemsCount(ANTIDOTE_RECIPE) > 0))

{

st.takeItems(ANTIDOTE_RECIPE, 1);

st.takeItems(HERB_OF_HARIT, 1);

st.takeItems(HERB_OF_VANOR, 1);

st.takeItems(HERB_OF_OEL_MAHUM, 1);

st.takeItems(BLOOD_OF_EVA, 1);

st.giveItems(POTION_OF_RECOVERY, 1);

st.giveItems(VOUCHER_OF_FAITH, 1);

QuestTimer timer = getQuestTimer("poison_timer", null, st.getPlayer());

if (timer != null)

{

timer.cancel();

}

removeQuestFromMembers(st, false);

for (L2Effect eff : st.getPlayer().getAllEffects())

{

if (eff.getSkill().getId() == 4082)

{

st.getPlayer().stopImmobileUntilAttacked(eff);

}

}

st.set("cond", "4");

st.playSound(QuestState.SOUND_FINISH);

return "30759-08.htm";

}

else if (st.getQuestItemsCount(VOUCHER_OF_FAITH) == 0)

{

return "30759-10.htm";

}

}

}

else if (leader.getInt("cond") == 3)

{

return "30759-11.htm";

}

}

else if (npcId == STATUE_OF_OFFERING)

{

if (st.getPlayer().isClanLeader())

{

return "30757-03.htm";

}

else if (st.getPlayer().getLevel() <= 39)

{

st.exitQuest(true);

return "30757-02.htm";

}

else

{

String[] dlist;

int deads;

try

{

dlist = leader.get("dead_list").split(" ");

deads = dlist.length;

}

catch (Exception e)

{

removeQuestFromMembers(st, true);

return "Who are you?";

}

if (deads < 3)

{

for (String str : dlist)

{

if (st.getPlayer().getName().equalsIgnoreCase(str))

{

return "you cannot die again!";

}

}

return "30757-01.htm";

}

}

}

else if (npcId == WITCH_ATHREA)

{

if (st.getPlayer().isClanLeader())

{

return "30757-03.htm";

}

 

// Проверяем, участвует ли в квесте

String[] dlist;

try

{

dlist = leader.get("dead_list").split(" ");

}

catch (Exception e)

{

st.exitQuest(true);

return "Who are you?";

}

Boolean flag = false;

if (dlist != null)

{

for (String str : dlist)

{

if (st.getPlayer().getName().equalsIgnoreCase(str))

{

flag = true;

}

}

}

if (!flag)

{

st.exitQuest(true);

return "Who are you?";

}

 

int game_state = leader.getInt("chest_game");

if (game_state == 0)

{

if (leader.getInt("chest_try") == 0)

{

return "30758-01.htm";

}

return "30758-05.htm";

}

else if (game_state == 1)

{

return "30758-09.htm";

}

else if (game_state == 2)

{

st.playSound(QuestState.SOUND_FINISH);

st.giveItems(BLOOD_OF_EVA, 1);

QuestTimer timer = getQuestTimer("chest_timer", null, st.getPlayer());

if (timer != null)

{

timer.cancel();

}

stop_chest_game(st);

leader.set("chest_game", "3");

return "30758-08.htm";

}

}

return htmltext;

}

 

@Override

public String onKill(L2Npc npc, L2PcInstance player, boolean isSunnon)

{

QuestState st = checkPlayerState(player, npc, STATE_STARTED);

if (st == null)

{

return null;

}

if ((st.getPlayer() == null) || (st.getPlayer().getClan() == null))

{

st.exitQuest(true);

return "noquest";

}

 

QuestState leader = getLeader(st);

if (leader == null)

{

removeQuestFromMembers(st, true);

return "Quest Failed";

}

 

// first part, general checking

int npcId = npc.getNpcId();

 

QuestTimer timer = getQuestTimer("poison_timer", null, st.getPlayer());

if (timer == null)

{

stop_chest_game(st);

return "Quest Failed";

}

 

// second part, herbs gathering

for (int[] m : MOBS)

{

if ((npcId == m[0]) && (st.getInt(String.valueOf(m[1])) == 0))

{

if (Rnd.chance(RATE))

{

st.giveItems(m[1], 1);

leader.set(String.valueOf(m[1]), "1");

st.playSound(QuestState.SOUND_MIDDLE);

return null;

}

}

}

 

// third part, chest game

for (int i : CHESTS)

{

if (npcId == i)

{

timer = getQuestTimer("chest_timer", null, st.getPlayer());

if (timer == null)

{

stop_chest_game(st);

return "Time is up!";

}

if (Rnd.chance(25))

{

npc.broadcastNpcSay("###### BINGO! ######");

int count = leader.getInt("chest_count");

if (count < 4)

{

count += 1;

leader.set("chest_count", String.valueOf(count));

}

if (count >= 4)

{

stop_chest_game(st);

leader.set("chest_game", "2");

timer.cancel();

st.playSound(QuestState.SOUND_MIDDLE);

}

else

{

st.playSound(QuestState.SOUND_ITEMGET);

}

}

return null;

}

}

return null;

}

 

public void start_chest_game(QuestState st)

{

if ((st.getPlayer() == null) || (st.getPlayer().getClan() == null))

{

st.exitQuest(true);

return;

}

QuestState leader = getLeader(st);

if (leader == null)

{

removeQuestFromMembers(st, true);

return;

}

leader.set("chest_game", "1");

leader.set("chest_count", "0");

int attempts = leader.getInt("chest_try");

leader.set("chest_try", String.valueOf(attempts + 1));

 

for (L2Npc npc : L2World.getInstance().getAllByNpcId(CHESTS, false))

{

npc.deleteMe();

}

 

for (int n = 1; n <= 5; n++)

{

for (int i : CHESTS)

{

addSpawn(i, 102100, 103450, -3400, 0, true, 60000, false);

}

}

startQuestTimer("chest_timer", 60000, null, st.getPlayer(), false);

}

 

public void stop_chest_game(QuestState st)

{

QuestState leader = getLeader(st);

if (leader == null)

{

removeQuestFromMembers(st, true);

return;

}

 

for (L2Npc npc : L2World.getInstance().getAllByNpcId(CHESTS, false))

{

npc.deleteMe();

}

leader.set("chest_game", "0");

}

 

@Override

public String onDeath(L2Character npc, L2Character pc, L2PcInstance player)

{

QuestState st = checkPlayerState(player, (L2Npc) npc, STATE_STARTED);

if ((st.getPlayer() == null) || (st.getPlayer().getClan() == null))

{

st.exitQuest(true);

return null;

}

 

QuestState leader = getLeader(st);

if (leader == null)

{

removeQuestFromMembers(st, true);

return null;

}

 

if (st.getPlayer() == pc)

{

QuestTimer timer1 = getQuestTimer("poison_timer", null, st.getPlayer());

QuestTimer timer2 = getQuestTimer("chest_timer", null, st.getPlayer());

if (timer1 != null)

{

timer1.cancel();

}

if (timer2 != null)

{

timer2.cancel();

}

removeQuestFromMembers(st, true);

}

return null;

}

 

public static void main(String[] args)

{

new Q501_ProofOfClanAlliance(501, qn, "Proof Of Clan Alliance");

}

}

 

Faltou um monte de imports, mas eu vou adicionar e corrigir alguns erros que vi no java, depois eu posto aqui o resultado.

Obrigado ROII.

 

 

 

Link para o comentário
Compartilhar em outros sites

 

 

Entendi.Tenso que ainda estou "vendo" aulas de java,se não até que eu gostaria de ajudar,recentemente que comecei a mexer com o eclipse e etc.

 

Estou visualizando as aulas de java da XTI,espero que no futuro seja útil para tentar solucionar problemas como este.

Não é flood,essa é uma maneira muito rude de defini-la....é a arte de postar coisas desnecessárias.

Estude o mínimo de português antes de solicitar ajuda.
Somente para fins de entendimento.

https://www.youtube.com/watch?v=_Z1Krfww5eE
https://www.youtube.com/watch?v=k78OjoJZcVc
Link para o comentário
Compartilhar em outros sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Processando...
  • Registre-se

    Faça parte da maior e  mais antigas comunidades sobre Lineage2 da América Latina.





×
×
  • Criar Novo...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.