外观
经典联机版源码案例导读
根目录 sc2.2network/Plugins 已包含可编译案例,比脱离版本的代码片段更适合学习。下面只概括设计,不转载闭源仓库代码。
| 示例目录 | 可以学习什么 | 阅读重点 |
|---|---|---|
ChestLock | 箱子锁与持久化 | 事件注册、按世界保存 JSON、玩家交互校验 |
BaseAntiCheatPlugin | 组合式反作弊 | 多个事件接口、配置拆分、校验职责边界 |
AntiXrayPlugin | 服务端信息隐藏 | 区块/方块数据处理及性能成本 |
TerritoryAntiCheatPlugin | 区域保护 | 放置、破坏与交互事件如何共同形成权限边界 |
ServerOutputEnhancePlugin | 终端增强 | 提示与状态 Provider 的注册方式 |
WatchDogPlugin | 进程监控 | 内存观察、异常恢复与重启策略 |
ChatSyncPlugin | 聊天同步 | 消息事件和外部通信的线程/失败处理 |
ServerSwitchPlugin | 服务器切换 | 玩家状态与网络交互边界 |
推荐阅读顺序
- 先查看每个
.csproj的net10.0与服务端项目引用。 - 找到
ServerPlugin子类,记录Initialize、Load、Save、Update各自职责。 - 搜索
RegisterEvent一类调用,沿事件接口查看触发时机和返回值。 - 检查配置和数据写到哪里,是否会随世界切换。
- 最后再看反作弊与网络插件,因为它们更依赖经典联机版内部实现。
编写命令
独立命令可继承 AbstractProcessCmd。需要实现的核心成员包括 Cmd、Introduce、AuthLevel、Display 和 ProcessCmd,并可通过 GetSuggestions 提供补全。输出时要区分服务端终端与客户端消息,权限判断必须放在服务端执行。
迁移价值判断
- ChestLock 一类业务规则可以迁移“数据模型与校验思路”,但事件注册需要重写。
- 反作弊、网络切换和同步插件高度依赖经典联机内部数据,应视为重做项目。
- 终端 Provider 只有在插件联机版提供对应宿主能力时才能迁移。
- 无源码 DLL 无法可靠适配新程序集;长期服应优先使用有源码、许可清楚的插件。
公开示例还可查看 SC-SPM/sc-server-plugin。使用前务必对照目标服务端版本和许可。
IyDnu4/lhbjogZTmnLrniYjmupDnoIHmoYjkvovlr7zor7sKCuagueebruW9lSBgc2MyLjJuZXR3b3JrL1BsdWdpbnNgIOW3suWMheWQq+WPr+e8luivkeahiOS+i++8jOavlOiEseemu+eJiOacrOeahOS7o+eggeeJh+auteabtOmAguWQiOWtpuS5oOOAguS4i+mdouWPquamguaLrOiuvuiuoe+8jOS4jei9rOi9vemXrea6kOS7k+W6k+S7o+eggeOAggoKfCDnpLrkvovnm67lvZUgfCDlj6/ku6XlrabkuaDku4DkuYggfCDpmIXor7vph43ngrkgfAp8IC0tLSB8IC0tLSB8IC0tLSB8CnwgYENoZXN0TG9ja2AgfCDnrrHlrZDplIHkuI7mjIHkuYXljJYgfCDkuovku7bms6jlhozjgIHmjInkuJbnlYzkv53lrZggSlNPTuOAgeeOqeWutuS6pOS6kuagoemqjCB8CnwgYEJhc2VBbnRpQ2hlYXRQbHVnaW5gIHwg57uE5ZCI5byP5Y+N5L2c5byKIHwg5aSa5Liq5LqL5Lu25o6l5Y+j44CB6YWN572u5ouG5YiG44CB5qCh6aqM6IGM6LSj6L6555WMIHwKfCBgQW50aVhyYXlQbHVnaW5gIHwg5pyN5Yqh56uv5L+h5oGv6ZqQ6JePIHwg5Yy65Z2XL+aWueWdl+aVsOaNruWkhOeQhuWPiuaAp+iDveaIkOacrCB8CnwgYFRlcnJpdG9yeUFudGlDaGVhdFBsdWdpbmAgfCDljLrln5/kv53miqQgfCDmlL7nva7jgIHnoLTlnY/kuI7kuqTkupLkuovku7blpoLkvZXlhbHlkIzlvaLmiJDmnYPpmZDovrnnlYwgfAp8IGBTZXJ2ZXJPdXRwdXRFbmhhbmNlUGx1Z2luYCB8IOe7iOerr+WinuW8uiB8IOaPkOekuuS4jueKtuaAgSBQcm92aWRlciDnmoTms6jlhozmlrnlvI8gfAp8IGBXYXRjaERvZ1BsdWdpbmAgfCDov5vnqIvnm5HmjqcgfCDlhoXlrZjop4Llr5/jgIHlvILluLjmgaLlpI3kuI7ph43lkK/nrZbnlaUgfAp8IGBDaGF0U3luY1BsdWdpbmAgfCDogYrlpKnlkIzmraUgfCDmtojmga/kuovku7blkozlpJbpg6jpgJrkv6HnmoTnur/nqIsv5aSx6LSl5aSE55CGIHwKfCBgU2VydmVyU3dpdGNoUGx1Z2luYCB8IOacjeWKoeWZqOWIh+aNoiB8IOeOqeWutueKtuaAgeS4jue9kee7nOS6pOS6kui+ueeVjCB8CgojIyDmjqjojZDpmIXor7vpobrluo8KCjEuIOWFiOafpeeci+avj+S4qiBgLmNzcHJvamAg55qEIGBuZXQxMC4wYCDkuI7mnI3liqHnq6/pobnnm67lvJXnlKjjgIIKMi4g5om+5YiwIGBTZXJ2ZXJQbHVnaW5gIOWtkOexu++8jOiusOW9lSBgSW5pdGlhbGl6ZWDjgIFgTG9hZGDjgIFgU2F2ZWDjgIFgVXBkYXRlYCDlkIToh6rogYzotKPjgIIKMy4g5pCc57SiIGBSZWdpc3RlckV2ZW50YCDkuIDnsbvosIPnlKjvvIzmsr/kuovku7bmjqXlj6Pmn6XnnIvop6blj5Hml7bmnLrlkozov5Tlm57lgLzjgIIKNC4g5qOA5p+l6YWN572u5ZKM5pWw5o2u5YaZ5Yiw5ZOq6YeM77yM5piv5ZCm5Lya6ZqP5LiW55WM5YiH5o2i44CCCjUuIOacgOWQjuWGjeeci+WPjeS9nOW8iuS4jue9kee7nOaPkuS7tu+8jOWboOS4uuWug+S7rOabtOS+nei1lue7j+WFuOiBlOacuueJiOWGhemDqOWunueOsOOAggoKIyMg57yW5YaZ5ZG95LukCgrni6znq4vlkb3ku6Tlj6/nu6fmib8gYEFic3RyYWN0UHJvY2Vzc0NtZGDjgILpnIDopoHlrp7njrDnmoTmoLjlv4PmiJDlkZjljIXmi6wgYENtZGDjgIFgSW50cm9kdWNlYOOAgWBBdXRoTGV2ZWxg44CBYERpc3BsYXlgIOWSjCBgUHJvY2Vzc0NtZGDvvIzlubblj6/pgJrov4cgYEdldFN1Z2dlc3Rpb25zYCDmj5DkvpvooaXlhajjgILovpPlh7rml7bopoHljLrliIbmnI3liqHnq6/nu4jnq6/kuI7lrqLmiLfnq6/mtojmga/vvIzmnYPpmZDliKTmlq3lv4XpobvmlL7lnKjmnI3liqHnq6/miafooYzjgIIKCiMjIOi/geenu+S7t+WAvOWIpOaWrQoKLSBDaGVzdExvY2sg5LiA57G75Lia5Yqh6KeE5YiZ5Y+v5Lul6L+B56e74oCc5pWw5o2u5qih5Z6L5LiO5qCh6aqM5oCd6Lev4oCd77yM5L2G5LqL5Lu25rOo5YaM6ZyA6KaB6YeN5YaZ44CCCi0g5Y+N5L2c5byK44CB572R57uc5YiH5o2i5ZKM5ZCM5q2l5o+S5Lu26auY5bqm5L6d6LWW57uP5YW46IGU5py65YaF6YOo5pWw5o2u77yM5bqU6KeG5Li66YeN5YGa6aG555uu44CCCi0g57uI56uvIFByb3ZpZGVyIOWPquacieWcqOaPkuS7tuiBlOacuueJiOaPkOS+m+WvueW6lOWuv+S4u+iDveWKm+aXtuaJjeiDvei/geenu+OAggotIOaXoOa6kOeggSBETEwg5peg5rOV5Y+v6Z2g6YCC6YWN5paw56iL5bqP6ZuG77yb6ZW/5pyf5pyN5bqU5LyY5YWI5L2/55So5pyJ5rqQ56CB44CB6K645Y+v5riF5qWa55qE5o+S5Lu244CCCgrlhazlvIDnpLrkvovov5jlj6/mn6XnnIsgW1NDLVNQTS9zYy1zZXJ2ZXItcGx1Z2luXShodHRwczovL2dpdGVlLmNvbS9TQy1TUE0vc2Mtc2VydmVyLXBsdWdpbinjgILkvb/nlKjliY3liqHlv4Xlr7nnhafnm67moIfmnI3liqHnq6/niYjmnKzlkozorrjlj6/jgIIK
