Ir para conteúdo
  • Cadastre-se

Classic (Kamael)


KhayrusS

Posts recomendados


Tentei copilar não foi, ta dando erro no eclipse, depois que apaguei sem querer JAVA variáveis.

Teria como disponibilizar a nova revision ?

Obrigada !! Bjs ?

image.gif.65da07067c45c01b188249abbcdf9608.gif

Link para o comentário
Compartilhar em outros sites

Release 1.2.0 Disponível:

https://github.com/JoeAlisson/L2jOrg/releases

Atualizações:

* Melhoria no sistema de scripting  ( "Incremental build simplificado", ainda em fase de testes)

* Bot Report System com Captcha

* Correções em Bracelets e Brooch

* Ao logar um ícone ( aviso) que existe presente disponível para vip é mostrado

* Mais detalhes https://github.com/JoeAlisson/L2jOrg/milestone/2?closed=1

 Captcha

Spoiler

spacer.png


 Bracelets e Brooch 

Spoiler

 

spacer.png

spacer.png

spacer.png

 

Vip Gift

Spoiler

S0UfaS3.png

 

[]'s

Editado por KhayrusS
  • Gostei 3
  • Amei 2
Link para o comentário
Compartilhar em outros sites

Em 28/05/2019 at 14:27, KhayrusS disse:

Release 1.2.0 Disponível:

https://github.com/JoeAlisson/L2jOrg/releases

Atualizações:

* Melhoria no sistema de scripting  ( "Incremental build simplificado", ainda em fase de testes)

* Bot Report System com Captcha

* Correções em Bracelets e Brooch

* Ao logar um ícone ( aviso) que existe presente disponível para vip é mostrado

* Mais detalhes https://github.com/JoeAlisson/L2jOrg/milestone/2?closed=1

 Captcha

  Mostrar conteúdo oculto

spacer.png


 Bracelets e Brooch 

  Mostrar conteúdo oculto

 

spacer.png

spacer.png

spacer.png

 

Vip Gift

  Mostrar conteúdo oculto

S0UfaS3.png

 

[]'s

Olá amigo, sabe me informar se os " Broochs & Jóias broochs como Ruby, saphire ) estão funcionando corretamente?

E também o transformation system, ele funciona? as transformações e aparências?

desde já obrigado pela resposta.

tongue out GIF

Link para o comentário
Compartilhar em outros sites

1 hora atrás, CaliphYaziD disse:

Olá amigo, sabe me informar se os " Broochs & Jóias broochs como Ruby, saphire ) estão funcionando corretamente? 

Algumas joias funcionam, como você pode ver no post que citou. Não testei todas, meu tempo é curto, mas provavelmente a maioria precisam ser corrigidas no xml. A não ser que haja alguma joia com um efeito muito específico, que necessite de implementação no core, a correção seria simples porém um pouco demorada pela quantidade de items ?

1 hora atrás, CaliphYaziD disse:

E também o transformation system, ele funciona? as transformações e aparências?

Assim como os Broochs e joias não testei todas, na verdade testei bem poucas. As transformações que testei estão funcionando como pode ver na imagem seguinte. Com relação as aparências no momento não tenho planos para adicionar, visto que o oficial NA não dá suporte até então.

https://forums.lineage2.com/topic/3069-apparence-stone/?tab=comments#comment-23569

 

1N11uta.png

Link para o comentário
Compartilhar em outros sites

Em 21/02/2019 at 11:03, KhayrusS disse:
  • Fiquei, mas não tenho conhecimento em Java
    • Toda a ajuda é bem vinda, tem muita coisa pra ser testada/corrigida
    • Existem muitos status de items, skills, htmls, xmls para serem corrigidos
    • É tentando que se aprende ?<span>

 

Gostaria de poder ajudar verificando o banco de dados nas xml, mas tem algum site confiavel pra fazer comparação, pra poder confirmar os valores, chances e efeitos por exemplo?
Se houver, ficaria feliz em verificar e confirmar os dados.

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

Link para o comentário
Compartilhar em outros sites

Olá, @mamute05

Esse problema é devido a ausência de uma variável de sistema. Para resolver você pode adicionar o caminho da pasta bin do mysql na variável de sistema PATH, ou pode colocar o caminho completo do executável do mysql no arquivo install.bat. Por exemplo:

 

@echo off

if exist mysql_settings.conf goto settings

echo Can't find mysql_settings.conf file!
goto end

:settings

for /r install %%f in (*.sql) do ( 
                echo Loading %%~nf ...
		C:\Program Files\MySQL\bin\mysql.exe --defaults-extra-file=mysql_settings.conf < %%f
	)
:end

pause

 

Eu pessoalmente, prefiro a abordagem de adicionar na variável PATH

Link para o comentário
Compartilhar em outros sites

  • 3 weeks later...

Release 1.3.0 Disponível:

https://github.com/JoeAlisson/L2jOrg/releases

Atualizações:

* Update para Secret of Empire (Download System cliente europeu)

* Elemental Attribute System

* Mais detalhes: https://github.com/JoeAlisson/L2jOrg/milestone/3?closed=1

Elemental System:

AMQTc3s.png

 

Nos últimos dias (talvez último mês) tive pouquíssimo tempo, então as atualizações foram poucas. 

Ainda estou precisando de ajuda para as atualizações serem mais frequentes e maiores, não precisa ser um expert. Se tiver um conhecimento básico e vontade de aprender e ajudar entra em contato comigo para conversarmos ?

  • Gostei 3
  • Obrigado 4
Link para o comentário
Compartilhar em outros sites

Em 11/07/2019 at 08:15, KhayrusS disse:

Release 1.3.0 Disponível:

https://github.com/JoeAlisson/L2jOrg/releases

Atualizações:

* Update para Secret of Empire (Download System cliente europeu)

* Elemental Attribute System

* Mais detalhes: https://github.com/JoeAlisson/L2jOrg/milestone/3?closed=1

Elemental System:

AMQTc3s.png

 

Nos últimos dias (talvez último mês) tive pouquíssimo tempo, então as atualizações foram poucas. 

Ainda estou precisando de ajuda para as atualizações serem mais frequentes e maiores, não precisa ser um expert. Se tiver um conhecimento básico e vontade de aprender e ajudar entra em contato comigo para conversarmos ?

Tenho interesse em ajudar, amigo! Te mandei PM.

kLnregy.jpg

L2STUDIO, seu servidor está aqui!
Não me faça perder tempo se você não tem dinheiro para pagar pelos serviços e produtos. Obrigado!

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...
  • 2 weeks later...

Usando Linux Mint aqui...

assim que termina o import aparece isso

Description    Resource    Path    Location    Type
The project was not built due to "Build path contains duplicate entry: 'module-info.java' for project 'L2jOrg'". Fix the problem, then try refreshing this project and building it since it may be inconsistent    L2jOrg        Unknown    Java Problem

 

Editado por Czekay

:onda:?⚜️?

 

Link para o comentário
Compartilhar em outros sites

@Czekay, O Eclipse atualmente não suporta projetos "Jigsaw" (projetos multi-module). O próprio lider de desenvolvimento do Gradle recomenda que por enquanto seja o usado o IDEA (https://github.com/eclipse/buildship/issues/708). 

Existe um "workaround" aqui https://github.com/eclipse/buildship/issues/658, mas ainda não funcionou 100%. Permanece alguns erros no arquivo module-info.java. Como esses erros não impedem o build do projeto e por haver uma IDE que tem suporte (IntelliJ IDEA, que eu particulamente prefiro) não irei tratar desse problema nesse momento.

Link para o comentário
Compartilhar em outros sites

Em 21/02/2019 at 11:03, KhayrusS disse:

 

Código base

Há um tempo venho utilizando uma source para estudo, com o objetivo de utilizar o mmocore assíncrono. Como não vejo projetos Classic open source por aí, resolvi compartilhar.  O código base utilizado é o  L2jMobius.

Protocolo utilizado: 166

GITHUB

System

Requisitos

  • Java 12
  • Mysql 8

As últimas versões compiladas podem ser encontradas em Releases

Atualmente estou em um estágio de melhoria geral do código, otimizações de recursos e atualização de tecnologia.

Basicamente o que está sendo feito:

  • Atualização para Java 12 (Será atualizado assim que novas releases forem saindo);
  • Atualização do mmocore;
  • Utilização de sistema de módulos (JPMS - Disponível a partir do Java 9);
  • Atualização de dependências;
  • Melhoria na camada de acesso a Dados (Tanto no Database como nos arquivos)

Um exemplo de melhoria na camada de acesso a dados:

Antes


private void globalRemoveItems(){
  int itemToDeleteCount = 0;
  StringBuilder itemsToDelete = new StringBuilder();

  Connection con = null;
  PreparedStatement statement = null;
  ResultSet rset = null;
  try
  {
    con = DatabaseFactory.getInstance().getConnection();
    statement = con.prepareStatement("SELECT item_id FROM items_to_delete");
    rset = statement.executeQuery();
    while(rset.next())
    {
      if(itemsToDelete.length() > 0)
        itemsToDelete.append(",");
      itemsToDelete.append(rset.getInt("item_id"));
      itemToDeleteCount++;
    }

    DbUtils.closeQuietly(statement, rset);

    statement = con.prepareStatement("DELETE FROM items_to_delete");
    statement.execute();
  }
  catch(SQLException e)
  {
    _log.error("Error while select items for global remove:", e);
  }
  finally
  {
    DbUtils.closeQuietly(con, statement);
  }

  if(itemsToDelete.length() > 0)
  {
    try
    {
      con = DatabaseFactory.getInstance().getConnection();
      statement = con.prepareStatement("DELETE FROM items WHERE item_id IN (?)");
      statement.setString(1, itemsToDelete.toString());
      statement.execute();

      DbUtils.closeQuietly(statement);

      statement = con.prepareStatement("DELETE FROM items_delayed WHERE item_id IN (?)");
      statement.setString(1, itemsToDelete.toString());
      statement.execute();
    }
    catch(SQLException e)
    {
      _log.error("Error while global remove items:", e);
    }
    finally
    {
      DbUtils.closeQuietly(con, statement);
    }
  }
}

Depois


public interface IItemsDAO extends DAO {
    @Query("WITH ids AS (SELECT item_id FROM items_to_delete) DELETE i, id, ide FROM items i JOIN items_delayed id ON i.item_id = id.item_id JOIN items_to_delete ide ON i.item_id = ide.item_id WHERE  i.item_id IN (SELECT item_id FROM ids)")
    int deleteGlobalItemsToRemove();
}

 

Quanto as correções de bugs, poucos bugs foram corrigidos, apenas os que encontrei enquanto implementava alguns dos pontos citados, pois não tenho tanto tempo disponível para testar e corrigir. Então no primeiro momento estou apenas focando nos pontos citados.

 

VIP Tier System

  Mostrar conteúdo oculto

tKnwSLP.png

 

Bot Report System

  Mostrar conteúdo oculto

fmdlFsO.png

 

Elemental Attribute System

  Mostrar conteúdo oculto

AMQTc3s.png

 

Ficou interessado e quer ajudar ? 

  • Fiquei
    • Entra em contato comigo pra gente conversar, ou pode fazer um fork do projeto e fazer pull request
  • Fiquei, mas não tenho conhecimento em Java
    • Toda a ajuda é bem vinda, tem muita coisa pra ser testada/corrigida
    • Existem muitos status de items, skills, htmls, xmls para serem corrigidos
    • É tentando que se aprende ?

 

[]'s

boa noite gostei do server, muito massa! como posso ajudar ,vou instalar o intellij IDEA , pra aprender ? 

Link para o comentário
Compartilhar em outros sites

11 horas atrás, wonderwoman disse:

boa noite gostei do server, muito massa! como posso ajudar ,vou instalar o intellij IDEA , pra aprender ? 

Bom dia, existem várias coisas com que pode ajudar que englobam todos os níveis de conhecimento, do iniciante ao avançado. Seguem dois artigos que abordam como  contribuir para projetos open souce:

https://medium.com/trainingcenter/contribuindo-para-projetos-open-source-no-github-mesmo-sendo-iniciante-25a5a0ad6215

https://willianjusten.com.br/guia-como-contribuir-em-open-source/

Basicamente você pode contribuir de acordo com o seu nível de experiência, Por exemplo:

  • Iniciantes -> Testes e correções de status de skill e itens;
  • Intermediários -> Correções de código Java;
  • Avançados -> Implementações de novas funcionalidades.

Lógico que isso são apenas exemplos e nada impede que alguém que seja iniciante se aventure com coisas mais avançadas. Eu farei revisões de qualquer contribuição e tentarei dar dicas de como melhorar, caso necessário ?

[]'s

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

4 horas atrás, KhayrusS disse:

Bom dia, existem várias coisas com que pode ajudar que englobam todos os níveis de conhecimento, do iniciante ao avançado. Seguem dois artigos que abordam como  contribuir para projetos open souce:

https://medium.com/trainingcenter/contribuindo-para-projetos-open-source-no-github-mesmo-sendo-iniciante-25a5a0ad6215

https://willianjusten.com.br/guia-como-contribuir-em-open-source/

Basicamente você pode contribuir de acordo com o seu nível de experiência, Por exemplo:

  • Iniciantes -> Testes e correções de status de skill e itens;
  • Intermediários -> Correções de código Java;
  • Avançados -> Implementações de novas funcionalidades.

Lógico que isso são apenas exemplos e nada impede que alguém que seja iniciante se aventure com coisas mais avançadas. Eu farei revisões de qualquer contribuição e tentarei dar dicas de como melhorar, caso necessário ?

[]'s

posso começar como inciante , vou dar uma estudada nisso , tenho real interesse em aprender

consegui instalar o intellij IDEA  beleza e consegui dar checkout no git do seu projeto

não entendi muito como compilar ele , pois me pareceu muito diferente do eclipse essa nova IDEA , enfim eu tenho muito tempo livre, me falta um direcionamento de  como procurar por ex: um erro . tenho interesse em ajudar, pois sei que com isso eu vou ganhar experiencia, /seu server roda muito bem aqui no meu pc, porem eu não sei como dar "tipo" (ant build) que existe no eclipse , eu clonei o git seu e qndo eu do~u Run build  aparece um monte de erros

depois de eu entrar no intellij já com seu git dentro me pediu pra baixar um crandle coisa que não vi nos java normais, quero ajudar se possivel gostaria de mais orientações de como fazer

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

O projeto utiliza o Gradle como ferramenta de build e gerenciamento de dependências. Por isso não existe o "ant build" que é uma opção de outra ferramenta de build, o Ant. 

Esse link https://www.jetbrains.com/help/idea/gradle.html#gradle_import_project_start tem a documentação de como importar um projeto gradle no IntelliJ.

O processo de compilação é bem simples e existem várias formas de fazer. Uma das formas de realizar o build é totalmente independe de IDE. Você pode fazer até pelo CMD/Terminal,  mas aqui vou falar como fazer no Intellij.

Aperte alt+F12, isso vai abrir a janela terminal. No terminal só executar o seguinte comando: (Esses mesmos comandos podem ser executados no CMD ou Terminal dentro da raiz do projeto)

  1. No Linux:
    ./gradlew distZip
  2. No Windows 
    gradlew.bat distZip

     

Esse comando faz o download das dependências do projeto e realiza o build. Será gerado um arquivo .zip na pasta build/distributions. Alternativamente você também pode utilizar a task distTar ao invés de distZip, a diferença é apenas o formato do arquivo gerado. 

 

 

Outra forma de realizar é através da IDE, após importar o projeto geralmente aparece uma janela com o nome "Gradle" na barra de ferramentas do lado direito do IntelliJ. Caso não apareça é só apertar ctrl+shift+a e pesquisar por Gradle. 

É nessa janela que é mostrado a estrutura do projeto conforme a imagem abaixo. Caso a estrutura do projeto não apareça ou esteja diferente dessa imagem, é provável que houve algum erro importação do projeto, você pode tentar reimportar o projeto utilizando o primeiro botão, que tem o ícone de duas setas. Para realizar o build é só dar dois cliques na task distZip, o resultado é o mesmo que executar o comando pelo terminal.

  aTiJD9W.png

 

 

Um problema que você pode encontrar é que o projeto atualmente utiliza "features preview" do Java 12. Por padrão o IntelliJ não reconhece que essas funções são válidas então é preciso configurar isso. Acredito que esse foi por isso que encontrou diversos erros ao tentar dar build.

A mensagem do erro é geralmente essa:

Error:(41, 26) java: switch rules are a preview feature and are disabled by default.
  (use --enable-preview to enable switch rules)

 

  O erro está descrevendo que o problema é que o código está utilizando "switch rules" que é uma funcionalidade "preview" e essas funcionalidades são desativadas por padrão.

Para corrigir é bem simples, dê dois cliques em algum dos erros que apareceram, isso vai abrir a parte do código que está causando o problema. Coloque o cursor do mouse em alguma parte do error e aperte Alt + Enter, irá aparecer um diálogo, escolha a opção "Set language level to 12 (Preview)", conforme a imagem abaixo.

Feito isso os erros deverão deixar de ocorrer. Lembrando que esses erros acontecem apenas dentro do build realizado pela própria IDE, utlizando os métodos que descrevi acima esses erros não acontecem, devido a configuração de preview está configurada nos scripts do Gradle. Uma coisa que acontece é que ao reimportar o projeto, esse mesmo erro volta a acontecer, então é necessário realizar esses passos mais uma vez.

 

8MPb4Uj.png

 

 []'s

 

 

 

Editado por KhayrusS
  • Amei 1
  • Obrigado 1
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.
  • Conteúdo Similar

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