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); } }
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); } }