Ir para conteúdo
  • Cadastre-se
  • 0

NPC BUFFER PARA ACIS


So-De-Boa

Pergunta

Pessoal, boa tarde.

O NPC buffer do link abaixo com alguma adaptação funciona nas rev da aCis?

Sei que pra JFrozen dava certinho e gostei muito, porém como estou muuuuito tempo ser mexer com nada de L2 gostaria de voltar com aCis e esse NPC.

 

 

Ta faltando alguma coisa aqui no fórum, mas não sei o que... (MarucaMetal, Fabio, Revoltado, KhayrusS, entre outros que fazem muita falta para o fórum).

Quero voltar a mexer com l2j, mas estou com muita preguiça e pouco tempo... Mas vou voltar para aprender mais e mais...

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts recomendados

  • 0

UP... 

 

Algum membro gente boa saberia me informar?

Ta faltando alguma coisa aqui no fórum, mas não sei o que... (MarucaMetal, Fabio, Revoltado, KhayrusS, entre outros que fazem muita falta para o fórum).

Quero voltar a mexer com l2j, mas estou com muita preguiça e pouco tempo... Mas vou voltar para aprender mais e mais...

Link para o comentário
Compartilhar em outros sites


  • 0
44 minutos atrás, So-De-Boa disse:

UP... 

Algum membro gente boa saberia me informar?

Provavelmente sim, de inicio esse Buffer foi feito com base em aCis

neTiVFC.gif

9KuKwr5.gif

Link para o comentário
Compartilhar em outros sites

  • 0
Em 04/09/2022 at 16:06, So-De-Boa disse:

Pessoal, boa tarde.

O NPC buffer do link abaixo com alguma adaptação funciona nas rev da aCis?

Sei que pra JFrozen dava certinho e gostei muito, porém como estou muuuuito tempo ser mexer com nada de L2 gostaria de voltar com aCis e esse NPC.

não sou um especialista em adaptação mais segue ele adaptado para a nova acis Obs. não testei só mudei aqui precisa testar e se der algum erro poste para que possamos corrigir. Mesmo assim recomendo usar outros que tem no fórum mais modernos.
 

package net.sf.l2j.gameserver.model.actor.instance;

import java.util.StringTokenizer;

import net.sf.l2j.commons.random.Rnd;
import net.sf.l2j.gameserver.data.SkillTable;
import net.sf.l2j.gameserver.model.actor.Player;
import net.sf.l2j.gameserver.model.actor.Summon;
import net.sf.l2j.gameserver.model.actor.template.NpcTemplate;
import net.sf.l2j.gameserver.network.serverpackets.ActionFailed;
import net.sf.l2j.gameserver.network.serverpackets.MagicSkillUse;
import net.sf.l2j.gameserver.network.serverpackets.MyTargetSelected;
import net.sf.l2j.gameserver.network.serverpackets.NpcHtmlMessage;
import net.sf.l2j.gameserver.network.serverpackets.SocialAction;
import net.sf.l2j.gameserver.network.serverpackets.ValidateLocation;

public class BufferInstance extends Folk 
{
	public BufferInstance(int objectId, NpcTemplate template) 
	{
		super(objectId, template);
	}

	@Override
	public void onBypassFeedback(Player player, String command) 
	{
		StringTokenizer st = new StringTokenizer(command, " ");
		String actualCommand = st.nextToken();
		int buffid = 0;
		int bufflevel = 1;
		if (st.countTokens() == 2)
		{
			buffid = Integer.valueOf(st.nextToken());
			bufflevel = Integer.valueOf(st.nextToken());
		}
		else if (st.countTokens() == 1)
			buffid = Integer.valueOf(st.nextToken());
		if (actualCommand.equalsIgnoreCase("getbuff"))
		{
			if (buffid != 0) 
			{
				MagicSkillUse mgc = new MagicSkillUse(this, player, buffid, bufflevel, 5, 0);
				SkillTable.getInstance().getInfo(buffid, bufflevel).getEffects(this, player);
				showMessageWindow(player);
				player.broadcastPacket(mgc);
			}
		} 
		else if (actualCommand.equalsIgnoreCase("restore"))
		{
			final Summon summon = player.getSummon();
			if (summon != null)
				summon.getStatus().setMaxHpMp();
		
//			player.setCurrentHpMp(player.getMaxHp(), player.getMaxMp());
//			player.setCurrentCp(player.getMaxCp());
			showMessageWindow(player);
		} 
		else if (actualCommand.equalsIgnoreCase("cancel")) 
		{
			player.stopAllEffects();
			showMessageWindow(player);
		} 
		else
			super.onBypassFeedback(player, command);
	}

	public void onAction(Player player) 
	{
		if (this != player.getTarget()) 
		{
			player.setTarget(this);
			player.sendPacket(new MyTargetSelected(getObjectId(), player.getStatus().getLevel()));
			player.sendPacket(new ValidateLocation(this));
		} 
		else if (isIn3DRadius(player, INTERACTION_DISTANCE)) 
		{
			SocialAction sa = new SocialAction(this, Rnd.get(8));
			player.broadcastPacket(new SocialAction(player, Rnd.get(8)));
			broadcastPacket(sa);
			player.setCurrentFolk(this);
			showMessageWindow(player);
			player.sendPacket(ActionFailed.STATIC_PACKET);
		}
		else 
		{
	//		player.getAI().setIntention(CtrlIntention.AI_INTENTION_INTERACT);
			player.sendPacket(ActionFailed.STATIC_PACKET);
		}
	}

	private void showMessageWindow(Player player) 
	{
		NpcHtmlMessage html = new NpcHtmlMessage(1);
		StringBuilder strBuffer = new StringBuilder();
		strBuffer.append("<html><body><center>");
		
//		NpcHtmlMessage html = new NpcHtmlMessage(1);
//		final StringBuilder strBuffer = StringUtil.append(3500, "<html><body><center>");
		if (player.isSitting()) 
		{
			player.sendMessage("You can't use buffer while you're sitting.");
			strBuffer.append("Stand up, <font color=\"LEVEL\">%charname%</font>!<br>");
			strBuffer.append("How dare you to talk with me while you're sitting?!<br>");
		}
		else if (player.isAlikeDead())
		{
			player.sendMessage("You can't use buffer while you're dead or using fake death.");
			strBuffer.append("Sadly, <font color=\"LEVEL\">%charname%</font>, you're dead.<br>");
			strBuffer.append("I can't offer any support effect for dead people...<br>");
		}
		else if (player.isInCombat()) 
		{
			player.sendMessage("You can't use buffer while you're in combat.");
			strBuffer.append("Sadly, <font color=\"LEVEL\">%charname%</font>, I can't serve you.<br>");
			strBuffer.append("Came back when you will not be in a combat.<br>");
		}
		else {
			strBuffer.append("<table width=300>");
			strBuffer.append(
					"<tr><td><font color=\"ff9900\">Buffs:</font></td> <td><font color=\"ff9900\">Dances:</font></td> <td><font color=\"ff9900\">Special Buffs:</font></td></tr>");
			strBuffer.append(
					"<tr><td><a action=\"bypass -h npc_%objectId%_getbuff 1204 2\">Wind Walk</a></td> <td><a action=\"bypass -h npc_%objectId%_getbuff 275 1\"><font color=\"7D053F\">Fury</font></a></td> <td><a action=\"bypass -h npc_%objectId%_getbuff 1389 3\"><font color=\"9172EC\">Greater Shield</font></a></td></tr>");
			strBuffer.append(
					"<tr><td><a action=\"bypass -h npc_%objectId%_getbuff 1040 3\">Shield</a></td> <td><a action=\"bypass -h npc_%objectId%_getbuff 274 1\"><font color=\"7D053F\">Fire</font></a></td> <td><a action=\"bypass -h npc_%objectId%_getbuff 1388 3\"><font color=\"9172EC\">Greater Might</font></a></td></tr>");
			strBuffer.append(
					"<tr><td><a action=\"bypass -h npc_%objectId%_getbuff 1243 6\">Bless Shield</a></td> <td><a action=\"bypass -h npc_%objectId%_getbuff 271 1\"><font color=\"7D053F\">Warrior</font></a></td> <td><a action=\"bypass -h npc_%objectId%_getbuff 1357 1\"><font color=\"9172EC\">Prophecy of Wind</font></a></td></tr>");
			strBuffer.append(
					"<tr><td><a action=\"bypass -h npc_%objectId%_getbuff 1068 3\">Might</a></td> <td><a action=\"bypass -h npc_%objectId%_getbuff 272 1\"><font color=\"7D053F\">Inspiration</font></a></td> <td><a action=\"bypass -h npc_%objectId%_getbuff 1355 1\"><font color=\"9172EC\">Prophecy of Water</font></a></td></tr>");
			strBuffer.append(
					"<tr><td><a action=\"bypass -h npc_%objectId%_getbuff 1036 2\">Magic Barrier</a></td> <td><a action=\"bypass -h npc_%objectId%_getbuff 310 1\"><font color=\"7D053F\">Vampire</font></a></td> <td><a action=\"bypass -h npc_%objectId%_getbuff 1356 1\"><font color=\"9172EC\">Prophecy of Fire</font></a></td></tr>");
			strBuffer.append(
					"<tr><td><a action=\"bypass -h npc_%objectId%_getbuff 1259 4\">Resist Shock</a></td> <td><a action=\"bypass -h npc_%objectId%_getbuff 273 1\"><font color=\"7D053F\">Mystic</font></a></td> <td><a action=\"bypass -h npc_%objectId%_getbuff 1363 1\"><font color=\"9172EC\">Chant of Victory</font></a></td></tr>");
			strBuffer.append(
					"<tr><td><a action=\"bypass -h npc_%objectId%_getbuff 1035 4\">Mental Shield</a></td> <td><a action=\"bypass -h npc_%objectId%_getbuff 276 1\"><font color=\"7D053F\">Concentration</font></a></td> <td><a action=\"bypass -h npc_%objectId%_getbuff 1413 1\"><font color=\"9172EC\">Magnu's Chant</font></a></td></tr>");
			strBuffer.append(
					"<tr><td><a action=\"bypass -h npc_%objectId%_getbuff 1045 6\">Blessed Body</a></td> <td><a action=\"bypass -h npc_%objectId%_getbuff 277 1\"><font color=\"7D053F\">Light</font></a></td> <td><a action=\"bypass -h npc_%objectId%_getbuff 1362 1\"><font color=\"9172EC\">Chant of Spirit</font></a></td></tr>");
			strBuffer.append(
					"<tr><td><a action=\"bypass -h npc_%objectId%_getbuff 1048 6\">Blessed Soul</a></td> <td><a action=\"bypass -h npc_%objectId%_getbuff 365 1\"><font color=\"7D053F\">Siren's Dance</font></a></td></tr>");
			strBuffer.append(
					"<tr><td><a action=\"bypass -h npc_%objectId%_getbuff 1062 2\">Berserker Spirit</a></td> <td><font color=\"ff9900\">Songs:</font></td> <td><font color=\"ff9900\">Special Buffs II:</font></td></tr>");
			strBuffer.append(
					"<tr><td><a action=\"bypass -h npc_%objectId%_getbuff 1240 3\">Guidance</a></td><td><a action=\"bypass -h npc_%objectId%_getbuff 264 1\"><font color=\"307D7E\">Earth</font></a></td><td><a action=\"bypass -h npc_%objectId%_getbuff 4703 13\"><font color=\"9E7BFF\">Gift of Seraphim</font></a></td></tr>");
			strBuffer.append(
					"<tr><td><a action=\"bypass -h npc_%objectId%_getbuff 1242 3\">Death Whisper</a></td> <td><a action=\"bypass -h npc_%objectId%_getbuff 267 1\"><font color=\"307D7E\">Warding</font></a></td> <td><a action=\"bypass -h npc_%objectId%_getbuff 4699 13\"><font color=\"9E7BFF\">Blessing of Queen</font></a></td></tr>");
			strBuffer.append(
					"<tr><td><a action=\"bypass -h npc_%objectId%_getbuff 1077 3\">Focus</a></td> <td><a action=\"bypass -h npc_%objectId%_getbuff 304 1\"><font color=\"307D7E\">Vitality</font></a></td> <td><a action=\"bypass -h npc_%objectId%_getbuff 4700 13\"><font color=\"9E7BFF\">Gift of Queen</font></a></td></tr>");
			strBuffer.append(
					"<tr><td><a action=\"bypass -h npc_%objectId%_getbuff 1086 2\">Haste</a></td> <td><a action=\"bypass -h npc_%objectId%_getbuff 269 1\"><font color=\"307D7E\">Hunter</font></a></td> <td><a action=\"bypass -h npc_%objectId%_getbuff 4702 13\"><font color=\"9E7BFF\">Blessing of Seraphim</font></a></td></tr>");
			strBuffer.append(
					"<tr><td><a action=\"bypass -h npc_%objectId%_getbuff 1087 3\">Agility</a></td> <td><a action=\"bypass -h npc_%objectId%_getbuff 268 1\"><font color=\"307D7E\">Wind</font></a></td></tr>");
			strBuffer.append(
					"<tr><td><a action=\"bypass -h npc_%objectId%_getbuff 1085 3\">Acumen</a></td> <td><a action=\"bypass -h npc_%objectId%_getbuff 266 1\"><font color=\"307D7E\">Water</font></a></td> <td><font color=\"ff9900\">Outros:</font></td></tr>");
			strBuffer.append(
					"<tr><td><a action=\"bypass -h npc_%objectId%_getbuff 1059 3\">Empower</a></td> <td><a action=\"bypass -h npc_%objectId%_getbuff 349 1\"><font color=\"307D7E\">Renewal</font></a></td> <td><a action=\"bypass -h npc_%objectId%_restore\"><font color=\"ffffff\">Restore</font></a></td></tr>");
			strBuffer.append(
					"<tr><td><a action=\"bypass -h npc_%objectId%_getbuff 1303 2\">Wild Magic</a></td> <td><a action=\"bypass -h npc_%objectId%_getbuff 364 1\"><font color=\"307D7E\">Champion</font></a></td> <td><a action=\"bypass -h npc_%objectId%_cancel\"><font color=\"ffffff\">Cancel</font></a></td></tr>");
			strBuffer.append(
					"<tr><td><a action=\"bypass -h npc_%objectId%_getbuff 1078 6\">Concentration</a></td></tr>");
			strBuffer.append(
					"<tr><td><a action=\"bypass -h npc_%objectId%_getbuff 1304 3\">Advanced Block</a></td></tr>");
		}
		strBuffer.append("</center></body></html>");
		html.setHtml(strBuffer.toString());
		html.replace("%objectId%", String.valueOf(getObjectId()));
		html.replace("%charname%", player.getName());
		player.sendPacket(html);
	}
}

 

" Os homens tendem a acreditar sobretudo naquilo que menos compreendem. "

Link para o comentário
Compartilhar em outros sites

  • 0

não tem id definido você cria o npc e no type coloca o do npc ( BufferInstance ).

 

" Os homens tendem a acreditar sobretudo naquilo que menos compreendem. "

Link para o comentário
Compartilhar em outros sites

  • 0

 

Eu digitei o código, sem erros, mas eu spawno o npc e ele me diz isso

 

Sin título.png

 

este é o xml

Cita

<npc id="60000" idTemplate="31228" name="Roy the Cat" title="Class Manager">
        <set name="usingServerSideName" val="true"/>
        <set name="usingServerSideTitle" val="true"/>
        <set name="level" val="70"/>
        <set name="radius" val="9"/>
        <set name="height" val="16"/>
        <set name="rHand" val="0"/>
        <set name="lHand" val="0"/>
        <set name="type" val="BufferInstance"/>
        <set name="exp" val="0"/>
        <set name="sp" val="10"/>
        <set name="hp" val="2444.46819"/>
        <set name="mp" val="1345.8"/>
        <set name="hpRegen" val="7.5"/>
        <set name="mpRegen" val="2.7"/>
        <set name="pAtk" val="688.86373"/>
        <set name="pDef" val="295.91597"/>
        <set name="mAtk" val="470.40463"/>
        <set name="mDef" val="216.53847"/>
        <set name="crit" val="4"/>
        <set name="atkSpd" val="253"/>
        <set name="str" val="40"/>
        <set name="int" val="21"/>
        <set name="dex" val="30"/>
        <set name="wit" val="20"/>
        <set name="con" val="43"/>
        <set name="men" val="20"/>
        <set name="corpseTime" val="7"/>
        <set name="walkSpd" val="80"/>
        <set name="runSpd" val="120"/>
        <ai type="DEFAULT" ssCount="0" ssRate="0" spsCount="0" spsRate="0" aggro="0" canMove="true" seedable="false"/>
        <skills>
            <skill id="4045" level="1"/>
            <skill id="4416" level="7"/>
        </skills>
    </npc>

 

Editado por frank1
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 esta pergunta...

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





  • Patrocinadores

  • Quem Está Navegando

    • Nenhum usuário registrado visualizando esta página.
  • Posts

    • Teria como fazer do dusk shield e do zombie shield dessa maneira?     Teria como fazer do dusk shield e do zombie shield dessa maneira?     Teria como fazer do dusk shield e do zombie shield dessa maneira?     Teria como fazer do dusk shield e do zombie shield dessa maneira?     Teria como fazer do dusk shield e do zombie shield dessa maneira?     Teria como fazer do dusk shield e do zombie shield dessa maneira?    
    • muchas gracias muy lindos NPC 🙂
    • relaxa jovem gafanhoto, testa as quests. e posTa os erros indesejaveis.  
    • Se alguém pudesse me ensinar como codificar as missões, eu ficaria feliz em fazer isso sozinho ou pelo menos ajudar. Eu realmente quero jogar em um servidor onde todas as quests funcionem bem e melhor ainda se você puder fazer quests customizadas!
    • mas no interlude, nem todas as quests de class,  vai mostrar onde tem que ir, ate o reborn nao mostrava quando era interlude, só mostrou depois que eles colocaram client classic pra rodar, e ficou melhor ainda quando virou hellbound em diante, mas ha sim alguma chance de modificar isso direto no script para fazer igualmente, só basta te um pouco de paciencia e persistencia exato
    • 408_PathToElvenwizard dá Orion eu tive que mexer tbm, até modifiquei e consegui deixar ela igual do Classic, com a seta e a marcação no mapa. (não retail IL) Dá pra importar py de várias revs, o foda é que não da regular as quest py através do debug em tempo real, pelo menos eu não consegui rsrs
    • Hasta el momento todas las QUESTS son completables si te guias con un tutorial de youtube. El problema es que tienen bugs de locacion y de subquests que no avanzan o no te marcan correctamente a donde ir en el mapa, cosa que en Retail si se ve como corresponde.
    • estranho, mas pelo menos a galera nunca reclamo das quests quando tinha aberto 5x, geral fez class primeira e segunda job, poucos que compraram a class
    • en RUSaCis-3.5 data pack, las Quests estan en formato .java y son diferentes a como estan redactadas en jOrion y jFrozen 1.5 (ProyectX) package net.sf.l2j.gameserver.scripting.quest; import net.sf.l2j.commons.random.Rnd; import net.sf.l2j.gameserver.enums.Paperdoll; import net.sf.l2j.gameserver.enums.QuestStatus; import net.sf.l2j.gameserver.enums.actors.ClassId; import net.sf.l2j.gameserver.model.actor.Creature; import net.sf.l2j.gameserver.model.actor.Npc; import net.sf.l2j.gameserver.model.actor.Player; import net.sf.l2j.gameserver.network.serverpackets.SocialAction; import net.sf.l2j.gameserver.scripting.QuestState; public class Q224_TestOfSagittarius extends SecondClassQuest { private static final String QUEST_NAME = "Q224_TestOfSagittarius"; // Items private static final int BERNARD_INTRODUCTION = 3294; private static final int HAMIL_LETTER_1 = 3295; private static final int HAMIL_LETTER_2 = 3296; private static final int HAMIL_LETTER_3 = 3297; private static final int HUNTER_RUNE_1 = 3298; private static final int HUNTER_RUNE_2 = 3299; private static final int TALISMAN_OF_KADESH = 3300; private static final int TALISMAN_OF_SNAKE = 3301; private static final int MITHRIL_CLIP = 3302; private static final int STAKATO_CHITIN = 3303; private static final int REINFORCED_BOWSTRING = 3304; private static final int MANASHEN_HORN = 3305; private static final int BLOOD_OF_LIZARDMAN = 3306; private static final int CRESCENT_MOON_BOW = 3028; private static final int WOODEN_ARROW = 17; // Rewards private static final int MARK_OF_SAGITTARIUS = 3293; // NPCs private static final int BERNARD = 30702; private static final int HAMIL = 30626; private static final int SIR_ARON_TANFORD = 30653; private static final int VOKIAN = 30514; private static final int GAUEN = 30717; // Monsters private static final int ANT = 20079; private static final int ANT_CAPTAIN = 20080; private static final int ANT_OVERSEER = 20081; private static final int ANT_RECRUIT = 20082; private static final int ANT_PATROL = 20084; private static final int ANT_GUARD = 20086; private static final int NOBLE_ANT = 20089; private static final int NOBLE_ANT_LEADER = 20090; private static final int BREKA_ORC_SHAMAN = 20269; private static final int BREKA_ORC_OVERLORD = 20270; private static final int MARSH_STAKATO_WORKER = 20230; private static final int MARSH_STAKATO_SOLDIER = 20232; private static final int MARSH_STAKATO_DRONE = 20234; private static final int MARSH_SPIDER = 20233; private static final int ROAD_SCAVENGER = 20551; private static final int MANASHEN_GARGOYLE = 20563; private static final int LETO_LIZARDMAN = 20577; private static final int LETO_LIZARDMAN_ARCHER = 20578; private static final int LETO_LIZARDMAN_SOLDIER = 20579; private static final int LETO_LIZARDMAN_WARRIOR = 20580; private static final int LETO_LIZARDMAN_SHAMAN = 20581; private static final int LETO_LIZARDMAN_OVERLORD = 20582; private static final int SERPENT_DEMON_KADESH = 27090; public Q224_TestOfSagittarius() { super(224, "Test Of Sagittarius"); setItemsIds(BERNARD_INTRODUCTION, HAMIL_LETTER_1, HAMIL_LETTER_2, HAMIL_LETTER_3, HUNTER_RUNE_1, HUNTER_RUNE_2, TALISMAN_OF_KADESH, TALISMAN_OF_SNAKE, MITHRIL_CLIP, STAKATO_CHITIN, REINFORCED_BOWSTRING, MANASHEN_HORN, BLOOD_OF_LIZARDMAN, CRESCENT_MOON_BOW); addQuestStart(BERNARD); addTalkId(BERNARD, HAMIL, SIR_ARON_TANFORD, VOKIAN, GAUEN); addMyDying(ANT, ANT_CAPTAIN, ANT_OVERSEER, ANT_RECRUIT, ANT_PATROL, ANT_GUARD, NOBLE_ANT, NOBLE_ANT_LEADER, BREKA_ORC_SHAMAN, BREKA_ORC_OVERLORD, MARSH_STAKATO_WORKER, MARSH_STAKATO_SOLDIER, MARSH_STAKATO_DRONE, MARSH_SPIDER, ROAD_SCAVENGER, MANASHEN_GARGOYLE, LETO_LIZARDMAN, LETO_LIZARDMAN_ARCHER, LETO_LIZARDMAN_SOLDIER, LETO_LIZARDMAN_WARRIOR, LETO_LIZARDMAN_SHAMAN, LETO_LIZARDMAN_OVERLORD, SERPENT_DEMON_KADESH); } @Override public String onAdvEvent(String event, Npc npc, Player player) { String htmltext = event; QuestState st = player.getQuestList().getQuestState(QUEST_NAME); if (st == null) return htmltext; // BERNARD if (event.equalsIgnoreCase("30702-04.htm")) { st.setState(QuestStatus.STARTED); st.setCond(1); playSound(player, SOUND_ACCEPT); giveItems(player, BERNARD_INTRODUCTION, 1); if (giveDimensionalDiamonds39(player)) htmltext = "30702-04a.htm"; } // HAMIL else if (event.equalsIgnoreCase("30626-03.htm")) { st.setCond(2); playSound(player, SOUND_MIDDLE); takeItems(player, BERNARD_INTRODUCTION, 1); giveItems(player, HAMIL_LETTER_1, 1); } else if (event.equalsIgnoreCase("30626-07.htm")) { st.setCond(5); playSound(player, SOUND_MIDDLE); takeItems(player, HUNTER_RUNE_1, 10); giveItems(player, HAMIL_LETTER_2, 1); } // SIR_ARON_TANFORD else if (event.equalsIgnoreCase("30653-02.htm")) { st.setCond(3); playSound(player, SOUND_MIDDLE); takeItems(player, HAMIL_LETTER_1, 1); } // VOKIAN else if (event.equalsIgnoreCase("30514-02.htm")) { st.setCond(6); playSound(player, SOUND_MIDDLE); takeItems(player, HAMIL_LETTER_2, 1); } return htmltext; } @Override public String onTalk(Npc npc, Player player) { String htmltext = getNoQuestMsg(); QuestState st = player.getQuestList().getQuestState(QUEST_NAME); if (st == null) return htmltext; switch (st.getState()) { case CREATED: if (player.getClassId() != ClassId.ROGUE && player.getClassId() != ClassId.ELVEN_SCOUT && player.getClassId() != ClassId.ASSASSIN) htmltext = "30702-02.htm"; else if (player.getStatus().getLevel() < 39) htmltext = "30702-01.htm"; else htmltext = "30702-03.htm"; break; case STARTED: int cond = st.getCond(); switch (npc.getNpcId()) { case BERNARD: htmltext = "30702-05.htm"; break; case HAMIL: if (cond == 1) htmltext = "30626-01.htm"; else if (cond == 2 || cond == 3) htmltext = "30626-04.htm"; else if (cond == 4) htmltext = "30626-05.htm"; else if (cond > 4 && cond < 8) htmltext = "30626-08.htm"; else if (cond == 8) { htmltext = "30626-09.htm"; st.setCond(9); playSound(player, SOUND_MIDDLE); takeItems(player, HUNTER_RUNE_2, 10); giveItems(player, HAMIL_LETTER_3, 1); } else if (cond > 8 && cond < 12) htmltext = "30626-10.htm"; else if (cond == 12) { htmltext = "30626-11.htm"; st.setCond(13); playSound(player, SOUND_MIDDLE); } else if (cond == 13) htmltext = "30626-12.htm"; else if (cond == 14) { htmltext = "30626-13.htm"; takeItems(player, BLOOD_OF_LIZARDMAN, -1); takeItems(player, CRESCENT_MOON_BOW, 1); takeItems(player, TALISMAN_OF_KADESH, 1); giveItems(player, MARK_OF_SAGITTARIUS, 1); rewardExpAndSp(player, 54726, 20250); player.broadcastPacket(new SocialAction(player, 3)); playSound(player, SOUND_FINISH); st.exitQuest(false); } break; case SIR_ARON_TANFORD: if (cond == 2) htmltext = "30653-01.htm"; else if (cond > 2) htmltext = "30653-03.htm"; break; case VOKIAN: if (cond == 5) htmltext = "30514-01.htm"; else if (cond == 6) htmltext = "30514-03.htm"; else if (cond == 7) { htmltext = "30514-04.htm"; st.setCond(8); playSound(player, SOUND_MIDDLE); takeItems(player, TALISMAN_OF_SNAKE, 1); } else if (cond > 7) htmltext = "30514-05.htm"; break; case GAUEN: if (cond == 9) { htmltext = "30717-01.htm"; st.setCond(10); playSound(player, SOUND_MIDDLE); takeItems(player, HAMIL_LETTER_3, 1); } else if (cond == 10) htmltext = "30717-03.htm"; else if (cond == 11) { htmltext = "30717-02.htm"; st.setCond(12); playSound(player, SOUND_MIDDLE); takeItems(player, MANASHEN_HORN, 1); takeItems(player, MITHRIL_CLIP, 1); takeItems(player, REINFORCED_BOWSTRING, 1); takeItems(player, STAKATO_CHITIN, 1); giveItems(player, CRESCENT_MOON_BOW, 1); giveItems(player, WOODEN_ARROW, 10); } else if (cond > 11) htmltext = "30717-04.htm"; break; } break; case COMPLETED: htmltext = getAlreadyCompletedMsg(); break; } return htmltext; } @Override public void onMyDying(Npc npc, Creature killer) { final Player player = killer.getActingPlayer(); final QuestState st = checkPlayerState(player, npc, QuestStatus.STARTED); if (st == null) return; switch (npc.getNpcId()) { case ANT: case ANT_CAPTAIN: case ANT_OVERSEER: case ANT_RECRUIT: case ANT_PATROL: case ANT_GUARD: case NOBLE_ANT: case NOBLE_ANT_LEADER: if (st.getCond() == 3 && dropItems(player, HUNTER_RUNE_1, 1, 10, 500000)) st.setCond(4); break; case BREKA_ORC_SHAMAN: case BREKA_ORC_OVERLORD: if (st.getCond() == 6 && dropItems(player, HUNTER_RUNE_2, 1, 10, 500000)) { st.setCond(7); giveItems(player, TALISMAN_OF_SNAKE, 1); } break; case MARSH_STAKATO_WORKER: case MARSH_STAKATO_SOLDIER: case MARSH_STAKATO_DRONE: if (st.getCond() == 10 && dropItems(player, STAKATO_CHITIN, 1, 1, 100000) && player.getInventory().hasItems(MANASHEN_HORN, MITHRIL_CLIP, REINFORCED_BOWSTRING)) st.setCond(11); break; case MARSH_SPIDER: if (st.getCond() == 10 && dropItems(player, REINFORCED_BOWSTRING, 1, 1, 100000) && player.getInventory().hasItems(MANASHEN_HORN, MITHRIL_CLIP, STAKATO_CHITIN)) st.setCond(11); break; case ROAD_SCAVENGER: if (st.getCond() == 10 && dropItems(player, MITHRIL_CLIP, 1, 1, 100000) && player.getInventory().hasItems(MANASHEN_HORN, REINFORCED_BOWSTRING, STAKATO_CHITIN)) st.setCond(11); break; case MANASHEN_GARGOYLE: if (st.getCond() == 10 && dropItems(player, MANASHEN_HORN, 1, 1, 100000) && player.getInventory().hasItems(REINFORCED_BOWSTRING, MITHRIL_CLIP, STAKATO_CHITIN)) st.setCond(11); break; case LETO_LIZARDMAN: case LETO_LIZARDMAN_ARCHER: case LETO_LIZARDMAN_SOLDIER: case LETO_LIZARDMAN_WARRIOR: case LETO_LIZARDMAN_SHAMAN: case LETO_LIZARDMAN_OVERLORD: if (st.getCond() == 13) { if (((player.getInventory().getItemCount(BLOOD_OF_LIZARDMAN) - 120) * 5) > Rnd.get(100)) { playSound(player, SOUND_BEFORE_BATTLE); takeItems(player, BLOOD_OF_LIZARDMAN, -1); addSpawn(SERPENT_DEMON_KADESH, player, false, 300000, true); } else dropItemsAlways(player, BLOOD_OF_LIZARDMAN, 1, 0); } break; case SERPENT_DEMON_KADESH: if (st.getCond() == 13) { if (player.getInventory().getItemIdFrom(Paperdoll.RHAND) == CRESCENT_MOON_BOW) { st.setCond(14); playSound(player, SOUND_MIDDLE); giveItems(player, TALISMAN_OF_KADESH, 1); } else addSpawn(SERPENT_DEMON_KADESH, player, false, 300000, true); } break; } } }  
×
×
  • 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.