Jump to content

Recommended Posts

Posted

Yes, so the competitiveness would increase even more, and everybody would be continuously trying to be better than everyone else! As long as the server is balanced enough (and not full of high-priviledged donators who rule the world), this could work very well. And instead of that Heroic mxc, the heroes could have a few more priviledges. For example, access to the Heroic Weapons, which will have slightly better stats, or something like that.

 

Balance is a matter of pack choice, pick l2j and l2j based packs and you'll never get any balance whatsoever. :)

Posted

No not really, there is still ventrilo, teamspeak, irc etc where people make plans for such things.

yea but it will reduce it even just a bit. You can even make it so players see each other as different races etc.

Also imagine how much effort they should put into bringing the people in the chat talking over it etc.

Posted

yea but it will reduce it even just a bit. You can even make it so players see each other as different races etc.

Also imagine how much effort they should put into bringing the people in the chat talking over it etc.

 

In my opinion the best way to avoid feeding is to actually make a proper matchmaking system with restrictions in it, i see no need for such mods. :)

Posted

I didn't take into account the future of Olympiad when I thought about that type of event. Mainly because I never liked olympiad for reasons that some people stated in this topic. Anyhow after some thoughtful days I took cortesy of designing the system in detail and implementing it in my test server. At frist I thought it would need lots of coding, turns out it wasn't that difficult feature. So here's my implementation in detail.

 

1)Each player can have Hero points. At any given time, the top1 player of each class that has the most hero points becomes the hero automatically. The game checks the ranking at intervals.

 

2)The hero points reset to zero every two weeks. This is the Heroic period. In other words all points get removed from the game every two weeks.

 

3)Points enter the game by ancient heroic spirit's blessings towards the players. Siegheart, Lionna, Bartz etc, bestow heroic points into the game on multiple occasions. Some of them:

 

a)At the start of the heroic period every person online gets 200 hero points from Bartz.

b)Lionna sends 1500 points in every event of the game (e.g. TvT ). The winning team splits the 1000 points equally. The losers split the 500.

c)Sieghart sends 10.000 points in every castle under siege. Providing there are attackers and defenders, the winning clan splits those points equally among it's online members.

d)Erica sends random points from 0  to 20, randomly to people that are participating in pvp as a reward for their courage of risking to lose hero points in battle.

 

4)Points exit the game by performing special abilities. Each special ability costs 1% of your hero points. Currently there are two special abilities.

 

a).stealth, makes you invisible as long as you dont perform actions or move. Can't be used in combat or when you are surrounded by players.

b).locate <playername> allows you to locate the whereabouts of a person.

 

5)Points change hands ingame during pvp or pk. The rules are as follows:

a)When you kill someone in pvp, you get 5% of his points. If you are in party, the points split equally in your party.

b)When you pk someone in pvp, you get 10% of his points. Same party rules apply. Clearing karma is custom and not easy as in killing one mob.

c)When you kill a pk, you get 50% of his points.

d)When you win someone in olympiad, you get 10% of his points.

Posted

I didn't take into account the future of Olympiad when I thought about that type of event. Mainly because I never liked olympiad for reasons that some people stated in this topic. Anyhow after some thoughtful days I took cortesy of designing the system in detail and implementing it in my test server. At frist I thought it would need lots of coding, turns out it wasn't that difficult feature. So here's my implementation in detail.

 

1)Each player can have Hero points. At any given time, the top1 player of each class that has the most hero points becomes the hero automatically. The game checks the ranking at intervals.

 

2)The hero points reset to zero every two weeks. This is the Heroic period. In other words all points get removed from the game every two weeks.

 

3)Points enter the game by ancient heroic spirit's blessings towards the players. Siegheart, Lionna, Bartz etc, bestow heroic points into the game on multiple occasions. Some of them:

 

a)At the start of the heroic period every person online gets 200 hero points from Bartz.

b)Lionna sends 1500 points in every event of the game (e.g. TvT ). The winning team splits the 1000 points equally. The losers split the 500.

c)Sieghart sends 10.000 points in every castle under siege. Providing there are attackers and defenders, the winning clan splits those points equally among it's online members.

d)Erica sends random points from 0  to 20, randomly to people that are participating in pvp as a reward for their courage of risking to lose hero points in battle.

 

4)Points exit the game by performing special abilities. Each special ability costs 1% of your hero points. Currently there are two special abilities.

 

a).stealth, makes you invisible as long as you dont perform actions or move. Can't be used in combat or when you are surrounded by players.

b).locate <playername> allows you to locate the whereabouts of a person.

 

5)Points change hands ingame during pvp or pk. The rules are as follows:

a)When you kill someone in pvp, you get 5% of his points. If you are in party, the points split equally in your party.

b)When you pk someone in pvp, you get 10% of his points. Same party rules apply. Clearing karma is custom and not easy as in killing one mob.

c)When you kill a pk, you get 50% of his points.

d)When you win someone in olympiad, you get 10% of his points.

 

Pretty good tho why reset the points, read my previous posts about the ladder thingy. :)

Posted

About that, I thought it too :P Reseting points helps prevent overpowered people to keep hero for very long times. Imagine a player playing the server for like 2 months and has accumulated tons of points. It won't be able for a newcomer to even get close to him.

 

This is where the ladder / hall of fame system comes in. Obviously people should always remember the brave guy that a month ago did a huge point record. So it could be interesting to keep the highest score of each player recorded and present it in a ladder.

 

You know, this could determine, the best hero of all times ;)

Posted

About that, I thought it too :P Reseting points helps prevent overpowered people to keep hero for very long times. Imagine a player playing the server for like 2 months and has accumulated tons of points. It won't be able for a newcomer to even get close to him.

 

This is where the ladder / hall of fame system comes in. Obviously people should always remember the brave guy that a month ago did a huge point record. So it could be interesting to keep the highest score of each player recorded and present it in a ladder.

 

You know, this could determine, the best hero of all times ;)

 

Somewhat agree tho i always love a challange when playing :P

Posted

Speaking of that now, it sounds a great idea. Perhaps the player in each class that holds the top score ever should get an announcement when he logs in ;)

 

if(player.isBestOfAllTime())

Announcements.announceToAll(player.getName()+", the best "+ player.getBaseClassId().name() +" of all time, has logged in. ");

 

Goosebumps !!!

 

"Cause being the best, is one thing. Being the best ever, is another ..."

Posted

Speaking of that now, it sounds a great idea. Perhaps the player in each class that holds the top score ever should get an announcement when he logs in ;)

 

if(player.isBestOfAllTime())

Announcements.announceToAll(player.getName()+", the best "+ player.getBaseClassId().name() " of all time, has logged in. ");

 

Goosebumps !!!

 

And every person online at that time is forced to bow :P

Joking apart, it really sounds nice.

Posted

hahahahahahaha, ya auto Bow social action would by SUCH TROLLING !!!! Everyone would get mad :P

 

Alright its decided then, non-premium accounts will perform auto SocialAction BOW when the best ever in each class logs in  :troll:

Posted

Hahahah, well I was actually joking, but this will be so annoying to them, that it might even cause them to either become more competitive or buy premium accounts. :P

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

    • 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).
    • Use only middleman this guy scammer old discord goddardshop   
  • 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