示例#1
0
        public async Task PlayEmoteHandler(PlayEmoteMessage message, Player player)
        {
            await using var ctx = new CdClientContext();

            var animation = await ctx.EmotesTable.FirstOrDefaultAsync(e => e.Id == message.EmoteId);

            player.Zone.BroadcastMessage(new PlayAnimationMessage
            {
                Associate    = player,
                AnimationsId = animation.AnimationName
            });

            player.Zone.ExcludingMessage(new EmotePlayedMessage
            {
                Associate = player,
                EmoteId   = message.EmoteId,
                Target    = message.Target
            }, player);

            if (player.TryGetComponent <MissionInventoryComponent>(out var missionInventoryComponent))
            {
                await missionInventoryComponent.UseEmoteAsync(message.Target, message.EmoteId);
            }

            if (message.Target?.OnEmoteReceived != default)
            {
                await message.Target.OnEmoteReceived.InvokeAsync(message.EmoteId, player);
            }
        }
示例#2
0
        public async Task PlayEmoteHandler(PlayEmoteMessage message, Player player)
        {
            var animation = await ClientCache.FindAsync <Emotes>(message.EmoteId);

            player.Zone.BroadcastMessage(new PlayAnimationMessage
            {
                Associate   = player,
                AnimationId = animation.AnimationName,
                Priority    = 0.4f,
                Scale       = 1,
            });

            player.Zone.ExcludingMessage(new EmotePlayedMessage
            {
                Associate = player,
                EmoteId   = message.EmoteId,
                Target    = message.Target
            }, player);

            if (player.TryGetComponent <MissionInventoryComponent>(out var missionInventoryComponent))
            {
                await missionInventoryComponent.UseEmoteAsync(message.Target, message.EmoteId);
            }

            if (message.Target?.OnEmoteReceived != default)
            {
                await message.Target.OnEmoteReceived.InvokeAsync(message.EmoteId, player);
            }
        }