外观
第一个旧联机版服务器插件
本页针对根目录 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,加载程序集,并实例化其中非抽象的 ServerPlugin 与 AbstractProcessCmd 子类。因此插件类必须公开、非抽象,并能由加载器正常构造。
编译与验证
powershell
dotnet build -c Release把输出 DLL 及其独有依赖复制到测试服务端的 Plugins 目录,然后依次验证:加载、初始化、世界读取、玩家加入、save、exit 和重启恢复。不要把服务端已有的核心 DLL 再复制进插件目录。
