最後更新於 2022 年 7 月 1 日
最新更新紀錄 (2022/02/07)
之前教程中使用的架設工具版本都太舊,導致很多朋友反應架設失敗,因此我花了點時間更新教程。全部工具使用的都是最新版本,從 WAMP 改成 XAMPP,從 Navicat 改成 Workbench,不用再找盜版軟體,全部架設工具都是完全免費的。
另外,我在問題匯總中提到的 sql 檔案錯誤和120端口高級美髮、sendGetNumber 錯誤我也都一併修改好重新傳了(在我整理的 v120 架設包)。
如果我的教程有幫助到你,可以幫我點一下網站旁邊的廣告支持一下~
前言
在開始之前,有很重要的事情要和大家先說。
不管是伺服器端也好還是資料庫什麼的,報錯不會沒有原因,一定是哪個地方出了問題。
解決問題的方式有很多種:
- 試著解讀錯誤訊息,在自己能力範圍內嘗試修正。
- 還是無法解決的話,複製錯誤訊息並Google。
- 最後真的沒辦法才去詢問有經驗者或者在社團、評論詢問。
希望大家都能養成閱讀報錯內容、嘗試自己解決問題的習慣,不會的話就去Google,無論是中文還是英文的網頁都去看,英文看不懂就用翻譯機,現在翻譯機已經比大部分人英文水平高多了(不是),真的沒有辦法了才去詢問別人,不要自己都不去嘗試不去試著解決就直接做伸手黨。
對於一些很常有人問的問題我會直接無視不回,真的麻煩大家多多善用 google 搜索,自己試著解決,因為我工作關係也不會很常有時間來看,所以等我看到的時候可能已經是一、兩週後了,這時候你的問題可能已經不是問題,所以我再去回復也沒有意義。
廢話說的有點多,那就直接開始吧。
準備工具
可選擇直接下載整合包或者個別下載架設工具,建議下載整合包。
整合包
- v113:87楓之谷整理好的工具包 (解壓縮密碼:
87ms.net
) - v120:我整理的v120包 (補充:用 wamp 和 navicat 的 v120 舊整合包 Download)
個別下載
有標註📌為架設必要工具。
- 📌XAMPP:伺服器環境整合包,內含Apache、MySQL、PHP,我們需要用到MySQL服務,下載點。
- 注:可使用Wamp, AppServ..等能開啟 MySQL 服務的套裝軟體取代。
- 📌WorkBench:資料庫管理軟體,用於儲存玩家資料、商品清單價格…等,下載點。
- 注:可使用其他資料庫管理軟體代替,如:HeidiSQL、Navicat。
- 📌JDK : JDK8下載戳此。
- 📌私服客戶端+伺服器端:v113版載點:87楓之谷官網;v120版載點:v120端下載點。
- WzRepacker:用於修改及導出WZ,下載點。
- 遊戲視窗化工具:下載點。
- V120原版WZ:下載點。
- 乾淨 v120 ijl15.dll:下載。
其他版本端口:連結1、
連結2、連結3(此連結現已失效,FB搜:87私服架設社團 建議大家可以加進去,有很多問題都有人問過的)、連結4
影片教學
注意
影片部分直接跳過架設工具的安裝以及 JDK 環境變數的設定,請先看完文章中到「開啟 MySQL」服務 前的部分。
架設教程
v113的話87楓之谷有很完整的教程了,這邊教大家怎麼架TMS v120。
這個v120是集合了服務端+客戶端(2.1GB),內容包含:
安裝 XAMPP
到 XAMPP 官網找到圖中下載位置,根據自己的電腦系統安裝 XAMPP:
點擊安裝檔後可能會跳出下方警告,內容是說你的系統已開啟 UAC (使用者帳戶控制),請不要把 XAMPP 安裝到 C:\Program Files
,直接按 OK 就好。
安裝時請確保 Apache、MySQL 和 phpMyAdmin (可選) 有打勾。
你可以將 XAMPP 安裝到任意位置,但就是不要裝在 C:\Program Files
。
後面就一路 Next 直到安裝完成。
安裝 Workbench
至下載 Workbench 頁面根據自己的作業系統下載最新版 Workbench:
直接按下方「No thanks, just start my download.」直接下載:
安裝過程沒什麼特別的直接一路下一步到底就行。
安裝 JDK 及設定環境變數
在開始之前我們先安裝JDK,安裝檔為 伺服器端/jdk8
的 jdk-8u241-windows-i586
。安裝過程中不需要修改任何設定,直接下一步即可。
安裝完畢後請將 jdk/bin
新增到環境變數中。( 不要跟其他版本的JDK衝突 )
在左下角放大鏡搜索「環境變數」點擊「編輯系統環境變數」:
點擊「環境變數」:
在下方系統變數欄位中找到 Path
,選擇後按編輯:
點擊右上角的新增,將 jdk/bin
的路徑添加近來後按確定:
接著將端口內JarLib資料夾裡的 jar 檔放到
- C:\Program Files\Java\jdk1.8.0_231\jre\lib\ext
- C:\Program Files\Java\jdk1.8.0_231\jre\lib\security
- C:\Program Files\Java\jre1.8.0_231\lib\ext
- C:\Program Files\Java\jre1.8.0_231\lib\security
*請依照個人電腦JAVA安裝的位置自行尋找對應的資料夾。
開啟MySQL服務
打開 XAMPP 將 MySQL 服務開啟。
新增資料庫
打開 Workbench ,在下方 MySQL Connections 處找到 + 按鈕:
新增一個連線:
- Connection Name:
localhost
- Hostname:
127.0.0.1
- Port:
3306
- Username:
root
- Password: 不用動, 留空
填完後按右下角的 OK
接著會看到首頁多了一個 localhost 的 connection,點一下它:
接著我們需要新建一個 Schema,在左側 Schemas 處按右鍵 – Create Schema..。
填入資料庫名稱 maplestory
並選擇 Charset 為 big5
後按 Apply。(因為 sql 檔內容是用 big5)
不要動裡面的內容,直接按 Apply:
導入sql檔案
在上方工具列找到 Server – Data Import:
勾選「Import from Self-Contained File」然後路徑為伺服器端口中的 sql 檔案,下方 Default Target Schema 記得改為 maplestory
,都設定好後按右下角的 Start Import:
接著會跳出視窗,直接按 OK:
我們需要將 sql 資料夾中的 sql 檔案全部 import 進去,所以要做兩次:
導出WZ
注意
如果使用的是我整理的 v120 整合包,可以直接跳到「修改伺服器設定」這一節。
看看你的端口有沒有wz資料夾,如果沒有請在伺服器端新增一個wz資料夾,再將 V120原版WZ 內所有檔案複製貼上到伺服器端的 wz資料夾 內。
如何導出WZ?
如果你的端口並沒有附已導好的WZ,這時候就需要自己導出。
先安裝 WzRepacker 然後開啟它(建議以工作管理員身分開啟,不然很容易自動關閉),選擇 File – Load。
將客戶端裡的所有wz 個別導出(一次全導很容易出錯)。
選擇wz節點後,在上方工具欄找到 XML – Dump。
設定不做修改,直接按Dump。
成功後會跳出訊息,顯示將wz導出到這個路徑的資料夾。
將裡面剛導出的Base.wz複製起來
貼上至伺服器端的wz資料夾內(沒有就新增一個),重複以上步驟直到客戶端內的所有wz都導出完畢。
*之後修改wz也都是要做這個步驟,只要修改wz就要重導出一次,否則不會生效。
製作登入器
到這就萬事俱備只差登入器,登入器的製作很簡單,在客戶端內新增一個文字檔 登入器.txt
輸入下方內容後另存為.bat檔
start MapleStory.exe 127.0.0.1 8484
修改伺服器設定
伺服器端內的 Settings.ini
用文字編輯器軟體開啟(ex:記事本)可以修改關於私服的一些設定,比如經驗倍率、介紹文字、活動、IP位址…等。
啟動伺服器
注意
如果使用的是我提供的 v120 架設整合包,啟動伺服器的時候可能會出現 sql 問題,請參考問題匯總 – SQL 第三點的解決辦法。
伺服器端內雙擊Launcher.bat
開啟伺服器。
當看見出現 加載完成 : : : 代表伺服器開啟成功。
再到客戶端開啟登入器,如果一切正常遊戲就會開啟了。
註冊帳號
登入頁面直接輸入帳號密碼可以自動註冊。
*這邊背景是我自己改過了,原本的不是這樣。
遊戲視窗化
下載視窗化工具並解壓縮至客戶端中(如果使用的是我提供的 v120 整合包,裡面已經自帶了),將 dxwnd 相容性改為以系統管理員身分執行。
打開後選擇 視窗化 – 增加程式:
路徑選擇客戶端內的 MapleStory.exe
,DirectX版本選擇 X8
,下方視窗大小自行設定:
再重新使用登入器開啟遊戲就可以視窗化執行了。
若是使用視窗化開啟私服,當你系統彈窗(ex: 使用工作管理員開啟某軟體)時,視窗化會自動取消變回全螢幕。
問題匯總及解決辦法
WAMP
首先是新手最容易卡住的部分WAMP
- 1. WAMP亮黃燈怎麼辦?或者提示could not execute menu item internal error怎麼辦?
-
看看你的
MySQL
port3306
是不是被佔用了,若是在這之前有安裝過類似的環境整合包(AppServ, Xampp , Wamp…) 很容易導致 port 起衝突,有兩種解決方式:- 改 port
- 關閉占用 port 的程式
至於怎麼改 port,請Google搜尋:
3306 port被占用
SQL
- 1.當點擊資料庫卻出現下方提示:
-
沒有開啟 MySQL 服務,如果使用的是 WAMP 請將 WAMP沒打開(或者將WAMP上線),如果使用的是 XAMPP 請打開 XAMPP 控制台將 MySQL 服務啟用。
- 2.導入sql過程中會出現因
accounts
資料表中的 birthday 或 tempban 初始值錯誤而無法導入accounts資料表 -
使用文字編輯器將sql檔打開,找到
birthday
後面的DEFAULT '0000-00-00'
改為DEFAULT '1000-01-01'
將
tempban
後面的DEFAULT '0000-00-00 00:00:00'
改為DEFAULT '2018-01-01 00:00:01'
- 3. 啟動伺服器時出現:
maplestory.alliances doesn't exist
-
(類似問題相同解法)
出現這個錯誤代表 import sql 的時候出了問題 alliances 這個資料表不存在。如果你是用 Workbench 的話,先點左上角的 SQL + 圖示
當出現 SQL File 時,輸入
use maplestory;
後點上方工具列的第一個閃電,這樣就能選中 maplestory 這個資料庫。(當左邊 SCHEMAS 處的 maplestory 是粗體黑字時代表已經成功選中)再從伺服器端口中 sql 資料夾內的
maplestory.sql
找到 alliances 的 SQL 語句,將它貼進去後按上方工具列的第二個閃電圖示執行。CREATE TABLE `alliances` ( `id` int(11) NOT NULL, `name` varchar(13) NOT NULL, `leaderid` int(11) NOT NULL, `guild1` int(11) NOT NULL, `guild2` int(11) NOT NULL, `guild3` int(11) NOT NULL DEFAULT '0', `guild4` int(11) NOT NULL DEFAULT '0', `guild5` int(11) NOT NULL DEFAULT '0', `rank1` varchar(13) NOT NULL DEFAULT '公會長', `rank2` varchar(13) NOT NULL DEFAULT '公會副會長', `rank3` varchar(13) NOT NULL DEFAULT '公會成員', `rank4` varchar(13) NOT NULL DEFAULT '公會成員', `rank5` varchar(13) NOT NULL DEFAULT '公會成員', `capacity` int(11) NOT NULL DEFAULT '2', `notice` varchar(100) NOT NULL DEFAULT '' ) ENGINE=InnoDB DEFAULT CHARSET=big5;
成功的話下方 Output 視窗會有一條訊息,顯示你剛剛執行的 SQL 語句成功:
在對著 maplestory 資料表按右鍵-Refresh All 就會看到多了一個
alliances
資料表,代表成功了。
伺服器
- 1.出現 Exceptoion in thread “Thread-1” java.lang.NoSuchMethodError.server.ServerProperties.getProperty…
-
重新安裝JDK8並設定環境變數,設定java環境變數的方法請再回去看文章中 JDK安裝及設定環境變數 那節。
- 3.出現錯誤:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
-
沒有添加jdk環境變數或是環境變數中有多個jdk路徑導致異常。添加環境變數方法請再回去看文章中 JDK安裝及設定環境變數 那節。
遊戲開啟
- 1.[Error:32a1000b]認證檔案無法下載%1
-
將過HS的 ijl15.dll 檔案覆蓋到主程式資料夾。
- 2.Error code: Failed in finding proper screen made for Gr2D
-
將MapleStory.exe 右鍵 – 內容 – 相容性 -勾選以相容模式執行這個程式(Windows 8)、以系統管理員的身分執行此程式。
- 4.遊戲開啟後到登入畫面變黑屏
-
請重新開機再試試看。
6.與登入伺服器連線中斷,請稍後再試。
這種情況發生原因比較多種,解決辦法有以下幾種,都可以試試看:
- 打開工作管理員檢查是否有開多個
MapleStory.exe
,如果有把全部都結束再開一次 - 確認登入器 IP 跟伺服器設定檔 IP 是否一致,且預設 port 8484 是否可用 (GOOGLE關鍵字:
防火牆 port
) - 請確保使用登入器啟動
- 修改
MapleStory.exe
的相容性成 Win 7 或 Win 8 - 找到該版本
ijl15.dll
覆蓋 (bypass的問題) - 將防火牆關閉
- Win 10 搜尋[控制台],點 程式集-程式和功能-開啟或關閉Windows功能-往下拉有個傳統元件 – 按 + 並將
DirectPlay
打勾後按確定-會出現一個讀取視窗,結束後應該可以正常遊戲) ***須注意DirectPlay一但安裝若想移除僅能透過重灌作業系統的方式,若電腦有其他特殊用途請斟酌使用
端口問題
- 1.TMS v120(我提供的整合包) 使用高級美髮沒反應
-
打開
src/tools/MaplePacketCreator.java
,Ctrl+F搜尋getNPCTalkStyle
找到public static MaplePacket getNPCTalkStyle(int npc, String talk, int… args){ mplew.writeShort(7); .... }
將它改成
public static MaplePacket getNPCTalkStyle(int npc, String talk, int… args){ mplew.writeShort(8); .... }
- 2.商城的東西跟商店的東西在 sql 改;NPC腳本在端口的
Libs\scripts\npc
改;WZ 的話不只要改端口的 xml 還有客戶端的 WZ 檔;再其他的就是改 SRC 了。 -
相關教程參考我發的文章:
- 3.TMS v120端 使用
sendGetNumber
函數有輸入問題 -
打開
tools/MaplePacketCreator.java
搜索getNPCTalkNum
方法,將mplew.write(4); mplew.writeShort(3);
修改為
mplew.write(5); mplew.writeShort(4);
在這個函數下方找到
getNPCTalkText
方法,將mplew.write(4); mplew.writeShort(2);
修改為
mplew.write(5); mplew.writeShort(3);
如何和朋友一起玩?
需要下載 hamachi ,下載安裝好後開啟它,按一下像開機的按紐連線。
網路 – 建立新網路…。
自訂網路ID及密碼
別人需要加進來的,這個ID和密碼需要分享出去,所以不要用自己的帳號密碼
*ID有可能會與別人重複,其實取什麼都可以,不一定要叫私服的名字。
接著將你的 網路ID 和 密碼 分享給朋友,讓朋友也安裝 hamachi 並加入你的網路。
將登入器的 IP 改為 hamachi 提供的 IP (IPv4
)。
伺服器端的 Settings.ini
中的 tms.IP
改為同樣的位址。
最後,將你的整個客戶端壓縮後上傳至雲端分享給朋友,朋友下載解壓縮後使用登入器即可進入遊戲。
- Express + MongoDB 實作使用者增刪改查 API 及登入 API - 2022 年 7 月 2 日
- 解決 React Highcharts 資料筆數過多造成圖表渲染卡頓的情形 - 2022 年 6 月 28 日
- React 那些好看、有趣、實用的函式庫、組件庫推薦(2) - 2022 年 6 月 26 日
您好
我在開啟端口時,跳出了以下的訊息
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table ‘maplestory.auth_server_channel_ip’ doesn’t exist
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
at com.mysql.jdbc.Util.getInstance(Util.java:384)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1054)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3562)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3494)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1960)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2114)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2696)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2105)
at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2264)
at server.ServerProperties.<clinit>(ServerProperties.java:41)
at server.Start.main(Start.java:29)
請問這是不是只我的DB缺少了 auth_server_channel_ip 這個Table呢?
我把SQL重新import了,仍然出現這個提示
您好
已經自行解決了,把整個SQL刪掉後重新import解決
SQL在導入的時候時常會遇到漏掉或者被跳過的情況,這種時候可以統一用問題匯總及解決辦法 – SQL 的第三個問題的解決辦法喔!
謝謝您的回覆
目前遇到的問題是寵物無法補血問題
爬了好多文都找不到解決方式
我的待修清單近20條XDDD 這個也位在清單中,等哪天我把它修好了再告訴你,雖然可能需要很久😂可能到時候你都修完了
雖然按照步驟一步一步來但還是無法正常運行游戲,服務器啓動正常,但是運行登入器.bat 運行客戶端會提示無法登入伺服器,希望能幫忙解答.
我在文中 問題匯總 – 遊戲開啟的第六點補充了一下解決方法,可以都嘗試一下。
謝謝解答,我重新安裝了windows,能正常運行游戲了.但是關閉游戲后會彈出這個對話框,請問是缺少運行庫還是軟體兼容問題?
這幾個方法試試看:
1. 把私服資料夾放到 C 槽
2. 將相容性改為 win7
3. 在應用程式搜索 C++ 把所有版本的 C++ Redistributable 都卸載,然後重新下載及安裝最新版本的 C++ Runtime
4. 下載及安裝最新版本的 .NET Framework
5. 參考這篇文章: https://ding1024.pixnet.net/blog/post/273220952
還有個問題希望你幫幫我,我攻擊怪物,怪物被我打死,但是沒等我的虛擬角色攻擊動作結束,怪物就死亡了金幣獎勵就掉出來了,這點很別扭.
能調節一下怪物掉落的延遲麽,大概使角色完成攻擊動作,怪物再死亡.
是有延遲很多秒嗎?不然掉落比部分技能動畫還快算是滿正常的。如果是特定技能會有這種情況,要去改這個技能的延遲時間(WZ)。