Jump to content

Question

Posted

Hello to everyone,

 

I'm using L2J Frozen.

 

 

I want to make Ant Queen Lair, Antharas Lair, Baium Lair and other Raid-Bosses Lairs like a pvp-zone but wihout auto-ress or auto-noblesse or any other ItemPvPreward and stuff like that. I want to make it a simple Auto-Flagged Zone when players enter or teleport there they are auto-flagged. I was thinking that the best for it its to make "Arenas" like Coliseum, Giran Arena , etc.. Auto-Flagged zones so I can change in  "data/zone/zones.xml" from: "BossZone" to - "Arena".

     

    <!-- Boss zone Lair of Ant Queen --> 

    <zone id='12019' type='BossZone' shape='NPoly' minZ='-5947' maxZ='-5547' bossId='29001'>
    <stat name='name' val='LairofAntQueen'/>
    <stat name='EnabledByDefault' val='false'/>
    <stat name='InvadeTime' val='0'/>
 
If anyone can help me to share some sort of code for this or some advice I will really appreciate it.
 
Thank you and have a nice day.

10 answers to this question

Recommended Posts

  • 0
Posted (edited)

Its a bad idea to turn boss zone into arena you will lose all your restrictions that boss zone have. You should just give pvpflag when the player is entering in this zone and keep it until onExit is activate . (add flag in method onEnter in your bosszone)

Edited by melron
  • 0
Posted

Its a bad idea to turn boss zone into arena you will lose all your restrictions that boss zone have. You should just give pvpflag when the player is entering in this zone and keep it until onExit is activate . (add flag in method onEnter in your bosszone)

Thank you for your advice, can you be more explicit about "add flag in method onEnter in your bosszone" ? I know for experienced people like you may sound  a bit noobish but I'm new in everything which includes Server Development.

  • 0
Posted (edited)

L2bosszone.java

Find onEnter Method and put a check

Like

player.setPvpFlag(1);

 

And after onExit

player.setPvpFlag(0);

player.broadcastUserInfo();

Edited by Reborn12
  • 0
Posted

To make it clearer for you and easier lets just follow Reborn's advice.

 

Start eclipse and go to your source files.

Double click on the gameserver-source.

Find the l2bosszone.java file and open it.

After that hit "ctrl+f" and search for the "onEnter" line .Once you're done copy this "player.setPvpFlag(1);" and paste it under the "onEnter" line.

 

Next hit "ctrl+f" and search for the "onExit" line. Copy these 2 lines

player.setPvpFlag(0);

player.broadcastUserInfo(); and paste them under the "onExit" line.

 

Lastly, check if there are any errors and see what you can do about them by dragging your mouse on the (x) or the (!).

If there are no errors , save the file and compile.

 

Once you're done go to your workspace/gameserver/libs and copy the l2jfrozen.jar file. Then paste it to your server files "gameserver/libs".

Start your server and check if it works.

  • Upvote 1
  • 0
Posted

To make it clearer for you and easier lets just follow Reborn's advice.

 

Start eclipse and go to your source files.

Double click on the gameserver-source.

Find the l2bosszone.java file and open it.

After that hit "ctrl+f" and search for the "onEnter" line .Once you're done copy this "player.setPvpFlag(1);" and paste it under the "onEnter" line.

 

Next hit "ctrl+f" and search for the "onExit" line. Copy these 2 lines

player.setPvpFlag(0);

player.broadcastUserInfo(); and paste them under the "onExit" line.

 

Lastly, check if there are any errors and see what you can do about them by dragging your mouse on the (x) or the (!).

If there are no errors , save the file and compile.

 

Once you're done go to your workspace/gameserver/libs and copy the l2jfrozen.jar file. Then paste it to your server files "gameserver/libs".

Start your server and check if it works.

Thanks both of you for your help

 

When I try to add the lines I get 2 erros, I have attached some pictures to see better what happened.

 

Error 1

http://imgur.com/a/Gtnx5

 

Error 2

http://imgur.com/fAlyuzB

  • 0
Posted

Its a bad idea to turn boss zone into arena you will lose all your restrictions that boss zone have. You should just give pvpflag when the player is entering in this zone and keep it until onExit is activate . (add flag in method onEnter in your bosszone)

 

 

L2bosszone.java

Find onEnter Method and put a check

Like

player.setPvpFlag(1);

 

And after onExit

player.setPvpFlag(0);

player.broadcastUserInfo();

 

 

To make it clearer for you and easier lets just follow Reborn's advice.

 

Start eclipse and go to your source files.

Double click on the gameserver-source.

Find the l2bosszone.java file and open it.

After that hit "ctrl+f" and search for the "onEnter" line .Once you're done copy this "player.setPvpFlag(1);" and paste it under the "onEnter" line.

 

Next hit "ctrl+f" and search for the "onExit" line. Copy these 2 lines

player.setPvpFlag(0);

player.broadcastUserInfo(); and paste them under the "onExit" line.

 

Lastly, check if there are any errors and see what you can do about them by dragging your mouse on the (x) or the (!).

If there are no errors , save the file and compile.

 

Once you're done go to your workspace/gameserver/libs and copy the l2jfrozen.jar file. Then paste it to your server files "gameserver/libs".

Start your server and check if it works.

Ok i have managed to fix all of the errors in Eclipse.

 

The Auto-Flag is working only when I enter to Baium Lair, Antharas Lair and Valakas Lair. (

When i tp from custom gatekeeper to Ant Queen (Ant Queen Lair) or Orfen, Core and Zaken its not working. The player is not getting Auto-Flagged.

Some advice ? What should I do?

 

Thank you !

  • 0
Posted (edited)

Ok i have managed to fix all of the errors in Eclipse.

 

The Auto-Flag is working only when I enter to Baium Lair, Antharas Lair and Valakas Lair. (

When i tp from custom gatekeeper to Ant Queen (Ant Queen Lair) or Orfen, Core and Zaken its not working. The player is not getting Auto-Flagged.

Some advice ? What should I do?

 

Thank you !

give me one minute and i will post all the .java file here

 

copy paste file and have fun 

https://pastebin.com/2haL2rds

 

Btw about other zones they will not work..

create a new zone FlagZone and make them Flagzones in An new file like Flazones.xml

Edited by Reborn12
  • 0
Posted (edited)

give me one minute and i will post all the .java file here

 

copy paste file and have fun 

https://pastebin.com/2haL2rds

 

Btw about other zones they will not work..

create a new zone FlagZone and make them Flagzones in An new file like Flazones.xml

Hello again, maybe I'm a bit frustrating... sorry about that :D

 

I copy-paste all of the codes from .java file that you uploaded into my L2Bosszone.java file.

I created a file in gameserver/data/zones/FlagZone.xml

I copied everything with "BossZone" from "zone.xml" to "flagzone.xml" and edited them from BossZone to FlagZone

as you can see here : http://imgur.com/13QIdDg

 

Im not flagged neither in one of the RaidBoss Lairs.

 

Thank you again.

 

 

What do you think its not better to add some lines in the L2ArenaZone.java with autoflag?? 

And I can just edit in zone.xml from BossZone to Arena ?

Edited by RiperRO
  • 0
Posted

No dude its not better and you need for flagzones java side support..

If i got time after my work i will make a flagzone.java and send you here...

  • 0
Posted

No dude its not better and you need for flagzones java side support..

If i got time after my work i will make a flagzone.java and send you here...

Allright thank you very much, I really appreciate that you help me

 

Have  a nice day

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