部分教程参考B站UP主「新城龍一」-longの舞- (也可以观看视频)

首先要具备以下条件

  • 云VPS(如阿里云、腾讯云、雨云等)推荐

  • 本机仅局域网/公网IP

  • 你可能要用到的工具 Visual Studio Code Notepad3

  • 如果无法正常访问相关网站使用

首先下载SteamCMD

下载地址:点击下载

将其解压至任意目录 如: D:\steamcmd (目录不能含有中文)

双击运行SteamCMD

d2b5ca33bd20250123015737.png

等待下载完毕 (如果下载速度慢 可尝试使用UU加速器)

下载完成页面:

d2b5ca33bd20250123015850.png

(一)登录SteamCMD

登录游客账号

login anonymous

登录完成页面:

d2b5ca33bd20250123020155.png

可选: 你也可以使用自己的Steam账号来进行登录

使用命令

login <用户名>

d2b5ca33bd20250123020458.png

(二)开始下载Gmod服务端

使用命令 app_update 4020 开始下载

d2b5ca33bd20250123020606.png

下载完成页面

d2b5ca33bd20250123021032.png

可选: 挂载CSS服务端

tips:info 推荐挂载 如果不挂载CSS 你的服务器会导致一些来自CSS的实体就会被玩家轻易的穿过

打开SteamCMD 使用命令 app_update 232330 来进行下载CSS服务端

image-sQDY.png

image-vGuG.png

Success! App '232330' fully installed. 为下载完成

CSS服务端默认路径

/steamcmd/steamapps/common/Counter-Strike Source Dedicated Server

在gmod服务端里挂载CSS

/steamcmd/steamapps/common/GarrysModDS/garrysmod/cfg/mount.cfg

image-ccdN.png

修改实际目录即可

image-HAcq.png

挂载成功

(三):启动服务器

首先在目录新建文件 srcds.bat

srcds.exe -console -game garrysmod +map gm_construct +maxplayers 24 -ip 0.0.0.0 -port 27015 +servercfgfile server.cfg +gamemode sandbox
  • map: 要启动的地图
  • maxplayers: 玩家上限
  • ip: 设为0000自动获取公网IP地址
  • port: 端口
  • servercfgfile: 服务器配置文件
  • gamemode: 游戏模式

配置服务器参数

在D:\steamcmd\steamapps\common\GarrysModDS\garrysmod\cfg 目录下的

server.cfg 可以参考我预设设置

image-nkef.png

// 服务器设置
hostname "屁股翘哦啦啦"  // 这是服务器的名称 会显示在服务器列表里
rcon_password "114514" // 服务器的远程控制密码
sv_password "" // 服务器连接密码 空白则没有
sv_loadingurl "xxx.com" // 加载界面 URL
sv_region "255" // 服务器所在区域 255表示 所有区域
sv_lan "0" // 局域网模式 设为 0表示服务器运行在互联网模式 如果设为1则仅限局域网游戏

// 沙盒一些设置实例
sbox_maxprops "100"
sbox_maxragdolls "5"
sbox_maxnpcs "10"
sbox_maxballoons "10"
sbox_maxeffects "10"
sbox_maxdynamite "10"
sbox_maxlamps "10"
sbox_maxthrusters "10"
sbox_maxwheels "10"
sbox_maxhoverballs "10"
sbox_maxvehicles "20"
sbox_maxbuttons "10"
sbox_maxsents "20"
sbox_maxemitters "5"
sbox_godmode "0" // 无敌模式 默认0 不使用
sbox_noclip "0" // 穿墙模式 默认0 不使用

然后启动服务器即可

d2b5ca33bd20250123023048.png

输入 status 即可查看服务器状态

image-Arxo.png

tips:warn 如果你是云服务器记得要在安全组开放端口 TCP/UDP 图中实例端口27015

image.png

(四)提升服务器排名

打开链接 Steam 游戏服务器帐户管理

输入App ID 4000 即可

image-vadd.png

获取到的登录令牌 使用命令 +sv_setsteamaccount 来添加到srcds.bat里 保存即可

image-ZYdR.png

(五)创建合集添加进服务器

在创意工坊创建合集

image-GBPA.png

添加你想要的插件

image-Ujhm.png

然后到合集页面点击发布

image-lUdJ.png

记得更改合集可见度为 公开

image-yUQJ.png

复制合集链接 后面的数字

image-hRJT.png

来到你gmod服务端的目录

点开你之前创建的Bat文件

srcds.exe -console -game garrysmod +map gm_construct +maxplayers 24 -ip 0.0.0.0 -port 27015 +servercfgfile server.cfg +gamemode sandbox +host_workshop_collection 3566150331

+host_workshop_collection 3566150331 添加进去即可

image-loil.png

成功完成挂载

解包插件 手动添加进addons文件夹

首先准备 gmpublisher 工具

工具介绍

  • 不依赖 gmad.exe 或 gmpublish.exe
  • 发布和更新您的创意工坊项目
  • 提取、搜索和浏览 GMA 文件及已安装的插件
  • 批量下载与解压创意工坊项目及合集
  • 支持上传动态 GIF 作为创意工坊项目的图标
  • 通过插件大小分析树状图,分析哪些插件占用了最多的磁盘空间
  • 支持旧版 SteamPipe 插件及早期 GMA 版本
  • 可在无网络连接的环境下工作
  • 提供命令行界面(CLI)
  • (仅 Windows)支持 .GMA 文件关联,方便快速提取

image-ldfU.png

粘贴完整链接开始下载

image-OcFz.png

添加进addons文件夹即可

image-qOJP.png

挂载成功

(六)更新服务端

进服务器显示版本过旧? 那就要更新服务端了

创建文件

在steamcmd目录创建新文件 gmodserverupdate.bat

image-AjFU.png

粘贴以下命令

set base_dir=%~dp0
%base_dir:~0,2%pushd %base_dir%
steamcmd.exe +login anonymous +app_update 4020 +quit

image-OhoT.png

等待更新完成即可

(七) 添加插件至服务器

基础插件 ULX管理员插件

1187480082_preview_steamworkshop_webupload_previewfile_162601864_preview.jpg

点击下载

ULib 2.71 (.zip)

ULX 3.81 (.zip) (Requires ULib v2.71+)

image-mXem.png

然后将解压到addons目录即可 目录必须是 插件名字/lua

ULX管理命令

ulx adduser 名字 权限组(给予玩家相应的权限组)
[超级管理员] superadmin [管理员] admin [普通玩家] user

娱乐类(Fun)

  • ulx armor <玩家> <护甲值: 0≤x≤255> - 设置目标玩家的护甲值(指令:!armor)
  • ulx blind <玩家> [强度: 0≤x≤255, 默认255] - 使目标玩家失明(指令:!blind)(相反命令:ulx unblind 解除失明)
  • ulx cloak [<玩家, 默认自己>] [强度: 0≤x≤255, 默认255] - 使目标玩家隐身(披风效果)(指令:!cloak)(相反命令:ulx uncloak 解除隐身)
  • ulx freeze <玩家> - 冻结目标玩家(无法移动)(指令:!freeze)(相反命令:ulx unfreeze 解除冻结)
  • ulx god [<玩家, 默认自己>] - 赋予目标玩家无敌模式(不受伤害)(指令:!god)(相反命令:ulx ungod 解除无敌)
  • ulx hp <玩家> <生命值: 1≤x≤2147483647> - 设置目标玩家的生命值(指令:!hp)
  • ulx ignite <玩家> [持续时间: 1≤x≤300秒, 默认300] - 点燃目标玩家(持续掉血)(指令:!ignite)(相反命令:ulx unignite 熄灭)
  • ulx jail <玩家> [监禁时间(秒,0为永久,0≤x,默认0)] - 将目标玩家关进监狱(指令:!jail)(相反命令:ulx unjail 提前释放)
  • ulx jailtp <玩家> [监禁时间(秒,0为永久,0≤x,默认0)] - 先传送目标玩家到监狱位置,再监禁(指令:!jailtp)
  • ulx maul <玩家> - 对目标玩家发动群殴(群体伤害)(指令:!maul)
  • ulx playsound <音效路径> - 播放指定音效(路径相对于游戏音效目录)
  • ulx ragdoll <玩家> - 让目标玩家变为布娃娃状态(无碰撞,受物理影响)(指令:!ragdoll)(相反命令:ulx unragdoll 恢复)
  • ulx slap <玩家> [伤害值: 0≤x, 默认0] - 对目标玩家造成指定伤害的拍击(指令:!slap)
  • ulx slay <玩家> - 直接杀死目标玩家(指令:!slay)
  • ulx sslay <玩家> - 静默杀死目标玩家(无死亡提示)(指令:!sslay)
  • ulx strip <玩家> - 移除目标玩家的所有武器(指令:!strip)
  • ulx unigniteall - 熄灭所有玩家和实体的火焰(指令:!unigniteall)
  • ulx whip <玩家> [次数: 2≤x≤100, 默认10] [每次伤害: 0≤x, 默认0] - 对目标玩家进行多次拍击(每次指定伤害)(指令:!whip)

Rcon类(服务器控制)

  • ulx cexec <玩家> {命令} - 在目标玩家的客户端控制台执行命令(指令:!cexec)
  • ulx ent <实体类名> [{标志: 值 |}] - 生成实体,标志与值用':'分隔,多对标志值用'|'分隔
  • ulx exec <文件名> - 执行cfg目录下的指定文件
  • ulx luarun {命令} - 在服务器控制台执行Lua代码(用'='输出结果)
  • ulx rcon {命令} - 在服务器控制台直接执行命令(指令:!rcon)

工具类(Utility)

  • ulx ban <玩家> [禁言时间(分钟,0为永久,0≤x,默认0)] [{原因}] - 封禁目标玩家(指令:!ban)
  • ulx banid [禁言时间(分钟,0为永久,0≤x,默认0)] [{原因}] - 通过SteamID封禁玩家(指令:!banid)
  • ulx debuginfo - 输出调试信息
  • ulx help - 显示当前帮助
  • ulx kick <玩家> [{原因}] - 踢出目标玩家(指令:!kick)
  • ulx map <地图名> [游戏模式] - 切换地图和游戏模式(指令:!map)
  • ulx noclip [<玩家, 默认自己>] - 切换目标玩家的穿墙模式(无视碰撞)(指令:!noclip)
  • ulx resettodefaults [<字符串>] - 重置所有ULX和ULib配置(危险操作)
  • ulx spectate <玩家> - 观察目标玩家视角(指令:!spectate)
  • ulx unban - 解除对SteamID的封禁(指令:!unban)
  • ulx version - 查看版本信息(指令:!version)
  • ulx who [] - 查看当前在线玩家信息

聊天类(Chat)

  • ulx asay {消息内容} - 向当前在线的管理员发送消息(指令:@)
  • ulx csay {消息内容} - 在所有玩家屏幕中间显示消息(指令:@@@)
  • ulx gag <玩家> - 禁言目标玩家(无法使用麦克风)(指令:!gag)(相反命令:ulx ungag 解除禁言)
  • ulx gimp <玩家> - 限制目标玩家的聊天能力(如只能发送短消息)(指令:!gimp)(相反命令:ulx ungimp 解除限制)
  • ulx mute <玩家> - 静音目标玩家(无法发送文字消息)(指令:!mute)(相反命令:ulx unmute 解除静音)
  • ulx psay <玩家> {消息内容} - 向指定玩家发送私聊消息(指令:!p)
  • ulx thetime - 显示服务器当前时间(指令:!thetime)
  • ulx tsay {消息内容} - 向所有玩家发送聊天框消息(普通聊天)(指令:@@)

投票类(Voting)

  • ulx stopvote - 终止当前进行的投票(指令:!stopvote)
  • ulx veto - 否决成功的投票换图(需有权限)(指令:!veto)
  • ulx vote <标题> {选项} - 发起公开投票(标题和选项用空格分隔)(指令:!vote)
  • ulx voteban <玩家> [禁言时间(分钟,0≤x,默认1440)] [{原因}] - 发起公开投票决定是否封禁目标玩家(指令:!voteban)
  • ulx votekick <玩家> [{原因}] - 发起公开投票决定是否踢出目标玩家(指令:!votekick)
  • ulx votemap [{地图名}] - 发起投票换图(无参数时列出可选地图)(指令:!votemap)
  • ulx votemap2 {地图名} - 发起公开投票换图(强制指定地图)(指令:!votemap2)

传送类(Teleport)

  • ulx bring <玩家> - 将目标玩家传送到你身边(指令:!bring)
  • ulx goto <玩家> - 传送到目标玩家身边(指令:!goto)
  • ulx return [<玩家, 默认自己>] - 将目标玩家传回上次传送前的位置(指令:!return)
  • ulx send <玩家A> <玩家B> - 将玩家A传送到玩家B身边(指令:!send)
  • ulx teleport [<玩家, 默认自己>] - 传送目标玩家(需配合其他参数或上下文)(指令:!tp)

菜单类(Menus)

  • ulx motd - 显示服务器每日公告(Message Of The Day)(指令:!motd)
  • xgui <显示/隐藏/切换> - 打开/关闭XGUI菜单界面(指令:!xgui、!menu)(别名:ulx menu)
  • xgui fban <玩家> - 打开快速封禁窗口,自动冻结目标玩家并填充姓名/SteamID(指令:!fban)
  • xgui xban <玩家> - 打开封禁窗口,若指定玩家则自动填充姓名/SteamID(指令:!xban)