Jump to content

Recommended Posts

Posted

We will see how long u will be online, if u will fail in 2 weeks - u`ll get big shame, cuz u promising us about long online time!

 

Only time can tell, we aren't perfect but we are taking every stride possible to reach a level that is close to perfection.

 

The server isn't "pay-to-win", there are no overpowered donations available, and everything is available through voting or playing.

 

The reason we did this is because the server is for you guys, not us.  We want you to enjoy it.

 

Personally, the reason for making this server is because I didn't like Goddess of Destruction on retail, I liked all the previous chronicles, and

thought GoD ruined L2.  So I played private servers for awhile, and then thought I'd try making my own.

 

 

Posted

We will see how long u will be online, if u will fail in 2 weeks - u`ll get big shame, cuz u promising us about long online time!

its not up to his hand (that much)

we are the players and we decide

so bring ppl to server in order not to fail

Posted

excellent server so far theres 12 ppl on atm that i can see on the site and they seem friendly enough hopefully there will be more ppl this server is promising imo :happyforever:

Posted

So far we have roughly 35~ players or so. 

 

Again if you have any questions feel free to ask. 

 

We are constantly making improvements to the server, and are currently adding a nice scheme buffer so you can add player buff profiles.

 

Improvements cannot be made if we don't have input from the players.

Posted

The reason I m not joining is the buffs' duration .

GL with the server .

 

Yeah we realized that 30 min buffs were no good, so we have changed the duration to 1 hour.  :)

 

Thanks!

 

 

Posted

for a x30 u have to make npc buffer with buffs 2 hours . song dances as well . u ask  urself why u have 20 online ? thats the reason . people like a mid  rate cuz is a mid rate . what u made there is a mid-high rate  items gmshop with low rate buffers . better add all buffs except kamael in npc buffer . make buff slots around 36/16 . all buffs 2 hours and u will see that people will join . at least thats what i think.

Posted

for a x30 u have to make npc buffer with buffs 2 hours . song dances as well . u ask  urself why u have 20 online ? thats the reason . people like a mid  rate cuz is a mid rate . what u made there is a mid-high rate  items gmshop with low rate buffers . better add all buffs except kamael in npc buffer . make buff slots around 36/16 . all buffs 2 hours and u will see that people will join . at least thats what i think.

 

I couldn't agree more with you :)

Posted

I used to play a server that had 1 hour buff durations, was a x30 rates server, and had 1800 players back when I was playing on it.

 

That server also had a nice scheme buffer with every buff you could want, which was nice, but it made it to where people wouldn't play SWS / BD

and the only people playing prophets were just playing them to try to win Olympiad.

 

I also know that that isn't the only reason that server was successful, i'm just using it as an example.

 

We've realized what works and what doesn't, which is why we're working on a nice scheme buffer.  That buffer will be added as soon as we're done making it.

 

 

Thanks for your suggestions and input, it's greatly appreciated!

  • 2 weeks later...
Posted

We have decided to add a scheme buffer to our server.

 

-You can save up to 4 schemes per character.

-Choose from every buff up to lvl 80 (minus Kamael, dwarven, and certain special buffs)

-Available next to every Gatekeeper, and other places we see fit.

-Buff duration has been extended to two hours.

-Toggle pet mode for scheme buffs for your servitor.

 

Visit us at www.teralith.com for more info and how to connect!

 

Z9dApi0.jpg

Posted

nice features dude i will give a try good luck :)

 

Thanks Lekino! Hope you enjoy it! :)

 

If you have any questions or concerns, feel free to message us anytime :)

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