Jump to content

Recommended Posts

Posted

Recently I played a game that had a heroic system a little bit different than Lineage 2 one ( olympiad ).  For those of you that watch tennis and know about the tennis rankings this will be pretty easy to understand. Without further delay here's an adaptation of that system to Lineage 2:

 

The game time is divided into periods. Each period has a stable duration, ( example 2 weeks ) during which, players can accumulate points.

 

For each class, people are ranked based on points they accumulate. At any point in time, the person that has the most points ( Ranked 1 ) becomes the hero in that class.

 

At the end of each period, the points reset.

 

You get points by doing achievements that demand good pvp in solo or in team. Each achievment gives specific amount of points.

 

Achievements can be things like : Be on a clan that conquers a castle, be on a clan that defends sucessfully a castle, play a lot in pvp without dying many times, have a TVT winning ration of >0.5 and so on.

 

The main concept is that your rightfulness as a hero is judged by many game aspects and not just by going 1 vs 1 on olympiad.

Posted

Recently I played a game that had a heroic system a little bit different than Lineage 2 one ( olympiad ).  For those of you that watch tennis and know about the tennis rankings this will be pretty easy to understand. Without further delay here's an adaptation of that system to Lineage 2:

 

The game time is divided into periods. Each period has a stable duration, ( example 2 weeks ) during which, players can accumulate points.

 

For each class, people are ranked based on points they accumulate. At any point in time, the person that has the most points ( Ranked 1 ) becomes the hero in that class.

 

At the end of each period, the points reset.

 

You get points by doing achievements that demand good pvp in solo or in team. Each achievment gives specific amount of points.

 

Achievements can be things like : Be on a clan that conquers a castle, be on a clan that defends sucessfully a castle, play a lot in pvp without dying many times, have a TVT winning ration of >0.5 and so on.

 

The main concept is that your rightfulness as a hero is judged by many game aspects and not just by going 1 vs 1 on olympiad.

 

realy interesting !!! you gave me a lot of ideas ^_^  ....can you created that for IL ;

Posted

Sadly, I'm retired. On different circumstances I would probably code it. But I'm sure the younger guys are equally good to code it ;)

 

It is good to bring ideas for the new comers (Developers).

Sometimes, there is lack of ideas.

Posted

Actually, the best way for Hero status these days is Hero Tournouament ( Im talking about Interlude servers ) since Olympiad is way too unbalanced.

Posted

I like it as a supplement of the normal hero system. Like a mix of an achievements engine and a "hero pvp", or whatever, system.

I will probably code something similar as soon as I go back home.

Posted

I like it as a supplement of the normal hero system. Like a mix of an achievements engine and a "hero pvp", or whatever, system.

I probably will code something similar as soon as I come back home.

 

if you want i can give you a lot of ideas to make this code :D

Posted

It would be real interesting, if in the events that can give you 'hero points', you couldn't change sub-class

so each point would go into the sub-class you are playing when you are given the points, so you are trully the best one of your class =)

Posted

Well it's basically another feature in l2. What i liked from this is the fact that the player with the most points at his class is hero(at any time during the 2 weeks). That means you have to fight everyday to keep your title.

Posted

You get points by doing achievements that demand good pvp in solo or in team. Each achievment gives specific amount of points.

Achievements can be things like : Be on a clan that conquers a castle, be on a clan that defends sucessfully a castle, play a lot in pvp without dying many times, have a TVT winning ration of >0.5 and so on.

Why an hero should be decided based on the team he might have and not on his own knowledge/skills?

Posted

Why an hero should be decided based on the team he might have and not on his own knowledge/skills?

Since when clans don't feed to take their heros or try to help in other ways? xD

L2 -> feed

 

And I think this mod that he explained is just something more to decide who is the hero, not the only way. The olympiad points plus the achievements, all points are counted to decide the hero.

Posted

Imo the best way and the most balanced it would be to count who has taken the most pvp points in sieges at the end of the month for each month and that person will take the hero status until the month is over (classed based obviously). This way sieges will have a greater meaning. You kill 2 birds with 1 stone.

 

Also like this the people that become Hero will deserve to become Hero.

 

So simple...

Posted

Not so simple cause some classes can't really do pvps. I mean we do have healers dont we ? Can't expect them to get a bow and go out there pretending to be archers ... I believe teamplay should be a factor that determines heroes, especially those in the support classes.

Posted

The general idea is interesting, however there are a few problems.

On one hand, it would be fair to say that you have to take those PvPs with your original class. If the PvPs you win with your subclasses count as well, then people will choose really weak classes in the beginning, just to make sure that there will be less competition. On the other hand, it is true that you can't expect a Swords Dancer or a Bishop to become competitive as far as PvPs are concerned, especially in a 'High-Rates' sever. Apart from that, all that is needed to make this a good feature is a person with imagination, to think of the proper "criteria", and a person to code it.

Posted

The general idea is interesting, however there are a few problems.

On one hand, it would be fair to say that you have to take those PvPs with your original class. If the PvPs you win with your subclasses count as well, then people will choose really weak classes in the beginning, just to make sure that there will be less competition. On the other hand, it is true that you can't expect a Swords Dancer or a Bishop to become competitive as far as PvPs are concerned, especially in a 'High-Rates' sever. Apart from that, all that is needed to make this a good feature is a person with imagination, to think of the proper "criteria", and a person to code it.

That's not a real problem... count the PvP's only from main class is easy as hell and 'bout the No-PvP of support class you can create an assist-system that count pvp every 2-3 kills of your party members, to you, or something like that. Then you take the points from pvp, from olympiads, from other achievements, including a 0.X multiplier depending on the achievement or if its pvp or oly point and that's it.

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

    • what pack you use  send me on discord for it
    • package custom.events.RandomZoneEvent; import java.io.File; import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.concurrent.ScheduledFuture; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.l2jmobius.commons.threads.ThreadPool; import org.l2jmobius.commons.time.SchedulingPattern; import org.l2jmobius.commons.time.TimeUtil; import org.l2jmobius.commons.util.IXmlReader; import org.l2jmobius.gameserver.managers.ZoneManager; import org.l2jmobius.gameserver.model.StatSet; import org.l2jmobius.gameserver.model.actor.Creature; import org.l2jmobius.gameserver.model.actor.Npc; import org.l2jmobius.gameserver.model.actor.Player; import org.l2jmobius.gameserver.model.quest.Event; import org.l2jmobius.gameserver.model.zone.ZoneId; import org.l2jmobius.gameserver.model.zone.ZoneType; import org.l2jmobius.gameserver.model.zone.type.RandomZone; import org.l2jmobius.gameserver.util.Broadcast; /** * Random Zone Event - Activates one random PvP zone temporarily. No modifica la clase de la zona: usa flags PvP en runtime. * @author Juan */ public class RandomZoneEvent extends Event { private static final String CONFIG_FILE = "data/scripts/custom/events/RandomZoneEvent/config.xml"; private static int EVENT_DURATION_MINUTES = 15; private static boolean _isActive = false; private ScheduledFuture<?> _eventTask = null; private final List<ZoneType> _availableZones = new ArrayList<>(); private ZoneType _activeZone = null; public RandomZoneEvent() { loadConfig(); loadZones(); registerZoneListeners(); } /** * Registra listeners a TODAS LAS ZONAS random */ private void registerZoneListeners() { for (ZoneType zone : _availableZones) { addEnterZoneId(zone.getId()); addExitZoneId(zone.getId()); LOGGER.info("[RandomZoneEvent] Registered listener for zone: " + zone.getName()); } } private void loadConfig() { new IXmlReader() { @Override public void load() { parseDatapackFile(CONFIG_FILE); } @Override public void parseDocument(Document doc, File file) { forEach(doc, "event", eventNode -> { final StatSet att = new StatSet(parseAttributes(eventNode)); final String name = att.getString("name"); for (Node node = eventNode.getFirstChild(); node != null; node = node.getNextSibling()) { if ("schedule".equals(node.getNodeName())) { final StatSet attributes = new StatSet(parseAttributes(node)); final String pattern = attributes.getString("pattern"); final SchedulingPattern schedulingPattern = new SchedulingPattern(pattern); final StatSet params = new StatSet(); params.set("Name", name); params.set("SchedulingPattern", pattern); final long delay = schedulingPattern.getDelayToNextFromNow(); getTimers().addTimer("Schedule_" + name, params, delay + 5000, null, null); LOGGER.info("[RandomZoneEvent] Event " + name + " scheduled at " + TimeUtil.getDateTimeString(System.currentTimeMillis() + delay)); } } }); } }.load(); } private void loadZones() { for (ZoneType zone : ZoneManager.getInstance().getAllZones(RandomZone.class)) { if ((zone.getName() != null) && zone.getName().toLowerCase().startsWith("random_zone")) { _availableZones.add(zone); LOGGER.info("[RandomZoneEvent] Loaded zone: " + zone.getName() + " (id=" + zone.getId() + ")"); } } LOGGER.info("[RandomZoneEvent] Total random zones loaded: " + _availableZones.size()); } @Override public void onTimerEvent(String event, StatSet params, Npc npc, Player player) { if (event.startsWith("Schedule_")) { eventStart(null); final SchedulingPattern schedulingPattern = new SchedulingPattern(params.getString("SchedulingPattern")); final long delay = schedulingPattern.getDelayToNextFromNow(); getTimers().addTimer(event, params, delay + 5000, null, null); LOGGER.info("[RandomZoneEvent] Rescheduled for " + TimeUtil.getDateTimeString(System.currentTimeMillis() + delay)); } } @Override public boolean eventStart(Player eventMaker) { if (_isActive) { if (eventMaker != null) { eventMaker.sendMessage("RandomZoneEvent already active."); } return false; } if (_availableZones.isEmpty()) { Broadcast.toAllOnlinePlayers("[RandomZoneEvent] No zones configured."); return false; } _isActive = true; Broadcast.toAllOnlinePlayers("⚔️ Random Zone Event has started!"); _eventTask = ThreadPool.schedule(this::activateRandomZone, 5_000); return true; } private void activateRandomZone() { _activeZone = _availableZones.get(new Random().nextInt(_availableZones.size())); _activeZone.setEnabled(true); Broadcast.toAllOnlinePlayers("🔥 Random Zone Event: " + _activeZone.getName() + " is now PvP for " + EVENT_DURATION_MINUTES + " minutes!"); _eventTask = ThreadPool.schedule(this::eventStop, EVENT_DURATION_MINUTES * 60 * 1000L); } @Override public boolean eventStop() { if (!_isActive) { return false; } _isActive = false; if (_eventTask != null) { _eventTask.cancel(true); _eventTask = null; } if (_activeZone != null) { _activeZone.setEnabled(false); Broadcast.toAllOnlinePlayers("🏁 Random Zone Event ended. " + _activeZone.getName() + " is back to normal."); _activeZone = null; } else { Broadcast.toAllOnlinePlayers("🏁 Random Zone Event ended."); } return true; } @Override public void onEnterZone(Creature creature, ZoneType zone) { if (!_isActive || (_activeZone == null)) { return; } if ((zone == _activeZone) && creature.isPlayable()) { creature.setInsideZone(ZoneId.PVP, true); if (creature.isPlayer()) { creature.sendMessage("Esta zona está en modo PvP temporalmente."); } } } @Override public void onExitZone(Creature creature, ZoneType zone) { if (!_isActive || (_activeZone == null)) { return; } if ((zone == _activeZone) && creature.isPlayable()) { creature.setInsideZone(ZoneId.PVP, false); if (creature.isPlayer()) { creature.sendMessage("Abandonaste la zona PvP temporal."); } } } @Override public boolean eventBypass(Player player, String bypass) { return true; } @Override public String onEvent(String event, Npc npc, Player player) { return super.onEvent(event, npc, player); } @Override public String onFirstTalk(Npc npc, Player player) { return null; } public static void main(String[] args) { new RandomZoneEvent(); } } i have this but its not working
    • ZonePvPSpawnBossRadio=0 ZonePvPSpawnBossBarakiel=0 at the Customs.ini in L2Server folder. Im prety sure this is it because i had the same problem with you in cruma 1 floor for example and i couldn't fix it but i fixed it finally by changing these 2 lines
    • Siege Reward Start PM Msg Rework Config root BossDieAnnounce and BossDieSound in the L24Team.properties and Config.java files for global raid boss death notifications and sounds. Adds a new reward_list table to the DB.sql file to track castle rewards. Improves character creation logic for thread safety and validation. Adds extensive state checks to the RequestEnchantItem method to prevent enchantments during inappropriate player states. Fixed auto-attack animation bug (there was no attack animation, only damage animation) Clean Code Other fixes I forgot to list! Java 14 Fixed issue where deleting a character would prevent it from leaving the screen or being removed, or even after a delete CD (it would only exit when re-logging in or creating a new character). Added Premium System from the other C2 project (Needs testing and improvement). Added the "Improved" Community Board (incomplete).
  • 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