Ir para conteúdo
  • Cadastre-se

[Tutorial] Criando NPC SHOP


Kelvin

Posts recomendados

  • L2JBr ADM

Ensinarei aqui a quem nunca criou um NPC SHOP a criar o seu primeiro sem muito fru fru.

 

Ferramenta necessaria.

 

Bloco de Notas do Windows.

Multisell Manager (Criação da Lista de Vendas).

 

Primeiro passo Criando a SQL do NPC.

 

Abra o bloco de notas e coloque o seguinte codigo.

 

INSERT INTO `custom_npc` VALUES ('22000', '20136', 'nomedonpcaqui', '1', 'titulodonpcaqui', '1', 'Monster.death_knight', '10.00', '25.00', '70', 'male', 'L2Merchant', '40', '25563', '1111', '111.00', '1.00', '40', '40', '40', '40', '40', '40', '40', '40', '40', '40', '40', '40', '40', '0', '40', '0', '0', '0', '0', '120', null, null, '0', '0', 'LAST_HIT');

Depois de colocado o codigo no bloco de notas e criado um nome e um titulo para o npc salve o documento com a extenção .sql, exemplo npc.sql e clique em salvar!

 

Pronto a SQL está feita para adicionar va no navicat, no seu banco de dados que devera ser l2jdb(ou outro dependendo), clique com o botão direito do mause em cima e selecione Execute Batch File clique no quadrado com 3 pontinhos [...] procure a sql feita acima e clique, depois clique em start o npc foi adicionado!

Segundo Passo Criando a HTML do NPC.

 

A HTML serve para indicar o que o NPC vai fazer e para colocar os botões.

 

Abra novamente o bloco de notas e copie o codigo:

 

 

<html>

<body>

<center>

<br><center><font color="LEVEL">ALGUM COMENTARIO</font></center>

<br><img src="L2.Sparta" width=260 height=1>

<br><center><font color="LEVEL">DIALOGO DO NPC</font></center>

<br><button value="ARMAS" action="bypass -h npc_%objectId%_multisell 121212" width=168 height=25 back="sek.cbui36" fore="sek.cbui72">

<center>

</body>

</html>

 

DEVEMOS LEVAR EM CONTA 2 COISAS AQUI.

 

<br><center><font color="LEVEL">ALGUM COMENTARIO</font></center>

<br><center><font color="LEVEL">DIALOGO DO NPC</font></center>

 

Nessas duas linhas serão postos comentarios aquelas frases que o npc fala quando vc clica para comprar.

 

Agora o principal o botão do npc e o direcionamento para a multisell.

 

<br><button value="ARMAS" action="bypass -h npc_%objectId%_multisell 121212" width=168 height=25

 

Note onde tem 121212 isso será o ID da MultiSell a lista de compras do NPC defina um ID vamos trabalhar com esse ID 121212.

Ensinarei mais a frente a fazer a multisell.

Definimos o ID da Multisell e o botão casó você queira adicionar outro botão abaixo de armaduras é só copiar a linha toda de armaduras e cola logo abaixo mudando somente nome do botão e ID da multisell.

 

Feito isso salve editado claro no bloco de notas com o ID feito SQL e no final .htm exemplo 22000.htm

A pasta que deve ficar o arquivo html do npc é na pasta Gameserver/data/html/merchant coloque lá dentro.

Pronto a HTML foi criado.

 

Terceiro e ultimo passo criando a multisell

 

Abra novamente o bloco de notas e coloque o codigo.

 

<?xml version='1.0' encoding='utf-8'?>

 

<!-- Created with Lineage II - Multisell Manager -->

<!-- © 2007 by tReXpert -->

 

<list maintainEnchantment="true">

 

<!-- Sirra's Blade -->

<item id="1">

<ingredient id="57" count="1000000"/>

<production id="8678" count="1"/>

</item>

 

<!-- Sirra's Blade - Haste -->

<item id="2">

<ingredient id="57" count="1000000"/>

<production id="8788" count="1"/>

</item>

</list>

 

Vamos entender o que cada linha dessa server, temos uma lista com 2 items a venda casó queira mais items é só copiar um dos codigos abaixo do outro e mudar o id, vamos lá.

 

<!-- Sirra's Blade --> - Apenas um simples comentario para você se orientar na multisell não influenciara na programação.

<item id="1"> - Aqui sera a ordem do item na lista no casó 1 será o primeiro item a ser mostrado na lista de compras.

<ingredient id="4356" count="100"/> - no casó 57 (adena) é o ID do item que será cobrado e 1000000 a quantidade (100kk).

<production id="8788" count="1"/> - 8788 será o item ganho na compra e 1 a quantidade ganha, será ganho 1 Sirra's Blade.

 

Pronto agora você sabe para que cada linha serve, quando seu shop tiver feito e a ordem estabelecida salve o arquivo com o ID 121212 que foi o ID escolhido para por as armas no nosso Shop e salve com a extenção .xml exemplo 121212.xml depois de salvo coloque o arquivo dentro da pasta Gameserver/data/multisell lá que ficara as multisells.

 

 

Pronto agora é só ligar o servidor ou dar restart se estivar ligado, dentro do jogo digita //spawn 22000 para o NPC aparecer e ve se sua lista de compras está OK.

 

 

 

 

 

Tutorial para iniciantes, em breve outro tutorial para membros mais avançados.

Esse tutorial foi criado por mim e proibo qualquer publicação em outros locais.

L2J BRASIL®

 

 

 

 

Proibida a reprodução mesmo que em partes desse tutorial sem a publicação dos devidos créditos de criação

Garantido pela Constituição da República Federativa do Brasil, de 05 de outubro de 1988

Portaria MCT n° 88, de 23/04/98

Propriedade Intelectual

  • Gostei 16
  • Obrigado 1
Link para o comentário
Compartilhar em outros sites


  • L2JBr ADM

Muito bom o tuto parabéns!

EJoOSOj.gif

Sua pergunta foi respondida? Certifique-se de marcar a resposta como a solução aceita.
Se existe mais de uma resposta, utilize o "vote up" para destacá-la.
Se você achar uma resposta útil, diga obrigado clicando no botão "Gostei".

Link para o comentário
Compartilhar em outros sites

your target cannot be found (o seu objectivo não pode ser encontrado) essa e a mensagem que deu dentro do jogo quando eu dei //spawn.

deu tudo certo quando eu coloquei os arquivos, mas nao aparece no jogo.

ajudae kelvin desde ja agradeço

Link para o comentário
Compartilhar em outros sites

Bom se disse pode ser 2 coisas, ID da SQL diferente da HTML ou virse-versa, pode ser também por que você não deu restart no servidor.

 

mas tudo que eu fiz foi copiar o que tem qui ser copiado e trocar o que tem qui ser trocado

entao n mudei nada de letra azul e so troquei as de letra vermelhas entaoadd la foi tudo de boa

restartei o serve normalmente e dei //spawn ae deu aquela mens.

eu to querendo fazer um npc que vende festival adenas no preço de 50000 cada

se puder ajudar ae

 

 

ae o html.

 

 

<html>

<body>

<center>

<br><center><font color="LEVEL">Adiquira Sua Festival Adenas Aqui!!!</font></center>

<br><img src="L2.Sparta" width=260 height=1>

<br><center><font color="LEVEL">Quantas Festival Adenas Voce Quer?</font></center>

<br><button value="Festival Adenas" action="bypass -h npc_%objectId%_multisell 121212" width=168 height=25 back="sek.cbui36" fore="sek.cbui72">

<center>

</body>

</html>

 

 

 

 

aki o sql

 

INSERT INTO `custom_npc` VALUES ('22000', '20136', 'by jilmar', '1', 'festival adenas', '1', 'Monster.death_knight', '10.00', '25.00', '70', 'male', 'L2Merchant', '40', '25563', '1111', '111.00', '1.00', '40', '40', '40', '40', '40', '40', '40', '40', '40', '40', '40', '40', '40', '0', '40', '0', '0', '0', '0', '120', null, null, '0', '0', 'LAST_HIT');

Link para o comentário
Compartilhar em outros sites

Kelvin, fiz aqui este procedimento e consegui de boa..

 

Agora, queria colocar mais de uma Miltisell no mesmo NPC

Digo.. por exemplo, eu gostaria de colocar em botoes separados, apos clicar no NPC pra ficar: "intes grade A, itens grade B" e assim por diante, e não tudo junto..

 

Ve se to correto:

 

NO HTML, onde tem a linha:

 

<br><button value="ARMAS" action="bypass -h npc_%objectId%_multisell 121212" width=168 height=25 back="sek.cbui36" fore="sek.cbui72">

 

Eu a duplico, mudando o "ARMAS" para o nome do botao e após o _multisell, o arquivo da multisell que eu criar?? Ou tenho que mudar tambem o width e height desse script?

Acho que é só isso né?? E posso deixar o arquivo do SQL do jeito que esta?

 

Diz ai se meu pensamento está correto ou nao.. ate serve pra quem quiser fazer o mesmo depois.

vlw!

Link para o comentário
Compartilhar em outros sites

  • L2JBr ADM

Sim ta tudo certo, mas nao precisa mudar o width nem o heigt isso é só o tamanho do botão.

Sobre a SQL só faz uma vez que é para criar o npc, casó queira outro botão é só repetir o codigo abaixo de armas mudar o nome do botão e o id da multisell.

Link para o comentário
Compartilhar em outros sites

Deu certinho aqui, agora já passei pra outros detalhes....

 

Kelvin.... Armas, Armaduras, Jóias, Potions, etc.. consegui colocar pra vender nos NPCs pela Multisell, mas como faço pra colocar Tattoos (As Monk, Rabbit, Witch, Sniper, etc), nos NPCs?

 

Consegui colocar apenas "manualmente", mesmo assim o nome do item buga e não aparece sua descrição.. queria poder concertar isso logo, mas desde Sexta-Feira estou com problemas nisso.

 

As IDs das Tattoo vão de:

 

28007 a 28060, estão na BD custom_armor;

 

Qualquer ajuda agradeço cara.. vlw!

 

> EDIT > Coloquei as Tattoos que você postou no Forum Kelvin.. não são as que eu preciso, mas quebram galho ate o dia que eu terminar de resolver tudo que ainda está pendente... ;)

Link para o comentário
Compartilhar em outros sites

Esse codigo é para gracia que eu fiz, qual a versão do seu L2 que eu posto.

=/ talvez seja isto que esteja dando problemas nos meus npcs..

Posta pra Interlude.

''Nada de minha dor, é como a desgraça que pode mostrar a verdade.''

Link para o comentário
Compartilhar em outros sites

Terceiro e ultimo passo criando a multisell

 

 

Abra novamente o bloco de notas e coloque o codigo.

 

QUOTE

<?xml version='1.0' encoding='utf-8'?>

 

<!-- Created with Lineage II - Multisell Manager -->

<!-- © 2007 by tReXpert -->

 

<list maintainEnchantment="true">

 

<!-- Sirra's Blade -->

<item id="1">

<ingredient id="57" count="1000000"/>

<production id="8678" count="1"/>

</item>

 

<!-- Sirra's Blade - Haste -->

<item id="2">

<ingredient id="57" count="1000000"/>

<production id="8788" count="1"/>

</item>

</list>

 

 

Vamos entender o que cada linha dessa server, temos uma lista com 2 items a venda casó queira mais items é só copiar um dos codigos abaixo do outro e mudar o id, vamos lá.

 

<!-- Sirra's Blade --> - Apenas um simples comentario para você se orientar na multisell não influenciara na programação.

<item id="1"> - Aqui sera a ordem do item na lista no casó 1 será o primeiro item a ser mostrado na lista de compras.

<ingredient id="4356" count="100"/> - no casó 57 (adena) é o ID do item que será cobrado e 1000000 a quantidade (100kk).

<production id="8788" count="1"/> - 8788 será o item ganho na compra e 1 a quantidade ganha, será ganho 1 Sirra's Blade.

 

 

TO COM UMA DUVIDA, ESSE PROCEDIMENTO E O MSM Q EU EXUCUTO NO MULTISEL CREATOR , OU PRECISA FAZER ISSO PRA DEPOIS EDITAR COM O MULTISEL??

Link para o comentário
Compartilhar em outros sites

  • L2JBr ADM

Va na tabela custom NPC, de dump file, procure um NPC qualquer mude para o ID do tutorial e procure depois do s*** o tipo dele e coloque L2Merchant.

Pronto de Bacht File pelo navicat que o NPC ta adicionado.

Link para o comentário
Compartilhar em outros sites

Isso é pra fazer a Multisell, se vc souber usar o Multisell creator ele faz uma multisell do 0 então pode ignorar isso.

Maais vc tem que ainda ssim fazer o passo do SQL ou estou errado?=x so meio bobo pra essas coisas mais aprendo facil,então iria fazer uma Mutilsell pelo creator e fazer esse mesmo passo da SQL para o client IL?

av.gif

===============================

Não pense só em si mesmo,pense em todos,Inclusive nos Nobs :D

===============================

Não seja Sangue SUGA ingrato,deixe pelo menos um agradecimento para o dono do post

Link para o comentário
Compartilhar em outros sites

Maais vc tem que ainda ssim fazer o passo do SQL ou estou errado?=x so meio bobo pra essas coisas mais aprendo facil,então iria fazer uma Mutilsell pelo creator e fazer esse mesmo passo da SQL para o client IL?

 

 

 

Desconsidere Isso Kelvin :D,Lendo um pouco vii que a SQL serve pra criar o NPC Multsell o que vai ser vendido e o HTM serve pra redirecionar para a lista de compra

Kelvin parabéns =) Forum ta ajudando 99%

av.gif

===============================

Não pense só em si mesmo,pense em todos,Inclusive nos Nobs :D

===============================

Não seja Sangue SUGA ingrato,deixe pelo menos um agradecimento para o dono do post

Link para o comentário
Compartilhar em outros sites

Será que isso só aconteceu comigo?

 

[Err] 1136 - Column count doesn't match value count at row 1

[Err] INSERT INTO `custom_npc` VALUES ('22000', '20136', 'GM SHOP', '1', 'L2eXotic', '1', 'Monster.death_knight', '10.00', '25.00', '70', 'male', 'L2Merchant', '40', '25563', '1111', '111.00', '1.00', '40', '40', '40', '40', '40', '40', '40', '40', '40', '40', '40', '40', '40', '0', '40', '0', '0', '0', '0', '120', null, null, '0', '0', 'LAST_HIT');

[Msg] Finished - Unsuccessfully

--------------------------------------------------

 

espero respostas (de preferencia urgente :D)

 

 

Queria também fazer outras perguntas...

 

Como mudo o fundo do botao?

 

Como faço pra quando eu clicar no botao ele me redirecionar pra outra pagina, exemplo:

 

Weapons

Armors, etc..

 

Clicando em Weapons aparece uma janela...

 

Grade S

Grade A

Grade B, etc...

 

Clicando em Grade S, aparece uma janela...

 

Bow

Sword

Blunt, etc..

 

Clicando em Bow, abre uma multisell de Bows Grade S

 

Ate o Grade S eu sei fazer, eu teria que colocar em vez de _multisell colocar _chat 1

e criar outra htm 22000-1.htm certinho até ai...

 

e depois disso?

 

 

 

Obrigado pela atenção.

Hollowization: For what the reason we don't have a monster inside us?

hollowization.jpg

Link para o comentário
Compartilhar em outros sites

[Err] 1136 - Column count doesn't match value count at row 1

[Err] INSERT INTO `custom_npc` VALUES ('22000', '20136', 'GM SHOP', '1', 'L2eXotic', '1', 'Monster.death_knight', '10.00', '25.00', '70', 'male', 'L2Merchant', '40', '25563', '1111', '111.00', '1.00', '40', '40', '40', '40', '40', '40', '40', '40', '40', '40', '40', '40', '40', '0', '40', '0', '0', '0', '0', '120', null, null, '0', '0', 'LAST_HIT');

[Msg] Finished - Unsuccessfully

--------------------------------------------------

 

 

Esse erro de SQL geralmente acontece quando vc está tentando adicionar algum item de outra versão nesse caso ae o número de colunas não são iguais, elas mudam de versão para versão, então as soluções são: ou vc edita a SQL ou coloca manualmente no db

 

 

 

Como faço pra quando eu clicar no botao ele me redirecionar pra outra pagina, exemplo:

 

Weapons

Armors, etc..

 

Clicando em Weapons aparece uma janela...

 

Grade S

Grade A

Grade B, etc...

 

Clicando em Grade S, aparece uma janela...

 

Bow

Sword

Blunt, etc..

 

Clicando em Bow, abre uma multisell de Bows Grade S

 

Ate o Grade S eu sei fazer, eu teria que colocar em vez de _multisell colocar _chat 1

e criar outra htm 22000-1.htm certinho até ai...

 

e depois disso?

 

 

 

Obrigado pela atenção.

 

 

Acho que essa vc já aprendeu ^^

 

 

Como mudo o fundo do botao?

 

pra mudar o fundo do botão vc tem que saber onde a textura do botão está

então use esse programa

 

http://www.l2jbrasil.com/index.php?showtopic=188

 

e visualize o arquivo sek.utx na pasta systexture do seu client lá deverá ter algumas textura pra colocar no botão

 

depois disso é só colocar o caminho na html assim:

 

...back="sek.cbui36" fore="sek.cbui72">( só um exemplo)

Link para o comentário
Compartilhar em outros sites

Esse erro de SQL geralmente acontece quando vc está tentando adicionar algum item de outra versão nesse caso ae o número de colunas não são iguais, elas mudam de versão para versão, então as soluções são: ou vc edita a SQL ou coloca manualmente no db

 

No caso ele postou pra Gracia II, coincidência meu server ser Gracia II tambem, entao pq n funfa?

o que estaria de errado ai? poderia entao postar uma SQL válida?

Hollowization: For what the reason we don't have a monster inside us?

hollowization.jpg

Link para o comentário
Compartilhar em outros sites

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