CS2: 本地自建跑图服务器

本文最后更新于 11 个月前,文中所描述的信息可能已发生改变。

还在为无法和亲朋好友一起跑图而烦恼吗?本地自建 CS2 跑图服务器教程,可以愉快的和朋友一起跑图啦

所需工具:

  1. 一台拥有公网IP的装有docker服务器/电脑:搭建FRP内网穿透 (局域网联机可跳过)
  2. 一台下载好CS2 的Windows电脑:搭建本地服务器
  3. 一个一起跑图的朋友

内网穿透

本地局域网联机的可以跳过

此部分使用 FRP 作为内网穿透工具,Github:fatedier/frp

FRP分为服务器端(frps)和客户端(frpc),主要逻辑是在公网服务器部署服务器端,在本地电脑上部署客户端,frp将会根据配置文件将本地的端口映射到服务器上的某个端口中。

frps服务端搭建

这里当然还是使用最简单易用的docker compose方案啦,使用vim创建一个docker-compose.yml文件:

yaml
version: '3.3'
    services:
        frps:
            restart: always
            network_mode: host
            volumes:
                - './frps.toml:/etc/frp/frps.toml'
            container_name: frps
            image: snowdreamtech/frps

启动之前需要创建一个配置文件frps.toml,内容非常简单,设置一个用于通讯的接口和密钥:

toml
# frps.toml
[common]
bind_port = 7000  # frps服务监听的端口
auth.token = "adgh0j1cxq"  # 连接Token,客户端连接时需要,注意更换

docker compose up -d启动,防火墙放行7000端口即可

frpc客户端部署

进入GitHub页面的Release界面下载Windows客户端,本地解压并放在一个容易寻找的路径。

编辑解压后文件夹内的frpc.toml文件,修改服务器地址和端口,本地需要穿透的端口,远程映射的端口和上面配置的token

toml
serverAddr = "1xx.1xx.1xx.1xx" # frps服务端ip
serverPort = 7000

[[proxies]]
name = "cs2" #名称
type = "udp" # 游戏服务器普遍为udp协议
localIP = "127.0.0.1" 
localPort = 27015 # 本地端口
remotePort = 7111 #远程端口
auth.token = "adgh0j1cxq"

打开CMD,拖入frpc.exe,后面加上-c,再拖入frpc.toml后回车,如下:

powershell
C:\PATH\TO\frpc.exe -c C:\PATH\TO\frpc.toml

看到start proxy success字样即表示连接成功,远端服务器记得放行7111端口,udp协议

启动本地CS2服务器

在装有CS2的电脑上一个方便的位置创建bat后缀文件,填入一下内容:

powershell
start "" "C:\Program Files (x86)\Steam\steamapps\common\Counter-Strike Global Offensive\game\bin\win64\cs2.exe" -dedicated -maxplayer 10 -high -ip 127.0.0.1 -port 27015 -insecure +map de_dust2 -language english -worldwide
  1. 启动跟在start后面的第一组冒号为启动窗口的名称,可以为空,但不能不加;

  2. 第二组冒号内为CS2在C盘中的默认路径,根据steam的安装位置自行更改;

  3. 默认启动地图为沙二,后续可以在终端使用map指令自行更改;

  4. 保存后双击即可启动,启动后可以在命令行键入跑图指令等。

  5. 让亲朋好友进入cs2,打开控制台输入 connect 服务器ip:7111 即可愉快的跑图啦

跑图CFG

经过测试,只有少数指令如 重现上次投掷物指令sv_rethrow_last_grenade无法使用。

CFG保存路径:steamapps\common\Counter-Strike Global Offensive\game\csgo\cfg

在CFG保存目录内新建train.cfg文件,键入跑图指令,大部分内容是和自己训练的跑图时所用的时互通的,保存后即可在CMD输入exec train启用跑图

下面内容大部分来自Bilibili-东北晓Official的专栏,十分感谢。

yaml
sv_grenade_trajectory_prac_pipreview 1                //显示投掷物落点窗口
sv_grenade_trajectory_prac_trailtime 8 //投掷物轨迹时常 默认最大值为8
sv_regeneration_force_on 1               //启用自动回血,为0关闭此功能
sv_falldamage_scale 0                      //取消高空坠落伤害
mp_drop_knife_enable 1          //允许丢刀 
mp_ignore_round_win_conditions 1  //禁用胜利条件,一方全灭,或下包爆炸,或拆包成功,都不会使回合结束

bot_kick				//剔除所有电脑
sv_cheats 1			//允许作弊指令
bot_stop 1			//bot静止
mp_warmup_end			//结束热身时间
mp_freezetime 0			//开局冻结时间设置为0
mp_respawn_immunitytime 0	//重生保护时间设置为0
mp_round_restart_delay 0		//重新开始延迟设定
mp_maxrounds 30			//最大局数设置为30局
mp_roundtime_defuse 60		//每局时间设置为60min
mp_buytime 99999			//购买时间设置为99999
mp_maxmoney 65535		//最大金钱设置为65535
mp_startmoney 65535		//初始金钱设置为65535
mp_buy_anywhere 1		//任何位置购买物品
mp_autoteambalance 0		//关闭自动平衡人数
mp_limitteams 0			//关闭CT和T的人数差限制
mp_free_armor 0			//开局不带防弹衣和头盔
mp_forcecamera 0			//不限制观察者观看队伍
sv_alltalk 1			//开启全局语音
ammo_grenade_limit_total 6		//手雷携带数目设置为6
sv_grenade_trajectory 1		//投掷物飞行轨迹开启
sv_grenade_trajectory_thickness 3	//飞行轨迹线条粗细设置为3
cl_grenadepreview 1		//预测投掷物飞行轨迹
mp_drop_knife_enable 1		//可以丢刀
bot_join_after_player 1		//电脑在玩家后加入
sv_showimpacts 1			//显示弹着点
mp_restartgame 1			//1秒后重新开始游戏·
mp_ignore_round_win_conditions 1 //回合不结束
sv_infinite_ammo 1  //弹药道具无限

bind "alt" "noclip"				//绑定alt键飞行
bind "[" "bot_add ct"			//绑定[键添加一个CT bot
bind "]" "bot_add t"			//绑定]键添加一个T bot
bind "p" "Bot_Place"			//绑定p键在面前放置一个电脑
bind "\" "bot_kick"				//绑定\键踢出所有电脑
bind "-" "bot_crouch 1"			//绑定-键机器人蹲下
bind "=" "bot_crouch 0"			//绑定=键机器人站立
bind "L" "gods"				//绑定L键使所有人无敌
bind "'" "god"				//绑定'键使自己无敌(bot不无敌)
bind "F5" "sv_showimpacts 1"		//显示弹着点
bind "F6" "sv_showimpacts 0"		//关闭弹着点
bind "F9" "sv_rethrow_last_grenade"		//绑定F9键重复上一次投掷物
bind "F11" "mp_restartgame 1"
哪吒探针:使用CF隐藏通讯ip
Scaleway救援模式救机过程