前两天翻B站收藏夹发现几年前收藏了一个搭建CSGO服务器的视频,打算在CS2时代试一下,发现还有不少问题
环境准备
建议使用Debian/Ubuntu,虚拟机/LXC均可,2核CPU 4G内存完全够用 使用ssh连接会方便调试
安装SteamCMD和CSGO Dedicated Server
建议先创建一个其他用户,不建议使用root:
# 用户名csgo可更改useradd -m csgo# 进入csgo用户(接下来在这个用户执行命令)sudo -iu csgo如果接下来遇到权限问题,例如使用其他用户编辑了文件,可使用下面命令修复
# 改为你的用户和服务器文件夹位置sudo chown -R csgo:csgo "/home/csgo/Steam/steamapps/common/Counter-Strike Global Offensive Beta - Dedicated Server/"安装steamcmd:
Debian:
# 更新包索引sudo apt update# 安装仓库管理工具sudo apt install software-properties-common# 添加 non-free 仓库sudo apt-add-repository non-free# 启用 i386 架构支持(32bit)sudo dpkg --add-architecture i386# 再次更新包索引sudo apt update# 安装steamcmdsudo apt install steamcmdUbuntu:
# 添加multiverse 仓库sudo add-apt-repository multiverse# 启用 i386 架构支持(32bit)sudo dpkg --add-architecture i386# 更新包索引sudo apt update# 安装steamcmdsudo apt install steamcmd其他系统参考Valve Developer Community,本文其他命令仍然以Debian/Ubuntu为例
安装CSGO Dedicated Server
# 进入steamcmdsteamcmd# 通过anonymous登录login anonymous# 安装CSGO Dedicated Server(需要一些时间)app_update 740 validate# 退出steamcmdquit配置服务端并测试
仍然在csgo用户下进行:
#进入cfg目录cd "/home/csgo/Steam/steamapps/common/Counter-Strike Global Offensive Beta - Dedicated Server/csgo/cfg"#新建或编辑server.cfgnano server.cfg写入:
// 服务器名称(可留空)hostname "CSGO LAN Server"// 远程控制密码(不建议留空)rcon_password "yourpassword"// 进入服务器密码(按需设置)sv_password ""// 仅局域网服务器模式(建议设置,否则需要设置GSLT并向Valve master注册,不适合安装某些插件)sv_lan 1// 关闭作弊(游戏中可在控制台或rcon开启)sv_cheats 0// 锁128ticksv_mincmdrate 128sv_minupdaterate 128sv_maxupdaterate 128// 允许服务器分发地图等文件(可选)sv_allowdownload 1sv_allowupload 1// 队伍平衡(可选)mp_autoteambalance 1// 游戏模式和规则// 回合分钟数(可按需设置)mp_roundtime 2mp_roundtime_defuse 2// 最大回合数(按需调整,30即16胜)mp_maxrounds 30// 禁用挂机等违规踢出(按需修改)mp_autokick 0// 禁用TK处罚(按需修改)mp_tkpunish 0// CT默认手枪设置(USP:weapon_usp_silencer|P2000:weapon_p2000)mp_ct_default_secondary weapon_usp_silencer删除服务器自带不兼容的libgcc,调用系统的libgcc:
# 安装32 位库(安装steamcmd时应附带安装)sudo apt-get install -y libgcc-s1:i386 libstdc++6:i386# 改名自带的旧 libgcccd "/home/csgo/Steam/steamapps/common/Counter-Strike Global Offensive Beta - Dedicated Server/bin"mv libgcc_s.so.1 libgcc_s.so.1.bak测试启动服务器:
# 进入目录cd "/home/csgo/Steam/steamapps/common/Counter-Strike Global Offensive Beta - Dedicated Server"# 使用srcds启动服务器(必须指定bash避免pushd和popd不存在),下方参数解释bash ./srcds_run \-game csgo \-console \-usercon \-port 27015 \-tickrate 128 \-maxplayers_override 20 \+game_type 0 \+game_mode 1 \+mapgroup mg_active \+map de_dust2 \+sv_lan 1 \+sv_setsteamaccount 0| 参数 | 解释 | 类型 |
|---|---|---|
| -game csgo | 加载/csgo/目录资源(指定游戏) | 引擎参数 |
| -console | 启用文本控制台(禁用图形界面) | 引擎参数 |
| -usercon | 允许远程rcon控制(在客户端更改sv_cheats等参数) | 引擎参数 |
| -port 27015 | 指定端口(默认27015),如更改,客户端连接也需指定端口 | 引擎参数 |
| -tickrate 128 | 128tick | 引擎参数 |
| -maxplayers_override 20 | 玩家上限 | 引擎参数 |
| +game_type 0 | 游戏类型经典(搭配game_mode) | 控制台命令 |
| +game_mode 1 | 竞技模式(搭配game_type) | 控制台命令 |
| +mapgroup mg_active | 定义地图池(gamemodes_server.txt) | 控制台命令 |
| +map de_dust2 | 启动地图dust2(可更改) | 控制台命令 |
| +sv_lan 1 | 设置为局域网服务器(不注册Steam master,无需- GSLT,不公开) | 控制台命令 |
| +sv_setsteamaccount 0 | 公网认证(TOKEN为0则不使用,搭配sv_lan 1) | 控制台命令 |
如果无报错或退出,在CSGO客户端控制台使用connect 你的服务器IP进行连接:

配置tmux分离终端
服务器可正常运行后可配置为tmux管理,否则关闭终端后服务器会停止:
# 安装tmuxsudo apt install tmux# 进入csgo用户sudo -iu csgo# 通过tmux启动服务器(参数如上)tmux new-session -d -s csgo \ -c "/home/csgo/Steam/steamapps/common/Counter-Strike Global Offensive Beta - Dedicated Server" \ './srcds_run -game csgo -console -usercon -port 27015 -tickrate 128 -maxplayers_override 20 +game_type 0 +game_mode 1 +mapgroup mg_active +map de_dust2 +sv_lan 1 +sv_setsteamaccount 0'# 连接csgo会话tmux attach -t csgo# 停止csgo会话tmux kill-session -t csgo再次连接仍然使用tmux attach -t csgo
或者使用wrapper脚本控制:
复制脚本,在/usr/local/bin/新建一个文件并粘贴,然后配置权限:
# 新建文件并粘贴脚本(按需修改脚本中的路径和srcds启动参数)sudo nano /usr/local/bin/csgoctl# 配置权限chmod +x /usr/local/bin/csgoctl# 启动服务器csgoctl start# 关闭服务器csgoctl stop# 重启服务器csgoctl restart# 进入会话csgoctl attach# 查看会话状态csgoctl status分离终端使用Ctrl+B 和 D。不是Ctrl+D(x
配置地图参数、Metamod和Sourcemod
如果服务器稳定运行,可选择安装一些模组提升可玩性
下载并安装Metamod和Sourcemod
# 进入csgo用户sudo -iu csgo# 进入文件夹cd "/home/csgo/Steam/steamapps/common/Counter-Strike Global Offensive Beta - Dedicated Server/csgo"# 下载并解压Metamod(会自动生成/addons/metamod/目录)wget https://mms.alliedmods.net/mmsdrop/1.12/mmsource-1.12.0-git1219-linux.tar.gztar -xzf mmsource-1.12.0-git1219-linux.tar.gz# 下载并解压SourceMod(会自动生成/addons/sourcemod/目录)wget https://sm.alliedmods.net/smdrop/1.11/sourcemod-1.11.0-git6970-linux.tar.gztar -xzf sourcemod-1.11.0-git6970-linux.tar.gz重启服务器后进入会话,输入meta version和sm version查看是否生效:

示例:配置Admin Menu插件
Admin Menu是一个Sourcemod自带的插件,具有管理地图、玩家和执行cfg等功能
查看插件状态
在csgo会话中执行sm plugins list查看已注入的插件列表,一般会有
[ xx ] Admin Menu (1.11.0.xxxx) by AlliedModders LLC,如果没有,查看addons/sourcemod/plugins/disabled/目录是否有,并把它取出来,然后执行sm plugins reload adminmenu.smx

编辑管理员配置文件
先查看自己的SteamID,可以去https://steamdb.info/calculator/<你的Steam64ID>
Steam64 ID通常在你的Steam个人主页路径里面

或者开一把Valve的早期起源引擎游戏,控制台输入status,可以查看玩家的SteamID,和上方相同
编辑addons/sourcemod/configs/admin_simple.ini,按照注释里的说明添加权限:

保存后回到csgo会话,执行sm plugins reload adminmenu.smx重载插件和sm_reloadadmins重载管理员
客户端进入游戏,在聊天框输入!admin打开管理员面板:

修复图池
默认的图池文件可能会有问题,或者你想通过管理员面板更换其他不在默认图池里的地图,可创建一个新的图池ini文件:
# 进入csgo用户sudo -iu csgo# 在addons/sourcemod/configs/创建maps.ininano "/home/csgo/Steam/steamapps/common/Counter-Strike Global Offensive Beta - Dedicated Server/csgo/addons/sourcemod/configs/maps.ini"提供一些自带的地图,复制粘贴即可:
########################## Active Competitive#########################de_dust2de_miragede_infernode_nukede_overpassde_vertigode_ancientde_anubis
########################## Other Defuse#########################de_cachede_trainde_cbblede_canalsde_lakede_safehousede_bankde_stmarcde_shortdustde_shortnuke
########################## Hostage#########################cs_officecs_italy
########################## Arms Race#########################ar_baggagear_shootsar_monasteryar_pool_dayar_lunacy
########################## Demolition#########################de_shorttrainde_sugarcanede_rialto
########################## Flying Scoutsman / Wingman#########################dz_blacksitedz_siroccodz_jungletydz_frostbitedz_vineyarddz_ember
########################## aim / 1v1 / Workshop########################## workshop/2677944247/aim_map_nuke# workshop/1901018709/aim_map# workshop/2132241752/aim_dust1999# workshop/2271217192/1v1_aim_prison编辑addons/sourcemod/configs/maplists.cfg(其他关于地图插件的图池可能也在这里定义),更改sm_map menu的文件为addons/sourcemod/configs/maps.ini:

执行cfg
可在csgo/cfg/文件夹中创建cfg,例如创建一个1v1.cfg:
echo "===== LOADING 1v1 CONFIG ====="
// ---------- 基础 ----------mp_restartgame 1mp_autokick 0mp_autoteambalance 0mp_limitteams 0sv_alltalk 1sv_cheats 1sv_infinite_ammo 0
// ---------- 经济 ----------mp_startmoney 16000mp_maxmoney 16000mp_afterroundmoney 16000mp_playercashawards 0mp_teamcashawards 0mp_buytime 9999mp_buy_anywhere 1
// ---------- 回合 ----------mp_roundtime 1.75mp_roundtime_defuse 1.75mp_freezetime 1mp_maxrounds 52mp_halftime 0mp_match_can_clinch 1mp_ignore_round_win_conditions 0mp_round_restart_delay 2
// ---------- 热身 ----------mp_warmuptime 5mp_warmup_end
// ---------- 战斗 ----------mp_friendlyfire 0mp_damage_headshot_only 0mp_teammates_are_enemies 0
// ---------- 移动 ----------sv_accelerate 5.5sv_airaccelerate 1000sv_enablebunnyhopping 1
// ---------- 掉落 ----------mp_death_drop_gun 1mp_death_drop_grenade 0mp_death_drop_defuser 0
// ---------- BOT 管理 ----------bot_kickbot_quota 1bot_quota_mode matchbot_difficulty 3bot_allow_grenades 0bot_allow_snipers 1
// ---------- 生成 ----------mp_randomspawn 0mp_respawn_on_death_ct 0mp_respawn_on_death_t 0
// ---------- 雷达 ----------mp_radar_showall 1
// ---------- HUD ----------sv_showimpacts 0sv_showimpacts_time 4
// ---------- SourceMod ----------sm_cvar sm_weaponrestrict_immunity 1
// ---------- 完成 ----------say "[1v1] Config Loaded"echo "===== 1v1 CONFIG LOADED ====="更改addons/sourcemod/configs/adminmenu_cfgs.txt,按原有格式加入新的cfg:

一些插件
一些注意事项和技巧
1:文中写的配置文件并不都是最优,可以问AI按需修改
2:Legacy Server会有极大的不确定性,做好重要数据的快照及备份
3:文章中的配置文件会在发现更优方案时更新
4:某些插件提供编译好的.smx文件,可能不适配你的Sourcemod版本,如果提供.sp文件,放入和cd到addons/sourcemod/scripting/目录,然后使用./spcomp your_mod.sp编译为.smx,最后mv your_mod.smx ../plugins再重载模组即可
5:部分复杂的插件压缩包会直接包含addons和cfg等目录,在安装Metamod相同的位置相同的方式解压即可
6:皮肤等插件需要在addons/sourcemod/configs/core.cfg文件底部把"FollowCSGOServerGuidelines"改为no(配置GSLT的不建议改,可能会封禁账号)
7:由于V社复用了CS2和CSGO的AppID,启动项和cfg的路径关系稍微复杂,客户端CSGO想导入cfg可以在Steam\steamapps\common\Counter-Strike Global Offensive\csgo\cfg下创建autoexec.cfg,这样CS2和CSGO会分别导入自己的autoexec.cfg
8:想下载一些工作坊地图可以打开CS2工作坊,搜索地图并在底部开启显示不兼容项目,订阅后打开Counter-Strike Global Offensive\csgo\maps\workshop,里面有创意工坊id文件夹,里面有.bsp文件的就是CSGO可用地图,直接拷贝创意工坊id文件夹到服务器的Counter-Strike Global Offensive Beta - Dedicated Server/csgo/maps/workshop/文件夹下(一定要带着创意工坊id的文件夹,没有workshop目录就创建),最后可在上面maps.ini的文件中添加地图,像workshop/2677944247/aim_map_nuke这样带着路径
9:如果不想每次都输connect IP,可以在上面说的autoexec.cfg里写入alias lan "connect YourServerIP",这样打开控制台输入lan即可连接
评论