Jump to content

Recommended Posts

Posted

Hello,

 

I'd like to present you my new event system. I originally planned to help and create this engine only for one server, L2Pride, but since their admin revealed himself as a lying bastard, I've decided to share this engine for free. The main reason which me brought to do so is the fact, that I can't find and solve all bugs alone. And of course, all ideas are welcomed.

 

This engine is based on hnoke_events.jar library. This will allow me to do frequent changes everytime I need to and the only thing you will need to do is download a new package with events. If you find any bug, please use the:

 

Bugtracker: http://hnoke.net/l2jevents/

And Forum, if you're interested or want to tell your oppinion: http://hnoke.net/l2jevents/forum

The download link has been disabled temporary.

(I'll release source codes for .jar library as well as a presentation video / full txt guide when I'm 100% sure that the engine works. If you're interested,

is a very old video from starts of this engine)

 


 

And now some informations:

 

The ingame administration, especially creating new maps and understanding which spawns do u need for each event, is a bit harder to understand. I'll post a guide about how to do it later, propably tommorow. Now I need to get some sleep.

 

Events:

- There are two kinds of events: Main (also called as Regular ones) and Mini events.

- Mini events are mostly events for single players / parties. They can nonstop run. Their engine works like it checks every X seconds for registered players and if it is possible, it automatically creates matches with them. There's also system that will make players can visit each event only once in X ms. For example, if you set this delay for 1v1 event  to 1200000, it will make that player has to wait at least 20 minutes before he can rejoin 1v1 event again.

- Main events are well-known events running globally for all players on the server (TvT, CTF, etc.). I'm now working on support for joining players even if the registration state already ended.

- Map system - you can create your own maps. Each event can have infinity ammount of maps, each map can have multiple spawns. Each spawn has it's type, cords and team ID. For example spawn with type Regular defines where the players will be teleported (their initial loc), type Buffer defines where a buffer will be spawned, type Fence will spawn a fence arround the spawn.

- There's registration npc - Event Manager. It's HTML is automatically changed, so when you disable/enable any event it will be refreshed also in npc's html.

- ... and much more. I can't remember what all have I added.

 

 

Ingame administration:

- The most advanced thing on this engine is it's ingame management - try to type //event_manage.

- Basically everything is configurable ig using an admin panel. There are configs (txt files) only for few things (for example buffer's ID) and even they will be soon moved to the admin panel.

- You can schedule multiple events, temporary disable/enable events, pause/skip all kind of delays delays (registrations, etc.), abort scheduled events, run you own events and so on.

- You can create your own maps. You can set map's name, events which will use it, add different spawns, config map parameters for each event.

- Configurable rewards for each position in the end of event.

- Soon, I'll add also support for Mini Event tournaments (1v1 tournament, Korean style tournament, etc.).

 


 

Green color are events, which should be working fine.

Orange color are events, which might contain some bugs so they are waiting for your feedback.

Red color are events, which aren't finished yet.

 

Aviable Main events:

- Team vs Team - classic 2-5 teams event.

- Capture the Flag - 2-3 teams (can't add more teams cause of the missing NPC flags).

- Deathmatch - everyone vs everyone, configurable respawn delay, multiple spawns, etc. Reward configurable for top 10 players.

- Team vs Team w/ VIPs - very simillar to classic TvT, adds a VIP player to each of teams. If the VIP is killed, it gives some additional rewards.

- VIP escort event - Defend and escort the VIP to the given position. This event will be completely reworked later.

- Zombies - At start of the event it chooses at least 1 random player (the count depends on the ammount of registered players) and transforms him into a zombie. When a zombie hits someone, he will be transformed into a zombie too. Event ends when only 1 player left in the survivor's team (and as I'm writing this, I realized that this way is stupid so I'll make it like the event ends when everyone is zombie. Also, right now, it rewards only the last survivor. I think this needs some rework too.)

- Mutant - At start it randomly chooses one player and transforms him into a mutant. The mutant has increased stats - look at skill ID 31300. If someone kills a mutant, then the mutant will untransform and the player which killed becomes new mutant. You can configure reward for for 10 players with highest ammount of kills made while they were mutants.

 

 

Aviable automatic mini events:

- 1v1 event - PvP event for single players. Player comes to the reg npc, registers and then if engine finds an opponent, it will teleport them to the random arena and starts match. The match itself is 10 minutes limited and has 2 rounds or eventually 3, depends on what was the score after second round.

- 2v2 event - Similar to 1v1, but you must find one friend to participate with you.

- Party vs Party - One round. No respawning. Fixed party size is of course configurable.

- Pt vs pt Korean style - On start teleports players to safe zones with buffer, gives them 1 minute to prepare for the match (buffs,..), then it teleports them to defined Regular spawns and begins famous continous 1v1 matches.

- Tower Crush - Event in style of retail Underground Coliseums, but it doesn't have to run in UColiseum map. Basically it's like a pt vs pt event, but players will keep respawning till their team respawn tower isn't destroyed or time limit. Winner is the team with higher ammount of kills.

- Raid boss hunt - Two teams, one RB usually in the middle of map. Event ends when RB dies and the team which gave most dmg to him wins.

- Survival Arena - One team. No respawning. Three rounds. The event will teleport players to defined Regular spawn, spawns buffer for like 60 seconds. Then monsters will attack in three wawes. The great thing on this event is that you can create infinity ammount of maps and define where each mob will be spawned and in which wawe will he attack players. Event ends when all players dies or all mobs are dead.

- Last Man Standing - For single players, configurable ammount of players in event (default is 5). It's like a deathmatch but w/o respawning. Configurable ammount of rounds and round ends when only one player is alive (and now he's rewarded with reward type 'Winner', this will be also reworked).

- Last Team Standing - Similar to LMS, but with configurable ammount of teams and configurable ammount of players in each team. This event isn't finished yet.

- Mini TvT - For single players. When registered players ammount reaches limit (configurable, default is 20), it starts a 10 vs 10 match with no respawning, but multiple rounds.

- There's also a Hitman event, but it is not finished yet. Try NPC ID 92007 if you're interested.

 

 


 

Installation: - tested on Freya

- Apply (better do manually) patch core_patch.diff to you core and dp_patch to you datapack.

- Copy hnoke_events.jar to your L2J server's lib folder and also to your GS eclipse project lib folder. Then add the library to your Eclipse GS and DP project's Java Build Path.

- Put this line:

<include name="hnoke_events.jar" />

into your build.xml file, below

<include name="netcon.jar" />

 

- Copy htmls to your datapack.

- Execute events.sql and custom_npcs.sql to your db.

- Add events.properties to your config file and edit them (especially your npc buffer's ID must be setted right). More important configs soon.

- Registration NPC ID is 92006, for admin management type //event_manage.

- If you got any problems visit the forum.

 

I do not recommend to use this engine on a live server for now.

Posted

I may understand wrong , but when everything will be done you will give us the source code ? , cuz rizel sell many of that events and you gonna give it for free or what

Posted

I may understand wrong , but when everything will be done you will give us the source code ? , cuz rizel sell many of that events and you gonna give it for free or what

 

well I guess that he dont want any kids to stole his codes and share them in another forums with their credits...

This is the best decision...

 

And what about rizel?

He is not the only one that can code that engines...

Posted

well I guess that he dont want any kids to stole his codes and share them in another forums with their credits...

This is the best decision...

 

And what about rizel?

He is not the only one that can code that engines...

+1 about this.

You dont know if its rizel source!.. rizel can check the code and look his own than we see if this person just Give for free.

 

I like this thanks. but if its true that its rizel source and you just edit than its *****

 

(sorry bad english)

Posted

well I guess that he dont want any kids to stole his codes and share them in another forums with their credits...

This is the best decision...

 

And what about rizel?

He is not the only one that can code that engines...

so what you should respect the guy cuz he code them to earn money and you want to share them for free why
Posted

Because he hates a fucktard leecher and as he said bastard the name ? Dav the chinesse l2 pride's admin.And I suppose he has already seen this topic as soon as I said he is a TOP leecher of our community who never gave credits about the people's work he represents them created by him and the children of his server absolutely believe him.

Posted

Copy hnoke_events.lib to your L2J server's lib folder and also to your GS eclipse project lib folder. Then add the library to your Eclipse GS and DP project's Java Build Path. <<<<<

 

hnoke_events.lib dosnt exist

?

 

any one can post better how install this?

 

Posted

Copy hnoke_events.lib to your L2J server's lib folder and also to your GS eclipse project lib folder. Then add the library to your Eclipse GS and DP project's Java Build Path. <<<<<

 

hnoke_events.lib dosnt exist

?

 

any one can post better how install this?

 

He meant hnoke_events.jar

Posted

meby i Read worng or somthing else, but i have freya but when i build in Eclipse i got errors

 

compile:

    [javac] Compiling 1516 source files to C:\Users\Administrator\workspace\L2_GameServer\build\classes

    [javac] C:\Users\Administrator\workspace\L2_GameServer\java\com\l2jserver\gameserver\GameServer.java:93: cannot find symbol

    [javac] symbol  : class ChangelogManager

    [javac] location: package com.l2jserver.gameserver.instancemanager

    [javac] import com.l2jserver.gameserver.instancemanager.ChangelogManager;

    [javac]                                                ^

    [javac] C:\Users\Administrator\workspace\L2_GameServer\java\com\l2jserver\gameserver\GameServer.java:425: cannot find symbol

    [javac] symbol  : variable ChangelogManager

    [javac] location: class com.l2jserver.gameserver.GameServer

    [javac] ChangelogManager.getInstance();

    [javac] ^

    [javac] C:\Users\Administrator\workspace\L2_GameServer\java\com\l2jserver\gameserver\GameServer.java:426: cannot find symbol

    [javac] symbol  : variable EventLoader

    [javac] location: class com.l2jserver.gameserver.GameServer

    [javac] EventLoader.loadEngine();

    [javac] ^

    [javac] 3 errors

 

BUILD FAILED

C:\Users\Administrator\workspace\L2_GameServer\build.xml:64: Compile failed; see the compiler error output for details.

 

Total time: 25 seconds

 

any one how to solve it?

Posted

I dont think that he copyed any part of my code. If he have so much freetime that he code all this thing and share it for free.. well then I guess I have nothing to do with it. As someone said I'm not the only one who can code an engine like this. About the copy of my new event ideas... thats another story..

Guest
This topic is now closed to further replies.



  • Posts

    • Classic move "its not a virus, all antiviruses are just wrong." The moment someone starts yelling "FIND THE MALICIOUS CODE" and mocking heuristic detection, its usually because there is something shady in there… or they have no clue what heuristic detection even is. If your files was clean, you wouldn’t be this defensive or getting personal.   when half the AV vendors are throwing out names like Trojan.Win32.Kasidet, Trj/Chgt.AD, and Gen:Variant.Tedy.537463, maybe it’s not "heuristics", maybe its just a shady-ass .rar. If there is smoke you don't argue with the smoke detector, you check the kitchen. But hey, maybe they all got paid too, right? 🤷‍♂️ the argue comes down to trusting you (a nobody) versus AV vendors   Popular threat label trojan.tedy Threat categories trojan  Family labels tedy   can i call you Teddy from now on? yes i can Teddy               Dont forget it was not something generic or maybe suspicious it just got detected with its specific version. and not only Teddy's Teddy some others too Kaspersky says Kasidet trojan keylogger, spyware, classic nasty stuff. Bitdefender, GData, VIPRE? Tedy variant, an actual known malware family. Panda, QuickHeal, Sophos, Fortinet everyone sees something dirty in there. But sure, they’re all wrong, and you’re the cybersecurity messiah who cracked the code. You really expect people to believe that 10 independent vendors with zero incentive to conspire against your .rar just happened to flag your file as malware… by accident? Maybe try this next time: instead of uploading garbage and calling people “idiots” when they don’t trust it, just don’t upload malware. Problem solved.
    • https://github.com/gawric/Guide-L2Unity/blob/main/Guide/Pakets/Blowfish/General description.md   Perhaps you will find it useful piece of encryption and decryption code from Acis Interlude   I transferred these methods to Unity c# and everything works fine   https://ibb.co/DHhP0JYr   I think the first 2 bytes are the packet size. Third byte packet id And then the information itself   It's all there in l2j servers  
    • Hello everyone, I'm facing exactly the same issue mentioned in this topic. I've correctly implemented several new mounts in my Lineage 2 Interlude server, but whenever I use the ride/mount action, the client always displays the default strider animation (lineagemonster.strider_m00), even though in my npcgrp.dat everything is correctly referenced to my custom ride.u files (e.g., ride.wolfhound_m00).   90102 Rider.wing_hound_vehicle Riders.wing_hound_vehicle_m00 2 RidersTex.wing_hound_t00 RidersTex.wing_hound_t01 0 1 0 1.00000000 0 1 4 ItemSound.armor_metal_weak_1 ItemSound.armor_leather_3 ItemSound.armor_metal_weak_3 ItemSound.armor_metal_weak_5 3 MonSound12.w_hound_dmg_1 MonSound12.w_hound_dmg_2 MonSound12.w_hound_dmg_3 0 1 0 LineageEffect.p_u002_a 0 50.00000000 250.00000000 70.00000000 0 1 41000 Rider.gray_horse Riders.gray_horse_m00 3 RidersTex.gray_horse.gray_horse_t00 RidersTex.gray_horse.gray_horse_t01 RidersTex.gray_horse.gray_horse_t02 0 1 0 1.05882394 0 1 4 MonSound.Hit_Shell_1 MonSound.Hit_normal_3 MonSound.Hit_Wood_3 MonSound.Hit_normal_12 3 MonSound.unicorn_b_dmg_1 MonSound.unicorn_b_dmg_2 MonSound.unicorn_b_dmg_3 0 1 0 LineageEffect.p_u002_a 0 50.00000000 250.00000000 70.00000000 0 1 41001 Rider.tawny_maned_lion Riders.tawny_maned_lion_m00 3 RidersTex.tawny_maned_lion.tawny_maned_lion_t00 RidersTex.tawny_maned_lion.tawny_maned_lion_t01 RidersTex.tawny_maned_lion.tawny_maned_lion_t02 0 1 0 1.50000000 0 1 5 MonSound.Hit_normal_12 MonSound.Hit_Normal_1 MonSound.Hit_Shell_3 MonSound.Hit_Shell_4 MonSound.Hit_Wet_4 3 MonSound.strider_dmg_1 MonSound.strider_dmg_2 MonSound.strider_dmg_3 0 1 0 LineageEffect.p_u002_a 0 50.00000000 250.00000000 70.00000000 0 1 41002 Rider.steam_sledge Riders.steam_sledge_m00 4 RidersTex.steam_sledge.steam_sledge_t00 RidersTex.steam_sledge.steam_sledge_t01 RidersTex.steam_sledge.steam_sledge_t02 RidersTex.steam_sledge.steam_sledge_t03 0 1 0 1.50000000 0 1 5 ItemSound.armor_metal_weak_3 ItemSound.armor_metal_weak_5 ItemSound.armor_metal_weak_10 ItemSound.armor_metal_alt_1 ItemSound.armor_metal_alt_6 3 MonSound.iron_golem_breathe MonSound.iron_golem_dmg_2 MonSound.iron_golem_dmg_3 0 1 0 LineageEffect.p_u002_a 0 50.00000000 250.00000000 70.00000000 0 1 41003 Rider.br_z_bike Riders.br_z_bike_m00 1 RidersTex.npc.br_z_bike_t00 0 1 0 1.00000000 0 1 5 MonSound.Hit_wood_1 MonSound.Hit_Wood_2 MonSound.Hit_Wood_3 MonSound.Hit_Wood_4 MonSound.Hit_Wood_5 0 0 1 0 LineageEffect.p_u002_a 0 50.00000000 250.00000000 70.00000000 0 1 41004 Rider.br_g_ant_princess Riders.g_ant_princess_m00 3 RidersTex.Npc.g_ant_princess_t00 RidersTex.Npc.g_ant_princess_t01 RidersTex.Npc.g_ant_princess_t02 0 1 0 1.39999998 0 1 4 MonSound.Hit_Normal_10 MonSound.Hit_Shell_2 MonSound.Hit_Wet_5 ItemSound.shield_bone_1 3 MonSound.queen_ant_dmg_1 MonSound.queen_ant_dmg_2 MonSound.queen_ant_dmg_3 0 1 0 LineageEffect.p_u002_a 0 50.00000000 250.00000000 70.00000000 0 1 41005 Rider.br_g_black_bear Riders.g_black_bear 2 RidersTex.Npc.g_black_bear_t00 RidersTex.Npc.g_black_bear_t01 0 1 0 1.39999998 0 1 4 MonSound.Hit_Normal_11 MonSound.Hit_Normal_13 MonSound.Hit_Wet_5 ItemSound.shield_bone_3 3 MonSound11.Kerberos_dmg01 MonSound11.Kerberos_dmg02 MonSound11.Kerberos_dmg03 0 1 0 LineageEffect.p_u002_a 0 50.00000000 250.00000000 70.00000000 0 1 41006 Rider.br_g_halloween_flying_broom Riders.g_halloween_flying_broom_m00 1 RidersTex.Npc.g_halloween_flying_broom 0 1 0 1.39999998 0 1 5 MonSound.Hit_wood_1 MonSound.Hit_Wood_2 MonSound.Hit_Wood_3 MonSound.Hit_Wood_4 MonSound.Hit_Wood_5 0 0 1 0 LineageEffect.p_u002_a 0 50.00000000 250.00000000 70.00000000 0 1 41007 Rider.illusion_vehicle Riders.illusion_vehicle_m00 2 RidersTex.bird_vehicle.bird_vehicle_t00 RidersTex.bird_vehicle.bird_vehicle_t01 0 1 0 1.05882394 0 1 4 MonSound.Hit_normal_3 MonSound.Hit_Wet_1 MonSound.Hit_Bone_2 MonSound.Hit_normal_12 0 0 1 0 LineageEffect.p_u002_a 0 50.00000000 250.00000000 70.00000000 0 1 41008 Rider.vehicle_lindvior Riders.vehicle_lindvior_m00 2 RidersTex.Vehicle_Lindvior.Vehicle_Lindvior_t00 RidersTex.Vehicle_Lindvior.Vehicle_Lindvior_t01 0 1 0 1.05882394 0 1 4 MonSound.Hit_Normal_1 MonSound.Hit_Wet_3 MonSound.Hit_Bone_8 MonSound.Hit_Wet_5 3 MonSound3.dragon_mage_dmg_1 MonSound3.dragon_mage_dmg_2 MonSound3.dragon_mage_dmg_3 0 1 0 LineageEffect.p_u002_a 0 50.00000000 250.00000000 70.00000000 0 1 41009 Rider.craft_vehicle_dwarf Riders.craft_vehicle_dwarf_m00 2 RidersTex.craft_vehicle_dwarf.craft_vehicle_dwarf_t00 RidersTex.craft_vehicle_dwarf.craft_vehicle_dwarf_t01 0 1 0 1.05882394 0 1 4 MonSound.Hit_Normal_1 MonSound.Hit_Wood_2 MonSound.Hit_Wood_3 MonSound.Hit_Normal_7 0 0 1 0 LineageEffect.p_u002_a 0 50.00000000 250.00000000 70.00000000 0 1 41010 Rider.eligor_vehicle Riders.eligor_vehicle_m00 2 RidersTex.eligor_vehicle.eligor_vehicle_t00 RidersTex.eligor_vehicle.eligor_vehicle_t01 0 1 0 1.00000000 0 1 4 MonSound.Hit_normal_3 MonSound.Hit_Wet_1 MonSound.Hit_Bone_2 MonSound.Hit_normal_12 3 MonSound16.kanilof_dmg_1 MonSound16.kanilof_dmg_2 MonSound16.kanilof_dmg_3 0 1 0 LineageEffect.p_u002_a 0 50.00000000 250.00000000 70.00000000 0 1 41011 Rider.elder_pegasus_vehicle Riders.elder_pegasus_vehicle_m00 2 RidersTex.elder_pegasus_vehicle.elder_pegasus_event_vehicle_t00 RidersTex.elder_pegasus_vehicle.elder_pegasus_event_vehicle_t01 0 1 0 1.00000000 0 1 5 MonSound.Hit_Normal_1 MonSound.Hit_Normal_6 MonSound.Hit_Normal_7 MonSound.Hit_Normal_8 MonSound.Hit_normal_12 3 MonSound12.cobalt_horse_dmg_1 MonSound12.cobalt_horse_dmg_2 MonSound12.cobalt_horse_dmg_3 0 1 0 LineageEffect.p_u002_a 0 50.00000000 250.00000000 70.00000000 0 1 41012 Rider.wing_hound_vehicle Riders.wing_hound_vehicle_m00 2 RidersTex.wing_hound_t00 RidersTex.wing_hound_t01 0 1 0 1.00000000 0 1 4 ItemSound.armor_metal_weak_1 ItemSound.armor_leather_3 ItemSound.armor_metal_weak_3 ItemSound.armor_metal_weak_5 3 MonSound12.w_hound_dmg_1 MonSound12.w_hound_dmg_2 MonSound12.w_hound_dmg_3 0 1 0 LineageEffect.p_u002_a 0 50.00000000 250.00000000 70.00000000 0 1 41013 Rider.sp_griffin_vehicle Riders.sp_griffin_vehicle_m00 3 RidersTex.griffin_vehicle.griffin_vehicle_t00 RidersTex.griffin_vehicle.griffin_vehicle_t01 RidersTex.griffin_vehicle.griffin_vehicle_t02 0 1 0 1.00000000 0 1 5 MonSound.Hit_Normal_1 MonSound.Hit_Normal_6 MonSound.Hit_Normal_7 MonSound.Hit_Normal_8 MonSound.Hit_normal_12 3 MonSound23.sp_griffin_dmg_1 MonSound23.sp_griffin_dmg_2 MonSound23.sp_griffin_dmg_3 0 1 0 LineageEffect.p_u002_a 0 50.00000000 250.00000000 70.00000000 0 1 I've examined the server-side code and realized the problem likely comes from the client only looking at the _rideType (which is 1 for STRIDER) and ignoring the _rideNpcId when determining which animation to load. @Banshee Garnet mentioned an "extended dll" - does this involve modifying the L2.dll or L2Client.dll so it checks the NpcId in addition to the rideType? Has anyone already made this modification and could share more details on how to proceed? Looking at l2royale.com, I can see they indeed have multiple functional mounts in their Interlude client. I'd like to understand which approach they used: Is it indeed a DLL modification? Which specific parts of the DLL need to be modified? Are there already patches or tools that allow adding this functionality? If anyone has successfully implemented multiple mounts in Interlude or knows the precise technical solution, I would be very grateful for any information or help. Thanks in advance!
    • Hello, I’m working on decrypting the Init packet that the server sends to the client during login. This packet is treated specially and contains the Blowfish keys used to encrypt and decrypt subsequent packets. Although it isn’t encrypted irreversibly and should be reversible, I haven’t succeeded yet. My goal is to extract the Blowfish key to decrypt certain client packets without disrupting the normal session flow. I can inject a DLL to sniff the packets, and with that I plan to develop a module that extends the client’s functionality. For example, after logging in, this module would capture all the data the client receives (character data, etc.). Additionally, it could listen for real-time server events, enabling integrations with Discord SDKs or other systems, thereby expanding Lineage 2’s capabilities. Init packet(0x00) LoginServer. Currently in the java Cores I checked there is no decode function for this package, only encript.
  • Topics

×
×
  • Create New...