Jump to content

Recommended Posts

Posted (edited)

With xdem's permission, I want to re-sell the highly private event engine coded by him for L2AEPvP a few years ago. Its without a doubt the best, lightest and the most expandable private game engine ever made for Lineage. Its originally coded on aCis 260 rev but its coded in a way that allows extremely easy adaption for any server chronicle/project, even on different gameservers.

 

Event Engine features:

  • All known events support
  • n Size teams amounts
  • n Size flag amounts
  • Instanced events
  • Temporal NPCs (Spawn/Unspawn during events)
  • Item tier restriction (Allow up to A grade, or up to S80 Grade, or custom tier like aepvp Unique,Epic,etc) ingame with GM command
  • Bugless event abort
  • Dynamic registration town name announcement
  • Anti AFK
  • DCd/Crashed players may reconnect and will not loose their stats (deaths, damage dealt, etc)
  • Monitoring Damage dealt, Damage taken, healing done, steps done
  • Rewards may or may not be based on damage dealt, kills done etc
  • Healers may be rewarded too regardless of their kills if they did a specified amount of healing to one or more than one players
  • Additional reward every X kills
  • Increased respawn time for every death
  • A lot of event features that can be used by anyone to make any event.

Mini Event engine (Dissabled by default, beta)

  • Mini fights
  • Matchmaking with Elo or Divisions
  • Players decide team size and winner reward (betting system)

 

Multiverse Engine

  • The owner is able to make any Quest-like instance with the tools provided by the engine
  • Dynamic/Static re-entry delays
  • Player stat/party/party size requirements.

 

To make you understand what I mean by saying that anyone can make any event with this game engine, with minimum knowledge, I will give an Event sample. Even if its coded by the engine's original developer xdem, it will give you a taste of how simply you can create a big 15 minute event with a ton of feature support by coding a few lines.

/*
 * This program is free software: you can redistribute it and/or modify it under
 * the terms of the GNU General Public License as published by the Free Software
 * Foundation, either version 3 of the License, or (at your option) any later
 * version.
 * 
 * This program is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
 * details.
 * 
 * You should have received a copy of the GNU General Public License along with
 * this program. If not, see <http://www.gnu.org/licenses/>.
 */
package net.sf.l2j.gameserver.l2event.mainevents;

import net.sf.l2j.gameserver.l2event.AbstractEvent;
import net.sf.l2j.gameserver.l2event.EventTeam;
import net.sf.l2j.gameserver.model.Location;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;

/**
 * @author Drake2wow 21/10/2012
 */
public class TeamVsTeam extends AbstractEvent
{	private final static int[] registrationTasksMinutes = {	15, 10,	5, 3, 2, 1 };
	private final static int[] eventFinishTasksMinutes = { 15, 10, 5, 3, 2, 1 };
	
	public TeamVsTeam()
	{	super("TvT Event(TvT)", "TvT", -82111, 150660, -3128);
		addTeam(new EventTeam("Green", 0x66FF00, new Location(-43837, 116510, -3584)));
		addTeam(new EventTeam("Orange", 0x0066FF, new Location(-53914, 108268, -3736)));
	}
	
	@Override
	public void run()
	{	ScheduleAfterMinutes(() -> startEventTask(), registrationTasksMinutes[0]);
		startRegistrationTask(registrationTasksMinutes);
	}
	
	@Override
	public void startEventTask()
	{	if (!hasEnoughRegistered(2))
			return;
		super.startEventTask();
		ScheduleAfterSeconds(() -> startMainAndFinishTask(eventFinishTasksMinutes), 25);
		ScheduleAfterMinutes(() -> end(), eventFinishTasksMinutes[0]);
	}
	
	@Override
	public void end()
	{	broadCastTopPlayers(5);
		calculateWinnerTeams();
		super.end();
	}
	
	@Override
	public boolean isSameTeam(final L2PcInstance player, final L2PcInstance target)
	{	return player != target && getTeam(player) != null && getTeam(player) == getTeam(target);
	}
	
	@Override
	public boolean isInSpawnProtection(final L2PcInstance player)
	{	if (!isEventParticipant(player))
			return false;
		final EventTeam team = getTeam(player);
		if (team == null)
			return false;
		final Location loc = team.getSpawnLocation();
		return player.isInsideRadius(loc.getX(), loc.getY(), loc.getZ(), 400, false, false);
	}
	
	@Override
	public void onDie(final L2PcInstance killer, final L2PcInstance victim)
	{	final EventTeam killerTeam = getTeam(killer), victimTeam = getTeam(victim);
		if (killerTeam != null && victimTeam != null && killerTeam != victimTeam)
			killerTeam.increaseScore();
		super.onDie(killer, victim);
	}
	
	@Override
	public void respawn(final L2PcInstance player)
	{	if (state == State.FINISHED || state == State.INACTIVE)
			player.teleToLocation(leaveLoc, 250);
		else
			player.teleToLocation(getTeam(player).getSpawnLocation(), 100);
		super.respawn(player);
	}
}

In case you are interested leave your offer on a PM here, or add me on skype desen.lacoka

 

PS: I have nothing to do with L2AEPvP or the coding of this game engine, I just got my hands on this game engine's source code and the authority of the developer to resell it for a small percentage of the sells. In case you want to speak with the developer directly you can find him only on skype drake 2wow

Edited by ’Insider
Posted (edited)

lock delete

reasons:

1 L2AEPvP fail many topics made for this bad project

2 xdem is banned

3 -2 rep says your're bad boy

4 no test + old rev (but yes easy adaption lol) i dont even want to know the price...

5 "I just got my hands on this game engine's source code and the authority of the developer to rese" no commends.

i could continue

Edited by Nightw0lf
Posted

With xdem's permission, I want to sell the event engine coded by him for L2AEPvP a few years ago. Its without a doubt the best, lightest and the most expandable private game engine ever made for Lineage. Its originally coded on aCis 260 rev.

 

 

Coded for 260 rev? That is over 100 revs old, the amount of things that aCis changed in their timeline is insane.

Posted (edited)

Coded for 260 rev? That is over 100 revs old, the amount of things that aCis changed in their timeline is insane.

 

That's irrelevant, I don't want to get into the conversation of how L2AEPvP is syncing H5 L2J since 260rev being somewhat a hybrid of a latest L2J ht core and aCis datapack. I clrearly explained above that the events are highly adapt friendly. Just check the code sample I gave, anyone skilled/unskilled can see that.

import net.sf.l2j.gameserver.model.Location;
import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;

These are the imports from aCis

Edited by ’Insider
Posted

You are all wrong. The engine maybe it's coded in a jar and you need only 5 lines to use it. Also, the fact that l2aepvp had problems has nothing to do with a simple engine.

 

Get real people, in case of scam he will get punished as everyone here. Everyone is free to sell whatever wants, there is moderator for this section and he can judge the bad.

Posted (edited)

You are all wrong. The engine maybe it's coded in a jar and you need only 5 lines to use it. Also, the fact that l2aepvp had problems has nothing to do with a simple engine.

 

Get real people, in case of scam he will get punished as everyone here. Everyone is free to sell whatever wants, there is moderator for this section and he can judge the bad.

 

wut, how can someone call a server that never had less than 300 online and total pvps of 1,000,000+ bad or failed, I'll just ignore such comments from randoms

 

Its not in Jar, its full source, you can either compile it and add it as a library or add it in your source directly.

 

 

PS: My -2 karma comes from kids like baggoc for reasons I don't really give a shit about

Edited by ’Insider
Posted

wut, how can someone call a server that never had less than 300 online and total pvps of 1,000,000+ bad or failed, I'll just ignore such comments from randoms

 

Its not in Jar, its full source, you can either compile it and add it as a library or add it in your source directly.

Whatever bro, I am just trying to support you because everyone is wrong.

Posted (edited)

Whatever bro, I am just trying to support you because everyone is wrong.

 

Its okay mate, its classic on mxc that wannabies try to degrade you to their low level, they just need to be ignored.

 

Just look the beauty of that TvT class, if someone has the proper knowledge or intelligence can't flame that piece of art :D

Edited by ’Insider
Posted (edited)

The bad thing is that the events are inside the core, w/e you want to change you have to recompile. xdem could make them load from datapack, listeners, xml and so on.. ;)

 


Its without a doubt the best, lightest and the most expandable private game engine ever made for Lineage.

 

Actually, I have doubts. You didn't saw Trance's engine. Anyway, good luck :)

Edited by SweeTs
Posted

You are all wrong. The engine maybe it's coded in a jar and you need only 5 lines to use it. Also, the fact that l2aepvp had problems has nothing to do with a simple engine.

 

Get real people, in case of scam he will get punished as everyone here. Everyone is free to sell whatever wants, there is moderator for this section and he can judge the bad.

tries to lick and gets KO

wut, how can someone call a server that never had less than 300 online and total pvps of 1,000,000+ bad or failed, I'll just ignore such comments from randoms

 

Its not in Jar, its full source, you can either compile it and add it as a library or add it in your source directly.

 

 

PS: My -2 karma comes from kids like baggoc for reasons I don't really give a shit about

and here comes the fatality

 

Whatever bro, I am just trying to support you because everyone is wrong.

 

Its okay mate, its classic on mxc that wannabies try to degrade you to their low level, they just need to be ignored.

 

Just look the beauty of that TvT class, if someone has the proper knowledge or intelligence can't flame that piece of art :D

 

this thing smells for guys who dont know him I dont recommend him at all... for those who know him oh well..

Posted

tries to lick and gets KO

and here comes the fatality

 

 

 

this thing smells for guys who dont know him I dont recommend him at all... for those who know him oh well..

please tell us some things about you non-factor.

Posted

The code is pretty legit BTW, shows that engine uses latest java 8 technology and is really expandable and flexible as the abstract main class for events handled pretty much everything. If he is actually selling what he claims to sell then without a doubt it's a really good buy.

Good luck with your sales.

Posted (edited)

The code is pretty legit BTW, shows that engine uses latest java 8 technology and is really expandable and flexible as the abstract main class for events handled pretty much everything. If he is actually selling what he claims to sell then without a doubt it's a really good buy.

Good luck with your sales.

 

At last, an answer from a legit guy with knowledge in this topic...

 

It sucks for the forum when clueless people harass the topics and thats indeed the reason all legit guys quited the forum.

 

The code sample above is a full time Team vs Team that can handle up to X teams simutaniusly. It covers both registration tasks and event tasks in less than 100 lines of code (the hard work is down under the hood ofc but the consumer doesnt actually care)

 

 

 

This is a sample of the mother class (580 lines of code) and all its variables

public abstract class AbstractEvent implements Runnable, DeathListener, ActionListener, ILocationable
{
	public static final Location leaveLoc = new Location(-82787, 150888, -3128);
	public static ItemTier nextTier = ItemTier.RELIC;
	public boolean devMode = true;
	protected boolean aborted;
	protected final String _townName;
	protected final String _fullName;
	public final String _miniName;
	protected ItemTier tier = ItemTier.RELIC;
	public State state = State.INACTIVE;
	private int InstanceId;
	protected final ArrayList<EventTeam> _teams = new ArrayList<>();
	protected final ArrayList<L2Spawn> _spawnedNpcs = new ArrayList<>();
	protected final ArrayList<L2PcInstance> registered = new ArrayList<>();
	protected final CopyOnWriteArrayList<L2PcInstance> participants = new CopyOnWriteArrayList<>();
	protected final ConcurrentHashMap<Integer, PlayerData> participantData = new ConcurrentHashMap<>();
	protected final ArrayList<Integer> _leavers = new ArrayList<>();
	
	public void startEventTask()
	{
		Announce(_fullName + ": Participants will be teleported to the battleground in 20 seconds.");
		ScheduleAfterSeconds(() -> paralyzePlayers(), 17);
		ScheduleAfterSeconds(() -> initParticipants(), 20);
		ScheduleAfterSeconds(() -> unparalyzePlayers(), 23);
	}

If the owner wants specific extra rewards for the top players:

	@Override
	protected void broadCastTopPlayer(final int place, final L2PcInstance player, final int score)
	{	super.broadCastTopPlayer(place, player, score);
		switch (place)
		{	case 1:
			{	player.addFame(150, false);
				player.addItem("DM", 3487, 20, null, true);
				player.addItem("DM", 6320, 3, null, true);
				break;
			}
			case 2:
			{	player.addFame(100, false);
				player.addItem("DM", 6320, 2, null, true);
				break;
			}
			case 3:
			{	player.addFame(50, false);
				player.addItem("DM", 6320, 2, null, true);
				break;
			}
			case 4:
			{	player.addFame(25, false);
				player.addItem("DM", 6320, 2, null, true);
				break;
			}
			case 5:
			{	player.addFame(25, false);
				player.addItem("DM", 6320, 1, null, true);
				break;
			}
			case 6:
			{	player.addFame(25, false);
				player.addItem("DM", 6320, 1, null, true);
				break;
			}
		}
	}

Or if he wants to ban a skill on a specific event:

	@Override
	public boolean denySkillUse(final L2PcInstance player, final L2Skill skill)
	{	switch (skill.getId())
		{	case 1050:
			case 1255:
			case 296:
			case 106:
			case 445:
			case 922:
				player.sendMessage("That skill is restricted!");
				return true;
		}
		return false;
	}

or if he wants that specific event to hide the player's identity just turn the switch

	@Override
	public boolean isDisguisedEvent()
	{
		return true;
	}

There are much much more features like the above for the owner to overwrite modify add something different or w/e.

Edited by ’Insider
Guest
This topic is now closed to further replies.


  • Posts

    • Thanks! Will make this happen first before going forward with 20-40 leveling!    No I didn't, I'm just focused on improving this with the time I have 😄
    • L2 Runestone Interlude C6 · 5x · Open since 10 August 2026 · No wipe, ever l2runestone.com · Discord Most servers die the same way. They sell power, the market dries up, and the people who actually play leave. This one is built not to do that, and everything below is the actual configuration rather than a wishlist.   Rates Experience 5x · Skill points 5x Party experience and SP 6x Drop 5x · Spoil 5x · Quest reward 5x Adena 7x Raid boss, Grand boss and epic jewels: 1x, untouched Special herbs 1x Adena sits above item drop on purpose, so shots stay affordable without flooding the economy. Epics are deliberately not multiplied: the strongest gear in the game should be the hardest to hold.   Enchant Safe to +3 (+4 full body). +1 per scroll, and a failed scroll destroys the item. Scrolls are not sold by any NPC.   Normal Blessed Crystal +4 96% 97% 98% +6 88% 91% 94% +8 80% 85% 90% +10 72% 79% 86% +12 64% 73% 82% +15 52% 64% 76%     Not retail 66% flat. It is gentler than retail early and harsher late, which is a choice, not an accident. Max +15 weapons and armor, +12 jewellery.   What is not here No autofarm. No command, no macro engine, nothing plays for you. Adena auto-loots; items do not. No gear above D grade from NPCs. Starter equipment is sold as it is at retail. Everything from C grade up drops, is crafted, or is traded between players. The dwarf is the heart of the economy, not a side character. Nothing that matters for sale. Power is never purchasable. Convenience and cosmetics are the only things that will ever be. No wipe. Ever. If a bug is found we fix the bug and remove what it produced, instead of resetting the world because that is easier.   Retail where it counts Pure retail class balance. Casts keep a real interrupt window, crowd control never exceeds 90% Olympiad weekly, starting 18:00, six hour competition period Sieges and epic bosses on retail mechanics Buff slots 24 · Subclass to 81 · First and second class change at NPC, third class is earned Offline trade and craft, including in peace zones, restored across restarts   Technical The client is patched by one byte to protocol 748, so a client that has not been through our launcher is refused at the door Full geodata, 163 regions, with pathfinding enabled. No walking through walls, no mobs pulled through geometry Anti-bot with an in-game check, and anti-advertising covering chat, whispers, private store titles and character names InnoDB with binary logging, verified daily backups kept in two places, and a weekly restore test that actually restores   Honest part It opened on 10 August 2026 and it is small. There is no countdown, no launch event, no fake population counter, and nobody is going to hand you gear. If you log in tonight you will find a quiet world. That is the trade: you are early, and everything you build from here stays yours.   Getting in You need a Lineage II Interlude (Chronicle 6) client already on your PC. The launcher downloads and repairs the system folder on its own and verifies every file before the game starts; it touches nothing else and will not patch Gracia or later. Launcher and account: l2runestone.com Discord: discord.gg/NJDeffApmc  
    • Although I don't know how to use it, thank you for sharing
    • Did you try run as extender to any version where Source no needed? Coz not everyone use Mobius 😃
    • Very nice progress. At some point you will need the bots to travel long distances. Geodata and A* path finding on it won't be suitable. They will exhaust budget and memory/cpu. I think the human bot was hitting this ceiling that's why it couldn't find the bridge. aCis has recently made a low granularity geo Pathfinder that can help.  One approach I did successfully and you can do is to replace geodata with 3D nav mesh for bots and use the Detour algorithm for pathfinding. This will give you very cheap long distance path finding. 
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..