U3Games

Games | Desarrollo & Soporte => L2 | Sección de Servidores => Lineage => L2 | Apartado de Soporte => Mensaje iniciado por: heladito en Oct 16, 2025, 02:39 PM

Título: Error evento hidden drop [Jfrozen rev 1132]
Publicado por: heladito en Oct 16, 2025, 02:39 PM
Hola, como estan? queria saber si alguno me podia dar una mano con un pequeño error que tengo al colocar el evento Hidden Drop para Jfrozen

Codigo evento
Index: C:/Workspace/L2jFrozen_GameServer/head-src/com/l2jfrozen/gameserver/model/actor/L2PcInstance.java
=========================================================================================================
--- C:/Workspace/L2jFrozen_GameServer/head-src/com/l2jfrozen/gameserver/model/actor/L2PcInstance.java
+++ C:/Workspace/L2jFrozen_GameServer/head-src/com/l2jfrozen/gameserver/model/actor/L2PcInstance.java

import com.l2jfrozen.gameserver.model.entity.event.CTF;
import com.l2jfrozen.gameserver.model.entity.event.DM;
+/** Hide Event */
+import com.l2jfrozen.gameserver.model.entity.event.Hide;

import com.l2jfrozen.util.database.L2DatabaseFactory;
import com.l2jfrozen.util.random.Rnd;
+/** hide event */
+import com.l2jfrozen.gameserver.network.clientpackets.Say2;

        if (target.getItemLootShedule() != null && (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);
+                System.out.println("Automatic Hide Event finished with success.");
+                return;
+            }
+
        // Fixed it's not possible pick up the object if you exceed the maximum weight.
        if (_inventory.getTotalWeight() + target.getItem().getWeight() * target.getCount() > getMaxLoad())
        {
            sendMessage("You have reached the maximun weight.");
            return;
        }

Index: C:/Workspace/L2jFrozen_GameServer/head-src/com/l2jfrozen/gameserver/handler/AdminCommandHandler.java
============================================================================================================
--- C:/Workspace/L2jFrozen_GameServer/head-src/com/l2jfrozen/gameserver/handler/AdminCommandHandler.java
+++ C:/Workspace/L2jFrozen_GameServer/head-src/com/l2jfrozen/gameserver/handler/AdminCommandHandler.java

import com.l2jfrozen.gameserver.handler.admincommandhandlers.AdminWho;
import com.l2jfrozen.gameserver.handler.admincommandhandlers.AdminZone;
+/** Hide Event */
+import com.l2jfrozen.gameserver.handler.admincommandhandlers.AdminGoHide;

    registerAdminCommandHandler(new AdminBuffs());
    registerAdminCommandHandler(new AdminAio());
+        /** Hide Event */
+        registerAdminCommandHandler(new AdminGoHide());

Index: C:/Workspace/L2jFrozen_GameServer/head-src/com/l2jfrozen/gameserver/handler/admincommandhandler/AdminGoHide.java
=======================================================================================================================
--- C:/Workspace/L2jFrozen_GameServer/head-src/com/l2jfrozen/gameserver/handler/admincommandhandler/AdminGoHide.java
+++ C:/Workspace/L2jFrozen_GameServer/head-src/com/l2jfrozen/gameserver/handler/admincommandhandler/AdminGoHide.java

+/* 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 com.l2jfrozen.gameserver.handler.admincommandhandlers;
+
+import com.l2jfrozen.gameserver.handler.IAdminCommandHandler;
+import com.l2jfrozen.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jfrozen.gameserver.model.entity.event.Hide;
+
+/**
+ *
+ * @author  Iracundus ( Remaded Sakretsos )
+ */
+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: C:/Workspace/L2jFrozen_GameServer/head-src/com/l2jfrozen/gameserver/model/actor/instance/L2ItemInstance.java
===================================================================================================================
--- C:/Workspace/L2jFrozen_GameServer/head-src/com/l2jfrozen/gameserver/model/actor/instance/L2ItemInstance.java
+++ C:/Workspace/L2jFrozen_GameServer/head-src/com/l2jfrozen/gameserver/model/actor/instance/L2ItemInstance.java

/** Location of the item : Inventory, PaperDoll, WareHouse. */
private ItemLocation _loc;

/** Slot where item is stored. */
private int _locData;
+   
+    /** Hide Event */
+    private boolean hide;

    if(Config.LOG_ITEMS)
    {
        LogRecord record = new LogRecord(Level.INFO, "CHANGE:" + process);
        record.setLoggerName("item");
        record.setParameters(new Object[]
        {
                this, creator, reference
        });
        _logItems.log(record);
        record = null;
    }
}
+   
+    /** Hide Event */
+    public boolean isHide()
+    {
+            return hide;
+    }
+   
+    public void setHide(boolean j)
+    {
+            hide = j;
+    }
+

Index: C:/Workspace/L2jFrozen_GameServer/head-src/com/l2jfrozen/gameserver/model/entity/event/Hide.java
=======================================================================================================
--- C:/Workspace/L2jFrozen_GameServer/head-src/com/l2jfrozen/gameserver/model/entity/event/Hide.java
+++ C:/Workspace/L2jFrozen_GameServer/head-src/com/l2jfrozen/gameserver/model/entity/event/Hide.java

+/* 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 com.l2jfrozen.gameserver.model.entity.event;
+
+import com.l2jfrozen.Config;
+import com.l2jfrozen.gameserver.thread.ThreadPoolManager;
+import com.l2jfrozen.gameserver.network.clientpackets.Say2;
+import com.l2jfrozen.gameserver.network.SystemMessageId;
+import com.l2jfrozen.gameserver.network.serverpackets.CreatureSay;
+import com.l2jfrozen.gameserver.network.serverpackets.SystemMessage;
+import com.l2jfrozen.gameserver.util.Broadcast;
+import com.l2jfrozen.util.random.Rnd;
+import com.l2jfrozen.gameserver.model.L2World;
+import com.l2jfrozen.gameserver.model.actor.instance.L2ItemInstance;
+
+public class Hide{
+   
+    public static final int rewardId = (Config.HIDE_EVENT_REWARD_ID);
+    public static final int rewardCount = (Config.HIDE_EVENT_REWARD_COUNT);
+    private static Hide _instance;
+    private final int delay = (Config.HIDE_EVENT_DELAY_BEFORE_START);
+    private final static int itemId = (Config.HIDE_EVENT_ITEM_WILL_DROP);
+    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!"));
+        System.out.println("Automatic Hide event finished with success.");
+    }
+   
+    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 aboarded with success.");
+    }
+   
+    public static Hide getInstance(){
+        if(_instance == null)
+            _instance = new Hide();
+        return _instance;
+    }
+   
+    public class Check implements Runnable{
+        @Override
+        public void run(){
+            checkAfterTime();
+        }
+    }
+    public class Event implements Runnable{
+        @Override
+        public void run(){
+            startEvent();   
+        }
+    }
+}

Index: C:/Workspace/L2jFrozen_GameServer/head-src/com/l2jfrozen/gameserver/GameServer.java
==========================================================================================
--- C:/Workspace/L2jFrozen_GameServer/head-src/com/l2jfrozen/gameserver/GameServer.java
+++ C:/Workspace/L2jFrozen_GameServer/head-src/com/l2jfrozen/gameserver/GameServer.java

import com.l2jfrozen.gameserver.model.entity.Hero;
import com.l2jfrozen.gameserver.model.entity.MonsterRace;
+import com.l2jfrozen.gameserver.model.entity.event.Hide;

    CursedWeaponsManager.getInstance();
    TaskManager.getInstance();
+        /** Hide Event */
+        if (Config.HIDE_EVENT)
+        {
+        Hide.getInstance();
+        }

Index: C:/Workspace/L2jFrozen_GameServer/head-src/com/l2jfrozen/Config.java
===========================================================================
--- C:/Workspace/L2jFrozen_GameServer/head-src/com/l2jfrozen/Config.java
+++ C:/Workspace/L2jFrozen_GameServer/head-src/com/l2jfrozen/Config.java

public static String PVP1_CUSTOM_MESSAGE;
public static String PVP2_CUSTOM_MESSAGE;
+    /** Hide Event Enabled */
+    public static boolean HIDE_EVENT;
+    public static int HIDE_EVENT_REWARD_ID;
+    public static int HIDE_EVENT_REWARD_COUNT;
+    public static int HIDE_EVENT_ITEM_WILL_DROP;
+    public static int HIDE_EVENT_DELAY_BEFORE_START;
+


        PVP1_CUSTOM_MESSAGE = L2JFrozenSettings.getProperty("PvP1CustomMeesage", "You have been teleported to PvP Zone 1!");
        PVP2_CUSTOM_MESSAGE = L2JFrozenSettings.getProperty("PvP2CustomMeesage", "You have been teleported to PvP Zone 2!");
+            /** Hide Event */
+            HIDE_EVENT = Boolean.parseBoolean(L2JFrozenSettings.getProperty("HideEvent", "false"));
+            HIDE_EVENT_REWARD_ID = Integer.parseInt(L2JFrozenSettings.getProperty("HideEventRewardId", "2807"));
+            HIDE_EVENT_REWARD_COUNT = Integer.parseInt(L2JFrozenSettings.getProperty("HideEventRewardCount", "1"));
+            HIDE_EVENT_ITEM_WILL_DROP = Integer.parseInt(L2JFrozenSettings.getProperty("HideEventItemWillDrop", "2807"));
+            HIDE_EVENT_DELAY_BEFORE_START = Integer.parseInt(L2JFrozenSettings.getProperty("HideEventDelayBeforeStart", "180000"));
+

Index: C:/Workspace/L2jFrozen_GameServer/config/functions/l2jfrozen.properties
==============================================================================
--- C:/Workspace/L2jFrozen_GameServer/config/functions/l2jfrozen.properties
+++ C:/Workspace/L2jFrozen_GameServer/config/functions/l2jfrozen.properties
+
+# -----------------------------------------
+# Hide Event -
+# -----------------------------------------
+# Default = False
+HideEvent = True
+HideEventRewardId = 2807
+HideEventRewardCount = 20
+HideEventItemWillDrop = 6579
+#Hide Event Start Every ( 180000 Milliseconds )
+#Milliseconds ( 180000 milliseconds = 180 seconds )
+HideEventDelayBeforeStart = 18000

Linea del error

Broadcast.toAllOnlinePlayers(new CreatureSay(0,Say2.ANNOUNCEMENT,"Hide Event","Winner is: "+getName()+". Event ended."));
En la parte de "ANNOUNCEMENT" esta el error y no se que poner ya.

error.png
Título: Re:Error evento hidden drop [Jfrozen rev 1132]
Publicado por: Swarlog en Oct 16, 2025, 09:31 PM
Posiblemente no tengas dicha funcion en vuestro proyecto:

Broadcast.toAllOnlinePlayers
Lo que puedes hacer es reemplazarlo por otro más común, que detecta players y envía el mensaje:

for (L2PcInstance player : L2World.getInstance().getPlayers())
{
if (player != null)
{
player.sendPacket(new CreatureSay(0,Say2.ANNOUNCEMENT,"Hide Event","Winner is: "+getName()+". Event ended.")));
}
}