Ir para conteúdo
  • Cadastre-se

(Resolvido) Vote System 3.0 By JpsMaster16


hugo felipe

Posts recomendados

Bom dia galera.

 

Finalmente terminei o Sistema de Votos 3.0.

 

Confesso que a demora nem foi tanto pela complexidade do Sistema, e sim por motivo de trabalho, faculdade e outras coisas.

 

 

Bem, tinha gente que dizia que o Sistema não funcionava, tinha também os que diziam que funcionava.

 

Aos que não conseguiram fazer o Sistema Funcionar, pesso desculpas por não ter tido tempo suficiente para atende-los em suas dúvidas. E espero que com o conhecimento que obtive nesse intervalo, eu possa ter diminuido as incompatibilidades e etc.

 

Aos que conseguiram utilizar, espero que estejam gostando do sistema, e torço para que tenham deixado os créditos.

 

 

Mas vamos aos detalhes de que conteúdo estarei disponibilizando à vocês. E para isso se faz necessário eu citar alguns pedidos que foram solicitados nos tópicos das versões anteriores.

 

01- Nas versões anteriores nosso sistema tinha carência de uma Interface para o usuário pode selecionar o char que iria receber a recompensa.

 

Agora o Sistema ja conta com interface. O usuário poderá logar e terá a sua disposição os Links de voto e os seus respectivos chars.

 

 

02- Ao leitor mais atendo, eu informei que a interface mostrará os links de votos. Coisa que não existia nas versões anteriores do sistema. Onde o mesmo so poderia ser configurado para um Link.

 

Agora ja é possivel você inserir quantos links precisar. Onde ao exemplo do Sistema do Mend3, os links são liberados para serem clicados em sequência.

 

Explicando melhor, o segundo link, somente é liberado quando você clicar no primeiro link, e a um intervalo para isso.

 

Muitos pensam que o segundo link so é liberado depois do player votar no primeiro.

 

Mas não funciona desse modo. O player poderá muito bem clicar no primeiro link, e fechar a janela que o segundo link será liberado, e assim sucessivamente com um pequeno intervalo de tempo.

 

Mas sobre isso, eu volto a falar no item 05.

 

 

03- Antes o item somente era entregue se o player ja tivesse com um igual em seu inventário. E isso concerteza éra um incômodo.

 

Agora, o player tendo ou não tendo o item, ele irá receber a recompensa.

Se ele ja tiver o item, a quantidade irá aumentar. Se não tiver, o mesmo será criado. Lembro que o item será enviado para a Warehouse.

 

 

04- Para o player votar corretamente, ele deverá seguir o mini tutorial que será mostrado na tela onde o player estiver logado.

 

Ele deverá logar;

Ir acessando link por link;

Quando ele terminar de clicar em todos os links, ele deverá atualizar a pagina;

Quando ele atualizar, os links de votos irão ser ocultados, e o sistema irá disponibilizar o botão "Verificar e Receber";

 

 

05 - Eis um script que terá gente que poderá interpretar como uma alto promoção de meu TOP 200, e outros que irão interpretar como mais um script para proteger os ADMINS de "Falsos Votos".

 

Este script contém um comando que é muito simples, e MUITO ÚTIL, porém creio que os que sabem dele, estão utilizando, e estão com medo que outros saibam. Porque é uma técnica muito boa para verificar se o player realmente votou.

 

O script que foi feito em meu Sistema tem como função de Rastrear o conteúdo de uma determinada página, atrás de uma determinada sequencia de IP.

 

Porém, são poucos os servidores que disponibilizam a pagina de detalhes do servidor que contenha a atualização de IPs em TEMPO REAL.

 

Então, logo, quando o player clicasse em "Verificar e Receber", o sistema não iria encontrar o IP do player na página do respectivo TOP.

Assim, iria invalidar o voto to player, memo ele tendo votado corretamente.

 

É porisso que eu configurei o script para funcionar em associação com meu TOP 200. Nele será mostrado o registro de IPs em TEMPO REAL. Podendo assim, o voto ser verificado com sucesso.

 

 

06- O sistema so permite 1 voto por IP e Login a cada dia.

 

 

Creio que informei os pontos a serem destacados.

 

01 - Agora vou informar a falha que o sistema tem.

 

Como eu disse anteriormente. O script vai localizar pelo IP do players em meu TOP 200. Se encontrar, ele vai validar o voto. Senão, irá mandar votar tudo novamente.

 

A falha é que se o usuário somente clicar e não votar em nenhum dos links, mas chegando no do TOP 200, ele clicar e votar corretamente.

 

O sistema irá entender como que ele votou corretamente, pois como eu disse, ele faz a verificação no meu TOP 200.

 

Mas mesmo sendo uma falha, ele ao mesmo tempo é mais uma proteção para os ADMINS, pois se torna mais um meio de verificar se o player votou.

 

Visto que se não tivesse ele, bastava o usuário clicar em todos os links, e não votar em nenhum, que iria ganhar o item de qualquer forma.

 

 

 

 

Uma pequena observação a ser feita, para evitar possiveis dúvidas. Na seleção de personagens para receber o item, so é mostrado os que estiverem OFFLINE.

 

 

Vou deixar algumas Print Screens para vocês:

 

 

 

PAGINA INICIAL

1111111.JPG

 

LOGADO

sistema%20de%20votoo%20v3.JPG

 

DEPOIS DE VOTAR A ATUALIZAR A PÁGINA

22222.JPG

 

EXEMPLO DE QUANDO NÃO FOI VOTADO

sistema%20de%20votooo%20v3.JPG

 

EXMPLO DE QUANDO FOI VOTADO

sistema%20de%20votoooo%20v3.JPG

 

DEPOIS DE REALIZAR TODAS AS OPERAÇÕES

sistema%20de%20votooooo%20v3.JPG

 

 

 

 

 

 

 

 

Créditos do desenvolvimento a mim: Jean Paulo Sassi de Miranda(JPSMASTER16)

 

Agradecimento: A todos que me ajudaram a eu conseguir esse conhecimento, principalmente ao meu Pai, Mãe e Irmão.

 

DOWNLOADS

Versões com o Adsense:

 

Essa versão vai com um banner que quando receber algum clique, o google estara creditando em minha conta alguns centavos. Assim você estará me ajudando.

 

LINK DE DOWNLOAD (TESTADO PARA O GRACIA E FREYA: http://dl.dropbox.com/u/10994685/Sistema%20de%20Voto%20by%20JPSMASTER16%20Gracia%20e%20Freya%20adsense%20v3.0.rar

 

LINK DE DOWNLOAD (TESTADO PARA O INTERLUD: http://dl.dropbox.com/u/10994685/Sistema%20de%20Voto%20by%20JPSMASTER16%20Interludv%20adsense%203.0.rar

 

 

 

 

DOWNLOAD

Versões sem o Adsense:

 

Essa versão vai sem o banner, não estará me ajudando. Mas não tem problema.

 

 

LINK DE DOWNLOAD (TESTADO PARA O GRACIA E FREYA: http://dl.dropbox.com/u/10994685/Sistema%20de%20Voto%20by%20JPSMASTER16%20Gracia%20e%20Freya%20v3.0.rar

 

LINK DE DOWNLOAD (TESTADO PARA O INTERLUD: http://dl.dropbox.com/u/10994685/Sistema%20de%20Voto%20by%20JPSMASTER16%20Interludv3.0.rar

 

 

*Podem ocorrer incompatibilidade com determinadas Revs. Mas é so me mandar um link com seu banco de dados(ja com players) via MP que eu poderei postar versões exclusivas.

 

**Sobre o Adsense: Tem gente que gostaria de ajudar de alguma forma. Essa pode ser uma.

 

 

INSTALAÇÃO E CONFIGURAÇÃO:

 

Para instalar basta você executar no seu banco de dados, as SQL que estão no arquivo de download.

 

Copiar todo o conteúdo do Sistema de Voto para uma para alguma pasta separada em sua hospedagem ou dedicado.

 

Editar o arquivo localhost.php com as informações do seu banco de dados(só altere isso)

 

Ter uma conta ativa no TOP 200 que você encontra o link dentro do próprio arquivo de download.

 

Acessar a tabela "voto_config". E inserir as informações de ID de sua conta no TOP200, id do item e quantidade. Altere somente os dados da coluna Valor.

 

O ID mensionado por mim, é o número que fica no final do link de voto do meu TOP 200.

 

E pronto. seu Sistema ja estará funcionando. Bastando apenas você inserir os links de voto.

 

 

Dentre os links ja cadastrados, terá um ( o do lado direito) que é o do meu top. La você não precisa alterar nada, nem mesmo alterar link dele. Deixe ele do geito que esta.

 

O outro que esta do lado esquerdo deverá ser usado como modelo para você inserir os demais links. Bastando apenas você dar um COntrol + c e Control + v e editar o link e imagem.

 

Deixem o link do meu top sempre por ultimo pelo motivo que informei no inicio.

 

UMA GRANDE OBSERVAÇÃO:

 

Se você executar o sistema em sua casa nos modos Localhost, 192.168.1.3, 127.0.0.1, 10.10.1.3, ou equivalentes que são somente o Ip local da rede. O sistema sempre dará como que você não votou.

 

Pois o sistema vai comprar o seu IP com o que ta la no TOP200.

 

E o top 200 vai registrar o seu IP válido. Dando assim, diferença com o seu IP local.

 

 

 

 

 

 

Espero que antes de postarem que o sistema não esta funcionando, tenham ao menos lido tudo isso acima.

 

Espero receber alguns obrigados também.

 

 

 

E eu não pararei por aqui. Postarei mais um Sistema com estilo parecido ainda hoje aqui no Fórum. Mas é que ja são 4,30 da manha, eu não dormi, e gastei mais de 2 horas fazendo este tópico nos minimos detalhes.

 

 

Bom Dia, obrigado.

 

----------

 

Quem for testando.... Por favor, postem o resultado.

 

O dono do projeto so dará suporte via MSN, que contém dentro do arquivo de configuração do sistema!

Editado por hugo felipe

HYWuN.png

 

Quer algo bem feito?Faça você mesmo!

Link para o comentário
Compartilhar em outros sites


  • Respostas 92
  • Created
  • Última resposta

Top Posters In This Topic

so pra lembrar ^^

 

tem proteção então por IP, e se o Player votou o não, é isso?

é necessário algum Npc ?

Está fácil a edição, ou é necessário um nível um pouco elevado quanto a websites?

Entre e Confira!!!!:

 

NEW* - L2Blank Freya PvP Server

 

Link para o comentário
Compartilhar em outros sites

@FaRM

 

Não necessita npc nenhum basta executa a sql é configura o banco de dados!

Esse votesystem a vantagen e que não tem como burla.. como os demais..

HYWuN.png

 

Quer algo bem feito?Faça você mesmo!

Link para o comentário
Compartilhar em outros sites

EU sou o Desenvolvedor desse Sistema(JPSMASTER16). Se alguem ler o texto que eu escrevi. Verá que existe uma falha.

E sinto muito, mas suporte eu não poderei estar dando aqui, pois fasso parte de outro Forúm.

 

Mas terei o prazer em auxilialos via MSN, é free ok.

Link para o comentário
Compartilhar em outros sites

Se seguir o tutorial ja conseguira entender os locais que devem ser alterados.

 

Lembrando que além de alterar o localhost.php com os dados do banco de dados.

 

Você deve se cadastrar no TOP 200 que tem dentro do arquivo, e colocar o seu id la dentro da tabela voto_config.

Link para o comentário
Compartilhar em outros sites

Painel de Controle

Logado como edsonl2 Sair

 

Tutorial:

 

1 - Clique nos links de voto disponiveis abaixo;

2 - Depois de confirmar seu voto, atualize a página e clique em "Verificar e Receber", e aguarde a confirmação;

 

 

Strict Standards: date() [function.date]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/Sao_Paulo' for '-3.0/no DST' instead in C:\AppServ\www\Voto\painel.php on line 46

* Status : Clique nos links abaixo para votar:

 

 

Por que deu esse erro ?

Link para o comentário
Compartilhar em outros sites

EDIT:

 

 

Para quem estiver recebendo esse erro na pagina do painel:

Warning: date() [function.date]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/Sao_Paulo' for 'BRT/-3.0/no DST' instead in

 

 

Abra o arquivo php.ini do seu servidor web(appserver, wamp, easyphp)

 

E localize pela linhaonde tem escrito:

date.timezone OU ;date.timezone

 

E troque por:

 

date.timezone = America/Sao_Paulo (sem o ponto e virgula na frente)

 

Salve-o, e de RR no servidor web.

 

E se nenhuma das linhas exisitirem. Vá até o final do php.ini e insira isso:

[Date]

 

date.timezone = America/Sao_Paulo

 

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

Cara perfeito muito bom mesmo :D

 

Eu vou utiliza-lo e se faltar alguma idéia eu direi a você para se pronunciar com os Demais

 

Obrigado :D

Contatos MSN: [email protected] Skype: Lucas Marlon < ArmyDoido >

Projeto L2JBrasil Online Vol² nos Ajude de sua Opniao :p

 

NÃO RESPONDO DÚVIDAS POR MSN NÃO INSISTA.

SOMENTE AJUDO SE FOR JAVA OBG :P

Link para o comentário
Compartilhar em outros sites

continua com mesmo erro

 

Strict Standards: date() [function.date]: It is not safe to rely on the system's timezone settings. Please use the date.timezone setting, the TZ environment variable or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/Sao_Paulo' for '-3.0/no DST' instead in C:\AppServ\www\Voto\painel.php on line 46

* Status : Clique nos links abaixo para votar:

Link para o comentário
Compartilhar em outros sites

@hanah

Poste para mim o seu php.ini

 

Aos demais, se quiserem algumas opções extras, é so me add no msnq ue contem dentro do arquivo de configuração. Não cobrarei nada pelo serviço.

eu arrumai desculpa pela falta de atenção tem que tira os ; da frente lah muitu obrigado agora esto com uma duvida da para coloca para da mais de um item ?

Link para o comentário
Compartilhar em outros sites

Qual a diferença???

 

Versões com o Adsense

Versões sem o Adsense

 

Ae Cara, obrigado de verdade :happy:

 

 

O que é Adsense ?

 

Resumindo, é uma imagem( de propaganda) onde cada crike gera 'Centavos' para a conta do Responsavel pelo 'Adsense'.... Ai estar a diferencia, COM IMAGEM DE PROPAGANDA OU NAO.

Eu Apoio!

 

7GZj3.png
Link para o comentário
Compartilhar em outros sites

Em breve postarei um outro sistema relacionado a votos.

 

SObre essa ultima versão, no momento estou sem idéia de algo a se incrementar para as próximas, por isso é importante que me adicionen e deixem suas dicas e opiniões.

 

Lembrando que estou com essa conta "topgs" pois não consegui recuperar a minha conta antiga "JPSMASTER16".

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...
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.