Ir para conteúdo
  • Cadastre-se

Painel Administrativo - PHP + OOP


Posts recomendados

3 minutos atrás, Astarothh disse:

TEM ESSE WEBSITE PRA MIM DIPONIBIÇA POR FAVOR 

Esse website é o oficial do lineage 2, deve ter cópias do template aqui no fórum, mas eu particularmente não possuo, ao menos não me lembro de ter.

Link para o comentário
Compartilhar em outros sites


4 minutos atrás, vert disse:

Esse website é o oficial do lineage 2, deve ter cópias do template aqui no fórum, mas eu particularmente não possuo, ao menos não me lembro de ter.

mais nem o nome dele vc lembr

Link para o comentário
Compartilhar em outros sites

  • 3 months later...
  • 2 months later...
  • 8 months later...

Hola amigos ami me esta dando errores al querer logear una cuenta ?

C:\xampp\htdocs\Full Web\classes\banco.class.php:24 Stack trace: #0 C:\xampp\htdocs\Full Web\classes\banco.class.php(16): banco->conecta() #1 C:\xampp\htdocs\Full Web\classes\accounts.class.php(6): banco->__construct() #2 C:\xampp\htdocs\Full Web\modulos\usuarios.php(16): accounts->__construct() #3 C:\xampp\htdocs\Full Web\funcoes.php(47): include_once('C:\\xampp\\htdocs...') #4 C:\xampp\htdocs\Full Web\index.php(531): loadmodulo('usuarios', 'login') #5 {main} thrown in C:\xampp\htdocs\Full Web\classes\banco.class.php on line 24

Link para o comentário
Compartilhar em outros sites

  • 8 months later...
En 24/6/2015 a las 15:30, vert dijo:

Configuracion de Bancos y Base de Datos para CCPanle en Mysql Remoto

  Ocultar contenidos

 

fmqXRRB.png

 

 

Saludos Amigos Alguien conoce la configuracion correcta del panel usando CCPanel con Mysql Remoto
Dicha Configuracion de Bancos y Base de Datos para CCPanle en Mysql Remoto como debe quedar en el CCpanel

Ejemplos ???

 

 

Link para o comentário
Compartilhar em outros sites

  • 3 years later...
Em 24/06/2015 at 19:30, vert disse:

Informações e Painel Atualizados: 27/04/2017

Tópico de Desenvolvimento

Post 3ª Página deste tópico:

  Mostrar conteúdo oculto

Sobre o painel, a lógica dele está boa, o que eu sugiro que você faça ?

Crie uma nova pasta para o projeto, veja quais arquivos estão sendo realmente usados (grande parte é só para documentação do painel), faça a conexão em PDO (mysql_* está ficando pra traz), passe as funções da DB do CRUD (Create, Read, Update, Delete) que estão de mysql_* para PDO.

Atualize os scripts com os novos comandos.

Edite o que quiser, onde quiser para novos scripts.

Seja feliz com um painel extremamente leve e com o código atualizado.

*Obs: A lógica do painel (mais específico no "shop") está perfeita. Já a área administrativa, é necessário verificar com tempo para melhorar os scripts, nada que possam ser burlado, mas é sempre bom conferir.

>> A parte administrativa foi a primeira que fiz, a 3 anos, por isso é preciso conferi-la. Já o shop foi a ultima coisa que fiz, ta ó.... uma beleza :3

Estou te passando o passo a passo que deve ser feito no painel para ele ficar perfeito porque você demonstrou interesse não só em usa-lo, mas em entendê-lo.

^-^

Links Onlines e Diretos Indisponíveis.

Painel Administrativo

  • Lineage 2
  • Versão atual: Interlude
  • Rev: L2jfrozen
  • Versão posterior: Hellbound / Gracia / Gracia Final / High Five (Prioridade) / Goddess of Destruction
  • Rev Posterior: A Que vocês ajudarem a desenvolver.
Oquê o painel tem a oferecer que os outros painéis não tem ?
R: Interação com Players, ele não abrange somente os administradores do servidor mas sim os players em diversas áreas.

Informações - Menus

  Mostrar conteúdo oculto
Menu Horizontal/
├── Tickets/
 ├── Ver Caixa de Mensagens.
 └── Novo Ticket
├── Alerts/
 ├── 5 Últimos Alertas.
 └── Ver Todos os Alertas.
 
Menu Vertical/
- Onde Estiver o Simbolo do "Fogo", são funções não terminadas.
- Onde Estiver o Simbolo da "Folha", são funções terminadas.

Informações - Funções

 

  Mostrar conteúdo oculto
  • O Shop Online utiliza créditos ( R$ ) como moeda de negociações.
  • Doações através do PagSeguro.
  • Lineage 2 World (Comunidade do L2 no Painel)

Lineage II World/

├── Informação.
├── Novo Post.
└── Mural/
 ├── Exibição dos Posts dos amigos.
 └── Exibição dos Meus Posts
  • Galeria
Galeria/
├── Imagens/
 ├── Exibir imagens do Usuário.
 └── Upload de imagens (A Demo Online não faz o upload de verdade).
├── Videos/
 ├── Exibir videos do Usuário.
 └── Upload de videos (A Demo Online não faz o upload de verdade).
└── Fonts/
  • Sistema de Tickets
Sistema de Tickets/
├── (Criar Tickets)
└── (Meus Tickets)
  • Módulo Players
Players/
├── Tickets/
├── Gatekeeper/
 ├── Teleporte do Personagem para Cidades.
 └── *Necessário Char Deslogado.
└── Destravar Char/
 └── Move o Char deslogado para Giran.
└── Enviar Gift/
 └── Player Compra o Item e a entrega é feita no selecionado Friend (In-Game).
  • Módulo Shop
Shop/
├── Shop Players/
 ├── Shop/
  └── Venda de Itens Individuais.
 ├── Painel/
  └── Painel para Manutenção do Shop.
 └── Histórico de Compras/
├── Shop Oficial/
 ├── Shop/
  └── Venda de Itens Individuais.
 ├── Shop Pacotes/
  └── Venda de Pacotes com Itens pré-definidos.
 └── Histórico de Compras/
  • Módulo Administrativo
Administrador/
├── Painel Geral/
 └── Status do Servidor
├── Painel Tickets/
 └── Visualização e Resposta de Tickets.
├── Players Online/
 └── Dados dos Players Onlines.
├── Painel Donate/
 └── Entrega de Itens para os Players.
├── Painel Nick/
 └── Troca de Nick de um Player.
├── Painel Nobles/
 └── Dar ou Retirar status de Nobles de um Player.
├── Painel Clan/
 └── Editar Level,Nome ou Reputação de um Clan.
├── Painel Olympiads/
 └── Adicionar,Remover e Editar os Players que participaram da "Olly".
├── Painel Heros/
 └── Players que Foram Hero,Os que são e Tornar Player Hero.
├── Painel Ban/
 └── Ver Players Banido.
├── Painel Chars/
 ├── Busca de Chars.
 ├── Informações dos Chars
 └── Itens do Player.
├── Painel Npcs/
 ├── Busca de Npcs.
 ├── Informações dos Npcs
 └── Drops dos Npcs.
├── Painel Shop/
 ├── Usuários/
  └── Adicionar e Remover Créditos.
 ├── Categorias/
  └── Adicionar e Remover Categorias.
 ├── Produtos/
  └── Adicionar e Remover Produtos no Shop Oficial.
 ├── Pacotes/
  └── Adicionar e Remover Pacotes e Produtos nos Pacotes.
 ├── Histórico/
  └── Adicionar e Remover Créditos.

 

 

Informações - Layout

  Ocultar conteúdo
bootstrap/
├── css-minify/
 ├── Usado nos .css utilizados na demonstração disponível.
 └── Carregamento da Página melhorado satisfatoriamente.
├── js-minify/
 ├── Usado em 95% dos .js utilizados na demonstração disponível.
 └── Carregamento da Página melhorado satisfatoriamente.
├── Images-Trimage/
 ├── Usado em todas as imagens utilizadas no painel.
 └── Carregamento da Página melhorado satisfatoriamente.
└── fonts/
 ├── glyphicons-halflings-regular.eot
 ├── glyphicons-halflings-regular.svg
 ├── glyphicons-halflings-regular.ttf
 ├── glyphicons-halflings-regular.woff
 ├── la2.woff
 ├── iceland.woff
 ├── icons.eot
 ├── icons.svg
 ├── icons.ttf
 └── icons.woff
  • Prints, Screen Shot's (Desatualizadas, não irei atualiza-las enquanto tiver a Demo Online)

dominio.com

 

Funções Removidas

  Ocultar conteúdo
Players/
├── Leilão Adena/
 └── Removido Parcialmente do Projeto.
├── Leilão Donator/
 └── Removido Parcialmente do Projeto.
├── Enchant Itens/
 └── Removido Totalmente do Projeto.
├── Players Vip/
 └── Removido Parcialmente do Projeto.
Administrador/
├── Painel Leilão/
 └── Removido Parcialmente do Projeto.
├── Painel Argument/
 └── Removido Parcialmente do Projeto.


Proteções

  Mostrar conteúdo oculto
  • AntSqlInject
  • Todo script com o banco de dados antes de rodar (qualquer requisição) é feita uma verificação de todas as informações e dados se eles realmente existem e se a requisição não é repetida (F5 para dar reload na página e re-executar o script).




Conta Administrativa
Login: admin
Senha: admin

Conta Game Master
Login: verth
Senha: admin

Conta Player
Login: vert
Senha: admin
 

* Todas as contas estão com a senha: admin (versão 1.3)


Informações para testar o Shop - Players:

  • O player não pode comprar o próprio item que está vendendo.
  • Os itens comprados e/ou vendas canceladas são enviados pra Warehouse do char.
  • Para fazer o test de compra e venda, cadastre com 1 conta, deslogue (ou abra outro navegador), entre na outra conta e compre o item.

__________________________________________________________________________________________________________

O Tópico foi quase todo copiado (do tópico de desenvolvimento), essa é a parte que não há no outro tópico.

Porque estou tornando o projeto Open Source ?

Parte da mensagem enviada ao Kelvin disponível abaixo para que entendam ^-^

 

  Ocultar conteúdo

Boa noite,

Kel, eu estou pensando em tornar o projeto abaixo Open Source;

http://www.l2jbrasil.com/index.php?/topic/99258-painel-administrativo-php-oop/?mode=show

Motivos:
Não tenho mais a intenção de acabar o projeto pra privatiza-lo devido ao tempo que vai demandar refazer o painel.
A lógica dos scripts são boas, porém, a programação foi feita de uma forma em que os scripts em si estão pesados (por isso refazer o painel).
É um projeto bom ao meu ver e seria um desperdício deixa-lo abandonado no meu computador, então pensei em torna-lo um projeto da L2JBr e os membros terminarem ele para uso deles mesmos.

Eu só estou com receio de não haver continuação da parte dos membros e eles pegarem o projeto para vender, ou apenas para uso próprio sem feedback, eu fiz esse painel nos dois últimos anos do curso técnico de automação e robótica (mecatrônica) então demandou um bom tempo (minhas horas vagas em que não estudava ou estava no estágio), só não gostaria que fosse um tempo desperdiçado.

Para o fórum, talvez os membros se animem um pouco e tenha mais movimentação devido á "novidade" disponibilizada.
O Tópico seria comunitário e todos poderiam ajudar, eu particularmente me disponho a tirar dúvidas sobre o que até então foi feito.

Mas porquê quero compartilhar um projeto meu que demandou tempo e vontade para fazer com o fórum se existe a possibilidade de os membros não continuarem o projeto ?
R: Se não fosse a JBr eu não teria pendido pra área de programação, afinal eu só queria aprender o básico para fazer o site do meu antigo servidor :); Hoje eu amo programar (apesar do tempo disponível para me dedicar ao estudo do mesmo), tenho uma grande consideração e respeito pelo Leon (Leonan), pelo Ramon e por você (tenho/tive mais contato com o Leon e com o Ramon, mas tive a oportunidade de conversar com ti algumas vezes). O Leon me deu muitos conselhos que eu ainda me lembro e levo pra vida para me tornar um bom profissional em qualquer área que eu escolher ^-^

 

- Disponibilizei o painel na minha hospedagem, então para baixa-lo basta clicar no link.

- Arquivos desnecessários junto com o painel (scripts que eu havia usado porém removi do código e acabei deixando o arquivo junto com o projeto).

- SQL contem a Data Base completa da JFrozen que utilizei no desenvolvimento do painel, porque não separei só as tabelas importantes ?

R: Porquê como eu mencionei para o Kel, o painel deverá ser refeito, então cabe á vocês contribuidores fazerem a separação do que acham necessário.

- Todas as contas do banco de dados estão com a senha "123".

- Toda dúvida relevante (na minha concepção) será respondida (por mim), é claro que todos os membros poderão dar suporte já que o projeto pertence aos membros da JBr.

Versão 1.0 - vert

Link Direto

Mega.nz

MediaFire

Versão 1.1 - LucasDesigner

MediaFire

Fixes:

Modificações visuais no painel.

SS's

Versão 1.2 - vert

Media Fire

Fixes:

- Simples revisão de alguns detalhes

- Ele somente funcionará no php 5.6.16 ou inferior

- Não suportado no php 7

- Verificação e correção de alguns erros

 

PS: caso não esteja conseguindo logar, altere o campo "password" na tabela accounts para esse valor: 0DPiKuNIrrVmD8IUCuw1hQxNqZc=

Após alterado o valor do campo, a senha da conta será "admin"

PS²: Aconselho a utilizar o phpmyadmin para executar a SQL, através do navicat irá dar erro

Versão 1.3 - vert

Media Fire

Fixes:

- Comentários no arquivo config.php

- Ele somente funcionará no php 5.6.16 ou inferior

- Não suportado no php 7

- Dentro da pasta Database há duas pastas: Full DB & Specific Tables.

* Dentro da pasta Full DB há dois arquivos: shop 1.3.sql & shop 1.3.psc

* O .sql pode ser usado em qualquer lugar, o .psc somente no Navicat, ou você utilizará um ou o outro.

* Dentro da pasta Specific Tables há 2 arquivos: shop_specific_tables.sql & accounts_modified.sql

* O shop_specific_tables.sql é necessário caso você escolha essa pasta e a accounts_modified.sql é opcional (a estrutura da sua tabela accounts deve no mínimo ter as mesmas colunas (email, admin, gm, ativo, datac, etc....), caso não queria executar essa sql, você pode modificar sua tabela.

Bom, creio que não me esqueci de nada em especial, caso eu o tenha feito, atualizarei o tópico ^-^

Os fix's postados nos comentários serão atualizados no tópico.

Adicional:

 

Créditos: WaN202

Gostaria de deixar alguns agradecimentos pessoais.

- Bluur (Matheus Serrão)

- W.Scorpion (Wesley Lima)

- Kenner130897 (Marcio Alves)

- Airon (Ramon Costa)

- Mickael'

- Ivan Pires

Mais uma vez gostaria de pedir desculpa pro Brunn0Ferreira pois o comentário dele no tópico de desenvolvimento me passou despercebido e demorei muito para responde-lo.

Será que funciona na eternity?

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.