Jump to content

L2Aepvp Game/event Engine [Acis]


Recommended Posts

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
Link to comment
Share on other sites

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
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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
Link to comment
Share on other sites

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
Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.


×
×
  • Create New...