Managing your Sourcemod installation/zh

From AlliedModders Wiki
Revision as of 22:37, 8 September 2019 by Yurizhou (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

入门

服务器控制台

你刚刚安装了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:

  1. 看看有哪些文件夹
  2. 文件夹中有什么文件
  3. 文件中有什么(使用记事本打开 (推荐: notepad++[1] 或者其他第三方编辑器)).
文件夹 描述
/bin 忽略这个文件夹,这里面是sourcemod的二进制文件
/configs 这是sourcemod和插件默认放置配置文件的地方。

查看里面所有文件至少一次,尝试去理解它们

/data 暂时忽略这个文件夹
/extensions 这是拓展安装的位置。你可能注意到了许多拓展出现了多次,这是因为不同的游戏引擎需要基于他们SDK的独特的拓展。

拿bintools举例:

bintools.ext.dll 这是原版的source引擎拓展
bintools.ext.1.ep1.dll "老版Metamod" (Insurgency,Eternal Silence和其他EP1的mods)
bintools.ext.2.darkm.dll 这是Dark Messiah的拓展
bintools.ext.2.ep2.dll 这是"OrangeBox"引擎下的ZPS, AOC, PVKII之类的拓展
bintools.ext.2.ep2v.dll 这是"OrangeBoxValve"引擎下的CSS,TF2,DODS,HL2DM,GMOD之类的拓展
bintools.ext.2.l4d.dll 这是L4D的拓展
bintools.ext.2.l4d2.dll 这是L4D2的拓展
bintools.ext.2.swarm.dll 这是Alien Swarm的拓展
/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(选择地图)插件:

  1. 复制 plugins/disabled/mapchooser.smxplugins/mapchooser.smx
  2. 你可以使用sm plugins load mapchooser
    或者换图来启用。
  3. 输入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>

以上都会告诉你 为什么 失败了。这和怎样检查你的插件是否安装好了章节类似,请确保你看了里面的内容。 至少它会告诉你如何继续。