Jump to content
  • 0

Question

Posted (edited)

Hi,

 

I'm making this post to test the waters. If what I'm about to show you doesn't interest you, I'll take it as a sign to stop spending time on it. I've been hoping that the old adage "If you build it, they will come" holds true, but I think it's time to straight up ask for feedback. I've contacted a few people for possible collaboration, but none have shown much interest (which is completely fair).

 

I've been working on L2Homage in my spare time. It's not a quick project, and it will take a long time to complete. It will be done modularly, so it will be usable in stages. The first one is already functional, but I'm still doing tests.

 

What is L2Homage?

L2Homage is a modding tool meant to make modding L2 OFF files easier. It doesn't do anything you can't do on your own, by editing a handful files.

L2H is an extensive editing tool for both client and server files for Lineage 2 Epilogue. While still in development, the intention of this project is to provide users with a tool that’s capable of repurposing most of existing ingame content. This will allow users to rethink and reshape the world of Lineage 2, providing the hordes of burnt out players with new, exciting content, without having to spend hours learning how to manipulate the data structure. The hope is to see a bunch of unique, new game worlds appear, instead of relaunches of the same L2 experience we’ve all been through too many times to count.

 

How much will it cost?

L2H will be free, and eventually completely open source. This is not a project created for monetary gain, it’s solely meant to revitalize the stagnating server scene.

 

Which L2 version does it use and why?

L2H is meant to be free, so the server files should be as well. The most complete, freely available L2OFF files are the Gracia Final/epilogues files, and with Eressea’s extender, it feels nearly bug free. It’s a very strong, free base to build this project on. This tool would likely follow Eressea's extender. If she decides to upgrade L2 version, L2H would most likely follow.

 

When will it be done?

This is a side project with a single developer attached. It won’t be completed fast, but each milestone will be made available to the public, once tested and functional. The development will be modular, with each version providing new options. If you're interested in helping out, let me know.

 

Why are you making this post now?

L2H is meant to help users customize the world of Lineage 2. Every user has a different vision, and as such it’s valuable to gather not only critique, but feature requests and suggestions from anyone interested in the project. The development direction is not set in stone, and is open to change. It's also a test to see if such a tool is even desired. If people tell me this is a waste of time, I'll throw in the towel. There's no reason to continue working on something unwanted.

 

Which language is L2H developed in?

C#

 

How do I use L2H?

Install the L2OFF gracia epilogue server files and Eressea’s extender, then open L2H. There are 3 folders in the L2H directory; client, server and data. Copy the required server script files into the server folder and the decrypted client .txt files into the client folder. There is a .txt file in each folder, informing you of what goes where. Don’t touch the data folder, as it only keeps track of the work you’ve done so far. When you’ve placed the data files in the correct folders, open the application and go to the load/save tab. Click “Load All” and wait. When done, the other tabs have been populated with data, which you can edit freely. When you’re done editing, click “Save All”. If you don’t click save, your data isn’t exported. Now copy the modified files back where they came from. Client files need to be encrypted with an encryption tool again.

 

What does it look like?

Here are a few screenshots of the application in action. It’s still very barebone, but that will change in the future. Loading functionality:

image.png.9e37d5f9f0732ac8bc2b89cbfc2828dd.png

 

Weapons editing:

image.thumb.png.a025f82977580ce24ee8191200177e1e.png

 

Armors editing:

image.thumb.png.1d1696d8cd76299ba08461de62588782.png

 

Etc editing:

image.thumb.png.a7eeb22c4552cd53f320169fdb2019c4.png

 

Sets editing:

image.thumb.png.b940972f62ef82e891d9512546dc4a88.png

 

How does L2H work?

Decrypted Lineage 2 client files and server script files are structured in a very specific way, one that can be parsed and edited. When developers add or remove content to the L2OFF platform, they do this by hand. This often requires editing more files to add a single item. For instance, if you were to add a single weapon, you would have to edit weapongrp (client), itemname-e(client), itemdata(server) and item_pch(server). L2H does this for you with one input. There are a LOT of variables for items, most of which aren't relevant to the modder, and it's easy to mess it up. One wrong space, and your server won't run, or your item won't work. Instead of adding new items from scratch, modders choose a weapon to use as a template. L2H copies all relevant information, and exposes variables that are interesting to edit in an easily accessible grid view. When you're done editing, click export all to get the correctly formatted files. You can copy those directly into the server and client (client files need to be encrypted again).

 

Can I add custom models and animations?

If you want to add custom models, you will have to do that the old fashioned way. There is a lot more to adding new models to the game, compared to repurposing it. Completely new content like that, however cool it may be, is not the goal of L2H. That being said, once you’ve added the new content, you can use L2H to edit or copy it.

 

Why are you not planning to develop X?

If you have a feature request or suggestion, feel free to message me or comment in this post. The planned features are those that are absolutely possible to deliver. The limits of L2H is well known, and there won’t be an attempt to include features beyond those. If your suggestion falls within the possibilities of L2H, it will most likely get added to the list.

 

When will the next version be available?

When it’s ready. This is an ongoing project, and while updates may be far apart, it’ll be finished one day. The project uses no copyrighted info. It's all relying on reverse engineering the data structure. It only reads the data you feed it. Development will continue until all values available for change have been exposed. If I'm doing anything I shouldn't, please let me know. I have no intention of breaking the law.

 

Will you be running a server?

No. That's not my motivation.

 

Will it work for other versions of Lineage 2?

That’s not the focus of this project, so that’s not a compatibility that will be added. It will work with any version of Lineage 2 that uses the exact same data structure as Epilogue. Should a newer version of L2OFF be made available, there’s a slim chance L2H will be updated to fit that data structure.

 

Will it mess up my files?

Remember to keep backups. There can be bugs.

 

Can I delete items?

You can only delete items you’ve created yourself. If you start removing data from the client and the server, you’ll most likely run into issues. If you delete an item that exists in the game world, you might run into issues as well. It’s better to disable these from being acquired, and then remove them from players’ inventories.

 

 

What's in the current version?

Check the roadmap and version description below.

 

Version 1.0 - Items - Done

Adding, modifying or deleting weapons

Adding, modifying or deleting armors

Adding, modifying or deleting etc items

Adding, modifying or deleting sets

 

Version 2.0 - NPCs

Adding, modifying or deleting NPCs

Adding, modifying, deleting or assigning spawn points

Adding, modifying, deleting or assigning drop lists

Adding, modifying, deleting or assigning multisell shop lists

Adding, modifying, deleting or assigning specific AI

 

Version 3.0 - Items Continued

Adding, modifying or deleting recipes

Modifying item enchant success rate

Cell input options lists, to see which options you have per cell

Adding, modifying or deleting tattoos

 

Version 4.0 - World

Adding, modifying or deleting hunting zones (Won’t appear on map)

Adding, modifying or deleting zone names (Won’t appear on map)

 

Version 5.0 - Quests

Adding, modifying or deleting quests

Adding, modifying or deleting rewards

 

Version 6.0 - Raids

Adding, modifying or deleting Raid Bosses

Creating custom NPC behavior through interface

 

Version 7.0 - Core

Modifying the base attributes, hp, mp, regen etc of each class and race per level

Modifying the XP requirement per level

Modifying race and occupation description

Adding, modifying or deleting loading help tips

Adding, modifying or deleting system messages (“You carefully nock an arrow”)

Modifying server name

 

Version 8.0 - Pets

Modifying pet stats and attributes

 

Version 9.0 - Skills

Adding, modifying or deleting Skills

Modifying when and if classes learn different skills

 

Version 10.0 - Ingame Systems

Adding, modifying or deleting manor items

Adding, modifying or deleting fishing items

 

 

Let me know what you think,

 

-B

 

Edit: I'll leave this up for a few weeks and gauge the interest before deciding the future of the project. Thanks for your interest.

 

Edit2: It seems people are interested, so I'll continue developing this. I started a Discord for anyone interested: https://discord.gg/97yAsCA

 

Edited by Bumble
  • Like 2
  • Thanks 2
  • Upvote 8

Recommended Posts

  • 0
Posted

Progress update:

- Item name IDs are now accessible and editable through weapon/armor/etc tabs. Items still require a unique name id, so if you input an existing ID, L2H will generate a fitting one instead.  Before, the ID was simply the in game item name converted to lower-case, but that would be an issue if you want two items with the same name.

6DLESvD.png

- The item ID will be the one referenced in droplists, so call your item name ids something you can recognize.

- Saving now also creates and exports data to npc_pch (oops, forgot this one. I couldn't test on a server, so I didn't run into an error)

- Added more info and a simple log to the save/load screen:

PKS2hs5.png

- L2H now checks to see if you have the required files in place, before allowing you to load anything. All custom or generated files are not required before starting, as they will be created when needed.

 

I'm still thinking about the spawn approach, and I have something in mind. I don't have much time these days, so development will be a bit slower.

 

-B

  • Like 1
  • 0
Posted
On 1/26/2019 at 10:04 PM, eressea said:

 

There are two classes in L2NPC - NpcMaker and NpcMakerEx (which is derived from NpcMaker) so NpcMakerEx is maker with some extended functionality

 

I used to think that the difference between these two was the respawn time calculation but I don't think that's the case anymore.

  • 0
Posted

I may have some spare time today to work on the spawning system again.

 

Does anyone here know if it's possible to easily automate the encryption/decryption process? As the list of client files grows, it's taking some time to do it manually.

  • 0
Posted (edited)

a batch file that will encrypt/decrypt all dat files inside a folder can be made, if that's what u mean by automation

 

tell me if u need help with that

Edited by sepultribe
  • 0
Posted (edited)

@sepultribe

Yes, that's what I mean. I've been doing it manually so far, but if you could show me what a batch file looks like for decrypting and encrypting from/to 413, that would be very helpful.

 

 

Edit: Does anyone know if the order of npcmakers matter in npcpos.txt? I don't think it does, but I can't test right now. I know terrains have to be made before makers, which have to be made before npcs. But other than that, it doesn't matter, right?

 

Thanks,

 

-B

Edited by Bumble
  • 0
Posted (edited)

decrypt all files in folder:

for /f "usebackq delims=|" %%f in (`dir /b "%~dp0"`) do l2encdec -d %%f

 

encrypt all files in folder:

for /f "usebackq delims=|" %%f in (`dir /b "%~dp0"`) do l2encdec -e413 %%f

 

ps: we can change this to only output to encyrpted/decrypted folders, cos right now it will throw everything in the same one

 

ps2: l2encdec has to be either in the same folder as the batch file or inside system32

Edited by sepultribe
  • Thanks 1
  • 0
Posted

Thanks, I'll try to play around with that.

 

Progress update:

I'm able to export domains, spawn territories, npcmaker_begin and npc_begin. I still need to export npcmaker_ex_begin and npc_ex_begin, and then I'll move on to adding spawns on them through L2H.

 

I'll need to test the new output sometime soon. Even though it looks right, there could be issues when loading it into the server.

  • 0
Posted

Progress update:

- Npcpos info can now be exported correctly. It's a different encoding than the server uses (UTF-8 vs UCS-2), but I've removed all korean symbols that should cause issues. Will need testing to see if this causes issues.

- L2H now imports original npcpos.txt when running L2H the first time, just as with npcdata and droplists. This provides the spawn areas to clone.

- Cloning an area now works, although it doesn't clone the npc spawns. This is intentional. Npc spawns will be removable, but adding them to existing original spawn areas will not be supported for a while. This is due to the AI issues mentioned earlier.

 

Next steps are to export custom areas, and allow modders to place NPCs in custom zones. All npcs placed in custom zones will be using the default_maker AI at the moment. This will be expanded on later, when I dive into AI. The majority of NPCs already use default_maker. As far as I can see, this simply means there's no extra conditions to the spawn (random, event, siege etc). The npc will be placed in the world and is accessible on server start.

 

-B

  • Upvote 1
  • 0
Posted
On 1/29/2019 at 6:39 PM, Bumble said:

I may have some spare time today to work on the spawning system again.

 

Does anyone here know if it's possible to easily automate the encryption/decryption process? As the list of client files grows, it's taking some time to do it manually.

l2 file encryption is extremely simple , adding it to your app might be a smoother way to do it

https://github.com/acmi/L2crypt

^ java lib for all the l2 encryptions, should be easily portable to your language of choice

  • 0
Posted
4 hours ago, Anarchy said:

l2 file encryption is extremely simple , adding it to your app might be a smoother way to do it

https://github.com/acmi/L2crypt

^ java lib for all the l2 encryptions, should be easily portable to your language of choice

Hey that's pretty cool, thanks. I may spend some time porting this to C# a bit later, it would be a lot smoother.

 

I think for now, I'll stick to the batch file, just because it's faster. I want it testable soon.

  • 0
Posted

Progress Update:

- Spawn areas are now correctly copied and renamed. An npc_maker_ex is created and attached, ready to receive npcs.

- When selected, spawn area properties can now be edited in the UI in the top right corner. You can rename areas if you want to.

- When selected, all NPC properties can now be edited in the UI below the spawn area properties.

- NPC Properties amount has been increased, now all available fields are accessible to modders. The available fields can be seen in the screenshot below:

blu0mXg.png

 

 

Today was very productive. Next step is to implement adding/removing npcs and deleting areas, and to visually represent the required/optional properties for areas and npcs. There's also a few checks I need to implement, to prevent the modder from inputting data in a wrong format.

 

-B

  • 0
Posted

Progress Update:

- Npcs can now be added to spawn areas

- A popup appears with a dropdown list of all npc name IDs. Select through dropdown or start typing to search for a specific npc name ID.

- NPCs can only be added to spawn areas that have an npc_ex_maker attached. If an area doesn't have that, clone it first. A popup will inform you of this as well.

Here's a screenshot:

rxxYy0i.png

You can see the custom zones I've created in the bottom of the spawn areas list as well.

 

Next step is removing npcs and deleting areas. This is not as horrible as deleting droplists, so it should be done faster. When that step is complete, I'll move on to testing and input-proofing the property fields. I'd also like to implement a simple encode/decode batch option. @sepultribe How would you go about placing the encoded files in different folders? Is there anywhere I can read more about this? 

 

When that's done, I'm ready to share a testable version for feedback.

 

I also have a question about Npcpos. When NPCs have a fixed position in the world, they still have 4 coordinates. X,Y,Z and a 4th coordinate. What is that 4th coordinate? I assume it's not zmin/zmax, as it's a fixed position in space. Is it orientation?

 

Thanks,

-B

  • Upvote 1
  • 0
Posted (edited)

Unreal Units    Degrees
    8192           45
   16384           90
   32768          180
   65536          360

 

Yeah it's orientation or yaw or rotation or whatever you want to call it.

 

to place encoded files in a folder named "enc" below the folder that the batch file resides just change the

 

do l2encdec -e413 %%f

 

to

 

do l2encdec -e413 %%f %~dp0enc\%%f

 

batch files expect the folders to exist they can't create them automatically otherwise it will throw an error

Edited by sepultribe
  • Upvote 1
  • 0
Posted

Thanks @sepultribe, that works. Unfortunately, it doesn't allow spaces in the output path. For instance, my output folder is in E:\Lineage 2\L2H\enc, but running the batch file tells me that the output file is located at "E:\Lineage", which obviously results in no files. Do you know how to escape the path string?

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.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  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.




×
×
  • Create New...