namespace ET.Server { [MessageSessionHandler(SceneType.Gate)] public class C2G_TakeOffEquipHandler : RpcMessageHandler { protected override async ETTask OnRun(Session session, C2G_TakeOffEquip request, R2C_TakeOffEquip response) { Player player = session.GetComponent()?.Player; if (player == null) { response.Error = ErrorCode.ERR_RpcFail; response.Message = "player_not_found"; return; } if (!HeroEquipService.TryTakeOffEquip(player, request.heroId, request.slotIndex, out long itemIndex, out string reason)) { response.Error = ErrorCode.ERR_EQUIP_SLOT_EMPTY; response.Message = reason; return; } response.heroId = request.heroId; response.itemIndex = itemIndex; response.slotIndex = request.slotIndex; Hero hero = player.GetComponent()?.GetHero(request.heroId); if (hero != null) { HeroNoticeHelper.NotifyHeroUpdate(session, hero); } await ETTask.CompletedTask; } } }