Ir para conteúdo
  • Cadastre-se

Grundor

L2JBr ADM
  • Total de itens

    10505
  • Registro em

  • Última visita

  • Prêmios recebidos

    200

Tudo que Grundor postou

  1. O erro que vc ta tendo é pq o hopzone mudou algo na api deles e o seu codigo certamente é mais antigo. A solução é atualizar a url do hopzone.
  2. Esse votereward é o mesmo que esse ? eu particularmente acho esse um dos melhores que temos aqui.
  3. Grundor

    Uma vez riram de mim...

    Geralmente os servidores online são desenvolvidos em conjunto com uma SDK do jogo, a perfeita integração entre o cliente o servidor é necessário, no caso do UnrealEngine é o C++, mas numa SDK própria quando uma system do lineage2 é compilada dlls também são compiladas para o servidor. Isso é um pouco limitante, mas torna o projeto mais barato. O mesmo vale para o Unity e o SDK da Amazon (que é usado no new world) que também são para C++ e/ou .NET. A Vantagem do c++ é ser uma linguagem mais baixo nível reduzindo assim as camadas entre o hardware e o software, porém programar sem um SDK, tudo do zero que nem foi o l2j é complicado.
  4. Como vamos te ajudar se vc não posta os logs de erro? Sobre mod de l2jfrozen ,esse é todo o conteúdo de frozen que temos: [Hidden Content]
  5. Sem bem vindo à l2jbrasil. Pelo que entendi vc está usando a Frozen interlude, e está tentando conectar usando uma system com protocolo 746, vc pode ir no server.proprerties, lá terá uma configuração máxima e mínima do protocolo (filtre por protocol) Então coloque o valor máximo para 746, por segurança vc pode definir o protocolo minimo e máximo o mesmo, assim somente essa system irá conectar.
  6. Grundor

    Uma vez riram de mim...

    Eu sempre fui um entusiasta da programação, eu comecei a programar com meus 13 anos de idade, PHP e Javascript foram as linguagens escolhidas ( e ai de falar que eram linguagens de programação naquela época) php era pra fazer site e javascript pra fazer site dinâmico. Na época dos primórdios do L2J eu sempre questionei porque do Java, linguagem complexa, pesada, cheia de gambiarras pra fazer funcionar (algo que hj com o java 12+ não é tão verdade) , quem nunca teve problema no JAVÁ não é? Então eu questionei, porque não usamos outra linguagem de programação? Riram de mim. Tínhamos muitos GAPs, além de java ser uma linguagem difícil que exigia que pessoas tivessem um conhecimento intermediário à avançado para trabalhar com desenvolvimento de l2j, existiam gapes de memória, overflows, bugs de bicode do Jython, drivers do MySQL instáveis e não performáticos que resultavam em servidores cheios de bug e lag. Não existiam muitas linguagens de programação disponíveis e consolidadas na época, o PHP5 tinha acabado de ser lançado, o python2 era beta ainda, ou era JAVA ou alguma outra da família C, C++, C# (que teriam sido ótimas opções além do java) mas o java era o que tava no Hype naquela época. Demorou mas o L2J se estabilizou e hj temos servidores construídos em l2j realmente muito bons. Mas eu fico me perguntando às vezes, e se tivéssemos as linguagens de programação e tecnologias que temos hoje? Como seria? E foi nessa andança que eu encontrei alguns projetos bleeding edge e WIP (work in progress) que estão tentando implementar tecnologias atuais nos emuladores de L2. Lineage2js Lineage2JS, (pronuncia-se Lineage Two Jay Ésse), é um projeto que implementa em Node.js , que é un rumtime de javascript assíncrono orientado à eventos, para rodar um servidor C1 Harbingers of War A grande vantagem do node é a escala, ele foi feito pra isso, porém o projeto deles ainda não está rodando de forma correta ainda e precisa de muita implementação. De novo bancando o erege, eu sugeri que eles usassem threads, não exatamente threads, mas sim workers para trabalhos corriqueiros como por exemplo a movimentação dos npcs, eles estavam usando um set interval na thread principal, assim conseguiriamos um nível de processamento paralelo, embora isso seja muito otimizado no node, nem todas as funções são não-blockantes, e uma tarefa com block na thread principal travaria todos os jogadores. Se os desenvolvedores se animarem certamente dá pra fazer algo bom, principalmente utilizando o módulo Cluster, que permite o compartilhamento de sockets entre os processos, a fim de permitir o balanceamento de carga entre os núcleos. Outra grandes vantagens do Javascript pro Java é que ele carrega muito menos coisas para memória, podendo rodar o servidor com até 10x menos recursos que o mesmo servidor Java. Repositórios: [Hidden Content] Base de dados: json files (provavelmente será migrado para o MongoDB no futuro) Implementação do Gameserver em NodeJs L2py L2 Py, pronuncia-se Pí-Ái, é um emulador da versão Interlude em Python 3, a grande vantagem nesse projeto é que cada servidor tem uma API JSON por meio da qual eles se comunicam, e o website também poderia se comunicar interagindo diretamente dentro do servidor por PHP por exemplo. Os servidores de Game e Login são apenas invólucros de rede do L2World, que é aonde os objetos vivem (no java isso é uma instância de uma classe) Todos os eventos acontecem no servidor de dados (Data Server). Essa arquitetura permitirá o balanceamento de carga entre as instâncias LS e GS, isso significa que o 10K problem não se aplica aqui, essse servidor poderia por mais de 10k de players facilmente e com pouquíssimos recursos, já que aplicações python tendem à ser mais leves. A outra vantagem é que ele já está preparado para rodar em Docker, se vc não viu eu postei aqui como levantar um servidor l2j com docker: Repositório: [Hidden Content] Docker composer do servidor l2py. Já vi também projetos em Ruby, .NET, c++, c# mas esses já são tecnologias antigas, por isso destaquei esses 2. A lição que a gente precisa ter com isso é que quando vemos alguém novo na comunidade falando alguma coisa que parece eresia,bruxaria, devemos levar em consideração o futuro, nunca sabemos o que ele nos reserva. Boa sorte aos 2 projetos, tanto o L2JS com sua facilidade de programação como o L2Py com sua arquitetura revolucionária que permitirá uma escala sem igual.
  7. Nós estamos nos estruturando pra isso, por enquanto apenas a staff tem permissão para fazer upload de arquivos nos tópicos, os anexos tem um impacto positivo na perpetuação dos arquivos porém um impacto negativo no custo do forum hehehe
  8. Olá papangus, venho com vocês compartilhara aqui uma system modificada para windows 10 para vc poder logar no Lineage2 C1. O programa foi feito a muito tempo e infelizmente não é mais funcional no windows 7 em diante, então foi injetado uma dll chamada vista7.dll que alguns anti-virus podem reclamar, já que ela não tem assinatura. Você pode baixar aqui: System_C1_Win10.zip
  9. Opa, as persmissões do fórum foram atualizadas.
  10. Estava revirando aqui minhas coisas e encontrei o logo .AI editável do lineage2, esse logo é proveniente de um site kit que era distribuído pela NCSoft lá no passado . O arquivo .ai pode ser aberto com o adobe Illustrator e pode ser util na produção de artes. gamelogo.zip
  11. Essa eu nunca vi, faz tempo que não vejo a galera que produzia client-mods trabalhando.
  12. Eles criaram, mas é complicado isso chegar no Brasil, da uma olhada aqui Hoje o lineage2 também funciona num software chamado yeti, aonde vc consegue logar no lineage2 via streaming do seu próprio pc, dificil converter o l2 inteiro para mobile sem converter ele para Unreal 4+ primeiro. Isso me fez lembrar do Flow que você me passou esses dias com o Head da Level Up, acho que a primeira culpa do lineage2 não ser famoso aqui foi a Level Up, ela poderia ter sido uma 4games, mas preferiu ficar investindo em Ragnarok e Fluffly, que morreram muito antes do lineage. Eles criaram isso também, se chama Lineage2 Essence, e para aqueles que não querem largar o osso do seu personagem na linha oficial, estão lá gastando 1k de dólares por mês pra se manter no top10 dos servidores oficiais.
  13. Grundor

    Community board

    Isto é uma dúvida por esse motivo está sendo movido para área de dúvidas. Caso necessário faça as edições no título e na descrição de seu tópico para adequar às exigências da comunidade.
  14. Esse final de semana aconteceu uma coisa engraçada comigo, recebi mais uma daquelas PMs intituladas "Ajuda", nada de anormal até aí, recebo várias toda semana. Porém algo me chamou a atenção nesse pedido: Eu respondi, coisa rara, pq eu ignoro a maioria. A resposta foi essa: Fui crucificado e o cara se recusou falando que se fizesse isso ninguém jogaria, e todo o blablablá que sempre fazem. Lineage2 é uma franquia multi-bilionária, concordo que hoje quem busca um private é porque não quer competir nos servidores oficiais e querem poder ter diversão mais "rápida". Mas nem sempre foi assim. Eu sou de uma época que o jogo era jogado em outro objetivo, as batalhas PvP e PvE eram igualmente empolgantes. Eu postei esse vídeo em um grupo que supostamente seria para lineage2 e essa foi a resposta: Eu achei que ia despertar curiosidade pra saber como era comprar um jogo em uma caixa. Meu primeiro contato com lineage2 foi assim, não com essa box versão de colecionador, mas uma box mais simples apenas contendo o CD e 1 mês grátis para jogar que meu tio trouxe dos EUA pra mim, foi meu primeiro jogo online, primeiro MMO. Seria a cultura do país? A ignorância dos jogadores? ou os servidores atuais projetados para apenas um público específico e pequeno que estão causando isso? Talvez seja a hora de apresentar esse jogo para jogadores novos, pessoas que nunca experimentaram esse jogo, talvez eles tenham a chance de reviver o que eu revivi quando recebi uma caixa com um DVD contendo um jogo medieval, imersivo, e cheio de histórias. Eu não sei o que fazer, mas sei que isso precisa tomar outro rumo.
  15. Sim, mas você teria que modificar o arquivo Dockerfile para fazer checkout no branch do interlude: # Copyright 2004-2020 L2J Server # L2J Server is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. # L2J Server is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. # You should have received a copy of the GNU General Public License along with this program. If not, see [Hidden Content]. FROM openjdk:14-alpine LABEL maintainer="L2JServer" \ version="2.6.3" \ website="l2jserver.com" COPY entry-point.sh /entry-point.sh RUN apk update \ && apk --no-cache add maven mariadb-client unzip git \ && mkdir -p /opt/l2j/server && mkdir -p /opt/l2j/target && cd /opt/l2j/target/ \ && git clone --branch master --single-branch [Hidden Content] cli \ && git clone --branch master --single-branch [Hidden Content] login \ && git clone --branch Interlude --single-branch [Hidden Content] game \ && git clone --branch Interlude --single-branch [Hidden Content] datapack \ && cd /opt/l2j/target/cli && mvn install \ && cd /opt/l2j/target/login && mvn install \ && cd /opt/l2j/target/game && mvn install \ && cd /opt/l2j/target/datapack && mvn install \ && unzip /opt/l2j/target/cli/target/*.zip -d /opt/l2j/server/cli \ && unzip /opt/l2j/target/login/target/*.zip -d /opt/l2j/server/login \ && unzip /opt/l2j/target/game/target/*.zip -d /opt/l2j/server/game \ && unzip /opt/l2j/target/datapack/target/*.zip -d /opt/l2j/server/game \ && rm -rf /opt/l2j/target/ && apk del maven git \ && chmod +x /opt/l2j/server/cli/*.sh /opt/l2j/server/game/*.sh /opt/l2j/server/login/*.sh /entry-point.sh WORKDIR /opt/l2j/server EXPOSE 7777 2106 ENTRYPOINT [ "/entry-point.sh" ] As linhas modificadas foram a do datapack e do gameserver. && git clone --branch Interlude --single-branch [Hidden Content] game \ && git clone --branch Interlude --single-branch [Hidden Content] datapack \ Edit, talvez tenha que fazer modificações no entry-point devido alguma alteração que não esteja okay.
  16. Olá, provavelmente você é novo por aqui, seja bem-vindo(a)! Sua pergunta é de baixa qualidade e por isso ela está sendo fechada, dificilmente ela receberá alguma ajuda ou suporte, recomendo a leitura do guia abaixo e refaça o post. Certamente assim você será respondido por alguém mais experiente nessa questão.
  17. Você pode ainda fazer deploy free de containers em alguns provedores : Heroku: [Hidden Content] Azure: [Hidden Content] Docker: [Hidden Content] Google: [Hidden Content] entre outros O education pack do github: [Hidden Content] tem uma lista ainda maior Aproveito ainda para desafiar, todos os desenvolvedores e programadores de l2j à disponibilizarem suas packs também em docker, facilitando bastante o deploy e teste de suas revisões.
  18. Fala papangus! Faz tempo que eu não deixou aqui uma contribuições de tutorial, hoje eu vou ensinar a forma mais fácil e sem complicações de rodar um servidor l2jserver H5 em menos de 10 minutos. Sem instalações complicadas, você precisará de 2 coisas: GIT - você baixará o código fonte através do git, então é importante que ele esteja instalado em seu computador , não vou repetir o processo de instalação, ele já está documentado nesse tutorial aqui: DOCKER: De forma resumida, o Docker é uma plataforma de código aberto, desenvolvido na linguagem Go e criada pelo próprio Docker.Inc. Por ser de alto desempenho, o software garante maior facilidade na criação e administração de ambientes isolados, garantindo a rápida disponibilização de programas para o usuário final. O Docker tem como objetivo criar, testar e implementar aplicações em um ambiente separado da máquina original, chamado de container. Dessa forma, o desenvolvedor consegue empacotar o software de maneira padronizada. Isso ocorre porque a plataforma disponibiliza funções básicas para sua execução, como: código, bibliotecas, runtime e ferramentas do sistema. A grande vantagem no uso da plataforma é a rapidez em que o software pode ser disponibilizado — em uma frequência até 7 vezes mais rápida do que a virtualização convencional. Outro benefício oferecido pela plataforma é a possibilidade de configurar diferentes ambientes de forma rápida, além de diminuir o número de incompatibilidades entre os sistemas disponíveis. Um arquivo Docker pode ser formado por diversas camadas diferentes, onde se dividem em dois grupos: Imagens: elas são formadas por diferentes camadas. Com a sua utilização, o usuário pode facilmente compartilhar um aplicativo ou um conjunto de serviços em diversos ambientes. Quando há alguma alteração na imagem, ou uso de um comando como executar ou copiar, é criada uma camada. Containers: são formadas na reutilização das camadas. Um container é o local onde estão as modificações da aplicação que está em execução. É por meio dele que o usuário pode modificar uma imagem. Como instalar o docker? Você pode instalar o docker em praticamente todos os sistemas operacionais através dos instaladores ou gerenciador de pacotes, o docker é um serviço e um uma aplicação de linha de comando, siga as instruções abaixo para instalar o docker no seu sistema operacional: Como instalar o docker no Windows 10? (Opite pela opção Stable) Como instalar o docker numa versão anterior ao Windows 10 ? (Pode ser que essa opção não funcione corretamente) Como instalar o docker no Centos? Como instalar o docker no Debian? Como instalar o docker no MAC? Como instalar o docker e o docker-compose no Raspberry PI. Vou seguir a instalação pelo windows 10, mas o procedimento é o mesmo no linux e outro sistema operacional. No windows você sabe que o docker está rodando e instalado clicando na bandeja de icones do windows, ao lado do relógio, haverá um ícone de uma baleia carregando containers dê 2 clicks sobre o icone: Irá abrir o painel de controle do docker indicando que o serviço do docker está rodando: você pode fechá-lo agora, se quiser explore um pouco as opções e aprenda mais sobre o docker. Agora será necessário que você abra o Windows Power Shell, para fazer isso é só abrir o painel de controle e pesquisar por power shell. Verifique se os clientes docker e docker composer estão funcionando corretamente digitando os seguintes comandos: docker -v e docker-compose -v A saída deve ser algo assim: Como instalar a imagem docker do L2jServer? Vamos agora clonar o repositório que a l2jserver publicou com seu seviço docker usando o comando: git clone [Hidden Content] O resultado deve ser como a imagem abaixo: Você verá que alguns arquivos foram baixados: Os arquivos que nos interessam aqui são: Dockerfile: É o arquivo de imagem, dentro dele há as instruções de como é feita a instalação da imagem Docker. docker-compose.yml: É o arquivo configurável, é nele que vamos fazer as modificações e as configs para que o docker-commposer possa orquestrar a inicialização dos containers. entry-point.sh: É o arquivo que executa quando você inicia um container ou contêiner( em português) Configurando o servidor antes de inicializar A configuração do servidor é feita através de variáveis de ambiente, e é dentro do arquivo docker-compose.yml que iremos fazer as mudanças: Abra o arquivo com algum editor de texto que forneça a função "highlight" como o notepad++ , assim ficará mais fácil identificar caso você digite algo errado. Os arquivos YML utilizam a syntaxe parecida com a linguagem de programação Python, e atráves da identação ( colunas de espaços vazios e tabs) que sabemos como cada bloco do código é configurado. Eu habilitei os caracteres invisívels clicando no icone para poder visualizar esses espaços corretamente: Agora a explicação de cada uma das tags acima exibidas: version: indica a versão da sintaxe do docker-compose que irá rodar (algo parecido como php 5.6, php 7, etc), para mais info acesse [Hidden Content] services: É uma lista com os contêiners que irão rodar, nesse caso haverá 2 containers, o mariadb e o l2jserver, vejam que ambos estão com 2 espaços antes do nome, isso indica que eles estão no mesmo nível de identação. Dentro de cada serviço você encontrará as seguintes tags: container_name: Nome do container. image: nome da imagem do container no docker hub: [Hidden Content] que é uma espécie de repositório de imagens. volumes: Nome do volume é o nome de uma pasta que irá montar no filesystem, sem um volume os arquivos gerados pelo container serão destruídos quando o container estiver parado. restart: Indica o comportamento de restart em caso de falha do container, no caso ficou como always, o que indica que o container ficará reiniciando em caso de falha. environment: são chaves e valores de variáveis de ambiente, é a forma como você envia ao container variáveis de configuração (similar ao que é feito no arquivo .properties e .ini) vou explicar melhor abaixo. ports: é o mapeamento de portas do container para o computador, no caso da configuração "7777:7777" significa que o container irá fazer o foward da porta 7777 (gameserver) para a porta 7777 do seu computador ou servidor, sendo assim você pode publicar seu servidor na internet. Como configurar variáveis do contêiner Como vimos ali em cima a chave environment é responsável por passar configurações ao container. No container mariadb você irá configurar a chave MYSQL_ROOT_PASSWORD que indica qual é a senha do usuário roto no banco de dados que você irá setar, vamos manter aqui como root. (sim vc vai poder conectar seu navicat no banco de dados usando essa senha do mysql) No meu caso, eu ainda vou modificar a porta de saída do mysql para 3307, pois eu já tenho um mysql rodando em localhost na minha máquina ficando assim: mariadb: container_name: l2j-server-mariadb image: yobasystems/alpine-mariadb:latest volumes: - /var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: "root" ports: - "3306:3307" Já o contêiner l2jserver que contém o login server e o gameserver existe uma vasta gama de variáveis , por padrão essas são as variáveis definidas: IP_ADDRESS: "127.0.0.1" LAN_ADDRESS: "10.0.0.0" LAN_SUBNET: "10.0.0.0/8" JAVA_XMS: "512m" JAVA_XMX: "2g" RATE_XP: "1" RATE_SP: "1" QUEST_MULTIPLIER_XP: "1" QUEST_MULTIPLIER_SP: "1" QUEST_MULTIPLIER_REWARD: "1" AUTO_LEARN_SKILLS: "False" MAX_FREIGHT_SLOTS: "200" DWARF_RECIPE_LIMIT: "50" COMM_RECIPE_LIMIT: "50" CRAFTING_SPEED_MULTIPLIER: "1" FREE_TELEPORTING: "False" STARTING_ADENA: "0" STARTING_LEVEL: "1" STARTING_SP: "0" ALLOW_MANOR: "True" MAX_ONLINE_USERS: "500" MAX_WAREHOUSE_SLOTS_DWARF: "120" MAX_WAREHOUSE_SLOTS_NO_DWARF: "100" MAX_WAREHOUSE_SLOTS_CLAN: "200" PET_XP_RATE: "1" RATE_ADENA: "1" ADMIN_RIGHTS: "True" FORCE_GEODATA: "False" COORD_SYNC: "-1" HELLBOUND_ACCESS: "True" WEIGHT_LIMIT: "1" TVT_ENABLED: "True" SAVE_GM_SPAWN_ON_CUSTOM: "True" CUSTOM_SPAWNLIST_TABLE: "True" CUSTOM_NPC_DATA: "True" CUSTOM_TELEPORT_TABLE: "True" CUSTOM_NPC_BUFFER_TABLES: "True" CUSTOM_SKILLS_LOAD: "True" CUSTOM_ITEMS_LOAD: "True" CUSTOM_MULTISELL_LOAD: "True" CUSTOM_BUYLIST_LOAD: "True" VITALITY_SYSTEM: "True" ITEM_SPOIL_MULTIPLIER: "1" ITEM_DROP_MULTIPLIER: "1" Não recomendo removê-las, apenas modificar caso seja necessário. Essa aqui é a lista completa de variáveis com os respectivos valores padrão e para que serve cada uma: Iniciando o contêiner Com todo seu servidor configurado é hora de por ele pra rodar! Para iniciar os 2 containers você irá digitar o comando dentro da pasta "l2j-server-docker" cd C:\Dev\study\l2j-server-docker docker-compose up -d O atributo -d significa que o serviço irá rodar como um daemon, ou seja irá liberar o console após a execução mas continuará rodando em background. Nesse momento as imagens e o código fonte serão baixados, você pode só assistir , todo o trabalho sujo está sendo feito pelas imagens docker. Lembre-se de permitir o acesso do docker à sua interface de rede, caso contrário você terá que fazer a configuração manual do seu firewall Após a finalização o status dos nossos 2 containers deve ser "done" Você pode verificar se os containers estão rodando com o comando docker-compose ps Lembra do ícone da baleia no cantinho da barra de ícones, você também vai poder inspecionar seus novos containers por lá: Com um cliente H5 você já será capaz de logar no seu novo servidor, todo esse processo leva menos de 10 minutos quando o docker já está instalado, e menos de 10 segundos quando você já tem o cache das imagens docker. Essa imagem Docker do l2jserver utiliza o linux Alpine na versão 3.12.0, é uma versão linux que sua imagem tem apenas 124MB com apenas o essencial, muito otimizada para a execução, o que trará o máximo de performance para seu servidor. Depurando e inspecionando seus containers Um dos processos mais importantes da administração de um servidor de lineage 2 é a a depuração e inspeção de logs, com container o processo pode ser um pouco diferente do habitual "tela de console" ou abrir um arquivo .log. Você terá que olhar isso através de comandos ou pelo painel do docker que mostrei ali em cima. Por exemplo, para olhar as últimas 10 linhas e continuar acompanhando o log nós vamos usar o comando docker logs seguido do nome do container o parâmetro --tail 10 e o atributo -f (follow) : docker logs l2j-server-docker --tail 10 -f Aparentemente tudo okay no nosso servidor para sair do modo "follow" do log vc pode utilizar o comando ctrl+c. A outra opção é direto pela interface do docker: Você ainda pode ligar e desligar o servidor com os comandos stop e start do docker-compose docker-compose stop docker-compose start Lembrando que o comando pelo docker-compose irá parar tanto o l2jserver com o mariadb. Para parar individualmente o processo mais simples é usando o painel (no windows) Nessa mesma interface você também terá acesso ao console (linux) do container no botão que fica ao lado do STOP o CLI Okay, mas se eu quiser modificar alguma coisa? Como eu falei, o docker é um container de execução, o ideal é você já deixar tudo pronto e utilizá-lo apenas para rodar, garantindo à ele o acesso ao melhor do sistema operacional e compatibilidade, permitindo que você rode o serviço dentro de uma plataforma estável livre de bugs sistêmicos. Todo esse benefício torna a customização um paço um pouco mais custoso. Existe 2 abordagens para você customizar os arquivos dentro do servidor: A primeira abordagem é criando é a sugerida pelos desenvolvedores da l2jserver, que eu particularmente não usaria, mas vou passar aqui pra vocês com algumas modificações, o comando que está no readme.md , vc verá ele copiando a pasta inteira do container, isso irá incluir arquivos do sistema operacional. vou modificar o "./" para "/opt/l2j" que é a pasta onde estão os arquivos do servidor. Essa abordagem consiste em você parar o container e copiar arquivos para dentro do container através do comando docker cp, que significa copy&paste. Para isso vamos parar o nosso container do l2jserver docker stop l2j-server-docker Vamos copiar os arquivos do servidor para nossa pasta "custom" , lembrando que esse processo pode demorar, então você pode modificar os caminhos a serem copiados, inclusive copiando apenas 1 arquivo específico, basta modificar o path para o caminho do arquivo que quer modificar. docker cp l2j-server-docker:/opt/l2j/ ./custom/. Esse comando irá copiar todos os arquivos dentro do container para sua pasta "custom", então você poderá modificar e então fazer o caminho indicado pelos desenvolvedores. Haverá dentro da pasta custom, uma pasta server e dentro dela haverá os arquivos para você editar na estrutura já conhecida por muitos aqui: Após fazer as edições copie novamente os arquivos para dentro do container fazendo o caminho inverso: docker cp ./custom/. l2j-server-docker:/opt/l2j/. depois basta iniciar o servidor novamente: docker start l2j-server-docker Lembrando que se você não quer perder seus arquivos editados não use mais o comando down, e sim o stop à partir de agora, o comando down irá remover todos os arquivos e fazer novamente o build do servidor. docker-compose stop A outra abordagem é você modificando o o arquivo Dockerfile mudando os repositório git para repositórios seus, cópias modificadas do l2jserver. O Arquivo dockerfile é um arquivo bem pequeno com alguns comandos Linux e instruções de configuração do docker, uma delas é o método RUN que contém todo o processo de instalação do ambiente l2j, do build do source code ao start. RUN apk update \ && apk --no-cache add maven mariadb-client unzip git \ && mkdir -p /opt/l2j/server && mkdir -p /opt/l2j/target && cd /opt/l2j/target/ \ && git clone --branch master --single-branch [Hidden Content] cli \ && git clone --branch master --single-branch [Hidden Content] login \ && git clone --branch develop --single-branch [Hidden Content] game \ && git clone --branch develop --single-branch [Hidden Content] datapack \ && cd /opt/l2j/target/cli && mvn install \ && cd /opt/l2j/target/login && mvn install \ && cd /opt/l2j/target/game && mvn install \ && cd /opt/l2j/target/datapack && mvn install \ && unzip /opt/l2j/target/cli/target/*.zip -d /opt/l2j/server/cli \ && unzip /opt/l2j/target/login/target/*.zip -d /opt/l2j/server/login \ && unzip /opt/l2j/target/game/target/*.zip -d /opt/l2j/server/game \ && unzip /opt/l2j/target/datapack/target/*.zip -d /opt/l2j/server/game \ && rm -rf /opt/l2j/target/ && apk del maven git \ && chmod +x /opt/l2j/server/cli/*.sh /opt/l2j/server/game/*.sh /opt/l2j/server/login/*.sh /entry-point.sh nas linhas 17,18,19 e 20 você encontrará comandos de git clone, esses comandos são responsáveis por baixar os códigos fonte que posteriormente serão compilados pelas linhas abaixo. Se você alterar os repositórios para o seu "fork" do l2j o sistema deverá funcionar normalmente e vc não precisará aplicar as configurações diretamente no arquivo, fazendo do git sua pasta de edição do servidor: O repositório [Hidden Content] é responsável pelo l2j cli, ferramento de configuração do l2j. O repositório [Hidden Content] contém o login server. O repositório [Hidden Content] contém o gameserver, aqui que vc vai instalar seus mods. O repositório [Hidden Content] contém o datapack , os atributos de multisell, npc, buylist, instâncias e outros estão aqui. Em muitos casos apenas o repositório "datapack" será modificado, deixe o modo DEV aflorar e comece um repositório git com o nome do seu servidor. Depois que modificar o seu Docker file é só executar o Down e up que o seu servidor já estará sendo executado à partir do seu repositório. Se você tiver outra abordagem poste ai nos comentários. Na minha opinião, a maior vantagem de ser ter um servidor desses em docker é que você modifica e sobre alterações de forma muito rápido, containers já é o futuro da programação e desenvolvimento e é uma ótima tecnologia para se aprender, profissionais que sabem trabalhar com containers realmente estão à frente dos demais no mercado de trabalho. E é isso papangus, uma forma simples de iniciar o servidor, sem compilações complicadas, sem mexer com códigos longos e complexos, apenas alguns comandos básicos o poderoso Docker.
  19. O dark é opicional o branco ainda tá disponivel pelo modo legacy ou se vc não estiver usando modo escuro (noturno) no celular/windows
  20. Desde 2019 com a introdução tanto do Android quanto iOS e Windows 10 tiveram uma nova versão que implementa a funcionalidade dark mode. Aplicações e websites podem implementar temas específicos para cada modelo (dark e light) . Se você pesquisar um pouco sobre o dark mode vai encontrar frases como “é melhor para os olhos” ou “mais eficiente no consumo de energia”. A verdade é que para que sua bateria se beneficie de dark mode, é preciso que você tenha telas OLED/AMOLED, que só estão disponíveis em celulares e monitores mais novos. Se você usa LCD ou outro tipo de tela, mudar as cores não irá estender o tempo de uso de sua bateria ou reduzir o consumo de energia. Isso significa que a maior parte das pessoas não irá se beneficiar desse aspecto do dark mode. Mas e quanto a benefícios à saúde? Com certeza é melhor, certo? Não é bem assim. Infelizmente não temos muitos estudos científicos sobre o assunto para dizermos com precisão que o dark mode é melhor. O que sabemos é que o tempo que passamos olhando para telas é o fator mais importante para o cansaço dos olhos. Quanto menos você ficar olhando sua tela melhor. O Tema escuro só irá se habilitar caso vc configure seu celular ou computador para usar esse tema, não existe forma de acessar ele se você estiver acessando através de um sistema operacional sem suporte e/ou com o tema escuro desabilitado. O Dark mode está disponível nos seguintes navegadores: macOS Safari 13 ou mais recente. iOS Safari 13.2 ou mais recente. Android Browser 76 ou mais recente. Chrome for Android 78 ou mais recente. Firefox for Android 68 ou mais recente. Opera 62 ou mais recente. Chrome 76 ou mais recente. Firefox 67 ou mais recente. Microsoft Edge 76 ou mais recente. Para acessar o L2jBrasil em dark mode , habilite o dark mode no seu sistema operacional e mude o tema para o padrão (default)
  21. Grundor

    L2JBlueHeart 💙

    Certo, e vc pode ajudar o projeto à começar de listar os bugs para que os desenvolvedores façam as correções
  22. Você precisa de um mod específico pra isso, ou usar uma versão goddess, o nome desse tipo de Npc é "Auction House" ou "Auction Manager"
  23. @AiroN quem olha a gente aqui no fórum com a plaquinha vermelha não sabe do baita trabalho que dá pra manter esse site, lembro das madrugadas à fora que passamos migrando banco de dados, lidando com tabelas corrompidas, juntando os trocados para pagar os custos mensais e anuais dessa plataforma que muitos usufruem sem dar 1 real de retorno pra gente. Eu entendo seus motivos, e por muitas vezes já pensei da mesma forma, só não tive coragem. Seguimos firmes, vamos manter esse legado enquanto for possível, na esperança de que mais pessoas se revoltem contra esse sistema e se una de coração e alma ao que realmente importa: Diversão, parcerias, amizades. Muito sucesso manolo! tmj
  24. Lag e travamento pode ser gaps dentro dos ciclos de processamento e não memória, nem sempre aumentar o uso da memória vai trazer benefício. O que pode causar lag num servidor L2j? Existe um longo caminho entre o click do mouse do player à ação executada no servidor e o retorno ao cliente, e cada milisegundo conta. Conexão de rede instável Largura de banda Alta latência entre o cliente e o servidor Processador não é otimizado para operações multitarefa ou multi-thread Erros de lógica na aplicação Bug em alguma das libs ou componentes Operações no banco de dados lentas (slow queries) Banco de dados lento ou não otimizado. Excessivas operações do Garbage Collector por falta de memória disponível para alocar novos objetos. Heap Heap é o lugar (espaço na memória) onde os objetos criados em Java são alocados. Na heap são alocados apenas objetos. Métodos e outras paradas são armazenadas em outro lugar. A heap é dividida em duas regiões: Nursery e Old Space. Nursery: Região onde são alocados os objetos novos Old Space: Região onde são alocados objetos que já têm algum tempo de vida Como funciona? Quando a Nursery começa a encher, é feita uma espécie de "transição" de objetos entre uma região e a outra. Essa transição é chamada de Young Collection, onde os objetos alocados inicialmente na Nursery (que já estão com algum tempo de vida) vão para a região Old Space. Quando a região Old Space começa a encher, é feita uma coleta chamada Old Collection, onde os objetos "velhos" começam a ser de fato removidos da memória, esse processo sim pode causar lag pois irá exigir do processador claculos para determinar quem deve sair da memória. Só é recomendado aumentar quando você recebe erros como o OutOfMemoryError. Essa mensagem informa que todo o espaço na Heap foi utilizado. O Garbage Collector não conseguiu liberar a quantidade de memória necessária para a continuidade da execução da aplicação a tempo. Não é mais possível mover objetos da Nursery para a Old Space nem remover da Old Space Estes são alguns cenários comuns onde pode-se ocorrer OutOfMemoryError: Laços de repetição que criam muitos objetos novos Ler e/ou escrever em arquivos armazenando muita informação em memória Trazer muita informação do banco (paginação "burra" é um exemplo) Manter referências á objetos desnecessariamente Dentre várias outras possibilidades. Você pode reconfigurar esse volume na sua JVM e fazer um teste se o lag irá reduzir. Para reconfigurar o volume de memória utilizado pela JVM em tempo de execução temos dois comandos: -Xms: que define a quantidade mínima de memória Heap para a JVM; -Xmx: que define a quantidade máxima de memória Heap para a JVM. Podemos usar para executar: java –Xms256M -Xmx2G –jar server.jar # Aqui você muda de acordo da implementação do seu .bat/.sh Com isso você permitirar que a JVM (máquina virtual aonde roda o java) tenha mais memória disponível.
×
×
  • 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.