目录

1、前言

2、准备工作

2.1 准备服务器

2.2 开放服务器端口

2.3 获取token

3、搭建服务器

4、配置服务器

5、开启服务器

6、更新服务器

7、全皮肤插件安装

7.1 基础插件安装

7.2 皮肤插件安装

参考文章


1、前言

在搭建csgo服务器时,寻找网上的教程发现许多教程介绍不全,遇到不少的小问题,现总结一下自己遇到的问题。我用的是腾讯云的轻量级服务器,安装了宝塔面板,操作比较方便。

2、准备工作

2.1 准备服务器

准备一个云服务器,我用的是2核4G的腾讯云轻量级服务器,服务器安装Linux(CentOS)版本,推荐硬盘空间50G以上,注意要安装的csgo文件有32G,请预留磁盘空间

个人推荐服务器装一下宝塔面板来进行可视化的操作,比较方便。

2.2 开放服务器端口

开放对应的服务器端口,csgo服务器使用的默认端口为27015,需要在防火墙中开启27015TCPUDP。若配置了宝塔面板,则还需要在宝塔面板的安全栏页面中同样开放27015端口。

若没有安装宝塔,可以参考下面的linux指令在终端进行操作:

依次输入下方的命令(//之后的是注释,不需要输入):

su root //切换到root账户,需要输入root密码

systemctl enable firewalld.service //设置开机启用防火墙

systemctl start firewalld.service //开启防火墙

firewall-cmd --zone=public --add-port=27015/tcp --permanent //开启27015 TCP端口

firewall-cmd --zone=public --add-port=27015/udp --permanent //开启27015 UDP端口

firewall-cmd --reload //重新加载防火墙使配置生效 

2.3 获取token

这是将自己的csgo服务器注册到csgo社区服务器所必须的登录令牌,获取方法如下图所示:

令牌获取地址:https://steamcommunity.com/dev/managegameservers

注意:如果没有token,自建服务器只能在局域网内使用。令牌网址打不开的话使用加速器,如果有UU加速器那么加速steam社区就行。

3、搭建服务器

打开终端,首先更新CentOS的软件库,命令:

yum update

安装SteamCMD所需的依赖库,命令:

yum install glibc.i686 libstdc++.i686

注意:不同linux版本对应的指令不同,x64和x86的也不同。

以root管理员身份新增一个普通用户,命令:

adduser steam

然后切换到普通用户steam,命令:

su steam

注意:steam只是用户名字,可以根据个人习惯取名。

将SteamCMD的安装包下载到用户steam的根目录,命令:

wget https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz

下载完后进行解压,命令:

tar xvf steamcmd_linux.tar.gz

解压完成后删除安装包,命令:

rm steamcmd_linux.tar.gz

然后保持当前路径,继续安装SteamCMD,命令:

./steamcmd.sh

下载完成后,命令行会变成以Steam>开头

匿名登录steam,命令:

login anonymous

安装以及校验csgo,命令:

app_update 740 validate

等下载完后退出steam>,命令:

exit

至此,服务器的安装已完毕。

4、配置服务器

在CSGO服务器目录下的./csgo/cfg文件夹中新建一个文件命名为server.cfg,然后在这里面修改我们需要的配置。

以下是我的cfg文件配置,可以参考或者直接复制粘贴。

rcon_password "XXXXXXXX" // OP 密码
// "" 表示没有
hostname "XXXXXXXX"
// 服务器名称
sv_region 255 // 服务器所在区域注册参数
// 255=全球
// 0=美国东部
// 1=美国西部
// 2=南美洲
// 3=欧洲
// 4=亚洲
// 5=澳洲
// 6=中东
// 7=非洲
sv_password "XXXXXXXX" 
//进入服务器所需密码,如果不需要可以直接删除这行
sv_rcon_minfailures 10
// 允许输入OP密码 错误次数下限 // 达到下限则封禁对方的IP
sv_rcon_banpenalty 1
// 封禁的时限 单位 分钟
// 0=永久
sv_maxupdaterate 128
// 服务器每秒更新最大频率
// 根据实际网络状况调节
// sv_maxrate / 300 = 要设的值 // 默认=30
// 局域网=101
sv_minupdaterate 40
// 服务器每秒更新最小频率
sv_unlag 1
// 玩家延时补偿
// 0=关闭
// 1=开启(默认)
sv_maxunlag 0.5 
// 延时补偿最大值默认 0.5 // 0.5=500毫秒(默认)
sv_voiceenable 1 
// 服务器是否允许麦克风语音通讯 // 0=禁止
// 1=允许(默认)
sv_unlagsamples 1 // 延时补偿数据包平均采样数量 // 默认=1
sv_unlagpush 0 // 服务器推进延时补偿
// 0=关闭(默认)
// 1=开启
mp_autokick 0 // 自动踢除不动的玩家
// 0=关闭(比赛默认)
// 1=开启
mp_autocrosshair 0 // 自动瞄准
// 0=关闭(默认)
// 1=开启
mp_autoteambalance 0
// 自动平衡双方人数
// 0=关闭(比赛默认)
// 1=开启
mp_buytime 0.25 // 每回合购买武器装备时间单位分钟 // 比赛默认=0.25
mp_consistency 1 // 防止某些模型被更改
// 0=关闭
// 1=开启(默认)
mp_c4timer 35 // C4爆炸倒计时单位秒
// 比赛默认=35
mp_decals 300 // 墙壁上的血花弹孔贴图细节数据传送(200-300)
mp_falldamage 1 // 高处落下伤害
// 0=关闭
// 1=开启(默认)
mp_fadetoblack 0 // 死后黑屏
// 0=关闭(默认)
// 1=开启
mp_flashlight 1 // 手电筒
// 0=禁止
// 1=允许(默认)
mp_forcechasecam 2 // 死后跟随
// 0=所有玩家
// 1=仅队友
// 2=仅队友,主视角(比赛默认)
mp_forcecamera 2 // 死后视角选择
// 0=全部视角
// 1=仅队友,全部视角
// 2=仅队友,主视角(比赛默认)
mp_footsteps 1 // 脚步声
// 0=关闭
// 1=开启(默认)
mp_fraglimit 0 //杀人数上限(1~n),超过上限就换地图 // 0=关闭(默认)
mp_freezetime 8 // 每回合开始冻结时间单位秒
mp_friendlyfire 1 // 友军伤害
// 0=关闭(默认)
// 1=开启
mp_friendly_grenade_damage 1
// 友军手雷伤害
// 0=关闭
// 1=开启
mp_hostagepenalty 0 // 惩罚人质杀手
// 0=不惩罚(默认)
// 1~N=人质被杀数量,超过则踢出该玩家
mp_limitteams 0 // 两队人数差异上限
// 超过此上限,新玩家只能当观察员 // 比赛默认=10
sv_logbans 1
// 服务器日志里记录Ban掉玩家的内容 // 0=不记录
// 1=记录
mp_logecho 0 // 将服务器日志反馈到控制台 // 0=关闭
// 1=开启
mp_logdetail 3 // 服务器日志里记录攻击信息 // 0=不记录任何信息
// 1=记录敌人攻击
// 2=记录队友攻击
// 3=记录所有攻击
mp_logfile 1 // 服务器记录日志为文件 // 0=不记录
// 1=记录
mp_logmessages 1 // 服务器日志里记录谈话内容 // 0=不记录
// 1=记录
mp_maxrounds 30 // 回合上限,达到此上限,自动重新载入新地图
// 0=无回合上限(默认)
mp_playerid 0 // 当准星指向敌人或队友时,显示他们的名字
// 0=显示所有人(比赛默认)
// 1=仅显示队友
// 2=不显示
mp_roundtime 2
// 每回合时限单位分钟
mp_timelimit 0
// 地图最大时限,达此时限,自动重新载入新地图
// 0=无时限
mp_tkpunish 0
// 惩罚队友杀手
// 0=关闭(默认)
// 1=开启
mp_startmoney 800 // 第一回合开始金钱(800~16000) // 加时赛=10000
mp_winlimit 0
// 一方最大胜利回合数,达到此数量,自动重新载入新地图
// 0=无限制(默认)
sv_aim 0
// 自动瞄准
// 0=关闭(默认)
// 1=开启
sv_airaccelerate 10 // 玩家在空中移动的速度
// 默认=10
sv_airmove 1 // 在空中移动&转向
// 0=禁止
// 1=允许(默认)
sv_allowdownload 1
// 客户端下载服务器资源 // 0=禁止
// 1=允许(默认)
sv_allowupload 1
// 客户端上传自己的喷图 // 0=禁止
// 1=允许(默认)
sv_alltalk 1 // 警匪通话
// 0=禁止(默认)
// 1=允许
sv_proxies 1 // HLTV代理
// 0=禁止
// 1=允许(默认)
sv_cheats 0 // 作弊模式
// 0=关闭(默认)
// 1=开启
sv_clienttrace 1.0 // 客户端模型的范围框的尺寸
// 默认 1.0
sv_clipmode 0
// 锁定客户端快速模式
// 0=关闭(默认)
// 1=开启
sv_friction 4
// 地面摩擦力默认 4
// 数值越低,摩擦越小
sv_gravity 800 // 重力默认 800
sv_maxrate 20000 // 服务器最大传输速率<0-25000> // (服务器上传带宽 x 125) /服务器设定的最大人数 = 要设的值
// 0=无限制
// 局域网=25000
sv_maxspeed 320 // 客户端最大移动速度
sv_minrate 0
// 服务器最小传输速率<0-25000> // 0=无限制
sv_send_logos 1 // 客户端相互之间传送喷图
// 0=禁止
// 1=允许(同时确保sv_allowdownload键值为1)
sv_sendvelocity 0
// 服务器混合物理运算,适用于较好配置的服务器 // 0=关闭
// 1=开启
sv_send_resources 1
// 自动向客户端传送地图关联的*.res文件里包括的资源文件 // 0=关闭
// 1=开启(同时确保sv_allowdownload为1)
sv_stepsize 18
// 玩家的步伐距离
// 默认 18
sv_stopspeed 75
// 玩家停止移动时的速度默认 75
sv_timeout 65
// 客户端连接服务器超时的时限,达到时限则断开连接
sv_voicecodec vaudio_speex // 语音通话解码
// voice_miles是HL引擎长期以来用的语音解码(默认),占用带宽较大,为32kbps
// vaudio_speex是Valve新加入的解码,优于voice_miles,占用带宽较少,为2.4kbps至15.2kbps
sv_voicequality 5
// 客户端语音通话质量(确保sv_voicecodec voice_speex)
// 1=非常差...........占用带宽 2.4 kbps // 2=差...............占用带宽 6.0 kbps // 3=中等.............占用带宽 8.0 kbps // 4=好...............占用带宽 11.2 kbps // 5=非常清晰.........占用带宽 15.2 kbps
allow_spectators 1
// 观察员模式
// 0=禁止
// 1=允许
decalfrequency 30
// 玩家喷图的时间间隔单位秒
edgefriction 2
// 玩家与玩家、墙壁、物体之间的摩擦
// 默认 2
host_framerate 0
// 与Demo录制有关
// 0<N<1 为慢录
// n=0 为正常(默认)
// n>1 为快录
log on
// 开始记录日志
pausable 1
// 客户端暂停游戏
// 0=禁止
// 1=允许
// Steam社区服务器验证
sv_setsteamaccount "XXXXXXXXXXXXXXXXXXXXXXXXX"
// 模式参数
game_mode 3
game_type 0
mapcyclefile mapcycle.txt
// 地图循环列表所在的.txt文件
// *.txt = cstrike\*.txt文件
// Use this file to configure your DEDICATED server. // This config file is executed on server start.
// load ban files
exec listip.cfg
exec banned.cfg
exec touzhi.cfg

rcon_password为管理员密码,在控制台可以输入密码使用管理员权限,就不需要在后台使用指令,但是个人感觉用处不大,后面安装了基础插件后直接使用插件来配置会比较方便。

sv_password玩家加入需要的密码,可以设置也可以不设,设置后在csgo游戏的控制台进入服务器的输入格式为:

connect xxx.xx.xx.xxx;password xxxxxxxx

前面的x填你服务器的公网ID地址,后面的x填你设置的密码。

sv_setsteamaccount这是服务器的token,前面我们已经在steam获取到了,往里填你的token就行。

最下面的exec后面跟的是你自己写的一些cfg文件,server文件在执行到最后的时候会执行这些文件,如果你没有这些cfg文件就可以删去这几行代码。

记录:这边遇到过一个踩坑点,在cv其他大哥们的cfg配置文件后,我发现进入服务器后不能开启语音,后面发现原因是服务端voice_speex.dll名字已经改成vaudio_speex.dll了,如果还是很久之前的设置的话进服务器控制台会报错不能识别voice_speex解码。

5、开启服务器

根据Steam的官方文档,需要安装一个包:screen。这个包可以让你的csgo服务程序在后台运行。下载安装代码如下:

yum install screen

然后我们进入到CSGO服务器文件夹的根目录,也就是./steamapps/common/Counter-Strike Global Offensive Beta - Dedicated Server 里面,运行如下代码,启动服务器:

screen ./srcds_run -game csgo -insecure -usercon -console -debug -nomaster +port 27015 +mapgroup mg_casualdelta +map de_mirage +game_type 3 +game_mode0 +exec server.cfg -maxplayers_override 10 -tickrate 128

注意:最后的tickrate参数是把服务器设置为128tick。

至此,服务器启动成功,打开csgo,进入游戏打开控制台,输入 connect xxx.xx.xx.xxx 即可连接,有设置密码的记得加上密码 connect xxx.xx.xx.xxx;password xxxxxxxx 。第一次连接成功后会自动记住密码,后续不用再加 password

6、更新服务器

当steam客户端中的csgo游戏更新时,服务器端的csgo也要同步更新,不然无法进入服务器,游戏控制台会提示版本不一致。

更新服务器步骤如下:

①找到 steamcmd.ch 文件所在目录,一般在 /home/steam/steamcmd 目录下

②在其所在目录打开终端,运行 steamcmd.ch 文件。指令为:./steamcmd.ch

③指定需要更新的csgo游戏文件所在目录,指令如下:

force_install_dir /home/steam/Steam/steamapps/common/Counter-Strike Global Offensive Beta - Dedicated Server

注意!

代码仅作参考,/ 后面跟的文件目录必须是你之前已经安装好的csgo服务器端的目录,如果目录不一致的话,会重新创建一个新的文件夹重新下载验证csgo服务器端,导致更新出现问题。

④匿名登录steam,指令为:login anonymous

⑤更新csgo服务器端,指令为:app_update 740 validate

之后等待更新成功即可。

7、全皮肤插件安装

7.1 基础插件安装

首先需要下载两个基础插件,下载时选择linux版本

SourceMOD

下载地址:https://www.sourcemod.net/downloads.php?branch=stable

MetaMOD

下载地址:http://metamodsource.net/downloads.php?branch=stable

下载后的解压文件可以通过windows版本的XshellXftp软件传到服务器上。如果安装了宝塔面板,那么直接点击上传拖入文件即可。

将两个插件解压后得到addonscfg两个文件夹,把其中的文件放入服务器端csgo文件中对应的addonscfg两个文件夹中即可。

在终端中,修改插件的配置文件,可以参考如下命令:

vi /home/steam/csgo_server/csgo/addons/sourcemod/configs/admins_simple.ini 

如果安装了宝塔面板,那么直接双击 admins_simple.ini 这个文件即可。

进入文件后,将光标移到文档末尾,另起一行写入如下代码:

"STEAM_x:x:xxxxxxxxx" "99:z" 

如果用终端进行编辑操作的话,输入后记得按下键盘的Esc键,再输入 :wq 即可保存并退出。

注意:

① STEAM_x:x:xxxxxxxxx要替换为自己的steamID。

② 99:z指的是权限大小,一般不需要调整权限,照抄就行。

③ 如果还要添加更多管理员,再另起一行按同样格式进行书写。

④ 获取steamID的方法:打开csgo进入任意地图,在控制台输入status就会显示玩家的steamID。

服务器安装SourceMOD和MetaMOD插件并且已经设置过管理员权限后,有权限的玩家可以按Y打开游戏内聊天框,输入指令打开插件的功能菜单,指令:!admin!map

如果利用插件更换地图时发现地图不全,可以在csgo目录下找到maplist.txt文件往里面加入地图。

因为!admin中可以执行cfg文件,这边我是将投掷物训练的代码写成了一份cfg文件命名为touzhi.cfg,然后在server.cfg文件的末尾添加代码用exec来进行执行。

注意:touzhi.cfgserver.cfg在同一目录下。

投掷物训练的代码如下,可作参考:

sv_cheats 1
bot_kick
sv_infinite_ammo 1
mp_startmoney 16000
mp_roundtime_defuse 60
mp_freezetime 0
mp_restartgame 1
mp_buy_anywhere 1
mp_buytime 9999
sv_grenade_trajectory 1
mp_warmup_end
// 投掷物练习。
//sv_airaccelerate 4000;
sv_enablebunnyhopping 1;
sv_autobunnyhopping 1
// 连跳设置。第一行注释掉的是空气阻力设置代码,会影响投掷物的轨迹因此不使用该代码。

7.2 皮肤插件安装

插件的下载:

weapons:Release Weapons v1.7.7 · kgns/weapons · GitHub

gloves:Release Gloves v1.0.5 · kgns/gloves · GitHub

ptah扩展:PTaH Releases

注意:weapons插件需要安装path扩展才能使用。

插件下载完后,安装方式和前面的基础插件一样,将对应的 addons cfg 里的文件放入服务器端对应的 addons cfg 文件夹中即可。

之后进入游戏后,使用 !ws !glove 指令即可进行换肤操作。

最后注意!

使用皮肤插件会有被封号的概率,所以是否使用取决于你自己。

参考文章

一篇文章教你如何架设CSGO服务器_GamerNoTitle的博客-CSDN博客_csgo服务器架设

CS:GO服务器搭建(Linux-CentOS) - 哔哩哔哩

CSGO服务器安装使用全武器皮肤的插件方法教程 - Welcome to XiongTianQi.CN

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐