[楓之谷私服]v120 當前地圖怪物掉寶查詢

最後更新於 2021 年 7 月 1 日

6o CeDq a [楓之谷私服]v120 當前地圖怪物掉寶查詢
1580486644944 [楓之谷私服]v120 當前地圖怪物掉寶查詢

應該同樣適用於113,其他版本沒試過。

SRC

打開 Sever\Maps\MapleMap.java,在上方 import 處加上:

import server.life.MonsterDropEntry;
import server.life.MonsterGlobalDropEntry;
import server.life.MapleMonsterInformationProvider;

然後在最下方 } 前貼上:

public List<Integer> getAllUniqueMonsters() {
        ArrayList<Integer> ret = new ArrayList<>();
        mapobjectlocks.get(MapleMapObjectType.MONSTER).readLock().lock();
        try {
            for (MapleMapObject mmo : mapobjects.get(MapleMapObjectType.MONSTER).values()) {
                int theId = ((MapleMonster) mmo).getId();
                if (!ret.contains(theId)) {
                    ret.add(theId);
                }
            }
        } finally {
            mapobjectlocks.get(MapleMapObjectType.MONSTER).readLock().unlock();
        }
        return ret;
 }

 private Map<Integer, MapleMapObject> mapobjects1 = new LinkedHashMap<Integer, MapleMapObject>();

 public Collection<MapleMapObject> getMapObjects() {
      return Collections.unmodifiableCollection(mapobjects1.values());
 }

public List<Integer> getUniqueMonsters() {
        List<Integer> mobs = new ArrayList<Integer>();
        for (MapleMapObject obj : this.getMapObjects()) {
            MapleMonster mob = this.getMonsterByOid(obj.getObjectId());
        if (mob != null) {
           if (!mobs.contains(mob.getId())) {
                mobs.add(mob.getId());
           }
        }
    }
    return mobs;
}
  1. 打開 scripting\NPCConversationManager.java,在最下方 } 前貼上
public String checkDrop(int mobId) {
        MapleItemInformationProvider ii = MapleItemInformationProvider.getInstance();
        List<MonsterDropEntry> ranks = MapleMonsterInformationProvider.getInstance().retrieveDrop(mobId);
        if (!ranks.isEmpty() && ranks.size() > 0) {
            int num = 0, itemId, chance;
            MonsterDropEntry de;
            StringBuilder name = new StringBuilder();
            for (MonsterDropEntry rank : ranks) {
                de = rank;
                if (de.chance > 0 && (de.questid <= 0 || (de.questid > 0 && MapleQuest.getInstance(de.questid).getName().length() > 0))) {
                    itemId = de.itemId;
                    if (itemId == 0) {
                        continue;
                    } else if (!ii.itemExists(itemId)) {
                        continue;
                    }
                    if (num == 0) {
                        name.append("當前怪物 #o").append(mobId).append("# 的掉寶率為:\r\n");
                        name.append("--------------------------------------\r\n");
                    }
                    String namez = "";
                    if (itemId == 0) { //金幣 物品ID為0就是金幣道具
                        itemId = 4031041; //休咪的錢包 display sack of cash
                        namez = (de.Minimum * getClient().getChannelServer().getMesoRate()) + " - " + (de.Maximum * getClient().getChannelServer().getMesoRate()) + " 的金幣";
                    } else {
                        namez = "#z" + itemId + "#";
                    }
                    chance = de.chance * getClient().getChannelServer().getDropRate();
                    if (getPlayer().isAdmin()) {
                        name.append(num + 1).append(") #v").append(itemId).append("#").append(namez).append(" - ").append(Integer.valueOf(chance >= 999999 ? 1000000 : chance).doubleValue() / 10000.0).append("%的掉寶率. ").append(de.questid > 0 && MapleQuest.getInstance(de.questid).getName().length() > 0 ? ("需要接受任務: " + MapleQuest.getInstance(de.questid).getName()) : "").append("\r\n");
                    } else {
                        name.append(num + 1).append(") #v").append(itemId).append("#").append(namez).append(de.questid > 0 && MapleQuest.getInstance(de.questid).getName().length() > 0 ? ("需要接受任務: " + MapleQuest.getInstance(de.questid).getName()) : "").append("\r\n");
                    }
                    num++;
                }
            }
            if (name.length() > 0) {
                return name.toString();
            }
        }
        return "沒有找到這個怪物的掉寶率數據。";
    }

     public String checkMapDrop() {
        List<MonsterGlobalDropEntry> ranks = new ArrayList<>(MapleMonsterInformationProvider.getInstance().getGlobalDrop());
        int mapid = getPlayer().getMap().getId();
        //int cashServerRate = getClient().getChannelServer().getCashRate(); //點卷掉寶率
        //int globalServerRate = getClient().getChannelServer().getDropgRate(); //特殊數據庫道具掉寶率
        int globalServerRate = 1; //特殊數據庫道具掉寶率
        if (ranks != null && ranks.size() > 0) {
            int num = 0, itemId, chance;
            MonsterGlobalDropEntry de;
            StringBuilder name = new StringBuilder();
            for (MonsterGlobalDropEntry rank : ranks) {
                de = rank;
                if (de.continent < 0 || (de.continent < 10 && mapid / 100000000 == de.continent) || (de.continent < 100 && mapid / 10000000 == de.continent) || (de.continent < 1000 && mapid / 1000000 == de.continent)) {
                    itemId = de.itemId;
                    if (num == 0) {
                        name.append("當前地圖 #r").append(mapid).append("#k - #m").append(mapid).append("# 的全局掉寶率為:");
                        name.append("\r\n--------------------------------------\r\n");
                    }
                    String names = "#z" + itemId + "#";
//                    if (itemId == 0 && cashServerRate != 0) {
//                        itemId = 4031041;
//                        names = (de.minimum * cashServerRate) + " - " + (de.maximum * cashServerRate) + " 的抵用卷";
//                    }
                    chance = de.chance * globalServerRate;
                    if (getPlayer().isAdmin()) {
                        name.append(num + 1).append(") #v").append(itemId).append("#").append(names).append(" - ").append(Integer.valueOf(chance >= 999999 ? 1000000 : chance).doubleValue() / 10000.0).append("%的掉寶率. ").append(de.questid > 0 && MapleQuest.getInstance(de.questid).getName().length() > 0 ? ("需要接受任務: " + MapleQuest.getInstance(de.questid).getName()) : "").append("\r\n");
                    } else {
                        name.append(num + 1).append(") #v").append(itemId).append("#").append(names).append(de.questid > 0 && MapleQuest.getInstance(de.questid).getName().length() > 0 ? ("需要接受任務: " + MapleQuest.getInstance(de.questid).getName()) : "").append("\r\n");
                    }
                    num++;
                }
            }
            if (name.length() > 0) {
                return name.toString();
            }
        }
        return "當前地圖沒有設置全局掉寶率。";
    }

NPC腳本

隨便塞給一個NPC就行

var status = -1;

function action(mode, type, selection) {
    if (mode == 1) {
        status++;
    } else {
        if (status == 0) {
            cm.dispose();
        }
        status--;
    }
    if (status == 0) {
        if (cm.getMap().getAllMonstersThreadsafe().size() <= 0) {
            cm.sendOk("當前地圖沒有刷新怪物,無法查看怪物掉寶資訊。");
            cm.dispose();
            return;
        }
        var selStr = "請選擇你要查看怪物的掉寶資訊。\r\n\r\n#b";
        var iz = cm.getMap().getAllUniqueMonsters().iterator();
        while (iz.hasNext()) {
            var zz = iz.next();
            selStr += "#L" + zz + "##o" + zz + "##l\r\n";
        }
        if (cm.getPlayer().isAdmin()) {
            selStr += "\r\n#L0# #r查看全地圖掉寶資訊#k#l";
        }
        cm.sendSimple(selStr);
    } else if (status == 1) {
        if (selection == 0) {
            cm.sendNext(cm.checkMapDrop());
        } else {
             cm.sendOk(cm.checkDrop(selection));
        }
        cm.dispose();
    }
}
4e52d54f6bc42abb41d26eb5b0df6517?s=250&d=wavatar&r=g [楓之谷私服]v120 當前地圖怪物掉寶查詢
0 0 評分數
Article Rating
訂閱
通知
guest
9 Comments
在線反饋
查看所有評論
lala
lala
11 月 前

   List<MonsterDropEntry> ranks = MapleMonsterInformationProvider.getInstance().retrieveDrop(mobId);
這邊我也出現錯誤

lala
lala
回复  pluto
11 月 前

謝謝 這個ok了
import server.life.MapleMonsterInformationProvider;
再加上這個就沒錯誤了

CAT
CAT
11 月 前

請問大大知道怎麼關閉其他玩家的技能特效嗎 ?

CAT
CAT
回复  CAT
11 月 前

哦哦 沒事了 有找出來了

Zisha
Zisha
18 日 前

非GM權限的玩家好像看不到機率只能看到掉落物
想改但不會改..還停留在JS複製貼上改造的程度

如果大大方便的話 再麻煩您了

Zisha
Zisha
回复  pluto
17 日 前

非常感謝大大 我弄好了

asz910858 最後編輯於 17 日 前