CS:MOS 开服教程

本教程为搭建CSMOS服务器教程,共分为三步

[TOC]

一、安装 SteamCMD

创建steam用户

useradd -m steam

进入用户目录

cd /home/steam

安装 screen 管理工具

apt install screen

安装 SteamCMD
Ubuntu22 源自带 steamcmd

apt install steamcmd

链接 steamcmd 可执行文件

ln -s /usr/games/steamcmd steamcmd

如果没有软件包,可以手动安装或使用Docker。详情看
https://developer.valvesoftware.com/wiki/Zh/SteamCMD#Linux

切换到steam用户登录

su - steam

运行 SteamCMD

  1. 为 SteamCMD 创建目录并切换至该目录
mkdir ~/Steam && cd ~/Steam
  1. 如果之前apt安装失败,手动下载并解压缩适用于 Linux 的 SteamCMD
curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf -
  1. 解压完以后,ls 查看一下是否有steamcmd.sh文件,并运行
steamcmd # apt 安装的steamcmd 就执行这个
./steamcmd.sh # 手动下载安装的就执行这个

第一次加载可能有点慢,看运气,如果下载实在很慢的话可以ctrl+c退出,然后将整个Steam文件夹删除,最后回到第一步重来就好

二、下载CS起源服务端

如果出现 Steam> 就证明你成功安装了,接下来在这个界面我们要登录,并安装cs起源服务端

设置起源服务端的安装路径

force_install_dir ./cs_source/

注意:要先选择路径后登录

登录SteamCMD

login anonymous

下载cs起源服务端

app_update 232330 validate

顺便记录一下黑山起源服务端是346680

等到出现 Success! App '232330' fully installed. 时,输入 quit 退出 SteamCMD

进入cs_source文件夹

cd cs_source

这个就是我们服务端所在的文件夹了,待会我们需要用 CSMOS 的服务端覆盖这个原始CS起源服务端

下载CSMOS v6.5服务端

curl -L -X GET 'http://106.52.5.176:5244/d/GTADE/CSMOS/CSMOS_ok.zip' -H 'User-Agent:pan.baidu.com' -C - --output csmos_server.zip

下载CSMOS v6.5数据包
(3G,解压后7G) 已经启用断点续传

curl -L -X GET 'http://106.52.5.176:5244/d/GTADE/CSMOS/CSMOS%E6%B8%B8%E6%88%8F%E6%95%B0%E6%8D%AEv6.5.7z' -H 'User-Agent:pan.baidu.com' -C - --output csmos_data.7z

覆盖解压服务端到当前路径

unzip -o csmos_server.zip -d ./

覆盖解压数据包到当前路径
(是的,输出路径和-o指令就是粘在一起的,当然不指定就是解压到7z包所处目录)

7z x csmos_data.7z -y -o./

完成这一步以后,恭喜你已经完成CSMOS服务端的安装了!

三、配置CSMOS服务端并开启服务器

1. 编辑 csmos/cfg/server.cfg

// 服务器信息设置
hostname "Rn平台对狙服Q群834675420"  // 服务器名称
sv_lan 0                             // 设置为 0,允许互联网玩家连接,非局域网模式
sv_region 0                          // 区域代码,0 表示全区域

// 服务器地图等资源下载设置
sv_downloadurl "http://yourdomain.com" // 只兼容http请求
sv_allowdownload 1
sv_allowupload 0

// 玩家经济设置
cash_player_bomb_defused 200         // 玩家拆除炸弹后获得的金钱奖励
cash_player_bomb_planted 200         // 玩家成功埋下炸弹后获得的金钱奖励
cash_player_damage_hostage -30       // 伤害人质时的金钱处罚
cash_player_interact_with_hostage 300 // 与人质互动(例如解救或带走)获得的奖励
cash_player_killed_enemy_default 200 // 击杀敌人时的默认奖励
cash_player_killed_enemy_factor 0.5  // 击杀奖励的倍数
cash_player_killed_hostage -1000     // 击杀人质的惩罚
cash_player_killed_teammate -300     // 击杀队友的惩罚
cash_player_rescued_hostage 1000     // 解救人质的奖励
cash_team_elimination_bomb_map 2700  // 爆破地图中团队消灭对手获胜时的奖励
cash_team_elimination_hostage_map_t 2000 // 人质地图中恐怖分子团队消灭对手获胜时的奖励
cash_team_elimination_hostage_map_ct 2300 // 人质地图中反恐精英团队消灭对手获胜时的奖励
cash_team_hostage_alive 0            // 每个存活的人质团队获得的奖励
cash_team_hostage_interaction 500    // 团队与人质互动的奖励
cash_team_loser_bonus 2400           // 输掉一局时的团队金钱奖励
cash_team_loser_bonus_consecutive_rounds 0 // 连续输掉多局的额外金钱奖励
cash_team_planted_bomb_but_defused 200 // 炸弹已埋下但被拆除时团队的奖励
cash_team_rescued_hostage 0          // 成功解救人质时团队的奖励
cash_team_terrorist_win_bomb 2700    // 恐怖分子通过炸弹爆炸获胜时团队的奖励
cash_team_win_by_defusing_bomb 2700  // 通过拆除炸弹获胜时的团队奖励
cash_team_win_by_hostage_rescue 3000 // 通过解救人质获胜时团队的奖励
cash_team_win_by_time_running_out_hostage 2000 // 人质地图上,时间耗尽恐怖分子获胜的奖励
cash_team_win_by_time_running_out_bomb 2700 // 爆破地图上,时间耗尽反恐精英获胜的奖励

// 游戏时间设置
mp_buytime 45                        // 购买时间(秒)
mp_buy_anywhere 0                    // 禁止在任意位置购买
mp_forcecamera 0                     // 允许玩家自由观看(0 为自由观看,1 为仅观看队友)
mp_free_armor 2                      // 为所有玩家提供免费护甲和头盔
mp_freezetime 5                      // 开局前冻结时间(秒)
mp_friendlyfire 1                    // 开启队友伤害
mp_respawn_immunitytime 0            // 复活后无敌时间(秒)
mp_halftime 1                        // 启用半场切换
mp_overtime_enable 1                 // 启用加时赛
mp_maxmoney 10000                    // 玩家金钱上限
mp_maxrounds 15                      // 每场比赛的最大回合数
mp_winlimit 8                        // 胜利所需回合数
mp_roundtime 3                       // 每回合时间(分钟)
mp_solid_teammates 0                 // 队友之间不会有实体碰撞
mp_roundtime_hostage 2               // 人质地图每回合时间(分钟)
mp_roundtime_defuse 2.25             // 爆破地图每回合时间(分钟)
mp_startmoney 1000                   // 初始金钱
mp_timelimit 0                       // 比赛时间限制(分钟),0 为无限
mp_warmuptime 60                     // 热身时间(秒)
mp_warmup_pausetimer 0               // 热身结束后是否暂停计时(0 为关闭)

// 观察设置
spec_freeze_time 3.0                 // 玩家死亡后,观察模式冻结时间(秒)
sv_talk_enemy_living 0               // 队伍之间的存活玩家禁止语音交流
sv_talk_enemy_dead 1                 // 队伍之间的死亡玩家可以语音交流
sv_deadtalk 0                        // 死亡玩家是否可以与存活玩家交流(0 禁止)

// 游戏玩法设置
sv_infinite_ammo 0                   // 禁用无限弹药
ammo_flashbang_max 1                 // 玩家最多可携带的闪光弹数量
ammo_grenade_limit_total 3           // 玩家最多可携带的手雷总数
mp_round_restart_delay 10            // 每局结束后的延迟时间(秒)

//---------------- 下面这些是重点 具体配置继续看帖子下面地图参数配置 ----------------//

// 死斗模式无限复活设置
mp_respawn_on_death_ct 1             // 死斗模式下,反恐精英复活
mp_respawn_on_death_t 1              // 死斗模式下,恐怖分子复活

// 回合规则设置
mp_ignore_round_win_conditions 1     // 忽略默认的回合胜利条件

mp_friendlyfire 1 // 开启友军伤害
voice_enable 0 // 关闭语音聊天功能
sv_password 123456 // 设置服务器密码

ChatGPT 生成的注释,可以根据实际情况修改

CSMOS服务端的模式主要由动态库(.so) 和 cfg文件和地图文件控制,这里还需进一步研究
其中地图文件决定了基本玩法

1. 编辑启动脚本 srcds_run

注意不要在这里设置服务器密码等参数,可能会导致服务器开一段时间后崩溃。密码请在server.cfg内设置

#!/bin/bash

# 设置库路径,优先使用本地目录下的库
export LD_LIBRARY_PATH=".:bin:$LD_LIBRARY_PATH"
# 将当前目录 (.) 和子目录 bin 添加到 LD_LIBRARY_PATH 环境变量中,
# 确保脚本运行时优先加载本地目录中的动态库文件。

# 运行 服务端 并传递参数
./dedicated_launcher -insecure -maxplayers 10 -game csmos -console -port 27015 -language English +map awp_lego_2
# 执行 dedicated_launcher 并传递以下参数:
# - `-insecure`:禁用 VAC(Valve Anti-Cheat),用于非官方服务器。
# - `-maxplayers 10`:设置服务器最大玩家数量为 10。
# - `-game csmos`:指定游戏模式为 `csmos`。
# - `-console`:启用控制台模式,允许管理员实时查看或输入命令。
# - `-port 27015`:指定服务器监听的端口为 27015(默认的 CS:GO 服务器端口)。
# - `-language English`:设置服务器语言为英语。
# - `+map awp_lego_2`:启动后加载地图 `awp_lego_2`。
# 注意不要在这里设置服务器密码,可能会导致服务器开一段时间后崩溃。密码在server.cfg内设置

地图放在 csmos/maps 目录下,可以在此目录添加新地图

RnMOS服务器用到的地图下载

curl -L -X GET 'http://106.52.5.176:5244/d/GTADE/CSMOS/RnMOS%E5%9C%B0%E5%9B%BE%E5%8C%85.zip' -H 'User-Agent:pan.baidu.com' -C - --output rnmos_map.zip

下载解压到 csmos/maps 目录下即可

目前已知地图种类
死斗:RnS1
团队竞技:$2000$,fy_snow
爆破:文件名含有dust2, mirage, nuke, inferno, fps等字样的大概率也是
狙服:awp_lego_2
1v1约战单挑:aim_map_csgo,RnMOS1v1

地图类型简介
爆破就是拆弹
歼灭就是一方把另一方全杀完
死斗(DM)就是全局没队友单纯练枪乱打的
团竞(TDM)就是无限复活

自定义地图下载链接
作用是减轻服务器压力和绕过16mb地图大小限制
看上面 server.cfg 前面 有三个参数
注意:起源不支持https请求下载地图,尽量也不要用重定向
目录结构和数据包是一样的,例如:

// server.cfg 里面
sv_downloadurl "http://yourdomain.com/csmos"

// 下载地图的时候则会请求下面的链接
http://yourdomain.com/csmos/maps/de_nuke_old_blue.bsp

不同类型地图的cfg参数设置
基本就只需要动最底下的
爆破 —— 默认cfg啥也不设置(友伤、无限复活、忽略胜利条件关闭或移除,其他默认)
死斗 —— 友伤+无限复活+忽略胜利条件[死斗地图上的复活点必须到处都是]
团竞 —— 无限复活+忽略胜利条件+关闭友伤

注:目前服务器貌似不支持超过16mb的地图直接从服务端下载,大地图需要客户端手动安装。RnMOS未来会提供一键导入功能