Ir para conteúdo
  • Cadastre-se

L2Waves


Posts recomendados


Em 21/12/2017 at 07:51, Alexandre Assunção disse:

ja tem o da acis

 

para nao fica enrolando so tenho certeza que vai ser antes do dia 01 :)

L2j Roboto

So as I've already said i would share the fake player engine that i started working on.

It is WIP so DO NOT use it on any production environment.

I only share it cuz someone might be interested in giving a hand.

Features

Features implemented:

Only attack logic for bots to bots (plan to make it configurable even ingame)

Task auto scaling logic in order to have less iterations in more tasks

Buff bots with auto rebuff

Soulshots/Spiritshots with auto refill

Arrows/Bones with auto refill

One AI per class (Only a few implemented for now)

Random attack picked with probability



Commands

//fakes - opens the fake player dashboard (will probably change to //roboto)

//spawnrandom - spawns a random bot with default AI

How to install

L2jRoboto has minimal dependencies

Find the patch.diff folder under the dist folder

Github repo: https://github.com/Elfocrash/L2jRoboto

poderia add no projeto?

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

Em 23/12/2017 at 14:12, admhoro disse:

Cade o link de download?

o projeto jé tem Flag Zone?

Link principal, sim já possui

 

Em 23/12/2017 at 16:50, bola999 disse:

este projeto suporta um server 200x , um semi pvp sem custom ... nao irei utilizar quest para fazer boss e outras coisas do retail... mais quest nobles mesmo e talves de subclass !

Sim, faça seus teste e qualquer coisa me comunique

 

Em 26/12/2017 at 14:19, bola999 disse:

qual o acesslevel ? pq coloco 100 e 127 o char nao loga , e qdo coloco 1 nao acontece nada...

acc 8

Link para o comentário
Compartilhar em outros sites

Bom Dia/tarde/noite pessoal, para quem estava esperando a atualização como foi pedido, venho aqui me desculpar pois não vai da tempo de disponibilizar antes do dia 01, alguns aqui sabem como é as atualizações que são "toneladas" de linha e muitas delas feito manualmente por min, já atualizei uma boa parte, falta ainda um pedaço razoável e termina de fazer as adaptações necessárias da nova base, e não vai adiantar muito eu disponibilizar o que já foi feito e depois ter que fazer os mesmo teste, então vou deixar para depois do novo ano já toda atualizada, peço desculpas ! 

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

Olá,
Passei a acompanhar o projeto de perto. Raapaaaz, to gostando do que vi. Realmente precisamos de ideias assim para o fórum! 

Parabéns pelo projeto, amigo. Sem duvidas seria algo que eu usaria!

  • Gostei 1
  • Obrigado 1

Você sabia que a L2JBrasil tem uma empresa de Hosting Oficial?
Conheça a L2JCenter.com

L2JBRASIL - 15 anos vendendo SS e flechas em Giran! (Trade / Adena)

Link para o comentário
Compartilhar em outros sites

Achei o download depois de uns 6 meses tentando.

estou tendo esse erro

Citar

Exception in thread "main" java.lang.ExceptionInInitializerError
        at net.sf.l2j.L2DatabaseFactory$SingletonHolder.<clinit>(L2DatabaseFactory.java:147)
        at net.sf.l2j.L2DatabaseFactory.getInstance(L2DatabaseFactory.java:18)
        at net.sf.l2j.loginserver.GameServerTable.loadRegisteredGameServers(GameServerTable.java:96)
        at net.sf.l2j.loginserver.GameServerTable.<init>(GameServerTable.java:43)
        at net.sf.l2j.loginserver.GameServerTable$SingletonHolder.<clinit>(GameServerTable.java:195)
        at net.sf.l2j.loginserver.GameServerTable.getInstance(GameServerTable.java:190)
        at net.sf.l2j.gsregistering.GameServerRegister.main(GameServerRegister.java:129)
Caused by: java.sql.SQLException: Could not retrieve transation read-only status server
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:989)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:975)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:920)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:951)
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:941)
        at com.mysql.jdbc.ConnectionImpl.isReadOnly(ConnectionImpl.java:3939)
        at com.mysql.jdbc.ConnectionImpl.isReadOnly(ConnectionImpl.java:3910)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2410)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2377)
        at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2361)
        at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:1085)
        at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.initializeAutomaticTestTable(C3P0PooledConnectionPoolManager.java:1028)
        at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.createPooledConnectionPool(C3P0PooledConnectionPoolManager.java:910)
        at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.getPool(C3P0PooledConnectionPoolManager.java:397)
        at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPoolManager.getPool(C3P0PooledConnectionPoolManager.java:414)
        at com.mchange.v2.c3p0.impl.AbstractPoolBackedDataSource.getConnection(AbstractPoolBackedDataSource.java:145)
        at net.sf.l2j.L2DatabaseFactory.<init>(L2DatabaseFactory.java:64)
        at net.sf.l2j.L2DatabaseFactory$SingletonHolder.<clinit>(L2DatabaseFactory.java:143)
        ... 6 more
Caused by: java.sql.SQLException: Unknown system variable 'tx_read_only'
        at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1078)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4190)
        at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4122)
        at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2570)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2731)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2812)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2761)
        at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1612)
        at com.mysql.jdbc.ConnectionImpl.isReadOnly(ConnectionImpl.java:3933)
        ... 18 more

 

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

10 horas atrás, vitorraposo77 disse:

O Grand Boss Zaken esta bugado? porque nao acho ele aonde ele fica de jeito nenhum, e outra coisa quando vou para o spawn dele chegando perto fico tomando paralize a cada 1 minuto, e restrinçao de level ou e bug msm?

tbm esta acontecendo cm migo, mudei o lvl dele rpa ver mas nao adiantou, si vc conseguir resolver da ideia :D

Link para o comentário
Compartilhar em outros sites

Em 01/01/2018 at 21:02, Nattan Felipe disse:

Olá,
Passei a acompanhar o projeto de perto. Raapaaaz, to gostando do que vi. Realmente precisamos de ideias assim para o fórum! 

Parabéns pelo projeto, amigo. Sem duvidas seria algo que eu usaria!

Obrigado, estou trazendo atualização sempre no possível :)

21 horas atrás, vitorraposo77 disse:

O Grand Boss Zaken esta bugado? porque nao acho ele aonde ele fica de jeito nenhum, e outra coisa quando vou para o spawn dele chegando perto fico tomando paralize a cada 1 minuto, e restrinçao de level ou e bug msm?

 

10 horas atrás, l2pokemon disse:

tbm esta acontecendo cm migo, mudei o lvl dele rpa ver mas nao adiantou, si vc conseguir resolver da ideia :D

 

57 minutos atrás, vitorraposo77 disse:

Consegui nada, coisa estranha isso deve ser alguma configuração sei la, restrinçao de level 

Zaken e Teza no momento ainda não estão funcional

Link para o comentário
Compartilhar em outros sites

Quote

quando deixo o ip externo dessa forma não consigo ligar o servidor. como foi dito em comentários anteriores como deixar.


#=============================================================
#                         Loginserver
#=============================================================

# This is transmitted to the clients, so it has to be an IP or resolvable hostname
Hostname = *

# Bind ip of the LoginServer, use * to bind on all available IPs
LoginserverHostname = *
LoginserverPort = 2106

# The Loginserver host and port.
LoginHostname = gtcentral.ddns.net
LoginPort = 9014

 

da isso:

*******************************************************************************
*  LoginServer                        Developer:                              *
*                                      L2jDev                                 *
*                                 INTERLUDE PROJECT                           *
*                                   (c) 2015-2016              version: (2.0) *
*******************************************************************************
---------------------------------------------------------------------=[ aCis ]
Loading loginserver configuration files.
MLog clients using java 1.4+ standard logging.
Initializing c3p0-0.9.5-pre5 [debug? false; trace: 5]
----------------------------------------------------------=[ LoginController ]
Loading LoginController...
Cached 10 KeyPairs for RSA communication.
Stored 20 keys for Blowfish communication.
Loaded 127 server names.
Loaded 1 registered gameserver(s).
Cached 10 RSA keys for gameserver communication.
-----------------------------------------------------------------=[ Ban List ]
banned_ips.properties is missing. Ban listing is skipped.
-------------------------------------------------=[ IP, Ports & Socket infos ]
FATAL: Failed to start the gameserver listener. Reason: Cannot assign requested
address: JVM_Bind
java.net.BindException: Cannot assign requested address: JVM_Bind
        at java.net.DualStackPlainSocketImpl.bind0(Native Method)
        at java.net.DualStackPlainSocketImpl.socketBind(Unknown Source)
        at java.net.AbstractPlainSocketImpl.bind(Unknown Source)
        at java.net.PlainSocketImpl.bind(Unknown Source)
        at java.net.ServerSocket.bind(Unknown Source)
        at java.net.ServerSocket.<init>(Unknown Source)
        at net.sf.l2j.loginserver.FloodProtectedListener.<init>(FloodProtectedLi
stener.java:27)
        at net.sf.l2j.loginserver.GameServerListener.<init>(GameServerListener.j
ava:16)
        at net.sf.l2j.loginserver.LoginServer.<init>(LoginServer.java:107)
        at net.sf.l2j.loginserver.LoginServer.main(LoginServer.java:37)

Server have terminated abnormaly.


Server terminated.

Press any key to continue . . .

 

Link para o comentário
Compartilhar em outros sites

4 minutos atrás, RacheL disse:


#=============================================================
#                         Loginserver
#=============================================================

# This is transmitted to the clients, so it has to be an IP or resolvable hostname
Hostname = *

# Bind ip of the LoginServer, use * to bind on all available IPs
LoginserverHostname = *
LoginserverPort = 2106

# The Loginserver host and port.
LoginHostname = gtcentral.ddns.net
LoginPort = 9014

 

da isso:

*******************************************************************************
*  LoginServer                        Developer:                              *
*                                      L2jDev                                 *
*                                 INTERLUDE PROJECT                           *
*                                   (c) 2015-2016              version: (2.0) *
*******************************************************************************
---------------------------------------------------------------------=[ aCis ]
Loading loginserver configuration files.
MLog clients using java 1.4+ standard logging.
Initializing c3p0-0.9.5-pre5 [debug? false; trace: 5]
----------------------------------------------------------=[ LoginController ]
Loading LoginController...
Cached 10 KeyPairs for RSA communication.
Stored 20 keys for Blowfish communication.
Loaded 127 server names.
Loaded 1 registered gameserver(s).
Cached 10 RSA keys for gameserver communication.
-----------------------------------------------------------------=[ Ban List ]
banned_ips.properties is missing. Ban listing is skipped.
-------------------------------------------------=[ IP, Ports & Socket infos ]
FATAL: Failed to start the gameserver listener. Reason: Cannot assign requested
address: JVM_Bind
java.net.BindException: Cannot assign requested address: JVM_Bind
        at java.net.DualStackPlainSocketImpl.bind0(Native Method)
        at java.net.DualStackPlainSocketImpl.socketBind(Unknown Source)
        at java.net.AbstractPlainSocketImpl.bind(Unknown Source)
        at java.net.PlainSocketImpl.bind(Unknown Source)
        at java.net.ServerSocket.bind(Unknown Source)
        at java.net.ServerSocket.<init>(Unknown Source)
        at net.sf.l2j.loginserver.FloodProtectedListener.<init>(FloodProtectedLi
stener.java:27)
        at net.sf.l2j.loginserver.GameServerListener.<init>(GameServerListener.j
ava:16)
        at net.sf.l2j.loginserver.LoginServer.<init>(LoginServer.java:107)
        at net.sf.l2j.loginserver.LoginServer.main(LoginServer.java:37)

Server have terminated abnormaly.


Server terminated.

Press any key to continue . . .

 

 

Tente assim:

Game:

# ================================================================
#                          Gameserver setting
# ================================================================

# This is transmitted to the clients, so it has to be an IP or resolvable hostname. If this ip is resolvable by Login just leave *
Hostname = *

# Bind ip of the gameserver, use * to bind on all available IPs.
GameserverHostname = *
GameserverPort = 7777

# The Loginserver host and port.
LoginHost = SEU_IP_AQUI
LoginPort = 9014

Login:

#=============================================================
#                         Loginserver
#=============================================================

# This is transmitted to the clients, so it has to be an IP or resolvable hostname
Hostname = localhost

# Bind ip of the LoginServer, use * to bind on all available IPs
LoginserverHostname = *
LoginserverPort = 2106

# The Loginserver host and port.
LoginHostname = *
LoginPort = 9014

 

Muda apenas no game : SEU_IP_AQUI

Link para o comentário
Compartilhar em outros sites

7 minutes ago, Alexandre Assunção said:

 

Tente assim:

Game:


# ================================================================
#                          Gameserver setting
# ================================================================

# This is transmitted to the clients, so it has to be an IP or resolvable hostname. If this ip is resolvable by Login just leave *
Hostname = *

# Bind ip of the gameserver, use * to bind on all available IPs.
GameserverHostname = *
GameserverPort = 7777

# The Loginserver host and port.
LoginHost = SEU_IP_AQUI
LoginPort = 9014

Login:


#=============================================================
#                         Loginserver
#=============================================================

# This is transmitted to the clients, so it has to be an IP or resolvable hostname
Hostname = localhost

# Bind ip of the LoginServer, use * to bind on all available IPs
LoginserverHostname = *
LoginserverPort = 2106

# The Loginserver host and port.
LoginHostname = *
LoginPort = 9014

 

Muda apenas no game : SEU_IP_AQUI

pegou nao.

 

fica tentando conectar:

 

Connecting to login on meuip:9014 

No Connecting found with loginserver, next try in 10 seconds

 

to usando o ip externo. tem algo haver?

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

1 minute ago, Alexandre Assunção said:

Já tentou ligar em 127.0.0.1 ? 

sim pega normal. agora se eu quiser deixar externo não pega. se eu criar uma regra redirecionando o externo pro local, quem tiver fora consegue logar?

Link para o comentário
Compartilhar em outros sites

2 minutos atrás, RacheL disse:

sim pega normal. agora se eu quiser deixar externo não pega. se eu criar uma regra redirecionando o externo pro local, quem tiver fora consegue logar?

Mude apenas onde se encontra 127.0.0.1 para seu IP, no seu caso tente usar outro meio como o NoIP

Link para o comentário
Compartilhar em outros sites

1 hora atrás, RacheL disse:

sim pega normal. agora se eu quiser deixar externo não pega. se eu criar uma regra redirecionando o externo pro local, quem tiver fora consegue logar?

Cara funciona sim.eu uso no meu pc o ip externo. mas no game uso ip interno.

mas seria muito melhor você usa um no-ip ou dns. para seu ip fica dinâmico . porque ip externo muda toda vez que você desligar ou reiniciar o modem.

Mande o ip externo na system para seus amigos.

Caso for no-ip , mande o no-ip. e para seu acesso o interno.

Link para o comentário
Compartilhar em outros sites

7 minutes ago, admhoro said:

Cara funciona sim.eu uso no meu pc o ip externo. mas no game uso ip interno.

mas seria muito melhor você usa um no-ip ou dns. para seu ip fica dinâmico . porque ip externo muda toda vez que você desligar ou reiniciar o modem.

Mande o ip externo na system para seus amigos.

Caso for no-ip , mande o no-ip. e para seu acesso o interno.

massa... vou tentar de novo, teve um momento que chegou na parte de selecionar o serve e não passa. ficava travado. vou analisar novamente. posta como tu conf no teu!

Link para o comentário
Compartilhar em outros sites

# ================================================================
#                          Gameserver setting
# ================================================================

# This is transmitted to the clients, so it has to be an IP or resolvable hostname. If this ip is resolvable by Login just leave *
Hostname = *

# Bind ip of the gameserver, use * to bind on all available IPs.
GameserverHostname = *
GameserverPort = 7777

# The Loginserver host and port.
LoginHost = IP EXTERNO
LoginPort = 9014

 

#=============================================================
#                         Loginserver
#=============================================================

# This is transmitted to the clients, so it has to be an IP or resolvable hostname
Hostname = localhost OU IP EXTERNO

# Bind ip of the LoginServer, use * to bind on all available IPs
LoginserverHostname = *
LoginserverPort = 2106

# The Loginserver host and port.
LoginHostname = *
LoginPort = 9014

 

OBS: VOCÊ TERÁ QUE REDIRECIONAR AS PORTAS CORRETAMENTE PARA SEU IP. 7777-2106-9014- ACESSO MYSQL 3306

Link para o comentário
Compartilhar em outros sites

ULTIMAMENTE QUASE TODAS AS REVISÕES QUE EXISTES UTILIZAM ESSE NOVO MÉTODO DE CONFIG.

MAS A MAIORIA DAS REVISÕES NÃO FUNCIONAM COM ACESSO DNS PARA MESMA MAQUINA PORQUE É QUASE = AO L2OFF. SEUS AMIGOS VÃO LOGAR NO SERVER MAS VOCÊ NÃO.

Link para o comentário
Compartilhar em outros sites

Bom dia/tarde/noite.

Bom venho disponibilizar a revisão com a base atualizada mas que se encontra em BETA e peço a ajuda de vocês para fazer os teste necessários principalmente em todos sistemas e mods que foram adicionado anteriormente, algumas coisas ainda estão sendo corrigidas e adaptadas e conto com a ajuda de todos !

sync 373

Downlaod: http://www.mediafire.com/file/bx3djcn6cadbr81/Waves_B.rar

Editado por Alexandre Assunção
  • Gostei 2
  • Amei 1
Link para o comentário
Compartilhar em outros sites

Em 04/01/2018 at 16:01, Alexandre Assunção disse:

Bom dia/tarde/noite.

Bom venho disponibilizar a revisão com a base atualizada mas que se encontra em BETA e peço a ajuda de vocês para fazer os teste necessários principalmente em todos sistemas e mods que foram adicionado anteriormente, algumas coisas ainda estão sendo corrigidas e adaptadas e conto com a ajuda de todos !


sync 373

Downlaod: http://www.mediafire.com/file/bx3djcn6cadbr81/Waves_B.rar

 @Alexandre Assunção Poderia dizer para nos oque tem de novo na atualização por favor!!

Obrigado !!

Link para o comentário
Compartilhar em outros sites

  • Registre-se

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






  • Patrocinadores

  • Quem Está Navegando

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

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

Important Information

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