天堂2单机论坛

 找回密码
 立即注册
查看: 79|回复: 2

〔Login 與 Game〕共用同一份免安裝版 Java 版本

[复制链接]
  • TA的每日心情
    开心
    2026-7-16 00:08
  • 签到天数: 754 天

    [LV.10]以坛为家III

    145

    主题

    1062

    帖子

    1万

    积分

    VIP会员

    Rank: 8Rank: 8

    积分
    10147
    发表于 昨天 16:55 | 显示全部楼层 |阅读模式
    本帖最后由 價值連城 于 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 版本自行註譯

    怎么代碼亂七八糟的...哎發貼限制..先上個圖的

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2026-7-16 00:08
  • 签到天数: 754 天

    [LV.10]以坛为家III

    145

    主题

    1062

    帖子

    1万

    积分

    VIP会员

    Rank: 8Rank: 8

    积分
    10147
     楼主| 发表于 昨天 17:27 | 显示全部楼层
    LoginServer.vbs(共用版)
    1. '取得 Java 路徑(使用上層資料夾的共用免安裝版 Java)
    2. Dim path, fso
    3. Set shell = WScript.CreateObject("WScript.Shell")
    4. Set fso = CreateObject("Scripting.FileSystemObject")

    5. '取得目前腳本所在資料夾,再往上一層找 java
    6. path = fso.GetParentFolderName(WScript.ScriptFullName)
    7. path = fso.GetParentFolderName(path) & "\java\bin"

    8. '檢查 java.exe 是否存在
    9. If Not fso.FileExists(path & "java.exe") Then
    10.         MsgBox "找不到共用免安裝版 Java!" & vbCrLf & vbCrLf & _
    11.                "請確認 java 資料夾放在 login 與 gameserver 的上一層," & vbCrLf & _
    12.                "路徑應為:..\java\bin\java.exe", vbOKOnly + vbExclamation, "登入伺服器"
    13.         WScript.Quit
    14. End If

    15. '載入 java.cfg 參數。
    16. Dim parameters
    17. Set file = CreateObject("Scripting.FileSystemObject").OpenTextFile("java.cfg", 1)
    18. parameters = file.ReadLine()
    19. file.Close
    20. Set file = Nothing

    21. '載入 GUI 設定。
    22. window = 1
    23. Set file = CreateObject("Scripting.FileSystemObject").OpenTextFile("config\Interface.ini", 1)
    24. Do While Not file.AtEndOfStream
    25.         If Replace(LCase(file.ReadLine()), " ", "") = "enablegui=true" Then
    26.                 window = 0
    27.                 Exit Do
    28.         End If
    29. Loop
    30. file.Close
    31. Set file = Nothing

    32. '產生指令。
    33. command = """" & path & "java.exe"" " & parameters & " -jar ../libs/LoginServer.jar"
    34. If window = 1 Then
    35.         command = "cmd /c start ""L2J Mobius - 登入伺服器主控台"" " & command
    36. End If

    37. '執行伺服器。
    38. exitcode = 0
    39. Do
    40.         exitcode = shell.Run(command, window, True)
    41.         If exitcode <> 0 And exitcode <> 2 Then '0 已終止 - 2 已重啟
    42.                 hint = ""
    43.                 Select Case exitcode
    44.                         Case 1
    45.                                 hint = "未捕捉的 Java 例外或錯誤的 Java 版本。"
    46.                         Case 130
    47.                                 hint = "被 Ctrl+C 中斷。"
    48.                         Case 137
    49.                                 hint = "被作業系統終止(記憶體不足?)。"
    50.                         Case 143
    51.                                 hint = "被 SIGTERM 終止。"
    52.                 End Select
    53.                 If hint = "" And exitcode < 0 Then
    54.                         hint = "JVM 或原生程式當機(存取違規)。"
    55.                 End If
    56.                 msg = "登入伺服器異常終止!" & vbCrLf & vbCrLf & "結束代碼:" & exitcode
    57.                 If hint <> "" Then
    58.                         msg = msg & "  (" & hint & ")"
    59.                 End If
    60.                 msg = msg & vbCrLf & "請檢查 log\error0.log 與 log\java0.log 以取得詳細資訊。"
    61.                 MsgBox msg, vbOKOnly + vbExclamation, "登入伺服器"
    62.         End If
    63. Loop While exitcode = 2
    复制代码



    GameServer.vbs(共用版)
    1. '取得 Java 路徑(使用上層資料夾的共用免安裝版 Java)
    2. Dim path, fso
    3. Set shell = WScript.CreateObject("WScript.Shell")
    4. Set fso = CreateObject("Scripting.FileSystemObject")

    5. '取得目前腳本所在資料夾,再往上一層找 java
    6. path = fso.GetParentFolderName(WScript.ScriptFullName)
    7. path = fso.GetParentFolderName(path) & "\java\bin"

    8. '檢查 java.exe 是否存在
    9. If Not fso.FileExists(path & "java.exe") Then
    10.         MsgBox "找不到共用免安裝版 Java!" & vbCrLf & vbCrLf & _
    11.                "請確認 java 資料夾放在 login 與 gameserver 的上一層," & vbCrLf & _
    12.                "路徑應為:..\java\bin\java.exe", vbOKOnly + vbExclamation, "遊戲伺服器"
    13.         WScript.Quit
    14. End If

    15. '載入 java.cfg 參數。
    16. Dim parameters
    17. Set file = CreateObject("Scripting.FileSystemObject").OpenTextFile("java.cfg", 1)
    18. parameters = file.ReadLine()
    19. file.Close
    20. Set file = Nothing

    21. '載入 GUI 設定。
    22. window = 1
    23. Set file = CreateObject("Scripting.FileSystemObject").OpenTextFile("config\Interface.ini", 1)
    24. Do While Not file.AtEndOfStream
    25.         If Replace(LCase(file.ReadLine()), " ", "") = "enablegui=true" Then
    26.                 window = 0
    27.                 Exit Do
    28.         End If
    29. Loop
    30. file.Close
    31. Set file = Nothing

    32. '產生指令。
    33. command = """" & path & "java.exe"" " & parameters & " -jar ../libs/GameServer.jar"
    34. If window = 1 Then
    35.         command = "cmd /c start ""L2J Mobius - 遊戲伺服器主控台"" " & command
    36. End If

    37. '執行伺服器。
    38. exitcode = 0
    39. Do
    40.         exitcode = shell.Run(command, window, True)
    41.         If exitcode <> 0 And exitcode <> 2 Then '0 已終止 - 2 已重啟
    42.                 hint = ""
    43.                 Select Case exitcode
    44.                         Case 1
    45.                                 hint = "未捕捉的 Java 例外或錯誤的 Java 版本。"
    46.                         Case 130
    47.                                 hint = "被 Ctrl+C 中斷。"
    48.                         Case 137
    49.                                 hint = "被作業系統終止(記憶體不足?)。"
    50.                         Case 143
    51.                                 hint = "被 SIGTERM 終止。"
    52.                 End Select
    53.                 If hint = "" And exitcode < 0 Then
    54.                         hint = "JVM 或原生程式當機(存取違規)。"
    55.                 End If
    56.                 msg = "遊戲伺服器異常終止!" & vbCrLf & vbCrLf & "結束代碼:" & exitcode
    57.                 If hint <> "" Then
    58.                         msg = msg & "  (" & hint & ")"
    59.                 End If
    60.                 msg = msg & vbCrLf & "請檢查 log\error0.log 與 log\java0.log 以取得詳細資訊。"
    61.                 MsgBox msg, vbOKOnly + vbExclamation, "遊戲伺服器"
    62.         End If
    63. Loop While exitcode = 2
    复制代码
    回复

    使用道具 举报

  • TA的每日心情
    郁闷
    昨天 06:36
  • 签到天数: 1591 天

    [LV.Master]伴坛终老

    1

    主题

    1687

    帖子

    8260

    积分

    论坛元老

    Rank: 8Rank: 8

    积分
    8260
    发表于 昨天 18:08 | 显示全部楼层
    感谢!楼主辛苦了!
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|监狱|天堂2单机论坛 ( 粤ICP备20030366号 )

    GMT+8, 2026-10-14 06:06 , Processed in 0.056401 second(s), 22 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表