一篇关于如何安装和更新 MetaMod 和 SourceMod 的指南。
前提条件
- 一台运行 Windows、Linux 或 Mac 的 SRCDS 服务器。
- 能够访问 SRCDS 的文件系统(例如通过 FTP 或文件资源管理器)。
- 如果你的客户端运行 Windows 而服务器运行 Linux/Mac,你需要一个文件压缩/解压工具,例如 7-ZIP。
如何安装 MetaMod
运行 SourceMod 需要先安装 MetaMod。因此,我通常会先安装 MetaMod。
- 在这里下载适合你操作系统的正确安装包。
- 使用 ZIP 或 Tar/GZIP 等工具解压下载的文件。
- 将解压后的 addons/ 文件夹复制到你服务器的主游戏目录中。例如在 Counter-Strike: Source 中,路径应为 /path/to/server/cstrike/。Team Fortress 2 则为 /path/to/server/tf/。
如果系统提示是否覆盖文件夹或文件,请选择“是”。安装完成后,请确认 addons/ 文件夹中存在 metamod.vdf 文件。所有近期版本的 MetaMod 都应已包含此文件,但如果没有 metamod.vdf 文件,你可以在这里生成一个。
更新
- 关闭你的游戏服务器(严格来说,在 Linux 上不必这样做,但服务器可能会在切换地图后崩溃)。
- 执行上述步骤 1 - 3。
确认安装
要确认 MetaMod 是否已安装在游戏服务器上,可以运行 meta version 命令来查看已安装的版本。如果收到“unknown command”错误,说明 MetaMod 未正确安装。
meta version
Metamod:Source Version Information
Metamod:Source version 1.12.0-dev+1165
Plugin interface version: 16:14
SourceHook version: 5:5
Loaded As: Valve Server Plugin
Compiled on: Dec 19 2022 17:29:31
Built from: https://github.com/alliedmodders/metamod-source/commit/63c5c15
Build ID: 1165:63c5c15
http://www.metamodsource.net/
如何安装 SourceMod
请按照以下步骤安装 SourceMod。
- 在这里下载适合你操作系统的正确安装包。
- 使用 ZIP 或 Tar/GZIP 等工具解压下载的文件。
- 将解压后的 addons/ 和 cfg/ 文件夹复制到你服务器的主游戏目录中。例如在 Counter-Strike: Source 中,路径应为 /path/to/server/cstrike/。Team Fortress 2 则为 /path/to/server/tf/。
更新
- 关闭你的游戏服务器(严格来说,在 Linux 上不必这样做,但服务器可能会在切换地图后崩溃)。
- 按照上述步骤 1 和 2 操作。
- 将解压后文件中 addons/sourcemod/ 文件夹内的所有文件夹和文件(排除 configs/ 文件夹)复制到游戏服务器的 SourceMod 目录中。例如在 Counter-Strike: Source 中,路径为 /path/to/server/cstrike/addons/sourcemod/。
我们排除 configs/ 文件夹的原因是为了防止覆盖你已有的自定义配置,例如常见的 databases.cfg 文件。
确认安装
要确认 SourceMod 是否已安装在游戏服务器上,可以运行 sm version 命令来查看已安装的版本。如果收到“unknown command”错误,说明 SourceMod 未正确安装。
sm version
SourceMod Version Information:
SourceMod Version: 1.11.0.6926
SourcePawn Engine: 1.11.0.6926, jit-x86 (build 1.11.0.6926)
SourcePawn API: v1 = 5, v2 = 16
Compiled on: Dec 20 2022 14:00:51
Built from: https://github.com/alliedmodders/sourcemod/commit/fd63fff8
Build ID: 6926:fd63fff8
http://www.sourcemod.net/
使用 MetaMod 与 SourceMod 的游戏
以下是一小部分社区和模组服务器会使用 MetaMod 和 SourceMod 的游戏列表。请注意,这份列表之外还有其他游戏。
- Half Life 2
- Counter-Strike: Source
- Counter-Strike: Global Offensive
- Team Fortress 2
- Left 4 Dead 1/2
- Day of Defeat: Source
- Zombie Panic: Source
- Fistful of Frags
什么是 MetaMod (MM)?
MetaMod 是一个为 Valve 的 Half Life 2/Source 引擎设计的 C++ 插件,它使得其他插件/附加组件(例如 SourceMod)得以运行。以下是 AlliedModders 给出的完整介绍。
Quote
Metamod:Source 是一个用于 Half-Life 2 的 C++ 插件环境。它作为一个“metamod”存在于游戏与引擎之间,允许插件拦截二者之间流动的调用。它提供了一种名为 SourceHook 的机制,这是一个非常强大的库,用于拦截、覆盖和取代虚函数调用。
尽管 Valve 提供了自己的 C++ 插件环境,我们仍然发现了两个开发 Metamod:Source 的主要原因:
如果各个插件使用各自的钩子机制,就会产生冲突。集中式的 SourceHook 环境通过提供统一的入口解决了这个问题。
Valve 的这一层存在一些特殊问题,例如无法完全从内存中卸载,以及糟糕的控制台和程序化控制能力。Metamod:Source 则是明确、灵活且开源的。
需要注意的是,Metamod:Source 与“Mani Admin Plugin”、“SourceMod”或“EventScripts”并不相同。它只是一个非常小的库封装层,用于加载并向 C++ 插件传递一些指针。它几乎不提供任何不必要的功能(例如玩法模组或 MySQL 支持),本身也不会带来任何开销。
Metamod:Source 采用非常宽松的开源许可证授权。你无需公开插件的源代码,因为该许可证允许商业/专有用途。(请注意,你可能仍需遵守第三方软件的许可协议,例如 Valve SDK 或其他库。)
什么是 SourceMod (SM)?
SourceMod 是 MetaMod 的一个附加组件,它允许用户和服务器所有者使用其自有的编程语言 SourcePawn 来编写/开发插件。它还附带了许多命令和工具,使服务器管理变得更加轻松。以下是 AlliedModders 给出的完整介绍。
Quote
SourceMod是适用于所有基于Half-Life 2引擎游戏的服务器修改工具。它是一个强大且高度优化的平台,用于编写插件脚本以及处理服务器管理。默认安装包附带一套基础插件,但社区中已有超过2,500个插件。
基础功能(用户)
易于使用、粒度极细的权限系统(兼容SQL)
高度可配置的管理菜单
保留位(Reserved slots)
灵活的地图管理插件(提名、投票换图等)
基础命令,如踢出/封禁/击打/静音玩家、修改cvar等
各类投票命令
聊天刷屏防护
面向用户和管理员的完善聊天触发器
易于翻译
SourceMod经过高度优化,非常适合在不编写C++代码的情况下从Source服务器中榨取最佳性能。
脚本功能(开发者)
Administration - 用于开发管理系统的完整API。
Clients - 处理游戏内客户端信息与回调。
Commands - 创建、挂钩和重写客户端与服务器控制台命令。
ConVars - 创建、挂钩和获取控制台变量。
Database - 抽象化的数据库访问。
Engine - 访问众多Half-Life 2引擎功能,并持续新增中。
Entities - 修改和获取实体属性,包括按名称与按编号。
Events - 创建、触发和挂钩Half-Life 2的GameEvents。
Files - 文件系统访问。
IPC - 高级插件间通信,类似AMX Mod X。
Menus - 抽象化的菜单API,用于在各类模组间创建统一的菜单。
Messages - 发送和挂钩UserMessages。
Parsing - 高级且高度优化的文本解析。
Timers - 定时事件的创建。
Translation - 多语言短语文件查找。
是什么让SourceMod与众不同?(开发者)
- 速度 - SourceMod的速度极快,这绝非空谈。每个插件都会被加载进内存并转换为原始CPU代码。我们非常用心地确保SourceMod中的每一个高频区域都尽可能地快。其脚本语言是静态类型的,且不需要垃圾回收。
- API - SourceMod的大部分工作都在于尽力打磨API。每当添加任何接口或函数时,我们都会问以下问题:
- 它是否代表一种优化的解决方案?
- 会有人使用它吗?
- 它有多令人困惑?
- 它是否符合最可能的常见用法?
- 未来是否有可能对其进行扩展?
- 它的名称是否体现了它的功能?
- 它的名称是否与其他类似函数保持一致?
- 可扩展性 - SourceMod完全可扩展。SourceMod为扩展SourceMod本身以及插件的事件/原生API都提供了完整的C++ API。
- 开源 - SourceMod及其扩展和插件均在GNU通用公共许可证下开源!
另见
结语
就是这样!现在你应该已经掌握了如何安装和更新SourceMod与MetaMod。
如果你有任何问题或反馈,请在此话题下回复!

