Skip to content

Galagard

Members
  • Joined

  • Last visited

  • Trader rating

    N/A
  1. L2ExLauncher L2ExLauncher is a launcher and downloader for Lineage II clients. The project combines a Swing graphical interface with an embedded download backend in the same Java application. The backend is not a separate service: the interface and processing pipeline are compiled into the same executable artifact. Features Dark-themed graphical interface based on FlatLaf. Command-line mode for automation and diagnostics. Version and client catalogues organized by region and branch. Individual-file or full-client downloads. Single-connection, byte-range, CDN-part and hybrid download strategies. Parallel downloads with concurrency control. In-memory, temporary-file or hybrid storage modes. LZMA and ZIP decompression. Hash and size validation. Restoration of existing valid files. Local-copy comparison before accessing a CDN. Current-version queries for NCSoft services. Support for NCSoft, 4game/Innova, UpNova and Akumu sources. File catalogue generation and export. Architecture The project is organized into two layers inside the same JAR: src/main/java/org/l2explorer/launcher/frontend/ └── L2ExLauncher.java Swing graphical interface src/main/java/org/l2explorer/launcher/backend/ ├── Controller.java CLI entry point ├── model/ Generators, manifests, CDN and processing ├── impl/ Pipeline coordination ├── instancemanager/ Download, decompression, hashing and storage ├── interfaces/ Backend contracts └── cli/ Command-line arguments and commands The pipeline is, in broad terms: version source → file list → download → decompression → validation → storage Requirements Java 25 or a compatible runtime. Maven 3.9 or newer. Internet access to query catalogues and download files. Some dependencies remain bundled in libs/, including ConfigFieldParser, dom4j, json-simple and XZ for Java. Building From the project root: mvn clean package Build artifacts are generated in target/ and build/: executable JAR with embedded dependencies; distribution ZIP containing the JAR, configuration files and required images. The application entry point is: org.l2explorer.launcher.frontend.L2ExLauncher Graphical execution After building: java -jar target/l2exlauncher-<version>.jar The interface allows users to select a region, branch, client, version and output directory. The catalogue can be refreshed from the application. The executable JAR declares org.l2explorer.launcher.frontend.L2ExLauncher as its manifest entry point. It currently always starts the Swing interface, even when additional arguments are supplied. Arguments are not automatically forwarded from the graphical entry point to the backend. CLI execution The embedded backend must therefore be executed directly through its class entry point: java -cp target/l2exlauncher-<version>.jar \ org.l2explorer.launcher.backend.Controller \ -cdn NC_SOFT_AMERICA \ -version 215 Use -help to list all available arguments. Main options: Option Description -cdn <source> Client or CDN source. -version <n> Patch/version to download. -last_version Query the current version without downloading the client. -path <dir> Output directory. -download_mode <mode> ALL_MEMORY, HYBRID or ALL_TEMP. -restore Reuse existing valid files. -hash Validate files by hash. -size Validate files by size. -source_compare <dir> Compare against or seed from a local copy. -help Display all arguments. The equivalent version query is: java -cp target/l2exlauncher-<version>.jar \ org.l2explorer.launcher.backend.Controller \ -cdn NC_SOFT_AMERICA \ -last_version Using java -jar target/l2exlauncher-<version>.jar -last_version currently opens the graphical launcher instead of running the CLI action. Third-party notices The distribution contains or embeds the following third-party components. Their licenses remain applicable to those components and do not change the license of the L2ExLauncher source code. Component Version / package License or status ConfigFieldParser libs/ConfigFieldParser.jar Internal companion library distributed under this project's MIT terms. dom4j 2.1.4 Plexus license, a BSD-style permissive license. Copyright and license notices must be retained when redistributing the component. JSON.simple 1.1.1 Apache License 2.0. XZ for Java 1.9 Public domain, as stated by the bundled XZ licensing material. FlatLaf 3.5.4 Apache License 2.0. The source JARs supplied in libs/ are included for reference and correspond to the respective binary dependencies. When redistributing the application, retain the applicable notices and license texts for these components. Configuration The main configuration files are: config/Main.ini config/launcher-config.xml Main.ini defines default values, while command-line arguments take precedence over configuration values. The launcher may store local state, catalogues and hashes in db/. Output directories and build artifacts are not part of the versioned source code. Supported sources Source Description NC_SOFT_JAPANESE Lineage II client for Japan. NC_SOFT_AMERICA Lineage II client for North America. NC_SOFT_TAIWAN Lineage II client for Taiwan. NC_SOFT_KOREAN Lineage II client for Korea. FOUR_GAME 4game/Innova distribution. UP_NOVA_LAUNCHER UpNova-based private servers. AKUMU Akumu/Anubis-based HTTP mirror. Diagnostics and tests The project includes local development tools for testing manifest generators, checking URLs, querying versions and comparing sources. These tools are kept locally and are not part of the main distribution. Queried versions are launcher patch versions and do not necessarily correspond to Lineage II protocol numbers. Project status The launcher is under active development. Distribution sources, manifest formats and regional services may change as providers update their clients and endpoints. https://github.com/UnistudioInova/L2ExLauncher
  2. Why doesn't anyone insist on Navmesh? Think about it... What's the point of the server implementing Navmesh if the client doesn't support it? I already said, go study Unreal Engine a bit, especially the modifications made by NCSoft, and stop embarrassing yourself with AI-powered apps. and what the other point, made a SERVER for support it? You showed up on the scene yesterday and want to act like a know-it-all, insisting on something you clearly have no clue about... Last time I waste my time.
  3. Why would I say anything to actually help this failed project?
  4. What I’m saying is that not only did you not build this in a single night, but it wasn’t done using ChatGPT, and certainly not in just one day. I could spend hours here listing all the issues the generator itself has, such as failing to respect boundaries, the 256x256 error, the lack of support for heightmaps, WorldZ, Water is wrong, and so on. but I’m not even going to waste my time. Your generator looks like a copy of L2MapConv, and it’s likely the same map extractor currently used in the L2JMobius project, mabye a leaked one Because you don’t know the context in which he did that... and this app dont work as expected, far far away from it
  5. Are you saying you did it in just 1 or 2 prompts, just to grab some attention, even though this has already existed for months, or perhaps even years? Did you get tired of selling the app?
  6. The problem is that your generator doesn't work, that’s all.
  7. Of course he did it in two commits... Only a sucker would believe it was that easy to create a geodata generator that actually produces something useful, rather than just a pile of trash.
  8. Of these guy's like Williams, dont use a new version of L2JMobius in CENTURIES... People sure know how to badmouth others, but when is someone actually going to do something "BETTER"? And before you claim yours is better, prove it with benchmarks—or else shove your opinion, you know where.
  9. To Finish this, because it's need a explanation 1. “I come to your forum” — It's the L2JMobius forum, not mine. I'm a contributor, not the owner or the maintainer responsible for deciding which fixes get committed. 2. “Which is why I left” — That's not an accurate account of what happened. You may have left voluntarily once, but you were also banned from the Discord server three times after repeatedly returning and causing the same disruptions. Those are not the same thing. 3. “You personally reply and reject that it works” — I asked how a negative withdrawal could be performed and later requested a demonstration of the claimed exploit. At no point did I reject the patch or claim the vulnerability was impossible. Asking for evidence is not the same as rejecting someone's work. 4. “You leave it unpatched for days” — I don't make that decision. Whether and when a patch gets committed is entirely up to the project maintainer, not me. 5. “You challenge me to post a video” — Yes, I asked you to demonstrate the exploit. You interpreted that as a rejection of your work, which it wasn't. Requesting proof of a claimed exploit is a perfectly reasonable part of technical discussion. 6. “Asshole-ness is a mutually contracted disease” — You're responsible for your own behavior, just as I'm responsible for mine. Disagreeing with you or questioning your claims doesn't justify personal insults. If you believe I've treated you unfairly, address what I actually said rather than making my behavior an excuse for yours. And one question remains unanswered: why did you publicly disclose the exploitationmethod before the fix was released, after previously saying you wanted to avoid harming the project? The vulnerability was real, the fix was accepted, and the commit was published. I have no problem acknowledging any of that. My disagreement has never been about whether the bug deserved to be fixed. It's about how you've handled the discussion and repeatedly misrepresented my role in it. I have nothing against you personally. My issue is with the way you conduct yourself in these discussions. And no, you're not obligated to prove anything to me. However, when you make a technical claim, the burden of proof is on you. You cannot reasonably expect others to accept your claims without sufficient evidence. Questioning a claim is not the same as rejecting it, nor is it a personal attack. This isn’t about fanaticism; it’s about pushing back against the completely senseless attacks constantly leveled at the project as a whole. It’s always the same thing: they badmouth it, claiming the project is worthless—yet the very same people criticizing it are the first in line to download a leaked version. Enough is enough. This discussion has dragged on far too long over something that ought to be straightforward; if you’re going to submit a bug report, you should at least do it properly.
  10. As if I’m the one hiding behind alt accounts just to get attention. Anyway, congratulations on the commit—that’s what you wanted, right? P.S. Why did you edit your last reply? It’s pointless; it’s already quoted right there, in case you hadn’t noticed. EOF
  11. You initially claimed you didn't want to disclose the exploit because it could harm the project. So why did you later decide to publish the exploitation method publicly, before the fix was released? What changed? My issue isn't with the bug itself, but rather with how it was discovered. I shouldn't just assume that the bug actually works; if it was an AI that discovered it, then that is precisely the context in which proof becomes mandatory. And another thing: why don’t you start by opening threads detailing all the bugs you claim to have discovered, instead of broadcasting vulnerabilities on an open forum? Why do you expect recognition beforehand? That’s not the logical order of things—you provide actual help first, and only then do you earn recognition. That’s how things work in the real world.
  12. First of all, I never challenged you at any point. Second, congratulations—this is what you should have done from the start: shown how it worked, how to exploit it, etc. Now, let’s look at the facts: The flaw requires the person to be the OWNER of the castle. It requires the use of third-party programs or a modified client—and most private servers don’t even allow the use of modified clients, thanks to their anti-cheat systems. Are you honestly certain that a castle owner on a private server would risk losing their account just to pull off this exploit? They’d have to be a complete idiot. You’ve spent months going on about how you discovered a bug that has ZERO impact on the actual gameplay—congratulations. I’m not saying that flaws are bad or that they shouldn’t be fixed—in fact, the flaw *was* fixed. What I’m saying is that you’ve been harping on the same point for months, even though the issue had already been resolved in the closed branch. It’s the prerogative of those who maintain the code to fix things however they see fit, don’t you think? And learn this: when you report a bug, you MUST: 1- Report the bug (obviously) 2- Explain in detail how the bug occurs 3- Prove that the bug actually happens And instead of contributing to the project through the proper, public channels, you chose to turn this into a whole circus—I’d just like to understand why... It’s a good thing everyone in this thread will get to see who the "asshole" is.
  13. Already fixed in subscriber version, but this bug report is classified as "Invalid" because since the author did not explain the method in detail, the validation flaw does indeed exist—but that alone does not prove it is possible to duplicate adena or any other item by exploiting said flaw. It looks like yet another AI hallucinating a vulnerability, then deducing that it could be used to exploit a different vulnerability. No have proofs in video or a detailed way to reproduce the potential failure Go find something else to do, Baldurian; you don’t even know how to exploit the flaw you reported yourself.
  14. Galagard changed their profile photo
  15. Where did you crawl out from to start insulting me in your very first post? If you can't accept the truth about the majority of L2J forum users, that's your problem. 90% of the people here talk a big game but have zero ability to actually fix the things they criticize and claim are easy; if they did, the issues would already be resolved, and GitHub/GitLab/whatever would be full of these "magic solutions." You're just another guy spouting an opinion pulled out of the AI's ass—not even your own.
  16. Most people here talk a load of crap and keep using it anyway... it’s the very definition of hypocrisy. No one who stopped by to criticize is going to "fix" anything, for a very simple reason: they don't know how...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.