本文最后更新于 11 个月前,文中所描述的信息可能已发生改变。
还在为无法和亲朋好友一起跑图而烦恼吗?本地自建 CS2 跑图服务器教程,可以愉快的和朋友一起跑图啦
所需工具:
- 一台拥有公网IP的装有
docker
服务器/电脑:搭建FRP内网穿透 (局域网联机可跳过) - 一台下载好CS2 的
Windows
电脑:搭建本地服务器 - 一个一起跑图的朋友
内网穿透
本地局域网联机的可以跳过
此部分使用 FRP 作为内网穿透工具,Github:fatedier/frp
FRP分为服务器端(frps)和客户端(frpc),主要逻辑是在公网服务器部署服务器端,在本地电脑上部署客户端,frp将会根据配置文件将本地的端口映射到服务器上的某个端口中。
frps服务端搭建
这里当然还是使用最简单易用的docker compose
方案啦,使用vim创建一个docker-compose.yml
文件:
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
,内容非常简单,设置一个用于通讯的接口和密钥:
# frps.toml
[common]
bind_port = 7000 # frps服务监听的端口
auth.token = "adgh0j1cxq" # 连接Token,客户端连接时需要,注意更换
docker compose up -d
启动,防火墙放行7000端口即可
frpc客户端部署
进入GitHub页面的Release界面下载Windows
客户端,本地解压并放在一个容易寻找的路径。
编辑解压后文件夹内的frpc.toml
文件,修改服务器地址和端口,本地需要穿透的端口,远程映射的端口和上面配置的token
:
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
后回车,如下:
C:\PATH\TO\frpc.exe -c C:\PATH\TO\frpc.toml
看到start proxy success
字样即表示连接成功,远端服务器记得放行7111
端口,udp
协议
启动本地CS2服务器
在装有CS2的电脑上一个方便的位置创建bat后缀文件,填入一下内容:
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
启动跟在start后面的第一组冒号为启动窗口的名称,可以为空,但不能不加;
第二组冒号内为CS2在C盘中的默认路径,根据steam的安装位置自行更改;
默认启动地图为沙二,后续可以在终端使用
map
指令自行更改;保存后双击即可启动,启动后可以在命令行键入跑图指令等。
让亲朋好友进入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的专栏,十分感谢。
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"