
Bumble
Legendary Member-
Posts
146 -
Credits
0 -
Joined
-
Last visited
-
Days Won
6 -
Feedback
100%
Content Type
Articles
Profiles
Forums
Store
Everything posted by Bumble
-
Request L2Homage; Making L2 Modding Accessible
Bumble replied to Bumble's question in Request Server Development Help [L2OFF]
Quick update: Sets seem to be fixed now: We still need to test if fixed npc positions work. After that works, first version of L2H will be made available. It may not be today, but it's very soon. -B -
Request L2Homage; Making L2 Modding Accessible
Bumble replied to Bumble's question in Request Server Development Help [L2OFF]
Progress Update: I've mostly been sharing updates on the Discord channel and privately with Weedy, but it may be a good time to share some news here again. L2H is coming along nicely. Weedy has been very helpful with testing, and together we've eliminated a lot of crashes and bugs. There has been a lot of updates since my last post here, too many to keep track of. From what we can tell, everything seems to work completely, except for two things: Set description text Custom items that are part of a set, aren't showing up correctly when reading the chest armor item description text. Set bonuses seem to activate regardless of amount of set items equip. Fixed positions for npc spawns. NPCs seem to not spawn at the fixed position, even though exported files indicate that that should be the case. We're currently trying to fix those two issues. When they're fixed, the first test version will be shared. I expect to share later this week. We're able to create custom copies of any weapons, armors, misc items, sets, npcs, spawn areas and droplists with a single click of a button, and everything loads into the client and server files crash-free. There's also a few new features that I haven't mentioned here before: L2H now reads L2.ini for easy server address IP editing. A toggle to choose to only export custom spawn areas. Create your own empty world canvas with one click. Here's a few screenshots from testing, courtesy of the always helpful Weedy: I think I talk for both Weedy and I, when I say we're excited to see what people will make with this tool. There's still a lot of ways L2H could crash or bug out, but with more testers, we can find the issues faster. Stay tuned, -B -
Guide Creating Monsters Properly (With Attack Effect And Sound)
Bumble replied to GLO's topic in Client Development Discussion
Replying to read :) -
Request L2Homage; Making L2 Modding Accessible
Bumble replied to Bumble's question in Request Server Development Help [L2OFF]
I've finished adding some initial input proofing. I'm sure there's some issues to be found still, but if the modder just knows where to enter text and where to enter numbers, it'll be fine. I'll fix it as it comes. I'm moving on to testing as soon as I can. When tests are successful, I'll share the current version. Again, if anyone has a test-server I can access, that would be very helpful. Thanks, -B -
Request L2Homage; Making L2 Modding Accessible
Bumble replied to Bumble's question in Request Server Development Help [L2OFF]
Progress Update: - Massively improved feedback from log panel - Implemented loading numbers for spawns, both original and custom - With help from @sepultribe, I implemented automatic client encryption and decryption of files. - With the same approach as used for encryption/decryption, L2H now calls an assembler. This turns the decrypted files into editable txt files. The dissasembling and assembling is also automated and executed when user clicks export. - Reworked directory structure. Now there's a Data and an Export folder. - Data contains 4 folders: Decrypted client files Encrypted files are automatically decrypted, disassembled and placed here for L2H to access. Encrypted client files User places .dat files here, untouched. They will only be used the first time L2H is run, to cache a data baseline. L2H Contains all custom data the modder inputs, as well as pointers to droplists, npcs, spawns etc. Server Contains all the relevant .txt files from the server Script folder - Implemented confirmation boxes so you don't end up exporting when you don't want to. - Changed NPC Name ID Generation from reusing the number ID, to a more tangible name ID based on the clone source. - L2H now requires the .dat files to be available in the "Data/encrypted client files" folder, instead of the .txt files. - Any changes made without exporting, will still be saved in the txt format. Below is a screenshot of the completed loading process and export process: I'm happy with the progress! I can now copy in the .dat files and the server script files, click Load All and start modding right away. I still need to implement some delete and remove functionality, but everything else seems to be working so far. If you're curious, it takes about 2 minutes and 45 seconds to load everything. It takes 5 seconds to save, a bit more when you have to encrypt data. L2H uses a little less than 800mb RAM right now. Everything "heavy" is now parsed, except for AI (which is an entirely different beast). When delete/remove is implemented and I have access to a server to test some exported script files on, where I can confirm they work, I'll share a test version for people to break. I'll start work on parsing smaller .dat, .ini and server script files after that. It's kinda silly that I still haven't added l2.ini. EDIT: I had a little extra spare time left. Removing spawn areas and npcs now seems to work. All that's left now is to test exports on a server, and provide some input proofing. -B -
Request L2Homage; Making L2 Modding Accessible
Bumble replied to Bumble's question in Request Server Development Help [L2OFF]
That sounds good sepultribe, thanks. The file extensions L2H will be handling are .dat and .ini, at least for a long time. I don't see other file extensions being relevant for now, but let me know if I'm wrong. -B -
Request L2Homage; Making L2 Modding Accessible
Bumble replied to Bumble's question in Request Server Development Help [L2OFF]
Thanks, that works! It also encrypts the l2encdec.exe and the dlls though, any way to prevent that? EDIT: Nvm, I got it. This works: for /f "usebackq delims=|" %%f in (`dir /b "%~dp0\*.txt"`) do l2encdec -e413 %%f "%~dp0enc\%%f" Thanks for the help -
Request L2Homage; Making L2 Modding Accessible
Bumble replied to Bumble's question in Request Server Development Help [L2OFF]
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? -
Request L2Homage; Making L2 Modding Accessible
Bumble replied to Bumble's question in Request Server Development Help [L2OFF]
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: 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 -
Request L2Homage; Making L2 Modding Accessible
Bumble replied to Bumble's question in Request Server Development Help [L2OFF]
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: 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 -
Request L2Homage; Making L2 Modding Accessible
Bumble replied to Bumble's question in Request Server Development Help [L2OFF]
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. -
Request L2Homage; Making L2 Modding Accessible
Bumble replied to Bumble's question in Request Server Development Help [L2OFF]
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 -
Request L2Homage; Making L2 Modding Accessible
Bumble replied to Bumble's question in Request Server Development Help [L2OFF]
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. -
Request L2Homage; Making L2 Modding Accessible
Bumble replied to Bumble's question in Request Server Development Help [L2OFF]
@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 -
Request L2Homage; Making L2 Modding Accessible
Bumble replied to Bumble's question in Request Server Development Help [L2OFF]
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. -
Request L2Homage; Making L2 Modding Accessible
Bumble replied to Bumble's question in Request Server Development Help [L2OFF]
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. - 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: - 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 -
Request L2Homage; Making L2 Modding Accessible
Bumble replied to Bumble's question in Request Server Development Help [L2OFF]
Thanks Eressea. I'll use the npcMakerEx for now then, to make sure it works for future changes. Real life is going to be busy for a while now, but I'll get back to this project when I have spare time. It's progressing nicely. I'll share once spawn system is functional. -
Request L2Homage; Making L2 Modding Accessible
Bumble replied to Bumble's question in Request Server Development Help [L2OFF]
@Weedy That is correct. The NPC spawns in the boxed zone, defined by the coordinates you see in the npcpos file. I haven't followed the development of L2j closely, but that was a huge difference for a long time; L2j would use static spawn points (npcs always spawning on same locations). It felt so weird, you could just circle the same 3-4 spawnpoints to maximize your grind, and the NPCs looked so static, as if the world wasn't "alive". @sepultribe Yes, that's correct. Although it wouldn't be creating from scratch. As with weapons/armors/npcs/droplists, it makes a lot more sense to clone existing ones. The main issue with server-side spawn areas, is that there are no indicators for layers. We can't know if a spawn area is on the 2nd or 3rd floor of cruma tower for instance. I guess, if you went through and compared the different depths for each layer, you could find the threshold points, but that's a massive amount of work for very little gain. If someone actually has the data for this, or wants to go through the trouble of looking through all the geodata files to write down the minZ/maxZ values, I can implement it. But it would take days to get right, I imagine. Instead, I'm suggesting that you grab a spawn area that you know is on the correct layer. With this tool, you'll be able to clone it, then move it to where you want the spawnzone to be. That way, we know it'll be on the right layer, you're only adjusting the name of the spawn area, and the XY positions of the polygon. I'm currently trying to figure out the exact difference between npc_begin and npc_ex_begin. @eressea, do you know why there are these two distinct npc makers? A lot of places, they seem to spawn the same types of NPCs, and I don't really understand why one is chosen instead of the other. -
Request L2Homage; Making L2 Modding Accessible
Bumble replied to Bumble's question in Request Server Development Help [L2OFF]
Update: -World maps are loading in correctly -Spawn territories are loading in correctly -Layers are working and selectable, switching to correct image upon button press -polygons are shown precisely and correctly -All NPCs in selected spawn territory is loaded into NPCs list correctly I'm currently evaluating my next steps. The properties per npc varies, so the original idea with just a small section for properties on the right, is not going to work. The user needs access to more variables. I'll have to come up with another design. Also, the NPC makers all depend on specific AI. The default ones are nice and easy to work with, but some of them are very specific. Example: If the user starts adding NPCs to a spawn area with ai 'royal_req_next_maker', it might not show up ingame as intended. I need a way for the different AIs to be visible and understandable. I'm considering limiting spawn system to default AI maker; which is the most commonly used one anyway. I can expand on the spawn system later, when I start tackling AI. Without all the special AI cases, L2H still allows modders to spawn whatever they want wherever. It just doesn't support events or boss phases etc.... yet. Maybe down the line, I'll allow users to create zones themselves. It should be relatively simple, since I already have the whole coordinate system algorithm in place. I'm going to reconsider the design for now, let me know if you have any ideas. I need it to contain more editable fields, and support buttons for eventual terrain drawing on the map. -B -
Request L2Homage; Making L2 Modding Accessible
Bumble replied to Bumble's question in Request Server Development Help [L2OFF]
Progress update: World blocks are loading in correctly, and selecting a block loads the correct radar map. Selecting a spawn area draws a polygon on the radar map, showing the location or area of the spawn. Some edge cases are not loaded correctly yet, I'm working on that. There are some scaling issues with the polygons for now, but full screen mode seems to work. I'll have to revisit my calculations. Here's an example of all the spawn areas in Execution Grounds: It's getting there, but still very buggy. When I'm happy with how the polygons behave, and when I'm sure all the correct areas are loaded in, I'll move on to loading in NPCs. I'm off for today, -B -
Request L2Homage; Making L2 Modding Accessible
Bumble replied to Bumble's question in Request Server Development Help [L2OFF]
Thanks sepultribe, that makes a lot of sense. That was the last info I needed to parse the npcpos file completely. I'll start implementing the info into L2h, then I'll start editing and exporting functionality. -B -
Request L2Homage; Making L2 Modding Accessible
Bumble replied to Bumble's question in Request Server Development Help [L2OFF]
Weedy, that's exactly what I was looking for. Good find! I'm still looking for some info on the different database values (dbname, dbsaving), but the info you posted takes me a long way. Thanks! -B -
Request L2Homage; Making L2 Modding Accessible
Bumble replied to Bumble's question in Request Server Development Help [L2OFF]
Progress update: Spawn areas are parsing and loading correctly now. I'm working on the different variables for each npc spawn. I'm curious what information is stored for NPCs on the database, and I was hoping someone in here could help me out. Here's an example: npc_ex_begin [raid_boss_von_helman] pos={{59331;-42403;-3003;0;20%};{59709;-42310;-3003;0;20%};{59717;-41974;-3003;0;20%};{59333;-41858;-3003;0;20%};{59047;-42165;-3003;0;20%}} total=1 respawn=3hour respawn_rand=1hour dbname=[raid_boss_von_helman] boss_respawn_set=yes npc_ex_end 'raid_boss_von_helman' is the ID. Then comes the position, following pos={. But why does this one suddenly have a percentage in his coordinates? What does the 20% mean? after that comes the total number of spawns alive at any time, which is obviously set to 1. Then respawn time, self-explanatory. Then comes respawn_rand. Is that amount of time it can deviate from respawn time? So this guy can spawn every 2-4 hours? Next is dbname, referencing an entry in the database. What exactly is stored for this guy in the database? Or any other NPC with a reference to the database? Is the entry created when the server is installed, or is it created when the npc is loaded? boss_respawn_set is just if the npc is a boss I assume. Regarding the structure; it changes a bit depending on the npc. Some have a lot of variables, others have a few. Unlike all the other script files I've parsed, there is no empty space between the variables when one is skipped. It's just not there. Can I assume that npcpos.txt is imported different, only reading which variables are actually applied? So if a variable isn't mentioned, I don't have to account for it? Thanks, -B -
Request L2Homage; Making L2 Modding Accessible
Bumble replied to Bumble's question in Request Server Development Help [L2OFF]
Progress update: Delete functionality is just too boring to focus on right now. I felt like I was falling asleep, and I thought "You know what? I don't have to do something this boring right now". So I moved on to the spawning system. I'm looking at the npcpos file now, figuring out the structure. I think I'll have some questions about a few of the variables. That's for later though. The Item/npc add/editing functionality works now, from what I can tell. It exports it correctly too, though I still need a server to test on. I'll get to that when I'm done with the spawning system. The initial spawning editor looks like this: The different lists will contain the following info: Maps: ID of each block in the world (for instance 20_21 for Cruma). I think I'll parse them with easier names to recognise instead of numbers, since there's not that many. Selecting a map loads spawn areas. Spawn areas: List of each spawn zone in the selected map. Selecting a spawn area will draw a polygon on the map, representing the area. NPCs: Shows which NPCs are set to spawn in the selected spawn area. Properties: Exposes the different variables for the selected NPC, for easy editing. Map 0 - Map 6: Sometimes each map has several layers - at most 7. There are no identifiers for the terrain zones, so if the polygon doesn't make any sense, switch to another map to see the overlay on another layer instead. Add Npc / Remove Npc: Self explanatory. I'm off for today! -B -
Request L2Homage; Making L2 Modding Accessible
Bumble replied to Bumble's question in Request Server Development Help [L2OFF]
Progress update: I've been working on droplists again again again again (cont.). There are so many cross references, every time I edited a cell, something got lost somewhere. I think I've squashed the bugs for now, but there could be more. I'm finally ready to move on to delete functionality though. Hopefully that won't take as long! I also created a discord channel. If you feel like joining, here's the discord invite link: https://discord.gg/97yAsCA Let's see if it takes off, I'm open to suggestions. Also, I'd like some help maintaining the discord. I really don't care too much about people misbehaving, unless it starts taking over the channel.