U3Games

Games | Desarrollo & Soporte => L2 | Implementaciones => L2 | Sección de Servidores => Lineage => L2 | Eventos => Mensaje iniciado por: Swarlog en Jun 29, 2025, 12:02 AM

Título: Evento Hide (Iracundus)
Publicado por: Swarlog en Jun 29, 2025, 12:02 AM

### Eclipse Workspace Patch 1.0
#P Chr.6GMS
Index: java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java
===================================================================
--- java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java    (revision 5263)
+++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java    (working copy)
@@ -51,6 +51,7 @@
 import net.sf.l2j.gameserver.ai.L2PlayerAI;
 import net.sf.l2j.gameserver.cache.HtmCache;
 import net.sf.l2j.gameserver.cache.WarehouseCacheManager;
+import net.sf.l2j.gameserver.clientpackets.Say2;
 import net.sf.l2j.gameserver.communitybbs.BB.Forum;
 import net.sf.l2j.gameserver.communitybbs.Manager.ForumsBBSManager;
 import net.sf.l2j.gameserver.datatables.CharTemplateTable;
@@ -82,6 +83,7 @@
 import net.sf.l2j.gameserver.model.BlockList;
 import net.sf.l2j.gameserver.model.FishData;
 import net.sf.l2j.gameserver.model.ForceBuff;
+import net.sf.l2j.gameserver.model.Hide;
 import net.sf.l2j.gameserver.model.Inventory;
 import net.sf.l2j.gameserver.model.ItemContainer;
 import net.sf.l2j.gameserver.model.L2Attackable;
@@ -137,6 +139,7 @@
 import net.sf.l2j.gameserver.serverpackets.ChangeWaitType;
 import net.sf.l2j.gameserver.serverpackets.CharInfo;
 import net.sf.l2j.gameserver.serverpackets.ConfirmDlg;
+import net.sf.l2j.gameserver.serverpackets.CreatureSay;
 import net.sf.l2j.gameserver.serverpackets.EtcStatusUpdate;
 import net.sf.l2j.gameserver.serverpackets.ExAutoSoulShot;
 import net.sf.l2j.gameserver.serverpackets.ExDuelUpdateUserInfo;
@@ -3826,6 +3829,16 @@
                     && (target.getOwnerId() == getObjectId() || isInLooterParty(target.getOwnerId())))
                 target.resetOwnerTimer();
 
+            if(target.isHide()){
+               
+                getInventory().addItem("", Hide.rewardId, Hide.rewardCount, this, null);
+                sendPacket(new InventoryUpdate());
+                sendMessage("You won the event!");
+                Hide.cleanEvent();
+                Broadcast.toAllOnlinePlayers(new CreatureSay(0,Say2.ANNOUNCEMENT,"Hide Event","Winner is: "+getName()+".Event ended."));
+                target.setHide(false);
+                return;
+            }
             // Remove the L2ItemInstance from the world and send server->client GetItem packets
             target.pickupMe(this);
              if(Config.SAVE_DROPPED_ITEM) // item must be removed from ItemsOnGroundManager if is active
Index: java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminGoHide.java
===================================================================
--- java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminGoHide.java    (revision 0)
+++ java/net/sf/l2j/gameserver/handler/admincommandhandlers/AdminGoHide.java    (revision 0)
@@ -0,0 +1,59 @@
+/* This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+ * 02111-1307, USA.
+ *
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+package net.sf.l2j.gameserver.handler.admincommandhandlers;
+
+import net.sf.l2j.gameserver.handler.IAdminCommandHandler;
+import net.sf.l2j.gameserver.model.Hide;
+import net.sf.l2j.gameserver.model.actor.instance.L2PcInstance;
+
+/**
+ *
+ * @author  Iracundus
+ */
+public class AdminGoHide implements IAdminCommandHandler
+{
+
+    private static String[] ADMIN_COMMANDS = {"admin_gohide"};
+
+    @Override
+    public boolean useAdminCommand(String command, L2PcInstance activeChar)
+    {
+        if(command.startsWith("admin_gohide")){
+            if(activeChar == null)
+                return false;
+           
+            if(Hide.running == false){
+                activeChar.sendMessage("Event is not in progress");
+                return false;
+            }
+           
+            int x = Hide.getX() , y = Hide.getY() , z = Hide.getZ();
+            activeChar.teleToLocation(x, y, z);
+        }
+       
+        return true;
+    }
+
+   
+    @Override
+    public String[] getAdminCommandList()
+    {
+        return ADMIN_COMMANDS;
+    }
+   
+}
Index: java/net/sf/l2j/gameserver/model/L2ItemInstance.java
===================================================================
--- java/net/sf/l2j/gameserver/model/L2ItemInstance.java    (revision 5263)
+++ java/net/sf/l2j/gameserver/model/L2ItemInstance.java    (working copy)
@@ -92,6 +92,8 @@
     /** Slot where item is stored */
     private int _locData;
 
+    private boolean hide;
+   
     /** Level of enchantment of the item */
     private int _enchantLevel;
 
@@ -286,6 +288,14 @@
         }
     }
 
+    public boolean isHide(){
+        return hide;
+    }
+   
+    public void setHide(boolean j){
+        hide = j;
+    }
+   
     // No logging (function designed for shots only)
     public void changeCountWithoutTrace(String process, int count, L2PcInstance creator, L2Object reference)
     {
Index: java/net/sf/l2j/gameserver/model/Hide.java
===================================================================
--- java/net/sf/l2j/gameserver/model/Hide.java    (revision 0)
+++ java/net/sf/l2j/gameserver/model/Hide.java    (revision 0)
@@ -0,0 +1,120 @@
+package net.sf.l2j.gameserver.model;
+
+
+import net.sf.l2j.gameserver.ThreadPoolManager;
+import net.sf.l2j.gameserver.clientpackets.Say2;
+import net.sf.l2j.gameserver.network.SystemMessageId;
+import net.sf.l2j.gameserver.serverpackets.CreatureSay;
+import net.sf.l2j.gameserver.serverpackets.SystemMessage;
+import net.sf.l2j.gameserver.util.Broadcast;
+import net.sf.l2j.util.Rnd;
+
+public class Hide{
+   
+    public static final int rewardId = 2807;
+    public static final int rewardCount = 50;
+    private static Hide _instance;
+    private final int delay = 180000;
+    private final static int itemId = 7683;
+    private final static int itemCount = 1;
+    public static boolean running = false;
+    private static int x;
+    private static int y;
+    private static int z = 0;
+    private final int[][] teleports = { {116496,145020,-2569} , {18605,145378,-3129} , {-83083,150505,-3134} };
+    static L2ItemInstance item = null;
+   
+    public static int getX(){
+        return x;
+    }
+   
+    public static int getY(){
+        return y;
+    }
+   
+    public static int getZ(){
+        return z;
+    }
+   
+    public static int getItemId(){
+        return itemId;
+    }
+   
+    public static int getItemCount(){
+        return itemCount;
+    }
+   
+    public void startEvent(){
+        running = true;
+        System.out.println("Automatic Hide Event started with success.");
+        int s = Rnd.get(teleports.length);
+        x = teleports[s][0];
+        y = teleports[s][1];
+        z = teleports[s][2];
+        SystemMessage sm = new SystemMessage(SystemMessageId.S2_WAS_DROPPED_IN_THE_S1_REGION);
+        sm.addZoneName(getX(), getY(), getZ());
+        sm.addItemName(itemId);
+        item = new L2ItemInstance(Rnd.get(65535),itemId);
+        L2World.getInstance().storeObject(item);
+        item.setCount(itemCount);
+        item.setHide(true);
+        item.getPosition().setWorldPosition(x, y ,z);
+        item.getPosition().setWorldRegion(L2World.getInstance().getRegion(item.getPosition().getWorldPosition()));
+        item.getPosition().getWorldRegion().addVisibleObject(item);
+        item.setProtected(false);
+        item.setIsVisible(true);
+        L2World.getInstance().addVisibleObject(item, item.getPosition().getWorldRegion(), null);
+       
+       
+  
+        Broadcast.toAllOnlinePlayers(new CreatureSay(0,Say2.ANNOUNCEMENT,"Hide Event","Event started, Item dropped: "+item.getItem().getName()+", find it and win!"));
+        Broadcast.toAllOnlinePlayers(sm);
+        ThreadPoolManager.getInstance().scheduleGeneral(new Check(), 60000);
+    }
+   
+    public void checkAfterTime(){
+        if(running == false)
+            return;
+        if(item.isHide())
+            item.setHide(false);
+        item.decayMe();
+        L2World.getInstance().removeObject(item);
+        cleanEvent();
+        Broadcast.toAllOnlinePlayers(new CreatureSay(0,Say2.ANNOUNCEMENT,"Hide Event","Unfortunately,none find the item , event finished!"));
+    }
+   
+    public static void cleanEvent(){
+        x = 0;
+        y = 0;
+        z = 0;
+        running = false;
+        if(item != null){
+            item.decayMe();
+        L2World.getInstance().removeObject(item);
+        }
+        item = null;
+    }
+   
+    private Hide(){
+        ThreadPoolManager.getInstance().scheduleGeneralAtFixedRate(new Event(), delay, delay);
+        System.out.println("Automatic Hide event loaded with success.");
+    }
+   
+    public static Hide getInstance(){
+        if(_instance == null)
+            _instance = new Hide();
+        return _instance;
+    }
+   
+    public class Check implements Runnable{
+        public void run(){
+            checkAfterTime();
+        }
+    }
+   
+    public class Event implements Runnable{
+        public void run(){
+            startEvent();   
+        }
+    }
+}
\ No newline at end of file
Index: java/net/sf/l2j/gameserver/GameServer.java
===================================================================
--- java/net/sf/l2j/gameserver/GameServer.java    (revision 5263)
+++ java/net/sf/l2j/gameserver/GameServer.java    (working copy)
@@ -90,6 +90,7 @@
 import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminGeodata;
 import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminGm;
 import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminGmChat;
+import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminGoHide;
 import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminHeal;
 import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminHelpPage;
 import net.sf.l2j.gameserver.handler.admincommandhandlers.AdminInvul;
@@ -218,6 +219,7 @@
 import net.sf.l2j.gameserver.instancemanager.SiegeManager;
 import net.sf.l2j.gameserver.model.AutoChatHandler;
 import net.sf.l2j.gameserver.model.AutoSpawnHandler;
+import net.sf.l2j.gameserver.model.Hide;
 import net.sf.l2j.gameserver.model.L2Manor;
 import net.sf.l2j.gameserver.model.L2PetDataTable;
 import net.sf.l2j.gameserver.model.L2World;
@@ -518,6 +520,7 @@
 
         _adminCommandHandler = AdminCommandHandler.getInstance();
         _adminCommandHandler.registerAdminCommandHandler(new AdminAdmin());
+        _adminCommandHandler.registerAdminCommandHandler(new AdminGoHide());
         _adminCommandHandler.registerAdminCommandHandler(new AdminInvul());
         _adminCommandHandler.registerAdminCommandHandler(new AdminDelete());
         _adminCommandHandler.registerAdminCommandHandler(new AdminKill());
@@ -604,6 +607,7 @@
             CoupleManager.getInstance();
 
         TaskManager.getInstance();
+        Hide.getInstance();
 
         GmListTable.getInstance();