TShock中文插件库TShock中文插件库
插件文档
TShock教程
TShock Wiki镜像
  • 简体中文
  • en-US
GitHub
插件文档
TShock教程
TShock Wiki镜像
  • 简体中文
  • en-US
GitHub
  • TShock插件の仓库
  • AIChatPlugin AI聊天插件
  • AdditionalPylons 放置更多晶塔权
  • AnnouncementBoxPlus
  • AutoAirItem 自动垃圾桶插件
  • AutoBroadcast 自动广播
  • Autoclear 智能自动扫地
  • AutoFishR 自动钓鱼重制版
  • AutoPluginManager 自动更新插件
  • AutoReset 完全自动重置插件
  • AutoStoreItems 自动储存
  • AutoTeamPlus 更好的自动队伍
  • Back 回到死亡点
  • BadApplePlayer - BadApple播放器
  • BanNpc 阻止怪物生成
  • BedSet 设置重生点
  • BetterWhitelist 更好的白名单
  • BossLock 进度锁
  • BridgeBuilder 快速铺桥
  • BuildMaster 豆沙小游戏·建筑大师
  • CGive 离线命令
  • CNPCShop 自定义NPC商店
  • CaiBotLitePlugin 官方机器人适配插件
  • CaiCustomEmojiCommand 自定义表情命令
  • CaiPacketDebug 数据包调试
  • CaiRewardChest 奖励箱
  • Challenger 挑战者模式
  • Chameleon 进服前登录
  • ChattyBridge 聊天桥
  • ChestRestore 无限宝箱和禁止箱子改名
  • ConsoleSql 控制台SQL
  • ConvertWorld 击败怪物替换世界物品
  • CriticalHit 打击文字提示
  • DTEntryBlock 阻止进入地牢或神庙
  • DamageRuleLoot 伤害规则掉落
  • DamageStatistic 伤害统计
  • DataSync 进度同步插件
  • DeathDrop 死亡掉落
  • DeltaForce.Core - 三角洲行动特勤处
  • DeltaForce.Game - 三角洲行动游戏服务器
  • DeltaForce.Protocol - 三角洲行动通信协议
  • DisableMonsLoot 禁怪物掉落
  • DonotFuck 禁止脏话
  • Dummy 假人
  • DumpPluginsList
  • DumpTerrariaID 输出 TerrariaID
  • DwTP 定位传送插件
  • Economics.Core 插件[经济套件核心]
  • Economics.Deal 交易插件
  • Economics.NPC 插件 自定义怪物奖励
  • Economics.Projectile 自定义弹幕
  • Economics.RPG 职业插件
  • Economics.Regain 回收物品插件
  • Economics.Shop 商店插件
  • Economics.Skill 技能插件
  • Economics.Task 任务插件
  • Economics.WeaponPlus 武器强化EC版
  • EndureBoost 拥有指定数量物品给指定buff
  • EssentialsPlus
  • Ezperm 便捷权限
  • FishShop 鱼店
  • GenerateMap 将地图保存至图片
  • GhostView 鬼魂观战
  • GolfRewards 高尔夫奖励
  • Goodnight 宵禁
  • HardPlayerDrop 硬核死亡掉生命水晶
  • HelpPlus 更好的帮助
  • History 记录图格操作
  • HouseRegion 圈地插件
  • InvincibilityPlugin 限时无敌
  • ItemBox 物品盒子
  • ItemDeco 手持物品显示
  • ItemPreserver 物品不消耗
  • JourneyUnlock 解锁旅途物品
  • Lagrange.XocMat BOT适配插件
  • LazyAPI 基础库
  • LifemaxExtra 提升生命值上限
  • ListPlugins 查看插件列表
  • Maptp 双击大地图传送
  • 迷宫生成器
  • MiniGamesAPI 豆沙小游戏API
  • ModifyWeapons 修改武器插件
  • MonsterRegen 怪物进度回血
  • MusicPlayer 简易音乐播放器
  • Noagent 反代理插件
  • NormalDropsBags 普通难度掉落宝藏袋
  • 留言墙 NoteWall
  • Online Gift Package 在线礼包
  • PacketsStop 数据包拦截
  • PerPlayerLoot 独立战利品箱子
  • PermaBuff 永久Buff
  • PersonalPermission 玩家单独权限
  • Platform 判断玩家设备
  • PlayerManager 玩家管理器
  • PlayerRandomSwapper 玩家位置随机交换
  • PlayerSpeed 玩家速度插件
  • ProgressBag 进度礼包
  • ProgressControl 计划书
  • ProgressRestrict 超进度检测
  • ProxyProtocolSocket 反代真实IP
  • pvper 决斗系统
  • QRCoder 二维码生成器
  • RainbowChat 彩虹聊天
  • RandReSpawn 随机出生点
  • RandomBroadcast 随机广播
  • ReFishTask 刷新渔夫任务
  • RealTime 现实时间
  • RebirthCoin 复活币
  • RecipesBrowser 合成表
  • RegionView 区域显示
  • Respawn 原地复活
  • RestInventory 提供 Rest 查背包接口
  • ReverseWorld 世界反转和全图放置地雷
  • RolesModifying 修改玩家背包
  • Sandstorm 切换沙尘暴
  • ServerTools 服务器工具箱
  • SessionSentinel 踢出长时不发包玩家
  • ShortCommand 简短指令
  • ShowArmors 展示装备
  • SignInSign 告示板登录
  • Smart Regions 智能区域
  • SpawnInfra 生成基础建设(开服自动基建)
  • SpclPerm 服主特权
  • StatusTextManager 模板文本管理器
  • SurfaceBlock 禁止地表弹幕
  • SurvivalCrisis 类among us小游戏
  • SwitchCommand 开关指令
  • TeleportRequest 传送请求
  • TimeRate 时间加速插件
  • TimerKeeper 保存计时器状态
  • TownNPCHomes NPC快速回家
  • TransfersPatch 翻译工具
  • UnseenInventory 允许生成“无法获取”的物品
  • VeinMiner 连锁挖矿
  • VotePlus 多功能投票
  • WeaponPlusCostCoin 武器强化钱币版
  • Terraria中文Wiki语言包加载器
  • WorldModify 简易的世界修改器

DeltaForce.Protocol - 三角洲行动通信协议

三角洲行动的通信协议库,用于特勤处服务器和游戏服务器之间的通信。

概述

本协议库定义了特勤处(Core)和游戏服务器(Game)之间的所有通信数据包格式和处理逻辑。

协议类型

数据包类型 (PacketType)

public enum PacketType : byte
{
    // 系统
    Request, Response,
    
    // 连接
    Connect, Disconnect,
    
    // 游戏状态
    GameState, GameStateResponse,
    
    // 心跳
    Heartbeat, HeartbeatResponse,
    
    // 背包数据
    PlayerInventoryRequest, PlayerInventoryResponse,
    SaveInventoryRequest, SaveInventoryResponse,
    
    // 小队数据
    SquadDataRequest, SquadDataResponse,
    
    // 物品清单
    ItemListRequest, ItemListResponse,
    
    // 客户端标识
    ClientIdentity, ClientIdentityResponse,
    
    // 玩家位置
    PlayerPositionRequest, PlayerPositionResponse,
}

主要数据包

1. 游戏状态包 (GameStatePacket)

用于特勤处通知游戏服务器游戏开始或结束。

public class GameStatePacket : IRequestPacket
{
    public PacketType PacketID => PacketType.GameState;
    public Guid RequestId { get; set; }
    public bool IsGameActive { get; set; }  // 游戏是否进行中
    public int GameMode { get; set; }        // 游戏模式
    public int GameTime { get; set; }        // 游戏时间
}

2. 物品列表包 (ItemListPacket)

游戏服务器请求特勤处的物品配置列表。

public class ItemListRequestPacket : IRequestPacket
public class ItemListResponsePacket : IResponsePacket
{
    public ItemInfo[] Items { get; set; }
    public int TotalCount { get; set; }
}

public class ItemInfo
{
    public string Name { get; set; }    // 物品名称
    public int Type { get; set; }       // 物品类型ID
    public int Weight { get; set; }     // 物品权重
    public long Value { get; set; }     // 物品价值(哈夫币)
}

3. 小队数据包 (SquadDataPacket)

游戏服务器请求当前匹配的小队数据。

public class SquadDataRequestPacket : IRequestPacket
public class SquadDataResponsePacket : IResponsePacket
{
    public SquadInfo[] Squads { get; set; }
}

public class SquadInfo
{
    public int SquadId { get; set; }           // 小队ID
    public SquadMemberInfo[] Members { get; set; }  // 小队成员
}

public class SquadMemberInfo
{
    public string PlayerName { get; set; }     // 玩家名称
    public int Team { get; set; }              // 队伍ID
}

4. 背包数据包 (PlayerInventoryPacket)

用于同步玩家背包数据。

public class PlayerInventoryRequestPacket : IRequestPacket
{
    public string PlayerName { get; set; }
}

public class PlayerInventoryResponsePacket : IResponsePacket
{
    public string PlayerName { get; set; }
    public ItemData[] Items { get; set; }
}

public class ItemData
{
    public int Type { get; set; }      // 物品类型
    public int Stack { get; set; }     // 数量
    public byte Prefix { get; set; }   // 前缀
}

5. 保存背包包 (SaveInventoryPacket)

游戏服务器主动保存玩家背包数据到特勤处。

public class SaveInventoryRequestPacket : IRequestPacket
{
    public string PlayerName { get; set; }
    public string Inventory { get; set; }      // 序列化的背包数据
    public int Health { get; set; }
    public int MaxHealth { get; set; }
    public int Mana { get; set; }
    public int MaxMana { get; set; }
    // ... 其他玩家属性
}

public class SaveInventoryResponsePacket : IResponsePacket
{
    public string PlayerName { get; set; }
    public DateTime SavedAt { get; set; }
}

6. 心跳包 (HeartbeatPacket)

用于维持连接和检测断开。

public class HeartbeatPacket : IRequestPacket
public class HeartbeatResponsePacket : IResponsePacket

7. 客户端身份包 (ClientIdentityPacket)

游戏服务器连接后发送身份验证。

public class ClientIdentityPacket : INetPacket
{
    public Guid ClientId { get; set; }
    public string ClientName { get; set; }
}

序列化

协议使用二进制序列化,支持以下数据类型:

  • 基础类型:byte, short, int, long, bool, float, double
  • 字符串:UTF-8 编码
  • 数组:支持任意类型的数组
  • 复杂对象:支持嵌套对象

序列化特性

[PacketType(PacketType.GameState)]  // 指定数据包类型
public class GameStatePacket : IRequestPacket
{
    public Guid RequestId { get; set; }  // 自动序列化
    public bool IsGameActive { get; set; }
}

处理器

请求处理器基类

public abstract class RequestHandlerBase<TRequest, TResponse> 
    where TRequest : IRequestPacket
    where TResponse : IResponsePacket, new()
{
    public abstract TResponse Handle(TRequest request);
    
    protected TResponse CreateSuccessResponse(TRequest request, string message);
    protected TResponse CreateFailureResponse(TRequest request, string message);
}

处理器注册

var processor = new PacketProcessor();
processor.RegisterHandler<GameStateHandler>();
processor.RegisterHandlersFromAssembly(Assembly.GetExecutingAssembly());

使用示例

发送请求

var request = new ItemListRequestPacket();
var response = await client.RequestAsync<ItemListRequestPacket, ItemListResponsePacket>(request);

处理请求

public class ItemListHandler : RequestHandlerBase<ItemListRequestPacket, ItemListResponsePacket>
{
    public override ItemListResponsePacket Handle(ItemListRequestPacket request)
    {
        var items = GetItemsFromConfig();
        
        var response = CreateSuccessResponse(request, "Success");
        response.Items = items;
        response.TotalCount = items.Length;
        return response;
    }
}

依赖

  • .NET 9.0
  • 无外部依赖

作者

少司命

上一篇
DeltaForce.Game - 三角洲行动游戏服务器
下一篇
DisableMonsLoot 禁怪物掉落