服务器管理 本地

创作者: astrolan
已更新:2021-11-03 18:50:53
2KB

关于此 MOD

批处理管理器文件/应用程序,用于安装和管理本地Windows版英灵神殿服务器。从始至终,包含SteamCMD安装程序以及服务器的设置与管理。虽然其中大部分操作可以在Steam客户端中完成,但本工具更为详尽。
谁可能需要或想要这个批处理文件,用来在您的机器上“安装并管理”本地Windows《英灵神殿》服务器?

如果你曾把自己的本地世界分享给一两位朋友,并体验过那并不理想的表现,那你真该考虑一下这个。
解决方案。或者也许你只是想运行或测试一个专用的Windows版瓦尔海姆服务器,但又不想花时间去琢磨所有的细节问题。
设置起来就行了!(*比如我,我就用它每周四游戏之夜带一个8人队,5个兄弟和其他家人!*)

所以,这个高度自定义的批处理文件会先安装Steamcmd.exe服务器安装程序,然后再安装你的本地服务器。

这并非全是自动化/黑箱操作, 阅读 菜单里,它会一步步引导你完成流程!!!
    [0] ... 安装 SteamCMD(服务器安装/更新程序 - 必须首先/一次性运行)-(结束时按退出)
    [1] ... 安装/更新本地《英灵神殿》专用服务器(必需/按需)
    [2]…启动服务器
    [9] ... 退出

特性:
批处理文件可以放在系统中的任何位置并运行。(快捷方式是你的好帮手)
默认为私人服务器,你需要告诉你的朋友你的IP#和端口号#2456
(如需切换至公共服务器,请将“public 0”改为“public 1”)
随意编辑文件并挂载/运行你的任何本地世界(在世界间切换)
每次启动批处理时,都会将你的角色和世界数据备份到“我的文档”文件夹中(如不需要可编辑删除)
*** (更多相关备份信息,请参阅我在帖子中的注释!)
提供一个简单的菜单选项,无需在终端窗口中手动干预即可停止您的服务器。
* (如果出于某种原因确实需要手动停止服务器,请选中终端窗口并按AltF4) *

默认情况下:
在您的用户目录中安装steamcmd.exe,将其保存为“steamcmd”文件夹(并在此处构建应用程序)

在你的系统驱动器“Program Files (x86)\Steam\steamapps\common\Valheim dedicated server\”中安装服务器valheim_server.exe。

所有使用说明均写在注释中,或直接在菜单中给出。

您可以测试本地服务器而无需对文件进行任何更改,但至少应编辑以下内容:
(测试后即可编辑,没有任何问题!)

* 密码 -(默认密码为12345)
* worldname – (默认为 Dedicated) – (若未找到,将以随机种子创建)
* servername –(默认为 MyServer)

与所有《英灵神殿》服务器一样,你的服务器也可以像其他任何服务器一样进行模组修改。
服务器,使用了与修改客户端相同的99%的技术。
完整的批处理文件如下所示,或者您可以下载压缩文件。

:: Valheim 服务器管理器 v0.1(2021年11月3日),创意及部分资源信息来源于互联网(感谢各位)
:: 未解决:在路由器/防火墙上开放所需端口范围2456-2458
::
::修改下方游戏名称:可选
SET GameServed=Valheim
::
:: 使用菜单选项0,或手动安装/下载适用于Windows的SteamCMD:https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip
:: 问题参见:(https://developer.valvesoftware.com/wiki/SteamCMD)
:: 如果您手动安装了 steamcmd.exe,请将下面一行更新/更改为您的 steamcmd.exe 路径
SET steamCMDPath=%USERPROFILE%\steamcmd\ 
::
:: 如果你的服务器位置不同,请修改下面这一行:(这是Steam默认设置)
SET runcmd="%SYSTEMDRIVE%\Program Files (x86)\Steam\steamapps\common\Valheim dedicated server\"
::
::请在下方更新:将“password”改为其他内容
SET ThisServerName=MyServer
::
::如需更新世界数据:若该世界尚不存在,将以随机种子生成(提示:可在《英灵神殿》应用中先行创建本地世界,再以该世界进行游戏)
SET gameWorldName=专用服务器
::
::请在下方输入更新内容(至少5个字符,不得与名字重复)
SET gameServerPassword=12345
:: 除非你清楚自己在做什么,否则不要改动下面任何内容!
SET thisfilename=Srv Mgr v0.1
SET ValheimStatus=off
SET steamgameId=896660
SET SteamAppId=892970
SET steamUsername=anonymous
SET steamPassword=
SET logName=%GameServed%_%ThisServerName%_server.log
SET kinputerror=
SET appstatus=
@echo off
标题 %thisfilename% - %GameServed%
cls
颜色 1f
如果存在"%SYSTEMDRIVE%\Program Files (x86)\Steam\steamapps\common\Valheim dedicated server\",则CD /d "%runcmd%"
>> "%logName%" echo (%date%)(%time%) **************************************************
>> "%logName%" 回显 (%date%)(%time%) (%thisfilename%) - 服务器: %ThisServerName% 正在服务: %GameServed%
>> “%logName%” 输出 (%date%)(%time%) **************************************************
:菜单
echo (%date%)(%time%) (%thisfilename%) - 服务器: %ThisServerName% - 服务游戏: %GameServed%
tasklist /fi "ImageName eq valheim_server.exe" /fo csv 2>NUL | find /I "valheim_server.exe" >NUL
:: 服务器运行中
if "%ERRORLEVEL%"=="0" (SET ValheimStatus=on)
echo:
echo:
888 888 d8888 888 888 888 8888888888 8888888 888b d888 
echo 888 888 d88888 888 888 888 888 888 8888b d8888 
echo 888 888 d88P888 888 888 888 888 888 88888b.d88888 
echo Y88b d88P d88P 888 888 8888888888 8888888 888 888Y88888P888 
echo Y88b d88P d88P 888 888 888 888 888 888 888 Y888P 888 
echo Y88o88P d88P 888 888 888 888 888 888 888 Y8P 888 
Y888P d8888888888 888 888 888 888 888 888 “ 888 
echo Y8P d88P 888 88888888 888 888 8888888888 8888888 888 888 
回音:
echo %GameServed% 专用服务器:%ThisServerName%
IF %ValheimStatus%==off echo 服务器状态:已停止
如果 %ValheimStatus% 为 on,则输出 服务器状态:运行中
IF %ValheimStatus%==on COLOR 2f
回声:
命令菜单
echo ____________
如果Valheim状态为关闭,则回显[0]...安装SteamCMD(服务器安装/更新工具-首次/每次必需)-(结束时输入quit!)
IF %ValheimStatus%==off echo [1] ... 安装/更新本地瓦尔海姆专用服务器(必需/按需)
IF %ValheimStatus%==off echo [2]...启动服务器
IF %ValheimStatus%==on echo [3] ... 停止服务器
echo [9] ... 退出
echo:
如果定义了kinputerror,则输出%kinputerror%
IF DEFINED appstatus echo %appstatus%
IF %ValheimStatus%==on echo 警告 - 服务器停止前请勿退出
SET "K="
SET /P K= 选择菜单命令: 
回声:
IF %K%==0 IF %ValheimStatus%==off GOTO installsteamcmd
IF %K%==1 IF %ValheimStatus%==off GOTO update
IF %K%==2 IF %ValheimStatus%==off GOTO start
IF %K%==3 IF %ValheimStatus%==on GOTO stop
IF %K%==8 GOTO taskkill
如果 %K% 等于 9,则跳转到告别
:: SET ValheimStatus=off
SET kinputerror=错误:-- 未知输入键 %K%
cls
前往菜单
:: ---------------------
:正在安装SteamCmd。
set failtext="未能创建steamcmd目录"
如果不存在"%USERPROFILE%\steamcmd",则创建该目录。
if not exist "%USERPROFILE%\steamcmd" goto fail
::下载zip文件
正在下载压缩文件...
%SystemRoot%\system32\bitsadmin.exe /transfer "SteamCMD-Install" https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip "%USERPROFILE%\steamcmd\steamcmd.zip"
正在解压zip文件...
%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -nologo -noprofile -command "& { $shell = New-Object -COM Shell.Application; $target = $shell.NameSpace('%USERPROFILE%\steamcmd'); $zip = $shell.NameSpace('%USERPROFILE%\steamcmd\steamcmd.zip'); $target.CopyHere($zip.Items(), 16); }"
set failtext=“未找到 steamcmd.exe,解压失败”
if not exist "%USERPROFILE%\steamcmd\steamcmd.exe" goto fail
调用 %USERPROFILE%\steamcmd\steamcmd.exe
SET appstatus=SteamCMD.EXE 已安装!
颜色 1f
cls
返回菜单
:: ---------------------
:更新
::启动steamcmd安装和更新屏幕
echo (%date%)(%time%) 通过SteamCMD使用Steam更新%GameServed%
>>“%logName%” echo (%date%)(%time%) 通过SteamCMD使用Steam运行%GameServed%更新
CD /d %steamCMDPath%
调用 %USERPROFILE%\steamcmd\steamcmd.exe +login anonymous +force_install_dir "C:\Program Files (x86)\Steam\steamapps\common\Valheim dedicated server" +app_update 896660 validate +quit
:: 备选方式? 启动 /等待 %USERPROFILE%\steamcmd\steamcmd.exe +登录匿名 +强制安装目录 "C:\Program Files (x86)\Steam\steamapps\common\Valheim 专用服务器" +应用更新 896660 验证 +退出
设置应用状态=已安装专用服务器!
颜色 1f
cls
回到菜单
:: ---------------------
开始
::启动游戏服务器
echo (%date%)(%time%) 启动 %GameServed% 服务器 - 名称:%ThisServerName% - 世界:%gameWorldName% - 密码:%gameServerPassword%
>> "%logName%" echo (%date%)(%time%) 开始 %GameServed% 服务器 - 名称: %ThisServerName% - 世界: %gameWorldName% - 密码: %gameServerPassword%
:: 将本地世界与角色数据备份到你的文档文件夹(若不需要备份,可移除或注释掉接下来的13行!)
echo "首先,我们将世界与角色数据备份到 %USERPROFILE%\Documents\"
抱歉,我无法处理该请求。
     set dow=%%i
     set month=%%j
     set day=%%k
     set year=%%l
)
for /f "tokens=1-5 delims=:" %%d in ("%time%") do (
 set hour=%%d
 set minute=%%e
)
set datestr=%month%_%day%_%year%_%hour%_%minute%
%SystemRoot%\System32\xcopy.exe "%USERPROFILE%\AppData\LocalLow\IronGate\Valheim\*" "%USERPROFILE%\Documents\Valheim_GameData_BAC%datestr%" /C /H /I /K /Q /R /S /Y >nul
::启动服务器
SET ValheimStatus=on
CD /d "%runcmd%"
start /high valheim_server.exe -nographics -batchmode -name %ThisServerName% -port 2456 -world %gameWorldName% -password %gameServerPassword% public 0
::Test:: valheim_server /high -nographics -batchmode -name “5兄弟在瓦尔海姆” -port 2456 -world “xxxxxx” -password “xxxx” public 0
cls
SET appstatus=服务器运行中!
颜色 2f
转到菜单
:: ---------------------
:stop
cls
回声:
echo:
回响:
回声:
tasklist /fi "ImageName eq valheim_server.exe" /fo csv 2>NUL | find /I "valheim_server.exe">NUL
:: 服务器运行中
如果不是错误等级为0,则跳转至菜单
>> "%logName%" echo (%date%)(%time%) 正在尝试软停止 %GameServed% 服务器 - 名称:%ThisServerName%
echo 尝试软停止 - 请注意终端服务器窗口,观察其是否关闭
如果不行,请退出此批处理文件,选择您的终端服务器窗口并按AltF4
taskkill /IM "valheim_server.exe">NUL
timeout /t 10
>> “%logName%” echo [服务器] (%date%)(%time%) %ThisServerName% 在 %GameServed%
>> "%logName%" echo [服务器] (%date%)(%time%) 退出! %thisfilename% 用于服务器 %ThisServerName%,位于 %GameServed%
>> “%logName%” 回显 [服务器] (%date%)(%time%) %ThisServerName% 在 %GameServed% 中
SET ValheimStatus=off
SET appstatus=服务器正在软关闭并保存数据!
颜色 4f
cls
前往菜单
:: ---------------------
:再见
>> "%logName%" 回显 (%date%)(%time%) 正常 菜单 退出 %thisfilename% 服务器 %ThisServerName% 于 %GameServed%
echo 从 %thisfilename%(此控制台)退出现已正常
timeout /t 4 >null
退出
:失败
cls
回声:
echo:
echo 失败:%failtext%
还是回音
发生其他错误,请检查你的安装文件夹,位置位于
echo %steamCMDPath%        
:: %USERPROFILE%\steamcmd
echo %runcmd%
:: “%SystemRoot%\Program Files (x86)\Steam\steamapps\common\”
::
按任意键退出!
暂停
退出 0

Valheim: 英灵神殿 的热门 MOD

探索适用于 Valheim: 英灵神殿 的最佳MOD,带来新功能、升级画面,以及令人兴奋的方式来改变您的游戏体验。

使用 Xmod 解锁 Valheim: 英灵神殿 的全部潜力 — 今天就探索这些顶级 MOD!