Ir para conteúdo
  • Cadastre-se

[Tutorial] Criando Servidor de Lineage 2


Kelvin
Message added by Grundor

Atenção, esse tópico está desatualizado, use https://curso.l2jbrasil.com para um tutorial mais atualizado sobre como criar seu servidor de lineage 2.

Posts recomendados

  • 4 weeks later...

Criando servidor de Lineage 2

Criar servidor de lineage, criar servidor de l2, criando servidor de lineage

 

Necessário:

Todos os arquivos e programas necessarios estão para download no meu 4Shared.

 

logo.gif

 

Download Softwares necessarios.

 

Java JDK

MySQL 5.0 ou MySQL 6.0

Navicat Premium

UnderIP

FileEdit ou Editor ini

 

Podera escolher um servidor na zona de servidores.

 

Clique aqui!

 

Video Aula:

 

http://youtu.be/_Xmg4tNtvuE

 

Tutorial com imagem:

 

 

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

1ª instale o JavaJDK.

2ª instale o MySQL 5.0 Server.

 

Instalando - MySQL 5.0 Server.

-Rode o arquivo executável (DUH).

-Aperte no botão Next para criar um novo exemplo.

 

-Selecione Detailed Configuration.

1.jpg

 

-Server Machine

2.jpg

 

-Next , Next

-Escolha a primeira opção para 20 jogadores.

3.jpg

 

- NEXT , NEXT , NEXT

-Security Options ... Não marque nada !

4.jpg

 

-EXECUTE

5.jpg

->Agora voce tem configurado seu MySQL server com Login : root, sem senha e porta 3306.

 

3ª Instale o NAVICAT !

 

4ª No NAVICAT clique em connection e coloque em Host name/IP address "localhost" , port "3306" , Username "root" e deixe em branco password e clique em OK.

7.jpg

 

-Ira aparecer um novo campo de conexão chamado "localhost". Certo iremos clicar com botão direito do mause e selecionar > New Database e dar o nome de l2jdb para sua nova database e clique em OK.

8.jpg

 

 

5ª Pre-Configurado REV.

 

5.1. Extraia todos os arquivos p. uma pasta de sua escolha. C:\Server

 

9.jpg

 

5.2. Abra o NAVICAT e restaure o backup da DATABASE q esta inclusa no pacote. Vc vai achar o backup

(InterludeSvBAK.psc) na msm pasta onde vc extraiu o conteúdo do server.

 

5.3. Depois de feito va a pasta\Interlude Server\l2j-gameserver\dist\config\ e abra usandu o BLOCO DE NOTAS o arquivo server.proprierties

 

5.4. Edite os IPs colocando os seus respectivos.

 

10.jpg

 

5.5. Vc pode mudar as rates do seu server no arquivo rates.proprierties

 

Outra coisa …. SERVIDOR NAO MORDE ! Sinta-se livre para editar os arquivos .proprierties do seu gameserver !!! Apenas lembre de fazer um backup deles antes !

 

****Todos os NPCs vao estar no meiu de GIRAN. Sinta-se a vontade p. pegar o ID deles (segurar o shift e clicar no npc , usando um personagem GM) e dar um spawn onde vc desejar.

 

 

-Agora precisaremos rodar o "startloginserver.bat" (pasta login) e "startgameserver.bat" (pasta gameserver). Lembre seu servidor esta em modo de autocriação de conta, você precisarar ativa o arquivo "startaccountmanager.bat" desta vez.

 

11.jpg

Pronto o servidor esta rodando!!!

Se vc usar Roteador tera q abrir as portas 7777 (game server), e 2106 (login server).

 

Segundo passo: Client

 

Eh preciso ter a versão correspondente a seu cliente.

 

Download.

 

Usaremos um programa diferente para a edição do seu L2.ini que faz a conexão de você com o servidor.

Coloque o programa dentro da pasta system, abra ele, ele ira abrir um texto no bloco de notas procure pela linha em vermelho:

Depois de achado, você coloca o seu IP interno se for jogar em rede ou no mesmo PC.

Exemplo para jogar Offline:

ServerAddr=127.0.0.1

 

Para os players você coloca o NO IP (logo a baixo ensina a você criar uma conta no L2.ini.

Ex: l2jbrasil.dnsmmo.com

 

Depois de editado o IP salve o arquivo e feche o bloco de notas normalmente.

Pronto UnderIP Editado!

Após terminada as configurações, vamos tornar seu IP dinamico em fixo para poder usar em seu servidor externamente!

Como usar?

 

Acessem nosso site e realizem o cadastro por nosso formulário ou por sua conta de facebook.

 

3nzLKdt.jpg

 

Após o cadastro sera solicitado que crie uma senha. É muito importante sua senha para poder logar no aplicativo desktop!

 

 

YKsCsKy.jpg

 

Feito isso você podera cadastrar seu novo nome de domínio e apontar para um IP pelo serviço online ou baixar no seu computador Windows para captar o seu IP externo.

 

Y0vPddA.jpgOu FB0XS37.jpg

 

 

 

Agora vc soh tem q colocar no IP EXTERNO da configuraçao do seu server e no L2.ini dos clientes o REDIRECIONAMENTO Q VC CRIOU ! Nesse exemplo seria dominio.underip.com

 

Enjoy !!

 

 

5ª Abra o Lineage executando o arquivo L2.exe na pasta system.

 

OBS: Para fazer um char GM, primeiro crie um novo personagem e esteja certo q o char nao estao logado (Apenas abra o jogo e digite algum Login e Senha porque sera criado automaticamente, e crie um novo char).

 

- Abre o navicat , clique em localhost e entao na database l2jdb. Algumas tabelas vao aparecer no lado direito. Abra a tabela characters clicando 2x nela. Procure pela LINHA do seu personagem e depois ache a coluna ACCESS LEVEL dele. Mude o valor 0 (zero) pra 100 (cem), feche e logue o personagem ! Pronto !

 

Depois de criado seu servidor registre no nosso TOP aproveite que ja consegue por on e aventure-se em colocar online em massa em maquinas dedicadas... ;)

 

TOP

 

Creditos: Kelvin - www.l2jbrasil.com

 

 

Todos os direitos reservados.

 

 

 

 

 

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

 

boa tarde os dois mysql estão corrompidos

Raul Saubher

Link para o comentário
Compartilhar em outros sites

  • 1 month later...
  • 1 month later...

ta dando erro no winrar com java me ajuda plis

 

 

MEU JAVA NAO ESTA EXTRAINDO. TA DANDO ERROR NO WINRAR.

Oque eu Posso Fazer.?? Baixar em Outro Lugar???

Ou tem Outra Forma, a qual eu consiga EXTRAIR ele.??

Se Alguem Puder me Ajudar. Serei TOTALMENTE GRATO!!!

OBRIGADO!!!!!!

 

Baixem o java JDK.

ta dando erro no winrar com java me ajuda plis

 

 

MEU JAVA NAO ESTA EXTRAINDO. TA DANDO ERROR NO WINRAR.

Oque eu Posso Fazer.?? Baixar em Outro Lugar???

Ou tem Outra Forma, a qual eu consiga EXTRAIR ele.??

Se Alguem Puder me Ajudar. Serei TOTALMENTE GRATO!!!

OBRIGADO!!!!!!

 

Baixem o java JDK.

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

 

 

Link para o comentário
Compartilhar em outros sites

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

MYSQL 5.5

 

MYSQL 5.6

 

MYSQL 5.7

 

Servidores como a Dream V2 (a melhor no momento) usa a 5.6 porém eu modifiquei o código da minha plataforma, e uso o 5.5.29 por questões pessoais (nunca me deu problemas).

 

Recomendo 5.5 ou 5.6, a 5.7 ainda não testei, e creio que não tenha projetos que a utilizem, ainda.

Boa sorte!

CYeAxaZ.png


L2JDREAM PROJECT TEAM

Link para o comentário
Compartilhar em outros sites

ai galera acho que so eu tive bo aqui quando vou configurar o msql ele ja da erro na segunda opçao

prepare configuration -ok

Write configuration file- x

configuration filetemplate c:\ pf\mysqlserver5\mytemplate.ini could not beprocessed and written to c:\pfzmysql5\myini. error code 1

 

,resolvido apenas instalei o mysql 5.1

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

  • 2 weeks later...

Criando servidor de Lineage 2

Criar servidor de lineage, criar servidor de l2, criando servidor de lineage

 

Necessário:

Todos os arquivos e programas necessarios estão para download no meu 4Shared.

 

logo.gif

 

Download Softwares necessarios.

 

Java JDK

MySQL 5.0 ou MySQL 6.0

Navicat Premium

UnderIP

FileEdit ou Editor ini

 

Podera escolher um servidor na zona de servidores.

 

Clique aqui!

 

Video Aula:

 

http://youtu.be/_Xmg4tNtvuE

 

Tutorial com imagem:

 

 

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

1ª instale o JavaJDK.

2ª instale o MySQL 5.0 Server.

 

Instalando - MySQL 5.0 Server.

-Rode o arquivo executável (DUH).

-Aperte no botão Next para criar um novo exemplo.

 

-Selecione Detailed Configuration.

1.jpg

 

-Server Machine

2.jpg

 

-Next , Next

-Escolha a primeira opção para 20 jogadores.

3.jpg

 

- NEXT , NEXT , NEXT

-Security Options ... Não marque nada !

4.jpg

 

-EXECUTE

5.jpg

->Agora voce tem configurado seu MySQL server com Login : root, sem senha e porta 3306.

 

3ª Instale o NAVICAT !

 

4ª No NAVICAT clique em connection e coloque em Host name/IP address "localhost" , port "3306" , Username "root" e deixe em branco password e clique em OK.

7.jpg

 

-Ira aparecer um novo campo de conexão chamado "localhost". Certo iremos clicar com botão direito do mause e selecionar > New Database e dar o nome de l2jdb para sua nova database e clique em OK.

8.jpg

 

 

5ª Pre-Configurado REV.

 

5.1. Extraia todos os arquivos p. uma pasta de sua escolha. C:\Server

 

9.jpg

 

5.2. Abra o NAVICAT e restaure o backup da DATABASE q esta inclusa no pacote. Vc vai achar o backup

(InterludeSvBAK.psc) na msm pasta onde vc extraiu o conteúdo do server.

 

5.3. Depois de feito va a pasta\Interlude Server\l2j-gameserver\dist\config\ e abra usandu o BLOCO DE NOTAS o arquivo server.proprierties

 

5.4. Edite os IPs colocando os seus respectivos.

 

10.jpg

 

5.5. Vc pode mudar as rates do seu server no arquivo rates.proprierties

 

Outra coisa …. SERVIDOR NAO MORDE ! Sinta-se livre para editar os arquivos .proprierties do seu gameserver !!! Apenas lembre de fazer um backup deles antes !

 

****Todos os NPCs vao estar no meiu de GIRAN. Sinta-se a vontade p. pegar o ID deles (segurar o shift e clicar no npc , usando um personagem GM) e dar um spawn onde vc desejar.

 

 

-Agora precisaremos rodar o "startloginserver.bat" (pasta login) e "startgameserver.bat" (pasta gameserver). Lembre seu servidor esta em modo de autocriação de conta, você precisarar ativa o arquivo "startaccountmanager.bat" desta vez.

 

11.jpg

Pronto o servidor esta rodando!!!

Se vc usar Roteador tera q abrir as portas 7777 (game server), e 2106 (login server).

 

Segundo passo: Client

 

Eh preciso ter a versão correspondente a seu cliente.

 

Download.

 

Usaremos um programa diferente para a edição do seu L2.ini que faz a conexão de você com o servidor.

Coloque o programa dentro da pasta system, abra ele, ele ira abrir um texto no bloco de notas procure pela linha em vermelho:

Depois de achado, você coloca o seu IP interno se for jogar em rede ou no mesmo PC.

Exemplo para jogar Offline:

ServerAddr=127.0.0.1

 

Para os players você coloca o NO IP (logo a baixo ensina a você criar uma conta no L2.ini.

Ex: l2jbrasil.dnsmmo.com

 

Depois de editado o IP salve o arquivo e feche o bloco de notas normalmente.

Pronto UnderIP Editado!

Após terminada as configurações, vamos tornar seu IP dinamico em fixo para poder usar em seu servidor externamente!

Como usar?

 

Acessem nosso site e realizem o cadastro por nosso formulário ou por sua conta de facebook.

 

3nzLKdt.jpg

 

Após o cadastro sera solicitado que crie uma senha. É muito importante sua senha para poder logar no aplicativo desktop!

 

 

YKsCsKy.jpg

 

Feito isso você podera cadastrar seu novo nome de domínio e apontar para um IP pelo serviço online ou baixar no seu computador Windows para captar o seu IP externo.

 

Y0vPddA.jpgOu FB0XS37.jpg

 

 

 

Agora vc soh tem q colocar no IP EXTERNO da configuraçao do seu server e no L2.ini dos clientes o REDIRECIONAMENTO Q VC CRIOU ! Nesse exemplo seria dominio.underip.com

 

Enjoy !!

 

 

5ª Abra o Lineage executando o arquivo L2.exe na pasta system.

 

OBS: Para fazer um char GM, primeiro crie um novo personagem e esteja certo q o char nao estao logado (Apenas abra o jogo e digite algum Login e Senha porque sera criado automaticamente, e crie um novo char).

 

- Abre o navicat , clique em localhost e entao na database l2jdb. Algumas tabelas vao aparecer no lado direito. Abra a tabela characters clicando 2x nela. Procure pela LINHA do seu personagem e depois ache a coluna ACCESS LEVEL dele. Mude o valor 0 (zero) pra 100 (cem), feche e logue o personagem ! Pronto !

 

Depois de criado seu servidor registre no nosso TOP aproveite que ja consegue por on e aventure-se em colocar online em massa em maquinas dedicadas... ;)

 

TOP

 

Creditos: Kelvin - www.l2jbrasil.com

 

 

Todos os direitos reservados.

 

 

 

 

 

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

Ola

cara ate procurei mas nao encontro o aquivo para ediçao de ip

aparece apenas esta tela

---------------------------------------------------------------------------
# Game Server Settings
# ---------------------------------------------------------------------------
# This is the server configuration file. Here you can set up the connection information for your server.
# This was written with the assumption that you are behind a router.
# Dumbed Down Definitions...
# LAN (LOCAL area network) - typically consists of computers connected to the same router as you.
# WAN (WIDE area network) - typically consists of computers OUTSIDE of your router (ie. the internet).
# x.x.x.x - Format of an IP address. Do not include the x'es into settings. Must be real numbers.
# ---------------------------------------------------------------------------
# Networking
# ---------------------------------------------------------------------------
# Where's the Login server this gameserver should connect to
# WARNING: <u><b><font color="red">Please don't change default IPs here if you don't know what are you doing!</font></b></u>
# WARNING: <u><b><font color="red">External/Internal IPs are now inside "ipconfig.xml" file.</font></b></u>
# Default: 127.0.0.1 " e aqui que coloco meu ip ?"
LoginHost = 127.0.0.1 " e aqui que coloco meu ip ?"
# TCP port the login server listen to for gameserver connection requests
# Default: 9014
LoginPort = 9014
# Bind address for gameserver. You should not need to change it in most cases.
# WARNING: <u><b><font color="red">Please don't change default IPs here if you don't know what are you doing!</font></b></u>
# WARNING: <u><b><font color="red">External/Internal IPs are now inside "ipconfig.xml" file.</font></b></u>
# Default: * (0.0.0.0)
GameserverHostname = *
# Default: 7777
GameserverPort = 7777
# ---------------------------------------------------------------------------
# Database
# ---------------------------------------------------------------------------
# Specify the appropriate driver and url for the database you're using.
# Examples:
# Driver = com.mysql.jdbc.Driver (default)
# Driver = org.hsqldb.jdbcDriver
# Driver = com.microsoft.sqlserver.jdbc.SQLServerDriver
Driver = com.mysql.jdbc.Driver

e tem mais uma coisa no seu 4shared nao tem nenhum documento estou tentando abrir um server da ultima versao e nao estou conseguindo .

eu ja abri um server da versao freya aprendendo por este forum mas nao estou conseguindo a versao nova direito procurei em todo o forum mas nao consegui se possivel e se tiver um topico mais novo e com mais dados eu ficarei feliz em receber a dica

Link para o comentário
Compartilhar em outros sites

  • 4 weeks later...
  • 4 months later...

LOL EU APRENDI POR ESSE TUTO A FAZER MEU SERVIDOR, E ELE TAVA EM INGLÊS, FALTANDO IMAGEMS E COM ERROS :P É SÓ LER E RE LER E USAR A CABEÇA.

quando as pessoas usam a cabeça tudo fica mais fácil, quando eu fui aprender a fazer um serve eu nao pude ler o tutorial por que tava em russo os fórum russo na época eram poucos ai eu tive que dar next next next e ver o que dava quando deu erro eu tendei de outras formas ate fazer rodar na tora nem eu sabia que powa eu tava fazendo rsrsrs mais fiz rodar

Link para o comentário
Compartilhar em outros sites

  • 1 month later...
  • 4 weeks later...
  • 4 weeks later...

como instala esse mysql-installer-community-5.7.12.0?

atualizar o tutorial para os novos MySQL e os novos windows, por favor!

MySQL 6.0 parece nao funcionar no win7 64!

Editado por heero

Faço o que posso com o que eu tenho, Saber é Poder,

Sabedoria é a maior riqueza que temos, não importa se ela é boa ou ruim o que importa é como a usaremos.

Link para o comentário
Compartilhar em outros sites

  • 1 month later...
  • 2 weeks later...
  • 2 months later...
  • 3 months later...
  • 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.