Like Share Discussion Bookmark Smile

J.J. Huang   2021-08-14   天堂私服   瀏覽次數:

天堂私服 | Eclipse 編輯程式碼和編譯Jar並執行

目標

此章節將會找尋一個超級無敵簡單到爆炸的修改,但是可以學習一系列的流程到修改程式碼、編譯jar檔、執行jar檔、觀看成果。

設置目標:

  • 啟動天堂模擬器。
  • 注意命令提示字元內的輸出內容。
  • 看到初始化完畢
  • 這次的目標就是找尋到程式碼位置,並把他修改輸出的內容。

搜尋

Eclipse IDE中,算是很常使用的一個功能就是搜尋,這邊我們要做的就是搜尋關鍵字初始化完畢在程式碼的哪個位置,誰在使用他,從而判斷需要修改的地方。

  • 搜尋前記得關閉不必要的專案,避免搜尋到相同關鍵字在不同的專案內。
  • 點選SearchFile
  • 在開啟的Search視窗中,點選File Search頁籤。
  • Containing text輸入要搜尋的內容初始化完畢
  • Scope選擇workspance即可。
  • 最後點擊Search做搜尋。

    註:有一些設定和範圍可以自行摸索,這邊只簡單教學使用。

  • 搜尋結果會在下方的Search視窗內。
  • 可以點選右邊的+符號,把所有搜尋的結果展開。(注意搜尋結果太多展開會Lag甚至當掉唷)
  • 見搜尋到兩個檔案 -
    • messages_zh_TW
    • messages
  • 初步判斷zh_TW為繁體中文,所以可以斷定為程式是讀取這個位置的名稱來做輸出。
  • 點擊messages_zh_TW的搜尋結果,開啟於編輯區。
  • 51行的內容。
    1
    { "l1j.server.server.GameServer.initialfinished","初始化完畢"}};
  • 修改方式有兩種 -
    • 第一種,直接修改該行程式碼後方的”初始化完畢”字串內容。
    • 第二種,修改取得該Key對應的程式碼位置。(這種暫時不提及,對新手可能有點難了解其關係)
  • 針對第一種修改方法的修改方式
    1
    2
    3
    4
    // 編輯前
    { "l1j.server.server.GameServer.initialfinished","初始化完畢"}};
    // 編輯後
    { "l1j.server.server.GameServer.initialfinished","這是第一次嘗試修改天堂核心程式碼呢!好期待!"}};
  • 編輯後記得儲存,快捷鍵Ctrl + S
  • 接著Build專案,快捷鍵Ctrl + B,確認是否沒有任何錯誤。
  • 到這邊已經成功第一步驟,修改完程式碼了。

編譯Jar並執行

此版本的天堂模擬器是使用Ant做腳本來編譯出jar檔。

  • 開啟L1J-TW_3.80c目錄。

    註:記得要開啟Eclipse編輯的那個資料夾唷。

  • 並進入Build的資料夾。
  • 點擊執行BuildManagement.bat檔。
  • 輸入1並按下Enter進行編譯。
  • 可見開始編譯,最後出現BUILD SUCCESSFUL,編譯完成。
  • 此時回到L1J-TW_3.80c目錄內。
  • 注意l1jserver.jar檔案的修改時間是否已經改變成當前時間,其表示已經是編譯後的新jar檔。
  • 執行ServerStart.bat檔案來開啟天堂模擬器。
  • 注意命令提示字元內的輸出內容。
  • 看到這是第一次嘗試修改天堂核心程式碼呢!好期待!
  • 恭喜第一次的修改和編譯已經成工看到成果了。

疑問解答

  • 為什麼會確定要修改messages_zh_TW檔,而不是另外一個呢?

    • 其實這東西是經驗的累積,當然在沒有經驗的情況下,就是都修改看看,慢慢找尋到正確位置,這方法雖然笨,但是卻是累積經驗的方法。
  • 為什麼知道要用Ant來編譯jar檔?

    • 關於這問題也是經驗…;在開啟專案的時候,我會將大概的整個架構看過,內容也都會稍微觀看一下,所以就可以猜測一些基本的東西,大方向不會錯;有些有經驗的人會說怎麼不猜測Maven或是Gradle。我只能說先不要讓新手瘋了…有興趣可以搜尋關鍵字了解一下。
  • 第二種方法是?

    • 這邊大約提一下,可以看到程式碼,他是一個key對應一個value,那我把key的內容去搜尋不就可以找到使用他的程式碼位置了嗎?記得都找到位置了…想怎麼改就怎麼改。

結語

學習程式碼,不外乎就是多看多猜多學習,沒有什麼快捷的辦法;這邊提供的一個小範例,是希望幫助新手可以有一點點的了解,慢慢的學習,不至於一開始受到太大的挫折而放棄。
最後建議回顧一下首章天堂私服 | 天堂私服架設教學,了解其章結目錄,此處會不定時更新。

免責聲明

  • 本部落格文章中皆不提供任何所謂的遊戲「主程式」、「模擬器」、「登入器」…等等相關程式的下載點。
  • 本部落格文章中所見之遊戲主程式和服務器端程序均來自網路發佈,版本歸原作者所有
  • 本部落格文章為研究SQL資料庫與修改JAVA語法使用,非商業用途,亦無做營運事實等任何一切商業行為
  • 本部落格文章內容是為研究學習設計思想和原理為目的,絕沒有故意侵權或惡意抄襲、篡改其他遊戲內容