Ir para conteúdo
  • Cadastre-se
  • 0

Troca de itens


Schuster

Pergunta

Boa tarde,

 

Como eu faço para que ao clicar em um botão o player receba tal item, sendo que ele deve ter alguns itens para poder realizar essa troca.

 

O player vai farmar 4 itens.

 

Ao ter estes 4 itens ele vai no NPC e clica no botão reward, que vai lhe conceder um novo item mas vai lhe retirar os 4 que ele farmou.

 

Consigo fazer isso direto na html? Existe alguma action?

 

Ou somente no core?

 

 

Link para o comentário
Compartilhar em outros sites

22 respostass a esta questão

Posts recomendados

  • 0

Não amigo, criei um array não foi atoa, é só uma config para todos os itens, vou editar aqui e te mando.


import sys
from com.l2jfrozen.gameserver.model.quest import State
from com.l2jfrozen.gameserver.model.quest import QuestState
from com.l2jfrozen.gameserver.model.quest.jython import QuestJython as JQuest

qn = "9666_EventPuzzle"

# Credits Tayran.JavaDev

NPC = [66669]
ITEM_REQUIRED = [9901,9902,9903,9904]
ITEM_COUNT = [1,1,1,1]
REWARD_ID = 9514
REWARD_COUNT = 1
QuestId     = 9666
QuestName   = "9666_EventPuzzle"
QuestDesc   = "custom"
InitialHtml = "1.htm"

print "9666_EventPuzzle NPC By Tayran.JavaDev"

class Quest (JQuest) :

    def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)

    def onEvent(self,event,st):
                htmltext = "<html><head><body>I have nothing to say you</body></html>"
                countRequired0=st.getQuestItemsCount(ITEM_REQUIRED[0])
                countRequired1=st.getQuestItemsCount(ITEM_REQUIRED[1])
                countRequired2=st.getQuestItemsCount(ITEM_REQUIRED[2])
                countRequired3=st.getQuestItemsCount(ITEM_REQUIRED[3])
                if countRequired0 < ITEM_COUNT[0] or countRequired1 < ITEM_COUNT[1] or countRequired2 < ITEM_COUNT[2] or countRequired3 < ITEM_COUNT[3] :
                    htmltext = "<html><head><body>Voce nao tem todos os itens necessarios para fazer a troca.</body></html>"
                    return htmltext
                else:
                    if event == "1":
                        st.takeItems(ITEM_REQUIRED[0],ITEM_COUNT[0])
                        st.takeItems(ITEM_REQUIRED[1],ITEM_COUNT[1])
                        st.takeItems(ITEM_REQUIRED[2],ITEM_COUNT[2])
                        st.takeItems(ITEM_REQUIRED[3],ITEM_COUNT[3])
                        st.giveItems(REWARD_ID,REWARD_COUNT)
                        return "1.htm"
                        st.setState(COMPLETED)
                        st.exitQuest(1)

                    if htmltext != event:
                        st.setState(COMPLETED)
                        st.exitQuest(1)

    def onTalk (self,npc,player):
                   st = player.getQuestState(qn)
                   htmltext = "<html><head><body>I have nothing to say to you</body></html>"
                   return InitialHtml

QUEST = Quest(QuestId,qn,QuestDesc)
CREATED     = State('Start',     QUEST)

for npcId in NPC:
 QUEST.addStartNpc(npcId)
 QUEST.addTalkId(npcId)



Resolvido ? tudo ok ?

Editado por Tayran.JavaDev

"Tente ser uma pessoa de valor , não de sucesso" - Albert Einstein

 

 

Link para o comentário
Compartilhar em outros sites


  • 0

Boa tarde,

 

Como eu faço para que ao clicar em um botão o player receba tal item, sendo que ele deve ter alguns itens para poder realizar essa troca.

 

O player vai farmar 4 itens.

 

Ao ter estes 4 itens ele vai no NPC e clica no botão reward, que vai lhe conceder um novo item mas vai lhe retirar os 4 que ele farmou.

 

Consigo fazer isso direto na html? Existe alguma action?

 

Ou somente no core?

 

 

 

Você consegue fazer isso com script em java ou jython.

"Tente ser uma pessoa de valor , não de sucesso" - Albert Einstein

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

Mas eu teria que ter acesso ao código fonte da revisão, correto?

 

Não, se fosse rev que não tem integração jython ai era só na fonte mesmo, mas no seu caso você consegue fazer um script igual npc buffer.

Editado por Tayran.JavaDev

"Tente ser uma pessoa de valor , não de sucesso" - Albert Einstein

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

 

É um NPC Event (reward), se vender no gm shop vai perder a essência do que eu quero fazer.

então, vc cria um npc so com um botão, um novo "gmshop" so para este item. :D

assHawk.png.223bfb6b0ff30e48604023c41da0c7c5.png

 

Link para o comentário
Compartilhar em outros sites

  • 0

Mas não quero que tenha multisell, quero que ao clicar no botão "Reward" ele retire os 4 itens e entregue um.


Tentando criar o script por base de outros, acho que estou quase lá!

 

Mas estou recebendo este erro:

 

ogmSCQY.png

 

O código do script é esse:

import sys
from com.l2jfrozen.gameserver.model.actor.instance import L2PcInstance
from com.l2jfrozen.gameserver.model.actor.instance import L2NpcInstance
from java.util import Iterator
from com.l2jfrozen.util.database import L2DatabaseFactory
from com.l2jfrozen.gameserver.model.quest import State
from com.l2jfrozen.gameserver.model.quest import QuestState
from com.l2jfrozen.gameserver.model.quest.jython import QuestJython as JQuest

qn = "9999_EventPuzzle"

NPC=[140]
EVENT_COIN=9514
PUZZLE_ITEM=9515
QuestId     = 9999
QuestName   = "EventPuzzle"
QuestDesc   = "custom"
InitialHtml = "140.htm"

print "INFO  Event Puzzle: Loaded"

class Quest (JQuest) :

	def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)

	def onEvent(self,event,st):
               htmltext = "140-1.htm"
               cond = st.getInt("cond")
               count=st.getQuestItemsCount(PUZZLE_ITEM)
               if event == "140-2.htm" :
                   if cond == 0 and st.getPlayer():
                       if st.getPlayer().getLevel() >= 76 and count > 1:
                            htmltext=event
                            st.set("cond","0")
                            st.giveItems(EVENT_COIN,1)
                            st.playSound("ItemSound.quest_finish")
                            st.setState(COMPLETED)
                            st.takeItems(PUZZLE_ITEM,1)							
		   else :
                            htmltext="140-3.htm"
                            st.exitQuest(1)
                   else :
                            htmltext="140-4.htm"
                            st.exitQuest(1)
               return htmltext

	def onTalk (self,npc,player):
	   htmltext = "<html><head><body>I have nothing to say you</body></html>"
           st = player.getQuestState(qn)
           if not st : return htmltext
           npcId = npc.getNpcId()
           id = st.getState()
           if id == CREATED :
               st.set("cond","0")
               htmltext="140-1.htm"
           elif id == COMPLETED :
               htmltext = "140-2.htm"
           else :
               st.exitQuest(1)
           return htmltext


QUEST = Quest(9999,qn,"custom")
CREATED     = State('Start', QUEST)
STARTING    = State('Starting', QUEST)
STARTED     = State('Started', QUEST)
COMPLETED   = State('Completed', QUEST)
QUEST.setInitialState(CREATED)

for npcId in NPC:
 QUEST.addStartNpc(npcId)
 QUEST.addTalkId(npcId)

Poderiam me ajudar a resolver este erro?

Link para o comentário
Compartilhar em outros sites

  • 0

import sys
from com.l2jfrozen.gameserver.model.quest import State
from com.l2jfrozen.gameserver.model.quest import QuestState
from com.l2jfrozen.gameserver.model.quest.jython import QuestJython as JQuest

qn = "9666_EventPuzzle"

# Credits Tayran.JavaDev

NPC = [66669]
ITEM_REQUIRED_ = [9515]
ITEM_COUNT_ = [1]
REWARD_ID = 9514
REWARD_COUNT = 1
QuestId     = 9666
QuestName   = "9666_EventPuzzle"
QuestDesc   = "custom"
InitialHtml = "1.htm"

print "9666_EventPuzzle NPC By Tayran.JavaDev"

class Quest (JQuest) :

	def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)

	def onEvent(self,event,st):
               htmltext = "<html><head><body>I have nothing to say you</body></html>"
               countRequired=st.getQuestItemsCount(ITEM_REQUIRED[0])
               if countRequired < ITEM_COUNT[0] :
			htmltext = "<html><head><body>Voce nao tem todos os itens necessarios para fazer a troca.</body></html>"
			return htmltext
               else:
			st.getPlayer().setTarget(st.getPlayer())
			
			if event == "Puzzle":
				st.takeItems(ITEM_REQUIRED[0],ITEM_COUNT[0])
				st.giveItems(REWARD_ID,REWARD_COUNT)
				return "1.htm"
				st.setState(COMPLETED)
				st.exitQuest(1)

			if htmltext != event:
				st.setState(COMPLETED)
				st.exitQuest(1)

	def onTalk (self,npc,player):
               st = player.getQuestState(qn)
               htmltext = "<html><head><body>I have nothing to say to you</body></html>"
               return InitialHtml

QUEST = Quest(QuestId,qn,QuestDesc)
CREATED     = State('Start',     QUEST)

for npcId in NPC:
 QUEST.addStartNpc(npcId)
 QUEST.addTalkId(npcId)

 

Testa ai.

Editado por Tayran.JavaDev

"Tente ser uma pessoa de valor , não de sucesso" - Albert Einstein

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

Não, está errado, a primeira HTML tem que está redirecionada para quest : <button value="Buy Item" action="bypass -h npc_%objectId%_Quest 9666_EventPuzzle" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal">

 

e a html 1.htm deve conter o seguinte botão para comprar :

<button value="Buy Item Only for VIP" action="bypass -h Quest 9666_EventPuzzle Puzzle" width=210 height=21 back="sek.cbui75" fore="sek.cbui75">

 

Testa e me fala o resultado.

"Tente ser uma pessoa de valor , não de sucesso" - Albert Einstein

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

Aparece isso... apos clicar no botão para realizar a troca:

 

12ac085d53ba40c09eef509b7ca55087.png

 

 

Segue as imagens com as html..

 

HTML 1.htm que está na pasta do script

 

ad245746bcf64a039429cd160ddb2011.png

 

HTML 140.htm que está na pasta default dentro da pasta html

 

ae3491f9a0ca4668a9236709c453fa07.png

 

Da html 140 puxa certinho para a do script que é a 1, mas ao clicar pra realizar a troca, aparecer aquela primeira janela.

Editado por Schuster
Link para o comentário
Compartilhar em outros sites

  • 0
import sys
from com.l2jfrozen.gameserver.model.quest import State
from com.l2jfrozen.gameserver.model.quest import QuestState
from com.l2jfrozen.gameserver.model.quest.jython import QuestJython as JQuest

qn = "9666_EventPuzzle"

# Credits Tayran.JavaDev

NPC = [66669]
ITEM_REQUIRED = [9515]
ITEM_COUNT = [1]
REWARD_ID = 9514
REWARD_COUNT = 1
QuestId     = 9666
QuestName   = "9666_EventPuzzle"
QuestDesc   = "custom"
InitialHtml = "1.htm"

print "9666_EventPuzzle NPC By Tayran.JavaDev"

class Quest (JQuest) :

	def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)

	def onEvent(self,event,st):
               htmltext = "<html><head><body>I have nothing to say you</body></html>"
               countRequired=st.getQuestItemsCount(ITEM_REQUIRED[0])
               if countRequired < ITEM_COUNT[0] :
					htmltext = "<html><head><body>Voce nao tem todos os itens necessarios para fazer a troca.</body></html>"
					return htmltext
               else:
					st.getPlayer().setTarget(st.getPlayer())
			
			if event == "Puzzle":
				st.takeItems(ITEM_REQUIRED[0],ITEM_COUNT[0])
				st.giveItems(REWARD_ID,REWARD_COUNT)
				return "1.htm"
				st.setState(COMPLETED)
				st.exitQuest(1)

			if htmltext != event:
				st.setState(COMPLETED)
				st.exitQuest(1)

	def onTalk (self,npc,player):
               st = player.getQuestState(qn)
               htmltext = "<html><head><body>I have nothing to say to you</body></html>"
               return InitialHtml

QUEST = Quest(QuestId,qn,QuestDesc)
CREATED     = State('Start',     QUEST)

for npcId in NPC:
 QUEST.addStartNpc(npcId)
 QUEST.addTalkId(npcId)

Erro de digitação no código. testa.

"Tente ser uma pessoa de valor , não de sucesso" - Albert Einstein

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

 

 

import sys
from com.l2jfrozen.gameserver.model.quest import State
from com.l2jfrozen.gameserver.model.quest import QuestState
from com.l2jfrozen.gameserver.model.quest.jython import QuestJython as JQuest

qn = "9666_EventPuzzle"

# Credits Tayran.JavaDev

NPC = [66669]
ITEM_REQUIRED = [9515]
ITEM_COUNT = [1]
REWARD_ID = 9514
REWARD_COUNT = 1
QuestId     = 9666
QuestName   = "9666_EventPuzzle"
QuestDesc   = "custom"
InitialHtml = "1.htm"

print "9666_EventPuzzle NPC By Tayran.JavaDev"

class Quest (JQuest) :

    def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)

    def onEvent(self,event,st):
                htmltext = "<html><head><body>I have nothing to say you</body></html>"
                countRequired=st.getQuestItemsCount(ITEM_REQUIRED[0])
                if countRequired < ITEM_COUNT[0]:
                    htmltext = "<html><head><body>Voce nao tem todos os itens necessarios para fazer a troca.</body></html>"
                    return htmltext
                else:
                    if event == "1":
                        st.takeItems(ITEM_REQUIRED[0],ITEM_COUNT[0])
                        st.giveItems(REWARD_ID,REWARD_COUNT)
                        return "1.htm"
                        st.setState(COMPLETED)
                        st.exitQuest(1)

                    if htmltext != event:
                        st.setState(COMPLETED)
                        st.exitQuest(1)

    def onTalk (self,npc,player):
                   st = player.getQuestState(qn)
                   htmltext = "<html><head><body>I have nothing to say to you</body></html>"
                   return InitialHtml

QUEST = Quest(QuestId,qn,QuestDesc)
CREATED     = State('Start',     QUEST)

for npcId in NPC:
 QUEST.addStartNpc(npcId)
 QUEST.addTalkId(npcId)

 

 

"Tente ser uma pessoa de valor , não de sucesso" - Albert Einstein

 

 

Link para o comentário
Compartilhar em outros sites

  • 0

Agora está ok, funcionando perfeitamente! :boxing: :boxing:

 

Para adicionar os outros itens, que são 4...

 

Posso seguir esta logica?

ITEM_REQUIRED_1 = [9901]
ITEM_REQUIRED_2 = [9902]
ITEM_REQUIRED_3 = [9903]
ITEM_REQUIRED_4 = [9904]

countRequired=st.getQuestItemsCount(ITEM_REQUIRED_1[0],ITEM_REQUIRED_2[0],ITEM_REQUIRED_3[0],ITEM_REQUIRED_4[0])

st.takeItems(ITEM_REQUIRED_1[0],ITEM_REQUIRED_2[0],ITEM_REQUIRED_3[0],ITEM_REQUIRED_4[0],ITEM_COUNT[0])
Editado por Schuster
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.