前言
以前曾经写过一篇关于开服的博客,但是现在尝试开服的时候发现老博客的一些内容已经不管用了,而且老博客在转移的过程中,格式出了写问题,所以写一个新的。
普通L4D2服务器的搭建
主要还是搬sir大佬的文章咯
环境和必要组件
1 | dpkg --add-architecture i386 # enable multi-arch |
创建一个名为steam的账户
这个用户名是可以随意指定的,但sir大佬的教程里用的steam,如果我们也用steam的话就不用手动改一些路径了(什么落伍的老方法,今非昔比了)。
如果你不适用steam作为账户名,只需要修改SRCDS_USER变量名就好了(后面会说)。
1 | adduser steam |
安装steamcmd和求生之路2游戏
这是sir大佬的教学文档里写的。主要做了: 安装steamcmd 匿名登录 更改安装路径 安装求生之路2。
1 | (先进入steam账户的根目录) |
(2022/06/11)
但我用的时候会报打不开xxxsteam.so(忘记名字了)库的错误,错误原因未知,我猜测是steamcmd的版本过时了,所以找到了steamcmd的文档SteamCMD - Valve Developer Community (valvesoftware.com),发现可以直接apt安装(Ubuntu), 由于运行steamcmd,会自动创建在当前目录创建.steam
目录,而steamcmd的工作目录在./.steam/steamcmd
,所以路径想和sir保持一致偷懒的话,路径要修改。
所以流程变成了:
1 | (先进入steam账户根目录) |
开启无插件的本地服务器
安装完求生之路2之后,就可以开求生服务器了,但现在还是官方版本。
运行/home/steam/Steam/steamapps/common/l4d2
目录的 srcds_run
脚本直接开服即可
ZoneMod药抗插件的安装
插件安装
把sir大佬的项目克隆到相应位置就安装好了。
基本配置
./cfg/server.cfg
服务器名称,组号,设置为只有组内成员能搜索到。你可以把这个文件改名为server1.cfg
(后面会说)。
1 | hostname "蓝湖畔淅淅沥沥的雨" |
./Dedicated Server Install Guide/srcds1
修改路径,以及配置IP端口、游戏信息等内容。
这个文件需要被放在/etc/init.d/
目录下。
注意PARAMS变量中的server$SVNUM.cfg"
,这说明你的./cfg/
路径下要有server1.cfg
文件。当然你可以定义多种配置,写多个启动脚本。
1 | SRCDS_USER="steam" |
更加方便
编写shell脚本来调用脚本srcds~~(什么牛马套娃)~~
1 | if [ $2 = "start" ] |
示例
1 | ./startgame.sh 2 restart |
服务器配置
导航页
sir佬项目的根目录有这样四个txt文件: motd.txt, host.txt, myhost.txt, mymotd.txt
这些文件里可以写字,也可以放一个链接(图片,网页),可以自定义网页然后把链接放上。
其中motd.txt, host.txt是默认服的导航页
myhost.txt, mymotd.txt是加载插件后的导航页
服务器管理员
在addons\sourcemod\configs\core.cfg
文件中修改PassInfoVar变量的值,它声明了表示密码的变量的名称, 这个值可以随意更改,也可以不改用sir写的默认值。假设我们改成"_abcd"
1 | "PassInfoVar" "_abcd" |
在addons\sourcemod\configs\admins_simple.ini
文件中,拉到最下面加入以下内容。
1 | "名称1" "99:z" "密码1" |
这时候名称1和名称2已经被设为管理员了,如果想使用这两个名称登录,就需要在你的信息中设置对应的密码。
如"名称1"想进入服务器的话,需要先在控制台设置:
1 | setinfo "_abcd" "密码1" |
如"名称2"想进入服务器的话,需要先在控制台设置:
1 | setinfo "_abcd" "密码2" |
否则, 进不去,进去了再改成管理员名称也会被题出来。
游戏参数配置 (改zonemod插件)
限制连推次数
路径:./cfg/cfgogl/zonemod/shared_cvars.cfg
confogl_addcvar z_gun_swing_vs_min_penalty 10
confogl_addcvar z_gun_swing_vs_max_penalty 15
AI特感
路径:./cfg/cfgogl/zonemod/shared_cvars.cfg
阻碍ai特感刷新
confogl_addcvar confogl_blockinfectedbots “0”
导演系统允许ai特感刷新
confogl_addcvar director_allow_infected_bots “1”
AI特感貌似不受一些特感参数的限制
让AI生还者吃药加血
方法1
路径:./addons/sourcemod/plugins/optional/
删除(改名就行)插件botpopstop.smx
方法2
在./cfg/cfgogl/zonemod/shared_cvars.cfg
将这一句注释
sm plugins load optional/botpopstop.smx
修改地图
路径:./cfg/stripper/zonemod/maps
想用原地图把地图配置文件从目录中移除
安全屋外止疼药最大数量
路径:cfg\cfgogl\zonemod\confogl.cfg
confogl_addcvar confogl_pills_limit 2
特感复活时间
路径:cfg\cfgogl\zonemod\confogl.cfg
confogl_addcvar z_ghost_delay_min 10
confogl_addcvar z_ghost_delay_max 10
插件安装
插件下载
AlliedModders (alliedmods.net)
SourceMod: Half-Life 2 Scripting
插件安装
以这个开局在安全屋生成近战的插件举例
在默认服安装
插件网页中说:copy the [L4D2] MeleeInTheSafeRoom.smx to your servers sourcemod/plugins folder.
也就是把smx文文件拷贝到addons/sourcemod/plugins
目录下。 这样就可以在默认服使用该插件。
这个插件还有一些自定义选项,这里不做介绍,可以在网页看教程。
在zonemod服务器安装
在cfg\cfgogl\zonemod
路径下的shared_plugins.cfg
和 confogl_plugins.cfg
文件中都有加载特定插件的语句,可以直接仿照。
先把smx文件拷贝到addons/sourcemod/plugins/optional
目录,然后在confogl_plugins.cfg
写入sm plugins load optional/[L4D2]MeleeInTheSafeRoom.smx
**注意:**经测试若插件名带空格会加载不上,可以给插件改一个名字
一些错误的解决
错误1
-bash: /etc/init.d/srcds1: /bin/sh^M: bad interpreter: No such file or directory
文件编码有问题。
sir的说明:
If you receive “-bash: /etc/init.d/srcds1: /bin/sh^M: bad interpreter: No such file or directory” error, it means you have dos line ending file You can use dos2unix command on srcds1 file, or use any other method to have this file in unix format
解决方法1:
vi打开文件, 输入:set ff=unix, 然后:wq退出
解决方法2:
sed -i -e ‘s/\r$//’ 文件名
其他
关于游戏更新
./steamcmd.sh
login anonymous
app_update 222860 validate
如果开了插件服务器,则需要等作者更新发布之后,将作者的更新同步到你的服务器
关于screen托盘
查看被托盘的进程,只能看到本账户开的,不能看到其他账户开的。
1 | screen -ls |
打开进程
1 | screen -r 进程名称或进程号(pid) |
退出进程
1 | Ctrl + C 直接杀掉进程 |