Ir para conteúdo
  • Cadastre-se
  • 0

Não consigo deixar meu Servidor Online (NO-IP)


SHAYL0NG

Pergunta

Bom dia, boa tarde, boa noite!

Estou querendo abrir um servidor de Lineage 2, para relembrar os velhos tempos de jogatina com os amigos (e outros players que estejam interessados no server). Já olhei diversos posts e vídeos sobre a criação e manutenção dos servidores. Mas mesmo assim não consigo deixar o servidor online, na minha máquina funciona tranquilo, mas ao tentar logar em outra ele não passa do login.

Já baixei o DUC e criei o host, já abri e testei as portas 7777, 2106, 3306, 9014 e 8245 diretamente no modem e firewall do windows. Editei o L2.ini e coloquei meu host (l2titan.ddns.net) na outra máquina.

Informação adicional:
Quando tento logar na minha máquina com o l2.ini editado com o host não consigo logar também, só consigo ao edita-lo novamente para 127.0.0.1. 
A system que baixei do tópico: "Rev L2Konoha v3 100%", joguei diretamente na system do Client Interlude.

Segue:

server.properties

#===============================================================================
# Starting L2JFREE 2741 PRE-CONFIGURADO POR LUCAS LÓPEZ VERSAO-4               =
#                                                                              =
# INFORMAÇÕES DE VENDA DE SERVIDORES EXCLUSIVOS E SUPORTE A LINEAGE II         =
#
# [email protected]                L2J & L2OFF                            =
# [email protected]          L2J & L2OFF                            =
#                                                                              =
#===============================================================================

# This is the server configuration file. Here you can set up the connection for your server.
# Usually you have to change the ExternalHostname option to
# - 127.0.0.1 (if you want to play alone / testing purpose)
# - LAN IP* (if you want to play from another computer in the network)
# - WAN IP** (if you want to play with friends over internet)
# - Questions? => http://l2jfree.com
#
# * = If you want to get your LAN IP, simply choose "Start" => "Run..." then type "cmd" => "ipconfig"
# **= If you want to get you WAN IP, visit http://www.whatismyip.com
# ===================================================================================================
 
# ================================================================
# General server setting !!! REQUIRED to configure to everyone !!!
# ================================================================

# Bind ip do gameserver, use 0.0.0.0 para vincular disponível em todos os IPs
# EXEMPLO: GameserverHostname=127.0.0.1 <----NO CAMINHO ABAIXO COLOQUE O IP DE SUA PLACA DE REDE

GameserverHostname= *
GameserverPort=7777

# Esta é transmitida para os clientes a partir de uma conexão de rede externa, por isso tem de ser um IP público ou resolúvel hostname
# EXEMPLO: ExternalHostname=l2mak.servegame.com <-----NO CAMINHO ABAIXO COLOQUE O SEU NO-IP AQUI

ExternalHostname=l2titan.ddns.net

# Esta é transmitida para o cliente a partir da mesma rede, por isso tem de ser um local IP ou hostname resolúvel
# EXEMPLO: InternalHostname=127.0.0.1 <----NO CAMINHO ABAIXO COLOQUE O IP DE SUA PLACA DE REDE

InternalHostname=127.0.0.1

# Define internal networks (10.0.0.0/8,192.168.0.0/16 is default internal networks)
InternalNetworks= 127.0.0.1

# Define optional networks and router IPs
# IP (200.100.200.100) or fully qualified domain name
# (google.com) that resolves to an IP (use ping to determine if a domain resolves).
# Format: ip,net/mask;ip,net/mask,net/mask
# (mask 192.168.0.0/16 or 192.168.0.0/255.255.0.0 would be 192.168.*.*)
# Note: keep InternalNetworks and OptionalNetworks blank for compatibility with older login server
OptionalNetworks=127.0.0.1

# O Loginserver host e porta
# EXEMPLO: LoginPort=9014 <--NUNCA TROQUE ESSA PORTA
# EXEMPLO: LoginHost=127.0.0.1 <-- NUNCA TROQUE ESSE IP

LoginPort=9014
LoginHost=127.0.0.1

# This is the server id that the gameserver will request (i.e. 1 is Bartz)
RequestServerID = 1
# If set to true, the login will give an other id to the server  if the requested id is allready reserved
AcceptAlternateID = True

# Database info
Driver=com.mysql.jdbc.Driver

#Driver=org.hsqldb.jdbcDriver
#Driver=com.microsoft.sqlserver.jdotc.SQLServerDriver
# EXEMPLO: URL=jdbc:mysql://localhost/l2konoha <---CAMINHO E NOME DE SEU BANCO DE DADOS (l2jdb)
URL=jdbc:mysql://localhost/l2titan

#URL=jdbc:hsqldb:hsql://localhost/l2konoha
#URL=jdbc:sqlserver://localhost/database=l2konoha/user=sa/password=
#EXEMPLO: Login=root <--LOGIN DE SEU BANCO DE DADOS MYSQL QUE É ROOT COMO PADRÃO
#EXEMPLO: Password=suasenha <--SENHA DE SEU BANCO DE DADOS, É A MESMA QUE VC COLOCOU NO MOMENTO DE INSTALAÇÃO DO MYSQL
Login=root
Password=

MaximumDbConnections=100

# Datapack root directory, defaults to current directory from which the server is started
#DatapackRoot=H:/workEclipse/L2J Free/trunk/L2_DataPack_IL

# Define character name template
# These ones are regular expressions, visit http://www.regular-expressions.info for details
# Note: Checking lengths are done server side, but keep it in pattern for future purposes
# Character name ( Default [A-Za-z0-9\-]{3,16} )
CnameTemplate=[A-Za-z0-9]{3,16}

# Pet name ( Default [A-Za-z0-9\-]{3,16} )
PetNameTemplate=[A-Za-z0-9]{3,16}

# Clan and ally name ( [A-Za-z0-9 \-]{3,16} )
ClanAllyNameTemplate=[A-Za-z0-9 \-]{3,16}

# Title ( [A-Za-z0-9 \-\\[\\]\<\>\(\)\!\|]{3,16} )
TitleTemplate=[A-Za-z0-9 \-\\[\\]\<\>\(\)\!\|]{3,16}

# Maximum number of chars per account - 0 = illimited - default = 7
CharMaxNumber = 5

# Define how many players are allowed to play simultaneously on your server.
MaximumOnlineUsers=300


# Minimum and maximum protocol revision that server allow to connect.
# You must keep MinProtocolRevision <= MaxProtocolRevision.
MinProtocolRevision = 740
MaxProtocolRevision = 746

#---------------------------------------------
# Safe Reboot configuration
#---------------------------------------------
# This will prevent some exploit during restart/shutdown process
SafeReboot = true
# To use following options, SafeReboot must be set to True
# Time in seconds before server complete shutdown/reboot, when 
# following striction take effect
SafeRebootTime = 10
# Disable item enchant
SafeRebootDisableEnchant=True
# Disable players teleportations
SafeRebootDisableTeleport=False
# Disable craft and crystallize
SafeRebootDisableCreateItem=False
# Disable trades and shops
SafeRebootDisableTransaction=False
# Disable actions between players
SafeRebootDisablePcIteraction=False
# Disable actions on NPC
SafeRebootDisableNpcIteraction=False

# Network traffic optimization: minimum time between sending char's hp/mp status update packet.
NetworkTrafficOptimization = False
NetworkTrafficOptimizationMs = 1100

# Flood Protection
# if enabled players which send more then PACKETLIMIT packets in PACKETTIMELIMIT ms will get kicked
# warning not tested made a quickhack for squeezed :)
FloodProtection = False
PacketLimit = 500
PacketTimeLimit = 1100


# ================================================================
# JMX Administration
# ================================================================
# Port to connect with l2jmx, -1 to disable jmx completely
admin_portJMX=-1
# Port to connect to jmx via HTTP, -1 to disable
# disable it if it is not local test
# http adaptor is usefull to see if your server is running with l2jbeans, or to see others beans (JRE, logging)
# It is also possible to use it if you forbid this port for external host, but you have to be sure nobody can reach this url !
admin_portHTTP=-1
# password for keystore_file, the keystore file should be in config folder.
# Comment it or remove the keystore file if you doesn't want to activate secure socket.
#keystore_password=password
# keystore file
# this file is used to store a SSL certificate for your jmx server.
# You have to create it with keytool like this :
# $JAVA_HOME/bin/keytool -genkey -keyalg "RSA" -keystore myKeystore.jks -storepass myPassword -dname "cn=myhost"
# Change myKeystore, myPassword and myhost for your own needs
# You have to give this file to all people that will use l2jmx
#keystore=keystore.jks


loginserver.properties

#===============================================================================
# Starting L2JFREE 2741 PRE-CONFIGURADO POR Lucas Lopez VERSAO-2               =
#                                                                              =
# INFORMAÇÕES DE VENDA DE SERVIDORES EXCLUSIVOS E SUPORTE A LINEAGE II         =
# [email protected]           L2J & L2OFF                               =
# [email protected]           L2J & L2OFF                               =
#                                                                              =
# http://www.l2jrox.com.br                                                     =
# VISITE NOSSO FORUM.                                                          =
#===============================================================================

# This is the server configuration file. Here you can set up the connection for your server.
# Usually you have to change the ExternalHostname option to
# - 127.0.0.1 (if you want to play alone / testing purpose)
# - LAN IP* (if you want to play from another computer in the network)
# - WAN IP** (if you want to play with friends over internet)
# - Questions? => http://l2jserver.com
#
# * = If you want to get your LAN IP, simply choose "Start" => "Run..." then type "cmd" => "ipconfig"
# **= If you want to get you WAN IP, visit http://www.whatismyip.com
# ===================================================================================================

# ================================================================
# General server setting !!! REQUIRED to configure to everyone !!!
# ================================================================

# This is transmitted to the clients connecting from an external network, so it has to be a public IP or resolvable hostname
ExternalHostname =  l2titan.ddns.net

# This is transmitted to the client from the same network, so it has to be a local IP or resolvable hostname
InternalHostname =  127.0.0.1

# Bind ip of the LoginServer, use * to bind on all available IPs
LoginserverHostname = *
LoginserverPort = 2106
# How many times you can provide an invalid account/pass before the IP gets banned
LoginTryBeforeBan = 10
# Time you won't be able to login back again after LoginTryBeforeBan tries to login. Provide a value in seconds. Default 10min. (600)
LoginBlockAfterBan = 600
GMMinLevel = 100

# The address on which login will listen for GameServers, use * to bind on all available IPs
LoginHostname =  127.0.0.1

# The port on which login will listen for GameServers
LoginPort = 9014

# If set to true any GameServer can register on your login's free slots
AcceptNewGameServer = True

# If false, the licence (after the login) will not be shown
# It is highly recomended for Account Seciurity to leave this option as defalut (True)
ShowLicence = True

# Database info
Driver=com.mysql.jdbc.Driver
#Driver=org.hsqldb.jdbcDriver
#Driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
URL=jdbc:mysql://localhost/l2titan
#URL=jdbc:hsqldb:hsql://localhost/l2konoha
#URL=jdbc:sqlserver://localhost/database=l2konoha/user=sa/password=
Login = root
Password = 
MaximumDbConnections = 10

# Useable values: "true" - "false", use this option to choose whether accounts will be created
# automatically or not.
AutoCreateAccounts = true

# The delay in minutes after which the login updates the gameservers IP's (usefull when their ip is dynamic)
IpUpdateTime = 15


# ==============================================================
# Test server setting, shoudnt be touched in online game server
# ==============================================================

Debug = False
Assert = False
Developer = False

# Enforce GG Authorization from client
# Login server will kick client if client bypassed GameGuard authentication
ForceGGAuth = False

#FloodProtection. time in ms
EnableFloodProtection = True
FastConnectionLimit = 15
NormalConnectionTime = 700
FastConnectionTime = 350
MaxConnectionPerIP = 50


Agradeço a ajuda, se quiserem mais informações só falar que mando.



 



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

Posts recomendados

  • 0

Como de normal, as portas nunca são "abertas" e sim destrancadas, elas se abrem ao solicitar o acesso, quando rodo o StartLoginServer e o StartGameServer e testo as portas, as portas 7777, 2106 e 3306 ficam abertas, já a porta 9014 dá como inacessível. Quando abro o SocketTest com os starts do server rodando e tento forçar as portas, dá o erro de que já estão em uso. Creio que o problema seja com esta porta (9014), o server usa ela mas não abre, algo do tipo :/


Se eu fechar os Starts do server e forçar a porta 9014 com o sockettest, quando testo a porta ela dá como aberta

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


  • 0

Os termos "porta aberta" e "porta fechada" vem do contexto de segurança "open port" e "closed port", que siginifica que a porta está configurada para receber conexões ou não, respectivamente. O fato de a porta está aberta não quer dizer  que vai ser possível estabelecer uma conexão, pois pra isso é necessário um serviço escutando, recebendo e processando essas conexões. Mas isso é uma outra história...

Voltando ao seu problema. Pode ser que haja alguma aplicação utilizando a porta 9014, contudo essa porta é apenas utilizada para comunicação entre o game server e o auth server (ou login server). De fato nem precisaria estar exposta para internet, já que está utilizando o auth server e o game server no mesmo PC. Teoricamente o problema que causaria essa porta está em uso seria o game server  não conseguir se registrar no auth server.

executa o netstat no cmd para verificar se alguma aplicação está fazendo uso dela:

netstat -a

 

Link para o comentário
Compartilhar em outros sites

  • 0
4 minutos atrás, KhayrusS disse:

Os termos "porta aberta" e "porta fechada" vem do contexto de segurança "open port" e "closed port", que siginifica que a porta está configurada para receber conexões ou não, respectivamente. O fato de a porta está aberta não quer dizer  que vai ser possível estabelecer uma conexão, pois pra isso é necessário um serviço escutando, recebendo e processando essas conexões. Mas isso é uma outra história...

Voltando ao seu problema. Pode ser que haja alguma aplicação utilizando a porta 9014, contudo essa porta é apenas utilizada para comunicação entre o game server e o auth server (ou login server). De fato nem precisaria estar exposta para internet, já que está utilizando o auth server e o game server no mesmo PC. Teoricamente o problema que causaria essa porta está em uso seria o game server  não conseguir se registrar no auth server.

executa o netstat no cmd para verificar se alguma aplicação está fazendo uso dela:


netstat -a

 

Tendi. A 9014 não está em uso

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

  • 0
15 minutos atrás, SHAYL0NG disse:

Os arquivos que devo alterar são apenas o l2.ini, loginserver e o gameserver? 

Sim

Loginserver:

Citar

# This is transmitted to the clients connecting from an external network, so it has to be a public IP or resolvable hostname
ExternalHostname = seu no-ip aqui

# This is transmitted to the client from the same network, so it has to be a local IP or resolvable hostname
InternalHostname = 127.0.0.1

# Bind ip of the loginServer, use * to bind on all available IPs *******************
LoginserverHostname = * < deixe assim
LoginserverPort = 2106

# How many times you can provide an invalid account/pass before the IP gets banned
LoginTryBeforeBan = 20

# Time you won't be able to login back again after LoginTryBeforeBan tries to login. Provide a value in seconds. Default 10min. (600)  
LoginBlockAfterBan = 600
GMMinLevel = 100

# The address on which login will listen for GameServers, use * to bind on all available IPs  *************
LoginHostname = * <deixe assim

# The port on which login will listen for GameServers
LoginPort = 9014

Gameserver:

Citar

# Enter here (ip) address of your game server, or use the symbol *
GameserverHostname = * <deixe assim
GameserverPort = 7777

# Configure your external ip
ExternalHostname = seu no-ip aqui

# Configure your internal ip
InternalHostname = 127.0.0.1

L2.ini

Citar

ServerAddr=seu no-ip aqui

 

mace2.png

Link para o comentário
Compartilhar em outros sites

  • 0
4 horas atrás, NetinhOO disse:

Se pelo hamachi também não funcionar, o problema é seu roteador, tenha certeza disso.

Eu tinha um fuleiro da Multilaser, troquei para um Asus de 100 bolsonaros e funfou numa boa.

Uso um Dlink ligado a um switch que liga ao modem. Seria mesmo o roteador a atrapalhar? Se for ligo direto no modem a máquina para ver

Link para o comentário
Compartilhar em outros sites

  • 0

Sim, pode ser o roteador com problemas, o meu antigo fechava a porta sozinho depois de um tempo, era necesário eu abrir dnv, as vezes constava aberto lá, mas não pegava. Depois troquei o roteador não tive mais problemas.

Não custa vc tentar fazer o teste.

mace2.png

Link para o comentário
Compartilhar em outros sites

  • 0
12 horas atrás, kazamajr disse:

O meu por mais que eu abra e configure certo ele não abre as portas, não sei oq pode ser. Mas eu tenho outro plano de internet da Oi Velox que eu consigo abrir normalmente.

Tenho em casa, que tipo, é o que estou pensando em fazer também. O problema só vai ser deixar o PC ligado 24 hrs. Onde estou querendo deixar o servidor já é um ambiente preparado para isso kkkk. Mas já estou transferindo os arquivos para minha casa e tentar por lá se a tentativa da máquina conectada ao modem não der certo

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

Visitante
Este tópico está impedido de receber novos posts.
  • Registre-se

    Faça parte da maior e  mais antigas comunidades sobre Lineage2 da América Latina.





  • Patrocinadores

  • Quem Está Navegando

    • Nenhum usuário registrado visualizando esta página.
  • Posts

    • Teria como fazer do dusk shield e do zombie shield dessa maneira?     Teria como fazer do dusk shield e do zombie shield dessa maneira?     Teria como fazer do dusk shield e do zombie shield dessa maneira?     Teria como fazer do dusk shield e do zombie shield dessa maneira?     Teria como fazer do dusk shield e do zombie shield dessa maneira?     Teria como fazer do dusk shield e do zombie shield dessa maneira?    
    • muchas gracias muy lindos NPC 🙂
    • relaxa jovem gafanhoto, testa as quests. e posTa os erros indesejaveis.  
    • Se alguém pudesse me ensinar como codificar as missões, eu ficaria feliz em fazer isso sozinho ou pelo menos ajudar. Eu realmente quero jogar em um servidor onde todas as quests funcionem bem e melhor ainda se você puder fazer quests customizadas!
    • mas no interlude, nem todas as quests de class,  vai mostrar onde tem que ir, ate o reborn nao mostrava quando era interlude, só mostrou depois que eles colocaram client classic pra rodar, e ficou melhor ainda quando virou hellbound em diante, mas ha sim alguma chance de modificar isso direto no script para fazer igualmente, só basta te um pouco de paciencia e persistencia exato
    • 408_PathToElvenwizard dá Orion eu tive que mexer tbm, até modifiquei e consegui deixar ela igual do Classic, com a seta e a marcação no mapa. (não retail IL) Dá pra importar py de várias revs, o foda é que não da regular as quest py através do debug em tempo real, pelo menos eu não consegui rsrs
    • Hasta el momento todas las QUESTS son completables si te guias con un tutorial de youtube. El problema es que tienen bugs de locacion y de subquests que no avanzan o no te marcan correctamente a donde ir en el mapa, cosa que en Retail si se ve como corresponde.
    • estranho, mas pelo menos a galera nunca reclamo das quests quando tinha aberto 5x, geral fez class primeira e segunda job, poucos que compraram a class
    • en RUSaCis-3.5 data pack, las Quests estan en formato .java y son diferentes a como estan redactadas en jOrion y jFrozen 1.5 (ProyectX) package net.sf.l2j.gameserver.scripting.quest; import net.sf.l2j.commons.random.Rnd; import net.sf.l2j.gameserver.enums.Paperdoll; import net.sf.l2j.gameserver.enums.QuestStatus; import net.sf.l2j.gameserver.enums.actors.ClassId; import net.sf.l2j.gameserver.model.actor.Creature; import net.sf.l2j.gameserver.model.actor.Npc; import net.sf.l2j.gameserver.model.actor.Player; import net.sf.l2j.gameserver.network.serverpackets.SocialAction; import net.sf.l2j.gameserver.scripting.QuestState; public class Q224_TestOfSagittarius extends SecondClassQuest { private static final String QUEST_NAME = "Q224_TestOfSagittarius"; // Items private static final int BERNARD_INTRODUCTION = 3294; private static final int HAMIL_LETTER_1 = 3295; private static final int HAMIL_LETTER_2 = 3296; private static final int HAMIL_LETTER_3 = 3297; private static final int HUNTER_RUNE_1 = 3298; private static final int HUNTER_RUNE_2 = 3299; private static final int TALISMAN_OF_KADESH = 3300; private static final int TALISMAN_OF_SNAKE = 3301; private static final int MITHRIL_CLIP = 3302; private static final int STAKATO_CHITIN = 3303; private static final int REINFORCED_BOWSTRING = 3304; private static final int MANASHEN_HORN = 3305; private static final int BLOOD_OF_LIZARDMAN = 3306; private static final int CRESCENT_MOON_BOW = 3028; private static final int WOODEN_ARROW = 17; // Rewards private static final int MARK_OF_SAGITTARIUS = 3293; // NPCs private static final int BERNARD = 30702; private static final int HAMIL = 30626; private static final int SIR_ARON_TANFORD = 30653; private static final int VOKIAN = 30514; private static final int GAUEN = 30717; // Monsters private static final int ANT = 20079; private static final int ANT_CAPTAIN = 20080; private static final int ANT_OVERSEER = 20081; private static final int ANT_RECRUIT = 20082; private static final int ANT_PATROL = 20084; private static final int ANT_GUARD = 20086; private static final int NOBLE_ANT = 20089; private static final int NOBLE_ANT_LEADER = 20090; private static final int BREKA_ORC_SHAMAN = 20269; private static final int BREKA_ORC_OVERLORD = 20270; private static final int MARSH_STAKATO_WORKER = 20230; private static final int MARSH_STAKATO_SOLDIER = 20232; private static final int MARSH_STAKATO_DRONE = 20234; private static final int MARSH_SPIDER = 20233; private static final int ROAD_SCAVENGER = 20551; private static final int MANASHEN_GARGOYLE = 20563; private static final int LETO_LIZARDMAN = 20577; private static final int LETO_LIZARDMAN_ARCHER = 20578; private static final int LETO_LIZARDMAN_SOLDIER = 20579; private static final int LETO_LIZARDMAN_WARRIOR = 20580; private static final int LETO_LIZARDMAN_SHAMAN = 20581; private static final int LETO_LIZARDMAN_OVERLORD = 20582; private static final int SERPENT_DEMON_KADESH = 27090; public Q224_TestOfSagittarius() { super(224, "Test Of Sagittarius"); setItemsIds(BERNARD_INTRODUCTION, HAMIL_LETTER_1, HAMIL_LETTER_2, HAMIL_LETTER_3, HUNTER_RUNE_1, HUNTER_RUNE_2, TALISMAN_OF_KADESH, TALISMAN_OF_SNAKE, MITHRIL_CLIP, STAKATO_CHITIN, REINFORCED_BOWSTRING, MANASHEN_HORN, BLOOD_OF_LIZARDMAN, CRESCENT_MOON_BOW); addQuestStart(BERNARD); addTalkId(BERNARD, HAMIL, SIR_ARON_TANFORD, VOKIAN, GAUEN); addMyDying(ANT, ANT_CAPTAIN, ANT_OVERSEER, ANT_RECRUIT, ANT_PATROL, ANT_GUARD, NOBLE_ANT, NOBLE_ANT_LEADER, BREKA_ORC_SHAMAN, BREKA_ORC_OVERLORD, MARSH_STAKATO_WORKER, MARSH_STAKATO_SOLDIER, MARSH_STAKATO_DRONE, MARSH_SPIDER, ROAD_SCAVENGER, MANASHEN_GARGOYLE, LETO_LIZARDMAN, LETO_LIZARDMAN_ARCHER, LETO_LIZARDMAN_SOLDIER, LETO_LIZARDMAN_WARRIOR, LETO_LIZARDMAN_SHAMAN, LETO_LIZARDMAN_OVERLORD, SERPENT_DEMON_KADESH); } @Override public String onAdvEvent(String event, Npc npc, Player player) { String htmltext = event; QuestState st = player.getQuestList().getQuestState(QUEST_NAME); if (st == null) return htmltext; // BERNARD if (event.equalsIgnoreCase("30702-04.htm")) { st.setState(QuestStatus.STARTED); st.setCond(1); playSound(player, SOUND_ACCEPT); giveItems(player, BERNARD_INTRODUCTION, 1); if (giveDimensionalDiamonds39(player)) htmltext = "30702-04a.htm"; } // HAMIL else if (event.equalsIgnoreCase("30626-03.htm")) { st.setCond(2); playSound(player, SOUND_MIDDLE); takeItems(player, BERNARD_INTRODUCTION, 1); giveItems(player, HAMIL_LETTER_1, 1); } else if (event.equalsIgnoreCase("30626-07.htm")) { st.setCond(5); playSound(player, SOUND_MIDDLE); takeItems(player, HUNTER_RUNE_1, 10); giveItems(player, HAMIL_LETTER_2, 1); } // SIR_ARON_TANFORD else if (event.equalsIgnoreCase("30653-02.htm")) { st.setCond(3); playSound(player, SOUND_MIDDLE); takeItems(player, HAMIL_LETTER_1, 1); } // VOKIAN else if (event.equalsIgnoreCase("30514-02.htm")) { st.setCond(6); playSound(player, SOUND_MIDDLE); takeItems(player, HAMIL_LETTER_2, 1); } return htmltext; } @Override public String onTalk(Npc npc, Player player) { String htmltext = getNoQuestMsg(); QuestState st = player.getQuestList().getQuestState(QUEST_NAME); if (st == null) return htmltext; switch (st.getState()) { case CREATED: if (player.getClassId() != ClassId.ROGUE && player.getClassId() != ClassId.ELVEN_SCOUT && player.getClassId() != ClassId.ASSASSIN) htmltext = "30702-02.htm"; else if (player.getStatus().getLevel() < 39) htmltext = "30702-01.htm"; else htmltext = "30702-03.htm"; break; case STARTED: int cond = st.getCond(); switch (npc.getNpcId()) { case BERNARD: htmltext = "30702-05.htm"; break; case HAMIL: if (cond == 1) htmltext = "30626-01.htm"; else if (cond == 2 || cond == 3) htmltext = "30626-04.htm"; else if (cond == 4) htmltext = "30626-05.htm"; else if (cond > 4 && cond < 8) htmltext = "30626-08.htm"; else if (cond == 8) { htmltext = "30626-09.htm"; st.setCond(9); playSound(player, SOUND_MIDDLE); takeItems(player, HUNTER_RUNE_2, 10); giveItems(player, HAMIL_LETTER_3, 1); } else if (cond > 8 && cond < 12) htmltext = "30626-10.htm"; else if (cond == 12) { htmltext = "30626-11.htm"; st.setCond(13); playSound(player, SOUND_MIDDLE); } else if (cond == 13) htmltext = "30626-12.htm"; else if (cond == 14) { htmltext = "30626-13.htm"; takeItems(player, BLOOD_OF_LIZARDMAN, -1); takeItems(player, CRESCENT_MOON_BOW, 1); takeItems(player, TALISMAN_OF_KADESH, 1); giveItems(player, MARK_OF_SAGITTARIUS, 1); rewardExpAndSp(player, 54726, 20250); player.broadcastPacket(new SocialAction(player, 3)); playSound(player, SOUND_FINISH); st.exitQuest(false); } break; case SIR_ARON_TANFORD: if (cond == 2) htmltext = "30653-01.htm"; else if (cond > 2) htmltext = "30653-03.htm"; break; case VOKIAN: if (cond == 5) htmltext = "30514-01.htm"; else if (cond == 6) htmltext = "30514-03.htm"; else if (cond == 7) { htmltext = "30514-04.htm"; st.setCond(8); playSound(player, SOUND_MIDDLE); takeItems(player, TALISMAN_OF_SNAKE, 1); } else if (cond > 7) htmltext = "30514-05.htm"; break; case GAUEN: if (cond == 9) { htmltext = "30717-01.htm"; st.setCond(10); playSound(player, SOUND_MIDDLE); takeItems(player, HAMIL_LETTER_3, 1); } else if (cond == 10) htmltext = "30717-03.htm"; else if (cond == 11) { htmltext = "30717-02.htm"; st.setCond(12); playSound(player, SOUND_MIDDLE); takeItems(player, MANASHEN_HORN, 1); takeItems(player, MITHRIL_CLIP, 1); takeItems(player, REINFORCED_BOWSTRING, 1); takeItems(player, STAKATO_CHITIN, 1); giveItems(player, CRESCENT_MOON_BOW, 1); giveItems(player, WOODEN_ARROW, 10); } else if (cond > 11) htmltext = "30717-04.htm"; break; } break; case COMPLETED: htmltext = getAlreadyCompletedMsg(); break; } return htmltext; } @Override public void onMyDying(Npc npc, Creature killer) { final Player player = killer.getActingPlayer(); final QuestState st = checkPlayerState(player, npc, QuestStatus.STARTED); if (st == null) return; switch (npc.getNpcId()) { case ANT: case ANT_CAPTAIN: case ANT_OVERSEER: case ANT_RECRUIT: case ANT_PATROL: case ANT_GUARD: case NOBLE_ANT: case NOBLE_ANT_LEADER: if (st.getCond() == 3 && dropItems(player, HUNTER_RUNE_1, 1, 10, 500000)) st.setCond(4); break; case BREKA_ORC_SHAMAN: case BREKA_ORC_OVERLORD: if (st.getCond() == 6 && dropItems(player, HUNTER_RUNE_2, 1, 10, 500000)) { st.setCond(7); giveItems(player, TALISMAN_OF_SNAKE, 1); } break; case MARSH_STAKATO_WORKER: case MARSH_STAKATO_SOLDIER: case MARSH_STAKATO_DRONE: if (st.getCond() == 10 && dropItems(player, STAKATO_CHITIN, 1, 1, 100000) && player.getInventory().hasItems(MANASHEN_HORN, MITHRIL_CLIP, REINFORCED_BOWSTRING)) st.setCond(11); break; case MARSH_SPIDER: if (st.getCond() == 10 && dropItems(player, REINFORCED_BOWSTRING, 1, 1, 100000) && player.getInventory().hasItems(MANASHEN_HORN, MITHRIL_CLIP, STAKATO_CHITIN)) st.setCond(11); break; case ROAD_SCAVENGER: if (st.getCond() == 10 && dropItems(player, MITHRIL_CLIP, 1, 1, 100000) && player.getInventory().hasItems(MANASHEN_HORN, REINFORCED_BOWSTRING, STAKATO_CHITIN)) st.setCond(11); break; case MANASHEN_GARGOYLE: if (st.getCond() == 10 && dropItems(player, MANASHEN_HORN, 1, 1, 100000) && player.getInventory().hasItems(REINFORCED_BOWSTRING, MITHRIL_CLIP, STAKATO_CHITIN)) st.setCond(11); break; case LETO_LIZARDMAN: case LETO_LIZARDMAN_ARCHER: case LETO_LIZARDMAN_SOLDIER: case LETO_LIZARDMAN_WARRIOR: case LETO_LIZARDMAN_SHAMAN: case LETO_LIZARDMAN_OVERLORD: if (st.getCond() == 13) { if (((player.getInventory().getItemCount(BLOOD_OF_LIZARDMAN) - 120) * 5) > Rnd.get(100)) { playSound(player, SOUND_BEFORE_BATTLE); takeItems(player, BLOOD_OF_LIZARDMAN, -1); addSpawn(SERPENT_DEMON_KADESH, player, false, 300000, true); } else dropItemsAlways(player, BLOOD_OF_LIZARDMAN, 1, 0); } break; case SERPENT_DEMON_KADESH: if (st.getCond() == 13) { if (player.getInventory().getItemIdFrom(Paperdoll.RHAND) == CRESCENT_MOON_BOW) { st.setCond(14); playSound(player, SOUND_MIDDLE); giveItems(player, TALISMAN_OF_KADESH, 1); } else addSpawn(SERPENT_DEMON_KADESH, player, false, 300000, true); } break; } } }  
×
×
  • Criar Novo...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.