Ir para conteúdo
  • Cadastre-se

Projeto Launcher Auto-Updater


Wallz

Posts recomendados

Resolvi compartilhar a imagem da aparência final do launcher auto-updater que estou desenvolvendo,

será usado no próximo servidor de testes da L2JDream..

 

23UBs.jpg

 

  • Funciona em todas as crônicas (Testei todos do C4 até o Goddess - Exceto o Cliente Gracia Parte 1, pois só não tenho o mesmo.. ),
  • Ele checa os arquivos e auto-atualiza ao iniciar, e, auto inicia o jogo no final da atualização..
  • Não utiliza nenhum arquivo externo, é apenas o executável na pasta do cliente do Lineage II

 

 

 

É isso, sugiram, discutam, opinem (onde devo melhorar e etc..)

 

 

Agradecimento especial ao Naldinhu pelas aulas de delphi na madrugada

Editado por Wallace Carvalho

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

 WhatsApp: 22 98156-2591 

L2JDREAM PROJECT

Link para o comentário
Compartilhar em outros sites


sugestão:

 

Não sei se seria possível mas o que todo adm gostaria de ter em seu servidor é um launcher auto-update que não deixasse o player executar o l2.exe e abrir o game sem antes passar pelo launcher.

este é o sonho de muitos adm's, eu não entendo desta parte de programação mas será que não seria possível colocar o l2.exe dentro do launcher e alterar algo na system que se o player colocasse algum l2.exe comum nao iria funcionar?

o launcher esta com um design muito bom, mas também seria uma boa poder alterar a imagem central nao removendo os créditos pois os mesmos poderiam ser adicionados na borda do launcher, mas voce que manda hehe

de toda forma parabéns e boa sorte ;D

Link para o comentário
Compartilhar em outros sites

Bela iniciativa rs, achei bem interessante da sua parte, além disso o designer do Update fico lindo .

parabéns irmão .

''Junte-se a nós para recuperarmos os Links Offline''

Link para o comentário
Compartilhar em outros sites

 

Estou estudando uma forma de fazer isso, apenas iniciar pelo launcher, junto com uma varredura de hackers..

 

Mas por enquanto esse será o launcher apenas para o server teste, e para server teste não é necessário isso..

 

 

Valeu bro (:

Editado por Wallace Carvalho

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

 WhatsApp: 22 98156-2591 

L2JDREAM PROJECT

Link para o comentário
Compartilhar em outros sites

Esse e meu garotooo *--*

Laucher perfeito .. *---*

O ladrão de seis galinhas tá no presídio,

O banqueiro tá livre por que tem endereço fixo

Sonha que o congresso vai aprovar lei mais severa

É o mesmo que o deputado atirar na própria testa.

Link para o comentário
Compartilhar em outros sites

O designer ficou realmente bom mais fugiu do contexto do Game,

A tipografia l2jdream .... esta muito forte se você olhar por um certo tempo da até uma dor nos olhos.

cuidado na iluminação.

 

Parabéns ai. projeto excelente.

Link para o comentário
Compartilhar em outros sites

O designer ficou realmente bom mais fugiu do contexto do Game,

A tipografia l2jdream .... esta muito forte se você olhar por um certo tempo da até uma dor nos olhos.

cuidado na iluminação.

 

Parabéns ai. projeto excelente.

 

Eu deixei bem forte para destacar, o launcher só vai ficar aberto o tempo necessário para atualizar, depois de atualizar ele se fecha e inicia o jogo automaticamente..

Eu tenho uma internet razoável ( 2MB ) aqui não levou muito tempo para baixar o patch do server ( no caso do server teste será só a system mesmo ) Então acho que não irá ficar muito tempo aberto..

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

 WhatsApp: 22 98156-2591 

L2JDREAM PROJECT

Link para o comentário
Compartilhar em outros sites

Lindo d+ parabens mano! continue sempre assim...

Te Ajudei? Curte ai para me ajudar!
Ass.: Daniel Amaral

Filizard Project Is Coming Soon, Acessem a Fanpage: Filizard Project

Link para o comentário
Compartilhar em outros sites

E está bom eu olho um pouco pelo Designer, e tenho a mesma opinião do Mickaelll.

Essa faixa ou linha amarela está um pouco forte demais. (Leve como uma dica construtiva).

Mesmo assim Parabéns o Launcher está bem legal, merece uma joinha.

Você sabia que a L2JBrasil tem uma empresa de Hosting Oficial?
Conheça a L2JCenter.com

L2JBRASIL - 15 anos vendendo SS e flechas em Giran! (Trade / Adena)

Link para o comentário
Compartilhar em outros sites

yFYDt9i.jpg

 

Claro que no caso nao ficaria assim é que nao tenho a font da jdream e os botoes do l2 pra trabalhar melhor em cima, mais axo que msm por poucos segundos

um servidor que quer ter um futuro tem que ter uma visibilidade bem profissional e dedicada, isso ai é uma amostra do que daria pra fazer + ou - ..

Link para o comentário
Compartilhar em outros sites

yFYDt9i.jpg

 

Claro que no caso nao ficaria assim é que nao tenho a font da jdream e os botoes do l2 pra trabalhar melhor em cima, mais axo que msm por poucos segundos

um servidor que quer ter um futuro tem que ter uma visibilidade bem profissional e dedicada, isso ai é uma amostra do que daria pra fazer + ou - ..

 

Cara, se quiser trabalhar em cima da skin eu te mando o .png aqui..

 

Infelizmente não tenho como estruturar tudo dizendo o que é o que porque é tenso..

O Skin Editor do XE2 é meio "bizarro"

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

 WhatsApp: 22 98156-2591 

L2JDREAM PROJECT

Link para o comentário
Compartilhar em outros sites

Cara, se quiser trabalhar em cima da skin eu te mando o .png aqui..

 

Infelizmente não tenho como estruturar tudo dizendo o que é o que porque é tenso..

O Skin Editor do XE2 é meio "bizarro"

 

Se vc quiser uma mão só avisar, não sei como funciona laucher mais sei que não é facil .... é que realmente nao tenho aqui os botoes, nao sei qual a font e o estilo que vc quer trabalhar nisso ... dei um exemplo somente ..

Link para o comentário
Compartilhar em outros sites

Se vc quiser uma mão só avisar, não sei como funciona laucher mais sei que não é facil .... é que realmente nao tenho aqui os botoes, nao sei qual a font e o estilo que vc quer trabalhar nisso ... dei um exemplo somente ..

O Funcionamento da skin é o seguinte, são 4 imagens pra botões (Normal, Hover, Clicked, Deactivated) medindo 70x24 cada!

A Barra de loading é 41x16 e só.

O Fundo só o wallace pode te dizer o tamanho exato porque não tenho essa source aqui ;)

Ajude-nos no Design o wallace é ruim, péssimo, horrível, terrível, marromeno no design =)

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

Se vc quiser uma mão só avisar, não sei como funciona laucher mais sei que não é facil .... é que realmente nao tenho aqui os botoes, nao sei qual a font e o estilo que vc quer trabalhar nisso ... dei um exemplo somente ..

 

A skin é assim

 

style.png

 

Não dá pra upar em outro local sem que seja dentro de um zip senão perde a qualidade e a skin buga...

Aí estão todos os botões.. Formulários e etc..

Editado por Wallace Carvalho

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

 WhatsApp: 22 98156-2591 

L2JDREAM PROJECT

Link para o comentário
Compartilhar em outros sites

A skin é assim

 

style.png

 

O download do png original aqui : http://l2jdream.com/style.zip

 

Não dá pra upar em outro local sem que seja dentro de um zip senão perde a qualidade e a skin buga...

Aí estão todos os botões.. Formulários e etc..

 

Não conseguir entender muito o png dessa skin, Entendi oque contem e tals, porem nao tem as dimenções pra mim trabalhar em cima..

Link para o comentário
Compartilhar em outros sites

Não conseguir entender muito o png dessa skin, Entendi oque contem e tals, porem nao tem as dimenções pra mim trabalhar em cima..

@Wallace e Naldo

baixei aqui, vou trabalhar nessas dimenções, me manda a font da dream, é bom padronizar o projeto em uma font só ...

 

São 5 imagens pra botões (Normal, Default, Hover, Clicked, Deactivated) medindo 70x24 cada!

A Barra de loading é 41x16..

 

É assim no próprio XE2, não tem uma base, um exemplo, nem muito menos um tutorialzin.. É só essa imagem bizarra que faz a skin ! kkk

Editado por Wallace Carvalho

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

 WhatsApp: 22 98156-2591 

L2JDREAM PROJECT

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...
  • 2 years later...
  • 3 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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