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:

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

 

 

  • Like 1
  • 0
Posted (edited)
1 hour ago, Bumble said:

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

 

 

I think % value there is a chance that an NPC will spawn on each of the specified pos={. It has 5 values, 20% each, 100% spawn rate total. Other NPCs that have this % value, also have a total sum of 100% depending on the number of coordinates.

 

E.g. Uruka:

 

npc_ex_begin    [uruka]    pos={{3075;-10966;-3650;0;30%};{5202;-11331;-3650;0;30%};{5225;-8439;-3550;0;40%}}

 

3 values with 100% total.

 

About respawn_rand, I found this topic on L2Shrine with replies from @eresseahttps://forum.l2shrine.com/topic/1622-respawn-of-world-bosses/, where she describes it in more detail and with a formula! :) There are also other options mentioned there, and I saw a couple of other ways it may work on different servers; but I think it can also depend on whether it is java or off platform.

 

Now, dbname=[ , not so sure... Looks like some specific NPC ID, bosses and NPCs such as siege units have it mostly; monsters spawning on a certain territory don't usually have that. So a bit hard for me to say for sure to what and where it references to.

 

Edited by Weedy
  • Like 1
  • 0
Posted (edited)

Also, found one utility, not sure if it is available somewhere here on MC, called NpcPosMaker. It has several features plus a radar which helps with the visualisation/finding the value for the direction NPCs are facing. 

 

If it would be of any help, I can share it here.

Edited by Weedy
  • 0
Posted

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

  • 0
Posted (edited)
1 hour ago, Weedy said:

Also, found one utility, not sure if it is available somewhere here on MC, called NpcPosMaker. It has several features plus a radar which helps with the visualisation/finding the value for the direction NPCs are facing. 

 

If it would be of any help, I can share it here.

 

yeah share it if u can

 

1 hour ago, Bumble said:

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

 

RBs/(CH)Siege NPCs time of death gets written in the db, probably because of a different way to calculate respawns between the normal npcmaker and npcmaker_ex and the need to reestablish a RB/(CH)siege after a server crash and continue where it was left at.

 

dbname should be about what value to put in the id column of the db table responsible for keeping that kind of info and the dbsaving should be about what data to save about that npc, the ones I've seen are time of death, position and a generic parameters thing which I don't have a live server running atm to check what is about (PC name that killed that NPC could be one param, HP/MP values of the NPC another, etc),

Edited by sepultribe
  • 0
Posted

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

  • 0
Posted

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:

GqiDDg6.jpg

 

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

  • Upvote 1
  • 0
Posted (edited)

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

Edited by Bumble
  • Upvote 1
  • 0
Posted (edited)
On 1/25/2019 at 5:25 AM, Bumble said:

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:

GqiDDg6.jpg

 

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

Thanks, Bumble! So cool :) I have also a question, if am I understanding it correctly, that those spawn areas are the ones specified as;

 

territory_begin

npcmaker_begin

npc_begin

npcmaker_end

 

So, if we are looking at EG, as on the screenshot above, let's take mandragoras, for example:

 

territory_begin    [dion02_2122_19]    {{41756;149052;-3894;-3094};{41136;151006;-3894;-3094};{40160;151658;-3894;-3094};{38625;151563;-3894;-3094};{36644;150004;-3894;-3094};{36000;148753;-3894;-3094};{40615;148333;-3894;-3094}}    territory_end        
npcmaker_begin    [dion02_2122_19]    initial_spawn=all    maximum_npc=6        
npc_begin    [mandragora_sprout]    pos=anywhere    total=2    respawn=35sec    npc_end
npc_begin    [manadragora]    pos=anywhere    total=4    respawn=35sec    npc_end
npcmaker_end    

 

Meaning that the spawn consists of 6 npcs max with 35 sec respawn time, 4 of which are standards and 2 are sprouts; and then the spawn area is identified by coordinates as the corners between which the spawning happens?

 

And when you mention allowing users to create zones themselves, do you mean creating these spawn areas, as above?

Edited by Weedy
  • 0
Posted (edited)

u have the territory which is a 3d space defined by multiple x/y/z(min&max) coordinates, at least 3 are needed.

 

and yeah I guess with this tool you will be able to add coordinates inside the brackets of the territory field

Edited by sepultribe
  • 0
Posted (edited)

@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.

Edited by Bumble
  • 0
Posted
1 hour ago, Bumble said:

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.

 

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

  • Thanks 1
  • 0
Posted (edited)

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.

Edited by Bumble

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



  • Posts

    • I'm using Myext64 HF and recently tried to replicate the "br_xmas09_event" Raising Rudolph Event. Detailed event information can be found at https://legacy-lineage2.com/news/_rudolf_the_red.html After configuring .eventdata.xml and starting the server, t  server log shows: 12/02/2025 15:39:01.809, [NO_ERROR] SpawnEx2 [br_xmas2009_invisible][schuttgart20_npc2213_xs03m1] [1][0][0][0][0][346796390] 12/02/2025 15:39:02.057, DummyPacket received from L2Server 12/02/2025 15:39:02.058, server socket close 312ac(f0820224) error(997) 12/02/2025 15:39:02.058, [CallStack][tid:0][tick:2][0] Begin 12/02/2025 15:39:02.058, [CallStack][tid:0][tick:2][1][0] void __cdecl IOThreadCallback::IOThread_common(void) 12/02/2025 15:39:02.059, [CallStack][tid:0][tick:2][2][1] void IOThread_common 1 12/02/2025 15:39:02.059, [CallStack][tid:0][tick:2][3][2] void __cdecl CIOSocketEx<class CIOBufferEx<16384> >::Close(void) 12/02/2025 15:39:02.059, [CallStack][tid:0][tick:2][4][3] void __cdecl CServerSocket::OnClose(void) 12/02/2025 15:39:02.059, [CallStack][tid:0][tick:2][5] End l2server log: 12/02/2025 15:39:02.112, npc server closed(127.0.0.1) error: 64 read buffer size: (server:0 npc:0) 12/02/2025 15:39:02.112, [NO_ERROR] L2Server is under protection mode!!! 12/02/2025 15:39:02.112, [NO_ERROR] L2Server is under protection mode!!! 12/02/2025 15:39:02.112, [NO_ERROR] L2Server is under protection mode!!! 12/02/2025 15:39:02.131, dwTime[0] < 80 !!!!!!! 12/02/2025 15:39:02.131, [CallStack][tid:7][tick:1][0] Begin 12/02/2025 15:39:02.132, [CallStack][tid:7][tick:1][1][0] void __cdecl IOThreadCallback::IOThread_common(void) 12/02/2025 15:39:02.132, [CallStack][tid:7][tick:1][2][1] void IOThread_common 1 12/02/2025 15:39:02.132, [CallStack][tid:7][tick:1][4][3] void __cdecl NpcSocket::OnClose(void) 12/02/2025 15:39:02.132, [CallStack][tid:7][tick:1][3][2] void __cdecl CIOSocketEx<class CIOBufferEx<16384> >::Close(void) 12/02/2025 15:39:02.132, [CallStack][tid:7][tick:1][5] End 12/02/2025 15:39:31.767, server closed(127.0.0.1) Error: 64 Read buffer size: (server:0 npc:0) 12/02/2025 15:39:31.768, [NO_ERROR] Logout All Characters : 1   The NPC server sent a packet to the L2 server while generating the br_xmas2009_invisible game NPC server, and the NPC server subsequently crashed.     After some digging, I found a clue in a very old MXC post, but the fix was for the GF version. The whole problem is in l2server side support for NPC function CreateOnePrivateNearUser. It sends CreatePacket but Koreans made some changes in it (added instance ID) so it got broken. As Santa event is the only AI that uses this function, they probably don't know about it    So is there a way to fix this problem, specifically for Myext64 HF? I'd be happy to buy him coffee. set_compiler_opt base_event_type(@NTYPE_NPC_EVENT) class ai_br_vital_manager : default_npc { parameter: int br_vitality2010_EVENT_ID = 20108888; handler: EventHandler CREATED() { } EventHandler TALKED(talker) { ShowPage(talker, "br_vi_stevu001.htm"); super; } EventHandler GIVE_EVENT_DATA(talker, i0, i1, i2, i3, i4) { i3 = i2 / 3600; i2 = i2 - i3 * 3600; i4 = i2 / 60; i2 = i2 - i4 * 60; if (i1 == 20108888) { if (i0 == 1) { CastBuffForQuestReward(talker, @s_br_vitality_day_1); CastBuffForQuestReward(talker, @s_br_vitality_day_2); ShowPage(talker, "br_vi_stevu002.htm"); } else { ShowPage(talker, "br_vi_stevu003.htm"); } } } EventHandler MENU_SELECTED(talker, ask, reply, c0) { if (ask == 50021) { select (reply) { case 1: CanGiveEventData(talker, 20108888); break; case 2: if (talker.level <= 75) { ShowPage(talker, "br_vi_stevu005.htm"); } else if (IsInCategory(@fighter_group, talker.occupation)) { CastBuffForQuestReward(talker, @s_wind_walk_for_newbie); CastBuffForQuestReward(talker, @s_shield_for_newbie); CastBuffForQuestReward(talker, @s_magic_barrier_for_adventurer); CastBuffForQuestReward(talker, @s_bless_the_body_for_newbie); CastBuffForQuestReward(talker, @s_vampiric_rage_for_newbie); CastBuffForQuestReward(talker, @s_regeneration_for_newbie); CastBuffForQuestReward(talker, @s_haste_for_adventurer); ShowPage(talker, "br_vi_stevu006.htm"); } else if (IsInCategory(@mage_group, talker.occupation)) { CastBuffForQuestReward(talker, @s_wind_walk_for_newbie); CastBuffForQuestReward(talker, @s_shield_for_newbie); CastBuffForQuestReward(talker, @s_magic_barrier_for_adventurer); CastBuffForQuestReward(talker, @s_bless_the_soul_for_newbie); CastBuffForQuestReward(talker, @s_acumen_for_newbie); CastBuffForQuestReward(talker, @s_concentration_for_newbie); CastBuffForQuestReward(talker, @s_empower_for_newbie); ShowPage(talker, "br_vi_stevu007.htm"); } break; case 3: c0 = GetSummon(talker); if (talker.level <= 75) { ShowPage(talker, "br_vi_stevu011.htm"); } else if (IsNullCreature(c0) == 0 && IsInCategory(@summon_npc_group, c0.class_id) && IsInCategory(@pet_group, c0.class_id) == 0) { CastBuffForQuestReward(c0, @s_wind_walk_for_newbie); CastBuffForQuestReward(c0, @s_shield_for_newbie); CastBuffForQuestReward(c0, @s_magic_barrier_for_adventurer); CastBuffForQuestReward(c0, @s_bless_the_body_for_newbie); CastBuffForQuestReward(c0, @s_vampiric_rage_for_newbie); CastBuffForQuestReward(c0, @s_regeneration_for_newbie); CastBuffForQuestReward(c0, @s_bless_the_soul_for_newbie); CastBuffForQuestReward(c0, @s_acumen_for_newbie); CastBuffForQuestReward(c0, @s_concentration_for_newbie); CastBuffForQuestReward(c0, @s_empower_for_newbie); CastBuffForQuestReward(c0, @s_haste_for_adventurer); ShowPage(talker, "br_vi_stevu009.htm"); } else { ShowPage(talker, "br_vi_stevu010.htm"); } break; } } } } Another one is about the " br_vitality2010_event event".   GIVE_EVENT_DATA is likely the only one in the activity AI script that uses this handle.      
    • Offtopic, personal attacks, probably too old to use that much memes and what's YOUR actual contribution to L2J, in order I laugh aswell ?   The main poster quotes my pack so I answer accordingly, while you advertise L2JFrozen in both of your posts - discontinued since 2014 (? 1132 rev), with none taking back the open source lead while anyone could.   If you're somewhat affiliated to hopzone, you probably packed way more money than me. Packs don't make any type of money (barely 100e/month) and if you would follow me, you would know there are ways to handle it or even getting paid.   Hope I was short enough, 🧂🤡.
    • Hi guys, this is a CMS im sharing for lineage 2 servers, im tired of the crap i see on new release servers. Dont let me start on the IA developed ones lmao.   📋 Description Free and open source template to create landing pages for Lineage 2 private servers. Designed with a dark fantasy theme and modern animations. ✨ Current Features This FREE version includes: Complete Landing Page - Professional design ready to use Multi-language Support - Spanish, English, Portuguese Dark Fantasy Theme - With animated UI elements Server Information - Rates, features, and rules Olympiad Ranking - Rankings display Download Section - For game client Skins and Animations Gallery Streaming Widget - Twitch/Kick integration Fully Customizable - Via configuration files ❌ Not Included in Free Version ❌ User Registration System ❌ Online Players Counter ❌ Donation Panel 💎 Premium Integrations IntegrationPrice Registration System $50 USD Online Players Counter $50 USD Donation Panel $50 USD   📧 Contact: https://gh0tstudio.com 🛠️ Tech Stack Technology    Version    Description React              19.2.0       UI Library TypeScript       5.8.2        Static typing Vite                 6.2.0         Build tool TailwindCSS   CDNCSS    Framework Lucide React   0.554.0         Icons i18next           23.16.0       Internationalization react-i18next   15.1.0        React bindings for i18n All documentation provided for AI AGENTS to make changes on the ui texts and so on. u can have a look on the cms fully working with donation panel, online count and register via: https://crmlineage2.vercel.app/ https://github.com/6h0T/CRM-LINEAGE2-FREE If u are in the lookings to develop a unique website for ur projects, u can dm me or contact me throw my socials on my profile. all code has encrypted references so any type of rebranding, copying or selling without authorization will result in take downs
    • Hello dude, i can help u out, i reached to u via DM, my studio is https://gh0tstudio.com i have worked with almost 40 brands on developing Private Lineage and Mu online servers, dashboard for vote pages and more. I sent u some examples too
    • L2 TARTARUS - HTML DESIGN       L2 KOMBAT - ANIMATED BORDER   L2 SERENITY - ANIMATED LOGO   L2 ARCANE - COMMUNITY BOARD     L2 AMERIKA - ADVERTISING BANNER   L2 ZERON - ADVERTISING BANNER  
  • Topics

×
×
  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disabled AdBlock