Jump to content
  • 0

Raid Boss Info Npc Code


Question

Posted
package net.sf.l2j.gameserver.instancemanager;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Logger;

import net.sf.l2j.Config;
import net.sf.l2j.L2DatabaseFactory;

public class RaidBossInfoManager
{
   private static final Logger _log = Logger.getLogger(RaidBossInfoManager.class.getName());
  
   private final Map<Integer, Long> _raidBosses;
  
   public static RaidBossInfoManager getInstance()
   {
       return SingletonHolder._instance;
   }
  
   protected RaidBossInfoManager()
   {
       _raidBosses = new ConcurrentHashMap<>();
       load();
   }
  
   public void load()
   {
       try (Connection con = L2DatabaseFactory.getInstance().getConnection())
       {
           PreparedStatement statement;
           ResultSet rs;
          
           statement = con.prepareStatement("SELECT boss_id, respawn_time FROM grandboss_data UNION SELECT boss_id, respawn_time FROM raidboss_spawnlist ORDER BY boss_id");
           rs = statement.executeQuery();
           while (rs.next())
           {
               int bossId = rs.getInt("boss_id");
               if (Config.LIST_RAID_BOSS_IDS.contains(bossId))
                   _raidBosses.put(bossId, rs.getLong("respawn_time"));
           }
           rs.close();
           statement.close();
       }
       catch (Exception e)
       {
           e.printStackTrace();
       }
      
       _log.info("RaidBossInfoManager: Loaded " + _raidBosses.size() + " instances.");
   }
  
   public void updateRaidBossInfo(int bossId, long respawnTime)
   {
       _raidBosses.put(bossId, respawnTime);
   }
  
   public long getRaidBossRespawnTime(int bossId)
   {
       return _raidBosses.get(bossId);
   }
  
   private static class SingletonHolder
   {
       protected static final RaidBossInfoManager _instance = new RaidBossInfoManager();
   }
}

L2j_a_Cis_1.png

if (Config.LIST_RAID_BOSS_IDS.contains(bossId))

Config.java

public static List<Integer> LIST_RAID_BOSS_IDS;


LIST_RAID_BOSS_IDS = new ArrayList<>();
           for (String val : RAID_BOSS_IDS.split(","))
           {
               int npcId = Integer.parseInt(val);
               LIST_RAID_BOSS_IDS.add(npcId);
           }

Need someones help please!

 

aCis 364

7 answers to this question

Recommended Posts

  • 0
Posted (edited)

Alright... as 364 loads all configs in 1 function go to :

go to configs

public static final void loadGameServer()

 

and load your custom file there... take an example from other like 

loadNpcs();
Edited by melron
  • 0
Posted (edited)

image.png

 

Here is the config(if I got what you ask me) in gameserver/config/custom.properties
and it reads it in Config.java with this

RAID_BOSS_IDS = custom.getProperty("RaidBossIds", "0,0");
LIST_RAID_BOSS_IDS = new ArrayList<>();
    for (String val : RAID_BOSS_IDS.split(","))
        {
            int npcId = Integer.parseInt(val);
            LIST_RAID_BOSS_IDS.add(npcId);
        }
Edited by NickTs
  • 0
Posted (edited)

If you will post ur correct RaidBossInfoManager here we will check this... 3rd error saying error in  85 line.... but u gave as a code with 70 lines...

 

1st error (59 line)

}

2nd error (44 line)

}

3rd error (85 line)


4th error (38 line)

rs = statement.executeQuery();
Edited by melron
  • 0
Posted (edited)

/*
 * 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 3 of the License, 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, see <http://www.gnu.org/licenses/>.
 */
package net.sf.l2j.gameserver.instancemanager;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.logging.Logger;

import net.sf.l2j.Config;
import net.sf.l2j.L2DatabaseFactory;

/**
 * @author rapfersan92
 */
public class RaidBossInfoManager
{
   private static final Logger _log = Logger.getLogger(RaidBossInfoManager.class.getName());
  
   private final Map<Integer, Long> _raidBosses;
  
   public static RaidBossInfoManager getInstance()
   {
       return SingletonHolder._instance;
   }
  
   protected RaidBossInfoManager()
   {
       _raidBosses = new ConcurrentHashMap<>();
       load();
   }
  
   public void load()
   {
       try (Connection con = L2DatabaseFactory.getInstance().getConnection())
       {
           PreparedStatement statement;
           ResultSet rs;
          
           statement = con.prepareStatement("SELECT boss_id, respawn_time FROM grandboss_data UNION SELECT boss_id, respawn_time FROM raidboss_spawnlist ORDER BY boss_id");
           rs = statement.executeQuery();
           while (rs.next())
           {
               int bossId = rs.getInt("boss_id");
               if (Config.LIST_RAID_BOSS_IDS.contains(bossId))
                   _raidBosses.put(bossId, rs.getLong("respawn_time"));
           }
           rs.close();
           statement.close();
       }
       catch (Exception e)
       {
           e.printStackTrace();
       }
      
       _log.info("RaidBossInfoManager: Loaded " + _raidBosses.size() + " instances.");
   }
  
   public void updateRaidBossInfo(int bossId, long respawnTime)
   {
       _raidBosses.put(bossId, respawnTime);
   }
  
   public long getRaidBossRespawnTime(int bossId)
   {
       return _raidBosses.get(bossId);
   }
  
   private static class SingletonHolder
   {
       protected static final RaidBossInfoManager _instance = new RaidBossInfoManager();
   }
}

Did not post the whole thing sorry for the inconvenience.

 

 

if (Config.LIST_RAID_BOSS_IDS.contains(bossId))
load();
protected static final RaidBossInfoManager _instance = new RaidBossInfoManager();
return SingletonHolder._instance;

Also in the Gameserver.java

 

 

RaidBossInfoManager.getInstance();
gameServer = new GameServer();
Edited by NickTs
  • 0
Posted (edited)

Oh yeah I figured out what you wanted to point out.

 

Worked! Thanks a lot for the help! Lock it!  ;D

Edited by NickTs
Guest
This topic is now closed to further replies.


  • Posts

    • https://l2goldcustom.online/
    • do u have the full source code for it  coz the one i have does not have code to read ukx files
    • 🎨 Design & edit without limits: Canva Pro & CapCut Pro subscriptions restocked and active with instant automated delivery!     FINAL CALL: Google is Shutting This Down After October 2026! Google will NEVER bring back this window of opportunity again. Once this month ends, this massive backdoor upgrade is gone permanently!  BUY 2, GET 1 FREE IS STILL LIVE! Stock up now for yourself, your family, your business, and your friends! Think about it: Every single person you know uses a Gmail account, and everyone is running out of storage. Don't let your loved ones get trapped paying $20–$30 every single month when you can set them up with 5TB Cloud Storage + Gemini Advanced (12–18 Months) right now for only $15! Why Buy Bulk Activations Today? Instant Gift Value: Perfect lifetime-style gift for clients, family, or team members. 100% Private & Safe: Activates on personal Gmails—zero passwords or logins required. Global Access: Works worldwide with zero VPN hassles. Instant Automated Delivery: Receive your activation links in seconds 24/7! ‍ Time is running out fast—secure your extra free licenses before the October deadline hits! Order Your Bundle Now on the Website
    • VAELOR Lineage II Interlude · L2OFF · x12   OPEN BETA 9 October 2026 · 17:00 UTC   GRAND OPENING 23 October 2026 · 17:00 UTC   Website: https://l2vaelor.com/ Discord: https://discord.gg/qMgPxH2fd4   ━━━━━━━━━━━━━━━━━━━━━━   WHAT VAELOR AIMS TO BE   Vaelor is an international L2OFF Interlude x12 server built to preserve the original Interlude experience. Combat, classes, crafting, sieges, Olympiad and progression remain close to retail. The changes are limited to the pace and convenience features that make sense on an x12 server.   RATES   EXP and SP: x12 Party EXP and SP: x13.2 Adena: x10 Drop: x5 Spoil: x9 Quest EXP and SP: x3 Quest Adena: x3 Raid Boss Drop: x3   SERVER INFORMATION   Server location: France Main language: English Level cap: 80 Safe enchant: +3, or +4 for full body armor Maximum enchant: +16 Enchant through +15: 70% physical weapons, 40% magic weapons, 66% armor Final step to +16: 35% physical weapons, 20% magic weapons, 66% armor Buff slots: 20 First and second class changes: free Third class change: original quest Game windows: 3   GAMEPLAY   No auto-farm or custom equipment. Level-scaled buffer with presets, custom schemes and support for both players and pets. The available buffs are gradually reduced as the character levels, helping early progression without replacing support classes later in the game. The Global Gatekeeper only connects towns and villages. Travel is free below level 40, then uses level-based Adena fees, with half-price travel between 18:00 and 06:00 UTC. There are no direct teleports to farming zones. The Alt+B Market is a centralized convenience shop containing only consumables and utility items already sold without limits by regular town merchants. Its prices are deliberately higher, so visiting the original NPC merchants remains the economical choice. It does not sell equipment, crafting materials, enchant scrolls or Life Stones. Drop Search finds either an item or a monster and shows where items drop or can be spoiled, including the server rates and the viewing character's level penalty. Player Shop Search and Offline Shop make it easier to find and trade with actual player-run stores while keeping the economy in players' hands. Offline shops remain active for up to 48 hours. Rankings and live Raid Boss and Grand Boss status are available through Alt+B. Character PIN and Computer Lock provide additional account and character protection. Restored and corrected Interlude content includes the Frozen Labyrinth and Ice Queen quest chain, Primeval Isle and Sailren, Wild Beast Reserve, Rainbow Springs Hall, Pagan Temple, and quests around Pavel Ruins and the Plunderous Plains. Auto learn and auto loot are enabled. Castle sieges every two weeks Olympiad daily from 18:00 to 00:00 UTC   PREMIUM AND STORE   Premium grants +15% EXP and SP, +5% Adena, Drop and Spoil, one additional game window and convenience features. The store is limited to Premium, cosmetic accessories and character services. Equipment, enchants, combat stats and access to content are not sold.   ━━━━━━━━━━━━━━━━━━━━━━   If you know Interlude well, come test the server and tell us honestly what feels wrong.   Create account: https://l2vaelor.com/register Download: https://l2vaelor.com/#download Discord: https://discord.gg/qMgPxH2fd4
  • Topics

×
×
  • Create New...

Important Information

This community uses essential cookies to function properly. Non-essential cookies and third-party services are used only with your consent. Read our Privacy Policy and We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue..