Jump to content

classic [L2J] L2 Netherrealm


Recommended Posts

Guest Elfocrash
Posted

Oh btw i wanted to say that te subclass system is disabled same for thr certi system. However there is a brand new class specalization system that you gonna love.

Just some words: Lets say i am a paladin. When i hit 80 i will be able to choose a specialization. The spec for all the tank classes are the same so a dark avenger will have to choose between te same specs. The specs will give to thr classes 3 active abilites and 3 passive ones. The 3 specs for tanks are "Guardian" "Retribution" and "Destruction". The guardian tanks get def stat increase passive buffs and tanky actives. Retribution have CC specializations and less cc on thrmselves and Destruction have more offensive stats and offensive abilites. There will be different names of specs and skills for each class set for example daggers and archers

Guest Elfocrash
Posted

Sorry guys but i was working on the files without actually having the client. Today i will download it and you will have the first previews of the systems in the server.

 

Also i will announce a date for the closed Beta in order to test some stuff.

Posted

. The specs will give to thr classes 3 active abilites and 3 passive ones. The 3 specs for tanks are "Guardian" "Retribution" and "Destruction".

 

Awesome :troll:

Posted

I just read all the info you wrote till now for your server. It seemed AWESOME to me and I just can`t wait for the Closed Beta neither for the G.O. :) cheers wish u all best ;]

Guest Elfocrash
Posted

site?

It's too early. I'm focusing on the files for now.

Guest Elfocrash
Posted

New Feature: Buff Scrolls

 

Yeah i know this sort of already exists but i customize it a bit.

As you know all the classes have a buff for personal or pt reasons. However you wont always be in a pt for buffs.

Players will be able to inscribe the buff in a blank scroll and make it a Scroll of "buff name".

Players who use this scroll get the effect of the buff inscribed in the scroll. The scrolls are sellable.

However players will be able to get max 5 blank scrolls per day. The blank scrolls are not tradeable.

Posted

New Feature: Buff Scrolls

 

Yeah i know this sort of already exists but i customize it a bit.

As you know all the classes have a buff for personal or pt reasons. However you wont always be in a pt for buffs.

Players will be able to inscribe the buff in a blank scroll and make it a Scroll of "buff name".

Players who use this scroll get the effect of the buff inscribed in the scroll. The scrolls are sellable.

However players will be able to get max 5 blank scrolls per day. The blank scrolls are not tradeable.

 

I saw something similiar in another server but with the skill enchant, ppl used to put in the shop giant's codex who would enchant a type of skill directly to a value however the player would have its skill back to default.

Guest Elfocrash
Posted

I saw something similiar in another server but with the skill enchant, ppl used to put in the shop giant's codex who would enchant a type of skill directly to a value however the player would have its skill back to default.

Well obviously it is nothing like the one i wrote or above.

Guest Elfocrash
Posted

The level poll is still running. The talent system engine is already coded. I just wait the poll in order to know in which level i should fit it in.

Posted

I can give you some suggestion.

As I saw the poll is more for 90 lvl max U can make it as its voted already and make a npc where when someone hits 90lvl he can get 1 reward skill (by his choise - different skills to choose from for every class) to make it more competitive in pvp/ olympiad games. :)

Criticism and comments are welcome no matter if they will be positive or negative :)

Guest Elfocrash
Posted

I can give you some suggestion.

As I saw the poll is more for 90 lvl max U can make it as its voted already and make a npc where when someone hits 90lvl he can get 1 reward skill (by his choise - different skills to choose from for every class) to make it more competitive in pvp/ olympiad games. :)

Criticism and comments are welcome no matter if they will be positive or negative :)

I already talked about the talent system. I will include screenshots when i finish the design of the skills.

Guest
This topic is now closed to further replies.



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