示例#1
0
        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
            });
        }
示例#2
0
        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;
            }
        }
示例#3
0
 public NpcStatusQueue(NpcStatusModel status)
 {
     Status = status;
 }