’Insider Posted April 11, 2015 Posted April 11, 2015 (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 April 11, 2015 by ’Insider
Nightw0lf Posted April 11, 2015 Posted April 11, 2015 (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 April 11, 2015 by Nightw0lf
Extreamer Posted April 11, 2015 Posted April 11, 2015 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.
’Insider Posted April 11, 2015 Author Posted April 11, 2015 (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 April 11, 2015 by ’Insider
Devlin Posted April 11, 2015 Posted April 11, 2015 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.
’Insider Posted April 11, 2015 Author Posted April 11, 2015 (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 April 11, 2015 by ’Insider
Devlin Posted April 11, 2015 Posted April 11, 2015 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.
’Insider Posted April 11, 2015 Author Posted April 11, 2015 (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 April 11, 2015 by ’Insider
SweeTs Posted April 11, 2015 Posted April 11, 2015 (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 April 11, 2015 by SweeTs
Nightw0lf Posted April 11, 2015 Posted April 11, 2015 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..
Devlin Posted April 11, 2015 Posted April 11, 2015 What do I need to them in order to lick them? The retard here is you.
’Insider Posted April 12, 2015 Author Posted April 12, 2015 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.
Elfosass Posted April 14, 2015 Posted April 14, 2015 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.
’Insider Posted April 14, 2015 Author Posted April 14, 2015 (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 April 14, 2015 by ’Insider
Recommended Posts