namespace ET.Server { [MessageSessionHandler(SceneType.Gate)] public class C2G_HeroAddExpHandler : RpcMessageHandler { protected override async ETTask OnRun(Session session, C2G_HeroAddExp request, R2C_HeroAddExp response) { Player player = session.GetComponent()?.Player; HeroComponent heroComp = player?.GetComponent(); Hero hero = heroComp?.GetHero(request.heroId); if (hero == null) { response.Error = ErrorCode.ERR_HERO_NOT_FOUND; response.Message = "Hero not found"; return; } if (!HeroService.TryAddExp(player, hero, request.itemId, request.count, out string reason)) { response.Error = ErrorCode.ERR_BAG_ITEM_NOT_ENOUGH; response.Message = reason; return; } response.hero = HeroMapper.ToProto(hero); HeroNoticeHelper.NotifyHeroUpdate(session, hero); await ETTask.CompletedTask; } } }