public async Task Execute(NpcStatusModel model) { int playerId = model.TargetId; int npcId = model.NpcId; var player = await _playerDomainService.Get(playerId); if (player == null) { await StopAction(npcId); return; } var npc = await _npcDomainService.Get(npcId); if (npc == null) { await StopAction(npcId); return; } var npcFightingPlayerId = await _redisDb.StringGet <int>(string.Format(RedisKey.NpcFighting, npc.Id)); if (npcFightingPlayerId != playerId) { await _mudProvider.ShowMessage(player.Id, $"【切磋】{npcFightingPlayerId},{playerId},{npcId}"); await StopAction(npcId); return; } await _mudProvider.ShowMessage(player.Id, $"【切磋】[{npc.Name}]正在攻击你。。。"); await _mudProvider.AddFightingTarget(player.Id, new FightingTargetModel { TargetId = npcId, TargetName = npc.Name, Hp = npc.Hp, Mp = npc.Mp, MaxHp = npc.MaxHp, MaxMp = npc.MaxMp, TargetType = TargetTypeEnum.Npc }); }
public async Task Execute(NpcStatusModel model) { int playerId = model.TargetId; int npcId = model.NpcId; var npc = await _npcDomainService.Get(npcId); if (npc == null) { await StopAction(npcId); return; } switch (model.Status) { case NpcStatusEnum.切磋: var player = await _playerDomainService.Get(playerId); if (player == null) { await StopAction(npcId); return; } await Fighting(npc, player); break; case NpcStatusEnum.移动: break; case NpcStatusEnum.空闲: break; } }
public NpcStatusQueue(NpcStatusModel status) { Status = status; }