Ir para conteúdo
  • Cadastre-se

L2J Rewrite - Buscando developers


Rogiel

Posts recomendados

Rogiel, ainda acho o uso de xml para full NPC uma má idéia. Não acha que seria melhor manter os chats em HTML ? Tanto para reload in-game, carregamento e edição.

Ali em:

<chat id="default"><![CDATA[<html><body>Grand Master Valpor:<br>
Your curiosity must have brought you here. Unless you have some business with me?<br>
If you have advanced beyond the occupational limits as a Kamael, perhaps I can help...<br>
<a action="bypass -h npc_%objectId%_Quest kamael_occupation_change">Ask about 2nd class transfer.</a><br>
<a action="bypass -h npc_%objectId%_Subclass 0">Sub-class.</a><br>
<a action="bypass -h npc_%objectId%_Quest 9000_clan">Clan.</a><br>
<a action="bypass -h npc_%objectId%_Quest 9001_alliance">Alliance.</a><br>
<a action="bypass -h npc_%objectId%_Quest">Quest.</a>
</body></html>]]></chat>

Colocar assim:

<chat id="default" src="default.htm"/>[...]

8cp1z10.png
Link para o comentário
Compartilhar em outros sites


  • Respostas 77
  • Created
  • Última resposta

Rogiel, ainda acho o uso de xml para full NPC uma má idéia. Não acha que seria melhor manter os chats em HTML ? Tanto para reload in-game, carregamento e edição.

Ali em:

<chat id="default"><![CDATA[<html><body>Grand Master Valpor:<br>
Your curiosity must have brought you here. Unless you have some business with me?<br>
If you have advanced beyond the occupational limits as a Kamael, perhaps I can help...<br>
<a action="bypass -h npc_%objectId%_Quest kamael_occupation_change">Ask about 2nd class transfer.</a><br>
<a action="bypass -h npc_%objectId%_Subclass 0">Sub-class.</a><br>
<a action="bypass -h npc_%objectId%_Quest 9000_clan">Clan.</a><br>
<a action="bypass -h npc_%objectId%_Quest 9001_alliance">Alliance.</a><br>
<a action="bypass -h npc_%objectId%_Quest">Quest.</a>
</body></html>]]></chat>

Colocar assim:

<chat id="default" src="default.htm"/>[...]

Para dar reload, basta reiniciar o TemplateService que vai atualizar tudo (tudo que está no xml). Os HTMLs separados é confuso, precisa ficar caçando onde cada um fica. Tudo no XML fica tudo no mesmo lugar, o html pertence ao NPC, logo, fica no arquivo do NPC. Eu acho que a edição não é afetada pois poucos usam um editor visual para editar isso (até porque nem é possivel. porque a implementação de html do L2 é bem porca e não segue standards).

 

Haverá, entretando, um arquivo de HTMLs globais, pois alguns chats são compartilhados com vários NPCs. Mas a idéia é fazer classmaster.xml (dentro da uma pasta html) e lá terá todos os htmls compartilhados entre classmasters. O objetivo disso é reduzir a quantidade de arquivos semelhantes e separar as coisas diferentes. Por exemplo, no L2J há vários items num XML só, é preciso ver o range de ID e então abrir o arquivo certo. Mesmsa coisa o html, para editar os chats precisa abrir vários arquivos pois eles estão separados, e contém apenas a ID do npc, dificultando e atrapalhando muito o trabalho. Estando junto do NPC, nada disso acontece.

 

Manter os chats na memória consome um pouco de memória a mais, mas no futuro pretendo implementar spawn on-demand, assim quando não houverem players num determinado lugar, o NPC é removido do jogo, bem como seu template descarregado após um certo tempo de desuso (5 minutos, por exemplo). Quando um player se aproximar, o NPC volta a aparecer e o template é carregado novamente.

 

---

SQLs do loginserver são as mesmas do l2j, achei que tinham ido junto com o zip, mas não foi, estranho...

CREATE TABLE IF NOT EXISTS `account_data` (

 `account_name` VARCHAR(45) NOT NULL DEFAULT '',

 `var`  VARCHAR(20) NOT NULL DEFAULT '',

 `value` VARCHAR(255) ,

 PRIMARY KEY (`account_name`,`var`)

);
CREATE TABLE IF NOT EXISTS `gameservers` (

 `server_id` int(11) NOT NULL default '0',

 `hexid` varchar(50) NOT NULL default '',

 `host` varchar(50) NOT NULL default '',

 PRIMARY KEY (`server_id`)

);
CREATE TABLE IF NOT EXISTS `accounts` (
 `login` VARCHAR(45) NOT NULL default '',
 `password` VARCHAR(45) ,
 `lastactive` bigint(13) unsigned NOT NULL DEFAULT '0',
 `accessLevel` TINYINT NOT NULL DEFAULT 0,
 `lastIP` CHAR(15) NULL DEFAULT NULL,
 `lastServer` TINYINT DEFAULT 1,
 `userIP` char(15) DEFAULT NULL,
 `pcIp` char(15) DEFAULT NULL,
 `hop1` char(15) DEFAULT NULL,
 `hop2` char(15) DEFAULT NULL,
 `hop3` char(15) DEFAULT NULL,
 `hop4` char(15) DEFAULT NULL,
 PRIMARY KEY (`login`)
);

Link para o comentário
Compartilhar em outros sites

FFFFFFFUUUUUUUUUUUUUUUUUUU

Tou perdido no meio desse povo! =D

@Rogiel bem complexo mesmo a XML alí.

Sou um usuário aposentado há anos do L2JBrasil, por gentileza, não me contate para suporte, pois não entendo mais nada de L2J. Fiquei no tempo.
Link para o comentário
Compartilhar em outros sites

Complexo mesmo mais mesmo assim maravilho , apos um tempo quando acustumar nossa vai facilitar muito tudo em um so arquivo ,

 

 

Parabens !

cyCrFTF.jpg

Obrigado pelo presente Mickaelll

Corintiano Fanático;

Estudante de T.I e l2jbrasileiro nas horas vagas.

Link para o comentário
Compartilhar em outros sites

Bom, há os contras e prós, mas enfim, são apenas dicas/sugestões.

 

Se precisar de ajuda, pode contar comigo (contatar por pm).

 

E só pedindo pra não postarem coisas como:

Eu to perdido nisso eu nao entendo nada usahsuhasa ^^ 

Isso polui o tópico que, como dá pra ver, é um desenvolvimento...

8cp1z10.png
Link para o comentário
Compartilhar em outros sites

olha rogiel é um BAITA PROJETO se tu quiser pode contar comigo apesar de eu nao ter muito tempo

 

então vamos ao que interessa, visando que os l2off já chegarão na sua fase GRACIA FINAL ( atualmente vazada da NCSOFT ) e a maioria dos INTERLUDE L2OFF estão indo para gracia final era de ser interessante que esse projeto fosse INTERLUDE

 

mais dai o pessoal pergunta PORQUE?

 

R: Vai dar muito menos trabalho pois são muito menas coisas para fazer, e entre outras coisas quando o interlude finalizado já se vai ter toda a BASE e o conhecimento para fazer um HIGH FIVE "MUITO MELHOR" do que o da L2JSERVER alguns podem discordar de mim mas acho que seria bem interessante, mas o projeto já esta em um grande andamento parabens já não tem a minima possibilidade de ser INTERLUDE

Muito bom esse projeto PARABENS MESMO

 

Aquele que aprendeu e reviveu aqui na l2jbrasil

Faço muitos trabalhos para esta comunidade, assim como tambem ajudo aos que precisão.

A VIDA E UMA CAIXINHA DE SUPRESAS, NAO DEIXE PARA DEPOIS O QUE PODES FAZER AGORA!

 

Link para o comentário
Compartilhar em outros sites

já tão brigando pela cronica do emulador ?

não era melhor primeiro estabilizar o core pra depois fazer o datapack ?

vamo com calma galera, deixem primeiro o rogiel trabalhar

e se for depois fazer pra interlude vai ser atraso de vida. :dry:

"carne de lata" ter esse trabalho todim pra depois fazer interlude.

 

--------------------------EDIT----------------------------

@rogiel

não estou querendo ensinar o padre a celebrar, mas não custa nada dar uma olhada aqui:

http://www.guj.com.br/

1024113268.png

Link para o comentário
Compartilhar em outros sites

@courage

 

tu viu alguem brigando ?

 

então não acha coisa onde não tem foi só uma opinião

 

Aquele que aprendeu e reviveu aqui na l2jbrasil

Faço muitos trabalhos para esta comunidade, assim como tambem ajudo aos que precisão.

A VIDA E UMA CAIXINHA DE SUPRESAS, NAO DEIXE PARA DEPOIS O QUE PODES FAZER AGORA!

 

Link para o comentário
Compartilhar em outros sites

@ByJrmhp

 

Porque não é uma boa idéia fazer interlude:

- Interlude atualmente encontra-se em uma fase estática, onde não há mapas, monstros, quests ou algum diferencial. O que muda em um servidor para o outro são os itens, modo de farm e etc.

As versões gracia tem Pets, Boats, mapas, Monstros, Quests, Boss, Skills, animações, efeitos e inúmeras outras vantagens (apesar de eu ainda preferir o gameplay do Interlude).

- Interlude já tá entrando em decadência. Muita gente joga inteluder porque nao consegue o client gracia (baixar/comprar) ou porque o comp***dor não possui um suporte bom ao gráfico e memória requisitados, ou seja, pura questão de acessibilidade.

- É difícil ver um servidor Gracia que funcione pelo menos 85% do que deveria funcionar. Portanto, é melhor fazer um gracia diferenciado onde as coisas realmente deêm o retorno esperado.

 

Observação: Opinião minha, não tomem dores pelo que falei, é apenas meu ponto de vista sobre o porquê de não fazer esse projeto para a versão interlude.

8cp1z10.png
Link para o comentário
Compartilhar em outros sites

sim sim mend3 foi só uma sugestão

assim sabendo que os L2OFFS já estão com GRACIA FINAL PERFECT

 

enquantos os JAVAS não chegão nem aos pés do L2OFF INTERLUDE ( exceto alguns projetos )

MAS O DEV DA L2J REWRITE que deve saber qual o melhor client :P

 

Aquele que aprendeu e reviveu aqui na l2jbrasil

Faço muitos trabalhos para esta comunidade, assim como tambem ajudo aos que precisão.

A VIDA E UMA CAIXINHA DE SUPRESAS, NAO DEIXE PARA DEPOIS O QUE PODES FAZER AGORA!

 

Link para o comentário
Compartilhar em outros sites

@ByJrmhp

na realidade niguem brigou ainda mesmo, (que bom) :biggrin: pq aqui sempre tem conflitos de gente que defende interlude e os mais atuais, o blablabla de sempre.

e o que o mend3 falou foi pura verdade.

e que historia é essa que vazou l2off gracia final ? tem como tu arrumar mais info ? algum link ? ficaria grato.

1024113268.png

Link para o comentário
Compartilhar em outros sites

olha no gamesites 200 que tu vai ver o tanto de server migrando pra gracia final L2OFF já tão vendendo a pack full kkkkkkk la2 já e gracia final l2off já tem até gracia FREYA l2off mas custa caro muito caro

 

Aquele que aprendeu e reviveu aqui na l2jbrasil

Faço muitos trabalhos para esta comunidade, assim como tambem ajudo aos que precisão.

A VIDA E UMA CAIXINHA DE SUPRESAS, NAO DEIXE PARA DEPOIS O QUE PODES FAZER AGORA!

 

Link para o comentário
Compartilhar em outros sites

@ByJrmhp

na realidade niguem brigou ainda mesmo, (que bom) :biggrin: pq aqui sempre tem conflitos de gente que defende interlude e os mais atuais, o blablabla de sempre.

e o que o mend3 falou foi pura verdade.

e que historia é essa que vazou l2off gracia final ? tem como tu arrumar mais info ? algum link ? ficaria grato.

 

ja faz um tempinho que vazo o l2off gracia , o rpgclub tinha a bastante tempo agora vazo de vez e nego ta vendendo adoidado , so nao tenho infos de onde comprar :D

cyCrFTF.jpg

Obrigado pelo presente Mickaelll

Corintiano Fanático;

Estudante de T.I e l2jbrasileiro nas horas vagas.

Link para o comentário
Compartilhar em outros sites

eu conheço quem vende e digo que não é nada barato

 

Aquele que aprendeu e reviveu aqui na l2jbrasil

Faço muitos trabalhos para esta comunidade, assim como tambem ajudo aos que precisão.

A VIDA E UMA CAIXINHA DE SUPRESAS, NAO DEIXE PARA DEPOIS O QUE PODES FAZER AGORA!

 

Link para o comentário
Compartilhar em outros sites

então ... minha resposta a tudo(meu ponto de vista, e meu olhar ao projeto ):

 

bom, eu parei para lêr atentamente tudo que postou e tudo que está sendo comentado, na minha opnião, você é um dos unicos a ter essa iniciativa.

Pois os demais somente pegam packs já refeitas mudão nomes, e comercializa, ( sem querer ofender ou citar nomes ) ...

vende issof az aquilo os cambal ...

não estou me referindo a ninguem, só estou citando o que acabei de lê.

 

Caro Rogiel vi que você tem um ótimo futuro com esse projeto.

 

eu não sou um "EXPERT" em java. mas eu tento desinrolar, sei de algumas manhas, e tenho os meus "contatos" se é que posso chamalos assim.

enfim, vi que esse projeto só tende a melhorar e a seguir em frente, atualmente estou mechendo em l2java interlude, ( que pelo menos roda no meu pc) kk

bom, tenho também algumas coisas sobre gracia HF, e etc ...

 

eu posso te ajudar no que precisar, qualquer info, qualquer arquivo, qualquer programa, no que for!

que seja bom para o projeto e que tenha continuidade ...

 

e volto a repetir:

 

 

"

comentários desviados do objetivo original só polui o tópico que, como dá pra ver, é um desenvolvimento... "

 

 

forte abraços, e repetindo ..

 

 

BOA SORTE COM O PROJETO!

 

Olá, Seja bem vindo, deixei de fazer videos faz tempo, mas ainda tenho canal! KKK Eram bons videos, muita coisa bacana, mas cansei! Agora só desenvolvo! KAKAK 
Se tiver dúvidas, mande uma mensagem!

▶️ youtube.com/allaanz1n
🌐 allan.deh [Skype]

Link para o comentário
Compartilhar em outros sites

  • 4 months later...

Muito legal sua iniciativa cara!

 

Você poderia se juntar aos companheiros lordrex, e os demais desenvolvedores da antiga L2Emu.. que hoje estão na l2jfree, trabalhando no projeto GENESIS que seria exatamente isso que você explicou acima.. Eles estão programando um novo emulador.. do zero!

http://svn.l2jfree.com/l2jfree/branches/genesis/

 

Se quiser o contato dos caras é só me mandar MP... Good Luck! rolleyes.gif

Link para o comentário
Compartilhar em outros sites

  • 2 months later...

Então, como não teve atualizações aqui no tópico, venho perguntar, o projeto continua ou parou tudo de vez ? '-'

Caso tenha alguma sugestão para aplicativos, por favor envie por MP.

 WhatsApp: 22 98156-2591 

L2JDREAM PROJECT

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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