Ir para conteúdo
  • Cadastre-se
  • 0

AIO e VIP com NPC


Michelle

Pergunta

Ola amigos do L2JBRASIL, gostaria de saber como faço para adicionar um NPC vendendo AIO e VIP ambos os 2 serviços validos por 30 dias.

 

OBS.: Meu servidor já tem AIO mas e apenas com comando //setaio name days, e vip ainda não tenho.

 

Obrigada *-*

Editado por Michelle

"Os problemas significativos que enfrentamos não podem ser resolvidos no mesmo nível de pensamento em que estávamos quando os criamos."


Albert Einstein

Link para o comentário
Compartilhar em outros sites

Posts recomendados

  • 0

Facil

Vá até \gameserver\config\head e abra o other.properties na pasta do servidor Frozen, em seguida procure por essa linha

 

34e9jk6.png

 

Vip e Aio item você configura um item a seu gosto e poe em um npc a venda.

Editado por Hawkspirit

xvotVZ4.png


Voltando pro Forum !

Link para o comentário
Compartilhar em outros sites


  • 0

Facil

Vá até \gameserver\config\head e abra o other.properties na pasta do servidor Frozen, em seguida procure por essa linha

 

34e9jk6.png

 

Vip e Aio item você configura um item a seu gosto e poe em um npc a venda.

Ola Hawkspirit, muito obrigada pela atenção, desculpa eu não me expressei muito bem, vou explicar novamente eu não quero vender um item que ao clicar o personagem se torna AIO, o NPC AIO e VIP que eu gostaria seria semelhante a esse da imagem abaixo, mas o da imagem e apenas AIO, eu gostaria que fosse com a opção AIO e VIP, caso nao seja possivel add o VIP ai sim poderia o VIP ser com um item Double clique.

Gu7GccN.png

"Os problemas significativos que enfrentamos não podem ser resolvidos no mesmo nível de pensamento em que estávamos quando os criamos."


Albert Einstein

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Michele

 

Segue esse Link.

 

É um tutorial explicando como fazer pra configurar um Aio Seller

Instagram | Twitter | YouTube 

bWhRF.png

 

                                                                                  2011 - 2024

 

Link para o comentário
Compartilhar em outros sites

  • 0

@Cymbals não sei se esse tutorial seria util pra o dono do topico, pois ai só ensina a cria a sql do npc e muda o tempo do aio e ela quer adicionar o Vip

 

A solução que eu te dou é que faça o que eu disse, não sei se esse mod é util, é um bom mod, porem na frozen tem o mod do item double click Aio e Vip, que ao meu ver é melhor.

 

Talvez você queira adicionar esse mod pelo fato do desconto, se for esse o problema vou dar uma "solução"

Exemplo: vamos supor que o Aio ou Vip item custa 30 medalhas um mês, porem você quer bota dois meses a venda, você vai no npc que você adicionou o Vip ou Aio Item para a venda, na multsell você muda o "Count" (quantidade) para 2 Item vip ou aio, mas pelo preço de 50 medalhas, ou seja o player vai compra 2 Itens Aio ou Vip por 50 medalhas (desconto de 10 medalhas)

xvotVZ4.png


Voltando pro Forum !

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Michele

 

Segue esse Link.

 

É um tutorial explicando como fazer pra configurar um Aio Seller

Obrigada CymBals vou dar uma olhadinha *-*

@Cymbals não sei se esse tutorial seria util pra o dono do topico, pois ai só ensina a cria a sql do npc e muda o tempo do aio e ela quer adicionar o Vip

 

A solução que eu te dou é que faça o que eu disse, não sei se esse mod é util, é um bom mod, porem na frozen tem o mod do item double click Aio e Vip, que ao meu ver é melhor.

 

Talvez você queira adicionar esse mod pelo fato do desconto, se for esse o problema vou dar uma "solução"

 

Exemplo: vamos supor que o Aio ou Vip item custa 30 medalhas um mês, porem você quer bota dois meses a venda, você vai no npc que você adicionou o Vip ou Aio Item para a venda, na multsell você muda o "Count" (quantidade) para 2 Item vip ou aio, mas pelo preço de 50 medalhas, ou seja o player vai compra 2 Itens Aio ou Vip por 50 medalhas (desconto de 10 medalhas)

Ola Hawkspirit, na revisao 1118 nao tem essas moedas para vip e aio, tem apenas para nobles e hero, acho que eu devo add algum MOD para o VIP :(

Editado por Michelle

"Os problemas significativos que enfrentamos não podem ser resolvidos no mesmo nível de pensamento em que estávamos quando os criamos."


Albert Einstein

Link para o comentário
Compartilhar em outros sites

  • 0

Desculpe eu achei que a rev que tinha aqui 1118 era limpa porem é essa aqui http://www.l2jbrasil.com/index.php?/topic/112198-l2jfrozen-compilada-rev-1118-com-mods/

 

é só você migrar o seu servidor para esse que é a mesma revisão porem com mods

xvotVZ4.png


Voltando pro Forum !

Link para o comentário
Compartilhar em outros sites

  • 0

Desculpe eu achei que a rev que tinha aqui 1118 era limpa porem é essa aqui http://www.l2jbrasil.com/index.php?/topic/112198-l2jfrozen-compilada-rev-1118-com-mods/

 

é só você migrar o seu servidor para esse que é a mesma revisão porem com mods

Não seria mais fácil eu apenas add o MOD de VIP, e complementar o item no MOD de AIO que eu ja tenho ? porque o pessoal já me ajudou add uns mods e se eu for mudar tudo pra outra revisão eu acho que seria mais demorado, se alguém poder me ajudar a add o MOD de VIP e complementar o meu MOD de AIO eu ficaria agradecida, assim eu ja vou criando 2 itens custom, uma "runa VIP" para o VIP, e um Tickt AIO para o AIO *-*

Editado por Michelle

"Os problemas significativos que enfrentamos não podem ser resolvidos no mesmo nível de pensamento em que estávamos quando os criamos."


Albert Einstein

Link para o comentário
Compartilhar em outros sites

  • 0

No forum tem este NPC, so nao lembro onde.

 

De qualquer maneira faça o seguinte

 

crie uma pasta no caminho: gameserver\data\scripts\custom

crie uma pasta e coloque o nome de 10000_AioSeller

dentro dela crie um arquivo chamado __init__.py outro 1.htm e outro no.htm

 

depois coloque isso dentro:

 

__init__.py

 

 

#Created By Cheed!!!

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 import Config
from com.l2jfrozen.gameserver.model.quest.jython import QuestJython as JQuest
from com.l2jfrozen.gameserver.datatables import SkillTable
from com.l2jfrozen.gameserver.network.serverpackets import SocialAction
from com.l2jfrozen.gameserver.model.quest.jython import QuestJython as JQuest

qn = "10000_AioSeller"

NPC=[10000]

#iD do item que sera a moeda.
Moeda= ID DA MOEDA
#ID da Dual AIO
DUAL= ID DA DUAL
#Quantidade de dias e item para a opcao 1.
DIAS_AIO1= 30
ItemCount1=30
#Quantidade de dias e item para a opcao 2.
DIAS_AIO2= 60
ItemCount2=60
#Quantidade de dias e item para a opcao 3.
DIAS_AIO3= 90
ItemCount3=90

QuestId     = 10000
QuestName   = "AioSeller"
QuestDesc   = "custom"
InitialHtml = "1.htm"

print "INFO  AioSeller==> ON"

class Quest (JQuest) :

 def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
 
 def onAdvEvent (self,event,npc,player) :
    htmltext = event
    st = player.getQuestState(qn)
    if not st: return

    def doAio(player,days) :
     st.getPlayer().setAio(True)
     st.player.getStat().addExp(player.getStat().getExpForLevel(81));
     st.giveItems(DUAL,1)
     st.player.setEndTime("aio", days);
     st.player.broadcastPacket(SocialAction(st.player.getObjectId(),16))	
     st.player.getAppearance().setNameColor(Config.AIO_NCOLOR)
     st.player.getAppearance().setTitleColor(Config.AIO_TCOLOR)
     st.player.rewardAioSkills()
     st.player.sendSkillList()

	 
    if event == "1" :
     if st.getPlayer().isAio():
      return "no.htm"
     else :
        if st.getQuestItemsCount(Moeda) >= ItemCount1 :
                  st.takeItems(Moeda,ItemCount1)			  
                  doAio(st.player, DIAS_AIO1)				  
                  st.player.sendMessage("Parabens Voce Virou AioX!")
                  return "1.htm"
        else:
         st.player.sendMessage("Precisa ter 30 FB Coins. Volte quando tiver!")
         return "1.htm"

    elif event == "2" :
     if st.getPlayer().isAio():
      return "no.htm"
     else :
        if st.getQuestItemsCount(Moeda) >= ItemCount2 :
                  st.takeItems(Moeda,ItemCount2)				  
                  doAio(st.player, DIAS_AIO2);				  			  
                  st.player.sendMessage("Parabens Voce Virou AioX")				  
                  return "1.htm"
        else:
         st.player.sendMessage("Precisa ter 50 FB Coins. Volte quando tiver!")
         return "1.htm"

    elif event == "3" :
     if st.getPlayer().isAio():
      return "no.htm"
     else :
        if st.getQuestItemsCount(Moeda) >= ItemCount3 :
                  st.takeItems(Moeda,ItemCount3)				  
                  doAio(st.player, DIAS_AIO3);				  			  
                  st.player.sendMessage("Parabens Voce Virou AioX!")				  
                  return "1.htm"
        else:
         st.player.sendMessage("Precisa ter 70 FB Coins. Volte quando tiver!")
         return "1.htm"
		 
    return htmltext		
	
 def onTalk (self,npc,player):
		htmltext = "<html><head><body>You can't buy while you are</body></html>"
		st = player.getQuestState(qn)
		if not st : return htmltext
		npcId = npc.getNpcId()		
		if st.player.getPvpFlag() > 0 :#Player Flag
			htmltext = "<html><head><body>You can't buy while you are <font color=\"800080\">flagged!</font><br>Wait some time and try again!</body></html>"
			st.exitQuest(1)
		elif st.player.getKarma() > 0 :#Player com Karma
			st.exitQuest(1)
			htmltext = "<html><head><body>You have too much <font color=\"FF0000\">karma!</font><br>Come back,<br>when you don't have any karma!</body></html>"
		elif st.player.isInCombat() :#Player modo de Combate
			st.exitQuest(1)
			htmltext = "<html><head><body>You can't buy while you are attacking!<br>Stop your fight and try again!</body></html>"
		else:
			
			return InitialHtml
		return htmltext

QUEST = Quest(10000,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)
 

 

 

 

1.htm

 

 

<html><body>
<center>
<font color="333333" align="center">_______________________________________</font>
<table width=124 align="center">
	<tr>
		<td width=32><img src=Icon.etc_alphabet_a_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_i_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_o_i00 height=32 width=32></td>
	</tr>
</table>
<table width=124 align="center">
	<tr>
		<td width=32><img src=Icon.etc_alphabet_s_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_e_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_l_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_l_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_e_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_r_i00 height=32 width=32></td>
	</tr>
</table>
<br>
<br>
<br>
<br>
<br>
<img src="l2ui_ch3.herotower_deco" width=256 height=32>
<br><center><button value="Virar AioX 30 Dias" action="bypass -h npc_%objectId%_Chat 61" width=205 height=20 back="sek.cbui81" fore="sek.cbui79"></center>
<br>

<br><center><button value="Virar AioX 60 Dias" action="bypass -h npc_%objectId%_Chat 62" width=205 height=20 back="sek.cbui81" fore="sek.cbui79"></center>
<br>

<br><center><button value="Virar AioX 90 Dias" action="bypass -h npc_%objectId%_Chat 63" width=205 height=20 back="sek.cbui81" fore="sek.cbui79"></center>
<br>

<img src="l2ui_ch3.herotower_deco" width=256 height=32>
<br>
<font color="333333" align="center">_______________________________________</font>
</center><br>
</body></html> 

 

 

 

2.htm

 

 

<html><body>
<center>
<font color="333333" align="center">_______________________________________</font>
<table width=124 align="center">
	<tr>
		<td width=32><img src=Icon.etc_alphabet_a_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_i_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_o_i00 height=32 width=32></td>
	</tr>
</table>
<table width=124 align="center">
	<tr>
		<td width=32><img src=Icon.etc_alphabet_s_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_e_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_l_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_l_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_e_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_r_i00 height=32 width=32></td>
	</tr>
</table>
<br><br><br><br>
<br><br>
<img src="l2ui_ch3.herotower_deco" width=256 height=32>
Voce ja tem status de aioX!
<br>
Volte aqui quando quiser comprar mais!
<img src="l2ui_ch3.herotower_deco" width=256 height=32>
<br><br><br><br>
<td><button value="Voltar" action="bypass -h npc_%objectId%_Chat 0" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td>
<br><br>
<font color="333333" align="center">_______________________________________</font>
</center>
</body></html> 

 

 

 

Agora va na pasta gameserver\data

procure pelo arquivo scripts.cfg e adicione essa linha: custom/10000_AioSeller/__init__.py

 

Agora crie um NPC qualquer com o ID 10000 e pronto.

de RR no servidor, e veja se funcionou.

Configure o arquivo __init__.py direito da forma que voce quer.

Editado por Just4You

A Vida é uma eterna lição...

Estamos sempre aprendendo...

Link para o comentário
Compartilhar em outros sites

  • 0

No forum tem este NPC, so nao lembro onde.

 

De qualquer maneira faça o seguinte

 

crie uma pasta no caminho: gameserver\data\scripts\custom

nomei a pasta para 10000_AioSeller

dentro dela crie um arquivo chamado __init__.py outro 1.htm e outro no.htm

 

depois coloque isso dentro:

 

__init__.py

 

 

#Created By Cheed!!!

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 import Config
from com.l2jfrozen.gameserver.model.quest.jython import QuestJython as JQuest
from com.l2jfrozen.gameserver.datatables import SkillTable
from com.l2jfrozen.gameserver.network.serverpackets import SocialAction
from com.l2jfrozen.gameserver.model.quest.jython import QuestJython as JQuest

qn = "10000_AioSeller"

NPC=[10000]

#iD do item que sera a moeda.
Moeda= ID DA MOEDA
#ID da Dual AIO
DUAL= ID DA DUAL
#Quantidade de dias e item para a opcao 1.
DIAS_AIO1= 30
ItemCount1=30
#Quantidade de dias e item para a opcao 2.
DIAS_AIO2= 60
ItemCount2=60
#Quantidade de dias e item para a opcao 3.
DIAS_AIO3= 90
ItemCount3=90

QuestId     = 10000
QuestName   = "AioSeller"
QuestDesc   = "custom"
InitialHtml = "1.htm"

print "INFO  AioSeller==> ON"

class Quest (JQuest) :

 def __init__(self,id,name,descr): JQuest.__init__(self,id,name,descr)
 
 def onAdvEvent (self,event,npc,player) :
    htmltext = event
    st = player.getQuestState(qn)
    if not st: return

    def doAio(player,days) :
     st.getPlayer().setAio(True)
     st.player.getStat().addExp(player.getStat().getExpForLevel(81));
     st.giveItems(DUAL,1)
     st.player.setEndTime("aio", days);
     st.player.broadcastPacket(SocialAction(st.player.getObjectId(),16))	
     st.player.getAppearance().setNameColor(Config.AIO_NCOLOR)
     st.player.getAppearance().setTitleColor(Config.AIO_TCOLOR)
     st.player.rewardAioSkills()
     st.player.sendSkillList()

	 
    if event == "1" :
     if st.getPlayer().isAio():
      return "no.htm"
     else :
        if st.getQuestItemsCount(Moeda) >= ItemCount1 :
                  st.takeItems(Moeda,ItemCount1)			  
                  doAio(st.player, DIAS_AIO1)				  
                  st.player.sendMessage("Parabens Voce Virou AioX!")
                  return "1.htm"
        else:
         st.player.sendMessage("Precisa ter 30 FB Coins. Volte quando tiver!")
         return "1.htm"

    elif event == "2" :
     if st.getPlayer().isAio():
      return "no.htm"
     else :
        if st.getQuestItemsCount(Moeda) >= ItemCount2 :
                  st.takeItems(Moeda,ItemCount2)				  
                  doAio(st.player, DIAS_AIO2);				  			  
                  st.player.sendMessage("Parabens Voce Virou AioX")				  
                  return "1.htm"
        else:
         st.player.sendMessage("Precisa ter 50 FB Coins. Volte quando tiver!")
         return "1.htm"

    elif event == "3" :
     if st.getPlayer().isAio():
      return "no.htm"
     else :
        if st.getQuestItemsCount(Moeda) >= ItemCount3 :
                  st.takeItems(Moeda,ItemCount3)				  
                  doAio(st.player, DIAS_AIO3);				  			  
                  st.player.sendMessage("Parabens Voce Virou AioX!")				  
                  return "1.htm"
        else:
         st.player.sendMessage("Precisa ter 70 FB Coins. Volte quando tiver!")
         return "1.htm"
		 
    return htmltext		
	
 def onTalk (self,npc,player):
		htmltext = "<html><head><body>You can't buy while you are</body></html>"
		st = player.getQuestState(qn)
		if not st : return htmltext
		npcId = npc.getNpcId()		
		if st.player.getPvpFlag() > 0 :#Player Flag
			htmltext = "<html><head><body>You can't buy while you are <font color=\"800080\">flagged!</font><br>Wait some time and try again!</body></html>"
			st.exitQuest(1)
		elif st.player.getKarma() > 0 :#Player com Karma
			st.exitQuest(1)
			htmltext = "<html><head><body>You have too much <font color=\"FF0000\">karma!</font><br>Come back,<br>when you don't have any karma!</body></html>"
		elif st.player.isInCombat() :#Player modo de Combate
			st.exitQuest(1)
			htmltext = "<html><head><body>You can't buy while you are attacking!<br>Stop your fight and try again!</body></html>"
		else:
			
			return InitialHtml
		return htmltext

QUEST = Quest(10116,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)
 

 

 

 

1.htm

 

 

<html><body>
<center>
<font color="333333" align="center">_______________________________________</font>
<table width=124 align="center">
	<tr>
		<td width=32><img src=Icon.etc_alphabet_a_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_i_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_o_i00 height=32 width=32></td>
	</tr>
</table>
<table width=124 align="center">
	<tr>
		<td width=32><img src=Icon.etc_alphabet_s_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_e_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_l_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_l_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_e_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_r_i00 height=32 width=32></td>
	</tr>
</table>
<br>
<br>
<br>
<br>
<br>
<img src="l2ui_ch3.herotower_deco" width=256 height=32>
<br><center><button value="Virar AioX 30 Dias" action="bypass -h npc_%objectId%_Chat 61" width=205 height=20 back="sek.cbui81" fore="sek.cbui79"></center>
<br>

<br><center><button value="Virar AioX 60 Dias" action="bypass -h npc_%objectId%_Chat 62" width=205 height=20 back="sek.cbui81" fore="sek.cbui79"></center>
<br>

<br><center><button value="Virar AioX 90 Dias" action="bypass -h npc_%objectId%_Chat 63" width=205 height=20 back="sek.cbui81" fore="sek.cbui79"></center>
<br>

<img src="l2ui_ch3.herotower_deco" width=256 height=32>
<br>
<font color="333333" align="center">_______________________________________</font>
</center><br>
</body></html> 

 

 

 

2.htm

 

 

<html><body>
<center>
<font color="333333" align="center">_______________________________________</font>
<table width=124 align="center">
	<tr>
		<td width=32><img src=Icon.etc_alphabet_a_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_i_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_o_i00 height=32 width=32></td>
	</tr>
</table>
<table width=124 align="center">
	<tr>
		<td width=32><img src=Icon.etc_alphabet_s_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_e_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_l_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_l_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_e_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_r_i00 height=32 width=32></td>
	</tr>
</table>
<br><br><br><br>
<br><br>
<img src="l2ui_ch3.herotower_deco" width=256 height=32>
Voce ja tem status de aioX!
<br>
Volte aqui quando quiser comprar mais!
<img src="l2ui_ch3.herotower_deco" width=256 height=32>
<br><br><br><br>
<td><button value="Voltar" action="bypass -h npc_%objectId%_Chat 0" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td>
<br><br>
<font color="333333" align="center">_______________________________________</font>
</center>
</body></html> 

 

 

 

Agora va na pasta gameserver\data

procure pelo arquivo scripts.cfg e adicione essa linha: custom/10000_AioSeller/__init__.py

 

Agora crie um NPC qualquer com o ID 10000 e pronto.

de RR no servidor, e veja se funcionou.

Configure o arquivo __init__.py direito da forma que voce quer.

Obrigada Just4You, eu vou testar aqui e volto para dar noticias hehe *-*

"Os problemas significativos que enfrentamos não podem ser resolvidos no mesmo nível de pensamento em que estávamos quando os criamos."


Albert Einstein

Link para o comentário
Compartilhar em outros sites

  • 0

Sem problemas Michele..

Porem o VIP na frozen não é trabalhado por tempo, ou seja, ele é eterno.

 

Voce tera que procurar um mod java, ou refazer o mod ja existente, para que trabalhe com tempo tambem.

 

caso voce ja tenha um vip/donator que trabalhe com tempo, voce ira usar esses script acima como base, mudando apenas algumas coisas.

 

A pasta e o arquivo tem que ser mudado de 10000_AioSeller para 10001_VipSeller e mudar o seguinte abaixo

 

__init__.py:

qn = "10001_VipSeller"

NPC=[10001]

#iD do item que sera a moeda.
Moeda= 10100
#Quantidade de dias e item para a opcao 1.
DIAS_AIO1= 30
ItemCount1=30
#Quantidade de dias e item para a opcao 2.
DIAS_AIO2= 60
ItemCount2=50
#Quantidade de dias e item para a opcao 3.
DIAS_AIO3= 90
ItemCount3=70

QuestId     = 10001
QuestName   = "VipSeller"
QuestDesc   = "custom"
InitialHtml = "1.htm"

print "INFO  VipSeller==> ON"
    def doVip(player,days) :
     st.getPlayer().setVip(True)
     st.player.setEndTime("vip", days);
     st.player.broadcastPacket(SocialAction(st.player.getObjectId(),16))	
     st.player.getAppearance().setNameColor(Config.VIP_NCOLOR)
     st.player.getAppearance().setTitleColor(Config.VIP_TCOLOR)

	 
    if event == "1" :
     if st.getPlayer().isVip():
      return "no.htm"
QUEST = Quest(10001,qn,"custom")
CREATED     = State('Start', QUEST)
STARTING    = State('Starting', QUEST)
STARTED     = State('Started', QUEST)
COMPLETED   = State('Completed', QUEST)
QUEST.setInitialState(CREATED)

o resto sera o mesmo.

Claro, lembrando de mudar os textos e etc, mas a parte de configuração apenas essa que tem que mudar

Editado por Just4You

A Vida é uma eterna lição...

Estamos sempre aprendendo...

Link para o comentário
Compartilhar em outros sites

  • 0

Obrigada Just4You, eu vou testar aqui e volto para dar noticias hehe *-*

So uma duvida, o npc nao precisa de html ne, apenas as html que vc postou aqui no post ne dentro da pasta custom? resumindo e so eu executar uma SQL com o ID no NPC e dar spawn ? *-*

Sem problemas Michele..

Porem o VIP na frozen não é trabalhado por tempo, ou seja, ele é eterno.

 

Voce tera que procurar um mod java, ou refazer o mod ja existente, para que trabalhe com tempo tambem.

 

caso voce ja tenha um vip/donator que trabalhe com tempo, voce ira usar esses script acima como base, mudando apenas algumas coisas.

 

A pasta e o arquivo tem que ser mudado de 10000_AioSeller para 10001_VipSeller e mudar o seguinte abaixo

 

__init__.py:

qn = "10001_VipSeller"

NPC=[10001]

#iD do item que sera a moeda.
Moeda= 10100
#Quantidade de dias e item para a opcao 1.
DIAS_AIO1= 30
ItemCount1=30
#Quantidade de dias e item para a opcao 2.
DIAS_AIO2= 60
ItemCount2=50
#Quantidade de dias e item para a opcao 3.
DIAS_AIO3= 90
ItemCount3=70

QuestId     = 10001
QuestName   = "VipSeller"
QuestDesc   = "custom"
InitialHtml = "1.htm"

print "INFO  VipSeller==> ON"
    def doVip(player,days) :
     st.getPlayer().setVip(True)
     st.player.setEndTime("vip", days);
     st.player.broadcastPacket(SocialAction(st.player.getObjectId(),16))	
     st.player.getAppearance().setNameColor(Config.VIP_NCOLOR)
     st.player.getAppearance().setTitleColor(Config.VIP_TCOLOR)

	 
    if event == "1" :
     if st.getPlayer().isVip():
      return "no.htm"
QUEST = Quest(10001,qn,"custom")
CREATED     = State('Start', QUEST)
STARTING    = State('Starting', QUEST)
STARTED     = State('Started', QUEST)
COMPLETED   = State('Completed', QUEST)
QUEST.setInitialState(CREATED)

o resto sera o mesmo.

Claro, lembrando de mudar os textos e etc, mas a parte de configuração apenas essa que tem que mudar

Obrigada amigo eu vou testar aqui e volto para dizer o resultado *-*

"Os problemas significativos que enfrentamos não podem ser resolvidos no mesmo nível de pensamento em que estávamos quando os criamos."


Albert Einstein

Link para o comentário
Compartilhar em outros sites

  • 0

So uma duvida, o npc nao precisa de html ne, apenas as html que vc postou aqui no post ne dentro da pasta custom? resumindo e so eu executar uma SQL com o ID no NPC e dar spawn ? *-*

Obrigada amigo eu vou testar aqui e volto para dizer o resultado *-*

 

exatamente... ele nao precisa de um arquivo html apenas da sql.

Pq o direcionamento esta sendo feito pelo proprio arquivo __init__.py onde tem [NPC] = 10000

Editado por Just4You

A Vida é uma eterna lição...

Estamos sempre aprendendo...

Link para o comentário
Compartilhar em outros sites

  • 0

 

exatamente... ele nao precisa de um arquivo html apenas da sql.

Pq o direcionamento esta sendo feito pelo proprio arquivo __init__.py onde tem [NPC] = 10000

nao apareceu as html, mas nao apareceu pq eu fiz os npcs como type merchant :P qual type devo fazer para aparecer? *-*

Editado por Michelle

"Os problemas significativos que enfrentamos não podem ser resolvidos no mesmo nível de pensamento em que estávamos quando os criamos."


Albert Einstein

Link para o comentário
Compartilhar em outros sites

  • 0

L2Npc

Just4You, ele estava pedindo html em merchant pq eu tinha feito tapy como merchant, mas agora mudei para L2Npc e ficou pedindo quest, seque as sql para dar uma conferida:

 

NPC VIP

INSERT INTO `custom_npc` VALUES ('10001', '35061', 'Indian', '1', 'VIP Manager', '1', 'LineageNPC.e_elmore_guard_Mhuman', '13.00', '22.00', '15', 'female', 'L2Npc', '40', '195', '164', '3.95', '1.21', '40', '43', '30', '21', '20', '25', '0', '0', '10', '2700', '10', '2700', '10', '0', '10', '0', '0', '0', '10', '10', null, '0', '0', '0', 'LAST_HIT');

 

NPC AIO

INSERT INTO `custom_npc` VALUES ('10000', '35061', 'Elizabet', '1', 'AIO Manager', '1', 'LineageNPC.e_elmore_guard_Mhuman', '13.00', '22.00', '15', 'female', 'L2Npc', '40', '195', '164', '3.95', '1.21', '40', '43', '30', '21', '20', '25', '0', '0', '10', '2700', '10', '2700', '10', '0', '10', '0', '0', '0', '10', '10', null, '0', '0', '0', 'LAST_HIT');

Editado por Michelle

"Os problemas significativos que enfrentamos não podem ser resolvidos no mesmo nível de pensamento em que estávamos quando os criamos."


Albert Einstein

Link para o comentário
Compartilhar em outros sites

  • 0

olhando e aprendendo com o tópico ^^

hehe, ta certo amigo eu tbm sou acostumada a fazer isso :P

"Os problemas significativos que enfrentamos não podem ser resolvidos no mesmo nível de pensamento em que estávamos quando os criamos."


Albert Einstein

Link para o comentário
Compartilhar em outros sites

  • 0

Just4You, ele estava pedindo html em merchant pq eu tinha feito tapy como merchant, mas agora mudei para L2Npc e ficou pedindo quest, seque as sql para dar uma conferida:

 

NPC VIP

INSERT INTO `custom_npc` VALUES ('10001', '35061', 'Indian', '1', 'VIP Manager', '1', 'LineageNPC.e_elmore_guard_Mhuman', '13.00', '22.00', '15', 'female', 'L2Npc', '40', '195', '164', '3.95', '1.21', '40', '43', '30', '21', '20', '25', '0', '0', '10', '2700', '10', '2700', '10', '0', '10', '0', '0', '0', '10', '10', null, '0', '0', '0', 'LAST_HIT');

 

NPC AIO

INSERT INTO `custom_npc` VALUES ('10000', '35061', 'Elizabet', '1', 'AIO Manager', '1', 'LineageNPC.e_elmore_guard_Mhuman', '13.00', '22.00', '15', 'female', 'L2Npc', '40', '195', '164', '3.95', '1.21', '40', '43', '30', '21', '20', '25', '0', '0', '10', '2700', '10', '2700', '10', '0', '10', '0', '0', '0', '10', '10', null, '0', '0', '0', 'LAST_HIT');

 

Vamos trabalhar primeiro com o AIO, e depois tentamos o VIP.

Porque como eu disse, o VIP na frozen não é por TEMPO. Depois a gente trabalha com o VIP, vamos focar no AIO.

 

Desculpa, tinha que ter sim a HTM.

Erro meu...

 

cria um arquivo com o nome 10000.htm

e coloca isso:

<html><body>
<center>
<font color="333333" align="center">_______________________________________</font>
<table width=124 align="center">
	<tr>
		<td width=32><img src=Icon.etc_alphabet_a_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_i_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_o_i00 height=32 width=32></td>
	</tr>
</table>
<table width=124 align="center">
	<tr>
		<td width=32><img src=Icon.etc_alphabet_s_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_e_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_l_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_l_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_e_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_r_i00 height=32 width=32></td>
	</tr>
</table>
<br>
<br>
<br>
<br>
<br>
Ola aventureiro sou o npc encarregado de
<br1>
vender AioX no server.
<br>
<br>
<br>
<br>
<img src="L2UI_CH3.herotower_deco" width=256 height=32>
<br>
<td><button value="Comprar AioX" action="bypass -h npc_%objectId%_Quest 10000_AioSeller" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td>
<br>
<img src="L2UI_CH3.herotower_deco" width=256 height=32>
<br>
<br1>
<br1>
<br>
<font color="333333" align="center">_______________________________________</font>
</center>
</body></html>

Lembrando que voce tem que colocar na pasta gameserver\data\html\default e colocar o NPC Type como L2Npc

A Vida é uma eterna lição...

Estamos sempre aprendendo...

Link para o comentário
Compartilhar em outros sites

  • 0

 

Vamos trabalhar primeiro com o AIO, e depois tentamos o VIP.

Porque como eu disse, o VIP na frozen não é por TEMPO. Depois a gente trabalha com o VIP, vamos focar no AIO.

 

Desculpa, tinha que ter sim a HTM.

Erro meu...

 

cria um arquivo com o nome 10000.htm

e coloca isso:

<html><body>
<center>
<font color="333333" align="center">_______________________________________</font>
<table width=124 align="center">
	<tr>
		<td width=32><img src=Icon.etc_alphabet_a_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_i_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_o_i00 height=32 width=32></td>
	</tr>
</table>
<table width=124 align="center">
	<tr>
		<td width=32><img src=Icon.etc_alphabet_s_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_e_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_l_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_l_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_e_i00 height=32 width=32></td>
		<td width=32><img src=Icon.etc_alphabet_r_i00 height=32 width=32></td>
	</tr>
</table>
<br>
<br>
<br>
<br>
<br>
Ola aventureiro sou o npc encarregado de
<br1>
vender AioX no server.
<br>
<br>
<br>
<br>
<img src="L2UI_CH3.herotower_deco" width=256 height=32>
<br>
<td><button value="Comprar AioX" action="bypass -h npc_%objectId%_Quest 10000_AioSeller" width=75 height=21 back="L2UI_ch3.Btn1_normalOn" fore="L2UI_ch3.Btn1_normal"></td>
<br>
<img src="L2UI_CH3.herotower_deco" width=256 height=32>
<br>
<br1>
<br1>
<br>
<font color="333333" align="center">_______________________________________</font>
</center>
</body></html>

Lembrando que voce tem que colocar na pasta gameserver\data\html\default e colocar o NPC Type como L2Npc

Fiz tudo certinho amigo agora apareceu, mas quando eu clico nas opcoes para 30, 60 ou 90 dias ele pede quest tbm :(

Editado por Michelle

"Os problemas significativos que enfrentamos não podem ser resolvidos no mesmo nível de pensamento em que estávamos quando os criamos."


Albert Einstein

Link para o comentário
Compartilhar em outros sites

  • 0

Notei que dentro do diretorio gameserver\data\scripts\custom\10000_AioSeller na 1.htm ele pede chat 61, 62 e 63 segue abaixo:

 

<br><center><button value="Virar AioX 30 Dias" action="bypass -h npc_%objectId%_Chat 61" width=205 height=20 back="sek.cbui81" fore="sek.cbui79"></center>
<br>
<br><center><button value="Virar AioX 60 Dias" action="bypass -h npc_%objectId%_Chat 62" width=205 height=20 back="sek.cbui81" fore="sek.cbui79"></center>
<br>
<br><center><button value="Virar AioX 90 Dias" action="bypass -h npc_%objectId%_Chat 63" width=205 height=20 back="sek.cbui81" fore="sek.cbui79"></center>
<br>

UP *-*

"Os problemas significativos que enfrentamos não podem ser resolvidos no mesmo nível de pensamento em que estávamos quando os criamos."


Albert Einstein

Link para o comentário
Compartilhar em outros sites

  • 0

Desculpe...

Mude para:

<br><center><button value="Virar AioX 30 Dias" action="bypass -h Quest 10000_AioSeller 1" width=205 height=20 back="sek.cbui81" fore="sek.cbui79"></center>
<br>
 
<br><center><button value="Virar AioX 60 Dias" action="bypass -h Quest 10000_AioSeller 2" width=205 height=20 back="sek.cbui81" fore="sek.cbui79"></center>
<br>
 
<br><center><button value="Virar AioX 90 Dias" action="bypass -h Quest 10000_AioSeller 3" width=205 height=20 back="sek.cbui81" fore="sek.cbui79"></center>
<br>

A Vida é uma eterna lição...

Estamos sempre aprendendo...

Link para o comentário
Compartilhar em outros sites

  • 0

 

Desculpe...

Mude para:

<br><center><button value="Virar AioX 30 Dias" action="bypass -h Quest 10000_AioSeller 1" width=205 height=20 back="sek.cbui81" fore="sek.cbui79"></center>
<br>
 
<br><center><button value="Virar AioX 60 Dias" action="bypass -h Quest 10000_AioSeller 2" width=205 height=20 back="sek.cbui81" fore="sek.cbui79"></center>
<br>
 
<br><center><button value="Virar AioX 90 Dias" action="bypass -h Quest 10000_AioSeller 3" width=205 height=20 back="sek.cbui81" fore="sek.cbui79"></center>
<br>

Ficou otimo amigo *-* testei 30, 60 e 90 dias ficaram ok, e sobre o VIP o processo seria o mesmo ?

"Os problemas significativos que enfrentamos não podem ser resolvidos no mesmo nível de pensamento em que estávamos quando os criamos."


Albert Einstein

Link para o comentário
Compartilhar em outros sites

  • 0

Ficou otimo amigo *-* testei 30, 60 e 90 dias ficaram ok, e sobre o VIP o processo seria o mesmo ?

 

Seria o mesmo....

Lembrando de mudar apenas os diretorios

de 10000_AioSeller para 10001_VipSeller

e de setAio para setVip

entre outras coisas...

A Vida é uma eterna lição...

Estamos sempre aprendendo...

Link para o comentário
Compartilhar em outros sites

  • 0

 

Seria o mesmo....

Lembrando de mudar apenas os diretorios

de 10000_AioSeller para 10001_VipSeller

e de setAio para setVip

entre outras coisas...

ta bom muito obrigada vou tentar com o vip *-* esqueci de dizer a htm 2 que diz quando o player ja tem aio e precisa voltar qnd acabar não funciona da erro diz my text is missing

Editado por Michelle

"Os problemas significativos que enfrentamos não podem ser resolvidos no mesmo nível de pensamento em que estávamos quando os criamos."


Albert Einstein

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
  • 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.