Ir para conteúdo
  • Cadastre-se

[Tutorial]Proteção gGuard system + core + php


adventeaml2

Posts recomendados

Já consegui, mas valeu pela resposta.

Porém desse modo ainda continua checando no GS.

Tentei rodar o GS com a parte na hospedagem com php 5.5, porém a proteção não carrega.

A parte do client funcionou normal com php 5.5, mas o server somente com php 5.4.

Alguém tem idéia do que possa ser?

Tipo cara, o gs tu mudou o endereço do site pro caminho certo na hospedagem e editou o arquivo .php com as informações da database que contém as licenças ?

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

 WhatsApp: 22 98156-2591 

L2JDREAM PROJECT

Link para o comentário
Compartilhar em outros sites


Tipo cara, o gs tu mudou o endereço do site pro caminho certo na hospedagem e editou o arquivo .php com as informações da database que contém as licenças ?

Quanto ao endereço ta ok, pois o client conecta com a hospedagem usando o php 5.5, já o GS não, somente com php 5.4

QdeQ9Kp.png

Link para o comentário
Compartilhar em outros sites

Uma dica pra galera quem manja de desenvolvimento de dll. Pode se fazer uma dll e implementar/hooka no l2.exe, depois na dll em delphi "gguard" você manda ela checar o sha1 do l2.exe se for igual ao do l2.exe original com todas dll hookada ele passa se for diferente bloquea usa a gguard simplismente para verificar e abrir a permissão no servidor.

Link para o comentário
Compartilhar em outros sites

  • 2 months later...

Boa noite amigos, alguém conseguiu fazer essa proteção funcionar na Frozen 1118? *-*

"Os problemas significativos que enfrentamos não podem ser resolvidos no mesmo nível de pensamento em que estávamos quando os criamos."


Albert Einstein

Link para o comentário
Compartilhar em outros sites

  • 1 month later...
  • 2 weeks later...

Boa noite! Primeiramente, gostaria de agradecer por disponibilizar esse sistema de proteção de forma gratuita, pois, o compartilhamento está se tornando cada vez mais raro aqui no forum devido a ingratidão de alguns e exigências de outros. Fico feliz em poder desfrutar do mesmo e creio que muitos possuem o mesmo sentimento.

 

Eu consegui aplicar 99% dos passos com sucesso, o 1% de falha foi com a tentativa de compilar o arquivo "MakeClient.java".

Eu o arrastei da pasta até o Eclipse, e o mesmo criou o "(default package)" automaticamente, mas, na hora de compilar aparece o seguinte erro no Console:

"Erro: Não foi possível localizar nem carregar a classe principal MakeClient"

 

Eu desejo muito conseguir finalizar, caso eu consiga resolver postarei a solução, e se alguém puder me ajudar segue a imagem com o erro abaixo:

VFVv9nc.png

Link para o comentário
Compartilhar em outros sites

 

Bom a proteção é para interlude mas se você quiser para outra rev é só você injetar a gGuard.dll em l2.exe de outras cronicas e compila o gguard dentro da outra rev, você vai entender isso quando ver o vídeo.

 

Download dos arquivos:

 

http://www.4shared.c...tq6/GGuard.html

 

 

 

Crie esse caminho e adicione o arquivo esqueci de colocar no download

config/Server/Protected/GuardSystem.ini

 

 

 

#============================================================#
# L2jDesire Protection #
#============================================================#
# Этот конфиг работает только в приват Версиях -
#-------------------------------------------------------------
# Guard Protection System ?
# VGamesHost nProtect Protection
Protect_Enabled = True

# Licence Key Atenttion = Nao mude a Tabela UserName = caso contrario o Server nao ira ligar.
# Registred user name
ClientName=axcel

# Tempo Para o Player ser Desconectado em uso outra system.
# Tempo para system ficar aberta sem o player logar ( Ex Criar Characters )
# Defina os valores 10 = 1 Segundo .
Reply_Interval = 60

# Action ao Player tentar usar um Software indesejado.
# kick - Player Kickado
# ban - Player Banido
OnHackAttempt = kick
# Loggirovat login attempt without the nProtect or with a key that does not comply server
Log_invalid_key = True

# Limitations
# Dualboxing from 1PC (-1 - unlimited)
# Bloqueio de Dual Box sem bloquear IP,Bloqueando sessoes em PC.
# Defina Valores ( SessionsFromSamePc = 2 . Ao tentar entrar com o 3° char e kickado)
Windows_Count = 3


AllowTwinkOnOlympiad = True

 

 

 

Se alguém tiver algum erro no console depois de logado use esse nprotect.java que fica em

com.l2jfrozen.crypt

 

 

 

/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
* 02111-1307, USA.
*
* http://www.gnu.org/copyleft/gpl.html
*/
package com.l2jfrozen.crypt;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.concurrent.ScheduledFuture;
import java.util.logging.Logger;

import com.l2jfrozen.Config;
import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
import com.l2jfrozen.gameserver.network.L2GameClient;
import com.l2jfrozen.gameserver.network.serverpackets.GameGuardQuery;

/**
* The main "engine" of protection ...
*
* @author Nick
*/
public class nProtect
{
private static Logger _log = Logger.getLogger("nProtect");

public static enum RestrictionType
{
RESTRICT_ENTER,RESTRICT_EVENT,RESTRICT_OLYMPIAD,RESTRICT_SIEGE
}
public class nProtectAccessor
{
public nProtectAccessor() {}
public void setCheckGameGuardQuery(Method m)
{
nProtect.this._checkGameGuardQuery = m;
}

public void setStartTask(Method m)
{
nProtect.this._startTask = m;
}

public void setCheckRestriction(Method m)
{
nProtect.this._checkRestriction = m;
}

public void setSendRequest(Method m)
{
nProtect.this._sendRequest = m;
}

public void setCloseSession(Method m)
{
nProtect.this._closeSession = m;
}

public void setSendGGQuery(Method m)
{
nProtect.this._sendGGQuery = m;
}

}
protected Method _checkGameGuardQuery = null;
protected Method _startTask = null;
protected Method _checkRestriction = null;
protected Method _sendRequest = null;
protected Method _closeSession = null;
protected Method _sendGGQuery = null;
private static nProtect _instance = null;

private static boolean enabled = false;

public static nProtect getInstance()
{
if(_instance == null)
_instance = new nProtect();
return _instance;
}

private nProtect()
{
Class<?> clazz=null;
try
{
clazz = Class.forName("com.l2jfrozen.protection.main");

if(clazz!=null)
{
Method m = clazz.getMethod("init", nProtectAccessor.class);
if(m!=null){
m.invoke(null, new nProtectAccessor());
enabled = true;
}
}
}
catch(ClassNotFoundException e)
{
if(Config.DEBUG)
_log.warning("nProtect System will be not loaded due to ClassNotFoundException of 'com.l2jfrozen.protection.main' class" );
}
catch(SecurityException e)
{
e.printStackTrace();
}
catch(NoSuchMethodException e)
{
e.printStackTrace();
}
catch(IllegalArgumentException e)
{
e.printStackTrace();
}
catch(IllegalAccessException e)
{
e.printStackTrace();
}
catch(InvocationTargetException e)
{
e.printStackTrace();
}


}

public void sendGameGuardQuery(GameGuardQuery pkt)
{
try
{
if(_sendGGQuery!=null)
_sendGGQuery.invoke(pkt);
}
catch(Exception e)
{
// e.printStackTrace();
}
}
public boolean checkGameGuardRepy(L2GameClient cl, int [] reply)
{
try
{
if(_checkGameGuardQuery!=null)
return (Boolean)_checkGameGuardQuery.invoke(null, cl,reply);
}
catch(Exception e)
{
e.printStackTrace();
}
return true;
}

public ScheduledFuture<?> startTask(L2GameClient client)
{
try
{
if(_startTask != null)
return (ScheduledFuture<?>)_startTask.invoke(null, client);
}
catch(Exception e)
{
e.printStackTrace();
}
return null;
}

public void sendRequest(L2GameClient cl)
{
if(_sendRequest!=null)
try
{
_sendRequest.invoke(null, cl);
}
catch(Exception e)
{
e.printStackTrace();
}
}

public void closeSession(L2GameClient cl)
{
if(_closeSession!=null)
try
{
_closeSession.invoke(null, cl);
}
catch(Exception e)
{
if(Config.ENABLE_ALL_EXCEPTIONS)
e.printStackTrace();
}
}

public boolean checkRestriction(L2PcInstance player, RestrictionType type, Object... params)
{
try
{
if(_checkRestriction!=null)
return (Boolean)_checkRestriction.invoke(null,player,type,params);
}
catch(Exception e)
{
e.printStackTrace();
}
return true;
}

/**
* @return the enabled
*/
public static boolean isEnabled()
{
return enabled;
}


}

 

Olá amigo, gostaria de saber se você sabe como eu posso editar a imagem que aparece logo quando abre a system.. Uma imagem de ativação do GameGuard.

Link para o comentário
Compartilhar em outros sites

A questão do lag é por causa da dll do kaka, porém a proteção funciona muito bem sem ela eu coloquei na época por quê pensei que seria de uma ajuda extra ... eu tirei a proteção daqui está o link dela sem está compilada precisa ser compilada em delphi e em java

 

http://www.4shared.com/file/0uasvAMA/GGuard.html

 

 

Olá amigo, gostaria de saber se você sabe como eu posso editar a imagem que aparece logo quando abre a system.. Uma imagem de ativação do GameGuard.

 

Tem a source da parte do client nesse link que o adventeaml2 postou, porém tem que compilar em delphi.

QdeQ9Kp.png

Link para o comentário
Compartilhar em outros sites

 

 

16anqfd.jpg

 

2j2joty.jpg

 

r26fxd.jpg

 

 

 

Fiz dessa maneira deu certo, porem não consegui rodar em casa como "adventeaml2" fez. Coloquei em um dedicado e funcionou.

Lembrando que a dll que ele colocou junto, feita pelo "kaka" esta dando umas travadas no cliente, pelo menos comigo que uso win7 ultimate 64 e já vi + pessoas reclamando dela tambem.

Brother também estou com este problema de travamento, você conseguiu solucionar este problema?

Link para o comentário
Compartilhar em outros sites

@celular O dono do tópico poderia fazer o favor de postar as dll's sem as do -kaka- embutidas, então não traria lag, mas ele se encontra ausente do fórum!

Ele deveria postar para ajudar os membros que não tem experiência em Delphi , estou com este problema de travamento e alguns membros do fórum neste tópico só mandam você baixar programas para com um passe de mágica tentar solucionar o problema.

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

Ele deveria postar para ajudar os membros que não tem experiência em Delphi , estou com este problema de travamento e alguns membros do fórum neste tópico só mandam você baixar programas para com um passe de mágica tentar solucionar o problema.

Sim, porém ele não anda logando muito, e creio que o tópico já seja meio antigo. Removendo o que causa o lag, você perderá boa parte da proteção também.

Link para o comentário
Compartilhar em outros sites

Ele deveria postar para ajudar os membros que não tem experiência em Delphi , estou com este problema de travamento e alguns membros do fórum neste tópico só mandam você baixar programas para com um passe de mágica tentar solucionar o problema.

Ninguém tem culpa se tu não tem capacidade de ler, pois tem até print de como remover as dll's do kaka nesse tópico, já em relação a splash você terá que compilar em delphi ou usar a que está.

QdeQ9Kp.png

Link para o comentário
Compartilhar em outros sites

Amigo, não é querendo ser rude nem nada mas...

 

Se programação fosse fácil assim * falou aqui daí vai lá e dá dois cliques e ~puff~, tudo pronto num passe de mágica* os programadores não teriam que perder anos de sua vida estudando para isso...

Se você tiver interesse a se dedicar a perder alguns dias para estudar, no google mesmo tu procura como instalar componentes no delphi e como copilar uma dll em delphi. Já vai ter noções básicas de como proceder para copilar essas sources.

 

Dica de amigo: Prefira os tutoriais passo a passo em texto e não seja preguiçoso para ver em vídeos, acredite quando eu digo que tutorial em vídeo para ter noção básica de como proceder inicialmente, NÃO PRESTA.


Ele deveria postar para ajudar os membros que não tem experiência em Delphi , estou com este problema de travamento e alguns membros do fórum neste tópico só mandam você baixar programas para com um passe de mágica tentar solucionar o problema.

 

Editado por Wallace Carvalho

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

 WhatsApp: 22 98156-2591 

L2JDREAM PROJECT

Link para o comentário
Compartilhar em outros sites

Esse tópico é bem antigo faz tempo que postei, eu estava com um projeto pessoal para melhorar a proteção e recompilar ela porém estou sem tempo faculdade trabalho.

 

E como o @wallace disse não é dois cliques ... programar requer tempo e é muito simples compilar essa parte em delphi basta passar 1h no google, assim consegue mudar a imagem.

 

Sobre a dll do travamento quando eu testei na época mesmo sem ela ficava tranquila a proteção não passava tower e entre outros, hoje em dia não sei como as coisas estão, pois estou a um bom tempo longe da área.

Link para o comentário
Compartilhar em outros sites

Esse tópico é bem antigo faz tempo que postei, eu estava com um projeto pessoal para melhorar a proteção e recompilar ela porém estou sem tempo faculdade trabalho.

 

E como o @wallace disse não é dois cliques ... programar requer tempo e é muito simples compilar essa parte em delphi basta passar 1h no google, assim consegue mudar a imagem.

 

Sobre a dll do travamento quando eu testei na época mesmo sem ela ficava tranquila a proteção não passava tower e entre outros, hoje em dia não sei como as coisas estão, pois estou a um bom tempo longe da área.

Valeu, vou tentar solucionar... Se eu conseguir eu vou postar um tutorial para os novatos que não sabem como alterar a imagem do gGuard. Vejo que tem muitos tópicos na área de dúvidas a respeito de como alterar essa imagem e até agora nenhum programador tentou ajudar estes membros.

 

Sou programador PHP vou me aprofundar no Delphi.

 

Eu só queria saber uma coisa básica para fazer a compilação em Delphi. Você poderia me dizer qual a DLL está essa imagem?

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

Valeu, vou tentar solucionar... Se eu conseguir eu vou postar um tutorial para os novatos que não sabem como alterar a imagem do gGuard. Vejo que tem muitos tópicos na área de dúvidas a respeito de como alterar essa imagem e até agora nenhum programador tentou ajudar estes membros.

 

Sou programador PHP vou me aprofundar no Delphi.

 

Eu só queria saber uma coisa básica para fazer a compilação em Delphi. Você poderia me dizer qual a DLL está essa imagem?

 

é a dll principal a gguard. na hora que compila o delphi gera ela

Link para o comentário
Compartilhar em outros sites

Valeu, vou tentar solucionar... Se eu conseguir eu vou postar um tutorial para os novatos que não sabem como alterar a imagem do gGuard. Vejo que tem muitos tópicos na área de dúvidas a respeito de como alterar essa imagem e até agora nenhum programador tentou ajudar estes membros.

 

Sou programador PHP vou me aprofundar no Delphi.

 

Eu só queria saber uma coisa básica para fazer a compilação em Delphi. Você poderia me dizer qual a DLL está essa imagem?

@marcos o negócio em si não é não querer ajudar, é que hoje em dia tudo virou comércio..

Se eu alterar essa imagem para todos que pedirem, além de ficar atolado de serviço pra fazer, alguns ainda vão vender os arquivos aqui compartilhados do mesmo jeito que baixaram sem nem alterar nada.

 

Um dos motivos pelo qual eu parei de compartilhar muito conteúdo em l2j, especialmente os novos softwares que eu criei e que iria postar aqui no fórum é porque pegaram softwares meus (postados de graça) e venderam, incluindo o launcher que postei gratuitamente na comunidade...

//edit

 

Eu fiz uma proteção mais avançada, essa gguard do tópico só presta como base mesmo pois é muito ultrapassada, com a dll do -kaka- faz com que o jogo fique travando o que atrapalha e muito a jogabilidade....

Editado por Wallace Carvalho

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

 WhatsApp: 22 98156-2591 

L2JDREAM PROJECT

Link para o comentário
Compartilhar em outros sites

 

é a dll principal a gguard. na hora que compila o delphi gera ela

 

Problema da imagem resolvido :) agora só falta as travadas.

@marcos o negócio em si não é não querer ajudar, é que hoje em dia tudo virou comércio..

Se eu alterar essa imagem para todos que pedirem, além de ficar atolado de serviço pra fazer, alguns ainda vão vender os arquivos aqui compartilhados do mesmo jeito que baixaram sem nem alterar nada.

 

Um dos motivos pelo qual eu parei de compartilhar muito conteúdo em l2j, especialmente os novos softwares que eu criei e que iria postar aqui no fórum é porque pegaram softwares meus (postados de graça) e venderam, incluindo o launcher que postei gratuitamente na comunidade...

//edit

 

Eu fiz uma proteção mais avançada, essa gguard do tópico só presta como base mesmo pois é muito ultrapassada, com a dll do -kaka- faz com que o jogo fique travando o que atrapalha e muito a jogabilidade....

 

 

Estou pensando em retirar esse gGuard do meu projeto pois não estou conseguindo retirar esse problema de lag e isso vai prejudicar toda jogabilidade de verdade.

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

 

Problema da imagem resolvido :) agora só falta as travadas.

 

 

Estou pensando em retirar esse gGuard do meu projeto pois não estou conseguindo retirar esse problema de lag e isso vai prejudicar toda jogabilidade de verdade.

o gguard em si não presta mais para usar em servidor, especialmente nos novos sistemas operacionais, pois a ultima atualização foi em 2006/2007, pensa só comigo um minutinho....

 

Quantos hackers, bots e sistemas operacionais foram criados desde então?

Quantas novas versões do Delphi foram criadas desde então ?

 

Só presta o GGuard para alguém que queira usar como base e se aventurar para criar uma nova proteção... (igual eu fiz)

Editado por Wallace Carvalho

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

 WhatsApp: 22 98156-2591 

L2JDREAM PROJECT

Link para o comentário
Compartilhar em outros sites

o gguard em si não presta mais para usar em servidor, especialmente nos novos sistemas operacionais, pois a ultima atualização foi em 2006/2007, pensa só comigo um minutinho....

 

Quantos hackers, bots e sistemas operacionais foram criados desde então?

Quantas novas versões do Delphi foram criadas desde então ?

 

Só presta o GGuard para alguém que queira usar como base e se aventurar para criar uma nova proteção... (igual eu fiz)

 

 

COmo eu falei faz tempo que postei não sei como estão as coisas hoje em dia mas ela te ajuda como base para fazer uma verificação de arquivos do cliente com o servidor assim você pode incluir suas dll's propias e verificar com ela.

Link para o comentário
Compartilhar em outros sites

Acredito que consegui adicionar o mod corretamente mas qunado tento logar aprece essa mensagem no gameserver e levo kick.

 

Player with account name mayke kicked to use L2Net

 

Alguém sabe o que pode ser ?

 

Você tem que desativar o L2Net. Vai em config/functions:

 

GameGuardL2NetCheck = "True" coloca "False"

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.