Managing your Sourcemod installation/zh
Contents
开始熟悉
服务器控制台
你刚刚安装了sourcemod并保证它正常运行。为此你执行了Checking the Install章节中的指令并且在服务器控制台中第一次尝试了命令。
要熟悉控制台,可以直接用服务器控制台或者rcon指令。(例如使用HLSW).
至少尝试以下指令
- sm
- sm version
- sm plugins
- sm plugins list
- sm plugins reload 1
- sm plugins refresh
- sm plugins unload funvotes
- sm plugins load funvotes
- sm exts list
文件结构
你也要熟悉sourcemod的文件结构,这意味着 Also get to know the directory layout sourcemod is using, this means:
- 看看有哪些文件夹
- 文件夹中有什么文件
- 文件中有什么(使用记事本打开 (推荐: notepad++[1] 或者其他第三方编辑器)).
文件夹 | 描述 | ||||||||||||||||
/bin | 忽略这个文件夹,这里面是sourcemod的二进制文件 | ||||||||||||||||
/configs | 这是sourcemod和插件默认放置配置文件的地方。
查看里面所有文件至少一次,尝试去理解它们 | ||||||||||||||||
/data | 暂时忽略这个文件夹 | ||||||||||||||||
/extensions | 这是拓展安装的位置。你可能注意到了许多拓展出现了多次,这是因为不同的游戏引擎需要基于他们SDK的独特的拓展。
拿bintools举例:
| ||||||||||||||||
/gamedata | 有拓展或者插件使用了游戏引擎提供的功能。例如,如果要重生玩家或者给玩家装备武器,sourcemod需要知道一些函数的前提条件(具体地,偏移和签名这些参数)。这些数据每次更新都会改变,你目前不需要知道更多信息,因为sourcemod有内置的更新其,它会自动的从新的游戏数据文件夹中获取这些数据。 | ||||||||||||||||
/logs | debug的神器。一切都被记录在这里。如果有人问你日志文件在说什么,或者你遇到了任何错误:复现你的问题,然后看看日志文件然后复制粘贴这些信息。如果你不了解错误原因,发给相关人士处理。 | ||||||||||||||||
/plugins | 所有插件(.smx文件)都会在sourcemod启动时自动加载。当地图更改时如果文件发生了改变,也会重新加载。 | ||||||||||||||||
/plugins/disabled | 在这个子文件夹中的插件不会被加载。如果你想要禁用一个插件,就把它从父文件夹中剪切进去。反之亦然。你会发现这个文件夹中有一些你可能想安装的官方插件(例如,rtv换图插件)。 | ||||||||||||||||
/scripting | 你能看到一些插件的源码。安装插件并不需要放置任何文件在这里,但是我们强烈推荐不要仅仅安装smx文件,最好也带上相应的sp文件。 | ||||||||||||||||
/translations | 无需多言,这里有许多语言的翻译。我们鼓励插件提供翻译文件,所有你安装插件时也许需要拷贝一些文件到这。 |
将自己设为管理员
为了便于管理,你应该把自己设为root管理员。 有许多方法来获取服务器权限。这里我们用最简单暴力的方式,但你可能需要查看增加管理员 and 增加组,然后创建一组系统管理员并设置自己的权限。
我们使用最简单的方式,只需要在sourcemod/configs/文件夹下的admins_simple.cfg文件中加一行:
"你的steamid" "99:z"
然后在服务器控制台输入sm_reloadadmins,你会收到以下回复[SM] Admin cache has been refreshed.
尝试启用/禁用插件
如果你看了上面的内容,你应该已经知道如何做了。
如果你看了关于服务器控制台的内容,你也知道了如何测试它了。
但让我们再解释一次,我们想要启用mapchooser(选择地图)插件:
- 复制 plugins/disabled/mapchooser.smx 到 plugins/mapchooser.smx
- 你可以使用sm plugins load mapchooser
或者换图来启用。 - 输入sm plugins list来看看当前启用的插件。
如果失败了,查看 怎样检查sourcemod插件的安装?
安装插件
基础
对于一些只有源码和二进制文件的插件,例如Basic AFK Manager,安装起来十分直接,并且基本和启用官方插件一样。(参考1.4). 你复制.smx 文件去 plugins文件夹, .sp文件去scripting文件夹。
对于一些复杂的插件,例如SM Bot Tools,可能需要赋值翻译或者游戏数据到相应的文件夹。但是聪明的开发者会给你一个完美的压缩文件,所有的文件都放在了对应的文件夹中,你只需要将所有东西直接复制到sourcemod文件夹。 插件自己的说明永远是第一位的
依赖
有一部分插件依赖于其他插件,但是很多插件依赖于一个或多个拓展。拓展通常提供了一些能让插件做更多事情的特性。如果一个插件有依赖项,肯定会在描述页提及,这就需要你自己去找了。
在第三章如何安装拓展中学习如何安装拓展。
怎样检查你的插件是否安装好了
当你遇到了插件或者拓展的问题,永远用服务器客户端来解决,不需要管客户端控制台的事情,SourceMod是一个服务器端的插件。
只需要在安装后换图,然后再服务器控制台输入sm plugins list。你应该看到了改变。如果你安装的插件没有被列出来,这意味着插件没有被正确地安装。(这意味着这不是插件的错,而是你的错),并且你需要想清楚什么地方做错了。一般而言,你没有把编译后的插件(the .smx 文件)放在sourcemod下的/plugins文件夹中。
如果插件被列了出来,但是有<Failed>前缀,那就是发生了其他错误。为了获取问题的类型,输入sm plugins info <plugin id>, replace <plugin id>加上列表中问题插件的名字。你可能会看到
错误 | 描述 |
Could not find translation file | 你没有把翻译文件放到正确的位置。请再一次检查插件页的内容,再一次检查提供的压缩文件。如果真的缺失了翻译文件,报告给开发者,否则自行放置到相应的文件夹。 |
Native 'xyz' was not found 或者 Required extension "xyz" file("xyz.ext") not running. |
你安装了旧版本的拓展,或者没有安装需要的拓展。检查你的拓展版本(输入sm exts list)并更新它。 |
Wrong game | 你用的是其他游戏的插件。停用这个插件。 |
帮助开发者
如果你竭尽所能,依然无法让插件正常工作,那是相当不正常的事情。插件开发者会认为你没有正常安装这个插件并给你这个页面的链接。请避免这样的事情发生 给他们充分的证据证明你已经到了无法独自处理问题的地步.告诉他们你已经试过了,并给他控制台的日志文件(如果你无法复制粘贴,也可以给截图)和一切有关信息。
安装拓展
基础
拓展和插件类似,但是更加有力。在有插件需要的情况下才会被启用。这意味着,一个拓展如果没有被任何插件依赖,你输入sm exts list后看不到它。
一些拓展给其他插件提供了功能(例‘’'如SDKHooks),一些拓展直接影响游戏本身。(例如UnlockBlock).
拓展名和版本
一些拓展只有一个版本。它们的文件名类似bintools.ext.dll for Windows, bintools.ext.so for Linux, or bintools.ext.dylib for OSX.
另一些拓展基于不同的引擎有多个版本。它们的文件名通常像[extension name].ext.[MetaMod: Source API version].[Game engine string].[extension].
例如,SDKTools在Windows SourceMod中有以下文件
游戏 | 文件名 |
---|---|
Alien Swarm | sdktools.ext.2.swarm.dll |
Bloody Good Time | sdktools.ext.2.bgt.dll |
Dark Messiah | sdktools.ext.2.darkm.dll |
Episode 1 / Generic non-OB mods | sdktools.ext.1.ep1.dll |
Episode 2 / Orange Box / Source 2007 / Generic OB mods | sdktools.ext.2.ep2.dll |
E.Y.E: Divine Cybermancy | sdktools.ext.2.eye.dll |
Left 4 Dead | sdktools.ext.2.l4d.dll |
Left 4 Dead 2 | sdktools.ext.2.l4d2.dll |
Source 2009 / Half-Life 2: DeathMatch / Day of Defeat: Source / Counter-Strike: Source / Team Fortress 2 | sdktools.ext.2.ep2v.dll |
安装一个拓展
这和安装插件很像,所以没必要再说一遍,但我还是做了😂。 安装拓展你只需要复制到/extensions文件夹。 拓展也可能需要翻译文件和游戏数据,不要遗漏了它们
要自动加载拓展,只需要换图或者输入sm exts load <name of your extension>。谨记,没有被依赖的拓展是不会被自动加载的。
强制加载拓展只需要创建一个空文件,名字为拓展名加上.autoload.
- 例如:
- 拓展名是extensions/sdkhooks.ext.2.ep2v.dll
- 空文件为extensions/sdkhooks.autoload
注意: 你不能更新一个正在运行的拓展,你需要首先通过sm unload <拓展名>停用拓展或关闭服务器。否则,你的Linux服务器很容易崩溃,你的Windows服务器则禁止你这样操作。
处理拓展问题
和你之前学到的方式类似。
如何查看拓展是否加载了,或者加载失败了? sm exts list 如何在运行时加载拓展? sm exts load <extension name>
以上都会告诉你 为什么 失败了。这和怎样检查你的插件是否安装好了章节类似,请确保你看了里面的内容。 至少它会告诉你如何继续。