火焰之影
 
- 威望
- 0
- 精華
- 0
- 貢獻
- 0
- 鑽石
- 0
- 閱讀權限
- 50
- 積分
- 5791
- 在線時間
- 78 小時
- 相冊
- 0
- 日誌
- 0
- 好友
- 0
|
 | |  |  | [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
|