L4D2私服搭建

 

参考

搭建私服

下载服务端数据

完整结构

.
├── bin
├── dedicatedserver_readme.txt
├── hl2
├── hlds_steamgames.vdf
├── l4d2-devkit.sh
├── left4dead2
├── left4dead2.dat
├── left4dead2_dlc1
├── left4dead2_dlc2
├── left4dead2_dlc3
├── left4dead2.exe
├── left4dead2.ico
├── left4dead2_lv
├── platform
├── srcds_linux
├── srcds_run
├── steam_appid.txt
├── steamapps
└── update

docker构建

Dockerfile

FROM debian:12-slim
LABEL org.opencontainers.image.source=https://github.com/HoshinoRei/l4d2server-docker
LABEL L4D2_VERSION=2243

ENV LANG=C.UTF-8
ENV LC_ALL=C.UTF-8
ENV LANGUAGE=C.UTF-8

RUN rm -f /etc/apt/sources.list /etc/apt/sources.list.d/debian.sources && \
    echo "deb http://deb.debian.org/debian bookworm main contrib non-free non-free-firmware" > /etc/apt/sources.list && \
    echo "deb http://deb.debian.org/debian bookworm-updates main contrib non-free non-free-firmware" >> /etc/apt/sources.list && \
    echo "deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware" >> /etc/apt/sources.list && \
    apt-get update && \
    apt-get install -y --no-install-recommends ca-certificates && \
    rm -rf /var/lib/apt/lists/*

RUN rm -f /etc/apt/sources.list && \
    cat > /etc/apt/sources.list.d/debian.sources <<'EOF'
Types: deb
URIs: https://mirrors.tuna.tsinghua.edu.cn/debian
Suites: bookworm bookworm-updates
Components: main contrib non-free non-free-firmware
Architectures: amd64 i386
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg

Types: deb
URIs: https://mirrors.tuna.tsinghua.edu.cn/debian-security
Suites: bookworm-security
Components: main contrib non-free non-free-firmware
Architectures: amd64 i386
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
EOF

RUN dpkg --add-architecture i386 && \
    apt-get update && \
    apt-get install -y --no-install-recommends curl lib32gcc-s1 lib32stdc++6 lib32z1 lib32ncurses6 lib32tinfo6 libcurl4 libcurl4:i386 && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \
    adduser --home /home/steam --disabled-password --shell /bin/bash --gecos "user for running steam" --quiet steam

USER steam
WORKDIR /home/steam

RUN curl -sSL https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz \
    | tar zxvf -

RUN ./steamcmd.sh +quit

# COPY ./left4dead2_server /home/steam/left4dead2_server

EXPOSE 27015 27015/udp

构建镜像ld42_server

docker build -t l4d2_server .

配置文件

服务器信息

宿主机下新建server.cfg

服务端路径left4dead2/cfg/server.cfg

// 服务器名称
hostname "dmjcb"

// Steam group
sv_steamgroup "123456"

// whether to make the server Steam group private
sv_steamgroup_exclusive "1"

// whether or not to allow people with different mods to enter the server
sv_consistency "0"

// hidden server
sv_tags "hidden"

// region, 255 means all
sv_region "255"

欢迎信息(可选)

宿主机新建motd.txt

服务端路径left4dead2/cfg/motd.txt

Welcome to My L4D2 Server!
Enjoy your stay!

建立服务端

创建容器

docker run -itd --net="host" --name=l4d2_mini -v ./left4dead2_server:/home/steam/left4dead2_server -v ./server.cfg:/home/steam/left4dead2_server/left4dead2/cfg/server.cfg l4d2_mini:latest

建图

获取目标地图代码, 执行命令建立地图

docker exec -it l4d2_mini sh /home/steam/left4dead2_server/srcds_run -game left4dead2 -secure -insecure +map 地图代码 -maxplayers 8 -condebug +exec /home/steam/left4dead2_server/left4dead2/cfg/server.cfg -nomaster
三方图

若要使用三方图, 须将地图文件拷贝到容器内/home/steam/l4d2server/left4dead2/addons路径下

  • 示例, 使用广州增城地图

拷贝vpk文件到容器指定路径

docker cp ./2396847377.vpk l4d2:/home/steam/l4d2server/left4dead2/addons

修改地图代码为增城第一关, 启动

docker exec -it l4d2 sh /home/steam/l4d2server/srcds_run -game left4dead2 -secure -insecure +map zc_m1 -maxplayers 8 -condebug +exec /home/steam/l4d2server/left4dead2/cfg/server.cfg -nomaster

连接

创建大厅

选择完成战役-与好友一起玩游戏-创建新战役大厅

设置服务器

服务器类型选目前最佳专用

~启动控制台, 设置强制使用指定服务器, 开始游戏

mm_dedicated_force_servers 服务器IP:端口
  • 示例, 设服务器IP为112.126.28.203, 端口默认27015
mm_dedicated_force_servers 112.126.28.203:27015

连接成功后服务端显示用户已经加入

服务端能正常显示游戏内容

控制台指令

基础

队友传送

Warp_all_survivors_here

作弊

Sv_Cheats 1

无敌

god 1

穿墙

noclip

第三人称

thirdpersonshoulder 1
绑定按键
  • 示例, 绑定到按键 g
bind g "thirdpersonshoulder 1"

武器

无限弹药不换弹夹

sv_infinite_ammo 1

激光

upgrade_add laser_sight

榴弹

give weapon_grenade_launcher

m60

give rifle_m60

地图

map 地图代码

突变模式

map 地图代码 模式名

猎头者

map 地图代码 mutation2