Ir para conteúdo
  • Cadastre-se

Painel de administração de servidores


Rogiel

Posts recomendados

Estou criando um painel para o L2J e gostaria de compartilhar com vocês parte do progresso e saber quais ferramentas vocês gostariam que fossem adicionadas.

 

Primeiro vou começar mostrando os recursos mais interessantes, no momento, há dois deles: Validação de dados em tempo real e pesquisa facilitada.

 

A validação dos dados, verifica se, por exemplo, ao criar uma conta nova, o login já existe, sem que seja preciso atualizar a página, acelerando o processo. O mesmo acontece ao mover o character para outra conta ou editar o nome dele.

 

ajaxvalidadechar.png

ajaxvalidate.png

 

O segundo, e de longe o que mais auxilia, é o de pesquisa facilitada. Ao digitar algo no campo de pesquisa, ele mostra resultados em tempo real, como acontece no Google ao realizar uma pesquisa. Clicando no item, você é redirecionado direto ao que você quer.

 

autocomplete.png

 

Os recursos abaixo, são mais normais, mas não menos importantes, como a lista, edição e visualização de characters, contas, castelos e clans (somente estes implementados até o momento, mas haverá mais)

 

Character

charactera.th.png

 

Edição do character

editchar.th.png

 

Lista de clans

clans.th.png

 

Visualização do clan

clani.th.png

 

Lista de castelos

castlei.th.png

 

Visualização do castelo

castleview.th.png

 

Criação de uma nova conta

novaconta.th.png

 

Como podem notar, nem todos valores ainda são mostrados de forma "bonita", algo que será mudado com certeza. Outra nota que gostaria de deixar, é que é possível "navegar" pelo servidor, por exemplo, você pode com um clique, ver a conta de um character e já achar seus outros characters.

 

Para os mais interessados, estou desenvolvendo o sistema em Java (utilizando JSP), portanto o sistema promete ser realmente rápido e com capacidade de fazer praticamente tudo.

 

E para finalizar, um print do geral:

geral.th.png

 

E afinal, o que vocês esperam que exista num painel de controle para servidores?

Link para o comentário
Compartilhar em outros sites


Confirmação de doações é uma boa

Minha Configuração:


Processador: I7 3770 - 3,4 Ghz / Placa Mãe: P8B75-M LE (Asus) / Placa de Vídeo: GTX 780 OC - 3GB - 384 bits (EVGA)


----------------------------------------------------


SSD: 240gb / 2x - HD 1,5 TB / Monitor: 23º (LG) 1920x1080


----------------------------------------------------


Gabinete: Corsair 500R / Water Cooler: H100i (Corsair) / Head Set: Corsair Vengeance 1500 / Mouse: Corsair Vengence M95 / Teclado: Corsair Vengeance K95 / Memória: 2x4GB 1600 Mhz - (Corsair Vengeance)

Link para o comentário
Compartilhar em outros sites

Cara vai ficar muito bom seu painel....

 

Algumas dessas funções ele já possui, mais se completar com as demais vai fica perfeito.

 

- cadastro

- banir/desbanir acc

- jail

- add/remove drop mobs

- add item player

- edit castles

- edit clans/ally

- add setdonator/remove

- add premium accont

- edit player (nome, s***, classe, acc level)

- add/remove skill's

- destravar char

- enchant item/ remove

- restart/ down server

- change caracter server

 

não sei qual rev você usa... mais na l2jlive iria encaixar perfeitamente essas funçoes =)

Link para o comentário
Compartilhar em outros sites

Cara vai ficar muito bom seu painel....

 

Algumas dessas funções ele já possui, mais se completar com as demais vai fica perfeito.

 

...

 

não sei qual rev você usa... mais na l2jlive iria encaixar perfeitamente essas funçoes =)

 

- cadastro

- banir/desbanir acc

- jail (não é possível colocar na jail, somente ver quem está)

- add/remove drop mobs (falta implementar)

- add item player

- edit castles

- edit clans/ally

- add setdonator/remove

- add premium accont

- edit player (nome, s***, classe, acc level) (nem tudo, ainda)

- add/remove skill's (falta implementar)

- destravar char

- enchant item/ remove

- restart/ down server

- change caracter server

 

Fiz tachado o que já está implementado.

Estou fazendo baseado no L2JServer, mas vou fazer comapatível com vários, na hora da instalaçào você escolhe o design do banco de dados (ele vai descobrir automaticamente também) e dai ele passa a funcionar com o sevidor que vc quiser...

Link para o comentário
Compartilhar em outros sites

rogiel se ele e feito em java como que vai rodar?? pois tem hospedagens que nao aceitam java e tem muita gente que usa o wamp, xampp, lampp e por ae vai..

 

acho que vc nao pensou muito nesse lado... na acessibilidade do pessoal.. e outra acho que para isso que vc esta fazendo ae o php nao e limitado nao... tenho varios scripts feitos em php que funcionam muito bem... o dudu mesmo tem o o l2jas que e show... mais veio so acho que em relacao a ele ser feito em java pego um poko pesado...

fabiov.png

Link para o comentário
Compartilhar em outros sites

rogiel se ele e feito em java como que vai rodar?? pois tem hospedagens que nao aceitam java e tem muita gente que usa o wamp, xampp, lampp e por ae vai..

 

acho que vc nao pensou muito nesse lado... na acessibilidade do pessoal.. e outra acho que para isso que vc esta fazendo ae o php nao e limitado nao... tenho varios scripts feitos em php que funcionam muito bem... o dudu mesmo tem o o l2jas que e show... mais veio so acho que em relacao a ele ser feito em java pego um poko pesado...

 

Mas se o cara tem o servidor, ele tem um dedicado em que esse servidor está, então, ele tem onde hospedar. E XAMPP tem um addon, em que vc coloca o Tomcat e pode fazer o deploy de webapps.

 

Sobre o PHP, ele utiliza muita memória, varios megabytes por request, JSP não.. ele vai usar alguns kbytes e deu, e isso altera muito a performance. PHP não suporta threads, portanto não se pode fazer uma tarefa para rodar automaticamente a cada X segundos por exemplo... Há outras inclusive, em Java é com usar-se DAO (Data Access Object, um objeto que faz a interação com o banco de dados ou qualquer outro local que estão os dados), com isso eu posso colocar o webapp dentro do proprio L2J e interagir com tudo que o servidor possui: enviar pacotes, fazer um char usar uma skill, fazer um char sentar, etc...

Link para o comentário
Compartilhar em outros sites

PHP não suporta threads, portanto não se pode fazer uma tarefa para rodar automaticamente a cada X segundos por exemplo... Há outras inclusive, em Java é com usar-se DAO (Data Access Object, um objeto que faz a interação com o banco de dados ou qualquer outro local que estão os dados), com isso eu posso colocar o webapp dentro do proprio L2J e interagir com tudo que o servidor possui: enviar pacotes, fazer um char usar uma skill, fazer um char sentar, etc...

 

nao e por nada nao mais acho que errou nesta parte ae man.. pois php nao tem Thread mais temos o cronjobs.. ou ate mesmo o agendador de tarefas do windows... e outra o php aceita sim o DAO, ja vi muitos scripts usando isso que no caso se resume ao ADODB, em relacao a memoria.. e nao sei disso nao que o php chega a usar megabits por request... essa eu deixo para alguem que e mais experiente do que eu responder...

fabiov.png

Link para o comentário
Compartilhar em outros sites

Bom, nada que um crontab ou um agendador de tarefas não faça.

 

Outra coisa, é que o JAVA não é bem documentado.

Quando se desenvolve um painel destes, você tem que ter uma estrutura para manutenção, soluções para eventuais problemas.

Felizmente, o PHP tem uma rede de documentação invejável, o que facilita usuários leigos a corrigirem seus próprios sistemas ou até mesmo fazer adaptações.

 

JSP é ótimo, mas PHP não deixa a desejar.

Sem falar que o TomCat é muito pesado para rodar, em relação ao Apache simples.

 

Não é atoa que hospedagens com TomCat são mais caras e exigem um servidor separado das hospedagens normais.

logo.png

Link para o comentário
Compartilhar em outros sites

nao e por nada nao mais acho que errou nesta parte ae man.. pois php nao tem Thread mais temos o cronjobs.. ou ate mesmo o agendador de tarefas do windows... e outra o php aceita sim o DAO, ja vi muitos scripts usando isso que no caso se resume ao ADODB, em relacao a memoria.. e nao sei disso nao que o php chega a usar megabits por request... essa eu deixo para alguem que e mais experiente do que eu responder...

Cronjob é um quase hack, vc precisa fazer uma imagem ou um pedido em ajax no site, se ninguem acessar esse arquivo, a cron nunca é executada. Agendador de tarefas do windows nào conta, pq nao é do php...

 

Adodb não é DAO, é uma camada de abstração, como o JDBC em Java.

 

 

Bom, nada que um crontab ou um agendador de tarefas não faça.

 

Outra coisa, é que o JAVA não é bem documentado.

Quando se desenvolve um painel destes, você tem que ter uma estrutura para manutenção, soluções para eventuais problemas.

Felizmente, o PHP tem uma rede de documentação invejável, o que facilita usuários leigos a corrigirem seus próprios sistemas ou até mesmo fazer adaptações.

 

JSP é ótimo, mas PHP não deixa a desejar.

Sem falar que o TomCat é muito pesado para rodar, em relação ao Apache simples.

 

Não é atoa que hospedagens com TomCat são mais caras e exigem um servidor separado das hospedagens normais.

Java é muito bem documentado amigo, e toda essa documentação se tem pela IDE, e não precisa acessar sites externos.

28rnrjl.png

 

Ambientes Java são caros, pq são pouco usados... assim como os ambientes com PHP eram a alguns anos atrás, quando só se usava HTML e JavaScript.

Link para o comentário
Compartilhar em outros sites

  • L2JBr ADM
Cronjob é um quase hack, vc precisa fazer uma imagem ou um pedido em ajax no site, se ninguem acessar esse arquivo, a cron nunca é executada. Agendador de tarefas do windows nào conta, pq nao é do php...

 

 

Eu não li isso.

EJoOSOj.gif

Sua pergunta foi respondida? Certifique-se de marcar a resposta como a solução aceita.
Se existe mais de uma resposta, utilize o "vote up" para destacá-la.
Se você achar uma resposta útil, diga obrigado clicando no botão "Gostei".

Link para o comentário
Compartilhar em outros sites

Duelo entre java e Php nen se compara... java leva muito mais vantagem... não estou criticando PHP até por que tbm uso... mais sistemas em java são muito mais seguros e flexíveis..

seu sitema OO é perfeito... e a variedade de padrões que podemos seguir tbm nen se compara...

Link para o comentário
Compartilhar em outros sites

Nossa... apesar de ser + 1 Painel Administrativo (Afinal; Nunca é ruin ter coisa boa d+ :P), excelente projeto, se ficar como estou pensando, excelente trabalho, parabens

 

Duelo entre java e Php nen se compara... java leva muito mais vantagem... não estou criticando PHP até por que tbm uso... mais sistemas em java são muito mais seguros e flexíveis..

seu sitema OO é perfeito... e a variedade de padrões que podemos seguir tbm nen se compara...

 

Nem sempre amigo, PHP as vezes é melhor, o problema é mais no lado da segurança

"O tamanho dos teus sonhos deve sempre exceder a tua capacidade atual para alcançá-los.
Se os teus sonhos não te assustam, eles não são grandes o suficiente." - Ellen Johnson

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

  • 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.