本帖最后由 價值連城 于 2026-10-13 17:19 编辑
今天試搞個〔Login 與 Game〕共用同一份免安裝版 Java 版本
引用 topguid大佬發佈的自帶java服務端啟動指令修改教學
https://www.l2tw.com/forum.php?m ... d=8742&fromuid=1533
(出處: 天堂2單機論壇)
建議資料夾結構 伺服器根目錄/ ├── java/ ← 共用免安裝版 Java(只放一份) │ └── bin/ │ └── java.exe │ ├── login/ │ ├── LoginServer.vbs │ ├── java.cfg │ ├── config/ │ └── ... │ └── gameserver/ ├── GameServer.vbs ├── java.cfg ├── config/ └── ...
LoginServer.vbs(共用版)
vbs
[color=var(--fg-primary)][backcolor=var(--surface-elevated)][size=0.9em]'取得 Java 路徑(使用上層資料夾的共用免安裝版 Java)Dim path, fsoSet shell = WScript.CreateObject("WScript.Shell")Set fso = CreateObject("Scripting.FileSystemObject")'取得目前腳本所在資料夾,再往上一層找 javapath = fso.GetParentFolderName(WScript.ScriptFullName)path = fso.GetParentFolderName(path) & "\java\bin\"'檢查 java.exe 是否存在If Not fso.FileExists(path & "java.exe") Then MsgBox "找不到共用免安裝版 Java!" & vbCrLf & vbCrLf & _ "請確認 java 資料夾放在 login 與 gameserver 的上一層," & vbCrLf & _ "路徑應為:..\java\bin\java.exe", vbOKOnly + vbExclamation, "登入伺服器" WScript.QuitEnd If'載入 java.cfg 參數。Dim parametersSet file = CreateObject("Scripting.FileSystemObject").OpenTextFile("java.cfg", 1)parameters = file.ReadLine()file.CloseSet file = Nothing'載入 GUI 設定。window = 1Set file = CreateObject("Scripting.FileSystemObject").OpenTextFile("config\Interface.ini", 1)Do While Not file.AtEndOfStream If Replace(LCase(file.ReadLine()), " ", "") = "enablegui=true" Then window = 0 Exit Do End IfLoopfile.CloseSet file = Nothing'產生指令。command = """" & path & "java.exe"" " & parameters & " -jar ../libs/LoginServer.jar"If window = 1 Then command = "cmd /c start ""L2J Mobius - 登入伺服器主控台"" " & commandEnd If'執行伺服器。exitcode = 0Do exitcode = shell.Run(command, window, True) If exitcode <> 0 And exitcode <> 2 Then '0 已終止 - 2 已重啟 hint = "" Select Case exitcode Case 1 hint = "未捕捉的 Java 例外或錯誤的 Java 版本。" Case 130 hint = "被 Ctrl+C 中斷。" Case 137 hint = "被作業系統終止(記憶體不足?)。" Case 143 hint = "被 SIGTERM 終止。" End Select If hint = "" And exitcode < 0 Then hint = "JVM 或原生程式當機(存取違規)。" End If msg = "登入伺服器異常終止!" & vbCrLf & vbCrLf & "結束代碼:" & exitcode If hint <> "" Then msg = msg & " (" & hint & ")" End If msg = msg & vbCrLf & "請檢查 log\error0.log 與 log\java0.log 以取得詳細資訊。" MsgBox msg, vbOKOnly + vbExclamation, "登入伺服器" End IfLoop While exitcode = 2
GameServer.vbs(共用版)
vbs
[color=var(--fg-primary)][backcolor=var(--surface-elevated)][size=0.9em]'取得 Java 路徑(使用上層資料夾的共用免安裝版 Java)Dim path, fsoSet shell = WScript.CreateObject("WScript.Shell")Set fso = CreateObject("Scripting.FileSystemObject")'取得目前腳本所在資料夾,再往上一層找 javapath = fso.GetParentFolderName(WScript.ScriptFullName)path = fso.GetParentFolderName(path) & "\java\bin\"'檢查 java.exe 是否存在If Not fso.FileExists(path & "java.exe") Then MsgBox "找不到共用免安裝版 Java!" & vbCrLf & vbCrLf & _ "請確認 java 資料夾放在 login 與 gameserver 的上一層," & vbCrLf & _ "路徑應為:..\java\bin\java.exe", vbOKOnly + vbExclamation, "遊戲伺服器" WScript.QuitEnd If'載入 java.cfg 參數。Dim parametersSet file = CreateObject("Scripting.FileSystemObject").OpenTextFile("java.cfg", 1)parameters = file.ReadLine()file.CloseSet file = Nothing'載入 GUI 設定。window = 1Set file = CreateObject("Scripting.FileSystemObject").OpenTextFile("config\Interface.ini", 1)Do While Not file.AtEndOfStream If Replace(LCase(file.ReadLine()), " ", "") = "enablegui=true" Then window = 0 Exit Do End IfLoopfile.CloseSet file = Nothing'產生指令。command = """" & path & "java.exe"" " & parameters & " -jar ../libs/GameServer.jar"If window = 1 Then command = "cmd /c start ""L2J Mobius - 遊戲伺服器主控台"" " & commandEnd If'執行伺服器。exitcode = 0Do exitcode = shell.Run(command, window, True) If exitcode <> 0 And exitcode <> 2 Then '0 已終止 - 2 已重啟 hint = "" Select Case exitcode Case 1 hint = "未捕捉的 Java 例外或錯誤的 Java 版本。" Case 130 hint = "被 Ctrl+C 中斷。" Case 137 hint = "被作業系統終止(記憶體不足?)。" Case 143 hint = "被 SIGTERM 終止。" End Select If hint = "" And exitcode < 0 Then hint = "JVM 或原生程式當機(存取違規)。" End If msg = "遊戲伺服器異常終止!" & vbCrLf & vbCrLf & "結束代碼:" & exitcode If hint <> "" Then msg = msg & " (" & hint & ")" End If msg = msg & vbCrLf & "請檢查 log\error0.log 與 log\java0.log 以取得詳細資訊。" MsgBox msg, vbOKOnly + vbExclamation, "遊戲伺服器" End IfLoop While exitcode = 2
這樣 Login 與 Game 就會共用上一層的 java 資料夾,只需要放一份免安裝版 Java 即可。 Java 版本自行註譯
怎么代碼亂七八糟的...哎發貼限制..先上個圖的
|