Ir para conteúdo
  • Cadastre-se

L2JAdmin


NalDinHuU

Posts recomendados

Boom, pra quem não sabe ainda, sou programador (delphi, c++, java e etc), não gosto muito da idéia de ter que trabalhar diretamente com o navicat pra poder adicionar itens no server e tal.

então decidi criar um software (Linguagem: Delphi) que faça a intermediação entre o ADM e o BD, facilitando assim muito a vida de tds.

O Projeto Apesar de ser simples é grande e complexo em algumas partes.

Vou Mostrar um Exemplo(o melhor que lembrei agora) de como vai ser mais facil mecher no BD e no servidor com ele:

Você quer Adicionar um item no seu BD, Chega lá as Tabelas estão com as colunas todas em inglês... eaí? 
(suponho que você não entenda inglês certo?
Aí você pensa, poxa não sei oq fazer, vou pedir ajuda na L2JBrasil...

É Extremamente desnecessário criar um post para isso porque é uma dúvida simples² ...

Por isso no Software todas as informações da BD (tanto colunas quanto dados) estão totalmente traduzidas.

Aliás, ia esquecendo disso, o L2JBrasil terá participação direta com o Software (Se o Kelvin Quiser é claro), ao abrir o software será pedido seu Login e Senha do L2JBrasil, Assim evitamos Leechers, e tds que quiserem utilizar o software terão que criar acc no l2jbrasil.

Aí vc pergunta: Mais cara, os mlk dos outros forums podem criar uma acc e dividir com a galera toda!
Aí eu Respondo: Vou Colocar LOGS. se uma acc conectar com 10 ips diferentes é BAN!

 

[ O PROJETO É MULTIREV ]

 

O Projeto está em andamento, qualquer dúvida, sugestão podem falar aí.

Qualquer Modificação que eu fizer vou postar, talvez eu crie um changelog.

Galera da ADS, se puderem criem um Logo pro software :D

 

Espero que abraçem a idéia

 

 

[01/02/2011] - 1.01a

[ Changelog ]

Adicionei Alguns Itens Iniciais;

Começei a Criar a Enciclopédia;

Terminei a Parte de Adição de Sets;

Terminei a Parte de Adição de Armorsets;

Terminei a Parte de Visualização de Sets;

Criei o Banco de Dados;

Revisei Códigos Antigos;

 

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

 

[02/02/2011] - 1.01b

[Changelog]

Adicionado : Opção de Mudar de DB (thx Williamfs).

Iniciado : Sistema Multirev (thx Williamfs).

Removido : Enciclopédia (Vai Deixar o Programa Muito Pesado).

Adicionado : Suporte a Execução de SQL.

Corrigido : Bug na Inicialização.

 

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

 

[03/02/2011] - 1.01c

[Changelog]

Adicionado : Drop Add.

Iniciado : SQL Analyser.

Corrigido : Bug ao Salvar Dados do DB.

Adicionado : Sistema de Update.

Adicionado : Sistema de Login.

Iniciado : Suporte a Abertura do Servidor.

 

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

 

[03/02/2011] - 1.01d

[Changelog]

Segurança : Só Abre em Localhost no Beta.

Corrigido : Sistema de Login 100%.

Desativado : Sistema de Update (Temporário).

Iniciado : Tratamento de SQL.

Adicionado : Multirev Incluído (L2JBrasil Rev)

 

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

 

[14/02/2011] - 1.02a ALPHA

Atenção, preciso que todos postem erros, bugs ou sugestões, isso vai me ajudar bastante no desenvolvimento!

[Changelog]

Segurança : Só Abre em Localhost no Alpha.

Concluído : Mesclagem de Menu.

Concluído : SQL Edit.

 

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

 

[18/02/2011] - 1.02b ALPHA

[Changelog]

Concluído : SQL Avançado.

Concluído : Char Info (Agora Estou Concluindo a Parte de Exibir os Items Equipados).

Finalizando : Área de Castelos (Só não Consegui Ainda Descobrir Como Calcular a Data da Siege).

Interface : Nova Interface Com Tema BlackD.

Menu : AINDA ESTOU ATRÁS DE ÍCONES PARA COLOCAR NO MENU (Criei um Post na Área de Pedidos para Isso).

 

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

 

[20/02/2011] - 1.02b ALPHA • BlackD

[Changelog]

Concluído : Interface BlackD.

Concluído : Char Info (Só Falta Exibir as Armas e Ícones).

E +++

 

 

 

 

[ Versão Alpha • BlackD]

Senha Para Descompactar: versaoalpha1.02aBLACKD

Login: alphauser

Senha: alpha1.02a

10gxx81.png

 

 

 

 

 

Vai Me Leechar? Então aprende ENGENHARIA REVERSA Primeiro!

Link para o comentário
Compartilhar em outros sites


Boom, pra quem não sabe ainda, sou programador (delphi, c++, java e etc), não gosto muito da idéia de ter que trabalhar diretamente com o navicat pra poder adicionar itens no server e tal.

então decidi criar um software (Linguagem: Delphi) que faça a intermediação entre o ADM e o BD, facilitando assim muito a vida de tds.

 

Como assim? não entendi!

 

Esse programa traria a tabelas e colunas do navicat traduzidas? faria uma comunicação diretamente com o DB?

 

Hum.. . fiquei curioso, me mande um beta via mp para que eu possa entender na prática!!

 

EDIT: dei uma olhada nos arquivos, parece realmente interessante, o programa trará até os icons dos itens!

Link para o comentário
Compartilhar em outros sites

Gostei bem interessante no caso vai logar com o login e senha do forum, no caso l2jbrasil

e no caso qualquer 1 que tenha uma conta akie poderá logar no painel admin de qualquer server que o tenha?

não entendi muito bem ou terá que logar com login e senha do forum e depois fazer outro login com conexão a db do server no caso com acess level?

...

Link para o comentário
Compartilhar em outros sites

seria legal fazer algo bem parecido com o navicat mesmo...

 

so que nao e por nada nao... mais vc fazendo tudo isso. nao seria uma perda de tempo...? pois se o cara pegar um pack ja editadinho legal.. nem precisa mecher no banco...!!

fabiov.png

Link para o comentário
Compartilhar em outros sites

mais dai ja vai da cabeça de cada um né, começei isso pensando economizar tempo e ajuda a galera.

to pensando em add coisas que o navicat nao tem, tipo o tratamento de erros na execução de batch sql.

Link para o comentário
Compartilhar em outros sites

mais dai ja vai da cabeça de cada um né, começei isso pensando economizar tempo e ajuda a galera.

to pensando em add coisas que o navicat nao tem, tipo o tratamento de erros na execução de batch sql.

 

é possivel isso?

 

incluir um recurso que analiza a SQL e converte para o banco de dados destino?

Link para o comentário
Compartilhar em outros sites

não apenas avisar que está errado, mais reparar de acordo com a tabela em que ele está tentando inserir.

amanha postarei uma versão que está funcionando, troquei varios itens hj. quando upar mando MP pra vcs.

Link para o comentário
Compartilhar em outros sites

[info - Sistema Multirev]

No Princípio eu tinha intenções de manter o L2JAdmin somente para Rev L2JBrasil Interlude, mas depois de conversar com o Williamfs, percebi que isso seria uma injustiça com usuários de outras Revs e Versões, por isso eu Começei a Desenvolver um Sistema Multirev, que usará arquivos .REV, com informações da versão para identificá-la.

Claro, existem muitas revs por ai e eu não poderei dar suporte a todas, por isso cada um poderá fazer seus próprios arquivos .rev para suas versões.

Futuramente liberarei o soft que fará a criação desses arquivos.

 

Valeu Williamfs :D

Link para o comentário
Compartilhar em outros sites

@ Fábio

 

Boom, pra quem não sabe ainda, sou programador (delphi, c++, java e etc), não gosto muito da idéia de ter que trabalhar diretamente com o navicat pra poder adicionar itens no server e tal.

então decidi criar um software (Linguagem: Delphi) que faça a intermediação entre o ADM e o BD, facilitando assim muito a vida de tds.

mSw8ymV.gif

Link para o comentário
Compartilhar em outros sites

Previsao de quando o projeto estara , livre para os usuarios testarem tbm ? ;D

 

estou ancioso '-'

cyCrFTF.jpg

Obrigado pelo presente Mickaelll

Corintiano Fanático;

Estudante de T.I e l2jbrasileiro nas horas vagas.

Link para o comentário
Compartilhar em outros sites

Aviso a Todos

Essa Semana Estive Muito Atolado em Trabalho e tudo (Apesar que tenho 16 anos :D), mais como eu to pouco me lixando pro trabalho e tal...

Então esse fim de semana, organizei o NerDDev, chamei uns nego aqui (meus debugger local, o Williamfs é o meu a distância :D) e vamo ficar varando a noite aqui no desenvolvimento, então segunda feira vou liberar uma versão ALPHA para testarem com novos sistemas incluídos. Aguardem ...

Link para o comentário
Compartilhar em outros sites

Arquivado

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

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.