Skip to content
服务器插件与终端接口

第一个旧联机版服务器插件

本页针对根目录 sc2.2network 所代表的旧联机版接口。它能帮助维护现有服务器,但不保证与未来插件联机版二进制兼容。

建立类库

当前源码示例目标框架为 net10.0,通常直接引用同一源码树中的服务端项目:

xml
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net10.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>
  <ItemGroup>
    <ProjectReference Include="..\..\EngineServer\EngineServer.csproj" />
    <ProjectReference Include="..\..\EntitySystemServer\EntitySystemServer.csproj" />
    <ProjectReference Include="..\..\SurvivalcraftServer\SurvivalcraftServer.csproj" />
  </ItemGroup>
</Project>

路径要按你的项目位置调整。若使用发行 DLL 引用,也必须来自目标服务端同一构建。

最小插件类

csharp
using Game.Server;

namespace Workshop.Example;

public sealed class HelloPlugin : ServerPlugin
{
    public override int Version => 10000;
    public override string Name => "Workshop.Hello";

    public override void Initialize()
    {
        // 只执行一次:在这里注册事件处理器。
    }

    public override void Load()
    {
        // 世界加载后读取配置和持久化数据。
    }

    public override void Save()
    {
        // 随世界保存插件数据。
    }

    public override void Update(float dt)
    {
        // 每帧调用,避免阻塞 IO 和长耗时工作。
    }
}

服务端会扫描 Plugins 目录的 .dll,加载程序集,并实例化其中非抽象的 ServerPluginAbstractProcessCmd 子类。因此插件类必须公开、非抽象,并能由加载器正常构造。

编译与验证

powershell
dotnet build -c Release

把输出 DLL 及其独有依赖复制到测试服务端的 Plugins 目录,然后依次验证:加载、初始化、世界读取、玩家加入、saveexit 和重启恢复。不要把服务端已有的核心 DLL 再复制进插件目录。

下一步阅读事件与命令接口参考源码案例导读

玩家共建文档 · 原版、插件版、联机版与插件联机版请注意区分