Acacia Posted June 5, 2020 Share Posted June 5, 2020 (edited) Okay , a simple drop event coded on l2j Sources it multiplies the drops of item only if its 100% rate you type //dropevent to start the event after 15 mins ex. and re-type //dropevent if you wish to force stop it there is a configuration on the rate default is x1.2 the event will last for 60 minutes , and it will announce back when it ends if event is active and a player logs in he will get a notification by pm Create a new class : DropEvent package com.event; import net.sf.l2j.Config; import net.sf.l2j.gameserver.Announcements; import net.sf.l2j.gameserver.ThreadPoolManager; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; import net.sf.l2j.gameserver.network.clientpackets.Say2; import net.sf.l2j.gameserver.network.serverpackets.CreatureSay; /** * @author Kishin */ public class DropEvent { private int startIn = Config.DROP_EVENT_START; private int stopIn = Config.DROP_EVENT_END; public void sendDropEventInfo(L2PcInstance player) { player.broadcastPacket(new CreatureSay(player.getObjectId() ,Say2.TELL," "+player.getName()+":","Drop Event is currently running!")); player.sendMessage("Drop event is currently running!"); } public void startEvent() { Announcements.getInstance().announceToAll("Double drop event will start in "+startIn+" minutes"); ThreadPoolManager.getInstance().scheduleGeneral(new startTimer(), (startIn *60 * 1000)); } public void forceStop() { setDoubleDrop(false); } public class startTimer implements Runnable { public void run() { setDoubleDrop(true); Announcements.getInstance().announceToAll("Double drop event has started !"); Announcements.getInstance().announceToAll("Event will end in "+stopIn+" minutes !"); ThreadPoolManager.getInstance().scheduleGeneral(new stopTimer(), (stopIn * 60 * 1000)); } } public class stopTimer implements Runnable { public void run() { if (isDoubleDrop()) { setDoubleDrop(false); Announcements.getInstance().announceToAll("Double drop event has ended"); } } } public static DropEvent getInstance() { return DropEvent.SingletonHolder._instance; } private static class SingletonHolder { protected static final DropEvent _instance = new DropEvent(); } private boolean _isDoubleDrop; public void setDoubleDrop(boolean isDoubleDrop) { _isDoubleDrop = isDoubleDrop; } public boolean isDoubleDrop() { return _isDoubleDrop; } } L2Attackable.java search this -> private RewardItem calculateCategorizedRewardItem and under this : dropChance *= Config.L2JMOD_CHAMPION_REWARDS; paste : if (DropEvent.getInstance().isDoubleDrop()) { if ( dropChance == 1000000) { dropChance *= Config.DROP_EVENT_RATE; } } EnterWorld.java -> paste somewhere if (DropEvent.getInstance().isDoubleDrop()) { DropEvent.getInstance().sendDropEventInfo(activeChar); } in Config.java paste somewhere this : public static int DROP_EVENT_START; public static int DROP_EVENT_END; public static float DROP_EVENT_RATE; pick your destination file mine is customSettings paste : DROP_EVENT_START = Integer.parseInt(customsSettings.getProperty("dropEventStart", "15")); DROP_EVENT_END = Integer.parseInt(customsSettings.getProperty("dropEventEnd", "60")); DROP_EVENT_RATE = Float.parseFloat(customsSettings.getProperty("dropEventRate", "1.2")); Create a new class in admincommandhandlers AdminDropEvent <- package net.sf.l2j.gameserver.handler.admincommandhandlers; import com.event.DropEvent; import net.sf.l2j.gameserver.Announcements; import net.sf.l2j.gameserver.handler.IAdminCommandHandler; import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance; /** * @author Kishin */ public class AdminDropEvent implements IAdminCommandHandler { private static final String[] ADMIN_COMMANDS = { "admin_dropevent" }; @Override public boolean useAdminCommand(String command, L2PcInstance activeChar) { try { if (command.equals("admin_dropevent")) { if (DropEvent.getInstance().isDoubleDrop()) { DropEvent.getInstance().forceStop(); Announcements.getInstance().announceToAll("Admin has ended the drop event"); } else { DropEvent.getInstance().startEvent(); } } } catch (Exception e) { e.printStackTrace(); } return false; } @Override public String[] getAdminCommandList() { return ADMIN_COMMANDS; } } Have fun :) register the command handler and good to go Edited May 15, 2021 by Kishin 1 Quote Link to comment Share on other sites More sharing options...
Contessina* Posted June 5, 2020 Share Posted June 5, 2020 Thanks for share man Quote Link to comment Share on other sites More sharing options...
EdithFinch Posted June 5, 2020 Share Posted June 5, 2020 if (DropEvent.getInstance().isDoubleDrop() == true) Possibly the poorest code i have seen in 10 years All this: @Override public boolean useAdminCommand(String command, L2PcInstance activeChar) { try { if (command.equals("admin_startdrop")) { if (DropEvent.getInstance().isDoubleDrop() == false) { DropEvent.getInstance().startEvent(); } } else if (command.equals("admin_stopdrop")) { if (DropEvent.getInstance().isDoubleDrop() == true) { DropEvent.getInstance().forceStop(); Announcements.getInstance().announceToAll("Admin has ended the drop event"); } } } catch (Exception e) { e.printStackTrace(); } return false; } Can be written as: @Override public boolean useAdminCommand(String command, L2PcInstance activeChar) { if (DropEvent.getInstance().isDoubleDrop()) { DropEvent.getInstance().forceStop(); } else { DropEvent.getInstance().startEvent(); } } The whole code is a mess, it's like we are in 2007 Quote Link to comment Share on other sites More sharing options...
Acacia Posted June 5, 2020 Author Share Posted June 5, 2020 (edited) ohh forgot to remove the true false part on isdouble :D was typed to be readable then remove on the other hand yes admincommand i used an old code as pattern , thank you for reply :) Edited June 5, 2020 by Kishin Quote Link to comment Share on other sites More sharing options...
Contessina* Posted June 5, 2020 Share Posted June 5, 2020 At least HE SHARE something in this dead forum , instead of judge .. u can tell him mistakes 2 Quote Link to comment Share on other sites More sharing options...
Acacia Posted June 5, 2020 Author Share Posted June 5, 2020 19 minutes ago, Contessina* said: At least HE SHARE something in this dead forum , instead of judge .. u can tell him mistakes its fine mate and thank you , we all know how this forum works , everyone is a java diva around here so you dont have to take anything personal and argue about it . you walk in prepared :D Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.