【楓之谷私服】v120 飛天椅子

【楓之谷私服】v120 飛天椅子

新增飛天椅子

什麼是飛天椅子呢?舉些例子就是各個星球椅子、星座椅子還有什麼溜滑梯、摩天輪…等,這些都可以在高版本服裡面找到,這邊就分享幾個我實測能用的飛天椅子和椅子的代碼:

[星球椅子]
3015564 太陽;
3015572 海王星;
3015571 天王星;
3015570 土星;
3015568 火星;
3015567 地球;
3015566 金星;
3015565 水星 [星座椅子]
3015017 雙魚座;
3015018 雙子座;
3015019 巨蟹座;
3015020 獅子座;
3015021 天秤座;
3015022 天蠍座;
3015023 處女座;
3015024 射手座;
3015025 摩羯座;
3015026 水瓶座

⭐⭐⭐想看有哪些椅子可以找:【情報】椅子外型總覽,每張椅子的代碼也有附上。⭐⭐⭐

至於怎麼從高版本WZ中添加新的椅子到低版本中,這個我之前有發過文章教學了,還不會的可以看一下:

新增時的幾點注意事項

⚡椅子都放在 Item – install 的 0301.img (高版本會有更多位,比如 03011.img 03012.img … 低版本就都放在 0301.img 裡面就可以)。

⚡確定飛天椅子的方式是:看 info 節點裡面有沒有 tamingMob

⚡除了椅子的WZ要搬之外,tamingMob 也要搬,tamingMob 放在 Character.wz 裡面。

低版本貌似不支援 tamingMob 198開頭,所以從新版本搬過來的時候需要自行新增 193開頭的 img (就順著之前193開頭最後一個 tamingMob id 再往後新增就好)。這個我不確定,如果有人知道怎麼解決可以在評論區補充~

比如 03016215 這個椅子的 tamingMob1983529,我們就打開 Character.wz 找到 tamingMob – 1983529.img 把它搬到自己服的 Character.wz – tamingMob 裡面就可以。

修改 SRC

定義飛天椅子

首先我們先到 src/constants/GameConstants.java 裡面隨便找個地方加上下方程式碼。

這段程式碼的意思是:

  • isFlyChair 方法傳入的參數是椅子的 id;回傳的是 tamingMob id
  • switch case 判斷哪張椅子回傳哪個 tamingMob id
  • 如果椅子 id 不在裡面就會 return 0,即不調用坐騎特效
  • 每新增一個椅子就再加上一個 case 就好。
// 是否為飛天椅子
public static int isFlyChair(int ItemId) { 
   switch (ItemId) {
       case 3015564: // 太陽椅子
           return 1933256;
       case 3015570: // 土星椅子
           return 1933262;
   }
   return 0; // 不調用
}

修改使用椅子的方法

因為我們需要判斷是否為飛天椅子,然後改成坐騎的方式來使用,所以我們會需要在使用椅子的方法中做修改,這個方法會在 src/handling/channel/handler/PlayerHandler.java 裡面。

找到 UseChair 方法,並在裡面找到 chr.setChair(itemId); 這行程式碼,我們需要在它下面加上判斷是否為飛天椅的判斷式:

public static final void UseChair(final int itemId, final MapleClient c, final MapleCharacter chr) {
      // ...

      chr.setChair(itemId);
    
      // 若使用的椅子 id 包含在飛天椅中就使用坐騎方式;如果不包含在裡面就會回傳 0,跑 else 語句,普通坐椅子的方式
      if (GameConstants.isFlyChair(itemId) > 0) {
            // 坐騎方式
            final List<Pair<MapleBuffStat, Integer>> stat = Collections.singletonList(new Pair<>(MapleBuffStat.MONSTER\_RIDING, 0));
            chr.getClient().sendPacket(MaplePacketCreator.giveMount(GameConstants.isFlyChair(itemId), 0, stat));
            chr.getMap().broadcastMessage(chr, MaplePacketCreator.showMonsterRiding(chr.getId(), stat, GameConstants.isFlyChair(itemId), 0), false);
      } else {
            // 普通坐椅子
            chr.getMap().broadcastMessage(chr, MaplePacketCreator.showChair(chr.getId(), itemId), false);
      }
    
      c.getSession().write(MaplePacketCreator.enableActions());

}

src/client/MapleClient.java 找到 sendPacket,修改成:

public void sendPacket(MaplePacket packet) {
    getSession().write(packet);
}
guest

0 評論
最舊
最新 最多投票
內聯回饋
查看全部評論