Jump to content
  • 0

Cancellation Sys For H5


Question

Posted (edited)

Hello everyone, i wanted to ask help for a code that returns buffs(cancelled) after a certain amount of time cause i've tried to adapt on latest rev of l2j all existing cancel scripts shared but failed cause
many files removed or codes merged and i cant find a way to do it.

 

Data Rev:10247
server Rev:6478

 

First code

open eclipse.

Now go to package explorer.

look into L2J_Datapack and go to data.scripts.handlers.effecthandlers and open Cancel.java

open search

Type: package handlers.skillhandlers;

And paste this under: package handlers.skillhandlers;
 

import javolution.util.FastList;

import com.l2jserver.gameserver.datatables.SkillTable;

import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;

import com.l2jserver.gameserver.ThreadPoolManager;

import com.l2jserver.gameserver.model.skills.L2Skill;

 

then open search

Type: return L2EffectType.CANCEL;

                }

And paste under: return L2EffectType.CANCEL;

                }
 

       private int seconds = 13;

                private void returnbuffs (L2Character player, FastList<L2Effect>list)

                {             

                                for (L2Effect e : list)

                                {

                                                L2Skill skill = SkillTable.getInstance().getInfo(e.getSkill().getId(), e.getLevel());

                                                               

                                                if(skill != null)

                                                {

                                                                skill.getEffects(player, player);

                                                }                                             

                                }

                                ((L2PcInstance)player).isoncanceltask=false;     

                }             

 

Then open search

Type: ((L2Npc)activeChar)._spiritshotcharged = false;

                                }

And remove line under: ((L2Npc)activeChar)._spiritshotcharged = false;

                                }

L2Character target;

 

 

Then open search

Type: if (!(obj instanceof L2Character))

                                                                continue;

And remove line under: if (!(obj instanceof L2Character))

                                                                continue;

target = (L2Character)obj;

Replace it with: final L2Character target = (L2Character)obj;

Then open search

Type:  final L2Effect[] effects = target.getAllEffects();

And paste under: final L2Effect[] effects = target.getAllEffects();

 

       if (target instanceof L2PcInstance)

                {

                ((L2PcInstance)target).clearcancelbuffs();

                }

Then open search

Type: lastCanceledSkillId = eff.getSkill().getId();

And paste under: lastCanceledSkillId = eff.getSkill().getId();

if (target instanceof L2PcInstance)

                                                                                {

                                                                                                ((L2PcInstance)target).addcancelbuffs(effect);                

                                                                                }

Then open search

Type: lastCanceledSkillId = eff.getSkill().getId();

And paste under: lastCanceledSkillId = eff.getSkill().getId();

 

if (target instanceof L2PcInstance)

                                                                                                {

                                                                                                                ((L2PcInstance)target).addcancelbuffs(effect);                

                                                                                                }

Then open search

Type: //Possibility of a lethal strike

                                                Formulas.calcLethalHit(activeChar, target, skill);

And paste under: //Possibility of a lethal strike

                                                Formulas.calcLethalHit(activeChar, target, skill);

 

if (target instanceof L2PcInstance && ((L2PcInstance)target).getcancelbuffs()!=null && !((L2PcInstance)target).isoncanceltask)

                                                {

                                                                ((L2PcInstance)target).sendMessage("You will get back your buffs in "+seconds+" seconds.");

                                                               

                                                                ThreadPoolManager.getInstance().scheduleGeneral(new Runnable()

                                                                {

                                                                                @Override

                                                                                public void run()

                                                                                {

                                                                                                ((L2PcInstance)target).isoncanceltask=true;

                                                                                                returnbuffs(target, ((L2PcInstance)target).getcancelbuffs());    

                                                                                }

                                                                },seconds * 1000);                          

                                                }

 

Second code

Now go to package explorer.

look into com.l2jserver.gameserver.model and open L2Effect.java

Press Ctrl+f to open the search tool.

Type: if (_count == 0 && _icon && getEffected() instanceof L2PcInstance)

                                                                {

and press on search.

Remove line under: if (_count == 0 && _icon && getEffected() instanceof L2PcInstance)

                                                                {             

SystemMessage smsg3 = SystemMessage.getSystemMessage(SystemMessageId.S1_HAS_WORN_OFF);                            smsg3.addSkillName(_skill);

                getEffected().sendPacket(smsg3);

and replace with:

 if (!((L2PcInstance)getEffected()).isoncanceltask)

                                                                                {

                                                                                                SystemMessage smsg3 = SystemMessage.getSystemMessage(SystemMessageId.S1_HAS_WORN_OFF);

                                                                                                smsg3.addSkillName(_skill);

                                                                                                getEffected().sendPacket(smsg3);

                                                                                }

 

 

Third code

look into L2J_server and go to com.l2jserver.gameserver.model.actor.instance and open L2PcInstance.java

open search

Type: private static final String DELETE_TP_BOOKMARK = "DELETE FROM character_tpbookmark WHERE charId=? AND Id=?";

                And paste this under: private static final String DELETE_TP_BOOKMARK = "DELETE FROM character_tpbookmark WHERE charId=? AND Id=?";

                //Cancel return back buffs

                private FastList<L2Effect> cancelbuffs = new FastList<L2Effect>();          //wyatt

                public boolean isoncanceltask = false;

               

                public FastList<L2Effect> getcancelbuffs()

                {

                                return cancelbuffs;

                }

                                               

                public void addcancelbuffs(L2Effect effect)

                {

                                cancelbuffs.add(effect);

                }

               

                public void clearcancelbuffs()

                {

                                cancelbuffs.clear();

                }

Cancel.java CHANGED DispelByCategory.java
L2Effect CHANGED AbstractEffect

Thnx in advance.

Edited by dasoldier

0 answers to this question

Recommended Posts

There have been no answers to this question yet

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