Ir para conteúdo
  • Cadastre-se

L2 Acp (Account - Admin Control Panel)


Posts recomendados

  • L2JBr ADM
Em 24/05/2019 at 10:04, kazamajr disse:

Alguem tem algum tutorial de como por isso pra funcionar?
Preciso muito desse sistema mas estou  muito perdido.

 

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

  • 10 months later...

  • 4 months later...

Esse é um site com painel e tudo ? desculpa minha ignorância, sou novo no ramo...

A boca fala o que quer, mais na real são as ATITUDES
que provam e confirmam quem realmente somos
NÃO ACREDITE em algo só por que ouviu falar
as 
PESSOAS são aquilo o que fazem
não aquilo que 
DIZEM

Link para o comentário
Compartilhar em outros sites

  • 3 months later...
  • 6 months later...

CASSILDA QUE TRABALHO FODAAAA




MANO MUITO LINDO E INCRIVEL O TEU TRABALHO NESSE ACM AI UM DOS TRABALHOS MAIS BRABOS QUE VI AQUI DENTRO
 

SO queria fazer 2 perguntas... FUNCIONA NO l2Dream e no lucera ????

 

Editado por Nattan Felipe

EM BREVE! O VERDADEIRO CONCEITO DE JOGAR L2 RETORNARÁ!
TRADICIONAL, FEITO PARA OS QUE VALORIZAM O L2!! VAMOS VOLTAR AS ORIGENS!

l2lords.png.58c22bcd55c06ab90af9117d6d725558.png

Link para o comentário
Compartilhar em outros sites

  • 2 weeks later...
Em 02/05/2017 at 19:11, Elfocrash disse:

English:
 

  Mostrar conteúdo oculto



Hello and welcome to L2ACP

L2ACP is both an Account control panel but also an Admin control panel.

Every action in the system is INSTANT.
No more "you have to logout first" messages and such non-sense.


How does it work?

The gameserver will now also run a lightweight restful API which will handle the site requests.
The website which is hosted on my end handles and processes the user's actions and if they are valid it sends them to the server for further processing.

This enables use of the native l2j method calls and the use of the existing infrastructure.
This also enhances security as there are no database exposure anymore.


Mais detalhes de como funciona você encontra aqui: "Como L2ACP funciona e como contribuir"

Reasons for sharing

  • To get a solid acp out there which is free for everyone
  • To see if people are interested in contributing
  • Nobody would buy this if i just hosted it myself
  • To show the competition that opensource projects can offer value

Feature list

For Players

  • Register l2 account
  • Change ingame password
  • Check player stats/info/inventory
  • Buy ingame items with donate points
  • Buy services with donate points (Change name, set nobless, reset pks, change sex)
  • Statistics (Top PVP, Top Pk, Top Online)
  • Donate with Paypal for Donate points

For Admins

  • Set the items sold in the store
  • Give items to players
  • Punish players (acc ban, char ban, jail, chat ban, kick)
  • Announce test
  • Live map of the players
  • The ability to spawn monsters anywhere in the map

The ACP is in active development and way more features are coming.
The site is fully responsive giving the user a great tablet or mobile experience.



L2ACP Preview

 


Lucky Wheel addition

 

 


Private stores

Server with private stores showcase a server set up with a great economy system
However it can be really hectic when a server is populated.
Players tend to look forever to find the item whey want.

Well the new L2ACP feature solves all that.
The user is able to buy and sell items from the ACP no matter if he is online or not.
You can also use the search functionality to search for the item that you want.

Here is a video preview:

 

 

 


Security
L2ACP uses symmetric encryption for the payloads and an api key validation.
As long as they are changed you will have no problem with security.
If you want to be 100% secure, make the server accept requests only from the ip that the site is hosted.
If you want to be 101% secure, then host them together and don't expose the api port.



License
Both L2ACP projects are licensed under GPLv2.
Here is a tldr of what that means.

cbQCqwM.png


Github repositories - (Please star the projects if you like them, it means a lot)
Gameserver Api written for aCis - https://github.com/Elfocrash/L2ACP-api
Website - https://github.com/Elfocrash/L2ACP-Web
Test erver - http://test.l2acp.com

Contributions
I don't claim to be an expert java developer, not even close.
The api side of things has definitely many things to be improved.
Pull requests are always welcome.



I will update this with more info soon.

Thanks

 

 



PT:


Olá bem-vindo ao L2ACP

L2ACP é um painel de controle de contas de usuário, mas também um painel de controle Admin.

Todas as ações realizadas no sistema são INSTANTÂNEAS.
Esqueça usar mensagens como "você tem que deslogar primeiro" e outros absurdos.


Como o painel funciona?

O gameserver irá executar uma leve REST API que será consumida pelas requisições do site.
O site que está hospedado numa extremidade manipula e processa as ações do usuário e se elas são válidas, envia-as para o servidor para processamento posterior.

Isso permite o uso de chamadas de método nativo eo uso da infra-estrutura existente no gameserver.
Isso também aumenta a segurança porque reduz a exposição do banco de dados.

Mais detalhes de como funciona você encontra aqui: "Como L2ACP funciona e como contribuir"

Razões para compartilhar

  • Para obter um sólido painel de controle grátis para todos.
  • Para trazer pessoas estão interessadas em contribuir.
  • Ninguém compraria isto se eu me hospedasse.
  • Para mostrar o valor e a competição que os projetos de opensource podem oferecer.

Lista de recursos

Para Jogadores

  • Registrar conta.
  • Alterar a senha do jogo.
  • Verificar estatísticas/informações/inventário do jogador
  • Comprar itens de jogos com moedas de doação.
  • Comprar serviços com moedas de doação (Alterar nome, nobless, reset pks, alterar gênero)
  • Estatísticas (Top PVP, Top Pk, Top Online)
  • Doações com o Paypal para moedas donate

Para Administradores

  • Definir itens vendidos na loja
  • Dar itens aos jogadores
  • Punir os jogadores(acc ban, char ban, jail, chat ban, kick)
  • Anunciar
  • Mapa ao vivo dos jogadores
  • A capacidade de gerar monstros em qualquer lugar no mapa

O ACP está em desenvolvimento ativo e mais recursos estão chegando.
O site é totalmente responsivo dando ao usuário uma grande experiência de tablet ou mobile.



L2ACP Preview

 


Adicionar "Lucky Wheel"

 

 

 


Lojas Privadas

Um servidor com lojas privadas mostra um servidor configurado com um sistema de economia funcional, o que é importante para o desenvolvimento do servidor.
No entanto, pode ser muito complicado quando um servidor está lotado.
Os jogadores tendem a sair procurando em todas as lojas para encontrar um item específico.

Bem, o novo recurso L2ACP resolve tudo isso.
O usuário é capaz de comprar e vender itens do ACP não importa se ele está online ou não.
Você também pode usar a funcionalidade de pesquisa para procurar o item desejado nas lojas privadas.

Aqui um vídeo com o preview deste sistema:

 

 

 

 

 


Segurança
O L2ACP usa criptografia simétrica para as cargas úteis e uma validação de chave api.
Enquanto eles são alterados você não terá nenhum problema com a segurança.
Se você quiser estar 100% seguro, faça o servidor aceitar solicitações somente do ip do servidor que o site está hospedado.
Se você quiser estar 101% seguro, hospede o site e o server juntos para não expor a porta api.



Licença
Ambos os projetos L2ACP são licenciados sob https://pt.wikipedia.org/wiki/GNU_General_Public_License'>GPLv2.
Aqui está um tldr do que isso significa.

http://i.imgur.com/cbQCqwM.png


Repositório Github - (Por favor adicione o projeto aos favoritos se você gostou, isso significa muito)
Gameserver Api escrita para aCis - https://github.com/Elfocrash/L2ACP-api
Website - https://github.com/Elfocrash/L2ACP-Web
Test server - http://test.l2acp.com

Contribuições
Eu não afirmo ser um desenvolvedor especialista java, nem mesmo perto disto.
O lado da API definitivamente tem muitas coisas a serem melhoradas.
Os pedidos de pull são sempre bem-vindos.



Vou atualizar isso com mais informações em breve.

Obrigado!

 

 

 

EI, BOA TARDE!! FUNCIONA PRA L2 OFF?

Link para o comentário
Compartilhar em outros sites

  • 1 year later...
  • 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.