查看: 281|回復: 0

[閒聊閒語] BOSS

[複製鏈接]

66

主題

162

帖子

5629

金錢

火焰之影

Rank: 8Rank: 8

威望
0
精華
0
貢獻
0
鑽石
0
閱讀權限
50
積分
5791
在線時間
78 小時
相冊
0
日誌
0
好友
0
發表於 2026-2-7 15:51 | 顯示全部樓層 |閱讀模式
[color=rgba(252, 249, 249, 0.698)]實作計畫:BOSS資訊查看道具1. 修改 BossSpawnTable.java
新增靜態快取,儲存所有 BOSS 生成實例:
private static final List<L1BossSpawn> _bossSpawns = new ArrayList<>();// 在 fillSpawnTable() 中添加_bossSpawns.add(spawnDat);public static List<L1BossSpawn> getAllBossSpawns() {    return Collections.unmodifiableList(_bossSpawns);}
2. 新增 BossInfoManager.java
建立管理器類別:
  • 收集所有 BOSS 資訊
  • 格式化 HTML 內容
  • 計算下次出生時間
3. 修改 C_ItemUse.java
添加道具處理邏輯:
if (itemId == 49998) { // BOSS雷達道具ID    String html = BossInfoManager.generateBossInfoHtml();    pc.sendPackets(new S_GMHtml(pc.getId(), html));    return; // 不消耗道具}
4. HTML 內容範例<html><body bgcolor="000000"><font color="FF0000"><center>★ BOSS 資訊 ★</center></font><br><font color="AAAAAA">■ 死亡騎士 [DK]<br>  下次出生: 03:30:00<br>  位置: 奇岩地監 3F (Map:4) 32799,32804<br><hr>■ 安塔瑞斯 [龍]<br>  下次出生: 18:00:00<br>  位置: 龍之谷 (Map:78) 32697,32823<br></font></body></html>
5. 資料庫設定
在 itemname / etcitem 表新增道具:
  • item_id: 49998
  • name: BOSS雷達
  • item_type: 0

預估檔案變更
檔案
變更類型

BossSpawnTable.java
修改

BossInfoManager.java
[color=rgba(253, 251, 251, 0.94)]新增

C_ItemUse.java
修改

是否需要我開始實作?









[color=rgba(252, 249, 249, 0.698)]出生位置請參照mapids表





[color=rgba(252, 249, 249, 0.698)]
我已經找到 mapids 表的結構:
mapids 表結構
欄位
說明

mapid
地圖ID

locationname
地圖名稱

更新後的實作計畫1. 新增 MapIdsTable.java
用於查詢地圖名稱:
package l1j.server.server.datatables;import java.sql.*;import java.util.*;public class MapIdsTable {    private static final Map<Integer, String> _mapNames = new HashMap<>();        public static void load() {        // 從資料庫載入 mapid -> locationname 對應    }        public static String getMapName(int mapId) {        return _mapNames.getOrDefault(mapId, "未知地圖(" + mapId + ")");    }}
2. 修改 BossSpawnTable.java
新增靜態快取:
private static final List<L1BossSpawn> _bossSpawns = Collections.synchronizedList(new ArrayList<>());public static List<L1BossSpawn> getAllBossSpawns() {    return Collections.unmodifiableList(_bossSpawns);}
3. 新增 BossInfoManager.javapublic class BossInfoManager {    public static String generateBossInfoHtml() {        StringBuilder html = new StringBuilder();        html.append("<html><body bgcolor=\"000000\"><font color=\"FF0000\"><center>★ BOSS 資訊 ★</center></font><br>");                for (L1BossSpawn spawn : BossSpawnTable.getAllBossSpawns()) {            String mapName = MapIdsTable.getMapName(spawn.getMapId());            Calendar nextSpawn = spawn.getNextSpawnTime(); // 需要新增此方法                        html.append(String.format("■ %s [%s]<br>", spawn.getName(), spawn.getCycleType()));            html.append(String.format("  下次出生: %s<br>", formatTime(nextSpawn)));            html.append(String.format("  位置: %s (Map:%d) %d,%d<br><br>",                 mapName, spawn.getMapId(), spawn.getLocX(), spawn.getLocY()));        }        html.append("</body></html>");        return html.toString();    }}
4. 修改 L1BossSpawn.java
新增公開方法供查詢:
public Calendar getNextSpawnTime() {    return _activeSpawnTime;}
5. 修改 C_ItemUse.javaif (itemId == 49998) { // BOSS雷達    String html = BossInfoManager.generateBossInfoHtml();    pc.sendPackets(new S_GMHtml(pc.getId(), html));    return; // 不消耗}

檔案變更清單
檔案
變更

MapIdsTable.java
[color=rgba(253, 251, 251, 0.94)]新增 - 地圖名稱查詢

BossSpawnTable.java
修改 - 新增快取

L1BossSpawn.java
修改 - 新增 getNextSpawnTime()

BossInfoManager.java
[color=rgba(253, 251, 251, 0.94)]新增 - HTML生成

C_ItemUse.java
修改 - 道具處理

l1jtw_*.sql
修改 - 新增道具














上一篇︰0207搖一搖
下一篇︰NpcActionHelper
您需要登錄後才可以回帖 登錄 | 註冊會員

本版積分規則

天堂私服列表

45客服

Archiver| 45天堂私服論壇   分享到微博! 分享到臉書! 分享到噗浪! 分享到維特! 分享到Google+! 分享到LINE!

45天堂私服發佈站 ©    天堂私服架設教學  提供最新天堂私服最新資訊

流量最高、品質最好、服務最優、玩家首選、最新天堂私服資訊,都在45天堂私服發佈站.    免責聲明

Sitetag
line客服聯繫
掃一掃二碼
Line客服聯繫
24H專人回覆
返回頂部 返回列表