最後更新於 2022 年 6 月 19 日
SRC包含了該端口所有的源碼,什麼指令、函數都需在SRC中定義,可謂是整個端口最重要的命脈。
*版本為TMS v120 , 請務必記得備份 , 若有任何損失本人不負責。
下載IDE
在開始之前,我們要先下載一個IDE – NetBeans IDE 我使用的是 7.4 版本,下載請點我。
新增專案
在開始之前,先將伺服器端的dist、src資料夾複製,在桌面(任意地方)新增一個資料夾後貼上。
接著打開NetBeans IDE,File – New Project…。
選擇 Java – Java Project with Existing Sources – Next>。
輸入專案名稱(隨意名稱) 和 選擇輸出資料夾(隨意位置) 後按Next> 。
Source Package Folders右側Add Folder… 選擇 src資料夾(不要點進去)後按開啟。
直接按Finish。
至此專案就新建完成,左側會出現一個新的專案,內容包括
- Source Packages(你的SRC內容)
- Libraries
在Libraries上按右鍵 – Add JAR/Folder…。
選擇dist\lib內的所有jar檔開啟。
開啟後Libraries內就會出現你伺服器端中的jar檔了。
出現亂碼
若是發生錯誤,很有可能是你的專案Java版本選擇錯誤,在專案上按右鍵 – Properties。
Sources – Source/Binary Format 選擇正確的JDK版本 (整合包內的版本是JDK8)。
修改JAVA檔
專案開啟後,下一步可以開始修改內容了,比如說我希望將「拍賣」鍵改為呼叫萬能NPC,修改拍賣內容的檔案在 handling – MapleServerHandler.java 中。
搜索 ENTER_MTS,將內容修改為呼叫NPC(萬能NPC)即可。
會使用到的語法:
c.getPlayer().getLevel(); //獲得玩家等級 c.getPlayer().dropMessage(5, "訊息內容"); //跳出訊息 NPCScriptManager.getInstance().start(c, NPC編號); //開啟NPC對話
完整代碼
在最上方 import 處加上
import tools.MaplePacketCreator; import scripting.NPCScriptManager;
*請注意每個case之間的內容是互不相關的,不要把別的case誤刪了。
case ENTER_MTS: if (c.getPlayer().getLevel() < 10) { c.getPlayer().dropMessage(5, "尚未達到10級將無法使用。"); //若玩家等級小於10級,跳出訊息「尚未達到10級無法使用。」 } else { NPCScriptManager.getInstance().start(c, 9000020); //如果玩家大於10級則呼叫NPC 9000020 對話。 } c.getSession().write(MaplePacketCreator.enableActions()); break;
編譯輸出
修改完想要修的地方後,該怎麼編譯呢?
上方工具欄找到一個槌子旁邊有掃把的圖示
按下去後下方輸出視窗跳出 BUILD SUCCESSFUL (total time: ? seconds) 代表編譯完成。
接著你在輸出資料夾內可以看到有三個資料夾和兩個檔案,這個dist資料夾和伺服器端的dist是相同的。
我們只需要將剛剛輸出的dist資料夾中的 專案名稱.jar 修改檔名為 TMS120.jar 然後覆蓋回伺服器端/dist 資料夾中。 (修改的檔名取決於你伺服器端dist中的jar檔名。)
至此,SRC的編譯已經完成,從腳本撰寫、修改WZ到現在編譯SRC,基本上楓之谷世界大部分內容你都可以隨意新增、修改、刪除了,自己研究一下吧!
學習網站
這邊推薦幾個給新手架私服學習的網站
AICL社群娛樂集團論壇的楓之谷綜合技術交流版、AICL社群娛樂集團 網站
對岸
快捷方式網絡遊戲技術論壇的 冒险岛|枫之谷|MapleStory 版
國外
CSDN、巴哈、github…等搜索關聯詞也可以查到有關私服的內容,多去發掘吧。
- React + Jotai 實現登入註冊及驗證 - 2022 年 7 月 3 日
- Express + MongoDB 實作使用者增刪改查 API 及 JWT 驗證 - 2022 年 7 月 2 日
- 解決 React Highcharts 資料筆數過多造成圖表渲染卡頓的情形 - 2022 年 6 月 28 日
請問如果服務端內沒附src該怎麼處理呢?
對了 用大大的v120 src套在v113上會出事嗎?
我自己是沒玩過沒附src的端口,用其他相同版本端口內附的src應該是可以的,就一樣是把編譯好的jar檔丟進去覆蓋,只是那服額外加的功能需要重寫,畢竟是那個端口自己加進去的。120 src 套在 113 應該會有問題,你可以google 找 113端口,去拿其他端的src來用,比如:87論壇 或者在社團裡找找。
好的了解,謝謝大大! 真的幫助我很多
請問一下 我使用的時候會出現 read-only ,反編譯的檔案無法進行編輯 上網也找不到方法
請問一下,在導入dist/lib的資料後,source packages前面圖示出現紅色驚嘆號可能是什麼問題呢?
嘗試無視後先試著如教學更改拍賣為NPC並編譯輸出後,顯示start.java裡面有錯誤(如圖),求大大解救 (我架的是沒有src的tms120,拿了您整合包裡的src出來嘗試)
已解決:java版本問題(電腦裡同時有java7跟8,預設是java7)
先到tool -> java platform新增路徑到JDK1.8,然後到libraries的properties的java platform改為JDK1.8,最後再到專案的properties改為JDK8(前面platform沒先改這邊不會顯示JDK8),再編譯就沒有錯誤產生了
非常謝謝大大的教學,每次觀看您的文章都會讓我學到很多!!
能夠自己找到問題然後解決很不錯,讚~
我曾經也在電腦裡裝了好幾個版本的JDK結果起衝突,找了很久才發現原因
請問大大有考慮做寵物全圖吸的教學嗎? 在Movepet那邊摸索了好久還是一頭霧水
我是也有計畫要搞,但是最近都沒什麼時間,忙著工作
請問 src 裡面是 .class 要如何編譯
已自行解決 .class已轉成.java了
請問 匯入 dist\lib內jar檔後 原本Projects內資料夾正常 變成驚嘆號 更改 Source/Binary Format JDK 8 還是沒變動 是為什麼?
我只有安裝 java 8 應該不會是 java版本問題?
可以截圖給我看一下嗎?驚嘆號具體是標在哪裡呢?
通常有驚嘆號代表檔案中有某些語法錯誤或是沒有 import 到需要的東西。你可以打開檔案,然後根據檔案右邊卷軸標註的紅色區域找到標驚嘆號的區塊,把滑鼠移上去驚嘆號上面就能看到詳細的錯誤。
比如我圖中這個就是說找不到
com.fasterxml.jackson.annotation
這個 package,有可能是因為版本不對所以沒有這個 package,也有可能是路徑打錯了。通常我的解決方法會是:
1. 如果知道這個 package 內容是什麼,就自己去寫。
2. 如果是從別處 copy 過來導致的錯誤,就在原本 copy 的那個 src 裡面找找看這個 package 的內容,然後一起搬過來。
3. 就不要用了,刪掉。
給你參考看看
如圖片 這些 .java 我是從 .jar 反編譯過來的
只要點Libraries 就跳出紅色驚嘆號
大大你好~請問如何在SRC中新增指令以及變更楓之谷的解析度呢?
或是等比例放大楓谷遊戲視窗
我的版本是113,在網路上搜尋都找到不相干的…不然就是我不太會搜尋
希望大大提點一下
變更解析度得改主程式檔 貌似得脫殼,這部分我不懂,我已經把大部分我了解地都分享出來了…😥
新增指令的話,改 SRC,src/client/messages/commands裡面有好幾個檔案,AdminCommand 是最高管理員指令、GMCommand 是 GM 指令、PlayerCommand 是玩家指令,至於要怎麼寫,參考一下檔案中的內容複製貼上改一改就行了
大大問一下 你這個程式現在ide 是最新版本的13版
但安裝的時候到一個畫面會顯示 找不到JDK
是因為版本的問題嗎
還是我安裝太高的阪本
煩請大大回覆了感恩
我用的是版本 v7.4,沒試過 v13,如果你試 v13 不成功的話下 v7.4 試試,我文中有連結。
因為我也不知道錯誤訊息是什麼,但根據你說的「找不到JDK」,那應該就是你可能沒裝 JDK 或者沒把 JDK 新增到環境變數中。