ms0553922

V.62 頻道限制條件進入教學

發表於 2017-5-11 13:26:40
ms0553922 發表於 2017-5-11 13:26:40 | 顯示全部樓層 |閱讀模式
應該是沒有什麼問題 我盡量用小馬端的語法下去修正了 很久沒碰62端口  有點陌生
沒有做過測試 有問題問吧
  1. 找到ChannelServer.java
  2. 新增
  3. private int XXCh;//自己制定義名稱
  4. 找到
  5. synchronized (this.wci)
  6. 下面新增
  7. this.XXCh = Integer.parseInt(this.props.getProperty("net.sf.odinms.world.XXCh", "?"));//直接寫在裡面了 ?為頻道幾
  8. 在最底下新增
  9.     public int getXXCh() {
  10.   return this.XXCh;
  11. }
  12.   return ?;// ?為頻道幾
  13. }
複製代碼

  1. 找到PlayerLoggedinHandler.JAVA
  2. 找到public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c)
  3. 下面新增
  4. ChannelServer XX = c.getChannelServer();
  5. 找到
  6. c.getSession().write(MaplePacketCreator.getCharInfo(player));
  7. System.out.println("玩家 [ " + c.getPlayer().getName() + " ] 連接成功.");
  8. 下面新增
  9.         if ((c.getPlayer().getLevel() < ??) && c.getChannel() == XX.getXXCh()) {//設置限制 ??自己去設置 也可以改成haveitem 或者getvip 若你端有設置或自行添加
  10.             cserv.removePlayer(player);
  11.             ChangeChannelHandler.changeChannel(1, c);//若為達到該等級 返回1頻
  12.                        String mg = "親愛的玩家:" + c.getPlayer().getName() + " 您好 \r\n第" + XX.getXXCh() + "頻道為 XX 頻道.\r\n你沒有XX條件故無法進入.\r\n將自動轉換至1頻";
  13.                                     c.getSession().write(MaplePacketCreator.serverNotice(5, mg);
  14.                                     c.getSession().write(MaplePacketCreator.serverNotice(1, mg);
  15.             System.out.println("玩家 [ " + c.getPlayer().getName() + " ] 非法連接第 " + XX.getXXCh() + " 頻道.系統已作返回處理.");
  16.         }
  17. 找到
  18.                 player.getMap().addPlayer(player);

  19. 下面新增
  20.         if (player.getClient().getChannel() == XX.getXXCh()) {
  21.             player.getClient().getSession().write(MaplePacketCreator.serverNotice(1, "您目前頻道為 XX 頻道\r\n經驗倍率為 " +
  22.                     String.valueOf(player.getClient().getChannelServer().getExpRate()) + " 倍\r\n楓幣倍率為 " +
  23.                     String.valueOf(player.getClient().getChannelServer().getMesoRate()) + " 倍\r\n掉寶倍率為 " +
  24.                     String.valueOf(player.getClient().getChannelServer().getDropRate()) + " 倍"));
  25.         }
  26.         c.getSession().write(MaplePacketCreator.serverMessage(c.getChannelServer().getServerMessage()));
  27.         player.getMap().addPlayer(player);

複製代碼

  1. 找到ChangeChannelHandler.JAVA
  2. 找到 public void handlePacket(SeekableLittleEndianAccessor slea, MapleClient c) {
  3. 下面替換成
  4.         int XXchannel = XX.getXXCh();
  5.         int channel = slea.readByte() + 1;
  6.         if (channel == XXchannel) {
  7.             if (c.getPlayer().getLevel() >= ??) {//跟剛剛設置條件一樣 ??自己去設置 也可以改成haveitem 或者getvip 若你端有設置或自行添加
  8.             } else {
  9.                        String mg = "親愛滴玩家:" + c.getPlayer().getName() + " 您好\r\n第" + XX.getXXCh() + "頻道為 XX 頻道 \r\n你目前的等級是:" + c.getPlayer().getLevel() + "\r\n你沒有XX,無法進入此頻道\r\nP.S.至少需要XX條件!";
  10.                                     c.getSession().write(MaplePacketCreator.serverNotice(5, mg);
  11.                                     c.getSession().write(MaplePacketCreator.serverNotice(1, mg);
  12.                 return;
  13.             }
  14.         }
  15.         changeChannel(channel, c);
  16.     }

複製代碼
成果類似這樣 這是我113成功圖 小馬作者也是我@.@

1.jpg
2.jpg

3.jpg





順便給一個小東西 玩家登入頻道提示
MaplePacket packet = MaplePacketCreator.serverNotice(6, "[玩家] " + c.getPlayer().getName() + "  ,等級 " + player.getLevel() + " ,職業 " + player.getJob() + " ,已進入第 " + c.getChannelServer().getChannel() + " 頻道");
瀏覽 3160 回復 0

您需要登錄後才可以回帖 登錄 | 註冊會員

返回頂部